Browse Source

药品临购申请

hsh 1 year ago
parent
commit
5f0df1ad92

+ 39 - 0
src/api/yp-dict/yp-dict-info.js

@@ -76,4 +76,43 @@ export function selectYpGroupNameAll(text) {
         method: 'get',
         params: { text },
     })
+}
+
+/**
+ * 更新临购药品标志(1:是)
+ * @param {string} code 药品code
+ * @param {string} serial 药品序号
+ * @param {string} tempPurchaseFlag 临购药品标志
+ * @returns 
+ */
+export function updateYpTempPurchase(code, serial, tempPurchaseFlag) {
+    return request({
+        url: '/ypDict/updateYpTempPurchase',
+        method: 'get',
+        params: { code, serial, tempPurchaseFlag },
+    })
+}
+
+/**
+ * 药库是否停用药品
+ * @returns 
+ */
+export function updateYkYpStopOrUsed(groupNo, code, serial, delFlag) {
+    return request({
+        url: '/ypDict/updateYkYpStopOrUsed',
+        method: 'get',
+        params: { groupNo, code, serial, delFlag },
+    })
+}
+
+/**
+ * 更新国家基本药物标志(1:是)
+ * @returns 
+ */
+export function updateYpJbFlag(code, serial, jbFlag) {
+    return request({
+        url: '/ypDict/updateYpJbFlag',
+        method: 'get',
+        params: { code, serial, jbFlag },
+    })
 }

+ 38 - 0
src/api/yp-inventory/yp-temp-purchase.js

@@ -0,0 +1,38 @@
+import request from '../../utils/request'
+
+
+// 查询临购药品明细
+export function selectTempPurchaseYp(text) {
+    return request({
+        url: '/ypTempPurchase/selectTempPurchaseYp',
+        method: 'get',
+        params: { text },
+    })
+}
+
+// 查询临购药品申请明细
+export function selectYpTempPurchase(data) {
+    return request({
+        url: '/ypTempPurchase/selectYpTempPurchase',
+        method: 'post',
+        data
+    })
+}
+
+// 保存药品临购申请
+export function saveYpTempPurchase(data) {
+    return request({
+        url: '/ypTempPurchase/saveYpTempPurchase',
+        method: 'post',
+        data
+    })
+}
+
+// 审核药品临购申请
+export function auditYpTempPurchase(data) {
+    return request({
+        url: '/ypTempPurchase/auditYpTempPurchase',
+        method: 'post',
+        data
+    })
+}

+ 98 - 0
src/views/settings/permissions/LUpload.vue

@@ -0,0 +1,98 @@
+<template>
+    <PageLayer>
+        <template #mainMaxContentHeight>
+            <el-form-item label="签名图片" prop="image">
+                <el-upload class="dl-avatar-uploader-min square"
+                    :class="{ uoloadBtn: signatureInfo.showBtnDealImg, disUoloadBtn: signatureInfo.noneBtnImg }"
+                    :action="signatureInfo.uploadUrl" :limit="signatureInfo.limitCountImg" :data="signatureInfo.param"
+                    :on-success="coverFileSuccess" :on-remove="coverFileRemove" :on-exceed="handleExceedCover"
+                    :before-upload="beforeImageUpload" :on-change="handleImgChange" :file-list="signatureInfo.fileList"
+                    list-type="picture-card" accept="image/*">
+                    <el-button type="text">上传图片</el-button>
+                    <template #tip>
+                        <div class="el-upload__tip">只能上传图片,且单张图片大小不能超过10MB</div>
+                    </template>
+                </el-upload>
+            </el-form-item>
+        </template>
+    </PageLayer>
+</template>
+
+<script setup name="LUpload">
+import { ref, onMounted } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import { ElMessage } from 'element-plus'
+
+const image = ref('')
+const props = defineProps({
+    signatureData: {
+        type: Object,
+        default: {}
+    }
+})
+
+const signatureInfo = ref({
+    uploadUrl: '',
+    coversList: [],
+    fileList: [],
+    param: {},
+    limitCountImg: 1,
+    pSize: 1,
+    showBtnDealImg: true,
+    noneBtnImg: false,
+})
+
+onMounted(async () => {
+    await nextTick(() => {
+        console.log(props.signatureData)
+        signatureInfo.value = props.signatureData
+        console.log(signatureInfo.value)
+    })
+
+})
+
+// 上传前,限制的上传图片大小
+const beforeImageUpload = (rawFile) => {
+    if (rawFile.size / 1024 / 1024 > signatureInfo.value.pSize) {
+        ElMessage.error("单张图片大小不能超过" + signatureInfo.value.pSize + "MB!");
+        return false;
+    }
+    return true;
+}
+
+// 上传成功,获取返回的图片地址
+const handleImgChange = (file, fileList) => {
+    signatureInfo.value.noneBtnImg = fileList.length >= signatureInfo.value.limitCountImg
+}
+
+const coverFileSuccess = (response, file, fileList) => {
+    if (response.code == 0) {
+        let obj = {}
+        obj.name = file.name
+        obj.url = response.data.url
+        signatureInfo.value.coversList.push(obj)
+    } else {
+        ElMessage.error({
+            message: response.msg,
+            type: "error",
+        });
+    }
+
+}
+
+const coverFileRemove = (file, fileList) => {
+    signatureInfo.value.coversList.forEach((item, index) => {
+        if (file.name == item.name) {
+            signatureInfo.coversList.splice(index, 1);
+        }
+    });
+    signatureInfo.value.noneBtnImg = fileList.length >= signatureInfo.value.limitCountImg;
+}
+
+const handleExceedCover = (files, fileList) => {
+    ElMessage.error({
+        message: `上传图片数量超出限制!`,
+        type: "error",
+    });
+}
+</script>

+ 30 - 1
src/views/settings/permissions/UserRoleSettings.vue

@@ -69,7 +69,7 @@
         <el-table-column prop="socialNo" label="身份证"></el-table-column>
         <el-table-column prop="phoneNo" label="手机号码"></el-table-column>
         <el-table-column prop="ybCode" label="医保编码"></el-table-column>
