瀏覽代碼

优化草药创建模板的弹窗,优化取模板的弹窗

xiaochan 8 月之前
父節點
當前提交
c59fc0763a

+ 341 - 212
src/components/med-tec-mod/YiJiXiangMuLuRu.vue

@@ -1,87 +1,153 @@
 <template>
   <div class="layout_display_flex">
     <div style="width: 195px">
-      <HuoQuMuBan
-          ref="muBanRef"
-          @selectionFeiYong="xuanZeXiangMuTable"/>
+      <HuoQuMuBan ref="muBanRef" @selectionFeiYong="xuanZeXiangMuTable" />
     </div>
     <div class="layout_flex_1-x layout_display_flex_y">
       <div>
-        <el-button icon="Document" type="warning" @click="baoCunMuBanDialog = true">存模板</el-button>
-        <el-button icon="Upload" type="primary" @click="shangChuanXiangMu">保存</el-button>
-        <el-button icon="Plus" type="success" @click="xinZhengXiangMuDialog = true">新增</el-button>
-        <el-select v-model="zhiXingKeShi" filterable style="width: 120px; margin: 0px 10px 0px 10px">
-          <el-option v-for="item in deptData" :key="item.code" :label="item.name" :value="item.code">
+        <el-button
+          icon="Document"
+          type="warning"
+          @click="baoCunMuBanDialog = true"
+          >存模板</el-button
+        >
+        <el-button icon="Upload" type="primary" @click="shangChuanXiangMu"
+          >保存</el-button
+        >
+        <el-button
+          icon="Plus"
+          type="success"
+          @click="xinZhengXiangMuDialog = true"
+          >新增</el-button
+        >
+        <el-select
+          v-model="zhiXingKeShi"
+          filterable
+          style="width: 120px; margin: 0px 10px 0px 10px"
+        >
+          <el-option
+            v-for="item in deptData"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          >
             <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
             <el-divider direction="vertical"></el-divider>
             <span>{{ item.name }}</span></el-option
           >
         </el-select>
-        <el-button icon="Edit" type="warning" @click="xieGaiZhiXingKeShi">修改执行科室</el-button>
+        <el-button icon="Edit" type="warning" @click="xieGaiZhiXingKeShi"
+          >修改执行科室</el-button
+        >
         病区:
-        <el-select v-model="queryWard" filterable style="width: 120px" @change="getBingQuDuiYingKeShiChange">
-          <el-option v-for="item in wardData" :key="item.code" :label="item.name" :value="item.code">
+        <el-select
+          v-model="queryWard"
+          filterable
+          style="width: 120px"
+          @change="getBingQuDuiYingKeShiChange"
+        >
+          <el-option
+            v-for="item in wardData"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          >
             <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
             <el-divider direction="vertical"></el-divider>
-            <span>{{ item.name }}</span></el-option>
+            <span>{{ item.name }}</span></el-option
+          >
         </el-select>
         小科室:
         <el-select v-model="queryDept" filterable style="width: 120px">
-          <el-option v-for="item in xiaoKeShiList"
-                     :key="item.code" :label="item.name" :value="item.code">
+          <el-option
+            v-for="item in xiaoKeShiList"
+            :key="item.code"
+            :label="item.name"
+            :value="item.code"
+          >
             <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
             <el-divider direction="vertical"></el-divider>
-            <span>{{ item.name }}</span></el-option>
+            <span>{{ item.name }}</span></el-option
+          >
         </el-select>
         手术编码:
         <el-input
-            v-model="ssCode"
-            @blur="ssCode = ssCode.trim()"
-            clearable
-            placeholder="请输入手术编码"
-            style="width: 120px"/>
+          v-model="ssCode"
+          @blur="ssCode = ssCode.trim()"
+          clearable
+          placeholder="请输入手术编码"
+          style="width: 120px"
+        />
         <el-tag type="danger"> 项目总价:{{ xiangMuZongJia }}</el-tag>
       </div>
       <div class="layout_flex_1-y">
-        <el-table :data="saveData"
-                  height="100%"
-                  highlight-current-row
-                  stripe
-                  style="margin-top: 10px">
+        <el-table
+          :data="saveData"
+          height="100%"
+          highlight-current-row
+          stripe
+          style="margin-top: 10px"
+        >
           <el-table-column label="录入信息">
             <el-table-column label="是否自费" width="130">
               <template #default="scope">
                 <el-switch
-                    v-model="scope.row.ybSelfFlag"
-                    :active-value="1"
-                    :inactive-value="0"
-                    active-color="#ff4949"
-                    active-text="自费"
-                    inactive-color="#13ce66"
-                    inactive-text="医保"
+                  v-model="scope.row.ybSelfFlag"
+                  :active-value="1"
+                  :inactive-value="0"
+                  active-color="#ff4949"
+                  active-text="自费"
+                  inactive-color="#13ce66"
+                  inactive-text="医保"
                 ></el-switch>
               </template>
             </el-table-column>
             <el-table-column label="医生" width="70px">
               <template #default="scope">
