Browse Source

Merge branch 'master' into 'master'

药品账页维护完善

See merge request lighter/vue-intergration-platform!80
huangshuhua 1 year ago
parent
commit
b2fa68105d

+ 12 - 0
src/api/dictionary/personnel/employee-mi.js

@@ -51,3 +51,15 @@ export function updateEmployeeMiDelFlagByCode(code, delFlag) {
         params: { code, delFlag },
     })
 }
+
+/**
+ * 根据text模糊查询职工
+ * @returns 
+ */
+export function selectEmployeeByCode(text) {
+    return request({
+        url: '/personnel/selectEmployeeByCode',
+        method: 'get',
+        params: { text },
+    })
+}

+ 2 - 2
src/api/yp-dict/yp-dict-base.js

@@ -161,7 +161,7 @@ export function updateYpVisibleFlag(data) {
 }
 
 /**
- * 查询药品厂家字典--相关
+ * 查询药品供应商字典--相关
  * @returns 
  */
 export function selectYpSupply(text) {
@@ -189,7 +189,7 @@ export function delYpSupplyByCode(code) {
 }
 
 /**
- * 查询药品供应商字典--相关
+ * 查询药品厂家字典--相关
  * @returns 
  */
 export function selectYpManuFactory(text) {

+ 50 - 4
src/api/yp-dict/yp-dict-info.js

@@ -4,11 +4,23 @@ import request from '@/utils/request'
  * 查询药品账页字典--相关
  * @returns 
  */
-export function selectYpDict(text) {
+export function selectYpDict(text, groupNo) {
     return request({
         url: '/ypDict/selectYpDict',
         method: 'get',
-        params: { text },
+        params: { text, groupNo },
+    })
+}
+
+/**
+ * 查询药品账页字典集合
+ * @returns 
+ */
+export function selectYpDictData() {
+    return request({
+        url: '/ypDict/selectYpDictData',
+        method: 'get',
+        params: {},
     })
 }
 
@@ -16,10 +28,44 @@ export function selectYpDict(text) {
  * 是否停用药品
  * @returns 
  */
-export function updateYpStopOrUsed(code, delFlag) {
+export function updateYpStopOrUsed(code, serial, delFlag) {
     return request({
         url: '/ypDict/updateYpStopOrUsed',
         method: 'get',
-        params: { code, delFlag },
+        params: { code, serial, delFlag },
+    })
+}
+
+/**
+ * 根据code(药品编码)查询药品账页信息
+ * @param {string} code 
+ * @returns 
+ */
+export function selectYpDictByCode(code, serial) {
+    return request({
+        url: '/ypDict/selectYpDictByCode',
+        method: 'get',
+        params: { code, serial },
+    })
+}
+
+/**
+ * 保存药品账页信息
+ * @param {Array} data 
+ * @returns 
+ */
+export function saveYpDict(data) {
+    return request({
+        url: '/ypDict/saveYpDict',
+        method: 'post',
+        data
+    })
+}
+
+export function selectYpGroupNameByYfFlag(text, yfFlag) {
+    return request({
+        url: '/ypDict/selectYpGroupNameByYfFlag',
+        method: 'get',
+        params: { text, yfFlag },
     })
 }

+ 40 - 0
src/api/yp-dict/yp-print-name.js

@@ -0,0 +1,40 @@
+import request from '@/utils/request'
+
+/**
+ * 根据药品编码(code)查询药品别名
+ * @returns 
+ */
+export function selectYpPrintNameData(chargeCode) {
+    return request({
+        url: '/ypDict/selectYpPrintNameData',
+        method: 'get',
+        params: { chargeCode },
+    })
+}
+
+/**
+ * 保存药品别名信息
+ * @param {object} data 
+ * @returns 
+ */
+export function savePrintName(data) {
+    return request({
+        url: '/ypDict/savePrintName',
+        method: 'post',
+        data
+    })
+}
+
+/**
+ * 根据药品编码以及别名删除药品别名信息
+ * @param {string} chargeCode 药品编码
+ * @param {string} printName 药品别名 
+ * @returns 
+ */
+export function delYpPrintNameByPrintName(chargeCode, printName) {
+    return request({
+        url: '/ypDict/delYpPrintNameByPrintName',
+        method: 'get',
+        params: { chargeCode, printName },
+    })
+}

+ 7 - 7
src/views/clinic/chronicDisease/ChronicDiseaseRegister.vue

@@ -494,9 +494,9 @@
                                                 style="width: 100%" filterable :options="creatList"
                                                 :remote-method="creatMethod" placeholder="请选择建档医生">
                                                 <template #default="{ item }">
-                                                    <span style="margin-right: 8px">{{ item.label }}</span>
+                                                    <span style="margin-right: 8px">{{ item.name }}</span>
                                                     <span style="color: var(--el-text-color-secondary); font-size: 13px">
-                                                        {{ item.value }}
+                                                        {{ item.code }}
                                                     </span>
                                                 </template>
                                             </el-select-v2>
@@ -506,9 +506,9 @@
                                                 filterable :options="creatList" :remote-method="creatMethod"
                                                 placeholder="请选择建档医生">
                                                 <template #default="{ item }">
-                                                    <span style="margin-right: 8px">{{ item.label }}</span>
+                                                    <span style="margin-right: 8px">{{ item.name }}</span>
                                                     <span style="color: var(--el-text-color-secondary); font-size: 13px">
-                                                        {{ item.value }}
+                                                        {{ item.code }}
                                                     </span>
                                                 </template>
                                             </el-select-v2>
@@ -556,7 +556,7 @@ import type { FormInstance, FormRules } from 'element-plus'
 import { ElMessage } from 'element-plus'
 import { getDatetime } from '../../../utils/date'
 import { getCrmDictionary, saveCrmPatientMi, selectCrmPatientMiByCode, selectBrInfoByCode } from "@/api/chronic-disease/chronic-disease"
-import { employeeList } from "@/api/zhu-yuan-yi-sheng/pat-info-query"
+import { selectEmployeeByCode } from "@/api/dictionary/personnel/employee-mi.js"
 import { provinceList, cityList, countyList, cityFilter, countyFilter } from "@/data/area.js"
 
 const activeName = ref(['1', '2', '3', '4', '5', '6', '7'])
@@ -583,13 +583,13 @@ onMounted(async () => {
 })
 
 const empMethod = async (val: string) => {
-    await employeeList(val).then((res: any) => {
+    await selectEmployeeByCode(val).then((res: any) => {
         empList.value = res
     })
 }
 
 const creatMethod = async (val: string) => {
-    await employeeList(val).then((res: any) => {
+    await selectEmployeeByCode(val).then((res: any) => {
         creatList.value = res
     })
 }

+ 2 - 2
src/views/clinic/chronicDisease/ChronicDiseaseSearch.vue

@@ -48,7 +48,7 @@
         <el-table-column prop="weight" label="体重" width="80"/>
         <el-table-column prop="temperature" label="体温" width="80"/>
         <el-table-column prop="heartRate" label="心率" width="80"/>
-        <el-table-column prop="bloodPressure" label="舒张压/收缩压" width="100"/>
+        <el-table-column prop="bloodPressure" label="收缩压/舒张压" width="100"/>
         <el-table-column prop="bloodSugar" label="血糖" width="80"/>
         <el-table-column prop="bloodOxygen" label="血氧" width="80"/>
         <el-table-column prop="referPhysicianName" label="主管医生" width="100"/>
@@ -200,7 +200,7 @@ const exportData = () => {
       weight: "体重",
       temperature: "体温",
       heartRate: "心率",
-      bloodPressure: "舒张压/收缩压",
+      bloodPressure: "收缩压/舒张压",
       bloodSugar: "血糖",
       bloodOxygen: "血氧",
       referPhysicianName: "主管医生",

+ 37 - 16
src/views/yp-dict/YpDictBase.vue

@@ -416,7 +416,7 @@
                         style="margin-top: 5px" @size-change="handleSizeChange" @current-change="handleCurrentChange">
                     </el-pagination>
                 </el-tab-pane>
-                <el-tab-pane key="ypSupply" label="生产厂家字典" name="ypSupply">
+                <el-tab-pane key="ypSupply" label="药品供应商字典" name="ypSupply">
                     <el-table
                         :data="ypSupplyData.slice(pageSizeSupply * (currentPageSupply - 1), pageSizeSupply * currentPageSupply)"
                         border style="width: 100%" height="calc(100% - 38px)" stripe highlight-current-row
@@ -494,10 +494,20 @@
                                 <span v-else>{{ scope.row.comment }}</span>
                             </template>
                         </el-table-column>
-                        <el-table-column prop="useFlag" label="是否使用(已使用1)" width="120">
+                        <el-table-column prop="useFlag" label="是否使用" width="120">
                             <template v-slot="scope">
-                                <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.useFlag"></el-input>
-                                <span v-else>{{ scope.row.useFlag }}</span>
+                                <div v-if="scope.row.isEdit">
+                                    <el-select v-model="scope.row.useFlag" clearable placeholder="请选择是否使用">
+                                        <el-option v-for="option in yesOptions" :key="option.code" :label="option.name"
+                                            :value="option.code"></el-option>
+                                    </el-select>
+                                </div>
+                                <div v-else>
+                                    <el-select v-model="scope.row.useFlag" disabled placeholder="请选择是否使用">
+                                        <el-option v-for="option in yesOptions" :key="option.code" :label="option.name"
+                                            :value="option.code"></el-option>
+                                    </el-select>
+                                </div>
                             </template>
                         </el-table-column>
                         <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
@@ -522,7 +532,7 @@
                         @size-change="handleSizeChangeSupply" @current-change="handleCurrentChangeSupply">
                     </el-pagination>
                 </el-tab-pane>
-                <el-tab-pane key="ypManuFactory" label="药品供应商字典" name="ypManuFactory">
+                <el-tab-pane key="ypManuFactory" label="生产厂家字典" name="ypManuFactory">
                     <el-table
                         :data="ypManuFactoryData.slice(pageSizeManuFactory * (currentPageManuFactory - 1), pageSizeManuFactory * currentPageManuFactory)"
                         border style="width: 100%" height="calc(100% - 38px)" stripe highlight-current-row
@@ -600,10 +610,20 @@
                                 <span v-else>{{ scope.row.comment }}</span>
                             </template>
                         </el-table-column>
-                        <el-table-column prop="useFlag" label="是否使用(已使用1)" width="120">
+                        <el-table-column prop="useFlag" label="是否使用" width="120">
                             <template v-slot="scope">
-                                <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.useFlag"></el-input>
-                                <span v-else>{{ scope.row.useFlag }}</span>
+                                <div v-if="scope.row.isEdit">
+                                    <el-select v-model="scope.row.useFlag" clearable placeholder="请选择是否使用">
+                                        <el-option v-for="option in yesOptions" :key="option.code" :label="option.name"
+                                            :value="option.code"></el-option>
+                                    </el-select>
+                                </div>
+                                <div v-else>
+                                    <el-select v-model="scope.row.useFlag" disabled placeholder="请选择是否使用">
+                                        <el-option v-for="option in yesOptions" :key="option.code" :label="option.name"
+                                            :value="option.code"></el-option>
+                                    </el-select>
+                                </div>
                             </template>
                         </el-table-column>
                         <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
@@ -654,6 +674,7 @@ const delFlagOptions = [{ code: '0', name: '有效' }, { code: '1', name: '无
 const ypTypeOptions = [{ code: '1', name: '西药' }, { code: '2', name: '成药' }, { code: '3', name: '草药' }, { code: '4', name: '卫生材料' }]
 const refundableFeesOptions = [{ code: '0', name: '否' }, { code: '1', name: '是' }]
 const visibleFlagOptions = [{ code: '0', name: '正常' }, { code: '1', name: '停用' }]
+const yesOptions = [{ code: '0', name: '否' }, { code: '1', name: '是' }]
 
 const pageSizeClass = ref(20)
 const currentPageClass = ref(1)
@@ -1825,7 +1846,7 @@ const callSaveVisibleFlag = (row) => {
 }
 // 药房药品住院停用增删改存结束
 
-// 药品字典-生产厂家字典增删改存开始
+// 药品字典-药品供应商字典增删改存开始
 // 编辑
 const editYpSupply = (row) => {
     // 备份原始数据
@@ -1850,7 +1871,7 @@ const updateYpSupply = (row) => {
     if (!row.code || !row.name) {
         ElMessage({
             type: "warning",
-            message: "生产厂家字典编码或名称不存在,请检查!",
+            message: "药品供应商字典编码或名称不存在,请检查!",
             duration: 2500,
             showClose: true,
         });
@@ -1867,7 +1888,7 @@ const updateYpSupply = (row) => {
         if (fe == 2) {
             ElMessage({
                 type: "warning",
-                message: "存在重复的生产厂家字典,请核对!",
+                message: "存在重复的药品供应商字典,请核对!",
                 duration: 2500,
                 showClose: true,
             });
@@ -1957,9 +1978,9 @@ const deleteYpSupply = (index, row) => {
         }
     })
 }
-// 药品字典-生产厂家字典增删改存结束
+// 药品字典-药品供应商字典增删改存结束
 
-// 药品字典-药品供应商字典增删改存开始
+// 药品字典-生产厂家字典增删改存开始
 // 编辑
 const editYpManuFactory = (row) => {
     // 备份原始数据
@@ -1984,7 +2005,7 @@ const updateYpManuFactory = (row) => {
     if (!row.code || !row.name) {
         ElMessage({
             type: "warning",
-            message: "药品供应商字典编码或名称不存在,请检查!",
+            message: "生产厂家字典编码或名称不存在,请检查!",
             duration: 2500,
             showClose: true,
         });
@@ -2001,7 +2022,7 @@ const updateYpManuFactory = (row) => {
         if (fe == 2) {
             ElMessage({
                 type: "warning",
-                message: "存在重复的药品供应商字典,请核对!",
+                message: "存在重复的生产厂家字典,请核对!",
                 duration: 2500,
                 showClose: true,
             });
@@ -2091,7 +2112,7 @@ const deleteYpManuFactory = (index, row) => {
         }
     })
 }
-// 药品字典-药品供应商字典增删改存结束
+// 药品字典-生产厂家字典增删改存结束
 
 const exportData = () => {
     alert("功能建设中。。。")

+ 68 - 13
src/views/yp-dict/YpDictInfo.vue

@@ -4,8 +4,16 @@
             <el-input v-model="text" class="w-50 m-2" style="width: 320px" placeholder="请输入编码/名称/首拼/五笔" clearable>
                 <template #prepend>编码/名称/首拼/五笔 </template>
             </el-input>
+            <el-select v-model="groupNo" placeholder="请选择药库" filterable clearable style="width: 240px;margin-left: 3px">
+                <el-option v-for="item in ypGroupNameData" :key="item.code" :label="item.name" :value="item.code">
+                    <span style="float: left">{{ item.label }}</span>
+                    <span style="float: right; color: var(--el-text-color-secondary); font-size: 13px; ">
+                        {{ item.value }}
+                    </span>
+                </el-option>
+            </el-select>
             <el-button type="primary" icon="Search" @click="queryYpDict" style="margin-left: 5px">查询</el-button>
-            <el-button type="primary" icon="Plus" @click="addYpDic" style="margin-left: 5px">新增</el-button>
+            <el-button type="primary" icon="Plus" @click="addYpDict" style="margin-left: 5px">新增</el-button>
         </template>
         <template #main>
             <el-table :data="drugDictData.slice(pageSize * (currentPage - 1), pageSize * currentPage)" border
@@ -45,17 +53,22 @@
         </template>
     </page-layer>
     <el-dialog v-model="showYpEdit" :close-on-click-modal="false" :close-on-press-escape="false" :title="ypTitle"
-        width="70%" destroy-on-close>
+        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>
+        <YpPrintName :ypPrintNameDetail="ypPrintNameDetail" @closeYpPrintNameEditFor="closeYpPrintName" />
+    </el-dialog>
 </template>
 <script setup name="YpDictInfo">
 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 } from '@/api/yp-dict/yp-dict-info.js'
+import { selectYpDict, updateYpStopOrUsed, selectYpDictByCode, selectYpGroupNameByYfFlag } from '@/api/yp-dict/yp-dict-info.js'
 import YpZdDict from '@/views/yp-dict/YpZdDict.vue'
+import YpPrintName from '@/views/yp-dict/YpPrintName.vue'
 
 const windowSize = store.state.app.windowSize;
 const tableHeight = windowSize.h / 1.07;
@@ -64,6 +77,11 @@ const drugDictData = ref([])
 const ypTitle = ref('')
 const showYpEdit = ref(false)
 const ypDetail = ref({})
+const ypPrintName = ref('')
+const showYpPrintName = ref(false)
+const ypPrintNameDetail = ref({})
+const ypGroupNameData = ref([])
+const groupNo = ref('')
 
 const pageSize = ref(30)
 const currentPage = ref(1)
@@ -77,13 +95,25 @@ const handleCurrentChange = (val) => {
 
 onMounted(() => {
     nextTick(() => {
+        queryYpGroupNameByYfFlag('')
         queryYpDict()
     })
 })
 
+// 查询所有药库明细
+const queryYpGroupNameByYfFlag = (val) => {
+    selectYpGroupNameByYfFlag(val, '0')
+        .then((res) => {
+            ypGroupNameData.value = res
+        })
+        .catch(() => {
+            ypGroupNameData.value = []
+        })
+}
+
 // 查询
 const queryYpDict = () => {
-    selectYpDict(text.value)
+    selectYpDict(text.value, groupNo.value)
         .then((res) => {
             res.forEach(row => {
                 // 是否标记
@@ -99,8 +129,11 @@ const queryYpDict = () => {
 }
 
 // 新增
-const addYpDic = () => {
-    alert('功能开发中。。。')
+const addYpDict = () => {
+    ypTitle.value = '新增药品账页信息'
+    // 新增标识
+    ypDetail.value.modeFlag = 'add'
+    showYpEdit.value = true
 }
 
 const closeYpEditAdd = () => {
@@ -109,13 +142,27 @@ const closeYpEditAdd = () => {
 }
 
 // 编辑
-const editYpDict = () => {
-    alert('功能开发中。。。')
+const editYpDict = (row) => {
+    selectYpDictByCode(row.code, row.serial).then((res) => {
+        ypTitle.value = '编码:' + row.code + ' 序号:' + row.serial + ' 规格:' + row.specification + ' 名称:' + row.name + ' 账页信息'
+        ypDetail.value = res
+        // 修改标识
+        ypDetail.value.modeFlag = 'edit'
+        showYpEdit.value = true
+    })
 }
 
 // 编辑别名
-const editYpDictName = () => {
-    alert('功能开发中。。。')
+const editYpDictName = (row) => {
+    // alert('功能开发中。。。')
+    ypPrintName.value = row.name + "别名"
+    showYpPrintName.value = true
+    ypPrintNameDetail.value.chargeCode = row.code
+}
+
+const closeYpPrintName = () => {
+    showYpPrintName.value = false
+    queryYpDict()
 }
 
 const stopYpDict = (row) => {
@@ -136,7 +183,7 @@ const stopYpDict = (row) => {
         distinguishCancelAndClose: true,
         dangerouslyUseHTMLString: true
     }).then(() => {
-        updateYpStopOrUsed(row.code, delFlag).then((res) => {
+        updateYpStopOrUsed(row.code, row.serial, delFlag).then((res) => {
             ElMessage({
                 type: "success",
                 message: res.cg,
@@ -148,9 +195,17 @@ const stopYpDict = (row) => {
         })
     }).catch((action) => {
         if (action === 'cancel') {
-            queryYpDic()
+            queryYpDict()
         }
     })
 }
 
-</script>
+</script>
+
+<style lang="scss">
+.yp-edit-dialog {
+    .el-dialog__body {
+        padding: 2px 5px !important;
+    }
+}
+</style>

+ 240 - 0
src/views/yp-dict/YpPrintName.vue

@@ -0,0 +1,240 @@
+<template>
+    <PageLayer>
+        <template #header class="hd-cl">
+            <el-button type="primary" icon="Plus" @click="onAddItem" style="margin-left: 5px">新增</el-button>
+        </template>
+        <template #mainMaxContentHeight>
+            <el-table :data="ypPrintNameData" border style="width: 100%" :height="tableHeight" stripe highlight-current-row>
+                <el-table-column type="index" label="序号" width="80" />
+                <el-table-column prop="chargeCode" label="药品编码" width="100" />
+                <el-table-column prop="printName" label="药品别名" width="300">
+                    <template v-slot="scope">
+                        <el-input v-if="scope.row.isEdit" size="small" v-model="scope.row.printName"></el-input>
+                        <span v-else>{{ scope.row.printName }}</span>
+                    </template>
+                </el-table-column>
+                <el-table-column prop="pyCode" label="拼音码" width="160" />
+                <el-table-column prop="dcode" label="五笔码" width="160" />
+                <el-table-column prop="ypFlag" label="类别" width="120">
+                    <template #default="scope">
+                        <div v-if="scope.row.isEdit">
+                            <el-select v-model="scope.row.ypFlag" clearable placeholder="请选择类别">
+                                <el-option v-for="option in ypFlagOptions" :key="option.code" :label="option.name"
+                                    :value="option.code"></el-option>
+                            </el-select>
+                        </div>
+                        <div v-else>
+                            <el-select v-model="scope.row.ypFlag" disabled placeholder="请选择类别">
+                                <el-option v-for="option in ypFlagOptions" :key="option.code" :label="option.name"
+                                    :value="option.code"></el-option>
+                            </el-select>
+                        </div>
+                    </template>
+                </el-table-column>
+                <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
+                    <template #default="scope">
+                        <el-button type="primary" size="small" v-if="!scope.row.isEdit"
+                            @click="editPrintName(scope.row)">编辑</el-button>
+                        <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                            @click="updatePrintName(scope.row)">保存</el-button>
+                        <el-button type="primary" size="small" v-if="scope.row.isEdit"
+                            @click="cancelPrintName(scope.row)">取消
+                        </el-button>
+                        <el-button type="danger" size="small" @click.prevent="deletePrintName(scope.$index, scope.row)">
+                            删除
+                        </el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </template>
+    </PageLayer>
+</template>
+<script setup name="YpPrintName">
+import { ref, onMounted, nextTick } from 'vue'
+import PageLayer from '@/layout/PageLayer.vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { selectYpPrintNameData, savePrintName, delYpPrintNameByPrintName } from '@/api/yp-dict/yp-print-name.js'
+
+const tableHeight = '500'
+const ypFlagOptions = [{ code: 'T', name: '通用名' }, { code: '1', name: '商用名' }, { code: '2', name: '别名' }]
+const ypPrintNameData = ref([])
+const props = defineProps({
+    ypPrintNameDetail: {
+        type: Object,
+        default: {}
+    }
+})
+
+
+onMounted(async () => {
+    await nextTick(() => {
+        selectYpPrintNameList()
+
+    })
+
+})
+
+const selectYpPrintNameList = () => {
+    selectYpPrintNameData(props.ypPrintNameDetail.chargeCode)
+        .then((res) => {
+            res.forEach(row => {
+                // 是否标记
+                row['isEdit'] = false
+                // 是否新增
+                row['isAdd'] = false
+            })
+            ypPrintNameData.value = res
+        })
+        .catch(() => {
+            ypPrintNameData.value = []
+        })
+
+}
+
+// 新增
+const onAddItem = () => {
+    ypPrintNameData.value.push({
+        chargeCode: '',
+        printName: '',
+        ypFlag: '',
+        pyCode: '',
+        dCode: '',
+        isEdit: true,
+        isAdd: true,
+    })
+}
+
+// 编辑
+const editPrintName = (row) => {
+    // 备份原始数据
+    row['oldRow'] = JSON.parse(JSON.stringify(row))
+    row.isEdit = true
+}
+// 取消
+const cancelPrintName = (row) => {
+    // 如果是新增的数据
+    if (row.isAdd) {
+        ypPrintNameData.value.splice(ypPrintNameData.value.length - 1, 1)
+    } else {
+        // 不是新增的数据  还原数据
+        for (const i in row.oldRow) {
+            row[i] = row.oldRow[i]
+        }
+    }
+}
+// 保存
+const updatePrintName = (row) => {
+    if (!row.chargeCode || !row.printName) {
+        ElMessage({
+            type: "warning",
+            message: "药品的编码或别名不存在,请检查!",
+            duration: 2500,
+            showClose: true,
+        });
+        return
+    }
+
+    if (row.isAdd) {
+        let fe = 0
+        for (let num in ypPrintNameData.value) {
+            if (ypPrintNameData.value[num].printName === row.printName) {
+                fe++
+            }
+        }
+        if (fe == 2) {
+            ElMessage({
+                type: "warning",
+                message: "存在重复的药品别名,请核对!",
+                duration: 2500,
+                showClose: true,
+            });
+            return
+        } else {
+            callSavePrintName(row, null)
+        }
+
+    } else {
+        let oldName = row.oldRow.printName
+        if (oldName !== row.printName) {
+            let fe = 0
+            for (let num in ypPrintNameData.value) {
+                if (ypPrintNameData.value[num].printName === row.printName) {
+                    fe++
+                }
+            }
+            if (fe == 2) {
+                ElMessage({
+                    type: "warning",
+                    message: row.printName + "存在重复的药品别名,请核对!",
+                    duration: 2500,
+                    showClose: true,
+                });
+                return
+            } else {
+                callSavePrintName(row, oldName)
+            }
+        } else {
+            callSavePrintName(row, oldName)
+        }
+    }
+}
+
+const callSavePrintName = (row, oldName) => {
+    let title = '请确认是否保存<span style="color:#d12020;">' + row.printName + '</span>?'
+    ElMessageBox.confirm(title, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        savePrintName(row).then((res) => {
+            ElMessage({
+                type: "success",
+                message: res.cg,
+                duration: 2500,
+                showClose: true,
+            });
+            if (oldName !== null && oldName !== row.printName) {
+                // 删除原始数据
+                delYpPrintNameByPrintName(row.chargeCode, oldName).then((res) => {
+                    selectYpPrintNameList()
+                })
+                return
+            } else {
+                selectYpPrintNameList()
+            }
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+            selectYpPrintNameList()
+        }
+    })
+}
+
+const deletePrintName = (index, row) => {
+    let title = '请确认是否删除<span style="color:#d12020;">' + row.printName + '</span>?'
+    ElMessageBox.confirm(title, {
+        cancelButtonText: '取消',
+        confirmButtonText: '确定',
+        type: 'warning',
+        distinguishCancelAndClose: true,
+        dangerouslyUseHTMLString: true
+    }).then(() => {
+        delYpPrintNameByPrintName(row.chargeCode, row.printName).then((res) => {
+            ElMessage({
+                type: "success",
+                message: res.cg,
+                duration: 2500,
+                showClose: true,
+            });
+            selectYpPrintNameList()
+            return
+        })
+    }).catch((action) => {
+        if (action === 'cancel') {
+            selectYpPrintNameList()
+        }
+    })
+}
+</script>

+ 1063 - 18
src/views/yp-dict/YpZdDict.vue

@@ -4,42 +4,1087 @@
             <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存</el-button>
             <el-button type="primary" icon="Refresh" @click="resetForm(ruleFormRef)"
                 style="margin-left: 10px">重置</el-button>
+            <el-text v-if="props.ypDetail.modeFlag === 'edit'" class="mx-1" type="danger"
+                style="margin-left: 10px; font-size: 1.6em">该药品已有业务数据,某些属性不能修改!!</el-text>
         </template>
         <template #mainMaxContentHeight>
-            <el-form ref="ruleFormRef" label-width="127px" :model="ypForm" class="demo-ruleForm" :size="formSize">
-            </el-form>
+            <div class="demo-collapse">
+                <el-form ref="ruleFormRef" :rules="rulesInfo" label-width="127px" :model="ypForm" class="demo-ruleForm"
+                    :size="formSize">
+                    <el-collapse v-model="activeName">
+                        <el-collapse-item title="第一部分" name="1" disabled>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="编码" prop="code">
+                                        <el-input v-model="ypForm.code" maxlength="6" show-word-limit placeholder="编码"
+                                            disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="序号" prop="serial">
+                                        <el-input v-model="ypForm.serial" maxlength="2" show-word-limit placeholder="序号"
+                                            disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药品限价" prop="ybxjPrice">
+                                        <el-input v-model="ypForm.ybxjPrice" maxlength="10" show-word-limit
+                                            placeholder="药品限价" disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="拆零价" prop="retprice">
+                                        <el-input v-model="ypForm.retprice" 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="name">
+                                        <el-input v-model="ypForm.name" maxlength="30" show-word-limit
+                                            placeholder="请填写品名" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="货位号" prop="location">
+                                        <el-input v-model="ypForm.location" maxlength="12" show-word-limit
+                                            placeholder="请填写货位号" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="购入价" prop="buyPrice">
+                                        <el-input v-if="isEdit" v-model="ypForm.buyPrice" maxlength="10" show-word-limit
+                                            placeholder="请填写购入价" @change="ybxjPriceFormat" />
+                                        <el-input v-else v-model="ypForm.buyPrice" maxlength="10" show-word-limit
+                                            placeholder="请填写购入价" disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="零售价" prop="packRetprice">
+                                        <el-input v-if="isEdit" v-model="ypForm.packRetprice" maxlength="10" show-word-limit
+                                            placeholder="请填写零售价" @change="retpriceFormat" />
+                                        <el-input v-else v-model="ypForm.packRetprice" 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="chemRemark">
+                                        <el-input v-model="ypForm.chemRemark" maxlength="16" show-word-limit
+                                            placeholder="请填写化学成分" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="拼音码" prop="pyCode">
+                                        <el-input v-model="ypForm.pyCode" maxlength="8" show-word-limit placeholder="拼音码"
+                                            disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="五笔码" prop="dcode">
+                                        <el-input v-model="ypForm.dcode" maxlength="8" show-word-limit placeholder="五笔码"
+                                            disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药品类别" prop="drugKind">
+                                        <el-select v-model="ypForm.drugKind" placeholder="请选择药品类别" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpKindCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4">
+                                    <el-form-item label="可用" prop="delFlag">
+                                        <el-switch v-model="ypForm.delFlag" active-value="0" inactive-value="1"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="药库可用" prop="visibleFlag">
+                                        <el-switch v-model="ypForm.visibleFlag" active-value="0" inactive-value="1"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="父医嘱标志" prop="fatherFlag">
+                                        <el-switch v-model="ypForm.fatherFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="摆药机标志" prop="byjFlag">
+                                        <el-switch v-model="ypForm.byjFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="国家基本药物" prop="jbFlag">
+                                        <el-switch v-model="ypForm.jbFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="医保自费" prop="selfFlagYb">
+                                        <el-switch v-model="ypForm.selfFlagYb" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item>
+                        <el-collapse-item title="第二部分" name="2" disabled>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="规格" prop="specification">
+                                        <el-input v-model="ypForm.specification" maxlength="40" show-word-limit
+                                            placeholder="请填写规格" disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="最小规格" prop="specification2">
+                                        <el-input v-model="ypForm.specification2" maxlength="40" show-word-limit
+                                            placeholder="请填写最小规格" disabled />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="剂型" prop="dosage">
+                                        <el-select v-model="ypForm.dosage" placeholder="请选择剂型" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpDosageCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药性" prop="classCode">
+                                        <el-select v-model="ypForm.classCode" placeholder="请选择药性" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpClassCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="重量" prop="weight">
+                                        <el-input v-model="ypForm.weight" maxlength="40" show-word-limit placeholder="请填写重量"
+                                            @change="specificationFormat" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="重量单位" prop="weighUnit">
+                                        <el-select v-model="ypForm.weighUnit" placeholder="请选择重量单位" filterable clearable
+                                            style="width: 100%" @change="specificationFormat">
+                                            <el-option v-for="item in ypDictList.getYpUnitCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="体积" prop="volum">
+                                        <el-input v-model="ypForm.volum" maxlength="40" show-word-limit placeholder="请填写体积"
+                                            @change="specificationFormat" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="体积单位" prop="volUnit">
+                                        <el-select v-model="ypForm.volUnit" placeholder="请选择体积单位" filterable clearable
+                                            style="width: 100%" @change="specificationFormat">
+                                            <el-option v-for="item in ypDictList.getYpUnitCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="最小包装单位" prop="miniUnit">
+                                        <el-select v-model="ypForm.miniUnit" placeholder="请选择最小包装单位" filterable clearable
+                                            style="width: 100%" @change="specificationFormat">
+                                            <el-option v-for="item in ypDictList.getYpUnitCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="包装量" prop="packSize">
+                                        <el-input v-model="ypForm.packSize" maxlength="20" show-word-limit
+                                            placeholder="请填写包装量" @change="specificationFormat" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="整包装单位" prop="packUnit">
+                                        <el-select v-model="ypForm.packUnit" placeholder="请选择整包装单位" filterable clearable
+                                            style="width: 100%" @change="specificationFormat">
+                                            <el-option v-for="item in ypDictList.getYpUnitCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="浓度" prop="concentration">
+                                        <el-input v-model="ypForm.concentration" maxlength="10" show-word-limit
+                                            placeholder="请填写浓度" @change="specificationFormat" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="抗肿瘤药物级别" prop="antitumorLevel">
+                                        <el-select v-model="ypForm.antitumorLevel" placeholder="请选择抗肿瘤药物级别" filterable
+                                            clearable style="width: 100%">
+                                            <el-option v-for="item in getYpAntitumorLevel" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="大类管理" prop="categoriesFlag">
+                                        <el-select v-model="ypForm.categoriesFlag" placeholder="请选择药品大类" filterable
+                                            clearable style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpCategoriesCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药品级别" prop="ypLevel">
+                                        <el-select v-model="ypForm.ypLevel" placeholder="请选择药品级别" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in getYpLevel" :key="item.code" :label="item.name"
+                                                :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="采购编码" prop="purchaseCode">
+                                        <el-input v-model="ypForm.purchaseCode" maxlength="20" show-word-limit
+                                            placeholder="请填写采购编码" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4">
+                                    <el-form-item label="大输液" prop="infusionFlag">
+                                        <el-switch v-model="ypForm.infusionFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="贵重" prop="supriceFlag">
+                                        <el-switch v-model="ypForm.supriceFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="自费" prop="selfFlag">
+                                        <el-switch v-model="ypForm.selfFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="抗生素" prop="kssFlag">
+                                        <el-switch v-model="ypForm.kssFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="皮试" prop="psFlag">
+                                        <el-switch v-model="ypForm.psFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="辅助用药" prop="fzFlag">
+                                        <el-switch v-model="ypForm.fzFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4">
+                                    <el-form-item label="自动拆零" prop="clFlag">
+                                        <el-switch v-model="ypForm.clFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="大输液基数" prop="jsFlag">
+                                        <el-switch v-model="ypForm.jsFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="抢救药品" prop="qjFlag">
+                                        <el-switch v-model="ypForm.qjFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="溶媒标志" prop="ymFlag">
+                                        <el-switch v-model="ypForm.ymFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="搭配溶媒" prop="dpymFlag">
+                                        <el-switch v-model="ypForm.dpymFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="4">
+                                    <el-form-item label="统一采购" prop="isCentralPurchase">
+                                        <el-switch v-model="ypForm.isCentralPurchase" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="毒麻类别" prop="drugFlag">
+                                        <el-select v-model="ypForm.drugFlag" placeholder="请选择毒麻类别" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in getYpDrugFlag" :key="item.code" :label="item.name"
+                                                :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="储存方式" prop="coldFlag">
+                                        <el-select v-model="ypForm.coldFlag" placeholder="请选择储存方式" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in getYpColdFlag" :key="item.code" :label="item.name"
+                                                :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="医保码(区)" prop="ybCode2">
+                                        <el-input v-model="ypForm.ybCode2" maxlength="20" show-word-limit
+                                            placeholder="请填写医保码(区)" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="医保说明(区)" prop="ybComment2">
+                                        <el-input v-model="ypForm.ybComment2" maxlength="50" show-word-limit
+                                            placeholder="请填写医保说明(区)" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="门诊费别" prop="percentGroupMz">
+                                        <el-select v-model="ypForm.percentGroupMz" placeholder="请选择门诊费别" filterable
+                                            clearable style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpChargeGroupCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="住院费别" prop="percentGroupZy">
+                                        <el-select v-model="ypForm.percentGroupZy" placeholder="请选择住院费别" filterable
+                                            clearable style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpChargeGroupCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="门诊账单" prop="billItemMz">
+                                        <el-select v-model="ypForm.billItemMz" placeholder="请选择门诊账单" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getMzBillItemCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="住院账单" prop="billItemZy">
+                                        <el-select v-model="ypForm.billItemZy" placeholder="请选择住院账单" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getZyBillItemCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="核算码" prop="auditCode">
+                                        <el-select v-model="ypForm.auditCode" placeholder="请选择核算码" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getZyAuditItemCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="扩展码" prop="exCode">
+                                        <el-input v-model="ypForm.exCode" maxlength="40" show-word-limit
+                                            placeholder="请填写扩展码" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="院内码" prop="ncode">
+                                        <el-input v-model="ypForm.ncode" maxlength="8" show-word-limit
+                                            placeholder="请填写院内码" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药品来源" prop="countryFlag">
+                                        <el-select v-model="ypForm.countryFlag" placeholder="请选择药品来源" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpFromCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="抗菌药物" prop="kjywFlag">
+                                        <el-select v-model="ypForm.kjywFlag" placeholder="请选择抗菌药物" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpKjywCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="DDD值" prop="dddValue">
+                                        <el-input v-model="ypForm.dddValue" maxlength="40" show-word-limit
+                                            placeholder="请填写DDD值" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="DDD值消耗单位" prop="dddUnit">
+                                        <el-input v-model="ypForm.dddUnit" maxlength="40" show-word-limit
+                                            placeholder="请填写DDD值消耗单位" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="批准文号" prop="pzwh">
+                                        <el-input v-model="ypForm.pzwh" maxlength="20" show-word-limit
+                                            placeholder="请填写批准文号" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="4">
+                                    <el-form-item label="招标标志" prop="zbFlag">
+                                        <el-switch v-model="ypForm.zbFlag" active-value="1" inactive-value="0"
+                                            active-color="#13ce66" inactive-color="#ff4949" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="10">
+                                    <el-form-item label="中标供应商" prop="zbSupplyer">
+                                        <el-select v-model="ypForm.zbSupplyer" placeholder="请选择中标供应商" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpSupplyCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="10">
+                                    <el-form-item label="制药厂" prop="manuCode">
+                                        <el-select v-model="ypForm.manuCode" placeholder="请选择制药厂" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpManuFactoryCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="12">
+                                    <el-form-item label="备注" prop="comment">
+                                        <el-input v-model="ypForm.comment" maxlength="120" show-word-limit
+                                            placeholder="请填写备注" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="系统匹配名" prop="xtppName">
+                                        <el-input v-model="ypForm.xtppName" maxlength="30" show-word-limit
+                                            placeholder="请填写系统匹配名" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="商品名称" prop="spName">
+                                        <el-input v-model="ypForm.spName" maxlength="30" show-word-limit
+                                            placeholder="请填写商品名称" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item>
+                        <el-collapse-item title="第三部分" name="3" disabled>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="默认给药方式" prop="supplyType">
+                                        <el-select v-model="ypForm.supplyType" placeholder="请选择默认给药方式" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getMzSupplyCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="默认执行频率" prop="frequency">
+                                        <el-select v-model="ypForm.frequency" placeholder="请选择默认执行频率" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getMzFrequencyCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="常用剂量" prop="orderDosage">
+                                        <el-input v-model="ypForm.orderDosage" maxlength="40" show-word-limit
+                                            placeholder="请填写常用剂量" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="常用计量单位" prop="dosageUnit">
+                                        <el-select v-model="ypForm.dosageUnit" placeholder="请选择常用计量单位" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpUnitCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="复核者" prop="fhName">
+                                        <el-select v-model="ypForm.fhName" placeholder="请选择复核者" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getEmployeeCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="医保类别" prop="ybFlagNew">
+                                        <el-select v-model="ypForm.ybFlagNew" placeholder="请选择医保类别" filterable clearable
+                                            style="width: 100%">
+                                            <el-option v-for="item in ypDictList.getYpYbTypeCode" :key="item.code"
+                                                :label="item.name" :value="item.code">
+                                                <span style="float: left">{{ item.name }}</span>
+                                                <span
+                                                    style="float: right; color: var(--el-text-color-secondary); font-size: 13px;">{{
+                                                        item.code }}</span>
+                                            </el-option>
+                                        </el-select>
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="报销比例(%)" prop="ybBlNew">
+                                        <el-input v-model="ypForm.ybBlNew" maxlength="10" show-word-limit
+                                            placeholder="请填写报销比例" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="外观情况" prop="wgType">
+                                        <el-input v-model="ypForm.wgType" maxlength="100" show-word-limit
+                                            placeholder="请填写外观情况" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="12">
+                                    <el-form-item label="医保说明" prop="ybCommentNew">
+                                        <el-input v-model="ypForm.ybCommentNew" maxlength="100" show-word-limit
+                                            placeholder="请填写医保说明" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="卫计委药品编码" prop="wjwYpid">
+                                        <el-input v-model="ypForm.wjwYpid" maxlength="12" show-word-limit
+                                            placeholder="请填写卫计委药品编码" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药监局药品本位码" prop="yjjYpid">
+                                        <el-input v-model="ypForm.yjjYpid" maxlength="14" show-word-limit
+                                            placeholder="请填写药监局药品本位码" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                            <el-row>
+                                <el-col :span="6">
+                                    <el-form-item label="社会保险药品编码" prop="rsbYpid">
+                                        <el-input v-model="ypForm.rsbYpid" maxlength="17" show-word-limit
+                                            placeholder="请填写社会保险药品编码" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="药管平台码" prop="drugControlCode">
+                                        <el-input v-model="ypForm.drugControlCode" maxlength="30" show-word-limit
+                                            placeholder="请填写药管平台码" />
+                                    </el-form-item>
+                                </el-col>
+                                <el-col :span="6">
+                                    <el-form-item label="国家医保编码" prop="nationalCode">
+                                        <el-input v-if="!isEdit" v-model="ypForm.nationalCode" placeholder="请填写国家医保编码"
+                                            disabled />
+                                        <el-input v-else v-model="ypForm.nationalCode" placeholder="请填写国家医保编码" />
+                                    </el-form-item>
+                                </el-col>
+                            </el-row>
+                        </el-collapse-item>
+                    </el-collapse>
+                </el-form>
+            </div>
         </template>
     </PageLayer>
 </template>
 <script setup name="YpZdDict">
 import { ref, onMounted, nextTick } from 'vue'
 import PageLayer from '@/layout/PageLayer.vue'
+import { clone } from '@/utils/clone'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { selectYpDictData, saveYpDict } from '@/api/yp-dict/yp-dict-info.js'
 
+const activeName = ref(['1', '2', '3', '4', '5', '6', '7'])
 const formSize = ref('default')
+const isEdit = ref(false)
 const ruleFormRef = ref()
+const ypDictList = ref([])
 const props = defineProps({
-    deptDetail: {
+    ypDetail: {
         type: Object,
         default: {}
     }
 })
-const emit = defineEmits(['closeDeptEditFor'])
-let deptForm = ref({
-    code: '', // 科室编码
-    name: '', // 科室名称
-    classCode: '', // 分类
-    parentCode: '', // 父科室(code)
+
+const getYpAntitumorLevel = ref([{ code: '1', name: '普通使用级' }, { code: '2', name: '限制使用级' }])
+const getYpLevel = ref([{ code: '1', name: '非限制级' }, { code: '2', name: '限制级' }, { code: '3', name: '特殊级' }])
+const getYpDrugFlag = ref([{ code: '1', name: '毒性药品' }, { code: '2', name: '麻醉药品' }, { code: '3', name: '精神1类' }, { code: '4', name: '精神2类' }, { code: '5', name: '高危药品' }, { code: '6', name: '终止妊娠药' }])
+const getYpColdFlag = ref([{ code: '0', name: '常温' }, { code: '1', name: '冷冻' }, { code: '2', name: '冷藏' }, { code: '3', name: '阴凉' }, { code: '4', name: '凉暗' }])
+// const getYpKjywFlag = ref([{ code: '1', name: '口服及注射' }, { code: '2', name: '外用抗菌药' }, { code: '3', name: '口服抗真菌' }, { code: '4', name: '外用抗真菌' }])
+// const getYpCountryFlag = ref([{ code: '1', name: '国产' }, { code: '2', name: '进口' }, { code: '3', name: '合资' }, { code: '4', name: '带量采购' }])
+
+const emit = defineEmits(['closeYpEditFor'])
+let ypForm = ref({
+    modeFlag: '', // 模式:edit 编辑; add 新增
+    code: '', // 药品编码
+    name: '', // 药品名称
+    serial: '', // 序号
+    classCode: '', // 药性
+    dosage: '', // 剂型
+    concentration: '', // 浓度
+    weight: '', // 重量
+    weighUnit: '', // 重量单位
+    volum: '', // 体积
+    volUnit: '', // 体积单位
+    miniUnit: '', // 最小单位
+    packSize: '', // 包装量
+    packUnit: '', // 包装单位
+    specification: '', // 规格
+    specification2: '', // 最小(拆零)规格
+    // specPack: '', // 大包装规格
+    packRetprice: '', // 零售价
+    retprice: '', // 拆零价 
+    buyPrice: '', // 购入价
+    ybxjPrice: '', // 限价
+    // fixPrice: '', // 批发价
+    percentGroupMz: '', // 门诊费别
+    percentGroupZy: '', // 住院费别
+    selfFlag: '', // 自费标志 1:自费 0:公费
+    supriceFlag: '', // 贵重标志 1:贵重 0:普通
+    drugFlag: '', // 毒麻标志:1:毒;2:麻;3:精神1;4:精神2 
+    pyCode: '', // 拼音码
+    dcode: '', // 自定义码
+    infusionFlag: '', // 大输液标志:1:输液
+    visibleFlag: '', // 1:不显示(实际是药库不可用, 1:不可用)
+    delFlag: '', // 1:作废(可用标志)
+    countryFlag: '', // 药品来源:1_非国产
+    manuCode: '', // 制药厂
+    coldFlag: '', // 冷冻/冷藏标志:1:冷冻;2:冷藏等
+    chemRemark: '', // 化学成分
+    drugKind: '', // 药品类别:yp_zd_drug_kind
+    zbFlag: '', // 招标标志:1:招标 
+    zbSupplyer: '', // 中标供应商
     ncode: '', // 院内码
-    delFlag: '', // 停用
-    xnhDeptCode: '', // 新农合科室编码
-    xnhDeptName: '', // 新农合科室名称
-    mzFlag: '', // 门诊开放
-    yjFlag: '', // 医技上线
-    ghChargeFlag: '', // 收取挂号费
-    ghjzFlag: '', // 门诊挂号就诊
-    supplyFlag: '', // 用药方式执行科室
-    officePos: '', // 就诊地点
+    billItemMz: '', // 门诊账单
+    billItemZy: '', // 住院账单
+    supplyType: '', // 默认给药方式
+    frequency: '', // 默认频率
+    psFlag: '', // 1:需要皮试 
+    exCode: '', // 扩展码
+    kssFlag: '', // 抗生素标志:1 抗生素
+    ypLevel: '', // 药品级别 
+    selfFlagYb: '', // 医保自费
+    orderDosage: '', // 常用剂量
+    dosageUnit: '', // 常用计量单位
+    jbFlag: '', // 国家基本药物
+    location: '', // 货位号
+    auditCode: '', // 核算码
+    fatherFlag: '', // 父医嘱标志
+    ybCode2: '', // 医保码(区)
+    ybComment2: '', // 医保说明(区)
+    byjFlag: '', // 摆药机标志
+    antitumorLevel: '', // 抗肿瘤药物级别
+    categoriesFlag: '', // 大类管理
+    purchaseCode: '', // 采购编码
+    fzFlag: '', // 辅助用药:1 是
+    clFlag: '', // 自动拆零?: 1 是
+    jsFlag: '', // 大输液基数: 1 是
+    qjFlag: '', // 抢救药品:1 是
+    ymFlag: '', // 溶媒标志:1 是
+    dpymFlag: '', // 搭配溶媒:1 是
+    isCentralPurchase: '', // 统一采购:1 是
+    kjywFlag: '', // 抗菌药物(类型)
+    dddValue: '', // DDD值
+    dddUnit: '', // DDD值消耗单位
+    pzwh: '', // 批准文号
+    comment: '', // 备注
+    xtppName: '', // 系统匹配名
+    spName: '', // 商品名称
+    fhName: '', // 复核者
+    ybFlagNew: '', // 医保类别(新)
+    ybBlNew: '', // 报销比例
+    wgType: '', // 外观情况
+    ybCommentNew: '', // 医保说明
+    wjwYpid: '', // 卫计委药品编码
+    yjjYpid: '', // 药监局药品本位码
+    rsbYpid: '', // 社会保险药品编码
+    drugControlCode: '', // 药管平台码
+    nationalCode: '', // 国家医保编码
+})
+
+// watch(() => props.ypDetail, () => {
+//     ypForm.value = clone(props.ypDetail)
+// })
+
+const rulesInfo = reactive({
+    name: [
+        { required: true, message: '请填写品名', trigger: 'blur' },
+    ],
+    buyPrice: [
+        { required: true, message: '请填写购入价', trigger: 'blur' },
+    ],
+    packRetprice: [
+        { required: true, message: '请填写零售价', trigger: 'blur' },
+    ],
+    drugKind: [
+        { required: true, message: '请选择药品类别', trigger: 'change' },
+    ],
+    dosage: [
+        { required: true, message: '请选择剂型', trigger: 'change' },
+    ],
+    classCode: [
+        { required: true, message: '请选择药性', trigger: 'change' },
+    ],
+    miniUnit: [
+        { required: true, message: '请选择最小包装单位', trigger: 'change' },
+    ],
+    packSize: [
+        { required: true, message: '请填写包装量', trigger: 'blur' },
+    ],
+    packUnit: [
+        { required: true, message: '请选择整包装单位', trigger: 'change' },
+    ],
+    coldFlag: [
+        { required: true, message: '请选择储存方式', trigger: 'change' },
+    ],
+    percentGroupMz: [
+        { required: true, message: '请选择门诊费别', trigger: 'change' },
+    ],
+    percentGroupZy: [
+        { required: true, message: '请选择住院费别', trigger: 'change' },
+    ],
+    billItemMz: [
+        { required: true, message: '请选择门诊账单', trigger: 'change' },
+    ],
+    billItemZy: [
+        { required: true, message: '请选择住院账单', trigger: 'change' },
+    ],
+    auditCode: [
+        { required: true, message: '请选择核算码', trigger: 'change' },
+    ],
+    countryFlag: [
+        { required: true, message: '请选择药品来源', trigger: 'change' },
+    ],
+    manuCode: [
+        { required: true, message: '请选择制药厂', trigger: 'change' },
+    ],
+    pzwh: [
+        { required: true, message: '请填写批准文号', trigger: 'blur' },
+    ],
+    fhName: [
+        { required: true, message: '请选择复核者', trigger: 'change' },
+    ],
+    ybFlagNew: [
+        { required: true, message: '请选择医保类别', trigger: 'change' },
+    ],
 })
 
+onMounted(async () => {
+    // 查询药品字典集合
+    selectYpDictDataList()
+
+    await nextTick(() => {
+        // 编辑
+        if (props.ypDetail.modeFlag === 'edit') {
+            ypForm.value = clone(props.ypDetail)
+            ypForm.value.delFlag = (ypForm.value.delFlag === null ? '0' : ypForm.value.delFlag)
+            ypForm.value.visibleFlag = (ypForm.value.visibleFlag === null ? '0' : ypForm.value.visibleFlag)
+            ypForm.value.jbFlag = (ypForm.value.jbFlag !== null ? ypForm.value.jbFlag.trim() : ypForm.value.jbFlag)
+            ypForm.value.kjywFlag = (ypForm.value.kjywFlag !== null ? ypForm.value.kjywFlag.trim() : ypForm.value.kjywFlag)
+            ypForm.value.auditCode = (ypForm.value.auditCode !== null ? ypForm.value.auditCode.trim() : ypForm.value.auditCode)
+            ypForm.value.ybBlNew = (ypForm.value.ybBlNew !== null ? ypForm.value.ybBlNew.trim() : ypForm.value.ybBlNew)
+            isEdit.value = false
+        } else {
+            ypForm.value.delFlag = '0'
+            ypForm.value.visibleFlag = '0'
+            isEdit.value = true
+        }
+
+    })
+})
+
+const selectYpDictDataList = () => {
+    selectYpDictData()
+        .then((res) => {
+            ypDictList.value = res
+        })
+        .catch(() => {
+            ypDictList.value = []
+        })
+
+}
+
+// 药品规格格式化
+const specificationFormat = () => {
+    let specificationV = ''
+    let specification2V = ''
+    let wUnit = ypDictList.value.getYpUnitCode.find((item) => {
+        if (ypForm.value.weighUnit === item.code) {
+            return item
+        }
+    })
+    let vUnit = ypDictList.value.getYpUnitCode.find((item) => {
+        if (ypForm.value.volUnit === item.code) {
+            return item
+        }
+    })
+    let mUnit = ypDictList.value.getYpUnitCode.find((item) => {
+        if (ypForm.value.miniUnit === item.code) {
+            return item
+        }
+    })
+    let pUnit = ypDictList.value.getYpUnitCode.find((item) => {
+        if (ypForm.value.packUnit === item.code) {
+            return item
+        }
+    })
+    if (ypForm.value.concentration) {
+        specificationV += ypForm.value.concentration + ' '
+        specification2V = specificationV
+    }
+    if (ypForm.value.weight) {
+        specificationV += ypForm.value.weight + (wUnit == undefined ? '' : wUnit.label) + ' '
+        specification2V = specificationV
+    }
+    if (ypForm.value.volum) {
+        specificationV += ypForm.value.volum + (vUnit == undefined ? '' : vUnit.label) + ' '
+        specification2V = specificationV
+    }
+    if (ypForm.value.packSize) {
+        if (ypForm.value.packSize == 1) {
+            specificationV += '/' + mUnit.label
+        } else if (mUnit.label != pUnit.label) {
+            specificationV += '×' + ypForm.value.packSize + mUnit.label + '/' + pUnit.label
+        } else {
+            specificationV += '/' + mUnit.label
+        }
+        specification2V += '/' + mUnit.label
+    }
+    ypForm.value.specification = specificationV
+    ypForm.value.specification2 = specification2V
+}
+
+// 拆零价随零售价
+const retpriceFormat = () => {
+    ypForm.value.retprice = ypForm.value.packRetprice
+
+}
+
+// 药品限价随购入价
+const ybxjPriceFormat = () => {
+    ypForm.value.ybxjPrice = ypForm.value.buyPrice
+}
+
+// ---------- 保存字典信息 ------------
+const submitForm = async (formEl) => {
+    if (!formEl) return
+
+    await formEl.validate((valid, fields) => {
+        if (valid) {
+            ElMessageBox.confirm('请确认是否保存药品账页字典信息?', {
+                cancelButtonText: '取消',
+                confirmButtonText: '确定',
+                type: 'warning',
+                distinguishCancelAndClose: true,
+            }).then(() => {
+                saveYpDict(ypForm.value).then((res) => {
+                    emit('closeYpEditFor', {})
+                    ElMessage({
+                        type: "success",
+                        message: res.cg,
+                        duration: 2500,
+                        showClose: true,
+                    });
+                    return
+                })
+            }).catch((action) => {
+                if (action === 'cancel') {
+                    emit('closeYpEditFor', {})
+                }
+            })
+        } else {
+            ElMessage({
+                type: "info",
+                message: '药品字典必填信息不全,请确认!',
+                duration: 2500,
+                showClose: true,
+            });
+            return
+        }
+    })
+
+}
 
 </script>