-        <el-table-column label="操作" fixed="right" width="180">
+        <el-table-column label="操作" fixed="right" width="250">
           <template v-slot="scope">
             <el-button-group>
               <el-button type="primary" text @click="clickToEdit(scope.$index, scope.row)">编辑</el-button>
@@ -79,6 +79,7 @@
                          @click="resetPasswordClick(scope.row)">
                 重置密码
               </el-button>
+              <el-button text size="small" @click="uploadSignature(scope.row)">上传签名</el-button>
             </el-button-group>
           </template>
         </el-table-column>
@@ -119,6 +120,10 @@
                                    @close="editDialog = false"
                                    :index="roleIndex"
                                    @changeTheData="changeTheData"/>
+      <el-dialog title="上传签名" v-model="signatureDialog" :close-on-click-modal="false" :close-on-press-escape="false" destroy-on-close>
+          <!-- LUpload组件 -->
+          <LUpload :signatureData="signatureData" />
+      </el-dialog>                             
     </template>
   </page-layer>
 </template>
@@ -139,6 +144,7 @@ import PersonnelInformationEditing from '@/components/settings/permissions/Perso
 import {needRule} from '@/utils/public'
 import PageLayer from "@/layout/PageLayer";
 import {CyMessageBox} from "@/components/cy/message-box";
+import LUpload from "@/views/settings/permissions/LUpload.vue"
 // import {onMounted, reactive, ref, watchEffect} from "vue";
 
 const windowSize = store.state.app.windowSize
@@ -343,4 +349,27 @@ const dropDownSelection = [
   {code: 1, name: '是'},
   {code: 9, name: '全部'},
 ]
+
+// 上传签名图片
+const baseurl = import.meta.env.VITE_BASE_URL
+const signatureData = ref({
+    uploadUrl: baseurl+'/settings/setAutographImage',
+    coversList: [],
+    fileList: [],
+    param: {code:''},
+    limitCountImg: 1,
+    pSize: 2,
+    showBtnDealImg: true,
+    noneBtnImg: false,
+})
+const signatureDialog = ref(false)
+const uploadSignature = (val) => {
+  signatureData.value.param.code = val.code
+  if(val.autographImag){
+    signatureData.value.coversList.push(val.autographImag)
+  }
+  signatureDialog.value = true
+}
+
+
 </script>

+ 157 - 15
src/views/yp-dict/YpDictInfo.vue

@@ -19,30 +19,45 @@
             <el-table :data="drugDictData.slice(pageSize * (currentPage - 1), pageSize * currentPage)" border
                 style="width: 100%" :height="tableHeight" stripe highlight-current-row>
                 <el-table-column type="index" label="序号" width="60" />
-                <el-table-column prop="code" label="药品编码" width="90" />
+                <el-table-column prop="code" label="药品编码" width="70" />
                 <el-table-column prop="serial" label="药品包装" width="70" />
-                <el-table-column prop="name" label="药品名称" width="300" />
-                <el-table-column prop="specification" label="药品规格" width="200" />
-                <el-table-column prop="packRetprice" label="药品零售价" width="120" />
-                <el-table-column prop="delFlag" label="状态" width="80">
+                <el-table-column prop="name" label="药品名称" width="300" show-overflow-tooltip />
+                <el-table-column prop="specification" label="药品规格" width="180" show-overflow-tooltip />
+                <el-table-column prop="packRetprice" label="药品零售价" width="100" />
+                <el-table-column prop="delFlag" label="状态" width="70">
                     <template #default="scope">
                         <span v-if="scope.row.delFlag === '1'" style="color:#d12020;">停用</span>
                         <span v-else></span>
                     </template>
                 </el-table-column>
-                <el-table-column prop="pyCode" label="拼音码" width="160" />
-                <el-table-column prop="dcode" label="五笔码" width="160" />
-                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                <el-table-column prop="ykFlag" label="药库状态" width="80" v-if="isYk">
+                    <template #default="scope">
+                        <span v-if="scope.row.ykFlag === '1'" style="color:#d12020;">药库停用</span>
+                        <span v-else></span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pyCode" label="拼音码" width="150" />
+                <el-table-column prop="dcode" label="五笔码" width="150" />
+                <el-table-column fixed="right" label="操作" min-width="400" width="400" center>
                     <template #default="scope">
                         <el-button type="primary" size="small" v-if="!scope.row.isEdit"
                             @click="editYpDict(scope.row)">编辑</el-button>
+                        <el-button :type="scope.row.tempPurchaseFlag === '1' ? 'primary' : 'info'" size="small"
+                            v-if="!scope.row.isEdit" @click="tempPurchase(scope.row)">临购</el-button>
+                        <el-button :type="scope.row.jbFlag === '1' ? 'primary' : 'info'" size="small"
+                            v-if="!scope.row.isEdit" @click="baseDrugConfirm(scope.row)">基本</el-button>
                         <el-button type="primary" size="small" v-if="!scope.row.isEdit"
                             @click="editYpDictName(scope.row)">别名</el-button>
-                        <el-button :type="scope.row.delFlag === '1' ? 'primary' : 'warning'" size="small"
-                            @click.prevent="stopYpDict(scope.row)">
+                        <el-button :type="scope.row.delFlag === '1' ? 'info' : 'primary'" size="small"
+                            @click="stopYpDict(scope.row)">
                             <span v-if="scope.row.delFlag === '1'">启用</span>
                             <span v-else>停用</span>
                         </el-button>
+                        <el-button :type="scope.row.ykFlag === '1' ? 'info' : 'primary'" size="small"
+                            @click="stopYkYpDict(scope.row)" v-show="isYk">
+                            <span v-if="scope.row.ykFlag === '1'">药库启用</span>
+                            <span v-else>药库停用</span>
+                        </el-button>
                     </template>
                 </el-table-column>
             </el-table>
@@ -56,8 +71,8 @@
         class="yp-edit-dialog" width="80%" destroy-on-close fullscreen>
         <YpZdDict :ypDetail="ypDetail" @closeYpEditFor="closeYpEditAdd" />
     </el-dialog>