-                <el-select v-model="scope.row.doctorCode" :remote-method="remoteMethodRenYuan" clearable filterable
-                           remote
-                           style="width: 100px">
-                  <el-option v-for="item in renYuanList" :key="item.code" :label="item.name" :value="item.code">
-                    <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-select
+                  v-model="scope.row.doctorCode"
+                  :remote-method="remoteMethodRenYuan"
+                  clearable
+                  filterable
+                  remote
+                  style="width: 100px"
+                >
+                  <el-option
+                    v-for="item in renYuanList"
+                    :key="item.code"
+                    :label="item.name"
+                    :value="item.code"
+                  >
+                    <span style="color: #8492a6; font-size: 12px">{{
+                      item.code
+                    }}</span>
                     <el-divider direction="vertical"></el-divider>
                     <span>{{ item.name }}</span>
                   </el-option>
                 </el-select>
               </template>
             </el-table-column>
-            <el-table-column label="项目编码" prop="chargeCodeMx"></el-table-column>
+            <el-table-column
+              label="项目编码"
+              prop="chargeCodeMx"
+            ></el-table-column>
             <el-table-column label="名称" prop="chargeName"></el-table-column>
             <el-table-column label="执行科室" prop="deptCode">
               <template #default="scope">
-                <el-select v-model="scope.row.deptCode" filterable style="width: 90%">
-                  <el-option v-for="item in deptData" :key="item.code" :label="item.name" :value="item.code">
-                    <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-select
+                  v-model="scope.row.deptCode"
+                  filterable
+                  style="width: 90%"
+                >
+                  <el-option
+                    v-for="item in deptData"
+                    :key="item.code"
+                    :label="item.name"
+                    :value="item.code"
+                  >
+                    <span style="color: #8492a6; font-size: 12px">{{
+                      item.code
+                    }}</span>
                     <el-divider direction="vertical"></el-divider>
                     <span>{{ item.name }}</span>
                   </el-option>
@@ -91,9 +157,12 @@
             <el-table-column label="单价" prop="chargeAmount"></el-table-column>
             <el-table-column label="数量" prop="amount" width="130">
               <template #default="scope">
-                <el-input-number v-model="scope.row.amount" :min="0"
-                                 :precision="scope.row.serial === '00' ? 2 : 3"
-                                 style="width: 120px"/>
+                <el-input-number
+                  v-model="scope.row.amount"
+                  :min="0"
+                  :precision="scope.row.serial === '00' ? 2 : 3"
+                  style="width: 120px"
+                />
               </template>
             </el-table-column>
           </el-table-column>
@@ -105,7 +174,11 @@
           <el-table-column label="账单码" prop="billItemName"></el-table-column>
           <el-table-column label="操作">
             <template #default="scope">
-              <el-button type="danger" @click="shanChuXiangMuClick(scope.$index)">删除</el-button>
+              <el-button
+                type="danger"
+                @click="shanChuXiangMuClick(scope.$index)"
+                >删除</el-button
+              >
             </template>
           </el-table-column>
         </el-table>
@@ -115,33 +188,40 @@
 
   <el-dialog v-model="xinZhengXiangMuDialog" :width="1500" title="新增">
     搜索:
-    <el-input v-model="chargeCodePy" style="width: 140px" @keyup.enter="rmChargePyCode"></el-input>
+    <el-input
+      v-model="chargeCodePy"
+      style="width: 140px"
+      @keyup.enter="rmChargePyCode"
+    ></el-input>
     <el-divider direction="vertical"></el-divider>
     <el-button type="primary" @click="rmChargePyCode">查询</el-button>
     <el-divider direction="vertical"></el-divider>
     <el-switch
-        v-model="xiangMuHuoYaoPinFlag"
-        @change="clearXiangMuHuoYaoPinShuJu"
-        :active-value="1"
-        :inactive-value="0"
-        active-color="#409EFF"
-        active-text="药品"
-        inactive-color="#13ce66"
-        inactive-text="项目"
+      v-model="xiangMuHuoYaoPinFlag"
+      @change="clearXiangMuHuoYaoPinShuJu"
+      :active-value="1"
+      :inactive-value="0"
+      active-color="#409EFF"
+      active-text="药品"
+      inactive-color="#13ce66"
+      inactive-text="项目"
     ></el-switch>
     <el-divider direction="vertical"></el-divider>
     <el-table
