소스 검색

完成检验检查和手术申请

xiaochan 3 년 전
부모
커밋
92a83bf089

+ 31 - 11
src/api/zhu-yuan-yi-sheng/jian-cha-shen-qing.js → src/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing.js

@@ -1,6 +1,6 @@
 import request from "@/utils/request";
 
-let url = '/jianChaShenQing/'
+let url = '/jianYanJianChaShenQing/'
 
 export function huoQuJianChaShenQing(data) {
     return request({
@@ -10,20 +10,20 @@ export function huoQuJianChaShenQing(data) {
     })
 }
 
-export function huoQuHuanZheJianChaMing(name, patNo, times, bedNo) {
+export function huoQuJianYanJianChaMing(name, patNo, times, bedNo, reqType) {
     return request({
-        url: url + 'huoQuHuanZheJianChaMing',
+        url: url + 'huoQuJianYanJianChaMing',
         method: 'get',
-        params: {name, patNo, times, bedNo}
+        params: {name, patNo, times, bedNo, reqType}
     })
 }
 
 
-export function huoQuJianChaMing(total, currentPage, leiXing) {
+export function jianChaJianYanFenLei(total, currentPage, leiXing, jianCha) {
     return request({
-        url: url + 'huoQuJianChaMing',
+        url: url + 'jianChaJianYanFenLei',
         method: 'get',
-        params: {total, currentPage, leiXing}
+        params: {total, currentPage, leiXing, jianCha}
     })
 }
 
@@ -35,11 +35,11 @@ export function huoQuShengQingXiangQing(reqNo) {
     })
 }
 
-export function chaKanFenLeiXiangQing(code, bwCode) {
+export function chaKanFenLeiXiangQing(code, bwCode, jianCha) {
     return request({
         url: url + 'chaKanFenLeiXiangQing',
         method: 'get',
-        params: {code, bwCode}
+        params: {code, bwCode, jianCha}
     })
 }
 
@@ -75,9 +75,9 @@ export function shanShuJianChaMuBan(code, deptCode) {
     })
 }
 
-export function jianChaMuBanMing(name, reqType) {
+export function jianChaJianYanMuBanMing(name, reqType) {
     return request({
-        url: url + 'jianChaMuBanMing',
+        url: url + 'jianChaJianYanMuBanMing',
         method: 'get',
         params: {name, reqType}
     })
@@ -99,6 +99,26 @@ export function baoCunJianYanJianCha(data) {
     })
 }
 
+/* ------------------------- 下面是检验的逻辑 --------------*/
+
+export function huoQuJianYan(data) {
+    return request({
+        url: url + 'huoQuJianYan',
+        method: 'post',
+        data
+    })
+}
+
+export function biaoBenApi(name) {
+    return request({
+        url: url + 'biaoBenShuJu',
+        method: 'get',
+        params: {name}
+    })
+}
+
+
+
 
 
 

+ 57 - 0
src/api/zhu-yuan-yi-sheng/shou-shu-shen-qing.js

@@ -0,0 +1,57 @@
+import request from "@/utils/request";
+
+let url = '/shouShuShenQing/'
+
+export function huoQuShouShu(data) {
+    return request({
+        url: url + 'huoQuShouShu',
+        method: 'post',
+        data
+    })
+}
+
+export function huoQuShouShuMingCheng(patNo, times, name) {
+    return request({
+        url: url + 'huoQuShouShuMingCheng',
+        method: 'get',
+        params: {patNo, times, name}
+    })
+}
+
+export function huoQuShouShuShenQingDaYing(patNo, times, recordId) {
+    return request({
+        url: url + 'huoQuShouShuShenQingDaYing',
+        method: 'get',
+        params: {patNo, times, recordId}
+    })
+}
+
+export function shouShuShenQingCeBianLan() {
+    return request({
+        url: url + 'shouShuShenQingCeBianLan',
+        method: 'get',
+    })
+}
+
+export function fenLeiXiangQing(code, name, total, currentPage, pageSize) {
+    return request({
+        url: url + 'fenLeiXiangQing',
+        method: 'get',
+        params: {code, name, total, currentPage, pageSize}
+    })
+}
+
+export function huoQuShouShuBuWei(name) {
+    return request({
+        url: url + 'huoQuShouShuBuWei',
+        method: 'get',
+        params: {name}
+    })
+}
+
+
+
+
+
+
+

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

@@ -1,7 +1,7 @@
 <template>
-  <el-dialog v-model="tianJiaJianChaHuiHua" :close-on-click-modal="false" :close-on-press-escape="false"
+  <el-dialog v-model="dialog" :close-on-click-modal="false" :close-on-press-escape="false"
              :show-close="false"
-             title="添加检查"
+             :title="jianCha ? '添加检查' : '添加检验'"
              top="15%" width="100%">
     <el-container>
       <el-aside>
@@ -34,8 +34,9 @@
       </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="dianJiBaoCunShenQing">保存</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" show-overflow-tooltip></el-table-column>
@@ -46,9 +47,16 @@
               <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="自费" prop="ybSelfFlag">
+            <template #default="scope">
+              <span v-if="scope.row.ybSelfFlag === 1">√</span>
+            </template>
+          </el-table-column>
+          <el-table-column v-if="!jianCha" label="标本" prop="inspectStuffName" show-overflow-tooltip></el-table-column>
+          <el-table-column :label="jianCha ? '病室摘要' : '申请说明'" prop="reqComment" show-overflow-tooltip></el-table-column>
+          <el-table-column v-if="jianCha" label="体征信息" prop="reqTzComment" show-overflow-tooltip></el-table-column>
+          <el-table-column v-if="jianCha" label="相关辅检结果" prop="reqOtherResult" show-overflow-tooltip></el-table-column>
+          <el-table-column v-if="jianCha" 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"
@@ -107,7 +115,7 @@
       </el-row>
     </el-form>
   </el-dialog>
-  <bian-ji-jian-cha-shen-qing ref="bianJiRef" @fanYe="bianJiFanYe"></bian-ji-jian-cha-shen-qing>
+  <bian-ji-jian-cha-shen-qing ref="bianJiRef" :jian-cha="jianCha" @fanYe="bianJiFanYe"></bian-ji-jian-cha-shen-qing>
 </template>
 
 <script>
