Bladeren bron

优化代码

DESKTOP-MINPJAU\Administrator 3 jaren geleden
bovenliggende
commit
9120fc1f14

+ 8 - 0
src/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru.js

@@ -125,6 +125,14 @@ export function deleteADoctorSOrderTemplate(patternCode) {
     })
 }
 
+export function collectDoctorSOrderTemplate(patternCode) {
+    return request({
+        url: url + '/collectDoctorSOrderTemplate',
+        method: 'get',
+        params: {patternCode}
+    })
+}
+
 export function muBanCaoZuo(patternCode, patternName, deptCode, sortNo, flag) {
     return request({
         url: url + '/muBanCaoZuo',

+ 11 - 2
src/components/inpatient/XiangMuLuRu.vue

@@ -53,7 +53,7 @@
           <el-tab-pane label="已录入项目" name="ylrxm">
             项目名称:
             <el-select v-model="patient.chargeCode" :remote-method="remoteMethodChargeCode" clearable filterable remote
-                       @blur="patient.chargeCode = $event.target.value.trim()">
+                       @blur="patient.chargeCode = $event.target.value.trim()" @change="encodingIsChanged">
               <el-option v-for="item in chargeCodeNameData" :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>
@@ -452,12 +452,21 @@ const chaXunHuanZheXinXi = () => {
       })
 }
 
+const encodingIsChanged = () =>{
+  if (patient.value.chargeCode) {
+    dateRange.value = [];
+    patient.value.orderNo = 2;
+    patient.value.tuiFeiFlag = 3
+  }
+}
+
 const total = ref(0)
 /**
  * 查询
  */
 const queryFeiYong = () => {
-  let dateR = getDateRangeFormatDate(dateRange.value)
+
+  let dateR = getDateRangeFormatDate(dateRange.value);
   patient.value.startTime = dateR.startTime
   patient.value.endTime = dateR.endTime
   patient.value.riQiPaiXu = riQiPaiXu.value

+ 22 - 12
src/components/xc/xc-table/XcTable.vue

@@ -16,6 +16,7 @@
     <slot/>
   </el-table>
   <el-pagination
+      v-if="props.openPaging"
       :current-page="props.data.currentPage"
       :page-size="props.data.pageSize"
       :total="props.data.total"
@@ -29,6 +30,7 @@
 <script setup name='XcTable'>
 import store from "@/store";
 import {ElMessage} from "element-plus";
+import {BizException, ExceptionEnum} from "@/utils/BizException";
 
 const props = defineProps({
   data: {
@@ -72,7 +74,7 @@ const emit = defineEmits([
   'selectionChange'
 ])
 
-let tableRef = $ref(null)
+const tableRef = ref(null)
 
 const windowSize = computed(() => {
   return store.state.app.windowSize
@@ -83,7 +85,7 @@ const selectAll = (selection) => {
   flag = !flag
   if (!flag) {
     // 在点击了全不选中 需要清空
-    tableRef.clearSelection()
+    tableRef.value.clearSelection()
     return
   }
   let length = selection.length
@@ -98,7 +100,7 @@ const selectAll = (selection) => {
 const toggleSelection = (row, selected) => {
   if (row) {
     for (let i = 0, len = row.length; i < len; i++) {
-      tableRef.toggleRowSelection(row[i], selected)
+      tableRef.value.toggleRowSelection(row[i], selected)
     }
   }
 }
@@ -108,34 +110,42 @@ const selectionChange = (selection) => {
 }
 
 const rowClick = (row, column, event) => {
-  let data = tableRef.getSelectionRows()
+  let data = tableRef.value.getSelectionRows()
   if (row.children) {
     for (let i = 0, len = row.children.length; i < len; i++) {
-      tableRef.toggleRowSelection(row.children[i], !data.includes(row))
+      tableRef.value.toggleRowSelection(row.children[i], !data.includes(row))
     }
   }
-  tableRef.toggleRowSelection(row, !data.includes(row))
+  tableRef.value.toggleRowSelection(row, !data.includes(row))
   emit('rowClick', row, column, event);
 }
 
 const currentChange = (val) => {
   props.data.currentPage = val
-  emit('currentChange', props.data)
-  tableRef.setScrollTop(0)
+  emit('currentChange', val)
+  tableRef.value.setScrollTop(0)
 }
 
 const sizeChange = (val) => {
   props.data.pageSize = val
   props.data.currentPage = 1
-  emit('sizeChange', props.data)
-  tableRef.setScrollTop(0)
+  emit('sizeChange', val)
+  tableRef.value.setScrollTop(0)
 }
 
 const clearSelection = () => {
-  tableRef.clearSelection()
+  tableRef.value.clearSelection()
   ElMessage.success('清空成功。')
 }
 
+const getSelectionRows = () => {
+  let data = tableRef.value.getSelectionRows()
+  if (data.length > 0) {
+    return data;
+  }
+  BizException(ExceptionEnum.MESSAGE_ERROR, "请先选择数据")
+}
+
 /**
  * 查询条件赋值
  */
@@ -143,7 +153,7 @@ const queryConditionAssignment = () => {
 
 }
 
-defineExpose({clearSelection})
+defineExpose({clearSelection, getSelectionRows})
 
 </script>
 

+ 0 - 1
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianChaJianYan.vue

@@ -130,7 +130,6 @@ import {ElMessage, ElMessageBox} from 'element-plus'
 import {listNotBlank, stringNotBlank} from '@/utils/blank-utils'
 import BianJiJianChaShenQing
   from '@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/BianJiJianChaJianYanShenQing.vue'
-import {huanHangXianShi} from '@/utils/date'
 import {
   cuoWuXinXi,
   huanZheXinXi,

+ 34 - 41
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/BaoCunMuBan.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="dialog" :title="title">
+  <el-dialog v-model="dialog" title="保存模板">
     模板名称:
     <el-input v-model="patternName" maxlength="50" show-word-limit style="width: 220px"
               @keyup.enter="dianJiBaoCun"></el-input>
@@ -36,8 +36,8 @@ const user = computed(() => {
 const dialog = ref(false)
 const title = ref('')
 const flag = ref(1)
-const quanYuanFlag = noNeedRule(1, 38)
-const keZhuRenFlag = noNeedRule(1, 38, 11)
+const quanYuanFlag = noNeedRule(38)
+const keZhuRenFlag = noNeedRule(38, 11)
 // 模板名称
 const patternCode = ref('')
 const patternName = ref('')
@@ -50,51 +50,44 @@ const daKaiBaoCunMuBan = (val) => {
     patternName.value = muBanMing.value.patternName
     sortNo.value = muBanMing.value.sortNo
     inputType.value = muBanMing.value.inputType
+    patternCode.value = muBanMing.value.patternCode
   }
   list.value = val
   dialog.value = true
-  title.value = '保存模板'
-  flag.value = 1
-
 }
 
 const dianJiBaoCun = () => {
-  if (flag.value === 1) {
-    let data = {
-      patternName: patternName.value,
-      inputType: inputType.value,
-      sortNo: sortNo.value,
-      list: list.value,
-      deptCode: user.value.deptCode,
-      qingZhiTiHuan: stringNotBlank(muBanMing.value.patternName)
-    }
-    baoCunMuBan(data).then((res) => {
-      qingKong()
-    }).catch(e => {
-      if (e.indexOf('是否替换:【900】') > -1) {
-        ElMessageBox.confirm('已存在相同的模板名称,是否覆盖原来的数据。', '提示', {
-          type: 'warning'
-        }).then(() => {
-          let data = {
-            patternName: patternName.value,
-            inputType: inputType.value,
-            sortNo: sortNo.value,
-            list: list.value,
-            deptCode: user.value.deptCode,
-            qingZhiTiHuan: true
-          }
-          baoCunMuBan(data).then((res) => {
-            qingKong()
-          })
-        }).catch((action) => {
-        })
-      }
-    })
-  } else if (flag.value === 2) {
-    muBanCaoZuo(patternCode.value, patternName.value, user.value.deptCode, sortNo.value, 1).then((res) => {
-      qingKong()
-    })
+  let data = {
+    patternCode: patternCode.value,
+    patternName: patternName.value,
+    inputType: inputType.value,
+    sortNo: sortNo.value,
+    list: list.value,
+    deptCode: user.value.deptCode,
+    qingZhiTiHuan: !!muBanMing.value.patternCode
   }
+  baoCunMuBan(data).then((res) => {
+    qingKong()
+  }).catch(e => {
+    if (e.indexOf('是否替换:【900】') > -1) {
+      ElMessageBox.confirm('是否覆盖原来的数据。', '提示', {
+        type: 'warning'
+      }).then(() => {
+        let data = {
+          patternName: patternName.value,
+          inputType: inputType.value,
+          sortNo: sortNo.value,
+          list: list.value,
+          deptCode: user.value.deptCode,
+          qingZhiTiHuan: true
+        }
+        baoCunMuBan(data).then((res) => {
+          qingKong()
+        })
+      }).catch((action) => {
+      })
+    }
+  })
 }
 
 const qingKong = () => {

+ 58 - 96
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuoQuMuBan.vue

@@ -2,7 +2,7 @@
   <div>
     <el-dialog draggable v-model="dialog" destroy-on-close title="模板" width="90%" @close="emit('close')">
       <el-container>
-        <el-aside>
+        <el-aside style="width: 350px">
           <el-radio-group v-model="muBanLeiXing" size="small" @change="dianJiChaXun">
             <el-radio-button :label="0">全部</el-radio-button>
             <el-radio-button :label="1">全院</el-radio-button>
@@ -12,47 +12,24 @@
           </el-radio-group>
           <el-input v-model="code" clearable style="width: 120px" @keyup.enter="dianJiChaXun"></el-input>
           <el-button @click="dianJiChaXun">查询</el-button>
-          <el-table :data="fuJiMuBanShuJu.data" :height="windowSize.h / 1.6" highlight-current-row stripe
+          <el-table :data="fuJiMuBanShuJu.data" :height="windowSize.h / 1.6"
+                    highlight-current-row stripe
+                    @row-click="dianJiMuBanMing"
                     style="width: 300px">
-            <el-table-column label="名称" prop="patternName" width="70"></el-table-column>
-            <el-table-column label="排序" prop="sortNo"></el-table-column>
             <el-table-column label="操作" width="180">
               <template #default="scope">
-                <el-button icon="Delete" text type="danger"
-                           @click.stop="clickDeleteTemplate(scope.row.patternCode,scope.$index)">
-                  删除
-                </el-button>
-                <el-button v-if="scope.row.yiBeiShouCang && scope.row.inputId !== user.code" text
-                           icon="StarFilled"
-
-                           type="warning">取消
-                </el-button>
-                <el-button v-else-if="scope.row.inputId !== user.code" text
-                           icon="Star" :disabled="scope.row.inputId === user.code"
-                           type="warning">收藏
-                </el-button>
+                <el-button type="primary" icon="Edit" v-if="muBanLeiXing !== 4"
+                           @click.stop="clickToEditTemplate(scope.row)"/>
+                <el-button type="warning"
+                           v-if="muBanLeiXing !== 4"
+                           @click.stop="clickToFavoriteTemplates(scope.row,scope.$index)"
+                           :icon="scope.row.yiBeiShouCang ?  'StarFilled' : 'Star'"/>
+                <el-button type="danger"
+                           icon="Delete"
+                           @click.stop="clickDeleteTemplate(scope.row.patternCode,scope.$index)"/>
               </template>
-
-              <!--              <template #default="scope">-->
-              <!--                <el-dropdown size="small" split-button type="primary" @click="dianJiMuBanMing(scope.row)">-->
-              <!--                  选中-->
-              <!--                  <template #dropdown>-->
-              <!--                    <el-dropdown-menu>-->
-              <!--                      <el-dropdown-item icon="Delete" @click="shanChuMuBan(scope.row, scope.$index)">删除-->
-              <!--                      </el-dropdown-item>-->
-              <!--                      <br/>-->
-              <!--                      <el-dropdown-item v-if="scope.row.yiBeiShouCang" :disabled="scope.row.inputId === user.code"-->
-              <!--                                        icon="Collection" @click="dianJiShouCang(scope.row)"-->
-              <!--                      >取消收藏-->
-              <!--                      </el-dropdown-item>-->
-              <!--                      <el-dropdown-item v-else :disabled="scope.row.inputId === user.code" icon="Collection"-->
-              <!--                                        @click="dianJiShouCang(scope.row)">收藏-->
-              <!--                      </el-dropdown-item>-->
-              <!--                    </el-dropdown-menu>-->
-              <!--                  </template>-->
-              <!--                </el-dropdown>-->
-              <!--              </template>-->
             </el-table-column>
+            <el-table-column label="名称" prop="patternName" width="70"/>
           </el-table>
           <el-pagination
               :current-page="fuJiMuBanShuJu.currentPage"
@@ -66,7 +43,7 @@
           </el-pagination>
         </el-aside>
         <el-main>
-          <el-button :disabled="xuanZhongShuJu.length === 0" type="primary" @click="dianJiQueDing">确定</el-button>
+          <el-button type="primary" @click="dianJiQueDing">确定</el-button>
           开始时间:
           <el-date-picker
               v-model="startTime"
@@ -97,20 +74,12 @@
               <span>{{ item.name }}</span>
             </el-option>
           </el-select>
-          <el-divider direction="vertical"/>
-          <el-button :disabled="muBanShuJu.length === 0" type="warning" @click="bianJiNeiRong">编辑内容</el-button>
-          <el-table
-              ref="tableRef"
-              :data="muBanShuJu"
-              :height="windowSize.h / 1.6"
-              :row-class-name="differChildrenRows"
-              border
-              class="eltable"
-              row-key="id"
-              @selection-change="xuanZhongMuBan"
-              @select-all="quanXuanMuBan"
-              default-expand-all>
-            <el-table-column fixed="left" type="selection"/>
+          <xc-table ref="tableRef"
+                    row-key="id"
+                    :data="{'data':muBanShuJu}"
+                    :open-paging="false"
+                    :height="windowSize.h / 1.6">
+            <el-table-column fixed="left" type="selection" reserve-selection/>
             <el-table-column fixed="left" label="uuid" prop="id"></el-table-column>
             <el-table-column label="医嘱名称" prop="orderName" show-overflow-tooltip width="135"></el-table-column>
             <el-table-column label="规格" prop="drugSpecification"></el-table-column>
@@ -124,7 +93,7 @@
             <el-table-column label="给药方式" prop="supplyCodeName"></el-table-column>
             <el-table-column label="执行科室" prop="execUnitName"></el-table-column>
             <el-table-column label="父医嘱" prop="parentNo"></el-table-column>
-          </el-table>
+          </xc-table>
         </el-main>
       </el-container>
       <bao-cun-mu-ban ref="baoCunMuBan"></bao-cun-mu-ban>
@@ -135,11 +104,11 @@
 <script name="HuoQuMuBan" setup>
 import store from '../../../store'
 import {
+  collectDoctorSOrderTemplate,
   deleteADoctorSOrderTemplate,
   huoQuMuBanShuJu,
   huoQuYiZhuMuBan,
   huoQuZhuYuanPinLv,
-  muBanCaoZuo
 } from '@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru'
 import {muBanMing} from '@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng'
 import {computed, ref} from 'vue'
@@ -148,6 +117,8 @@ import {ElMessage, ElMessageBox} from 'element-plus'
 import {clone} from '@/utils/clone'
 import BaoCunMuBan from './BaoCunMuBan.vue'
 import {getServerDateApi} from '@/api/public-api'
+import {BizException, ExceptionEnum} from "@/utils/BizException";
+import XcTable from "@/components/xc/xc-table/XcTable.vue";
 
 // 调用父组件的方法
 const emit = defineEmits(['mu-ban-shu-ju', 'close'])
@@ -191,15 +162,12 @@ const dianJiChaXun = () => {
   })
 }
 
-const dianJiMuBanMing = (row) => {
+const dianJiMuBanMing = async (row) => {
   dianJiFuJiXinXi.value = row
-  huoQuMuBanShuJu(row.inputType === '4' ? row.collectCode : row.patternCode).then((res) => {
-    muBanShuJu.value = res
-  })
-  getServerDateApi().then((res) => {
-    orderTime.value = res
-    startTime = res
-  })
+  muBanShuJu.value = await huoQuMuBanShuJu(row.inputType === '4' ? row.collectCode : row.patternCode)
+  let serverDate = await getServerDateApi()
+  orderTime.value = serverDate
+  startTime = serverDate
 }
 
 // 分页
@@ -210,33 +178,43 @@ const handleCurrentChange = (val) => {
   })
 }
 
-
 // 删除模板
-const clickDeleteTemplate = (row, index) => {
+const clickDeleteTemplate = (patternCode, index) => {
   ElMessageBox.confirm('确定要删除该模板吗?', '提示', {
     type: 'error',
   }).then(() => {
-    deleteADoctorSOrderTemplate(row, index).then((res) => {
-
+    deleteADoctorSOrderTemplate(patternCode).then((res) => {
+      fuJiMuBanShuJu.value.data.splice(index, 1)
+      muBanShuJu.value = []
     })
+  }).catch((e) => {
   })
-  console.log(row, index)
 }
 
-const shanChuMuBan = (row, index) => {
-  ElMessageBox.confirm('确定要删除该模板吗?', '提示', {
-    type: 'error',
-  })
-      .then(() => {
-        muBanCaoZuo(row.patternCode, '', user.value.deptCode, 0, 2)
-      })
-      .catch((e) => {
-      })
+// 收藏模板
+const clickToFavoriteTemplates = ({inputId, patternCode}, index) => {
+  if (inputId === store.state.user.info.code) {
+    BizException(ExceptionEnum.MESSAGE_ERROR, "无法收藏自己创建的模板。")
+  }
+  collectDoctorSOrderTemplate(patternCode).then((res) => {
+    fuJiMuBanShuJu.value.data[index].yiBeiShouCang = !fuJiMuBanShuJu.value.data[index].yiBeiShouCang
+  });
 }
 
-// 收藏模板
-const dianJiShouCang = (row) => {
-  muBanCaoZuo(row.patternCode, '', user.value.deptCode, 0, 3)
+// 点击编辑模板
+const clickToEditTemplate = async (row) => {
+  await dianJiMuBanMing(row)
+  for (let i = muBanShuJu.value.length - 1; i >= 0; i--) {
+    let item = muBanShuJu.value[i];
+    item.startTime = startTime
+    item.orderTime = orderTime
+    if (stringNotBlank(frequCode.value)) {
+      item.frequCode = frequCode.value
+      item.frequCodeName = frequCodeName.value
+    }
+  }
+  emit('mu-ban-shu-ju', clone(muBanShuJu.value))
+  muBanMing.value = dianJiFuJiXinXi.value
 }
 
 /* 添加子医嘱的背景颜色 */
@@ -275,9 +253,7 @@ const quanXuanMuBan = (selection) => {
 }
 
 const dianJiQueDing = () => {
-  if (listIsBlank(xuanZhongShuJu.value)) {
-    return ElMessage.error('请先选择数据')
-  }
+  xuanZhongShuJu.value = tableRef.value.getSelectionRows()
   xuanZhongShuJu.value.forEach((item) => {
     item.startTime = startTime
     item.orderTime = orderTime
@@ -308,20 +284,6 @@ const pinLvRemoteMethod = (val) => {
   }
 }
 
-// 编辑内容
-const bianJiNeiRong = () => {
-  muBanShuJu.value.forEach((item) => {
-    item.startTime = startTime
-    item.orderTime = orderTime
-    if (stringNotBlank(frequCode.value)) {
-      item.frequCode = frequCode.value
-      item.frequCodeName = frequCodeName.value
-    }
-  })
-  emit('mu-ban-shu-ju', clone(muBanShuJu.value))
-  muBanMing.value = dianJiFuJiXinXi.value
-}
-
 onMounted(() => {
   dianJiChaXun()
 })

+ 10 - 11
src/utils/public.js

@@ -1,22 +1,21 @@
 import store from '@/store'
 
-export function noNeedRule(...val) {
-    const userRoles = store.state.user.info.roles
-    for (let i = 0; i < val.length; i++) {
-        if (userRoles.includes(val[i])) {
-            return false
-        }
-    }
-    return true;
-}
-
 export function needRule(...val) {
     const userRoles = store.state.user.info.roles
+    if (userRoles.includes(1)) {
+        return true;
+    }
     for (let i = 0; i < val.length; i++) {
         if (userRoles.includes(val[i])) {
-            return true
+            return true;
         }
     }
     return false;
 }
 
+export function noNeedRule(...val) {
+    return !needRule(val)
+}
+
+
+

+ 3 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/TianJiaYiZhu.vue

@@ -1,6 +1,7 @@
 <template>
   <!-- 这里是获取模板的 -->
-  <huo-qu-mu-ban v-if="muBanDuiHuaKuang" @close="muBanDuiHuaKuang = false" @muBanShuJu="muBanShuJu"></huo-qu-mu-ban>
+  <huo-qu-mu-ban v-if="muBanDuiHuaKuang" @close="muBanDuiHuaKuang = false"
+                 @muBanShuJu="muBanShuJu"></huo-qu-mu-ban>
   <bao-cun-mu-ban ref="baoCunMuBanRef"></bao-cun-mu-ban>
   <template v-for="(item, index) in tiShiBiaoTi" :key="index">
     <el-alert :title="item.title" :type="item.type" effect="dark"></el-alert>
@@ -765,7 +766,7 @@ const muBanShuJu = (val) => {
       }, 200)
     }
   }
-
+  muBanDuiHuaKuang = false
   ElMessage.success('添加成功。')
 }