-        :data="
-          xiangMuHuoYaoPinShuJu.data.slice(
-            (xiangMuHuoYaoPinShuJu.currentPage - 1) * xiangMuHuoYaoPinShuJu.pageSize,
-            xiangMuHuoYaoPinShuJu.currentPage * xiangMuHuoYaoPinShuJu.pageSize
-          )
-        "
-        :height="tableHeight / 1.2"
+      :data="
+        xiangMuHuoYaoPinShuJu.data.slice(
+          (xiangMuHuoYaoPinShuJu.currentPage - 1) *
+            xiangMuHuoYaoPinShuJu.pageSize,
+          xiangMuHuoYaoPinShuJu.currentPage * xiangMuHuoYaoPinShuJu.pageSize
+        )
+      "
+      :height="tableHeight / 1.2"
     >
       <el-table-column label="操作" width="40">
         <template #default="scope">
-          <el-button text @click="danGeXiangMuBaoCun(scope.row)" type="primary">添加</el-button>
+          <el-button text @click="danGeXiangMuBaoCun(scope.row)" type="primary"
+            >添加</el-button
+          >
         </template>
       </el-table-column>
       <el-table-column label="项目编码" prop="chargeCodeMx"></el-table-column>
@@ -150,27 +230,39 @@
       <el-table-column label="国家编码" prop="nationalCode"></el-table-column>
       <el-table-column label="国家名称" prop="nationalName"></el-table-column>
       <el-table-column label="单位" prop="spec"></el-table-column>
-      <el-table-column label="执行科室" prop="execUnitName"/>
+      <el-table-column label="执行科室" prop="execUnitName" />
       <el-table-column label="单价" prop="chargeAmount"></el-table-column>
-      <el-table-column label="数量" prop="amount"/>
+      <el-table-column label="数量" prop="amount" />
       <el-table-column label="金额">
         <template #default="scope">
           {{ (scope.row.chargeAmount * scope.row.amount).toFixed(2) }}
         </template>
       </el-table-column>
       <el-table-column label="账单码" prop="billItemName"></el-table-column>
-      <el-table-column label="规格" prop="descriptions" show-overflow-tooltip></el-table-column>
-      <el-table-column v-if="xiangMuHuoYaoPinFlag === 1" label="库存" prop="stockAmount"></el-table-column>
-      <el-table-column v-if="xiangMuHuoYaoPinFlag === 1" label="医保类型" prop="yblx"></el-table-column>
+      <el-table-column
+        label="规格"
+        prop="descriptions"
+        show-overflow-tooltip
+      ></el-table-column>
+      <el-table-column
+        v-if="xiangMuHuoYaoPinFlag === 1"
+        label="库存"
+        prop="stockAmount"
+      ></el-table-column>
+      <el-table-column
+        v-if="xiangMuHuoYaoPinFlag === 1"
+        label="医保类型"
+        prop="yblx"
+      ></el-table-column>
     </el-table>
     <el-pagination
-        :current-page="xiangMuHuoYaoPinShuJu.currentPage"
-        :page-size="xiangMuHuoYaoPinShuJu.pageSize"
-        :total="xiangMuHuoYaoPinShuJu.data.length"
-        background
-        layout="total, sizes, prev, pager, next, jumper"
-        @size-change="xinZhengSizeChange"
-        @current-change="xinZhengCurrentChange"
+      :current-page="xiangMuHuoYaoPinShuJu.currentPage"
+      :page-size="xiangMuHuoYaoPinShuJu.pageSize"
+      :total="xiangMuHuoYaoPinShuJu.data.length"
+      background
+      layout="total, sizes, prev, pager, next, jumper"
+      @size-change="xinZhengSizeChange"
+      @current-change="xinZhengCurrentChange"
     >
     </el-pagination>
   </el-dialog>
@@ -178,25 +270,44 @@
     <el-row>
       <el-col :span="24">
         模板名称:
-        <el-input v-model="cunMuBanPojo.name" maxlength="15" show-word-limit @blur="zhuanPinYin"></el-input>
+        <el-input
+          v-model="cunMuBanPojo.name"
+          maxlength="15"
+          show-word-limit
+          @blur="zhuanPinYin"
+        ></el-input>
       </el-col>
       <el-col :span="12">
         拼音码:
-        <el-input v-model="cunMuBanPojo.pyCode" maxlength="8" show-word-limit></el-input>
+        <el-input
+          v-model="cunMuBanPojo.pyCode"
+          maxlength="8"
+          show-word-limit
+        ></el-input>
       </el-col>
       <el-col :span="12">
         五笔码:
-        <el-input v-model="cunMuBanPojo.dcode" maxlength="8" show-word-limit></el-input>
+        <el-input
+          v-model="cunMuBanPojo.dcode"
+          maxlength="8"
+          show-word-limit
+        ></el-input>
       </el-col>
       <el-col :span="12">