@@ -116,29 +124,37 @@ import {
   baoCunJianChaJianYanMuBan,
   baoCunJianYanJianCha,
   chaKanFenLeiXiangQing,
-  huoQuJianChaMing,
-  jianChaMuBanMing,
+  jianChaJianYanFenLei,
+  jianChaJianYanMuBanMing,
   shanShuJianChaMuBan
-} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
 import store from "@/store";
 import {clone} from "@/utils/clone";
 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 BianJiJianChaShenQing from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/BianJiJianChaJianYanShenQing.vue";
 import {huanHangXianShi} from "@/utils/date";
 import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 
 export default {
   name: "TianJiaJianCha",
   components: {BianJiJianChaShenQing},
-  setup() {
-    const tianJiaJianChaHuiHua = ref(false)
-    const chaZhaoLeiXing = ref(2)
+  props: {
+    jianCha: {
+      type: Boolean,
+      default: true,
+    }
+  },
+  setup(props) {
+    const dialog = ref(false)
+    const chaZhaoLeiXing = ref(1)
     const xuanZhongJianCha = ref({
       data: [],
       weiBianMa: [],
       daiXuanZhong: []
     })
+    const biaoBenShuJu = ref([])
+
     const windowSize = computed(() => {
       return store.state.app.windowSize
     })
@@ -164,7 +180,9 @@ export default {
     })
 
     const dianJiLeiXingChaXun = () => {
-      huoQuJianChaMing(0, 1, chaZhaoLeiXing.value).then((res) => {
+      jianChaFenLeiShuJu.value.total = 0
+      jianChaFenLeiShuJu.value.currentPage = 1
+      jianChaJianYanFenLei(0, 1, chaZhaoLeiXing.value, props.jianCha).then((res) => {
         jianChaFenLeiShuJu.value.data = res.records
         jianChaFenLeiShuJu.value.total = res.total
       })
@@ -172,9 +190,10 @@ export default {
 
     const jianChaFenLeiFenYe = (val) => {
       jianChaFenLeiShuJu.value.currentPage = val
-      huoQuJianChaMing(jianChaFenLeiShuJu.value.total, val, chaZhaoLeiXing.value).then((res) => {
+      jianChaJianYanFenLei(jianChaFenLeiShuJu.value.total, val, chaZhaoLeiXing.value, props.jianCha).then((res) => {
         jianChaFenLeiShuJu.value.data = res.records
       })
+
     }
 
     const xuanZhong = (val) => {
@@ -202,14 +221,14 @@ export default {
     }
 
     const closeDialog = () => {
-      tianJiaJianChaHuiHua.value = false
+      dialog.value = false
     }
 
-    const baoCunJianChaShenQing = () => {
+    const dianJiBaoCunShenQing = () => {
       if (youWuXuanZheHuanZhe()) return
       let data = huanZheXinXi.value
       data.list = xuanZhongJianCha.value.data
-      data.reqType = 3
+      data.reqType = props.jianCha ? 3 : 2
       baoCunJianYanJianCha(data).then(res => {
         xuanZhongJianCha.value.weiBianMa = []
         xuanZhongJianCha.value.data = []
@@ -218,8 +237,11 @@ export default {
 
 
     const ceBianLanDianJi = (name, {code, bwCode}) => {
+      if (!props.jianCha) {
+        bwCode = ''
+      }
       if (name === '查看') {
-        chaKanFenLeiXiangQing(code, chaZhaoLeiXing.value === 1 ? bwCode : 'mb').then((res) => {
+        chaKanFenLeiXiangQing(code, chaZhaoLeiXing.value === 1 ? bwCode : 'mb', props.jianCha).then((res) => {
           if (listNotBlank(res)) {
             xiangXiShuJu.value.data = res
             xiangXiShuJu.value.dialog = true
@@ -250,7 +272,7 @@ export default {
       if (!form) return
       try {
         await form.validate()
-        jianChaMuBanMing(baoCunMuBan.value.tcName, 3).then((res) => {
+        jianChaJianYanMuBanMing(baoCunMuBan.value.tcName, props.jianCha ? "3" : "2").then((res) => {
           if (res) {
             ElMessageBox.confirm('已经存在相同的模板名称,请选择覆盖历史数据还是新增相同名称的数据', '温馨提示', {
               type: 'warning',
@@ -269,7 +291,7 @@ export default {
     }
 
     const faSongBaoCunMuBan = () => {
-      baoCunMuBan.value.reqType = 3
+      baoCunMuBan.value.reqType = props.jianCha ? 3 : 2
       baoCunMuBan.value.list = xuanZhongJianCha.value.data
       baoCunMuBan.value.tcExec = store.state.user.info.deptCode
       baoCunJianChaJianYanMuBan(baoCunMuBan.value).then((res) => {
@@ -287,7 +309,7 @@ export default {
     })
 
     return {
-      tianJiaJianChaHuiHua,
+      dialog,
       jianChaFenLeiShuJu,
       jianChaFenLeiFenYe,
       windowSize,
@@ -301,13 +323,15 @@ export default {
       dianJiBianJi,
       bianJiRef,
       huanHangXianShi,
-      baoCunJianChaShenQing,
+      dianJiBaoCunShenQing,
       ceBianLanDianJi,
       baoCunMuBan,
       baoCunMuBanRef,
       dianJiBaoCunMuBan,
       baoCunMuBanJiaoYan,
-      bianJiFanYe
+      bianJiFanYe,
+      jianCha: props.jianCha,
+      biaoBenShuJu
     }
   }
 }

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

@@ -58,35 +58,48 @@
             </el-switch>
           </el-form-item>
         </el-col>
+        <el-col :span="24">
+          <el-form-item v-if="!jianCha" label="标本:">
+            <el-select v-model="bianJiJianChaShuJu.inspectStuff" :remote-method="biaoBenSouSuo" clearable filterable
+                       remote
+                       @change="bianBenMing">
+              <el-option v-for="item in biaoBenShuJu" :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-form-item label="病室摘要:">
+          <el-form-item :label="jianCha ? '病室摘要:':'申请说明'">
             <el-input v-model="bianJiJianChaShuJu.reqComment" :rows="6" maxlength="125" show-word-limit
                       type="textarea"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="12">
+        <el-col v-if="jianCha" :span="12">
           <el-button @click="daKaiShuoMingMuBan">说明模板</el-button>
         </el-col>
-        <el-col :span="24">
+        <el-col v-if="jianCha" :span="24">
           <el-form-item label="体征信息:">
             <el-input v-model="bianJiJianChaShuJu.reqTzComment" :rows="6" maxlength="125" show-word-limit
                       type="textarea"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="24">
+        <el-col v-if="jianCha" :span="24">
           <el-form-item label="相关辅检结果:">
             <el-input v-model="bianJiJianChaShuJu.reqOtherResult" :rows="6" maxlength="125" show-word-limit
                       type="textarea"></el-input>
           </el-form-item>
         </el-col>
-        <el-col :span="12">
+        <el-col v-if="jianCha" :span="12">
           <el-form-item label="临床诊断:">
             <el-select v-model="bianJiJianChaShuJu.diagCode"
                        :remote-method="linChuangZhenDuanSuoSou" clearable
                        filterable remote size="mini"
                        @change="huoQuXiangXiZhenDuan">
               <el-pagination
-                  :current-page="1"
+                  :current-page="linChuangDangQianYe"
                   :page-size="20"
                   :pager-count="7"
                   :total="linChuangZhenDuanShuJu.length"
@@ -103,7 +116,7 @@
             </el-select>
           </el-form-item>
         </el-col>
-        <el-col :span="12">
+        <el-col v-if="jianCha" :span="12">
           <el-switch
               v-model="zhenDuanLaiYuan"
               :active-value="true"
@@ -129,12 +142,18 @@ 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";
+import {biaoBenApi, huoQuLinChuangZhenDuan} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
 
 export default {
   name: "BianJiJianChaShenQing",
   components: {ShuoMingMuBan},
   emits: ['fan-ye'],
+  props: {
+    jianCha: {
+      type: Boolean,
+      default: true
+    }
+  },
   setup(props, ctx) {
     const windowSize = computed(() => {
       return store.state.app.windowSize
@@ -145,6 +164,7 @@ export default {
     const shouMingMuBan = ref(null)
     const linChuangZhenDuanShuJu = ref([])
     const linChuangDangQianYe = ref(1)
+    const biaoBenShuJu = ref([])
 
     const count = ref(0)
     const index = ref(0)
@@ -168,6 +188,11 @@ export default {
       if (stringNotBlank(val.diagCode)) {
         linChuangZhenDuanShuJu.value.push({code: val.diagCode, name: val.diagText})
       }
+      if (!props.jianCha) {
+        if (stringNotBlank(val.inspectStuffName)) {
+          biaoBenShuJu.value.push({code: val.inspectStuff, name: val.inspectStuffName})
+        }
+      }
     }
 
     const daKaiShuoMingMuBan = () => {
@@ -180,9 +205,10 @@ export default {
         bianJiJianChaShuJu.value.reqComment = ''
       }
       if (val.length + bianJiJianChaShuJu.value.reqComment.length > 125) {
-        return ElMessage.error('字符超长无法添加。')
+        return ElMessage.error('字符超长无法添加,病室摘要最多125个字。')
       }
       bianJiJianChaShuJu.value.reqComment += val + ','
+      ElMessage.success('复制成功。')
     }
 
     const linChuangZhenDuanSuoSou = (val) => {
@@ -203,6 +229,8 @@ export default {
     }
 
     const bianJiFenYe = (val) => {
+      biaoBenShuJu.value = []
+      linChuangZhenDuanShuJu.value = []
       index.value = val
       ctx.emit('fan-ye', {val})
     }
@@ -212,11 +240,26 @@ export default {
     }
 
     const guanBi = () => {
+      biaoBenShuJu.value = []
       linChuangZhenDuanShuJu.value = []
       bianJiJianChaShuJu.value = {}
       dialog.value = false
     }
 
+    const bianBenMing = (val) => {
+      for (let item of biaoBenShuJu.value) {
+        if (item.code === val) {
+          return bianJiJianChaShuJu.value.inspectStuffName = item.name
+        }
+      }
+    }
+    const biaoBenSouSuo = (val) => {
+      if (val.length > 1) {
+        biaoBenApi(val).then((res) => {
+          biaoBenShuJu.value = res
+        })
+      }
+    }
 
     return {
       dialog,
@@ -236,7 +279,11 @@ export default {
       guanBi,
       bianJiFenYe,
       count,
-      index
+      index,
+      jianCha: props.jianCha,
+      biaoBenShuJu,
+      biaoBenSouSuo,
+      bianBenMing
     }
   }
 }

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

@@ -1,48 +1,52 @@
 <template>
   <el-dialog v-model="dialog" destroy-on-close title="说明模板">
-    <el-radio-group v-model="leiXing" @change="huoQuShuoMingMuBan(0)">
-      <el-radio-button :label="1">个人</el-radio-button>
-      <el-radio-button :label="2">科室</el-radio-button>
-      <el-radio-button :label="3">全院</el-radio-button>
-    </el-radio-group>
-    <el-input v-model="name" style="width: 120px" @keyup.enter="huoQuShuoMingMuBan(0)"></el-input>
-    <el-button @click="huoQuShuoMingMuBan(0)">查询</el-button>
-    <el-button @click="xinZengMuBan">新建</el-button>
-    <el-table :data="shuoMingMuBan.data" :height="windowSize.h / 2">
-      <el-table-column label="名称" prop="name"></el-table-column>
-      <el-table-column label="说明" prop="jcText">
-        <template #default="scope">
-          <el-popover :width="500">
-            <template #reference>
-              <el-button>详情</el-button>
+    <el-container>
+      <el-aside>
+        <el-radio-group v-model="leiXing" @change="huoQuShuoMingMuBan(0)">
+          <el-radio-button :label="1">个人</el-radio-button>
+          <el-radio-button :label="2">科室</el-radio-button>
+          <el-radio-button :label="3">全院</el-radio-button>
+        </el-radio-group>
+        <el-divider></el-divider>
+        <el-input v-model="name" style="width: 120px" @keyup.enter="huoQuShuoMingMuBan(0)"></el-input>
+        <el-button @click="huoQuShuoMingMuBan(0)">查询</el-button>
+        <el-button @click="xinZengMuBan">新建</el-button>
+        <el-table :data="shuoMingMuBan.data" :height="windowSize.h / 2">
+          <el-table-column label="名称" prop="name"></el-table-column>
+          <el-table-column fixed="right" label="操作">
+            <template #default="scope">
+              <el-dropdown size="small" split-button type="primary" @click="handleClick('查看',scope.row)">
+                查看
+                <template #dropdown>
+                  <el-dropdown-menu>
+                    <el-dropdown-item icon="el-icon-edit" @click="handleClick('修改',scope.row)">修改</el-dropdown-item>
+                    <br>
+                    <el-dropdown-item icon="el-icon-delete" @click="handleClick('删除',scope.row)">删除</el-dropdown-item>
+                  </el-dropdown-menu>
+                </template>
+              </el-dropdown>
             </template>
-            <el-input v-model="scope.row.jcText" :rows="9" type="textarea"></el-input>
-          </el-popover>
-        </template>
-      </el-table-column>
-      <el-table-column fixed="right" label="操作">
-        <template #default="scope">
-          <el-dropdown size="small" split-button type="primary" @click="handleClick('选中',scope.row)">
-            添加
-            <template #dropdown>
-              <el-dropdown-menu>
-                <el-dropdown-item icon="el-icon-edit" @click="handleClick('修改',scope.row)">修改</el-dropdown-item>
-                <br>
-                <el-dropdown-item icon="el-icon-delete" @click="handleClick('删除',scope.row)">删除</el-dropdown-item>
-              </el-dropdown-menu>
-            </template>
-          </el-dropdown>
-        </template>
-      </el-table-column>
-    </el-table>
-    <el-pagination
-        :current-page="shuoMingMuBan.currentPage"
-        :page-size="20"
-        :pager-count="7"
-        :total="shuoMingMuBan.total"
-        layout="total,  prev, pager, next, jumper"
-        @current-change="handleCurrentChange">
-    </el-pagination>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+            :current-page="shuoMingMuBan.currentPage"
+            :page-size="20"
+            :pager-count="7"
+            :total="shuoMingMuBan.total"
+            layout="total,  prev, pager, next, jumper"
+            @current-change="handleCurrentChange">
+        </el-pagination>
+      </el-aside>
+      <el-main>
+        <div v-for="item in jcText">
+          <div class="jc-header">{{ item.header }}:
+            <el-button circle class="iconfont icon-fuzhi" @click="fuZhi(item.content)"></el-button>
+          </div>
+          <div class="jc-content"><span>{{ item.content }}</span></div>
+          <br><br>
+        </div>
+      </el-main>
+    </el-container>
   </el-dialog>
 
   <el-dialog v-model="bianJiMuBan.dialog" title="编辑说明模板">
@@ -66,7 +70,25 @@
         </el-col>
         <el-col :span="24">
           <el-form-item label="内容:" prop="jcText">
-            <el-input v-model="bianJiMuBan.data.jcText" :rows="8" type="textarea"></el-input>
+            <el-table :data="bianJiMuBan.data.jcText">
+              <el-table-column label="标题" prop="header" width="120">
+                <template #default="scope">
+                  <el-input v-model="scope.row.header"></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column label="内容" prop="content">
+                <template #default="scope">
+                  <el-input v-model="scope.row.content" :rows="2" type="textarea"></el-input>
+                </template>
+              </el-table-column>
+              <el-table-column label="操作" prop="content" width="80">
+                <template #default="scope">
+                  <el-button circle icon="el-icon-plus" @click="tianJiaMuBanNeiRong"></el-button>
+                  <el-button circle icon="el-icon-delete"
+                             @click="bianJiMuBan.data.jcText.splice(scope.$index,1)"></el-button>
+                </template>
+              </el-table-column>
+            </el-table>
           </el-form-item>
         </el-col>
         <el-col :span="24">
@@ -80,14 +102,17 @@
   </el-dialog>
 </template>
 
+
 <script>
 import {computed, ref} from "vue";
-import {huoMuShuoMingMuBan, shouMingMuBanChaoZuo} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+import {huoMuShuoMingMuBan, shouMingMuBanChaoZuo} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
 import store from "@/store";
 import {clone} from "@/utils/clone";
-import {ElMessageBox} from "element-plus";
+import {ElMessage, ElMessageBox} from "element-plus";
+import JcHeader from "@/components/zhu-yuan-yi-sheng/shou-ming-mu-ban/JcHeader.vue";
 
 export default {
+  components: {JcHeader},
   props: {
     title: {
       type: String,
@@ -105,9 +130,14 @@ export default {
     const leiXing = ref(3)
     const name = ref('')
 
+    const jcText = ref([])
+
     const bianJiMuBan = ref({
       dialog: false,
-      data: {},
+      data: {
+        jcText: [],
+        name: '',
+      },
       leiXing: '修改',
     })
 
@@ -137,13 +167,18 @@ export default {
 
     const handleClick = (chaoZuo, row) => {
       switch (chaoZuo) {
-        case '选中':
-          ctx.emit('huo-qu-xuan-zhong-shu-ju', row.jcText)
+        case '查看':
+          try {
+            jcText.value = JSON.parse(row.jcText)
+          } catch (e) {
+            ElMessage.error('无法使用老系统数据。')
+          }
           break;
         case '修改':
           bianJiMuBan.value.dialog = true
           bianJiMuBan.value.leiXing = '修改'
           bianJiMuBan.value.data = clone(row)
+          bianJiMuBan.value.data.jcText = JSON.parse(row.jcText)
           break;
         case '删除':
           ElMessageBox.confirm('您确定要删除该模板吗?', '提示', {
@@ -157,11 +192,14 @@ export default {
       }
     }
 
+    const fuZhi = (val) => {
+      ctx.emit('huo-qu-xuan-zhong-shu-ju', val)
+    }
+
     const bianJiBiaoGeRef = ref()
 
     const bianJiRules = ref({
       name: [{required: true, message: '名称不能为空', trigger: 'blur',}],
-      jcText: [{required: true, message: '内容不能为空', trigger: 'blur',}],
     })
 
     const queDingBiaoGeShuJu = async (form) => {
@@ -171,19 +209,31 @@ export default {
         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)
+          let data = clone(bianJiMuBan.value.data)
+          data.userDeptCode = store.state.user.info.deptCode
+          data.leiXing = bianJiMuBan.value.leiXing
+          data.jcText = JSON.stringify(bianJiMuBan.value.data.jcText)
+          shouMingMuBanChaoZuo(data).then((res) => {
+            huoQuShuoMingMuBan(0)
+          })
         }).catch(e => {
         })
       } catch (e) {
       }
     }
 
+    const tianJiaMuBanNeiRong = () => {
+      bianJiMuBan.value.data.jcText.push({header: "标题", content: "内容"})
+    }
+
     const xinZengMuBan = () => {
       bianJiMuBan.value.leiXing = '新增'
       bianJiMuBan.value.dialog = true
-      bianJiMuBan.value.data = {}
+      bianJiMuBan.value.data = {
+        jcText: [],
+        name: '',
+      }
+      bianJiMuBan.value.data.jcText.push({header: "标题", content: "内容"})
       bianJiMuBan.value.data.whFlag = 1
     }
 
@@ -201,7 +251,10 @@ export default {
       bianJiRules,
       bianJiBiaoGeRef,
       queDingBiaoGeShuJu,
-      xinZengMuBan
+      xinZengMuBan,
+      jcText,
+      fuZhi,
+      tianJiaMuBanNeiRong
     }
   }
 }
@@ -215,4 +268,17 @@ export default {
 :deep(.el-table) {
   --el-table-row-hover-background-color: #85dbfd7a;
 }
+
+.jc-header {
+  font-size: 16px;
+  font-weight: bold;
+  color: red;
+}
+
+
+.jc-content span {
+  font-size: 14px;
+  margin-left: 20px;
+}
+
 </style>

+ 25 - 0
src/components/zhu-yuan-yi-sheng/shou-ming-mu-ban/JcHeader.vue

@@ -0,0 +1,25 @@
+<template>
+  <slot></slot>
+</template>
+
+<script>
+export default {
+  name: "JcHeader",
+  props: {
+    text: {
+      type: String,
+    }
+  },
+  setup(props) {
+    console.log(props.text)
+
+    return {
+      text: props.text
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 454 - 0
src/components/zhu-yuan-yi-sheng/shou-shu-shen-qing/BianJiShouShu.vue

@@ -0,0 +1,454 @@
+<template>
+  <el-dialog v-model="dialog" :before-close="jiaoYanShuJu" title="编辑手术信息">
+    <el-form ref="shouShuBiaoGe" :model="data" :rules="jiaoYanGuiZe" label-width="80px">
+      <el-row>
+        <el-col :span="12">
+          <el-form-item label="项目编码" prop="opCode">
+            {{ data.opCode }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="名称" prop="opName">
+            {{ data.opName }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="申请时间" prop="applyDate">
+            {{ data.applyDate }}
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="手术时间" prop="opDatetime">
+            <el-date-picker v-model="data.opDatetime" format="YYYY-MM-DD HH:mm:ss"
+                            placeholder="time" type="datetime" value-format="YYYY-MM-DD HH:mm:ss"></el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="情况">
+            <el-switch
+                v-model="data.urgentClinicFlag"
+                :active-value="1"
+                :inactive-value="0"
+                active-color="#13ce66"
+                active-text="急诊"
+                inactive-color="#ff4949"
+                inactive-text="择期">
+            </el-switch>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="班次">
+            <el-switch
+                v-model="data.ssbc"
+                :active-value="1"
+                :inactive-value="2"
+                active-color="#13ce66"
+                active-text="正常"
+                inactive-color="#ff4949"
+                inactive-text="加班">
+            </el-switch>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="术前诊断" prop="diagBeforeOpObj">
+            <el-select v-model="data.diagBeforeOpObj" :remote-method="souSuoZhenDuan" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-switch
+                  v-model="zhenDuanLaiYuan"
+                  :active-value="true"
+                  :inactive-value="false"
+                  active-color="#13ce66"
+                  active-text="医保"
+                  inactive-color="#ff4949"
+                  inactive-text="本院">
+              </el-switch>
+              <el-pagination
+                  :current-page="zhenDuanDangQianYe"
+                  :page-size="20"
+                  :pager-count="7"
+                  :total="shouShuZhenDuan.length"
+                  layout="total,  prev, pager, next"
+                  @current-change="zhenDuanFanYe">
+              </el-pagination>
+              <el-option v-for="item in shouShuZhenDuan.slice((zhenDuanDangQianYe - 1) * 20,zhenDuanDangQianYe * 20)"
+                         :key="item.code" :label="item.name" :value="{label:item.name,value:item.code,laiYuan:8}">
+                <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-form-item label="自费">
+            <el-switch
+                v-model="data.ybSelfFlag"
+                active-color="#13ce66"
+                active-text="是"
+                active-value="1"
+                inactive-color="#ff4949"
+                inactive-text="否"
+                inactive-value="0">
+            </el-switch>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="手术部位" prop="partCodeObj">
+            <el-select v-model="data.partCodeObj" :remote-method="souSuoBuWei" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in shouShuBuWeiShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:9}">
+                <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-form-item label="麻醉方式">
+            <el-select v-model="data.hocusCode" clearable filterable style="width: 220px">
+              <el-option v-for="item in maZuiFangShiShuJu" :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-form-item label="主刀医生" prop="doctorZdObj">
+            <el-select v-model="data.doctorZdObj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:1}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="第一助手">
+            <el-select v-model="data.doctor1Obj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:2}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="第二助手">
+            <el-select v-model="data.doctor2Obj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:3}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="第三助手">
+            <el-select v-model="data.doctor3Obj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:4}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="麻醉医生">
+            <el-select v-model="data.doctorMzObj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:5}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+
+        <el-col :span="12">
+
+          <el-form-item label="器械护士">
+            <el-select v-model="data.nurseQxObj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:6}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="巡回护士">
+            <el-select v-model="data.nurseXhObj" :remote-method="suoSouYiShen" clearable filterable remote
+                       style="width: 220px" @change="huoQuXialaKuangMing">
+              <el-option v-for="item in yiShengShuJu" :key="item.code" :label="item.name"
+                         :value="{label:item.name,value:item.code,laiYuan:7}">
+                <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#67C23A">{{ item.name }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#E6A23C">{{ item.deptName }}</span>
+                <el-divider direction="vertical"></el-divider>
+                <span style="color:#a5673f">{{ item.empTitName }}</span>
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="生成医嘱">
+            <el-switch
+                v-model="data.yzShengCheng"
+                :active-value="true"
+                :inactive-value="false"
+                active-color="#13ce66"
+                active-text="是"
+                inactive-color="#ff4949"
+                inactive-text="否">
+            </el-switch>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="附注说明">
+            <el-input v-model="data.remark" :rows="6" maxlength="50" show-word-limit
+                      style="width: 450px;"
+                      type="textarea"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-row>
+    </el-form>
+    <template #footer>
+      <div>
+        <el-button @click="quXiaoBianJi">取消</el-button>
+        <el-button @click="jiaoYanShuJu">确认</el-button>
+      </div>
+    </template>
+  </el-dialog>
+</template>
+
+<script>
+import {onMounted, ref, unref} from "vue";
+import {huoQuLinChuangZhenDuan} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
+import {huoQuShouShuBuWei} from "@/api/zhu-yuan-yi-sheng/shou-shu-shen-qing";
+import {getRenYuan, maZuiFangShi} from "@/api/public-api";
+import moment from "moment";
+import {ElMessage, ElMessageBox} from "element-plus";
+
+export default {
+  name: "BianJiShouShu",
+  emits: ['qu-xiao'],
+  setup(props, cxt) {
+    const data = ref({});
+    const dialog = ref(false)
+    const zhenDuanLaiYuan = ref(1)
+    const zhenDuanDangQianYe = ref(1)
+
+    // 手术部位
+    const shouShuBuWeiShuJu = ref([])
+    // 手术诊断
+    const shouShuZhenDuan = ref([])
+    // 麻醉方式
+    const maZuiFangShiShuJu = ref([])
+    // 医生信息
+    const yiShengShuJu = ref([])
+
+
+    // 搜索手术部位
+    const souSuoBuWei = (val) => {
+      if (val.length > 1) {
+        huoQuShouShuBuWei(val).then((res) => {
+          shouShuBuWeiShuJu.value = res
+        })
+      }
+    }
+
+    // 搜索诊断
+    const souSuoZhenDuan = (val) => {
+      if (val.length > 1) {
+        huoQuLinChuangZhenDuan(val, zhenDuanLaiYuan.value).then(res => {
+          shouShuZhenDuan.value = res
+        })
+      }
+    }
+
+    const zhenDuanFanYe = (val) => {
+      zhenDuanDangQianYe.value = val
+    }
+    // 搜索医生
+    const suoSouYiShen = (val) => {
+      if (val.length > 1) {
+        getRenYuan(val).then(res => {
+          yiShengShuJu.value = res
+        })
+      }
+    }
+
+    const huoQuXialaKuangMing = (val) => {
+      switch (val.laiYuan) {
+        case 1:
+          data.value.doctorZd = val.value
+          data.value.doctorZdName = val.label
+          return;
+        case 2:
+          data.value.doctor1 = val.value
+          data.value.doctor1Name = val.label
+          return;
+        case 3:
+          data.value.doctor2 = val.value
+          data.value.doctor2Name = val.label
+          return;
+        case 4:
+          data.value.doctor3 = val.value
+          data.value.doctor3Name = val.label
+          return;
+        case 5:
+          data.value.doctorMz = val.value
+          data.value.doctorMzName = val.label
+          return;
+        case 6:
+          data.value.nurseQx = val.value
+          data.value.nurseQxName = val.label
+          return;
+        case 7:
+          data.value.nurseXh = val.value
+          data.value.nurseXhName = val.label
+          return;
+        case 8:
+          data.value.diagBeforeOp = val.value
+          data.value.diagBeforeOpName = val.label
+          return;
+        case 9:
+          data.value.partCode = val.value
+          data.value.partCodeName = val.label
+          return;
+      }
+    }
+
+    const huoQuShuJu = (val) => {
+      data.value = val
+      dialog.value = true
+    }
+
+    const shouShuBiaoGe = ref()
+
+    // 时间校验
+    const shenQingShiJian = (rule, value, callback) => {
+      const oDate1 = moment(value).format('YYYY-MM-DD HH:mm:ss')
+      const oDate2 = moment(data.value.applyDate).format('YYYY-MM-DD HH:mm:ss')
+      if (moment(oDate1).isBefore(moment(oDate2))) {
+        callback(new Error('手术时间不能小于申请时间'))
+      } else {
+        callback()
+      }
+    }
+
+    // 校验数据
+    const jiaoYanGuiZe = ref({
+      opCode: [{required: true, message: '项目编码不能为空', trigger: 'blur'}],
+      opName: [{required: true, message: '项目名称不能为空', trigger: 'blur'}],
+      applyDate: [{required: true, message: '申请时间不能为空', trigger: 'blur'}],
+      opDatetime: [{required: true, message: '手术时间不能为空', trigger: 'blur'},
+        {validator: shenQingShiJian, trigger: 'blur'}],
+      diagBeforeOpObj: [{required: true, message: '术前诊断不能为空', trigger: 'blur'}],
+      partCodeObj: [{required: true, message: '手术部位不能为空', trigger: 'blur'}],
+      doctorZdObj: [{required: true, message: '主刀医生不能为空', trigger: 'blur'}],
+    })
+
+
+    const jiaoYanShuJu = async (done) => {
+      const form = unref(shouShuBiaoGe);
+      if (!form) return
+      try {
+        await form.validate()
+        dialog.value = false
+      } catch (e) {
+        ElMessage.error('请检查数据。')
+      }
+    }
+
+    const quXiaoBianJi = async () => {
+      await ElMessageBox.confirm('点击取消您的手术申请将会被删除。', '提示', {
+        type: 'warning',
+        confirmButtonText: '退出并删除',
+      }).then(() => {
+        cxt.emit('qu-xiao', data.value.opCode, -1)
+        dialog.value = false
+      }).catch((e) => {
+      })
+
+    }
+
+    onMounted(() => {
+      maZuiFangShi().then(res => {
+        maZuiFangShiShuJu.value = res
+      })
+    })
+    return {
+      data,
+      dialog,
+      shouShuBuWeiShuJu,
+      souSuoBuWei,
+      shouShuZhenDuan,
+      souSuoZhenDuan,
+      zhenDuanLaiYuan,
+      zhenDuanDangQianYe,
+      zhenDuanFanYe,
+      maZuiFangShiShuJu,
+      yiShengShuJu,
+      suoSouYiShen,
+      huoQuXialaKuangMing,
+      huoQuShuJu,
+      jiaoYanShuJu,
+      jiaoYanGuiZe,
+      shouShuBiaoGe,
+      quXiaoBianJi
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 258 - 0
src/components/zhu-yuan-yi-sheng/shou-shu-shen-qing/DaYingShouShuShengQingDan.vue

@@ -0,0 +1,258 @@
+<template>
+  <el-main :style="zuJianDaXiao">
+    纸张:
+    <el-radio v-model="zhiZhang" :label="1" size="large">A4</el-radio>
+    <el-radio v-model="zhiZhang" :label="2" size="large">A5</el-radio>
+    <div id="daYing">
+      <div style="width:393pt;height:760px;background-color: white;font-size: 13px">
+        <div style="height: 20px"></div>
+        <h1 style="text-align: center;font-size: 18px ">湖南泰和医院</h1>
+        <div style=" margin-left: 40px"><span>申请单号:{{ data.recordId }}</span></div>
+        <div style="text-align: center;width: 100%;margin-top: -15px;font-size: 14px">手术申请单</div>
+        <div style=" margin-left: 40px"><span>病房:{{ data.deptCodeName }}</span></div>
+        <div style="text-align: center;width: 100%;margin-top: -15px;font-size: 14px">
+          急诊:<span v-show="data.urgentClinicFlag === '1'">√</span>
+        </div>
+        <!--    患者信息    -->
+        <div style="border: 1px solid #000;margin: 5px;height: 550px">
+
+          <div class="tanXingHeZiHeng">
+            <div class="wen-zi">
+              <div>住院号:</div>
+              <div>{{ data.inpatientNo }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>床号:</div>
+              <div>{{ data.bedNo }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>姓名:</div>
+              <div>{{ data.patientName }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>性别:</div>
+              <div>{{ cptSex(data.sex) }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>年龄:</div>
+              <div>{{ data.age }}</div>
+            </div>
+          </div>
+
+          <div class="wen-zi">
+            <div>术前诊断:</div>
+            <div>{{ data.diagBeforeOp }}</div>
+          </div>
+
+          <div class="wen-zi">
+            <div>手术名称:</div>
+            <div>{{ data.opName }}</div>
+          </div>
+
+          <div class="wen-zi">
+            <div>麻醉方法:</div>
+            <div>{{ data.hocusCodeName }}</div>
+          </div>
+
+          <div class="tanXingHeZiHeng" style="border-bottom: 1px solid #000">
+            <div class="wen-zi">
+              <div>手术等级(术前):</div>
+              <div>{{ data.opScaleName }}</div>
+            </div>
+
+            <div class="wen-zi">
+              <div>手术等级(术后):</div>
+              <div style="width: 160px;">
+
+              </div>
+            </div>
+          </div>
+          <div class="wen-zi">
+            <div>主刀医生:</div>
+            <div>{{ data.doctorZdName }}</div>
+          </div>
+
+          <div class="tanXingHeZiHeng2">
+            <div class="wen-zi">
+              <div>第一助手:</div>
+              <div style="width: 120px">{{ data.doctor1Name }}</div>
+            </div>
+            <div class="wen-zi">
+              <div>第二助手:</div>
+              <div style="width: 120px">{{ data.doctor2Name }}</div>
+            </div>
+          </div>
+
+          <div class="tanXingHeZiHeng2">
+            <div class="wen-zi">
+              <div>第三助手:</div>
+              <div style="width: 120px">{{ data.doctor3Name }}</div>
+            </div>
+            <div class="wen-zi">
+              <div>麻醉医生:</div>
+              <div style="width: 120px">{{ data.doctorMzName }}</div>
+            </div>
+          </div>
+
+          <div class="tanXingHeZiHeng2" style="border-bottom: 1px solid #000">
+            <div class="wen-zi">
+              <div>器械护士:</div>
+              <div style="width: 120px">{{ data.nurseQxName }}</div>
+            </div>
+            <div class="wen-zi">
+              <div>巡回护士:</div>
+              <div style="width: 120px">{{ data.nurseXhName }}</div>
+            </div>
+          </div>
+
+          <div class="tanXingHeZiHeng2">
+            <div class="wen-zi">
+              <div>申请日期:</div>
+              <div style="width: 120px">{{ data.applyDate }}</div>
+            </div>
+            <div class="wen-zi">
+              <div>手术时间:</div>
+              <div style="width: 120px">{{ data.opDatetime }}</div>
+            </div>
+          </div>
+
+          <div class="tanXingHeZiHeng2" style="border-bottom: 1px solid #000">
+            <div class="wen-zi">
+              <div>住院医师:</div>
+              <div style="width: 120px">{{ data.referPhysicianName }}</div>
+            </div>
+            <div class="wen-zi">
+              <div>科主任:</div>
+              <div style="width: 120px">{{ data.deptDirectorName }}</div>
+            </div>
+          </div>
+
+          <div>
+            <div style="margin: 10px;">附注说明(包括传染疾病类型注明等):</div>
+            <div style="width: 480px;height: 120px; margin:10px;overflow: hidden">
+              {{ data.remark }}
+            </div>
+          </div>
+
+        </div>
+      </div>
+    </div>
+  </el-main>
+</template>
+
+<script>
+import {computed, onMounted, ref} from "vue";
+import {cptSex} from "@/utils/computed";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+import {ElMessage} from "element-plus";
+
+export default {
+  name: "DaYingShouShuShengQingDan",
+  props: {
+    width: {
+      type: Number,
+      default: 560,
+    },
+    height: {
+      type: Number,
+      default: 500,
+    }
+  },
+  setup(props, ctx) {
+    const zuJianDaXiao = computed(() => {
+      return {
+        width: props.width + 'px',
+        height: props.height + 'px',
+      }
+    })
+    const zhiZhang = ref(2)
+    const data = ref('')
+    const css = '*{font-size:16px}.tanXingHeZiHeng{display:flex;justify-content:space-between;margin-top:3pt;padding:0 3.75pt}.tanXingHeZiHeng2{display:flex;margin-top:3pt;padding:0 3.75pt}.tanXingHeZiShu{display:flex;flex-direction:column}.wen-zi{display:flex;margin-top:3pt;margin-left:5px;height:25px}.wen-zi div:first-child{display:flex;flex-direction:row;justify-content:center;text-align:right}.wen-zi div:nth-child(2){margin-left:3pt;display:table}.ge-zi{display:table-column}'
+
+
+    const daYing = () => {
+      if (!data) {
+        return ElMessage.error('请先选择患者')
+      }
+      let LODOP = getLodop()
+      const strFormHtml = '<style>' + css + '</style>' + '<body>' + document.getElementById('daYing').innerHTML + '</body>';
+      LODOP.PRINT_INIT(0, 0, 522, 333, '检查申请') // 初始化打印机 名字
+      // LODOP.SET_PRINT_MODE("PRINT_PAGE_PERCENT", "Full-Width");
+      // 整宽不变形
+      if (zhiZhang.value === 1) {
+        LODOP.SET_PRINT_PAGESIZE(2, 0, 0, 'A4')   // 设置纸张大小  A
+      } else {
+        LODOP.SET_PRINT_PAGESIZE(1, 0, 0, 'A5')
+      }
+      LODOP.ADD_PRINT_HTM(0, 0, '100%', '100%', strFormHtml) //  参数分别为顶边距,左边距,宽,高,打印项内容。
+      // LODOP.PRINT_DESIGN()
+      LODOP.PREVIEW() // 关闭
+    }
+
+    onMounted(() => {
+      initLodop()
+    })
+
+    return {
+      zuJianDaXiao,
+      zhiZhang,
+      data,
+      cptSex,
+      daYing
+    }
+  }
+}
+</script>
+
+<style scoped>
+* {
+  font-size: 16px;
+}
+
+.tanXingHeZiHeng {
+  display: flex;
+  justify-content: space-between;
+  margin-top: 3pt;
+  padding: 0 3.75pt;
+}
+
+.tanXingHeZiHeng2 {
+  display: flex;
+  margin-top: 3pt;
+  padding: 0 3.75pt;
+}
+
+.tanXingHeZiShu {
+  display: flex;
+  flex-direction: column;
+}
+
+.wen-zi {
+  display: flex;
+  margin-top: 3pt;
+  margin-left: 5px;
+  height: 25px;
+}
+
+.wen-zi div:first-child {
+  display: flex;
+  flex-direction: row;
+  justify-content: center;
+  text-align: right;
+}
+
+.wen-zi div:nth-child(2) {
+  margin-left: 3pt;
+  display: table;
+}
+
+.ge-zi {
+  display: table-column;
+}
+
+
+</style>

+ 279 - 0
src/components/zhu-yuan-yi-sheng/shou-shu-shen-qing/XinZengShouShuShenQing.vue

@@ -0,0 +1,279 @@
+<template>
+  <el-container>
+    <el-header style="height: 30px">
+      <el-button icon="el-icon-arrow-left" style="font-size: 14px" type="text" @click="router.go(-1)">返回</el-button>
+      <el-button icon="el-icon-search"
+                 @click="dianJiChaKanFenLeiXiangQing(0)  "> 搜索手术
+      </el-button>
+      <el-divider direction="vertical"></el-divider>
+      <el-button :disabled="xinZhenShuJu.length ===0" type="success" @click="dianJiBaoCun">保存</el-button>
+    </el-header>
+    <el-container>
+      <el-aside style="width: 260px">
+        <el-table
+            :data="shouShuFenLei.data.slice((shouShuFenLei.currentPage - 1) * shouShuFenLei.pageSize,shouShuFenLei.currentPage * shouShuFenLei.pageSize)"
+            :height="windowSize.h / 1.4" @row-click="dianJiChaKanFenLeiXiangQing">
+          <el-table-column label="手术分类">
+            <el-table-column label="名称" prop="name" show-overflow-tooltip width="100"></el-table-column>
+            <el-table-column label="编码" prop="code"></el-table-column>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+            :current-page="shouShuFenLei.currentPage"
+            :page-size="shouShuFenLei.pageSize"
+            :pager-count="7"
+            :total="shouShuFenLei.data.length"
+            layout="prev, pager, next"
+            small
+            @current-change="shouShuFenLeiFanYe">
+        </el-pagination>
+      </el-aside>
+      <el-main>
+        <el-table :data="xinZhenShuJu" :height="windowSize.h / 1.4">
+          <el-table-column label="编码" prop="opCode"></el-table-column>
+          <el-table-column label="名称" prop="opName" show-overflow-tooltip></el-table-column>
+          <el-table-column label="自费" prop="ybSelfFlag">
+            <template #default="scope">
+              <span v-if="scope.row.ybSelfFlag === '1'">自费</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="申请时间" prop="applyDate" show-overflow-tooltip></el-table-column>
+          <el-table-column label="手术时间" prop="opDatetime" show-overflow-tooltip></el-table-column>
+          <el-table-column label="情况" prop="urgentClinicFlag" show-overflow-tooltip>
+            <template #default="scope">
+              <span v-if="scope.row.urgentClinicFlag === '1'">急诊</span>
+              <span v-else>择期</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="班次" prop="ssbc" show-overflow-tooltip>
+            <template #default="scope">
+              <span v-if="scope.row.ssbc === '1'">正常</span>
+              <span v-else-if="scope.row.ssbc === '2' ">加班</span>
+            </template>
+          </el-table-column>
+          <el-table-column label="手术部位" prop="partCodeName"></el-table-column>
+          <el-table-column label="术前诊断" prop="diagBeforeOpName" show-overflow-tooltip></el-table-column>
+          <el-table-column label="手术等级" prop="opScale">
+            <template #default="scope">
+              {{ shouShuDengJi(scope.row.opScale) }}
+            </template>
+          </el-table-column>
+          <el-table-column label="麻醉方式" prop="hocusCodeName"></el-table-column>
+          <el-table-column label="主刀医生" prop="doctorZdName"></el-table-column>
+          <el-table-column label="第一助手" prop="doctor1Name"></el-table-column>
+          <el-table-column label="第二助手" prop="doctor2Name"></el-table-column>
+          <el-table-column label="第三助手" prop="doctor3Name"></el-table-column>
+          <el-table-column label="麻醉医生" prop="doctorMzName"></el-table-column>
+          <el-table-column label="器械护士" prop="nurseQxName"></el-table-column>
+          <el-table-column label="巡回护士" prop="nurseXhName"></el-table-column>
+          <el-table-column label="附注说明" prop="remark"></el-table-column>
+          <el-table-column label="是否生成医嘱" prop="yzShengCheng">
+            <template #default="scope">
+              <span v-if="scope.row.yzShengCheng">生成</span>
+              <span v-else>不生成</span>
+            </template>
+          </el-table-column>
+          <el-table-column fixed="right" label="操作" width="100">
+            <template #default="scope">
+              <el-button-group>
+                <el-button icon="el-icon-edit" type="primary" @click="dianJiBianJiShouShu(scope.row)"></el-button>
+                <el-popconfirm
+                    cancel-button-text="取消"
+                    confirm-button-text="确认"
+                    icon="el-icon-info"
+                    iconColor="red"
+                    title="是否删除该数据"
+                    @confirm="dianJiShanChuShouShu('',scope.$index)">
+                  <template #reference>
+                    <el-button icon="el-icon-delete" size="mini" type="danger"></el-button>
+                  </template>
+                </el-popconfirm>
+              </el-button-group>
+            </template>
+          </el-table-column>
+        </el-table>
+      </el-main>
+    </el-container>
+  </el-container>
+  <el-dialog v-model="souSuoShouShu.dialog" title="手术项目搜索" @close="souSuoShouShu.orderName = '' ">
+    <el-input ref="searchInput" v-model="souSuoShouShu.orderName" clearable style="width: 120px;"
+              @keyup.enter="chaXunShouShuXiangMu"></el-input>
+    <el-divider direction="vertical"></el-divider>
+    <el-button type="primary" @click="chaXunShouShuXiangMu">查询</el-button>
+    <el-table :data="souSuoShouShu.data" :height="windowSize.h / 1.5">
+      <el-table-column label="编码" prop="opCode"></el-table-column>
+      <el-table-column label="名称" prop="opName"></el-table-column>
+      <el-table-column label="选中">
+        <template #default="scope">
+          <el-button @click="dianJiXuanZhongShouShu(scope.row)">选中</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+    <el-pagination
+        :current-page="souSuoShouShu.currentPage"
+        :page-size="souSuoShouShu.pageSize"
+        :total="souSuoShouShu.total"
+        layout="total,  prev, pager, next"
+        @current-change="souSuoShouShuFenYe">
+    </el-pagination>
+  </el-dialog>
+  <!-- 在这里编辑手术 -->
+  <bian-ji-shou-shu ref="bianJiShouShu" @qu-xiao="dianJiShanChuShouShu"></bian-ji-shou-shu>
+</template>
+
+<script>
+import {computed, onMounted, ref} from "vue";
+import store from "@/store";
+import {fenLeiXiangQing, shouShuShenQingCeBianLan} from "@/api/zhu-yuan-yi-sheng/shou-shu-shen-qing";
+import router from "@/router";
+import {getServerDateApi} from "@/api/public-api";
+import {
+  huanZheXinXi,
+  shouShuDengJi,
+  youWuXuanZheHuanZhe
+} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import BianJiShouShu from "@/components/zhu-yuan-yi-sheng/shou-shu-shen-qing/BianJiShouShu.vue";
+import {ElMessage} from "element-plus";
+
+export default {
+  name: "XinZengShouShuShenQing",
+  components: {BianJiShouShu},
+  setup() {
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+    const shouShuFenLei = ref({
+      currentPage: 1,
+      pageSize: 20,
+      data: []
+    })
+
+    const shouShuFenLeiFanYe = (val) => {
+      shouShuFenLei.value.currentPage = val
+    }
+    const bianJiShouShu = ref()
+
+    const souSuoShouShu = ref({
+      dialog: false,
+      ssType: '',
+      orderName: '',
+      total: 0,
+      pageSize: 20,
+      currentPage: 1,
+      data: [],
+      code: '',
+      weiYiBiaoShi: [],
+    })
+    const searchInput = ref(null)
+
+
+    const dianJiChaKanFenLeiXiangQing = (row) => {
+      if (row === 0) {
+        souSuoShouShu.value.dialog = true
+        setTimeout(() => {
+          searchInput.value.focus()
+        }, 300)
+      } else {
+        souSuoShouShu.value.code = row.code
+        fenLeiXiangQing(row.code, '', 0, 1, souSuoShouShu.value.pageSize).then((res) => {
+          souSuoShouShu.value.dialog = true
+          setTimeout(() => {
+            searchInput.value.focus()
+          }, 300)
+          souSuoShouShu.value.total = res.total
+          souSuoShouShu.value.data = res.records
+        })
+      }
+    }
+
+    const chaXunShouShuXiangMu = () => {
+      souSuoShouShu.value.code = ''
+      fenLeiXiangQing('', souSuoShouShu.value.orderName, 0, 1, souSuoShouShu.value.pageSize).then((res) => {
+        souSuoShouShu.value.total = res.total
+        souSuoShouShu.value.data = res.records
+      })
+    }
+
+    const souSuoShouShuFenYe = (val) => {
+      souSuoShouShu.value.currentPage = val
+      fenLeiXiangQing(souSuoShouShu.value.code, souSuoShouShu.value.orderName, souSuoShouShu.value.total, val, souSuoShouShu.value.pageSize).then((res) => {
+        souSuoShouShu.value.data = res.records
+      })
+    }
+
+
+    const dianJiXuanZhongShouShu = (row) => {
+      getServerDateApi().then((res) => {
+        row.opDatetime = res
+        row.applyDate = res
+        if (souSuoShouShu.value.weiYiBiaoShi.indexOf(row.opCode) > -1) {
+          ElMessage.error('请勿重复添加')
+        } else {
+          souSuoShouShu.value.weiYiBiaoShi.push(row.opCode)
+          xinZhenShuJu.value.push(row)
+          bianJiShouShu.value.huoQuShuJu(row)
+          souSuoShouShu.value.dialog = false
+        }
+      })
+    }
+
+    /*__________________________________________________ 新增手术 _________________________________________________________________________*/
+    const xinZhenShuJu = ref([])
+
+    const dianJiBianJiShouShu = (row) => {
+      bianJiShouShu.value.huoQuShuJu(row)
+    }
+
+    const dianJiBaoCun = () => {
+      if (youWuXuanZheHuanZhe()) return
+      let data = huanZheXinXi.value
+      data.list = xinZhenShuJu.value
+      console.log(data)
+    }
+
+    const dianJiShanChuShouShu = (opCode, index) => {
+      if (index > -1) {
+        xinZhenShuJu.value.splice(index, 1)
+        souSuoShouShu.value.weiYiBiaoShi.splice(index, 1)
+      } else {
+        for (let i = 0; i < xinZhenShuJu.value.length; i++) {
+          if (xinZhenShuJu.value[i].opCode === opCode) {
+            xinZhenShuJu.value.splice(i, 1)
+            souSuoShouShu.value.weiYiBiaoShi.splice(i, 1)
+            return
+          }
+        }
+      }
+    }
+
+    onMounted(() => {
+      shouShuShenQingCeBianLan().then(res => {
+        shouShuFenLei.value.data = res
+      })
+    })
+
+    return {
+      windowSize,
+      shouShuFenLei,
+      shouShuFenLeiFanYe,
+      dianJiChaKanFenLeiXiangQing,
+      souSuoShouShu,
+      router,
+      dianJiXuanZhongShouShu,
+      chaXunShouShuXiangMu,
+      souSuoShouShuFenYe,
+      searchInput,
+      xinZhenShuJu,
+      shouShuDengJi,
+      bianJiShouShu,
+      dianJiBianJiShouShu,
+      dianJiBaoCun,
+      dianJiShanChuShouShu
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 1 - 1
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuanZheXinXi.vue

@@ -1,6 +1,6 @@
 <template>
   <el-container>
-    <el-main id="huanZheXinXiGaoDu">
+    <el-main id="huanZheXinXiGaoDu" style="padding: 0">
       <el-collapse v-model="activeNames">
         <el-collapse-item id="collapseHeight" class="collapse-item-height" name="1" title="患者信息">
           <el-row>

+ 54 - 39
src/router/index.js

@@ -3,73 +3,88 @@
  * @params hideMenu: 是否隐藏当前路由结点不在导航中展示
  * @params alwaysShow: 只有一个子路由时是否总是展示菜单,默认false
  */
-import { createRouter, createWebHistory } from 'vue-router'
+import {createRouter, createWebHistory} from 'vue-router'
 import store from '@/store'
 import NProgress from '@/utils/system/nprogress'
-import { changeTitle } from '@/utils/system/title'
+import {changeTitle} from '@/utils/system/title'
 
 // 动态路由相关引入数据
-
 // 引入modules
 import Dashboard from './modules/dashboard'
 import System from './modules/system'
 
 let modules = [...Dashboard]
+const apiUrl = import.meta.env.VITE_BASE_URL
 
 const routes = modules
 
 const router = createRouter({
-  history: createWebHistory(),
-  routes,
+    history: createWebHistory(),
+    routes,
 })
 
 let routesAsynced = false
 
 export function addRoutes() {
-  let modules = [...Dashboard]
-  System.forEach((item) => {
-    modules.push(item)
-    router.addRoute(item)
-  })
-  routesAsynced = true
+    let modules = [...Dashboard]
+    System.forEach((item) => {
+        modules.push(item)
+        router.addRoute(item)
+    })
+    routesAsynced = true
 }
 
 const whiteList = ['/login', '/dashboard', '/404', '/401', '/']
 
 router.beforeEach((to, _from, next) => {
-  if (to.meta.type === 1) {
-    return
-  }
-  if (whiteList.indexOf(to.path) === -1) {
-    const userPaths = [...store.state.user.paths]
-    const toPathArr = to.path.split('/')
-    const target = toPathArr[toPathArr.length - 1]
-    if (userPaths.indexOf(target) === -1 && userPaths.indexOf('/' + target) === -1) {
-      next('/401')
+    if (to.meta.type === 1) {
+        return
+    }
+    if (apiUrl !== 'http://172.16.32.160:8706') {
+        to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
+        next()
+        return;
+    }
+    if (to.meta.property === _from.meta.property) {
+        to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
+        next();
+        return;
+    }
+    if (to.meta.parent) {
+        to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
+        next(to.meta.parent);
+        return;
+    }
+    if (whiteList.indexOf(to.path) === -1) {
+        const userPaths = [...store.state.user.paths]
+        const toPathArr = to.path.split('/')
+        const target = toPathArr[toPathArr.length - 1]
+        if (userPaths.indexOf(target) === -1 && userPaths.indexOf('/' + target) === -1) {
+            next('/401')
+        }
+    }
+    NProgress.start()
+    if (!routesAsynced) {
+        addRoutes()
+    }
+    if (store.state.user.token || whiteList.indexOf(to.path) !== -1) {
+        to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
+        next()
+    } else {
+        next('/login') // 全部重定向到登录页
+        to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
     }
-  }
-  NProgress.start()
-  if (!routesAsynced) {
-    addRoutes()
-  }
-  if (store.state.user.token || whiteList.indexOf(to.path) !== -1) {
-    to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
-    next()
-  } else {
-    next('/login') // 全部重定向到登录页
-    to.meta.title ? changeTitle(to.meta.title) : '' // 动态title
-  }
 })
 
 router.afterEach((to, _from) => {
-  const keepAliveComponentsName = store.getters['keepAlive/keepAliveComponentsName'] || []
-  const name = to.matched[to.matched.length - 1].components.default.name
-  if (to.meta && to.meta.cache && name && !keepAliveComponentsName.includes(name)) {
-    store.commit('keepAlive/addKeepAliveComponentsName', name)
-  }
-  NProgress.done()
+    const keepAliveComponentsName = store.getters['keepAlive/keepAliveComponentsName'] || []
+    const name = to.matched[to.matched.length - 1].components.default.name
+    if (to.meta && to.meta.cache && name && !keepAliveComponentsName.includes(name)) {
+        store.commit('keepAlive/addKeepAliveComponentsName', name)
+    }
+    NProgress.done()
 })
 
-export { modules }
+export {modules}
 
 export default router

+ 489 - 468
src/router/modules/dashboard.js

@@ -1,481 +1,502 @@
 import Layout from '@/layout/index.vue'
-import { createNameComponent } from '../createNode'
+import {createNameComponent} from '../createNode'
 
 const route = [
-  {
-    path: '/login',
-    component: createNameComponent(() => import('@/views/system/login.vue')),
-    hideMenu: true,
-    meta: { title: '登录', hideTabs: true },
-  },
-  {
-    path: '/',
-    component: Layout,
-    redirect: '/dashboard',
-    meta: { title: '工作集成平台', icon: 'el-icon-menu' },
-    children: [
-      {
-        path: 'dashboard',
-        component: createNameComponent(() => import('@/views/dashboard/index.vue')),
-        meta: { title: '首页', icon: 'el-icon-menu', hideClose: true },
-      },
-    ],
-  },
-  // 这里以下都是临时新加的
-  {
-    path: '/medins',
-    component: Layout,
-    meta: { title: '医保模块', icon: 'iconfont icon-yibao' },
-    children: [
-      {
-        path: 'inpatient',
-        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/Home.vue')),
-        meta: { title: '住院医保', icon: 'iconfont icon-yibao' },
-        redirect: '/medins/inpatient/admRegistration',
+    {
+        path: '/login',
+        component: createNameComponent(() => import('@/views/system/login.vue')),
+        hideMenu: true,
+        meta: {title: '登录', hideTabs: true},
+    },
+    {
+        path: '/',
+        component: Layout,
+        redirect: '/dashboard',
+        meta: {title: '工作集成平台', icon: 'el-icon-menu'},
         children: [
-          {
-            path: 'admRegistration',
-            component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmRegistration.vue')),
-            meta: { title: '医保入院登记', icon: 'iconfont icon-ruyuandengji' },
-          },
-          {
-            path: 'inHospFeeUpload',
-            component: createNameComponent(() => import('@/views/medical-insurance/inpatient/InHospFeeUpload.vue')),
-            meta: { title: '医保费用上传', icon: 'iconfont icon-feiyongshangchuan' },
-          },
-          {
-            path: 'discSettlement',
-            component: createNameComponent(() => import('@/views/medical-insurance/inpatient/DiscSettlement.vue')),
-            meta: { title: '医保出院结算', icon: 'iconfont icon-chuyuan' },
-          },
+            {
+                path: 'dashboard',
+                component: createNameComponent(() => import('@/views/dashboard/index.vue')),
+                meta: {title: '首页', icon: 'el-icon-menu', hideClose: true},
+            },
         ],
-      },
-      {
-        path: 'inpatient/admissVerification',
-        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmissVerification.vue')),
-        meta: { title: '入院登记审核', icon: 'iconfont icon-yibaoshenhe' },
-      },
-      {
-        path: 'inpatient/medInsVerification',
-        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/MedInsVerification.vue')),
-        meta: { title: '出院结算审核', icon: 'iconfont icon-yibaoshenhe' },
-      },
-      {
-        path: 'outpatient/mzRegister',
-        component: createNameComponent(() => import('@/views/medical-insurance/outpatient/MzRegister.vue')),
-        meta: { title: '门诊登记', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'outpatient/mzSpltryRcrd',
-        component: createNameComponent(() => import('@/views/medical-insurance/outpatient/MzSpltryRcrd.vue')),
-        meta: { title: '门诊补录', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'outpatient/spcChrRcd',
-        component: createNameComponent(() => import('@/views/medical-insurance/outpatient/SpcChrRcd.vue')),
-        meta: { title: '慢特病备案', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'qryManage/catalogue',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/Catalogue.vue')),
-        meta: { title: '目录管理', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'qryManage/psnInfo',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/PsnInfo.vue')),
-        meta: { title: '医保身份查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'qryManage/inhospInfo',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/InhospInfo.vue')),
-        meta: { title: '在院查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'qryManage/visitInfo',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/VisitInfo.vue')),
-        meta: { title: '就诊信息查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'qryManage/siSettleDetailList',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SiSettleDetailList.vue')),
-        meta: { title: '医保结算单', icon: 'iconfont icon-zhuyuanqingdan' },
-      },
-      {
-        path: 'qryManage/setllistReconciliation',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetllistReconciliation.vue')),
-        meta: { title: '结算与对账', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2' },
-      },
-      {
-        path: 'qryManage/setSheetUpload',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetSheetUpload.vue')),
-        meta: { title: '结算单上传', icon: 'iconfont icon-jiesuandanshangchuan' },
-      },
-      {
-        path: 'qryManage/setlStatistics',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetlStatistics.vue')),
-        meta: { title: '结算统计', icon: 'iconfont icon-zhuyuanqingdan' },
-      },
-      {
-        path: 'qryManage/logAnalyse',
-        component: createNameComponent(() => import('@/views/medical-insurance/allpatient/LogAnalyse.vue')),
-        meta: { title: '日志分析', icon: 'iconfont icon-zhuyuanqingdan' },
-      },
-    ],
-  },
-  {
-    path: '/inspections',
-    component: Layout,
-    meta: { title: '检验检查', icon: 'iconfont icon-jiancha' },
-    children: [
-      {
-        path: 'inspectionReportIndex',
-        name: 'inspectionReportIndex',
-        component: createNameComponent(() => import('@/views/examination/InspectionReportIndex.vue')),
-        meta: { title: '检验报告', icon: 'iconfont icon-jianyanbaogao' },
-      },
-      {
-        path: 'covidExamResult',
-        component: createNameComponent(() => import('@/views/examination/CovidExamResult.vue')),
-        meta: { title: '新冠核酸检测报告', icon: 'iconfont icon-xinguan' },
-      },
-      {
-        path: 'healthCrdUpld',
-        component: createNameComponent(() => import('@/views/examination/UploadToHealthCard.vue')),
-        meta: { title: '健康证对接', icon: 'iconfont icon-jiankangzheng' },
-      },
-      {
-        path: 'bookableManagement',
-        component: createNameComponent(() => import('@/views/examination/BookableManagement.vue')),
-        meta: { title: '检验检查预约维护', icon: 'iconfont icon-yuyuedingdan' },
-      },
-    ],
-  },
-  {
-    path: '/medTecMod',
-    component: Layout,
-    meta: { title: '医技模块', icon: 'iconfont icon-yijimokuai' },
-    children: [
-      {
-        path: 'yiJiFeiYongLuRu',
-        component: createNameComponent(() => import('@/views/med-tec-mod/YiJiFeiYongLuRu.vue')),
-        meta: { title: '医技费用录入', icon: 'iconfont icon-yiJiFeiYongLuRu' },
-      },
-      {
-        path: 'queRenYiZhuShouFei',
-        component: createNameComponent(() => import('@/views/med-tec-mod/QueRenYiZhuShouFei.vue')),
-        meta: { title: '确认医嘱费用', icon: 'iconfont icon-queRenYiZhuShouFei' },
-      },
-      {
-        path: 'menZhenXiangMu',
-        component: createNameComponent(() => import('@/views/med-tec-mod/MenZhenXiangMu.vue')),
-        meta: { title: '门诊项目确认或取消', icon: 'iconfont icon-menZhenXiangMu' },
-      },
-    ],
-  },
-  {
-    path: '/dictionary',
-    component: Layout,
-    meta: { title: '字典准备', icon: 'iconfont icon-xiangmuzidian' },
-    children: [
-      {
-        path: 'prjctMdcnMtch',
-        component: createNameComponent(() => import('@/views/dictionary/NationalSiMatch.vue')),
-        meta: { title: '项目药品匹配', icon: 'iconfont icon-pipei' },
-      },
-      {
-        path: 'deptMatch',
-        component: createNameComponent(() => import('@/views/dictionary/YiBaoKeShiPiPei.vue')),
-        meta: { title: '医保科室匹配', icon: 'iconfont icon-pipei' },
-      },
-    ],
-  },
-  {
-    path: '/reports',
-    component: Layout,
-    meta: { title: '报表模块', icon: 'iconfont icon-baobiaomokuai' },
-    children: [
-      {
-        path: 'deptPriodRprt',
-        component: createNameComponent(() => import('@/views/reports/DeptPeriodReport.vue')),
-        meta: { title: '科室时段报表', icon: 'iconfont icon-shiduanfenxi' },
-      },
-      {
-        path: 'infntChrgRprt',
-        component: createNameComponent(() => import('@/views/reports/InfantFeeReport.vue')),
-        meta: { title: '婴儿收费统计', icon: 'iconfont icon-yinger' },
-      },
-      {
-        path: 'mdcnStckCnt',
-        component: createNameComponent(() => import('@/views/reports/MedicineStockCount.vue')),
-        meta: { title: '药品盘点', icon: 'iconfont icon-yaopin' },
-      },
-      {
-        path: 'clockinStatistics',
-        component: createNameComponent(() => import('@/views/reports/ClockinData.vue')),
-        meta: { title: '打卡数据', icon: 'iconfont icon-dakashuju' },
-      },
-      {
-        path: 'covidVaccinateAppointment',
-        component: createNameComponent(() => import('@/views/reports/covid-vaccinate/CovidVaccinateAppointment.vue')),
-        meta: { title: '新冠接种预约', icon: 'iconfont icon-xinguanjiezhong' },
-      },
-      {
-        path: 'inquiryOfConsultationFee',
-        component: createNameComponent(() => import('@/views/reports/InquiryOfConsultationFee.vue')),
-        meta: { title: '查询会诊费用', icon: 'iconfont icon-feiyongshenqing' },
-      },
-      {
-        path: 'consumablesStatistics',
-        component: createNameComponent(() => import('@/views/reports/ConsumablesStatistics.vue')),
-        meta: { title: '耗材使用统计', icon: 'iconfont icon-haocaitongji' },
-      },
-      {
-        path: 'illegalChargesAnalysis',
-        component: createNameComponent(() => import('@/views/reports/IllegalChargesAnalysis.vue')),
-        meta: { title: '违规收费分析', icon: 'iconfont icon-weiguishoufeifenxi' },
-      },
-      {
-        path: 'queryPayService',
-        component: createNameComponent(() => import('@/views/reports/QueryPayService.vue')),
-        meta: { title: '收费项目', icon: 'iconfont icon-shoufeixiangmu' },
-      },
-      {
-        path: 'drugInquiry',
-        component: createNameComponent(() => import('@/views/reports/DrugInquiry.vue')),
-        meta: { title: '查询药品', icon: 'iconfont icon-chaxunyaopin' },
-      },
-      {
-        path: 'yuanNeiTongJi',
-        component: createNameComponent(() => import('@/views/reports/YuanNeiTongJi.vue')),
-        meta: { title: '院内统计', icon: 'iconfont icon-haocaitongji' },
-      },
-      {
-        path: 'keShiShouRuTongJi',
-        component: createNameComponent(() => import('@/views/reports/KeShiShouRuTongJi.vue')),
-        meta: { title: '科室收入统计', icon: 'iconfont icon-keShiShouRuTongJi' },
-      },
-    ],
-  },
-  {
-    path: '/dataModify',
-    component: Layout,
-    meta: { title: '数据修改', icon: 'iconfont icon-shujuxiugai' },
-    children: [
-      {
-        path: 'yzActOrderModify',
-        component: createNameComponent(() => import('@/views/data-modify/YzActOrderModify.vue')),
-        meta: { title: '医嘱修改申请', icon: 'iconfont icon-yizhu' },
-      },
-      {
-        path: 'zyChargeFeeModify',
-        component: createNameComponent(() => import('@/views/data-modify/ZyChargeFeeModify.vue')),
-        meta: { title: '住院费用修改', icon: 'iconfont icon-zhuyuanfeiyongfenxi' },
-      },
-      {
-        path: 'yzActOrderModifyVerify',
-        component: createNameComponent(() => import('@/views/data-modify/YzActOrderModifyVerify.vue')),
-        meta: { title: '医嘱修改审核', icon: 'iconfont icon-yizhuxiugaishenhe' },
-      },
-      {
-        path: 'yzTemperatureModify',
-        component: createNameComponent(() => import('@/views/data-modify/YzTemperatureModify.vue')),
-        meta: { title: '护理记录单修改', icon: 'iconfont icon-hulijiludan' },
-      },
-      {
-        path: 'secondFefund',
-        component: createNameComponent(() => import('@/views/data-modify/SecondFefund.vue')),
-        meta: { title: '二次退费', icon: 'iconfont icon-ercituifei' },
-      },
-      {
-        path: 'queryOfReceiptDetails',
-        component: createNameComponent(() => import('@/views/data-modify/QueryOfReceiptDetails.vue')),
-        meta: { title: '入库明细查询', icon: 'iconfont icon-rukuguanli' },
-      },
-      {
-        path: 'deliveryDetailsQuery',
-        component: createNameComponent(() => import('@/views/data-modify/DeliveryDetailsQuery.vue')),
-        meta: { title: '出库明细查询', icon: 'iconfont icon-chukuguanli' },
-      },
-    ],
-  },
+    },
+    // 这里以下都是临时新加的
+    {
+        path: '/medins',
+        component: Layout,
+        meta: {title: '医保模块', icon: 'iconfont icon-yibao'},
+        children: [
+            {
+                path: 'inpatient',
+                component: createNameComponent(() => import('@/views/medical-insurance/inpatient/Home.vue')),
+                meta: {title: '住院医保', icon: 'iconfont icon-yibao'},
+                redirect: '/medins/inpatient/admRegistration',
+                children: [
+                    {
+                        path: 'admRegistration',
+                        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmRegistration.vue')),
+                        meta: {title: '医保入院登记', icon: 'iconfont icon-ruyuandengji'},
+                    },
+                    {
+                        path: 'inHospFeeUpload',
+                        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/InHospFeeUpload.vue')),
+                        meta: {title: '医保费用上传', icon: 'iconfont icon-feiyongshangchuan'},
+                    },
+                    {
+                        path: 'discSettlement',
+                        component: createNameComponent(() => import('@/views/medical-insurance/inpatient/DiscSettlement.vue')),
+                        meta: {title: '医保出院结算', icon: 'iconfont icon-chuyuan'},
+                    },
+                ],
+            },
+            {
+                path: 'inpatient/admissVerification',
+                component: createNameComponent(() => import('@/views/medical-insurance/inpatient/AdmissVerification.vue')),
+                meta: {title: '入院登记审核', icon: 'iconfont icon-yibaoshenhe'},
+            },
+            {
+                path: 'inpatient/medInsVerification',
+                component: createNameComponent(() => import('@/views/medical-insurance/inpatient/MedInsVerification.vue')),
+                meta: {title: '出院结算审核', icon: 'iconfont icon-yibaoshenhe'},
+            },
+            {
+                path: 'outpatient/mzRegister',
+                component: createNameComponent(() => import('@/views/medical-insurance/outpatient/MzRegister.vue')),
+                meta: {title: '门诊登记', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'outpatient/mzSpltryRcrd',
+                component: createNameComponent(() => import('@/views/medical-insurance/outpatient/MzSpltryRcrd.vue')),
+                meta: {title: '门诊补录', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'outpatient/spcChrRcd',
+                component: createNameComponent(() => import('@/views/medical-insurance/outpatient/SpcChrRcd.vue')),
+                meta: {title: '慢特病备案', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'qryManage/catalogue',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/Catalogue.vue')),
+                meta: {title: '目录管理', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'qryManage/psnInfo',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/PsnInfo.vue')),
+                meta: {title: '医保身份查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'qryManage/inhospInfo',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/InhospInfo.vue')),
+                meta: {title: '在院查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'qryManage/visitInfo',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/VisitInfo.vue')),
+                meta: {title: '就诊信息查询', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'qryManage/siSettleDetailList',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SiSettleDetailList.vue')),
+                meta: {title: '医保结算单', icon: 'iconfont icon-zhuyuanqingdan'},
+            },
+            {
+                path: 'qryManage/setllistReconciliation',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetllistReconciliation.vue')),
+                meta: {title: '结算与对账', icon: 'iconfont icon-menzhenteshubingdingdianbiangeng2'},
+            },
+            {
+                path: 'qryManage/setSheetUpload',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetSheetUpload.vue')),
+                meta: {title: '结算单上传', icon: 'iconfont icon-jiesuandanshangchuan'},
+            },
+            {
+                path: 'qryManage/setlStatistics',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/SetlStatistics.vue')),
+                meta: {title: '结算统计', icon: 'iconfont icon-zhuyuanqingdan'},
+            },
+            {
+                path: 'qryManage/logAnalyse',
+                component: createNameComponent(() => import('@/views/medical-insurance/allpatient/LogAnalyse.vue')),
+                meta: {title: '日志分析', icon: 'iconfont icon-zhuyuanqingdan'},
+            },
+        ],
+    },
+    {
+        path: '/inspections',
+        component: Layout,
+        meta: {title: '检验检查', icon: 'iconfont icon-jiancha'},
+        children: [
+            {
+                path: 'inspectionReportIndex',
+                name: 'inspectionReportIndex',
+                component: createNameComponent(() => import('@/views/examination/InspectionReportIndex.vue')),
+                meta: {title: '检验报告', icon: 'iconfont icon-jianyanbaogao'},
+            },
+            {
+                path: 'covidExamResult',
+                component: createNameComponent(() => import('@/views/examination/CovidExamResult.vue')),
+                meta: {title: '新冠核酸检测报告', icon: 'iconfont icon-xinguan'},
+            },
+            {
+                path: 'healthCrdUpld',
+                component: createNameComponent(() => import('@/views/examination/UploadToHealthCard.vue')),
+                meta: {title: '健康证对接', icon: 'iconfont icon-jiankangzheng'},
+            },
+            {
+                path: 'bookableManagement',
+                component: createNameComponent(() => import('@/views/examination/BookableManagement.vue')),
+                meta: {title: '检验检查预约维护', icon: 'iconfont icon-yuyuedingdan'},
+            },
+        ],
+    },
+    {
+        path: '/medTecMod',
+        component: Layout,
+        meta: {title: '医技模块', icon: 'iconfont icon-yijimokuai'},
+        children: [
+            {
+                path: 'yiJiFeiYongLuRu',
+                component: createNameComponent(() => import('@/views/med-tec-mod/YiJiFeiYongLuRu.vue')),
+                meta: {title: '医技费用录入', icon: 'iconfont icon-yiJiFeiYongLuRu'},
+            },
+            {
+                path: 'queRenYiZhuShouFei',
+                component: createNameComponent(() => import('@/views/med-tec-mod/QueRenYiZhuShouFei.vue')),
+                meta: {title: '确认医嘱费用', icon: 'iconfont icon-queRenYiZhuShouFei'},
+            },
+            {
+                path: 'menZhenXiangMu',
+                component: createNameComponent(() => import('@/views/med-tec-mod/MenZhenXiangMu.vue')),
+                meta: {title: '门诊项目确认或取消', icon: 'iconfont icon-menZhenXiangMu'},
+            },
+        ],
+    },
+    {
+        path: '/dictionary',
+        component: Layout,
+        meta: {title: '字典准备', icon: 'iconfont icon-xiangmuzidian'},
+        children: [
+            {
+                path: 'prjctMdcnMtch',
+                component: createNameComponent(() => import('@/views/dictionary/NationalSiMatch.vue')),
+                meta: {title: '项目药品匹配', icon: 'iconfont icon-pipei'},
+            },
+            {
+                path: 'deptMatch',
+                component: createNameComponent(() => import('@/views/dictionary/YiBaoKeShiPiPei.vue')),
+                meta: {title: '医保科室匹配', icon: 'iconfont icon-pipei'},
+            },
+        ],
+    },
+    {
+        path: '/reports',
+        component: Layout,
+        meta: {title: '报表模块', icon: 'iconfont icon-baobiaomokuai'},
+        children: [
+            {
+                path: 'deptPriodRprt',
+                component: createNameComponent(() => import('@/views/reports/DeptPeriodReport.vue')),
+                meta: {title: '科室时段报表', icon: 'iconfont icon-shiduanfenxi'},
+            },
+            {
+                path: 'infntChrgRprt',
+                component: createNameComponent(() => import('@/views/reports/InfantFeeReport.vue')),
+                meta: {title: '婴儿收费统计', icon: 'iconfont icon-yinger'},
+            },
+            {
+                path: 'mdcnStckCnt',
+                component: createNameComponent(() => import('@/views/reports/MedicineStockCount.vue')),
+                meta: {title: '药品盘点', icon: 'iconfont icon-yaopin'},
+            },
+            {
+                path: 'clockinStatistics',
+                component: createNameComponent(() => import('@/views/reports/ClockinData.vue')),
+                meta: {title: '打卡数据', icon: 'iconfont icon-dakashuju'},
+            },
+            {
+                path: 'covidVaccinateAppointment',
+                component: createNameComponent(() => import('@/views/reports/covid-vaccinate/CovidVaccinateAppointment.vue')),
+                meta: {title: '新冠接种预约', icon: 'iconfont icon-xinguanjiezhong'},
+            },
+            {
+                path: 'inquiryOfConsultationFee',
+                component: createNameComponent(() => import('@/views/reports/InquiryOfConsultationFee.vue')),
+                meta: {title: '查询会诊费用', icon: 'iconfont icon-feiyongshenqing'},
+            },
+            {
+                path: 'consumablesStatistics',
+                component: createNameComponent(() => import('@/views/reports/ConsumablesStatistics.vue')),
+                meta: {title: '耗材使用统计', icon: 'iconfont icon-haocaitongji'},
+            },
+            {
+                path: 'illegalChargesAnalysis',
+                component: createNameComponent(() => import('@/views/reports/IllegalChargesAnalysis.vue')),
+                meta: {title: '违规收费分析', icon: 'iconfont icon-weiguishoufeifenxi'},
+            },
+            {
+                path: 'queryPayService',
+                component: createNameComponent(() => import('@/views/reports/QueryPayService.vue')),
+                meta: {title: '收费项目', icon: 'iconfont icon-shoufeixiangmu'},
+            },
+            {
+                path: 'drugInquiry',
+                component: createNameComponent(() => import('@/views/reports/DrugInquiry.vue')),
+                meta: {title: '查询药品', icon: 'iconfont icon-chaxunyaopin'},
+            },
+            {
+                path: 'yuanNeiTongJi',
+                component: createNameComponent(() => import('@/views/reports/YuanNeiTongJi.vue')),
+                meta: {title: '院内统计', icon: 'iconfont icon-haocaitongji'},
+            },
+            {
+                path: 'keShiShouRuTongJi',
+                component: createNameComponent(() => import('@/views/reports/KeShiShouRuTongJi.vue')),
+                meta: {title: '科室收入统计', icon: 'iconfont icon-keShiShouRuTongJi'},
+            },
+        ],
+    },
+    {
+        path: '/dataModify',
+        component: Layout,
+        meta: {title: '数据修改', icon: 'iconfont icon-shujuxiugai'},
+        children: [
+            {
+                path: 'yzActOrderModify',
+                component: createNameComponent(() => import('@/views/data-modify/YzActOrderModify.vue')),
+                meta: {title: '医嘱修改申请', icon: 'iconfont icon-yizhu'},
+            },
+            {
+                path: 'zyChargeFeeModify',
+                component: createNameComponent(() => import('@/views/data-modify/ZyChargeFeeModify.vue')),
+                meta: {title: '住院费用修改', icon: 'iconfont icon-zhuyuanfeiyongfenxi'},
+            },
+            {
+                path: 'yzActOrderModifyVerify',
+                component: createNameComponent(() => import('@/views/data-modify/YzActOrderModifyVerify.vue')),
+                meta: {title: '医嘱修改审核', icon: 'iconfont icon-yizhuxiugaishenhe'},
+            },
+            {
+                path: 'yzTemperatureModify',
+                component: createNameComponent(() => import('@/views/data-modify/YzTemperatureModify.vue')),
+                meta: {title: '护理记录单修改', icon: 'iconfont icon-hulijiludan'},
+            },
+            {
+                path: 'secondFefund',
+                component: createNameComponent(() => import('@/views/data-modify/SecondFefund.vue')),
+                meta: {title: '二次退费', icon: 'iconfont icon-ercituifei'},
+            },
+            {
+                path: 'queryOfReceiptDetails',
+                component: createNameComponent(() => import('@/views/data-modify/QueryOfReceiptDetails.vue')),
+                meta: {title: '入库明细查询', icon: 'iconfont icon-rukuguanli'},
+            },
+            {
+                path: 'deliveryDetailsQuery',
+                component: createNameComponent(() => import('@/views/data-modify/DeliveryDetailsQuery.vue')),
+                meta: {title: '出库明细查询', icon: 'iconfont icon-chukuguanli'},
+            },
+        ],
+    },
 
-  {
-    path: '/inpatient',
-    component: Layout,
-    meta: { title: '住院模块', icon: 'iconfont icon-yiyuan' },
-    children: [
-      {
-        path: 'makeDbzFees',
-        component: createNameComponent(() => import('@/views/hospitalization/MakeDbzFees.vue')),
-        meta: { title: '单病种费用生成', icon: 'iconfont icon-danbingzhong' },
-      },
-      {
-        path: 'advrsEvnt/fillAdverseEvent',
-        component: createNameComponent(() => import('@/views/hospitalization/adverse-event/FillAderverseEvent.vue')),
-        meta: { title: '不良事件上报', icon: 'iconfont icon-buliangshijian' },
-      },
-      {
-        path: 'advrsEvnt/dealAdverseEvent',
-        component: createNameComponent(() => import('@/views/hospitalization/adverse-event/DealAdverseEvent.vue')),
-        meta: { title: '不良事件处理', icon: 'iconfont icon-buliangshijianchuli' },
-      },
-      {
-        path: 'advrsEvnt/allAdverseEvent',
-        component: createNameComponent(() => import('@/views/hospitalization/adverse-event/AllAdverseEvent.vue')),
-        meta: { title: '不良事件汇总', icon: 'iconfont icon-buliangshijianhuizong' },
-      },
-      {
-        path: 'casefrntsht/fillCaseFrontSheet',
-        component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/FillCaseFrontSheet.vue')),
-        meta: { title: '病案首页填写', icon: 'iconfont icon-binganshouyetianxie' },
-      },
-      {
-        path: 'casefrntsht/allCaseFrontSheet',
-        component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/AllCaseFrontSheet.vue')),
-        meta: { title: '病案首页汇总', icon: 'iconfont icon-binganshouye3x' },
-      },
-      {
-        path: 'casefrntsht/jieShouHuiZhen',
-        component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/JieShouHuiZhen.vue')),
-        meta: { title: '接收会诊', icon: 'iconfont icon-jieshouhuizhen' },
-      },
-      {
-        path: 'zhuYuanYiSheng',
-        component: createNameComponent(() => import('../../views/hospitalization/zhu-yuan-yi-sheng/Home.vue')),
-        meta: { title: '住院医生', icon: 'iconfont icon-zhuyuanyisheng' },
+    {
+        path: '/inpatient',
+        component: Layout,
+        meta: {title: '住院模块', icon: 'iconfont icon-yiyuan'},
         children: [
-          {
-            path: 'yiZhuLuRu',
-            component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/YiZhuLuRu.vue')),
-            meta: { title: '医嘱录入', icon: 'iconfont icon-yizhuluru' },
-          },
-          {
-            path: 'huiZhenShenQing',
-            component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/HuiZhenShenQing.vue')),
-            meta: { title: '会诊申请', icon: 'iconfont icon-huizhenshenqing' },
-          },
-          {
-            path: 'jianChaShenQing',
-            component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/JianChaShenQing.vue')),
-            meta: { title: '检查申请', icon: 'iconfont icon-jianchashenqing' },
-          },
+            {
+                path: 'makeDbzFees',
+                component: createNameComponent(() => import('@/views/hospitalization/MakeDbzFees.vue')),
+                meta: {title: '单病种费用生成', icon: 'iconfont icon-danbingzhong'},
+            },
+            {
+                path: 'advrsEvnt/fillAdverseEvent',
+                component: createNameComponent(() => import('@/views/hospitalization/adverse-event/FillAderverseEvent.vue')),
+                meta: {title: '不良事件上报', icon: 'iconfont icon-buliangshijian'},
+            },
+            {
+                path: 'advrsEvnt/dealAdverseEvent',
+                component: createNameComponent(() => import('@/views/hospitalization/adverse-event/DealAdverseEvent.vue')),
+                meta: {title: '不良事件处理', icon: 'iconfont icon-buliangshijianchuli'},
+            },
+            {
+                path: 'advrsEvnt/allAdverseEvent',
+                component: createNameComponent(() => import('@/views/hospitalization/adverse-event/AllAdverseEvent.vue')),
+                meta: {title: '不良事件汇总', icon: 'iconfont icon-buliangshijianhuizong'},
+            },
+            {
+                path: 'casefrntsht/fillCaseFrontSheet',
+                component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/FillCaseFrontSheet.vue')),
+                meta: {title: '病案首页填写', icon: 'iconfont icon-binganshouyetianxie'},
+            },
+            {
+                path: 'casefrntsht/allCaseFrontSheet',
+                component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/AllCaseFrontSheet.vue')),
+                meta: {title: '病案首页汇总', icon: 'iconfont icon-binganshouye3x'},
+            },
+            {
+                path: 'casefrntsht/jieShouHuiZhen',
+                component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/JieShouHuiZhen.vue')),
+                meta: {title: '接收会诊', icon: 'iconfont icon-jieshouhuizhen'},
+            },
+            {
+                path: 'zhuYuanYiSheng',
+                component: createNameComponent(() => import('../../views/hospitalization/zhu-yuan-yi-sheng/Home.vue')),
+                meta: {title: '住院医生', icon: 'iconfont icon-zhuyuanyisheng'},
+                children: [
+                    {
+                        path: 'yiZhuLuRu',
+                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/YiZhuLuRu.vue')),
+                        meta: {title: '医嘱录入', icon: 'iconfont icon-yizhuluru'},
+                    },
+                    {
+                        path: 'huiZhenShenQing',
+                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/HuiZhenShenQing.vue')),
+                        meta: {title: '会诊申请', icon: 'iconfont icon-huizhenshenqing'},
+                    },
+                    {
+                        path: 'jianChaShenQing',
+                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/JianChaShenQing.vue')),
+                        meta: {title: '检查申请', icon: 'iconfont icon-jianchashenqing'},
+                    },
+                    {
+                        path: 'jianYanShenQing',
+                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/JianYanShenQing.vue')),
+                        meta: {title: '检验申请', icon: 'iconfont icon-jianyanshenqing'},
+                    },
+                    {
+                        path: 'shouShuShenQing',
+                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/ShouShuShenQing.vue')),
+                        meta: {title: '手术申请', icon: 'iconfont icon-shoushushenqing', property: 'shouShuShenQing'},
+                    },
+                    {
+                        path: 'xinZengShouShuShenQing',
+                        component: createNameComponent(() => import('@/components/zhu-yuan-yi-sheng/shou-shu-shen-qing/XinZengShouShuShenQing.vue')),
+                        meta: {
+                            title: '新增手术申请',
+                            icon: 'iconfont icon-shoushushenqing',
+                            property: 'shouShuShenQing',
+                            parent: '/inpatient/zhuYuanYiSheng/shouShuShenQing',
+                            hideTabs: true
+                        },
+                    },
+                ],
+            },
         ],
-      },
-    ],
-  },
+    },
 
-  {
-    path: '/outpatient',
-    component: Layout,
-    meta: { title: '门诊模块', icon: 'iconfont icon-menzhen' },
-    children: [
-      {
-        path: 'mzGuideBill',
-        component: createNameComponent(() => import('@/views/clinic/MzGuideBill.vue')),
-        meta: { title: '门诊指引单', icon: 'iconfont icon-zhiyin' },
-      },
-      {
-        path: 'doctorInfoManagement',
-        component: createNameComponent(() => import('@/views/clinic/DoctorInfoManagement.vue')),
-        meta: { title: '医生信息管理', icon: 'iconfont icon-renyuanxinxiguanli' },
-      },
-      {
-        path: 'transferInOfExpenses',
-        component: createNameComponent(() => import('@/views/clinic/TransferInOfExpenses.vue')),
-        meta: { title: '急诊费用转入', icon: 'iconfont icon-feiyongzhuanru' },
-      },
-      {
-        path: 'wxPayRefund',
-        component: createNameComponent(() => import('@/views/clinic/WxPayRefund.vue')),
-        meta: { title: '微信支付退款', icon: 'iconfont icon-tuikuan' },
-      },
-      {
-        path: 'triage/untriaged',
-        component: createNameComponent(() => import('@/views/clinic/triage/Untriaged.vue')),
-        meta: { title: '未分诊', icon: 'iconfont icon-weifenzhen' },
-      },
-      {
-        path: 'triage/triaged',
-        component: createNameComponent(() => import('@/views/clinic/triage/Triaged.vue')),
-        meta: { title: '已分诊', icon: 'iconfont icon-yifenzhen' },
-      },
-      {
-        path: 'triage/allTriages',
-        component: createNameComponent(() => import('@/views/clinic/triage/AllTriages.vue')),
-        meta: { title: '所有挂号', icon: 'iconfont icon-suoyou' },
-      },
-      {
-        path: 'triage/triageDeptSettings',
-        component: createNameComponent(() => import('@/views/clinic/triage/DeptSettings.vue')),
-        meta: { title: '科室设置', icon: 'iconfont icon-keshi' },
-      },
-      {
-        path: 'triage/triageRoomSettings',
-        component: createNameComponent(() => import('@/views/clinic/triage/RoomSettings.vue')),
-        meta: { title: '诊室设置', icon: 'iconfont icon-zhenshiguanli' },
-      },
-      {
-        path: 'triage/triageIpManagement',
-        component: createNameComponent(() => import('@/views/clinic/triage/IpManagement.vue')),
-        meta: { title: 'IP管理', icon: 'iconfont icon-ip' },
-      },
-      {
-        path: 'triage/triageDisplaySettings',
-        component: createNameComponent(() => import('@/views/clinic/triage/DisplaySettings.vue')),
-        meta: { title: '显示管理', icon: 'iconfont icon-xianshishezhi' },
-      },
-      {
-        path: 'triage/triageFloorScreen',
-        component: createNameComponent(() => import('@/views/clinic/triage/FloorScreen.vue')),
-        meta: { title: '分诊大屏', icon: 'iconfont icon-daping' },
-      },
-    ],
-  },
-  {
-    path: '/settings',
-    component: Layout,
-    meta: { title: '设置', icon: 'iconfont icon-shezhi' },
-    children: [
-      {
-        path: 'deptPhones',
-        component: createNameComponent(() => import('@/views/settings/DeptPhones.vue')),
-        meta: { title: '科室电话', icon: 'iconfont icon-dianhua' },
-      },
-      {
-        path: 'sendNotification',
-        component: createNameComponent(() => import('@/views/settings/SendNotification.vue')),
-        meta: { title: '发送通知', icon: 'iconfont icon-fasongtongzhi' },
-      },
-      {
-        path: 'userInfo',
-        component: createNameComponent(() => import('@/views/settings/UserInfo.vue')),
-        meta: { title: '个人中心', icon: 'iconfont icon-gerenzhongxin' },
-      },
-      {
-        path: 'permission/userRoleSettings',
-        component: createNameComponent(() => import('@/views/settings/permissions/UserRoleSettings.vue')),
-        meta: { title: '人员角色管理', icon: 'iconfont icon-renyuanjueseguanli' },
-      },
-      {
-        path: 'permission/roleMenuSettings',
-        component: createNameComponent(() => import('@/views/settings/permissions/RoleMenuSettings.vue')),
-        meta: { title: '角色菜单管理', icon: 'iconfont icon-juesecaidanguanli' },
-      },
-    ],
-  },
+    {
+        path: '/outpatient',
+        component: Layout,
+        meta: {title: '门诊模块', icon: 'iconfont icon-menzhen'},
+        children: [
+            {
+                path: 'mzGuideBill',
+                component: createNameComponent(() => import('@/views/clinic/MzGuideBill.vue')),
+                meta: {title: '门诊指引单', icon: 'iconfont icon-zhiyin'},
+            },
+            {
+                path: 'doctorInfoManagement',
+                component: createNameComponent(() => import('@/views/clinic/DoctorInfoManagement.vue')),
+                meta: {title: '医生信息管理', icon: 'iconfont icon-renyuanxinxiguanli'},
+            },
+            {
+                path: 'transferInOfExpenses',
+                component: createNameComponent(() => import('@/views/clinic/TransferInOfExpenses.vue')),
+                meta: {title: '急诊费用转入', icon: 'iconfont icon-feiyongzhuanru'},
+            },
+            {
+                path: 'wxPayRefund',
+                component: createNameComponent(() => import('@/views/clinic/WxPayRefund.vue')),
+                meta: {title: '微信支付退款', icon: 'iconfont icon-tuikuan'},
+            },
+            {
+                path: 'triage/untriaged',
+                component: createNameComponent(() => import('@/views/clinic/triage/Untriaged.vue')),
+                meta: {title: '未分诊', icon: 'iconfont icon-weifenzhen'},
+            },
+            {
+                path: 'triage/triaged',
+                component: createNameComponent(() => import('@/views/clinic/triage/Triaged.vue')),
+                meta: {title: '已分诊', icon: 'iconfont icon-yifenzhen'},
+            },
+            {
+                path: 'triage/allTriages',
+                component: createNameComponent(() => import('@/views/clinic/triage/AllTriages.vue')),
+                meta: {title: '所有挂号', icon: 'iconfont icon-suoyou'},
+            },
+            {
+                path: 'triage/triageDeptSettings',
+                component: createNameComponent(() => import('@/views/clinic/triage/DeptSettings.vue')),
+                meta: {title: '科室设置', icon: 'iconfont icon-keshi'},
+            },
+            {
+                path: 'triage/triageRoomSettings',
+                component: createNameComponent(() => import('@/views/clinic/triage/RoomSettings.vue')),
+                meta: {title: '诊室设置', icon: 'iconfont icon-zhenshiguanli'},
+            },
+            {
+                path: 'triage/triageIpManagement',
+                component: createNameComponent(() => import('@/views/clinic/triage/IpManagement.vue')),
+                meta: {title: 'IP管理', icon: 'iconfont icon-ip'},
+            },
+            {
+                path: 'triage/triageDisplaySettings',
+                component: createNameComponent(() => import('@/views/clinic/triage/DisplaySettings.vue')),
+                meta: {title: '显示管理', icon: 'iconfont icon-xianshishezhi'},
+            },
+            {
+                path: 'triage/triageFloorScreen',
+                component: createNameComponent(() => import('@/views/clinic/triage/FloorScreen.vue')),
+                meta: {title: '分诊大屏', icon: 'iconfont icon-daping'},
+            },
+        ],
+    },
+    {
+        path: '/settings',
+        component: Layout,
+        meta: {title: '设置', icon: 'iconfont icon-shezhi'},
+        children: [
+            {
+                path: 'deptPhones',
+                component: createNameComponent(() => import('@/views/settings/DeptPhones.vue')),
+                meta: {title: '科室电话', icon: 'iconfont icon-dianhua'},
+            },
+            {
+                path: 'sendNotification',
+                component: createNameComponent(() => import('@/views/settings/SendNotification.vue')),
+                meta: {title: '发送通知', icon: 'iconfont icon-fasongtongzhi'},
+            },
+            {
+                path: 'userInfo',
+                component: createNameComponent(() => import('@/views/settings/UserInfo.vue')),
+                meta: {title: '个人中心', icon: 'iconfont icon-gerenzhongxin'},
+            },
+            {
+                path: 'permission/userRoleSettings',
+                component: createNameComponent(() => import('@/views/settings/permissions/UserRoleSettings.vue')),
+                meta: {title: '人员角色管理', icon: 'iconfont icon-renyuanjueseguanli'},
+            },
+            {
+                path: 'permission/roleMenuSettings',
+                component: createNameComponent(() => import('@/views/settings/permissions/RoleMenuSettings.vue')),
+                meta: {title: '角色菜单管理', icon: 'iconfont icon-juesecaidanguanli'},
+            },
+        ],
+    },
 
-  {
-    path: '/utilities',
-    component: Layout,
-    meta: { title: '通用工具', icon: 'iconfont icon-tool' },
-    children: [
-      {
-        path: 'parseJson',
-        component: createNameComponent(() => import('@/views/utilities/ParseJson.vue')),
-        meta: { title: 'JSON格式化', icon: 'iconfont icon-fasongtongzhi' },
-      },
-    ],
-  },
+    {
+        path: '/utilities',
+        component: Layout,
+        meta: {title: '通用工具', icon: 'iconfont icon-tool'},
+        children: [
+            {
+                path: 'parseJson',
+                component: createNameComponent(() => import('@/views/utilities/ParseJson.vue')),
+                meta: {title: 'JSON格式化', icon: 'iconfont icon-fasongtongzhi'},
+            },
+        ],
+    },
 ]
 
 export default route

+ 14 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/Home.vue

@@ -2,7 +2,7 @@
   <el-container>
     <el-container>
       <el-aside style="width:auto !important;">
-        <huan-zhe-lie-biao></huan-zhe-lie-biao>
+        <huan-zhe-lie-biao v-show="xianShiLieBiao"></huan-zhe-lie-biao>
       </el-aside>
       <el-main>
         <huan-zhe-xin-xi></huan-zhe-xin-xi>
@@ -18,11 +18,12 @@
 
 <script>
 import store from '../../../store'
-import {computed, ref} from "vue";
+import {computed, onMounted, ref, watch} from "vue";
 import HuanZheLieBiao from "../../../components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuanZheLieBiao.vue";
 import HuanZheXinXi from "../../../components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuanZheXinXi.vue";
 import YiZhuLuRuZhuJian from "./YiZhuLuRu.vue";
 import GongJuZuJian from "../../../components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/GongJuZuJian.vue";
+import router from "@/router";
 
 export default {
   name: "Home",
@@ -32,8 +33,19 @@ export default {
       return store.state.app.windowSize.h
     })
 
+    const xianShiLieBiao = ref(true)
+
+    watch(() => router.currentRoute.value.path, () => {
+      xianShiLieBiao.value = !router.currentRoute.value.meta.parent;
+    })
+
+    onMounted(() => {
+      xianShiLieBiao.value = !router.currentRoute.value.meta.parent;
+    })
+
     return {
       tableHeight,
+      xianShiLieBiao
     }
   }
 }

+ 3 - 3
src/views/hospitalization/zhu-yuan-yi-sheng/HuiZhenShenQing.vue

@@ -20,9 +20,9 @@
             <span>{{ hzTypeName(scope.row.hzType) }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="接受会诊日期" prop="hzDate"></el-table-column>
+        <el-table-column label="接受会诊日期" prop="hzDate" show-overflow-tooltip></el-table-column>
         <el-table-column label="接受会诊医生" prop="hzDoctor2Name"></el-table-column>
-        <el-table-column label="接受会诊意见" prop="hzComment"></el-table-column>
+        <el-table-column label="接受会诊意见" prop="hzComment" show-overflow-tooltip></el-table-column>
         <el-table-column fixed="right" label="操作" width="150">
           <template #default="scope">
             <el-popconfirm
@@ -39,7 +39,7 @@
               </template>
             </el-popconfirm>
             <el-button circle icon="el-icon-view" @click="chaKanHuiZhenDan(scope.row)"></el-button>
-            <el-button circle icon="el-icon-download" @click="dianJiDaYingHuiZhen(scope.row)"></el-button>
+            <el-button circle icon="iconfont icon-dayin" @click="dianJiDaYingHuiZhen(scope.row)"></el-button>
           </template>
         </el-table-column>
       </el-table>

+ 29 - 14
src/views/hospitalization/zhu-yuan-yi-sheng/JianChaShenQing.vue

@@ -18,12 +18,12 @@
       ></el-date-picker>
       <el-button icon="el-icon-search" type="primary" @click="dianJiChaXunHuanZheJianCha(0)">查询</el-button>
       <el-divider direction="vertical"></el-divider>
-      <tian-jia-jian-cha ref="tianJiaJianCha"></tian-jia-jian-cha>
+      <tian-jia-jian-cha-jian-yan ref="tianJiaJianCha" :jian-cha="true"></tian-jia-jian-cha-jian-yan>
       <el-button icon="el-icon-plus" type="success" @click="daKaiTianJiaJianCha">添加</el-button>
     </el-header>
     <el-container>
       <el-aside style="width: 330px;">
-        <el-table :data="jianChaShuJu.data" :height="windowSize.h / 1.4" highlight-current-row>
+        <el-table :data="jianChaShuJu.data" :height="windowSize.h / 1.4" :row-class-name="tableRowClassName">
           <el-table-column label="项目名称" prop="orderName" show-overflow-tooltip></el-table-column>
           <el-table-column label="时间" prop="startTime">
             <template #default="scope">
@@ -32,9 +32,10 @@
           </el-table-column>
           <el-table-column label="操作" width="80">
             <template #default="scope">
-              <el-button circle icon="el-icon-view" title="查看" @click="dianJiaJianChaXiangQing(scope.row)"></el-button>
+              <el-button circle icon="el-icon-view" title="查看"
+                         @click="dianJiaJianChaXiangQing(scope.row,scope.$index)"></el-button>
               <el-button circle icon="iconfont icon-dayin" title="打印"
-                         @click="dianJiDaYingJianCha(scope.row)"></el-button>
+                         @click="dianJiDaYingJianCha(scope.row,scope.$index)"></el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -59,24 +60,25 @@
 import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import {computed, ref, watch} from "vue";
 import {
-  huoQuHuanZheJianChaMing,
   huoQuJianChaShenQing,
+  huoQuJianYanJianChaMing,
   huoQuShengQingXiangQing
-} from "@/api/zhu-yuan-yi-sheng/jian-cha-shen-qing";
+} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
 import store from "@/store";
 import DaYingJianCha from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/DaYingJianCha.vue";
 import {getDateRangeFormatDate, huanHangXianShi} from "@/utils/date";
 import {shortcuts} from '@/data/shortcuts'
-import TianJiaJianCha from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianCha.vue";
+import TianJiaJianChaJianYan from "@/components/zhu-yuan-yi-sheng/TianJiaJianChaJianYan.vue";
 
 export default {
   name: "JianChaShenQing",
-  components: {TianJiaJianCha, DaYingJianCha},
+  components: {TianJiaJianChaJianYan, DaYingJianCha},
   setup() {
     const windowSize = computed(() => {
       return store.state.app.windowSize
     })
 
+    const tableIndex = ref(-1);
     const orderName = ref('')
     const dateRange = ref(null)
     const jianChaShuJu = ref({
@@ -114,13 +116,15 @@ export default {
       dianJiChaXunHuanZheJianCha(jianChaShuJu.value.total)
     }
 
-    const dianJiaJianChaXiangQing = ({reqNo}) => {
+    const dianJiaJianChaXiangQing = ({reqNo}, index) => {
+      tableIndex.value = index
       huoQuShengQingXiangQing(reqNo).then((res) => {
         daYingJianChaRef.value.jieShouShuJu(res)
       })
     }
 
-    const dianJiDaYingJianCha = ({reqNo}) => {
+    const dianJiDaYingJianCha = ({reqNo}, index) => {
+      tableIndex.value = index
       huoQuShengQingXiangQing(reqNo).then((res) => {
         daYingJianChaRef.value.jieShouShuJu(res)
         setTimeout(() => {
@@ -131,14 +135,22 @@ export default {
 
     const querySearchAsync = (val, cb) => {
       if (youWuXuanZheHuanZhe()) return
-      huoQuHuanZheJianChaMing(val, huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, huanZheXinXi.value.bedNo).then(res => {
+      huoQuJianYanJianChaMing(val, huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, huanZheXinXi.value.bedNo, '3').then(res => {
         cb(res)
       })
     }
 
     const daKaiTianJiaJianCha = () => {
       if (youWuXuanZheHuanZhe()) return
-      tianJiaJianCha.value.tianJiaJianChaHuiHua = true
+      tianJiaJianCha.value.dialog = true
+    }
+
+    const tableRowClassName = ({rowIndex}) => {
+      if (rowIndex === tableIndex.value) {
+        return 'success-row'
+      } else {
+        return ''
+      }
     }
     watch(() => huanZheXinXi.value, () => {
       dianJiChaXunHuanZheJianCha(0)
@@ -158,7 +170,8 @@ export default {
       querySearchAsync,
       shortcuts,
       tianJiaJianCha,
-      daKaiTianJiaJianCha
+      daKaiTianJiaJianCha,
+      tableRowClassName
     }
   }
 
@@ -166,5 +179,7 @@ export default {
 </script>
 
 <style scoped>
-
+:deep(.el-table .success-row) {
+  background: rgba(71, 123, 220, 0.69);
+}
 </style>

+ 136 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/JianYanShenQing.vue

@@ -0,0 +1,136 @@
+<template>
+  <el-container>
+    <el-header style="height: 30px">
+      检验名称:
+      <el-autocomplete v-model="chaXunJianYanTiaoJian.orderName" :fetch-suggestions="querySearchAsync" clearable
+                       style="width: 120px" @keyup.enter="dianJiChaXunJianYan(0)"></el-autocomplete>
+      检验时间:
+      <el-date-picker
+          v-model="dateRange"
+          :shortcuts="shortcuts"
+          clearable
+          end-placeholder="结束日期"
+          placeholder="选择日期"
+          range-separator="至"
+          size="mini"
+          start-placeholder="开始日期"
+          style="width: 280px"
+          type="daterange"
+      ></el-date-picker>
+      <el-divider direction="vertical"></el-divider>
+      <el-button icon="el-icon-search" type="primary" @click="dianJiChaXunJianYan(0)">查询</el-button>
+      <el-button icon="el-icon-plus" type="primary" @click="tianJiaJianYan.dialog = true">新增</el-button>
+      <tian-jia-jian-cha-jian-yan ref="tianJiaJianYan" :jian-cha="false"></tian-jia-jian-cha-jian-yan>
+    </el-header>
+    <el-main>
+      <el-table :data="jianYanShuJu" :height="windowSize.h / 1.5">
+        <el-table-column label="医嘱号" prop="actOrderNo"></el-table-column>
+        <el-table-column label="项目名称" prop="groupName"></el-table-column>
+        <el-table-column label="执行科室" prop="execDeptName"></el-table-column>
+        <el-table-column label="标本" prop="inspectStuffName"></el-table-column>
+        <el-table-column label="申请备注" prop="reqComment" show-overflow-tooltip></el-table-column>
+        <el-table-column label="申请时间" prop="reqDate" show-overflow-tooltip></el-table-column>
+        <el-table-column label="申请科室" prop="reqDeptName"></el-table-column>
+        <el-table-column label="申请医生" prop="reqDoctorName"></el-table-column>
+      </el-table>
+      <el-pagination
+          :current-page="chaXunJianYanTiaoJian.currentPage"
+          :page-size="chaXunJianYanTiaoJian.pageSize"
+          :page-sizes="[10, 20, 30, 40]"
+          :total="chaXunJianYanTiaoJian.currentPage"
+          layout="total, sizes, prev, pager, next, jumper"
+          @size-change="jianYanTiaoShu"
+          @current-change="jianYanFenYe">
+      </el-pagination>
+    </el-main>
+  </el-container>
+</template>
+
+<script>
+import {computed, ref, watch} from "vue";
+import {shortcuts} from '@/data/shortcuts'
+import store from "@/store";
+import {getDateRangeFormatDate} from "@/utils/date";
+import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {huoQuJianYan, huoQuJianYanJianChaMing} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
+import TianJiaJianChaJianYan from "@/components/zhu-yuan-yi-sheng/TianJiaJianChaJianYan.vue";
+
+export default {
+  name: "JianYanShenQing",
+  components: {TianJiaJianChaJianYan},
+  setup() {
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+
+    const dateRange = ref(null)
+    const jianYanShuJu = ref([])
+    const tianJiaJianYan = ref()
+
+    const chaXunJianYanTiaoJian = ref({
+      orderName: '',
+      startTime: '',
+      endTime: '',
+      currentPage: 1,
+      pageSize: 20,
+      total: 0,
+      patNo: '',
+      times: '',
+    })
+
+    const dianJiChaXunJianYan = (val) => {
+      chaXunJianYanTiaoJian.value.total = val
+      let dateS = getDateRangeFormatDate(dateRange.value)
+      chaXunJianYanTiaoJian.value.startTime = dateS.startTime
+      chaXunJianYanTiaoJian.value.endTime = dateS.endTime
+      chaXunJianYanTiaoJian.value.patNo = huanZheXinXi.value.inpatientNo
+      chaXunJianYanTiaoJian.value.times = huanZheXinXi.value.admissTimes
+      huoQuJianYan(chaXunJianYanTiaoJian.value).then((res) => {
+        if (val === 0) {
+          chaXunJianYanTiaoJian.value.total = res.total
+        }
+        jianYanShuJu.value = res.records
+      })
+    }
+
+    const jianYanTiaoShu = (val) => {
+      chaXunJianYanTiaoJian.value.currentPage = 1
+      chaXunJianYanTiaoJian.value.pageSize = val
+      dianJiChaXunJianYan(0)
+    }
+
+    const jianYanFenYe = (val) => {
+      chaXunJianYanTiaoJian.value.currentPage = val
+      dianJiChaXunJianYan(chaXunJianYanTiaoJian.value.total)
+    }
+
+    const querySearchAsync = (val, cb) => {
+      if (youWuXuanZheHuanZhe()) return
+      huoQuJianYanJianChaMing(val, huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, huanZheXinXi.value.bedNo, '2').then(res => {
+        cb(res)
+      })
+    }
+
+    watch(() => huanZheXinXi.value, () => {
+      dianJiChaXunJianYan(0)
+    })
+
+    return {
+      chaXunJianYanTiaoJian,
+      shortcuts,
+      dateRange,
+      dianJiChaXunJianYan,
+      windowSize,
+      jianYanTiaoShu,
+      jianYanFenYe,
+      querySearchAsync,
+      jianYanShuJu,
+      tianJiaJianYan
+    }
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 187 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/ShouShuShenQing.vue

@@ -0,0 +1,187 @@
+<template>
+  <el-container>
+    <el-header style="height: 30px">
+      检查名称:
+      <el-autocomplete v-model="orderName" :fetch-suggestions="querySearchAsync" clearable
+                       style="width: 220px" @keyup.enter="dianJiChaXunShouShu(0)"></el-autocomplete>
+      申请时间:
+      <el-date-picker
+          v-model="dateRange"
+          :shortcuts="shortcuts"
+          end-placeholder="结束日期"
+          placeholder="选择日期"
+          range-separator="至"
+          size="mini"
+          start-placeholder="开始日期"
+          style="width: 280px"
+          type="daterange"
+      ></el-date-picker>
+      <el-button icon="el-icon-search" type="primary" @click="dianJiChaXunShouShu(0)">查询</el-button>
+      <el-button icon="el-icon-plus" type="success" @click="dianJiXinZhenShouShu">新增</el-button>
+    </el-header>
+    <el-container>
+      <el-aside>
+        <el-table :data="shouShuShuJu.data" :height="windowSize.h / 1.4" :row-class-name="rowClass">
+          <el-table-column label="申请号" prop="recordId" show-overflow-tooltip></el-table-column>
+          <el-table-column label="项目名称" prop="opName" show-overflow-tooltip></el-table-column>
+          <el-table-column label="手术时间" prop="opDatetime" show-overflow-tooltip></el-table-column>
+          <el-table-column fixed="right" label="操作" width="80">
+            <template #default="scope">
+              <el-button circle icon="el-icon-view" title="查看"
+                         @click="dianJiChaKanShouShu(scope.row,scope.$index)"></el-button>
+              <el-button circle icon="iconfont icon-dayin" title="打印"
+                         @click="dianJiDaYing(scope.row,scope.$index)"></el-button>
+            </template>
+          </el-table-column>
+        </el-table>
+        <el-pagination
+            :current-page="shouShuShuJu.currentPage"
+            :page-size="shouShuShuJu.pageSize"
+            :total="shouShuShuJu.total"
+            layout="total,prev, pager, next"
+            small
+            @current-change="handleCurrentChange">
+        </el-pagination>
+      </el-aside>
+      <el-main>
+        <da-ying-shou-shu-sheng-qing-dan ref="daYing" :height="windowSize.h / 1.4"></da-ying-shou-shu-sheng-qing-dan>
+      </el-main>
+    </el-container>
+  </el-container>
+</template>
+
+<script>
+import {computed, ref, watch} from "vue";
+import {
+  huoQuShouShu,
+  huoQuShouShuMingCheng,
+  huoQuShouShuShenQingDaYing
+} from "@/api/zhu-yuan-yi-sheng/shou-shu-shen-qing";
+import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {shortcuts} from '@/data/shortcuts'
+import store from "@/store";
+import DaYingShouShuShengQingDan from "@/components/zhu-yuan-yi-sheng/shou-shu-shen-qing/DaYingShouShuShengQingDan.vue";
+import {stringNotBlank} from "@/utils/blank-utils";
+import router from "@/router";
+
+export default {
+  name: "ShouShuShenQing",
+  components: {DaYingShouShuShengQingDan},
+  setup() {
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+
+    const orderName = ref('')
+    const dateRange = ref([])
+    const daYing = ref()
+    const tableIndex = ref(-1)
+
+    const shouShuShuJu = ref({
+      data: [],
+      currentPage: 1,
+      pageSize: 20,
+      total: 0
+    })
+
+    const dianJiChaXunShouShu = (val) => {
+      const data = {
+        patNo: huanZheXinXi.value.inpatientNo,
+        times: huanZheXinXi.value.admissTimes,
+        currentPage: shouShuShuJu.value.currentPage,
+        pageSize: shouShuShuJu.value.pageSize,
+        total: val
+      }
+      huoQuShouShu(data).then((res) => {
+        if (val === 0) {
+          shouShuShuJu.value.total = res.total
+        }
+        shouShuShuJu.value.data = res.records
+      })
+    }
+
+    const querySearchAsync = (val, cd) => {
+      if (youWuXuanZheHuanZhe()) return
+      if (val.length > 1) {
+        huoQuShouShuMingCheng(huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, val).then((res) => {
+          cd(res)
+        })
+      }
+    }
+
+    const handleCurrentChange = (val) => {
+      shouShuShuJu.value.currentPage = val
+      dianJiChaXunShouShu(shouShuShuJu.value.total)
+    }
+
+    const dianJiDaYing = (row, index) => {
+      huoQuShouShuShenQingDaYing(huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, row.recordId).then((res) => {
+        daYing.value.data = res
+        tableIndex.value = index
+        if (stringNotBlank(res.applyDate)) {
+          res.applyDate = res.applyDate.split(" ")[0]
+        }
+        if (stringNotBlank(res.opDatetime)) {
+          res.opDatetime = res.opDatetime.split(" ")[0]
+        }
+        setTimeout(() => {
+          daYing.value.daYing()
+        }, 500)
+      })
+    }
+
+    const dianJiChaKanShouShu = (row, index) => {
+      huoQuShouShuShenQingDaYing(huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, row.recordId).then((res) => {
+        daYing.value.data = res
+        tableIndex.value = index
+        console.log(res)
+        if (stringNotBlank(res.applyDate)) {
+          res.applyDate = res.applyDate.split(" ")[0]
+        }
+        if (stringNotBlank(res.opDatetime)) {
+          res.opDatetime = res.opDatetime.split(" ")[0]
+        }
+      })
+    }
+
+    watch(() => huanZheXinXi.value, () => {
+      dianJiChaXunShouShu(0)
+    })
+
+    const rowClass = ({rowIndex}) => {
+      if (rowIndex === tableIndex.value) {
+        return 'success-row'
+      } else {
+        return ''
+      }
+    }
+
+    const dianJiXinZhenShouShu = () => {
+      router.push('/inpatient/zhuYuanYiSheng/xinZengShouShuShenQing')
+    }
+
+
+    return {
+      orderName,
+      dianJiChaXunShouShu,
+      dateRange,
+      shortcuts,
+      querySearchAsync,
+      shouShuShuJu,
+      windowSize,
+      handleCurrentChange,
+      dianJiChaKanShouShu,
+      dianJiDaYing,
+      daYing,
+      rowClass,
+      dianJiXinZhenShouShu
+    }
+  }
+}
+</script>
+
+<style scoped>
+:deep(.el-table .success-row) {
+  background: rgba(71, 123, 220, 0.69);
+}
+</style>

+ 24 - 10
src/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng.js

@@ -11,20 +11,16 @@ export const huanZheXinXi = ref({})
 export const selectWardCode = ref(0)
 // 是否点击了修改整个模板
 export const muBanMing = ref({})
+
 // 初始化不弹出 提示信息
-let chuShiHua = 0;
 
 export function youWuXuanZheHuanZhe() {
     if (stringIsBlank(huanZheXinXi.value.inpatientNo)) {
-        if (chuShiHua === 0) {
-            chuShiHua += 1
-        } else {
-            ElMessage({
-                message: '请先选择患者',
-                showClose: true,
-                type: 'error'
-            })
-        }
+        ElMessage({
+            message: '请先选择患者',
+            showClose: true,
+            type: 'error'
+        })
         return true
     }
     return false
@@ -39,5 +35,23 @@ export function getSelfBuy(val) {
             return "嘱托"
         case '3':
             return "基数药"
+        default:
+            return "";
+    }
+}
+
+export function shouShuDengJi(val) {
+    if (stringIsBlank(val)) return ""
+    switch (val) {
+        case "1":
+            return "四级";
+        case "2":
+            return "三级";
+        case "3":
+            return "二级";
+        case "4":
+            return "一级";
+        default:
+            return "";
     }
 }