-    <el-dialog v-model="showYpPrintName" :close-on-click-modal="false" :close-on-press-escape="false" :title="ypPrintName"
-        width="80%" destroy-on-close>
+    <el-dialog v-model="showYpPrintName" :close-on-click-modal="false" :close-on-press-escape="false"
+        :title="ypPrintName" width="80%" destroy-on-close>
         <YpPrintName :ypPrintNameDetail="ypPrintNameDetail" @closeYpPrintNameEditFor="closeYpPrintName" />
     </el-dialog>
 </template>
@@ -66,7 +81,10 @@ import { ref, onMounted, nextTick } from 'vue'
 import PageLayer from '@/layout/PageLayer.vue'
 import store from '@/store'
 import { ElMessage, ElMessageBox } from 'element-plus'
-import { selectYpDict, updateYpStopOrUsed, selectYpDictByCode, selectYpGroupNameByYfFlag } from '@/api/yp-dict/yp-dict-info.js'
+import {
+    selectYpDict, updateYpStopOrUsed, selectYpDictByCode, selectYpGroupNameByYfFlag,
+    updateYpTempPurchase, updateYkYpStopOrUsed, updateYpJbFlag
+} from '@/api/yp-dict/yp-dict-info.js'
 import YpZdDict from '@/views/yp-dict/YpZdDict.vue'
 import YpPrintName from '@/views/yp-dict/YpPrintName.vue'
 
@@ -82,7 +100,7 @@ const showYpPrintName = ref(false)
 const ypPrintNameDetail = ref({})
 const ypGroupNameData = ref([])
 const groupNo = ref('')