-        <el-button icon="Upload" style="margin-top: 10px" type="primary" @click="baoCunMuBan">保存</el-button>
+        <el-button
+          icon="Upload"
+          style="margin-top: 10px"
+          type="primary"
+          @click="baoCunMuBan"
+          >保存</el-button
+        >
       </el-col>
     </el-row>
   </el-dialog>
 </template>
 
 <script setup lang="ts">
-import {computed, onMounted, ref, watch} from 'vue'
+import { computed, onMounted, ref, watch } from "vue";
 import {
   getBingQuDuiYingKeShi,
   getDept,
@@ -204,15 +315,15 @@ import {
   getWard,
   queryDanGeXiangMu,
   shangChuanMuBan,
-  xiangMuFeiYongShangChuan
-} from '@/api/inpatient/xiang-mu-lu-ru'
-import {getRenYuan} from '@/api/public-api'
-import {ElMessage, ElMessageBox} from 'element-plus'
-import {clone} from '@/utils/clone'
-import HuoQuMuBan from './HuoQuMuBan.vue'
-import {stringIsBlank, stringNotBlank} from "@/utils/blank-utils";
-import {BizException, ExceptionEnum} from "@/utils/BizException";
-import {useUserStore} from "@/pinia/user-store";
+  xiangMuFeiYongShangChuan,
+} from "@/api/inpatient/xiang-mu-lu-ru";
+import { getRenYuan } from "@/api/public-api";
+import { ElMessage, ElMessageBox } from "element-plus";
+import { clone } from "@/utils/clone";
+import HuoQuMuBan from "./HuoQuMuBan.vue";
+import { stringIsBlank, stringNotBlank } from "@/utils/blank-utils";
+import { BizException, ExceptionEnum } from "@/utils/BizException";
+import { useUserStore } from "@/pinia/user-store";
 import cyRefList from "@/utils/cyRefList";
 import Dig from "@/utils/math";
 import XEUtils from "xe-utils";
@@ -224,58 +335,68 @@ const props = defineProps<{
     admissTimes: number;
     zySerialNo: string;
     referPhysician: string;
-    ledgerSn: number
-  }
-}>()
+    ledgerSn: number;
+  };
+}>();
 
-const emits = defineEmits(['theUploadIsSuccessful'])
+const emits = defineEmits(["theUploadIsSuccessful"]);
 
-const userStore = useUserStore().userInfo
-const tableHeight = window.innerHeight - 170
-const deptData = ref([])
-const wardData = ref([])
-const muBanRef = useCompRef(HuoQuMuBan)
+const userStore = useUserStore().userInfo;
+const tableHeight = window.innerHeight - 170;
+const deptData = ref([]);
+const wardData = ref([]);
+const muBanRef = useCompRef(HuoQuMuBan);
 
 // 手术编码
-const ssCode = ref('')
-const queryDept = ref('')
-const queryWard = ref('')
+const ssCode = ref("");
+const queryDept = ref("");
+const queryWard = ref("");
 
-const xiaoKeShiList = ref([])
+const xiaoKeShiList = ref([]);
 
 declare type ChargeCodeType = {
   chargeCodeMx: string;
   serial: string;
-  chargeName: string
+  chargeName: string;
   deptCode: string;
-  chargeAmount: number
-  amount: number
-}
-
-const [saveData, saveProxy] = cyRefList<ChargeCodeType>((item) => {
-  return item.chargeCodeMx.trim() + "_" + item.serial.trim();
-}, (item) => {
-  return `项目【${item.chargeName}】请勿重复添加`
-});
+  chargeAmount: number;
+  amount: number;
+};
+
+const [saveData, saveProxy] = cyRefList<ChargeCodeType>(
+  item => {
+    return item.chargeCodeMx.trim() + "_" + item.serial.trim();
+  },
+  item => {
+    return `项目【${item.chargeName}】请勿重复添加`;
+  }
+);
 
 // 获取选择的数据
-const xuanZeXiangMuTable = (value) => {
+const xuanZeXiangMuTable = value => {
   for (let i = 0; i < value.length; i++) {
     const item = value[i];
     item.deptCode = userStore.deptCode;
   }
-  saveProxy.push(...value)
-}
+  saveProxy.push(...value);
+};
 
