Pārlūkot izejas kodu

正在施工检查模板保存

xiaochan 3 gadi atpakaļ
vecāks
revīzija
29dd121309

+ 5 - 5
src/App.vue

@@ -2,16 +2,16 @@
   <el-config-provider :locale="locale">
     <router-view v-slot="{ Component }">
       <keep-alive>
-        <component :is="Component" />
+        <component :is="Component"/>
       </keep-alive>
     </router-view>
   </el-config-provider>
 </template>
 
 <script>
-import { defineComponent } from 'vue'
+import {defineComponent} from 'vue'
 import locale from 'element-plus/lib/locale/lang/zh-cn'
-import { useStore } from 'vuex'
+import {useStore} from 'vuex'
 
 export default defineComponent({
   name: 'App',
@@ -38,7 +38,7 @@ export default defineComponent({
 function getWindowSize() {
   const w = window.innerWidth
   const h = window.innerHeight - 96
-  return { w, h }
+  return {w, h}
 }
 </script>
 
@@ -95,7 +95,7 @@ function getWindowSize() {
   cursor: move;
 }
 
-.eltable .el-checkbox__inner {
+.el-checkbox__inner {
   width: 16px;
   height: 16px;
   border: 2px solid #000;

+ 35 - 0
src/api/zhu-yuan-yi-sheng/jian-cha-shen-qing.js

@@ -59,6 +59,41 @@ export function shouMingMuBanChaoZuo(data) {
     })
 }
 
+export function huoQuLinChuangZhenDuan(name, laiYuan) {
+    return request({
+        url: url + 'huoQuLingChuangZhenDuan',
+        method: 'get',
+        params: {name, laiYuan}
+    })
+}
+
+export function shanShuJianChaMuBan(code, deptCode) {
+    return request({
+        url: url + 'shanShuJianChaMuBan',
+        method: 'get',
+        params: {code, deptCode}
+    })
+}
+
+export function jianChaMuBanMing(name, reqType) {
+    return request({
+        url: url + 'jianChaMuBanMing',
+        method: 'get',
+        params: {name, reqType}
+    })
+}
+
+export function baoCunJianChaJianYanMuBan(data) {
+    return request({
+        url: url + 'baoCunJianChaJianYanMuBan',
+        method: 'post',
+        data
+    })
+}
+
+
+
+
 
 
 

+ 89 - 10
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/BianJiJianChaShenQing.vue

@@ -1,5 +1,5 @@
 <template>
-  <el-dialog v-model="dialog" title="编辑检查">
+  <el-dialog v-model="dialog" title="编辑检查" @close="guanBi">
     <el-form label-width="100px" size="mini">
       <el-row>
         <el-col :span="12">
@@ -58,11 +58,41 @@
                       type="textarea"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="24">
+        <el-col :span="12">
           <el-form-item label="临床诊断:">
-            <el-input v-model="bianJiJianChaShuJu.diagText" :fetch-suggestions="querySearchAsync"></el-input>
+            <el-select v-model="bianJiJianChaShuJu.diagCode"
+                       :remote-method="linChuangZhenDuanSuoSou" clearable
+                       filterable remote size="mini"
+                       @change="huoQuXiangXiZhenDuan">
+              <el-pagination
+                  :current-page="1"
+                  :page-size="20"
+                  :pager-count="7"
+                  :total="linChuangZhenDuanShuJu.length"
+                  layout="total,  prev, pager, next"
+                  @current-change="linChuangFanYe">
+              </el-pagination>
+              <el-option
+                  v-for="item in linChuangZhenDuanShuJu.slice((linChuangDangQianYe - 1) * 20,linChuangDangQianYe * 20)"
+                  :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-form-item>
         </el-col>
+        <el-col :span="12">
+          <el-switch
+              v-model="zhenDuanLaiYuan"
+              :active-value="true"
+              :inactive-value="false"
+              active-color="#13ce66"
+              active-text="医保"
+              inactive-color="#ff4949"
+              inactive-text="本院">
+          </el-switch>
+        </el-col>
       </el-row>
     </el-form>
   </el-dialog>
@@ -73,6 +103,9 @@
 import {computed, ref} from "vue";
 import store from "@/store";
 import ShuoMingMuBan from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/ShuoMingMuBan.vue";
+import {ElMessage} from "element-plus";
+import {stringIsBlank, stringNotBlank} from "@/utils/blank-utils";
+import {huoQuLinChuangZhenDuan} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
 
 export default {
   name: "BianJiJianChaShenQing",
@@ -82,9 +115,11 @@ export default {
       return store.state.app.windowSize
     })
 
-    const dialog = ref(true)
+    const dialog = ref(false)
     const bianJiJianChaShuJu = ref({})
     const shouMingMuBan = ref(null)
+    const linChuangZhenDuanShuJu = ref([])
+    const linChuangDangQianYe = ref(1)
 
     const shuoMingMuBan = ref({
       dialog: true,
@@ -94,10 +129,15 @@ export default {
       leiXing: 2,
       name: ''
     })
+    // 诊断来源
+    const zhenDuanLaiYuan = ref(false)
 
-
-    const querySearchAsync = () => {
-
+    const daKaiBenDuiHua = (val) => {
+      dialog.value = true
+      bianJiJianChaShuJu.value = val
+      if (stringNotBlank(val.diagCode)) {
+        linChuangZhenDuanShuJu.value.push({code: val.diagCode, name: val.diagText})
+      }
     }
 
     const daKaiShuoMingMuBan = () => {
@@ -106,7 +146,39 @@ export default {
     }
 
     const xuanZhongMuBan = (val) => {
-      console.log(val)
+      if (stringIsBlank(bianJiJianChaShuJu.value.reqComment)) {
+        bianJiJianChaShuJu.value.reqComment = ''
+      }
+      if (val.length + bianJiJianChaShuJu.value.reqComment.length > 125) {
+        return ElMessage.error('字符超长无法添加。')
+      }
+      bianJiJianChaShuJu.value.reqComment += val + ','
+    }
+
+    const linChuangZhenDuanSuoSou = (val) => {
+      if (stringNotBlank(val) && val.length > 1) {
+        huoQuLinChuangZhenDuan(val, zhenDuanLaiYuan.value).then(res => {
+          linChuangZhenDuanShuJu.value = res
+        })
+      }
+    }
+
+    const huoQuXiangXiZhenDuan = (val) => {
+      if (stringIsBlank(val)) return
+      for (let item of linChuangZhenDuanShuJu.value) {
+        if (item.code === val) {
+          return bianJiJianChaShuJu.value.diagText = item.name
+        }
+      }
+    }
+
+    const linChuangFanYe = (val) => {
+      linChuangDangQianYe.value = val
+    }
+
+    const guanBi = () => {
+      linChuangZhenDuanShuJu.value = []
+      bianJiJianChaShuJu.value = {}
     }
 
 
@@ -115,10 +187,17 @@ export default {
       bianJiJianChaShuJu,
       shuoMingMuBan,
       windowSize,
-      querySearchAsync,
+      zhenDuanLaiYuan,
       daKaiShuoMingMuBan,
       shouMingMuBan,
-      xuanZhongMuBan
+      xuanZhongMuBan,
+      linChuangZhenDuanShuJu,
+      linChuangZhenDuanSuoSou,
+      daKaiBenDuiHua,
+      huoQuXiangXiZhenDuan,
+      linChuangDangQianYe,
+      linChuangFanYe,
+      guanBi
     }
   }
 }

+ 7 - 13
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/ShuoMingMuBan.vue

@@ -46,9 +46,9 @@
   <el-dialog v-model="bianJiMuBan.dialog" title="编辑说明模板">
     <el-form ref="bianJiBiaoGeRef" :label-width="80" :model="bianJiMuBan.data" :rules="bianJiRules">
       <el-row>
-        <el-col v-if="bianJiMuBan.leiXing === '新增'" :span="24">
+        <el-col :span="24">
           <el-form-item label="模板类型" prop="whFlag">
-            <el-radio-group v-model="bianJiMuBan.data.whFlag">
+            <el-radio-group v-model="bianJiMuBan.data.whFlag" :disabled="bianJiMuBan.leiXing === '修改'">
               <el-radio-button :label="1">个人</el-radio-button>
               <el-radio-button :label="2">科室</el-radio-button>
               <el-radio-button :label="3">全院</el-radio-button>
@@ -58,6 +58,7 @@
         <el-col :span="24">
           <el-form-item label="名称:" prop="name">
             <el-input v-model="bianJiMuBan.data.name"
+                      maxlength="20" show-word-limit
                       @blur="bianJiMuBan.data.name=$event.target.value.trim()"></el-input>
           </el-form-item>
         </el-col>
@@ -98,15 +99,10 @@ export default {
       return store.state.app.windowSize
     })
 
-    const dialog = ref(true)
+    const dialog = ref(false)
     const leiXing = ref(3)
     const name = ref('')
 
-    const deptName = computed(() => {
-      return store.state.user.info.deptName
-    })
-
-
     const bianJiMuBan = ref({
       dialog: false,
       data: {},
@@ -144,6 +140,7 @@ export default {
           break;
         case '修改':
           bianJiMuBan.value.dialog = true
+          bianJiMuBan.value.leiXing = '修改'
           bianJiMuBan.value.data = clone(row)
           break;
         case '删除':
@@ -166,15 +163,13 @@ export default {
     })
 
     const queDingBiaoGeShuJu = async (form) => {
-      if (bianJiMuBan.value.leiXing === '新增' && bianJiMuBan.value.data.whFlag === 2) {
-        bianJiMuBan.value.data.name += `(${deptName.value})`
-      }
       if (!form) return
       try {
         await form.validate()
         await ElMessageBox.confirm(`您确定要${bianJiMuBan.value.leiXing}该模板吗?`, '提示', {
           type: 'warning'
         }).then(() => {
+          bianJiMuBan.value.userDeptCode = store.state.user.info.deptCode
           bianJiMuBan.value.data.leiXing = bianJiMuBan.value.leiXing
           shouMingMuBanChaoZuo(bianJiMuBan.value.data)
         }).catch(e => {
@@ -204,8 +199,7 @@ export default {
       bianJiRules,
       bianJiBiaoGeRef,
       queDingBiaoGeShuJu,
-      xinZengMuBan,
-      deptName
+      xinZengMuBan
     }
   }
 }

+ 166 - 25
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianCha.vue

@@ -10,9 +10,17 @@
           <el-radio-button :label="2">个人模板</el-radio-button>
           <el-radio-button :label="3">科室模板</el-radio-button>
         </el-radio-group>
-        <el-table :data="jianChaFenLeiShuJu.data" :height="windowSize.h / 1.6" highlight-current-row stripe
-                  @row-click="dianJiaChaKanFenLei">
+        <el-table :data="jianChaFenLeiShuJu.data" :height="windowSize.h / 1.6" highlight-current-row stripe>
           <el-table-column label="名称" prop="name"></el-table-column>
+          <el-table-column label="操作">
+            <template #default="scope">
+              <el-button size="small" split-button type="primary"
+                         @click="ceBianLanDianJi('查看',scope.row)">查看
+              </el-button>
+              <el-button v-if="chaZhaoLeiXing !== 1" type="danger" @click="ceBianLanDianJi('删除',scope.row)">删除
+              </el-button>
+            </template>
+          </el-table-column>
         </el-table>
         <el-pagination
             :current-page="jianChaFenLeiShuJu.currentPage"
@@ -26,15 +34,30 @@
       </el-aside>
       <el-main>
         <el-button @click="closeDialog">关闭</el-button>
+        <el-button :disabled="xuanZhongJianCha.data.length === 0" @click="baoCunJianChaShenQing">保存</el-button>
+        <el-button :disabled="xuanZhongJianCha.data.length === 0" @click="baoCunMuBan.dialog = true">存为模板</el-button>
         <el-table :data="xuanZhongJianCha.data" :height="windowSize.h / 1.9">
           <el-table-column label="项目编码" prop="orderCode"></el-table-column>
-          <el-table-column label="项目名称" prop="orderName"></el-table-column>
-          <el-table-column label="检查时间" prop="startTime"></el-table-column>
+          <el-table-column label="项目名称" prop="orderName" show-overflow-tooltip></el-table-column>
+          <el-table-column label="检查时间" prop="startTime">
+            <template #default="scope">
+              <span v-html="huanHangXianShi(scope.row.startTime)"></span>
+            </template>
+          </el-table-column>
           <el-table-column label="执行科室" prop="execDeptName"></el-table-column>
-          <el-table-column label="急诊标识" prop="jzFlag"></el-table-column>
-          <el-table-column label="编辑">
+          <el-table-column label="急诊标识" prop="jzFlag">
             <template #default="scope">
-              <el-button icon="el-icon-edit" @click="dianJiBianJi(scope.row)">编辑</el-button>
+              <span v-if="scope.row.jzFlag === 1">√</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="体征信息" prop="reqTzComment" show-overflow-tooltip></el-table-column>
+          <el-table-column label="相关辅检结果" prop="reqOtherResult" show-overflow-tooltip></el-table-column>
+          <el-table-column label="临床诊断" prop="diagText" show-overflow-tooltip></el-table-column>
+          <el-table-column label="编辑" width="120">
+            <template #default="scope">
+              <el-button icon="el-icon-edit" round type="primary" @click="dianJiBianJi(scope.row)"></el-button>
+              <el-button icon="el-icon-delete" round type="danger"
+                         @click="xuanZhongJianCha.data.splice(scope.$index,1)"></el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -50,17 +73,60 @@
       </el-table>
     </el-dialog>
   </el-dialog>
+  <el-dialog v-model="baoCunMuBan.dialog" center title="保存检查模板" width="30%">
+    <el-form ref="baoCunMuBanRef" :model="baoCunMuBan" :rules="baoCunMuBanJiaoYan" label-width="80px">
+      <el-row>
+        <el-col :span="24">
+          <el-form-item label="模板类型" prop="orderType">
+            <el-radio-group v-model="baoCunMuBan.orderType">
+              <el-radio-button :label="1">个人</el-radio-button>
+              <el-radio-button :label="2">科室</el-radio-button>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="名称" prop="tcName">
+            <el-input v-model="baoCunMuBan.tcName" clearable></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="排序码" prop="sortNo">
+            <el-input-number v-model="baoCunMuBan.sortNo" :max="9999" :min="0"></el-input-number>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="录入方式" prop="tcFlag">
+            <el-radio-group v-model="baoCunMuBan.tcFlag">
+              <el-radio-button :label="0">自动选择</el-radio-button>
+              <el-radio-button :label="1">手工录入</el-radio-button>
+            </el-radio-group>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-button @click="dianJiBaoCunMuBan(baoCunMuBanRef)">提交</el-button>
+          <el-button>关闭</el-button>
+        </el-col>
+      </el-row>
+    </el-form>
+  </el-dialog>
   <bian-ji-jian-cha-shen-qing ref="bianJiRef"></bian-ji-jian-cha-shen-qing>
 </template>
 
 <script>
 import {computed, onMounted, ref} from "vue";
-import {chaKanFenLeiXiangQing, huoQuJianChaMing} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+import {
+  baoCunJianChaJianYanMuBan,
+  chaKanFenLeiXiangQing,
+  huoQuJianChaMing,
+  jianChaMuBanMing,
+  shanShuJianChaMuBan
+} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
 import store from "@/store";
 import {clone} from "@/utils/clone";
-import {ElMessage} from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
 import {listNotBlank} from "@/utils/blank-utils";
 import BianJiJianChaShenQing from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/BianJiJianChaShenQing.vue";
+import {huanHangXianShi} from "@/utils/date";
 
 export default {
   name: "TianJiaJianCha",
@@ -86,6 +152,16 @@ export default {
       data: []
     })
     const bianJiRef = ref(null)
+    const baoCunMuBanRef = ref()
+    const baoCunMuBan = ref({
+      dialog: false,
+      tcName: '',
+      orderType: 1,
+      sortNo: 0,
+      tcFlag: 1,
+      fuGaiYuanShuJu: false,
+      chongFuMing: false
+    })
 
     const dianJiLeiXingChaXun = () => {
       huoQuJianChaMing(0, 1, chaZhaoLeiXing.value).then((res) => {
@@ -101,17 +177,6 @@ export default {
       })
     }
 
-    const dianJiaChaKanFenLei = ({code, bwCode}) => {
-      chaKanFenLeiXiangQing(code, chaZhaoLeiXing.value === 1 ? bwCode : 'mb').then((res) => {
-        if (listNotBlank(res)) {
-          xiangXiShuJu.value.data = res
-          xiangXiShuJu.value.dialog = true
-        } else {
-          ElMessage.error('没有找到对应的数据')
-        }
-      })
-    }
-
     const xuanZhong = (val) => {
       xuanZhongJianCha.value.daiXuanZhong = val
     }
@@ -132,13 +197,77 @@ export default {
       xiangXiShuJu.value.dialog = false
     }
 
+    const dianJiBianJi = (row) => {
+      bianJiRef.value.daKaiBenDuiHua(row)
+    }
+
     const closeDialog = () => {
       tianJiaJianChaHuiHua.value = false
     }
 
-    const dianJiBianJi = (row) => {
-      bianJiRef.value.dialog = true
-      bianJiRef.value.bianJiJianChaShuJu = row
+    const baoCunJianChaShenQing = () => {
+      console.log(xuanZhongJianCha.value)
+    }
+
+
+    const ceBianLanDianJi = (name, {code, bwCode}) => {
+      if (name === '查看') {
+        chaKanFenLeiXiangQing(code, chaZhaoLeiXing.value === 1 ? bwCode : 'mb').then((res) => {
+          if (listNotBlank(res)) {
+            xiangXiShuJu.value.data = res
+            xiangXiShuJu.value.dialog = true
+          } else {
+            ElMessage.error('没有找到对应的数据')
+          }
+        })
+      } else if (name === '删除') {
+        ElMessageBox.confirm('是否要删除该检查模板', '提示', {
+          type: "warning"
+        }).then(() => {
+          shanShuJianChaMuBan(code, store.state.user.info.deptCode)
+        }).catch((e) => {
+
+        })
+      }
+    }
+
+    const baoCunMuBanJiaoYan = ref({
+      tcName: [{required: true, message: '名称不能为空', trigger: 'blur',},
+        {min: 1, max: 30, message: '长度在 1 到 30 个字', trigger: 'blur'}],
+      orderType: [{required: true, message: '名称不能为空', trigger: 'blur',}],
+      sortNo: [{required: true, message: '名称不能为空', trigger: 'blur',}],
+      tcFlag: [{required: true, message: '名称不能为空', trigger: 'blur',}],
+    })
+
+    const dianJiBaoCunMuBan = async (form) => {
+      if (!form) return
+      try {
+        await form.validate()
+        jianChaMuBanMing(baoCunMuBan.value.tcName, 3).then((res) => {
+          if (res) {
+            ElMessageBox.confirm('已经存在相同的模板名称,请选择覆盖历史数据还是新增相同名称的数据', '温馨提示', {
+              type: 'warning',
+              distinguishCancelAndClose: true,
+              confirmButtonText: '覆盖',
+              cancelButtonText: '取消',
+            }).then(() => {
+              faSongBaoCunMuBan(true)
+            }).catch((e) => {
+            })
+          }
+        })
+      } catch (e) {
+
+      }
+    }
+
+    const faSongBaoCunMuBan = (flag) => {
+      baoCunMuBan.value.fuGaiYuanShuJu = flag
+      baoCunMuBan.value.reqType = 3
+      baoCunMuBan.value.list = xuanZhongJianCha.value.data
+      baoCunJianChaJianYanMuBan(baoCunMuBan.value).then((res) => {
+        console.log(res)
+      })
     }
 
     onMounted(() => {
@@ -150,7 +279,6 @@ export default {
       jianChaFenLeiShuJu,
       jianChaFenLeiFenYe,
       windowSize,
-      dianJiaChaKanFenLei,
       xiangXiShuJu,
       xuanZhong,
       dianJiQueRenXuanZhong,
@@ -159,12 +287,25 @@ export default {
       chaZhaoLeiXing,
       dianJiLeiXingChaXun,
       dianJiBianJi,
-      bianJiRef
+      bianJiRef,
+      huanHangXianShi,
+      baoCunJianChaShenQing,
+      ceBianLanDianJi,
+      baoCunMuBan,
+      baoCunMuBanRef,
+      dianJiBaoCunMuBan,
+      baoCunMuBanJiaoYan,
     }
   }
 }
 </script>
 
 <style scoped>
+:deep(.el-table .children-row) {
+  background: rgba(145, 247, 145, 0.5);
+}
 
+:deep(.el-table) {
+  --el-table-row-hover-background-color: #85dbfd7a;
+}
 </style>