-
+const isYk = ref(false)
 const pageSize = ref(30)
 const currentPage = ref(1)
 const handleSizeChange = (val) => {
@@ -113,6 +131,13 @@ const queryYpGroupNameByYfFlag = (val) => {
 
 // 查询
 const queryYpDict = () => {
+
+    if (groupNo.value) {
+        isYk.value = true
+    } else {
+        isYk.value = false
+    }
+
     selectYpDict(text.value, groupNo.value)
         .then((res) => {
             res.forEach(row => {
@@ -154,7 +179,6 @@ const editYpDict = (row) => {
 
 // 编辑别名
 const editYpDictName = (row) => {
-    // alert('功能开发中。。。')
     ypPrintName.value = row.name + "别名"
     showYpPrintName.value = true
     ypPrintNameDetail.value.chargeCode = row.code
@@ -200,6 +224,124 @@ const stopYpDict = (row) => {
     })
 }
 
+// 设置成临购药品
+const tempPurchase = (row) => {
+    let flag
+    let title
+    if ('1' === row.tempPurchaseFlag) {
+        flag = ''
+        title = '请确认是否停止临购药品<span style="color:#d12020;">' + row.name + '</span>?'
+    } else {
+        flag = '1'
+        title = '请确认是否设置成临购药品<span style="color:#d12020;">' + row.name + '</span>?'
+    }
+
+    ElMessageBox.confirm(title, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        updateYpTempPurchase(row.code, row.serial, flag).then((res) => {
+            ElMessage({
+                type: "success",
+                message: res.cg,
+                duration: 2500,
+                showClose: true,
+            });
+            queryYpDict()
+            return
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+            queryYpDict()
+        }
+    })
+}
+
+// 药库药品是否启用/停用操作
+const stopYkYpDict = (row) => {
+    let delFlag
+    let title
+
+    if (!groupNo.value) {
+        ElMessage({
+            type: "warning",
+            message: "请选择药库!",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+
+    if ('1' === row.ykFlag) {
+        delFlag = '0'
+        title = '请确认药库是否启用<span style="color:#d12020;">' + row.name + '</span>?'
+    } else {
+        delFlag = '1'
+        title = '请确认药库是否停用<span style="color:#d12020;">' + row.name + '</span>?'
+    }
+
+    ElMessageBox.confirm(title, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        updateYkYpStopOrUsed(groupNo.value, row.code, row.serial, delFlag).then((res) => {
+            ElMessage({
+                type: "success",
+                message: res.cg,
+                duration: 2500,
+                showClose: true,
+            });
+            queryYpDict()
+            return
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+            queryYpDict()
+        }
+    })
+}
+
+// 国家基本药物设置
+const baseDrugConfirm = (row) => {
+    let flag
+    let title
+    if ('1' === row.jbFlag) {
+        flag = ''
+        title = '请确认是否取消国家基本药物<span style="color:#d12020;">' + row.name + '</span>?'
+    } else {
+        flag = '1'
+        title = '请确认是否将<span style="color:#d12020;">' + row.name + '</span>设置成国家基本药物?'
+    }
+
+    ElMessageBox.confirm(title, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        updateYpJbFlag(row.code, row.serial, flag).then((res) => {
+            ElMessage({
+                type: "success",
+                message: res.cg,
+                duration: 2500,
+                showClose: true,
+            });
+            queryYpDict()
+            return
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+            queryYpDict()
+        }
+    })
+}
 </script>
 
 <style lang="scss">

+ 194 - 0
src/views/yp-inventory/TempPurchaseAudit.vue

@@ -0,0 +1,194 @@
+<template>
+    <page-layer>
+        <template #mainMaxContentHeight>
+            <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm"
+                :size="formSize" status-icon>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="药品" prop="chargeName">
+                            <el-input v-model="ruleForm.chargeName" maxlength="2" show-word-limit placeholder="药品"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="序号" prop="serial">
+                            <el-input v-model="ruleForm.serial" maxlength="2" show-word-limit placeholder="序号"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="规格" prop="specification">
+                            <el-input v-model="ruleForm.specification" maxlength="40" show-word-limit placeholder="规格"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="数量" prop="amount">
+                            <el-input v-model="ruleForm.amount" maxlength="10" show-word-limit
+                                placeholder="请填写数量" disabled />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="申请人" prop="op">
+                            <el-input v-model="ruleForm.op" maxlength="40" show-word-limit placeholder="请填写申请人"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="患者姓名" prop="name">
+                            <el-input v-model="ruleForm.name" maxlength="40" show-word-limit placeholder="请填写患者姓名"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="住院号" prop="inpatientNo">
+                            <el-input v-model="ruleForm.inpatientNo" maxlength="6" show-word-limit placeholder="请填写住院号"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="申请日期" prop="applyDate">
+                            <el-input v-model="ruleForm.applyDate" show-word-limit placeholder="请填写申请日期" disabled />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item label="使用理由" prop="useResult">
+                            <el-input v-model="ruleForm.useResult" show-word-limit placeholder="请填写使用理由" disabled />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="是否接收" prop="receptFlag">
+                            <el-switch v-model="ruleForm.receptFlag" active-value="1" inactive-value="0"
+                                active-color="#13ce66" inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="是否采购" prop="purchaseFlag">
+                            <el-switch v-model="ruleForm.purchaseFlag" active-value="1" inactive-value="0"
+                                active-color="#13ce66" inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="是否入库" prop="storageFlag">
+                            <el-switch v-model="ruleForm.storageFlag" active-value="1" inactive-value="0"
+                                active-color="#13ce66" inactive-color="#ff4949" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="审核日期" prop="auditDate">
+                            <el-input v-model="ruleForm.auditDate" show-word-limit placeholder="请填写审核日期" disabled />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item label="采购信息" prop="result">
+                            <el-input v-model="ruleForm.result" show-word-limit placeholder="请填写采购信息" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-form-item>
+                    <el-button type="primary" @click="submitForm(ruleFormRef)">
+                        审核
+                    </el-button>
+                </el-form-item>
+            </el-form>
+        </template>
+    </page-layer>
+</template>
+<script setup name="YpTempPurchaseAudit">
+import { ref, onMounted, nextTick, watch } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import { ElMessage } from 'element-plus'
+import { formatDatetime } from '@/utils/date'
+import { auditYpTempPurchase } from '@/api/yp-inventory/yp-temp-purchase.js'
+
+const props = defineProps({
+    ypTempPurchaseDetail: {
+        type: Object,
+        default: {}
+    }
+})
+
+const now = formatDatetime(new Date())
+const formSize = ref('default')
+const emit = defineEmits(['close', 'closeTempPurchaseAudit'])
+const ruleFormRef = ref()
+const ruleForm = ref({
+    applyId: '', // 申请id
+    chargeName: '', // 药品名称
+    chargeCode: '', // 药品code
+    serial: '', // 序号
+    specification: '', // 规格
+    amount: '', // 申请数量
+    useResult: '', // 使用理由
+    op: '', // 申请人(要求是临床科主任)
+    opId: '', // 申请人id
+    name: '', // 患者姓名
+    inpatientNo: '', // 住院号
+    receptFlag: '', // 是否接收(1: 接收)
+    purchaseFlag: '', // 是否采购(1: 采购)
+    storageFlag: '', // 是否入库(1: 入库)
+    applyDate: '', // 申请日期
+    auditDate: now, // 审核日期
+    result: '', // 未采购原因
+})
+
+onMounted(() => {
+    nextTick(() => {
+        ruleForm.value = props.ypTempPurchaseDetail
+        ruleForm.value.auditDate = now
+    })
+})
+
+watch(() => props.ypTempPurchaseDetail, () => {
+    ruleForm.value = props.ypTempPurchaseDetail
+    ruleForm.value.auditDate = now
+})
+
+const rules = ref({
+    chargeName: [
+        { required: true, message: '请填写药品', trigger: 'blur' },
+    ],
+    amount: [
+        { required: true, message: '请填写申请数量', trigger: 'blur' },
+    ],
+    name: [
+        { required: true, message: '请填写患者姓名', trigger: 'blur' },
+    ],
+    inpatientNo: [
+        { required: true, message: '请填写住院号', trigger: 'blur' },
+    ],
+})
+
+const submitForm = async (formEl) => {
+    if (!formEl) return
+    await formEl.validate((valid, fields) => {
+        if (valid) {
+            auditYpTempPurchase(ruleForm.value).then((res) => {
+                if (res.cg) {
+                    ElMessage({
+                        type: "success",
+                        message: res.cg,
+                        duration: 2500,
+                        showClose: true,
+                    });
+
+                    formEl.resetFields()
+                    emit('closeTempPurchaseAudit', true)
+                    return
+                }
+            });
+        } else {
+            console.log('error submit!', fields)
+        }
+    })
+}
+
+</script>

+ 214 - 0
src/views/yp-inventory/TempPurchaseEdit.vue

@@ -0,0 +1,214 @@
+<template>
+    <page-layer>
+        <template #mainMaxContentHeight>
+            <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px" class="demo-ruleForm"
+                :size="formSize" status-icon>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="药品" prop="chargeCode">
+                            <el-select v-model="ruleForm.chargeCode" placeholder="请选择药品" filterable clearable
+                                style="width: 100%" @change="ypChange">
+                                <el-option v-for="item in tempPurchaseData" :key="item.chargeCode"
+                                    :label="item.chargeName" :value="item.chargeCode">
+                                    <span style="float: left">{{ item.chargeName }}</span>
+                                    <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                                        {{ item.chargeCode }}
+                                    </span>
+                                </el-option>
+                            </el-select>
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="序号" prop="serial">
+                            <el-input v-model="ruleForm.serial" maxlength="2" show-word-limit placeholder="序号"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="规格" prop="specification">
+                            <el-input v-model="ruleForm.specification" maxlength="40" show-word-limit placeholder="规格"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="数量" prop="amount">
+                            <el-input v-model="ruleForm.amount" maxlength="10" show-word-limit
+                                placeholder="请填写数量" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="6">
+                        <el-form-item label="申请人" prop="op">
+                            <el-input v-model="ruleForm.op" maxlength="40" show-word-limit placeholder="请填写申请人"
+                                disabled />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="患者姓名" prop="name">
+                            <el-input v-model="ruleForm.name" maxlength="40" show-word-limit placeholder="请填写患者姓名" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="住院号" prop="inpatientNo">
+                            <el-input v-model="ruleForm.inpatientNo" maxlength="6" show-word-limit
+                                placeholder="请填写住院号" />
+                        </el-form-item>
+                    </el-col>
+                    <el-col :span="6">
+                        <el-form-item label="申请日期" prop="applyDate">
+                            <el-input v-model="ruleForm.applyDate" show-word-limit placeholder="请填写申请日期" disabled />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item label="使用理由" prop="useResult">
+                            <el-input v-model="ruleForm.useResult" show-word-limit placeholder="请填写使用理由" />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-row>
+                    <el-col :span="24">
+                        <el-form-item label="温馨提示" prop="desc">
+                            <el-input v-model="desc" show-word-limit placeholder="温馨提示" disabled />
+                        </el-form-item>
+                    </el-col>
+                </el-row>
+                <el-form-item>
+                    <el-button type="primary" @click="submitForm(ruleFormRef)">
+                        保存
+                    </el-button>
+                </el-form-item>
+            </el-form>
+        </template>
+    </page-layer>
+</template>
+<script setup name="YpTempPurchaseEdit">
+import { ref, onMounted, nextTick, watch } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import { ElMessage } from 'element-plus'
+import { formatDatetime } from '@/utils/date'
+import { saveYpTempPurchase, selectTempPurchaseYp } from '@/api/yp-inventory/yp-temp-purchase.js'
+
+const props = defineProps({
+    ypTempPurchaseEditData: {
+        type: Object,
+        default: {}
+    }
+})
+
+const now = formatDatetime(new Date())
+const formSize = ref('default')
+const tempPurchaseData = ref([])
+const desc = ref('科室临购药品在本院出现滞销(90天以上未使用或使用数量低于购进数量的30%以下),导致过期现象,则该药品的损失由申请科室承担,并1年内不能再申请新药。')
+const emit = defineEmits(['close', 'closeTempPurchaseEdit'])
+const ruleFormRef = ref()
+const ruleForm = ref({
+    applyId: '', // 申请id
+    chargeName: '', // 药品名称
+    chargeCode: '', // 药品code
+    serial: '', // 序号
+    specification: '', // 规格
+    amount: '', // 申请数量
+    useResult: '', // 使用理由
+    op: '', // 申请人(要求是临床科主任)
+    opId: '', // 申请人id
+    name: '', // 患者姓名
+    inpatientNo: '', // 住院号
+    receptFlag: '', // 是否接收(1: 接收)
+    purchaseFlag: '', // 是否采购(1: 采购)
+    storageFlag: '', // 是否入库(1: 入库)
+    applyDate: now, // 申请日期
+    auditDate: '', // 审核日期
+    result: '', // 未采购原因
+})
+
+onMounted(() => {
+    nextTick(() => {
+        queryTempPurchaseYp('')
+        ruleForm.value = props.ypTempPurchaseEditData
+        ruleForm.value.applyDate = now
+    })
+})
+
+const queryTempPurchaseYp = (text) => {
+    selectTempPurchaseYp(text)
+        .then((res) => {
+            tempPurchaseData.value = res
+        })
+        .catch(() => {
+            tempPurchaseData.value = []
+        })
+
+}
+
+const ypChange = async () => {
+    await nextTick()
+    let dataF = tempPurchaseData.value.filter((item) => {
+        return item.chargeCode === ruleForm.value.chargeCode
+    })
+    if (dataF) {
+        ruleForm.value.chargeName = dataF[0].chargeName
+        ruleForm.value.serial = dataF[0].serial
+        ruleForm.value.specification = dataF[0].specification
+    }
+}
+
+watch(() => props.ypTempPurchaseEditData, () => {
+    ruleForm.value = props.ypTempPurchaseEditData
+    ruleForm.value.applyDate = now
+})
+
+const rules = ref({
+    chargeName: [
+        { required: true, message: '请填写药品', trigger: 'blur' },
+    ],
+    amount: [
+        { required: true, message: '请填写申请数量', trigger: 'blur' },
+    ],
+    useResult: [
+        { required: true, message: '请填写使用理由', trigger: 'blur' },
+    ],
+    name: [
+        { required: true, message: '请填写患者姓名', trigger: 'blur' },
+    ],
+    inpatientNo: [
+        { required: true, message: '请填写住院号', trigger: 'blur' },
+    ],
+})
+
+const submitForm = async (formEl) => {
+    if (!formEl) return
+    await formEl.validate((valid, fields) => {
+        if (valid) {
+            if (Number.isNaN(Number.parseFloat(ruleForm.value.amount))) {
+                ElMessage({
+                    type: "warning",
+                    message: '申请数量不是数值,请检查!',
+                    duration: 2500,
+                    showClose: true,
+                });
+                return
+            }
+            ruleForm.value.receptFlag = '9'
+            saveYpTempPurchase(ruleForm.value).then((res) => {
+                if (res.cg) {
+                    ElMessage({
+                        type: "success",
+                        message: res.cg,
+                        duration: 2500,
+                        showClose: true,
+                    });
+
+                    formEl.resetFields()
+                    emit('closeTempPurchaseEdit', true)
+                    return
+                }
+            });
+        } else {
+            console.log('error submit!', fields)
+        }
+    })
+}
+</script>

+ 486 - 0
src/views/yp-inventory/YpTempPurchase.vue

@@ -0,0 +1,486 @@
+<template>
+    <page-layer>
+        <template #header>
+            <el-input v-model="inpatientNo" class="w-50 m-2" style="width: 220px" placeholder="请输入姓名/住院号" clearable>
+            </el-input>
+            <el-select v-model="chargeCode" placeholder="请选择临购药品" filterable clearable
+                style="width: 320px;margin-left: 3px">
+                <el-option v-for="item in tempPurchaseData" :key="item.chargeCode" :label="item.chargeName"
+                    :value="item.chargeCode">
+                    <span style="float: left">{{ item.chargeName }}</span>
+                    <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
+                        {{ item.chargeCode }}
+                    </span>
+                </el-option>
+            </el-select>
+            <el-select v-model="ztFlag" placeholder="请选择申请进度" clearable style="width: 140px;margin-left: 3px">
+                <el-option v-for="item in ztOptions" :key="item.value" :label="item.label" :value="item.value">
+                </el-option>
+            </el-select>
+            <el-date-picker v-model="dateRange" type="daterange" :shortcuts="maxHalfYear" range-separator="至"
+                start-placeholder="开始时间" end-placeholder="结束时间" style="width: 260px;margin-left: 3px">
+            </el-date-picker>
+            <el-button type="primary" icon="Search" @click="queryYpTempPurchaseData"
+                style="margin-left: 5px">查询</el-button>
+            <el-button type="primary" icon="Download" @click="exportData" style="margin-left: 5px">导出</el-button>
+        </template>
+        <template #main>
+            <el-tabs v-model="editableTabsValue" type="border-card" @tab-click="handleClick">
+                <el-tab-pane key="ypPurchase" label="明细" name="ypPurchaseInfo">
+                    <el-table :data="ypPurchaseData.slice(pageSize * (currentPage - 1), pageSize * currentPage)" border
+                        style="width: 100%" :height="tableHeight" stripe highlight-current-row>
+                        <el-table-column type="index" label="序号" width="60" />
+                        <el-table-column prop="chargeCode" label="药品编码" width="90" />
+                        <el-table-column prop="serial" label="药品包装" width="70">
+                            <template #default="scope">
+                                <span v-if="scope.row.serial === '99'">大包装</span>
+                                <span v-else>小包装</span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="chargeName" label="药品名称" width="220" show-overflow-tooltip />
+                        <el-table-column prop="specification" label="药品规格" width="140" show-overflow-tooltip />
+                        <el-table-column prop="name" label="患者姓名" width="100" />
+                        <el-table-column prop="inpatientNo" label="住院号" width="100" />
+                        <el-table-column prop="amount" label="数量" width="70" />
+                        <el-table-column prop="useResult" label="使用理由" width="200" show-overflow-tooltip />
+                        <el-table-column prop="op" label="申请人" width="100" />
+                        <el-table-column prop="applyDate" label="申请时间" width="140" />
+                        <el-table-column prop="receptFlag" label="是否接收" width="80">
+                            <template #default="scope">
+                                <span v-if="scope.row.receptFlag === '1'" style="color:#106898;">已接收</span>
+                                <span v-else-if="scope.row.receptFlag === '0'" style="color:#d12020;">拒接收</span>
+                                <span v-else></span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="purchaseFlag" label="是否采购" width="80">
+                            <template #default="scope">
+                                <span v-if="scope.row.purchaseFlag === '1'" style="color:#106898;">已采购</span>
+                                <span v-else-if="scope.row.purchaseFlag === '0'" style="color:#d12020;">拒采购</span>
+                                <span v-else></span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="storageFlag" label="是否入库" width="80">
+                            <template #default="scope">
+                                <span v-if="scope.row.storageFlag === '1'" style="color:#106898;">已入库</span>
+                                <span v-else-if="scope.row.storageFlag === '0'" style="color:#d12020;">拒入库</span>
+                                <span v-else></span>
+                            </template>
+                        </el-table-column>
+                        <el-table-column prop="result" label="采购情况" width="200" show-overflow-tooltip />
+                        <el-table-column fixed="right" label="操作" min-width="80" width="80" header-align="center"
+                            align="center">
+                            <template #default="scope">
+                                <el-button type="primary" size="small" v-if="scope.row.permissions === '1'"
+                                    @click="auditTempPurchase(scope.row)">审核</el-button>
+                                <el-button type="primary" size="small" v-if="scope.row.permissions === '0'"
+                                    @click="editTempPurchase(scope.row)">修改</el-button>
+                            </template>
+                        </el-table-column>
+                    </el-table>
+                    <el-pagination :current-page="currentPage" :page-size="pageSize" :page-sizes="[15, 30, 45, 60]"
+                        :total="ypPurchaseData.length" layout="total, sizes, prev, pager, next, jumper"
+                        style="margin-top: 5px" @size-change="handleSizeChange" @current-change="handleCurrentChange">
+                    </el-pagination>
+                    <el-dialog v-model="showAuditTempPurchase" :close-on-click-modal="false"
+                        :close-on-press-escape="false" :title="auditTempPurchaseName" width="80%" destroy-on-close>
+                        <TempPurchaseAudit :ypTempPurchaseDetail="ypTempPurchaseDetail"
+                            @closeTempPurchaseAudit="closeTempPurchaseAudit" />
+                    </el-dialog>
+                    <el-dialog v-model="showEditTempPurchase" :close-on-click-modal="false"
+                        :close-on-press-escape="false" :title="editTempPurchaseName" width="80%" destroy-on-close>
+                        <TempPurchaseEdit :ypTempPurchaseEditData="ypTempPurchaseEditData"
+                            @closeTempPurchaseEdit="closeTempPurchaseEdit" />
+                    </el-dialog>
+                </el-tab-pane>
+                <el-tab-pane key="ypPurchase" label="申请" name="ypPurchase">
+                    <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-width="120px"
+                        class="demo-ruleForm" :size="formSize" status-icon>
+                        <el-row>
+                            <el-col :span="6">
+                                <el-form-item label="药品" prop="chargeCode">
+                                    <el-select v-model="ruleForm.chargeCode" placeholder="请选择药品" filterable clearable
+                                        style="width: 100%" @change="ypChange">
+                                        <el-option v-for="item in tempPurchaseData" :key="item.chargeCode"
+                                            :label="item.chargeName" :value="item.chargeCode">
+                                            <span style="float: left">{{ item.chargeName }}</span>
+                                            <span
+                                                style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">
+                                                {{ item.chargeCode }}
+                                            </span>
+                                        </el-option>
+                                    </el-select>
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6">
+                                <el-form-item label="序号" prop="serial">
+                                    <el-input v-model="ruleForm.serial" maxlength="2" show-word-limit placeholder="序号"
+                                        disabled />
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6">
+                                <el-form-item label="规格" prop="specification">
+                                    <el-input v-model="ruleForm.specification" maxlength="40" show-word-limit
+                                        placeholder="规格" disabled />
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6">
+                                <el-form-item label="数量" prop="amount">
+                                    <el-input v-model="ruleForm.amount" maxlength="10" show-word-limit
+                                        placeholder="请填写数量" autocomplete="off" />
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="6">
+                                <el-form-item label="申请人" prop="op">
+                                    <el-input v-model="ruleForm.op" maxlength="40" show-word-limit
+                                        placeholder="请填写申请人" />
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6">
+                                <el-form-item label="患者姓名" prop="name">
+                                    <el-input v-model="ruleForm.name" maxlength="40" show-word-limit
+                                        placeholder="请填写患者姓名" />
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6">
+                                <el-form-item label="住院号" prop="inpatientNo">
+                                    <el-input v-model="ruleForm.inpatientNo" maxlength="6" show-word-limit
+                                        placeholder="请填写住院号" />
+                                </el-form-item>
+                            </el-col>
+                            <el-col :span="6">
+                                <el-form-item label="申请日期" prop="applyDate">
+                                    <el-input v-model="ruleForm.applyDate" show-word-limit placeholder="请填写申请日期"
+                                        disabled />
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="24">
+                                <el-form-item label="使用理由" prop="useResult">
+                                    <el-input v-model="ruleForm.useResult" show-word-limit placeholder="请填写使用理由" />
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-row>
+                            <el-col :span="24">
+                                <el-form-item label="温馨提示" prop="desc">
+                                    <el-input v-model="desc" show-word-limit placeholder="温馨提示" disabled />
+                                </el-form-item>
+                            </el-col>
+                        </el-row>
+                        <el-form-item>
+                            <el-button type="primary" @click="submitForm(ruleFormRef)">
+                                申请
+                            </el-button>
+                            <el-button type="info" @click="resetForm(ruleFormRef)">重置</el-button>
+                        </el-form-item>
+                    </el-form>
+                </el-tab-pane>
+            </el-tabs>
+        </template>
+    </page-layer>
+</template>
+<script setup name="YpTempPurchase">
+import { ref, onMounted, nextTick } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import store from '@/store'
+import { ElMessage } from 'element-plus'
+import { Export } from '@/utils/ExportExcel'
+import { formatDatetime } from '@/utils/date'
+import { maxHalfYear } from '@/data/shortcuts'
+import { clone } from '@/utils/clone'
+import { selectYpTempPurchase, selectTempPurchaseYp, saveYpTempPurchase } from '@/api/yp-inventory/yp-temp-purchase.js'
+import TempPurchaseAudit from '@/views/yp-inventory/TempPurchaseAudit.vue'
+import TempPurchaseEdit from '@/views/yp-inventory/TempPurchaseEdit.vue'
+
+const editableTabsValue = ref('ypPurchaseInfo')
+const userCode = store.state.user.info.code
+const userName = store.state.user.info.name
+const ypPurchaseData = ref([])
+const inpatientNo = ref('')
+const chargeCode = ref('')
+const ztFlag = ref('')
+const dateRange = ref([])
+const now = formatDatetime(new Date())
+const start = formatDatetime(maxHalfYear[2].value[0])
+const end = formatDatetime(maxHalfYear[2].value[1])
+const windowSize = store.state.app.windowSize
+const tableHeight = windowSize.h / 1.2
+const pageSize = ref(30)
+const currentPage = ref(1)
+const handleSizeChange = (val) => {
+    pageSize.value = val
+}
+const handleCurrentChange = (val) => {
+    currentPage.value = val
+}
+const handleClick = (tab, event) => {
+    editableTabsValue.value = tab.props.name
+    if (editableTabsValue.value === 'ypPurchaseInfo') {
+        queryYpTempPurchaseData()
+    }
+}
+const ztOptions = [
+    { value: '1', label: '已接收' }, { value: '2', label: '未接收' },
+    { value: '3', label: '已采购' }, { value: '4', label: '未采购' },
+    { value: '5', label: '已入库' }, { value: '6', label: '未入库' }]
+const desc = ref('科室临购药品在本院出现滞销(90天以上未使用或使用数量低于购进数量的30%以下),导致过期现象,则该药品的损失由申请科室承担,并1年内不能再申请新药。')
+const tempPurchaseData = ref([])
+const queryData = ref({
+    inpatientNo: '',
+    chargeCode: '',
+    ztFlag: '',
+    startTime: '',
+    endTime: '',
+})
+
+onMounted(() => {
+    nextTick(() => {
+        queryTempPurchaseYp('')
+        queryData.startTime = start;
+        queryData.endTime = end + " 23:59:59";
+        dateRange.value = [start, end];
+        queryYpTempPurchaseData()
+    })
+})
+
+const showAuditTempPurchase = ref(false)
+const auditTempPurchaseName = ref('临购药品审核')
+const ypTempPurchaseDetail = ref([])
+
+const showEditTempPurchase = ref(false)
+const editTempPurchaseName = ref('临购药品修改')
+const ypTempPurchaseEditData = ref([])
+
+const queryYpTempPurchaseData = () => {
+    if (dateRange.value) {
+        queryData.value.startTime = formatDatetime(dateRange.value[0])
+        queryData.value.endTime = formatDatetime(dateRange.value[1])
+    }
+    queryData.value.chargeCode = chargeCode.value
+    queryData.value.inpatientNo = inpatientNo.value
+    queryData.value.ztFlag = ztFlag.value
+    selectYpTempPurchase(queryData.value)
+        .then((res) => {
+            ypPurchaseData.value = res
+        })
+        .catch(() => {
+            ypPurchaseData.value = []
+        })
+
+}
+
+const queryTempPurchaseYp = (text) => {
+    selectTempPurchaseYp(text)
+        .then((res) => {
+            tempPurchaseData.value = res
+        })
+        .catch(() => {
+            tempPurchaseData.value = []
+        })
+
+}
+
+const ypChange = async () => {
+    await nextTick()
+    let dataF = tempPurchaseData.value.filter((item) => {
+        return item.chargeCode === ruleForm.value.chargeCode
+    })
+    if (dataF) {
+        ruleForm.value.chargeName = dataF[0].chargeName
+        ruleForm.value.serial = dataF[0].serial
+        ruleForm.value.specification = dataF[0].specification
+    }
+}
+
+const formSize = ref('default')
+const ruleFormRef = ref()
+const ruleForm = ref({
+    applyId: '', // 申请id
+    chargeName: '', // 药品名称
+    chargeCode: '', // 药品code
+    serial: '', // 序号
+    specification: '', // 规格
+    amount: '', // 申请数量
+    useResult: '', // 使用理由
+    op: userName, // 申请人(要求是临床科主任)
+    opId: userCode, // 申请人id
+    name: '', // 患者姓名
+    inpatientNo: '', // 住院号
+    receptFlag: '', // 是否接收(1: 接收)
+    purchaseFlag: '', // 是否采购(1: 采购)
+    storageFlag: '', // 是否入库(1: 入库)
+    applyDate: now, // 申请日期
+    auditDate: '', // 审核日期
+    result: '', // 未采购原因
+})
+const rules = ref({
+    chargeCode: [
+        { required: true, message: '请选择药品', trigger: 'change' },
+    ],
+    amount: [
+        { required: true, message: '请填写申请数量', trigger: 'blur' },
+    ],
+    useResult: [
+        { required: true, message: '请填写使用理由', trigger: 'blur' },
+    ],
+    name: [
+        { required: true, message: '请填写患者姓名', trigger: 'blur' },
+    ],
+    inpatientNo: [
+        { required: true, message: '请填写住院号', trigger: 'blur' },
+    ],
+})
+
+const submitForm = async (formEl) => {
+    if (!formEl) return
+    await formEl.validate((valid, fields) => {
+        if (valid) {
+            alert(Number.parseFloat(ruleForm.value.amount))
+            if (Number.isNaN(Number.parseFloat(ruleForm.value.amount))) {
+                ElMessage({
+                    type: "warning",
+                    message: '申请数量不是数值,请检查!',
+                    duration: 2500,
+                    showClose: true,
+                });
+                return
+            }
+            saveYpTempPurchase(ruleForm.value).then((res) => {
+                if (res.cg) {
+                    ElMessage({
+                        type: "success",
+                        message: res.cg,
+                        duration: 2500,
+                        showClose: true,
+                    });
+
+                    formEl.resetFields()
+                    return
+                }
+            });
+        } else {
+            console.log('error submit!', fields)
+        }
+    })
+}
+
+const resetForm = (formEl) => {
+    if (!formEl) return
+    formEl.resetFields()
+}
+
+const auditTempPurchase = (row) => {
+    showAuditTempPurchase.value = true
+    ypTempPurchaseDetail.value = row
+}
+
+const closeTempPurchaseAudit = (flag) => {
+    if (flag) {
+        showAuditTempPurchase.value = false
+    }
+    queryYpTempPurchaseData()
+}
+
+const editTempPurchase = (row) => {
+    if (row.receptFlag === '1') {
+        ElMessage({
+            type: "warning",
+            message: '临购药品已接收的申请不允许修改,请检查!',
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+
+    showEditTempPurchase.value = true
+    ypTempPurchaseEditData.value = row
+}
+
+const closeTempPurchaseEdit = (flag) => {
+    if (flag) {
+        showEditTempPurchase.value = false
+    }
+    queryYpTempPurchaseData()
+}
+
+// 导出临购药品明细信息
+const exportData = () => {
+    if (ypPurchaseData.value.length === 0) {
+        ElMessage({
+            message: "没有可以导出的数据!",
+            type: "warning",
+            duration: 2500,
+            showClose: true,
+        });
+    } else {
+        const title = {
+            chargeCode: "药品编码",
+            chargeName: "药品名称",
+            serial: "药品包装",
+            specification: "药品规格",
+            name: "患者姓名",
+            inpatientNo: "住院号",
+            amount: "数量",
+            useResult: "使用理由",
+            op: "申请人",
+            receptFlag: "是否接收",
+            purchaseFlag: "是否采购",
+            storageFlag: "是否入库",
+            applyDate: "申请日期",
+            auditDate: "审核日期",
+            result: "采购情况",
+        };
+
+        const d = clone(ypPurchaseData.value)
+        d.forEach(val => {
+            if (val.serial === '99') {
+                val.serial = '大包装'
+            } else {
+                val.serial = '小包装'
+            }
+            if (val.receptFlag === '1') {
+                val.receptFlag = '是'
+            } else {
+                val.receptFlag = '否'
+            }
+            if (val.purchaseFlag === '1') {
+                val.purchaseFlag = '是'
+            } else {
+                val.purchaseFlag = '否'
+            }
+            if (val.storageFlag === '1') {
+                val.storageFlag = '是'
+            } else {
+                val.storageFlag = '否'
+            }
+        });
+        Export(d, title, "临购药品明细信息")
+    }
+}
+
+</script>
+<!-- <template>
+    <el-timeline style="max-width: 600px">
+      <el-timeline-item center timestamp="2018/4/12" placement="top">
+        <el-card>
+          <h4>Update Github template</h4>
+          <p>Tom committed 2018/4/12 20:46</p>
+        </el-card>
+      </el-timeline-item>
+      <el-timeline-item timestamp="2018/4/3" placement="top">
+        <el-card>
+          <h4>Update Github template</h4>
+          <p>Tom committed 2018/4/3 20:46</p>
+        </el-card>
+      </el-timeline-item>
+      <el-timeline-item center timestamp="2018/4/2" placement="top">
+        Event start
+      </el-timeline-item>
+      <el-timeline-item timestamp="2018/4/2" placement="top">
+        Event end
+      </el-timeline-item>
+    </el-timeline>
+  </template> -->