-const chargeCode = ref([])
+const chargeCode = ref([]);
 
 const shangChuanXiangMu = () => {
   if (operationRoom() && stringIsBlank(ssCode.value)) {
     BizException(ExceptionEnum.LOGICAL_ERROR, "请填写手术编码。");
   }
 
-  if (operationRoom() && stringNotBlank(ssCode.value) && !XEUtils.isStringNumber(ssCode.value)) {
-    BizException(ExceptionEnum.LOGICAL_ERROR, "手术编码必须纯数字且中间不得有空格。");
+  if (
+    operationRoom() &&
+    stringNotBlank(ssCode.value) &&
+    !XEUtils.isStringNumber(ssCode.value)
+  ) {
+    BizException(
+      ExceptionEnum.LOGICAL_ERROR,
+      "手术编码必须纯数字且中间不得有空格。"
+    );
   }
 
   if (stringIsBlank(props.patient.inpatientNo)) {
@@ -301,173 +422,181 @@ const shangChuanXiangMu = () => {
   };
 
   //在此处上传
-  ElMessageBox.confirm('共上传【' + saveData.value.length + '】条', '请认真核对', {
-    cancelButtonText: '取消',
-    confirmButtonText: '确定',
-  })
-      .then(() => {
-        xiangMuFeiYongShangChuan(shangChuanFeiYong).then(() => {
-          saveData.value = []
-          chargeCode.value = []
-          emits('theUploadIsSuccessful')
-        })
-      })
-      .catch(() => {
-      })
-}
+  ElMessageBox.confirm(
+    "共上传【" + saveData.value.length + "】条",
+    "请认真核对",
+    {
+      cancelButtonText: "取消",
+      confirmButtonText: "确定",
+    }
+  )
+    .then(() => {
+      xiangMuFeiYongShangChuan(shangChuanFeiYong).then(() => {
+        saveData.value = [];
+        chargeCode.value = [];
+        emits("theUploadIsSuccessful");
+      });
+    })
+    .catch(() => {});
+};
 
-const shanChuXiangMuClick = (val) => {
-  saveProxy.delIndex(val)
-}
+const shanChuXiangMuClick = val => {
+  saveProxy.delIndex(val);
+};
 // 新增项目或者药品
-const xinZhengXiangMuDialog = ref(false)
+const xinZhengXiangMuDialog = ref(false);
 // 判断查询药品还是项目
-const xiangMuHuoYaoPinFlag = ref(0)
+const xiangMuHuoYaoPinFlag = ref(0);
 // 这个是远程查询数据后 保存
 const xiangMuHuoYaoPinShuJu = ref({
   currentPage: 1,
   pageSize: 20,
   data: [],
-})
+});
 // 远程查询的
-const chargeCodePy = ref('')
+const chargeCodePy = ref("");
 
 /**
  * 远程搜索
  */
 const rmChargePyCode = () => {
   if (chargeCodePy.value.length >= 2) {
-    queryDanGeXiangMu(chargeCodePy.value, xiangMuHuoYaoPinFlag.value).then((res) => {
-      xiangMuHuoYaoPinShuJu.value.data = res
-    })
+    queryDanGeXiangMu(chargeCodePy.value, xiangMuHuoYaoPinFlag.value).then(
+      res => {
+        xiangMuHuoYaoPinShuJu.value.data = res;
+      }
+    );
   }
-}
+};
 
 const danGeXiangMuBaoCun = (val: ChargeCodeType) => {
   if (stringIsBlank(val.deptCode)) {
-    val.deptCode = userStore.deptCode
+    val.deptCode = userStore.deptCode;
   }
   saveProxy.push(val);
-}
+};
 
 const xiangMuZongJia = computed(() => {
-  let sum = 0
+  let sum = 0;
 
-  saveData.value.forEach((item) => {
-    sum += Dig.multiply(item.chargeAmount, item.amount)
-  })
+  saveData.value.forEach(item => {
+    sum += Dig.multiply(item.chargeAmount, item.amount);
+  });
 
-  return XEUtils.toFixed(sum, 2)
-})
+  return XEUtils.toFixed(sum, 2);
+});
 
 // 以下是保存模板
-const baoCunMuBanDialog = ref(false)
+const baoCunMuBanDialog = ref(false);
 
 const cunMuBanPojo = ref({
-  pyCode: '',
-  dcode: '',
-  name: '',
-  paiXu: '',
-  dept: '',
+  pyCode: "",
+  dcode: "",
+  name: "",
+  paiXu: "",
+  dept: "",
   deptCode: userStore.deptCode,
   list: [],
-})
+});
 
 // 获取到保存模板的拼音码和五笔码
 const zhuanPinYin = () => {
-  if (cunMuBanPojo.value.name !== '') {
-    getPyCode(cunMuBanPojo.value.name).then((res) => {
-      cunMuBanPojo.value.pyCode = res.pyCode
-      cunMuBanPojo.value.dcode = res.wbCode
-    })
+  if (cunMuBanPojo.value.name !== "") {
+    getPyCode(cunMuBanPojo.value.name).then(res => {
+      cunMuBanPojo.value.pyCode = res.pyCode;
+      cunMuBanPojo.value.dcode = res.wbCode;
+    });
   }
-}
+};
 
 const baoCunMuBan = () => {
   if (saveData.value.length === 0) {
     ElMessage.error({
-      message: '请先选择项目',
+      message: "请先选择项目",
       showClose: true,
-    })
-    return
+    });
+    return;
   }
-  if (cunMuBanPojo.value.name === '' || cunMuBanPojo.value.pyCode === '' || cunMuBanPojo.value.dcode === '') {
+  if (
+    cunMuBanPojo.value.name === "" ||
+    cunMuBanPojo.value.pyCode === "" ||
+    cunMuBanPojo.value.dcode === ""
+  ) {
     ElMessage.error({
-      message: '模板名称,拼音码,五笔码不能为空',
+      message: "模板名称,拼音码,五笔码不能为空",
       showClose: true,
-    })
-    return
+    });
+    return;
   }
-  cunMuBanPojo.value.list = clone(saveData.value)
+  cunMuBanPojo.value.list = clone(saveData.value);
   // 开始上传
   shangChuanMuBan(cunMuBanPojo.value).then(() => {
-    cunMuBanPojo.value = {}
-    muBanRef.value?.reloadData()
-  })
-}
+    cunMuBanPojo.value = {};
+    muBanRef.value?.reloadData();
+  });
+};
 
 // 根据病人的科室来获取
 const getBingQuDuiYingKeShiChange = () => {
-  getBingQuDuiYingKeShi(queryWard.value).then((res) => {
-    xiaoKeShiList.value = res
-  })
-}
-const zhiXingKeShi = ref(userStore.deptCode)
+  getBingQuDuiYingKeShi(queryWard.value).then(res => {
+    xiaoKeShiList.value = res;
+  });
+};
+const zhiXingKeShi = ref(userStore.deptCode);
 
 const xieGaiZhiXingKeShi = () => {
   for (let i = 0; i < saveData.value.length; i++) {
-    saveData.value[i].deptCode = zhiXingKeShi.value
+    saveData.value[i].deptCode = zhiXingKeShi.value;
   }
-}
+};
 
 // 新增中的分页 事件
-const xinZhengSizeChange = (val) => {
-  xiangMuHuoYaoPinShuJu.value.pageSize = val
-}
+const xinZhengSizeChange = val => {
+  xiangMuHuoYaoPinShuJu.value.pageSize = val;
+};
 
-const xinZhengCurrentChange = (val) => {
-  xiangMuHuoYaoPinShuJu.value.currentPage = val
-}
+const xinZhengCurrentChange = val => {
+  xiangMuHuoYaoPinShuJu.value.currentPage = val;
+};
 
 const clearXiangMuHuoYaoPinShuJu = () => {
-  xiangMuHuoYaoPinShuJu.value.data = []
-}
+  xiangMuHuoYaoPinShuJu.value.data = [];
+};
 
-const renYuanList = ref([])
+const renYuanList = ref([]);
 
 // 搜索 医生工号
-const remoteMethodRenYuan = (val) => {
+const remoteMethodRenYuan = val => {
   if (val.length >= 2)
-    getRenYuan(val).then((res) => {
-      renYuanList.value = res
-    })
-}
+    getRenYuan(val).then(res => {
+      renYuanList.value = res;
+    });
+};
 
 function operationRoom() {
-  let dept = userStore.deptCode
-  return dept === '1300000'
+  let dept = userStore.deptCode;
+  return dept === "1300000";
 }
 
 const updateDeptAndWard = async (ward, dept) => {
-  queryWard.value = ward
-  await getBingQuDuiYingKeShiChange()
-  queryDept.value = dept
-}
+  queryWard.value = ward;
+  await getBingQuDuiYingKeShiChange();
+  queryDept.value = dept;
+};
 
 onMounted(() => {
   // 获取科室
-  getDept().then((res) => {
-    deptData.value = res
-  })
-  getWard().then((res) => {
-    wardData.value = res
-  })
-})
+  getDept().then(res => {
+    deptData.value = res;
+  });
+  getWard().then(res => {
+    wardData.value = res;
+  });
+});
 
 defineExpose({
-  updateDeptAndWard
-})
-
+  updateDeptAndWard,
+});
 </script>
 
 <style></style>

+ 71 - 68
src/components/zhu-yuan-yi-sheng/cao-yao-yi-zhu/CaoYaoMuBan.vue

@@ -1,71 +1,64 @@
 <template>
-  <CyDialog
-    title="模板"
-    body-height="500px"
-    body-width="50%"
-    :confirm-click="handelConfirmClick"
-  >
-    <div class="layout_container layout-horizontal">
-      <aside style="width: 190px" class="layout_container layout_el-table">
-        <div>
-          <el-input
-            v-model="queryName"
-            placeholder="模板名称"
-            style="width: 120px"
-          ></el-input>
-          <el-button @click="dianJiaChaXunMuBan(0)">查询</el-button>
-        </div>
-        <el-table
-          :data="muBanShuJu.muBan"
-          @row-click="dianJiChaKanMuBanXiangQing"
-        >
-          <el-table-column label="名称" prop="patternName" />
-          <el-table-column label="操作">
-            <template #default="scope">
-              <el-button
-                circle
-                icon="Delete"
-                type="danger"
-                @click="dianJiShanChuMuBan(scope.row, scope.$index)"
-              ></el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-pagination
-          :pager-count="5"
-          small
-          :total="muBanShuJu.total"
-          layout="prev, pager, next"
-          :current-page="muBanShuJu.currentPage"
-          :page-size="muBanShuJu.pageSize"
-          @current-change="handleCurrentChange"
-        />
-      </aside>
-      <div class="layout_main layout_el-table">
-        <el-table
-          :data="muBanShuJu.muBanXiangQing"
-          @selection-change="huoQuMuBanXuanZhongShuJu"
-        >
-          <el-table-column type="selection"></el-table-column>
-          <el-table-column label="编码" prop="chargeCode"></el-table-column>
-          <el-table-column label="名称" prop="chargeCodeName"></el-table-column>
-          <el-table-column label="规格" prop="specification"></el-table-column>
-          <el-table-column label="数量" prop="quantity"></el-table-column>
-          <el-table-column label="单价" prop="retprice"></el-table-column>
-          <el-table-column label="药房" prop="groupNo"></el-table-column>
-          <el-table-column label="包装大小" prop="serial">
-            <template #default="scope">
-              <span v-if="scope.row.serial === '01'">小包装</span>
-              <span v-else-if="scope.row.serial === '99'">大包装</span>
-            </template>
-          </el-table-column>
-        </el-table>
+  <div class="layout_container layout-horizontal" style="height: 60vh">
+    <aside style="width: 190px" class="layout_container layout_el-table">
+      <div>
+        <el-input
+          v-model="queryName"
+          placeholder="模板名称"
+          style="width: 120px"
+        ></el-input>
+        <el-button @click="dianJiaChaXunMuBan(0)">查询</el-button>
       </div>
+      <el-table
+        :data="muBanShuJu.muBan"
+        @row-click="dianJiChaKanMuBanXiangQing"
+      >
+        <el-table-column label="名称" prop="patternName" />
+        <el-table-column label="操作">
+          <template #default="scope">
+            <el-button
+              circle
+              icon="Delete"
+              type="danger"
+              @click="dianJiShanChuMuBan(scope.row, scope.$index)"
+            ></el-button>
+          </template>
+        </el-table-column>
+      </el-table>
+      <el-pagination
+        :pager-count="5"
+        small
+        :total="muBanShuJu.total"
+        layout="prev, pager, next"
+        :current-page="muBanShuJu.currentPage"
+        :page-size="muBanShuJu.pageSize"
+        @current-change="handleCurrentChange"
+      />
+    </aside>
+    <div class="layout_main layout_el-table">
+      <el-table
+        :data="muBanShuJu.muBanXiangQing"
+        @selection-change="huoQuMuBanXuanZhongShuJu"
+      >
+        <el-table-column type="selection"></el-table-column>
+        <el-table-column label="编码" prop="chargeCode"></el-table-column>
+        <el-table-column label="名称" prop="chargeCodeName"></el-table-column>
+        <el-table-column label="规格" prop="specification"></el-table-column>
+        <el-table-column label="数量" prop="quantity"></el-table-column>
+        <el-table-column label="单价" prop="retprice"></el-table-column>
+        <el-table-column label="药房" prop="groupNo"></el-table-column>
+        <el-table-column label="包装大小" prop="serial">
+          <template #default="scope">
+            <span v-if="scope.row.serial === '01'">小包装</span>
+            <span v-else-if="scope.row.serial === '99'">大包装</span>
+          </template>
+        </el-table-column>
+      </el-table>
     </div>
-  </CyDialog>
+  </div>
 </template>
 
-<script setup>
+<script setup lang="ts">
 import { onMounted, ref } from "vue";
 import {
   huoQuMuBan,
@@ -74,9 +67,12 @@ import {
 } from "@/api/zhu-yuan-yi-sheng/cao-yao-yi-zhu";
 import { ElMessageBox } from "element-plus";
 import { useUserStore } from "@/pinia/user-store";
-import CyDialog from "@/components/cy/dialog/src/CyDialog.vue";
+import { BizException, ExceptionEnum } from "@/utils/BizException";
+
+const props = defineProps<{
+  groupNo: string;
+}>();
 
-const emits = defineEmits(["close", "xuanZhongShuJu"]);
 const userStore = useUserStore().userInfo;
 
 const queryName = ref("");
@@ -135,9 +131,16 @@ const huoQuMuBanXuanZhongShuJu = val => {
   muBanShuJu.value.xuanZhongShuJu = val;
 };
 
-function handelConfirmClick(next) {
-  emits("xuanZhongShuJu", muBanShuJu.value.xuanZhongShuJu, next);
-}
+defineExpose({
+  confirm() {
+    for (let item of muBanShuJu.value.xuanZhongShuJu) {
+      if (item.groupNo !== props.groupNo) {
+        BizException(ExceptionEnum.MESSAGE_ERROR, "模板药房和当前药房不相同");
+      }
+    }
+    return muBanShuJu.value.xuanZhongShuJu;
+  },
+});
 
 onMounted(() => {
   dianJiaChaXunMuBan(0);

+ 26 - 23
src/views/hospitalization/zhu-yuan-yi-sheng/cao-yao-yi-zhu/XinZhengCaoYao.vue

@@ -6,7 +6,7 @@
         <el-button
           :disabled="mingXi.list.length === 0"
           type="success"
-          @click="cunMuBan.dialog = true"
+          @click="saveCaoYaoTemplate()"
           >存模板
         </el-button>
         <el-divider direction="vertical"></el-divider>
@@ -218,17 +218,6 @@
     @close="muBanZuJian = false"
     @xuanZhongShuJu="dianJiXuanZhongMuBanShuJu"
   ></cao-yao-mu-ban>
-  <!-- 下面是新增模板 -->
-  <el-dialog v-model="cunMuBan.dialog" center title="存模板">
-    模板名称:
-    <el-input
-      v-model="cunMuBan.patternName"
-      clearable
-      maxlength="30"
-      show-word-limit
-      @keyup.enter="dianJiCunMuBan"
-    ></el-input>
-  </el-dialog>
 </template>
 
 <script setup>
@@ -259,6 +248,7 @@ import { useUserStore } from "@/pinia/user-store";
 import useDialogToJs from "@/components/js-dialog-comp/useDialogToJs";
 import SystemDeptSelect from "@/components/system/dept-select/SystemDeptSelect.vue";
 import XEUtils from "xe-utils";
+import { useDialog } from "@/components/cy/CyDialog/index";
 
 const props = defineProps({
   saveSuccess: Function,
@@ -407,14 +397,8 @@ watch(
  */
 const muBanZuJian = ref(false);
 
-const dianJiXuanZhongMuBanShuJu = (data, next) => {
+const dianJiXuanZhongMuBanShuJu = data => {
   let flag = false;
-  for (let item of data) {
-    if (item.groupNo !== chuFang.value.groupNo) {
-      ElMessage.error("模板药房和当前药房不相同");
-      return;
-    }
-  }
   data.forEach(item => {
     let key = item.chargeCode + item.serial;
     if (mingXi.value.weiYi.indexOf(key) > -1) {
@@ -426,7 +410,6 @@ const dianJiXuanZhongMuBanShuJu = (data, next) => {
       mingXi.value.weiYi.push(key);
     }
   });
-  next();
   if (flag) {
     ElMessage({
       showClose: true,
@@ -451,6 +434,7 @@ const dianJiCunMuBan = () => {
   if (stringIsBlank(val)) return;
   chongFuMuBanMing(val).then(res => {
     if (res) {
+      saveCaoYaoTemplate(val);
       return ElMessage.error("模板名重复。");
     } else {
       let data = {
@@ -459,7 +443,6 @@ const dianJiCunMuBan = () => {
         deptCode: userStore.userInfo.deptCode,
       };
       cunMuBanApi(data).then(() => {
-        cunMuBan.value.dialog = false;
         cunMuBan.value.patternName = "";
         wipeData();
       });
@@ -557,8 +540,28 @@ const clearHerbalInformation = () => {
 };
 
 function openCaoYaoTemplate() {
-  useDialogToJs(CaoYaoMuBan, {
-    onXuanZhongShuJu: dianJiXuanZhongMuBanShuJu,
+  useDialog(CaoYaoMuBan, {
+    dialogProps: {
+      title: "取模板",
+    },
+    params: {
+      onXuanZhongShuJu: dianJiXuanZhongMuBanShuJu,
+      groupNo: chuFang.value.groupNo,
+    },
+  }).then(res => {
+    dianJiXuanZhongMuBanShuJu(res);
+  });
+}
+
+function saveCaoYaoTemplate(val = "") {
+  ElMessageBox.prompt("请输入模板名称", "存模板", {
+    type: "info",
+    inputPattern: /\S/,
+    inputErrorMessage: "请输入模板名称",
+    inputValue: val,
+  }).then(({ value }) => {
+    cunMuBan.value.patternName = value;
+    dianJiCunMuBan();
   });
 }