瀏覽代碼

完成会诊申请

xiaochan 3 年之前
父節點
當前提交
39bbcdb7bf

+ 10 - 2
src/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru.js

@@ -125,11 +125,19 @@ export function muBanCaoZuo(patternCode, patternName, deptCode, sortNo, flag) {
     })
 }
 
-export function yiZhuChaoZuo(actOrderNo, flag) {
+export function yiZhuChaoZuo(actOrderNo, flag, content) {
     return request({
         url: url + '/yiZhuChaoZuo',
         method: 'get',
-        params: {actOrderNo, flag},
+        params: {actOrderNo, flag, content},
+    })
+}
+
+export function piLiangXiuGaiTingZhiShiJian(data) {
+    return request({
+        url: url + '/piLiangXiuGaiTingZhiShiJian',
+        method: 'post',
+        data,
     })
 }
 

+ 190 - 0
src/components/huiZhenDaYing/DaYingHuiZhen.vue

@@ -0,0 +1,190 @@
+<template>
+  <el-main :style="{maxHeight:  windowSize.h - 55 + 'px',overflowY: 'auto'}">
+    <div class="main-info-parent"
+         style="padding: 0 20px;overflow: hidden">
+      <div id="huiZhenXinXiDaYin">
+        <h1 style="text-align: center; font-size: 30px">湖南泰和医院</h1>
+        <h4 style="text-align: center; font-size: 17px; margin-top: 0px">会 诊 记 录 单</h4>
+        <div class="divHuanZheXinXi">
+          <div class="huanZheXinXi" style="margin-left: 20px">住院号:{{ huanZheXinXi.inpatientNo }}</div>
+          <div class="huanZheXinXi" style="margin-left: 25px">姓名:{{ huanZheXinXi.name }}</div>
+          <div class="huanZheXinXi">性别:{{ cptSex(huanZheXinXi.sex) }}</div>
+          <div class="huanZheXinXi" style="width: 90px">年龄:{{ huanZheXinXi.age }}</div>
+          <div class="huanZheXinXi" style="width: 140px">科室:{{ huanZheXinXi.deptCodeName }}</div>
+          <div class="huanZheXinXi">床号:{{ huanZheXinXi.bedNo }}</div>
+        </div>
+
+        <div class="huiZhenBody">
+          <div>
+            <div>
+              请
+              <div class="reqDept">{{ huanZheXinXi.reqDept1 }}</div>
+              会诊
+              <div class="huiZhenJiBie">会诊类别:{{ hzLeiBie(huanZheXinXi.hzType) }}</div>
+            </div>
+          </div>
+          <!-- 病情简介 -->
+          <div class="zhenDuanBianJu">
+            病情简介 <br/>
+            <textarea v-model="huanZheXinXi.reqComment" class="zhenDuanTextarea" readonly="value"
+                      style="height: 154px"/>
+          </div>
+
+          <!-- 目前主要诊断 -->
+          <div class="zhenDuanBianJu">
+            目前主要诊断 <br/>
+            <textarea v-model="huanZheXinXi.hzZd" class="zhenDuanTextarea" readonly
+                      style="height: 50px"></textarea>
+          </div>
+
+          <!-- 会诊目的 -->
+          <div class="zhenDuanBianJu">
+            会诊目的 <br/>
+            <textarea v-model="huanZheXinXi.hzMd" class="zhenDuanTextarea" readonly
+                      style="height: 50px"></textarea>
+          </div>
+          <div class="qingQiuHuiZhenXinXi">
+            <div class="div1">请求会诊科室:{{ huanZheXinXi.deptCodeName }}</div>
+            <div class="div2">会诊申请医师:{{ huanZheXinXi.reqDoctor }}</div>
+            <div>申请时间:{{ huanZheXinXi.reqDate }}</div>
+          </div>
+        </div>
+        <!-- 会诊意见  -->
+        <div class="huiZhenBody">
+          <!-- 会诊意见 -->
+          <div class="zhenDuanBianJu">
+            会诊意见
+            <br/>
+            <textarea
+                v-model="huanZheXinXi.hzComment"
+                :readonly="laiYuan === 2 ? 'readonly' : false "
+                autoHeight="true"
+                class="zhenDuanTextarea"
+                maxlength="1100"
+                onkeydown="if(event.keyCode === 13)event.returnValue = false;"
+                style="height: 329px">
+                </textarea>
+          </div>
+          <div class="qingQiuHuiZhenXinXi">
+            <div class="div1">会诊科室:{{ huanZheXinXi.reqDept1 }}</div>
+            <div class="div2">医师:{{ huanZheXinXi.hzDoctor2Name }}</div>
+            <div>会诊时间:{{ huanZheXinXi.hzDate }}</div>
+          </div>
+        </div>
+      </div>
+    </div>
+  </el-main>
+</template>
+
+<script>
+import store from "@/store";
+import {ref} from "@vue/reactivity";
+import {cptSex} from '@/utils/computed'
+import '@/css/hui-zhen-ji-lv-dan.css'
+import {computed, onMounted} from "vue";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+import {huiZhenJiLvDanCss} from "@/data/css-for-print";
+import {getServerDateApi} from "@/api/public-api";
+
+export default {
+  name: "JieShouHuiZhenDaYing",
+  props: {
+    laiYuan: {
+      type: Number,
+      default: 1
+    }
+  },
+  setup(props, cxt) {
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
+
+    /**
+     * 患者信息
+     * @type {Ref<UnwrapRef<{}>>}
+     */
+    const huanZheXinXi = ref({})
+
+    function shiJian() {
+      if (props.laiYuan === 1) {
+        getServerDateApi().then((res) => {
+          huanZheXinXi.value.hzDate = res
+        })
+      }
+    }
+
+    const huiZhenXinXiXiangQing = (val) => {
+      shiJian()
+      huanZheXinXi.value = val
+    }
+
+    const mainInfo = {
+      padding: '0 20px',
+      overflowY: 'scroll',
+      scrollbarWidth: 'none'
+    }
+
+    const daYing = () => {
+      shiJian()
+      setTimeout(() => {
+        // 在vue 中使用 v-model 绑定的 都需要 这样不然没有数据
+        const allTextArea = document.body.getElementsByTagName('textarea')
+        const textInput = document.body.getElementsByTagName('input')
+        for (let i = 0; i < textInput.length; i++) {
+          textInput[i].setAttribute('value', textInput[i].value)
+        }
+        for (let i = 0; i < allTextArea.length; i++) {
+          allTextArea[i].innerText = allTextArea[i].value
+        }
+        // A4: 210毫米 × 297毫米 = 793.70px *  1122.52px
+        let LODOP = getLodop()
+        // 导入css样式,以及 内容
+        const strFormHtml = huiZhenJiLvDanCss + '<body>' + document.getElementById('huiZhenXinXiDaYin').innerHTML + '</body>';
+        LODOP.PRINT_INIT('会诊记录单') // 初始化打印机 名字
+        LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '') // 设置纸张大小  A4
+        LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
+        LODOP.ADD_PRINT_HTM('2mm', '5mm', '100%', '100%', strFormHtml) //要打印的内容
+        LODOP.SET_PRINT_STYLE('ItemType', 3) //设置对象风格
+        LODOP.ADD_PRINT_TEXT('290mm', '190mm', '20mm', '2mm', '第#页/共&页') //增加纯文本项
+        LODOP.PREVIEW() // 关闭
+      }, 100)
+    }
+
+    const fanHuiXinXi = () => {
+      cxt.emit("fanHuiXinXi", {huanZheXinXi})
+    }
+
+    onMounted(() => {
+      console.log(props.laiYuan)
+      initLodop()
+    })
+
+    return {
+      mainInfo,
+      huanZheXinXi,
+      cptSex,
+      hzLeiBie,
+      huiZhenXinXiXiangQing,
+      daYing,
+      windowSize,
+      fanHuiXinXi,
+      laiYuan: props.laiYuan
+    }
+  }
+}
+
+function hzLeiBie(val) {
+  switch (val) {
+    case '1':
+      return '常规会诊'
+    case '2':
+      return '疑难病例会诊'
+    case '3':
+      return '急救会诊'
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 21 - 22
src/components/zhu-yuan-yi-sheng/hui-zhen-shen-qing/TianJiaHuiZhenShenQing.vue

@@ -1,16 +1,16 @@
 <template>
   <el-dialog v-model="huiZhenShenQingDialog" title="会诊申请" top="15%">
-    <el-form label-width="100px" :model="huiZhenShenQing" ref="huiZhenShenQingForm" :rules="huiZhenShenQingRules">
+    <el-form ref="huiZhenShenQingForm" :model="huiZhenShenQing" :rules="huiZhenShenQingRules" label-width="100px">
       <el-form-item label="会诊科室:" prop="reqDept1">
         <el-select
             v-model="huiZhenShenQing.huiZhenKeShi"
-            @change="huiZhenYiShengPanDuan"
-            placeholder="根据拼音首字母查找"
-            value-key="code"
-            filterable
+            :remote-method="remoteMethodHuiZhenKeShi"
             clearable
+            filterable
+            placeholder="根据拼音首字母查找"
             remote
-            :remote-method="remoteMethodHuiZhenKeShi"
+            value-key="code"
+            @change="huiZhenYiShengPanDuan"
         >
           <el-option v-for="item in deptList" :key="item.code" :label="item.name"
                      :value="{name:item.name,code:item.code,dept:'科室'}">
@@ -22,45 +22,45 @@
       </el-form-item>
       <el-form-item label="会诊类别:" prop="hzLevel">
         <el-select v-model="huiZhenShenQing.hzLevel" placeholder="请选择">
-          <el-option v-for="item in huiZhenLeiBieList" :key="item.code" :label="item.name" clearable
-                     :value="item.code"></el-option>
+          <el-option v-for="item in huiZhenLeiBieList" :key="item.code" :label="item.name" :value="item.code"
+                     clearable></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="会诊级别:" prop="hzType">
-        <el-select v-model="huiZhenShenQing.hzType" placeholder="请选择"
-                   @change="huiZhenYiShengPanDuan" clearable
-                   :remote-method="remoteMethodHuiZhenKeShi">
+        <el-select v-model="huiZhenShenQing.hzType" :remote-method="remoteMethodHuiZhenKeShi"
+                   clearable placeholder="请选择"
+                   @change="huiZhenYiShengPanDuan">
           <el-option v-for="item in huiZhenTypeList" :key="item.code" :label="item.name"
                      :value="item.code"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="会诊医生:" prop="hzDoctor1">
-        <el-select v-model="huiZhenShenQing.hzDoctor1" filterable clearable>
+        <el-select v-model="huiZhenShenQing.hzDoctor1" clearable filterable>
           <el-option v-for="item in huiZhenYiShengList" :key="item.code" :label="item.name"
                      :value="item.code"></el-option>
         </el-select>
       </el-form-item>
       <el-form-item label="病情简介:" prop="reqComment">
-        <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="huiZhenShenQing.reqComment"></el-input>
+        <el-input v-model="huiZhenShenQing.reqComment" :rows="3" placeholder="请输入内容" type="textarea"></el-input>
       </el-form-item>
       <el-form-item label="目前主要诊断:" prop="hzZd">
-        <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="huiZhenShenQing.hzZd" maxlength="100"
-                  show-word-limit></el-input>
-        <el-button @click="dianJiChaXunZhuYaoZhenDuan(1)" type="primary">本院主要诊断</el-button>
-        <el-button @click="dianJiChaXunZhuYaoZhenDuan(2)" type="primary">医保主要诊断</el-button>
+        <el-input v-model="huiZhenShenQing.hzZd" :rows="3" maxlength="100" placeholder="请输入内容" show-word-limit
+                  type="textarea"></el-input>
+        <el-button type="primary" @click="dianJiChaXunZhuYaoZhenDuan(1)">本院主要诊断</el-button>
+        <el-button type="primary" @click="dianJiChaXunZhuYaoZhenDuan(2)">医保主要诊断</el-button>
       </el-form-item>
       <el-form-item label="会诊目的:" prop="hzMd">
-        <el-input type="textarea" :rows="3" placeholder="请输入内容" v-model="huiZhenShenQing.hzMd"></el-input>
+        <el-input v-model="huiZhenShenQing.hzMd" :rows="3" placeholder="请输入内容" type="textarea"></el-input>
       </el-form-item>
-      <el-button type="success" @click="huiZhenShenQingClick" style="margin-left: 20px">申请</el-button>
+      <el-button style="margin-left: 20px" type="success" @click="huiZhenShenQingClick">申请</el-button>
       <el-tag style="margin-left: 20px">申请人:{{ huiZhenShenQing.name }}</el-tag>
       <el-tag style="margin-left: 20px">申请时间:{{ huiZhenShenQing.inputDate }}</el-tag>
     </el-form>
   </el-dialog>
   <el-dialog v-model="chaXunZhuYaoZhenDuanDuiHuaKuang" title="患者主要诊断">
     <el-table :data="zhuYaoZhenDuanShuJu">
-      <el-table-column prop="code" label="编码"></el-table-column>
-      <el-table-column prop="name" label="名称"></el-table-column>
+      <el-table-column label="编码" prop="code"></el-table-column>
+      <el-table-column label="名称" prop="name"></el-table-column>
       <el-table-column label="添加">
         <template #default="scope">
           <el-button @click="dianJiTianJiaZhuYaoZhenDuan(scope.row.name)">添加</el-button>
@@ -159,7 +159,6 @@ export default {
     // 数据校验
     const huiZhenShenQingRules = ref({
       reqDept1: [{required: true, message: '会诊科室不能为空', trigger: 'change'}],
-      hzDoctor1: [{required: true, message: '会诊医生不能为空', trigger: 'change'}],
       hzType: [{required: true, message: '会诊的级别不能为空', trigger: 'change'}],
       hzLevel: [{required: true, message: '会诊的类别不能为空', trigger: 'change'}],
       reqComment: [{required: true, message: '病情简介不能为空', trigger: 'blur'}],

+ 13 - 18
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuanZheLieBiao.vue

@@ -1,23 +1,23 @@
 <template>
   <el-container>
     <el-aside style="width: 190px;">
-      <el-select v-model="currentWard" @change="huoQuHuanZheLieBiaoClick" style="width: 120px" filterable>
-        <el-option v-for="item in userWards" :key="item.code" :value="item.code" :label="item.name"></el-option>
+      <el-select v-model="currentWard" filterable style="width: 120px" @change="huoQuHuanZheLieBiaoClick">
+        <el-option v-for="item in userWards" :key="item.code" :label="item.name" :value="item.code"></el-option>
       </el-select>
-      <el-select v-model="inpatientNo" style="width: 120px;" filterable :filter-method="filterMethod" clearable>
-        <el-option v-for="item in cptHuanZheLieBiaoData" :key="item.inpatientNo" :value="item.inpatientNo"
-                   :label="item.name"></el-option>
+      <el-select v-model="inpatientNo" :filter-method="filterMethod" clearable filterable style="width: 120px;">
+        <el-option v-for="item in cptHuanZheLieBiaoData" :key="item.inpatientNo" :label="item.name"
+                   :value="item.inpatientNo"></el-option>
       </el-select>
-      <el-checkbox style="margin-left: 10px" v-model="woDeBingRen" @change="woDeBingRenClick">我的病人</el-checkbox>
+      <el-checkbox v-model="woDeBingRen" style="margin-left: 10px" @change="woDeBingRenClick">我的病人</el-checkbox>
       <el-table
           :data="cptHuanZheLieBiaoData.slice((huanZheLieBiaoCurrentPage - 1) * 20,huanZheLieBiaoCurrentPage * 20 )"
-          :height="tableHeight / 1.15" @row-click="tableClick" :row-style="tableBackColor">
+          :height="tableHeight / 1.15" :row-style="tableBackColor" @row-click="tableClick">
         <el-table-column label="床位" prop="bedNo" width="40"></el-table-column>
         <el-table-column label="姓名" prop="name">
           <template #default="scope">
             <div :title="scope.row.zkWardName">
-              <img class="sex-icon"
-                   :src="scope.row.sex === 1 ? maleIcon : femaleIcon"/>
+              <img :src="scope.row.sex === 1 ? maleIcon : femaleIcon"
+                   class="sex-icon"/>
               {{ scope.row.name }}
             </div>
           </template>
@@ -27,9 +27,9 @@
       </el-table>
       <el-pagination
           :page-size="20"
-          small
-          layout="prev,pager,next,total"
           :total="huanZheLieBiaoData.length"
+          layout="prev,pager,next,total"
+          small
           @current-change="huanZheLeiBiaoCurrentChange"
       >
       </el-pagination>
@@ -41,15 +41,11 @@
 
 import {computed, onMounted, ref, watch} from "vue";
 import store from "@/store";
-import {
-  huoQuHuanZheLieBiao,
-  huoQuHuanZheXinXi,
-  huoQuGeRenPinLv
-} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
+import {huoQuGeRenPinLv, huoQuHuanZheLieBiao, huoQuHuanZheXinXi} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
 
 import {
-  huanZheXinXi,
   huanZhePinLvData,
+  huanZheXinXi,
   selectWardCode
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng"
 import maleIcon from '@/assets/male-icon.png'
@@ -97,7 +93,6 @@ export default {
     }
 
     watch(() => inpatientNo.value, () => {
-      woDeBingRen.value = false
       if (stringIsBlank(inpatientNo.value)) {
         cptHuanZheLieBiaoData.value = huanZheLieBiaoData.value
       } else {

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

@@ -2,11 +2,12 @@
   <el-container>
     <el-main id="huanZheXinXiGaoDu">
       <el-collapse v-model="activeNames">
-        <el-collapse-item title="患者信息" class="collapse-item-height" name="1" id="collapseHeight">
+        <el-collapse-item id="collapseHeight" class="collapse-item-height" name="1" title="患者信息">
           <el-row>
             <el-col :span="2" style="text-align: right">住院号:</el-col>
             <el-col :span="4">
               {{ huanZheXinXi.inpatientNo }}
+              <span v-if="huanZheXinXi.timesBilled === 1" style="color: red">已出纳</span>
             </el-col>
             <el-col :span="2" style="text-align: right">住院次数:</el-col>
             <el-col :span="4"> {{ huanZheXinXi.admissTimes }}</el-col>
@@ -36,8 +37,8 @@
             <el-col :span="4"> {{ huanZheXinXi.admissWardName }}</el-col>
             <el-col :span="2" style="text-align: right">入院医生:</el-col>
             <el-col :span="4"> {{ huanZheXinXi.admissPhysicianName }}</el-col>
-            <el-col :span="2" style="text-align: right"
-                    :title="huanZheXinXi.admissDiagStr">
+            <el-col :span="2" :title="huanZheXinXi.admissDiagStr"
+                    style="text-align: right">
               入院诊断:
             </el-col>
             <el-col :span="4" :title="huanZheXinXi.admissDiagStr"
@@ -81,10 +82,8 @@
 </template>
 
 <script>
-import {
-  huanZheXinXi
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
-import {onMounted, ref} from "vue";
+import {huanZheXinXi} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {ref} from "vue";
 
 export default {
   name: "HuanZheXinXi",

+ 39 - 42
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuoQuMuBan.vue

@@ -1,6 +1,6 @@
 <template>
-  <el-dialog v-model="dialog" title="模板" width="90%" destroy-on-close
-             :before-close="guanBi">
+  <el-dialog v-model="dialog" :before-close="guanBi" destroy-on-close title="模板"
+             width="90%">
     <el-container>
       <el-aside>
         <el-radio-group v-model="muBanLeiXing" size="small" @change="dianJiChaXun">
@@ -10,15 +10,15 @@
           <el-radio-button :label="3">个人</el-radio-button>
           <el-radio-button :label="4">收藏</el-radio-button>
         </el-radio-group>
-        <el-input v-model="code" @keyup.enter="dianJiChaXun" clearable style="width: 120px"></el-input>
+        <el-input v-model="code" clearable style="width: 120px" @keyup.enter="dianJiChaXun"></el-input>
         <el-button @click="dianJiChaXun">查询</el-button>
-        <el-table :height="windowSize.h / 1.6"
-                  :data="fuJiMuBanShuJu.data"
-                  style="width: 300px;" stripe highlight-current-row>
+        <el-table :data="fuJiMuBanShuJu.data"
+                  :height="windowSize.h / 1.6"
+                  highlight-current-row stripe style="width: 300px;">
           <el-table-column label="名称" prop="patternName" width="70">
             <template #default="scope">
-              <span class="pointer" style="cursor: pointer;" @click="dianJiMuBanMing(scope.row)"
-                    type="text">{{ scope.row.patternName }}</span>
+              <span class="pointer" style="cursor: pointer;" type="text"
+                    @click="dianJiMuBanMing(scope.row)">{{ scope.row.patternName }}</span>
             </template>
           </el-table-column>
           <el-table-column label="排序" prop="sortNo"></el-table-column>
@@ -28,18 +28,18 @@
                 操作
                 <template #dropdown>
                   <el-dropdown-menu>
-                    <el-dropdown-item @click="xiuGaiMuBan(scope.row)" icon="el-icon-edit">修改</el-dropdown-item>
+                    <el-dropdown-item icon="el-icon-edit" @click="xiuGaiMuBan(scope.row)">修改</el-dropdown-item>
                     <br>
-                    <el-dropdown-item @click="shanChuMuBan(scope.row,scope.$index)" icon="el-icon-delete">删除
+                    <el-dropdown-item icon="el-icon-delete" @click="shanChuMuBan(scope.row,scope.$index)">删除
                     </el-dropdown-item>
                     <br>
-                    <el-dropdown-item icon="el-icon-collection" v-if="scope.row.yiBeiShouCang"
-                                      @click="dianJiShouCang(scope.row)"
-                                      :disabled="scope.row.inputId === user.code">取消收藏
+                    <el-dropdown-item v-if="scope.row.yiBeiShouCang" :disabled="scope.row.inputId === user.code"
+                                      icon="el-icon-collection"
+                                      @click="dianJiShouCang(scope.row)">取消收藏
                     </el-dropdown-item>
-                    <el-dropdown-item icon="el-icon-collection" v-else
-                                      @click="dianJiShouCang(scope.row)"
-                                      :disabled="scope.row.inputId === user.code">收藏
+                    <el-dropdown-item v-else :disabled="scope.row.inputId === user.code"
+                                      icon="el-icon-collection"
+                                      @click="dianJiShouCang(scope.row)">收藏
                     </el-dropdown-item>
                   </el-dropdown-menu>
                 </template>
@@ -48,30 +48,30 @@
           </el-table-column>
         </el-table>
         <el-pagination
+            :current-page="fuJiMuBanShuJu.currentPage"
             :page-size="fuJiMuBanShuJu.pageSize"
-            layout="total,  prev, pager, next"
+            :pager-count="5"
             :total="fuJiMuBanShuJu.total"
+            layout="total,  prev, pager, next"
             small
-            :pager-count="5"
             @current-change="handleCurrentChange"
-            :current-page="fuJiMuBanShuJu.currentPage"
         >
         </el-pagination>
       </el-aside>
       <el-main>
-        <el-button @click="dianJiQueDing" type="primary" :disabled="xuanZhongShuJu.length === 0 ">确定</el-button>
+        <el-button :disabled="xuanZhongShuJu.length === 0 " type="primary" @click="dianJiQueDing">确定</el-button>
         开始时间:
-        <el-date-picker type="datetime"
-                        value-format="YYYY-MM-DD HH:mm:ss"
-                        format="YYYY-MM-DD HH:mm:ss"
+        <el-date-picker v-model="startTime"
                         :disabled-date="disabledDate"
-                        v-model="startTime" style="width: 180px"></el-date-picker>
+                        format="YYYY-MM-DD HH:mm:ss"
+                        style="width: 180px"
+                        type="datetime" value-format="YYYY-MM-DD HH:mm:ss"></el-date-picker>
         医嘱时间:
         <el-input v-model="orderTime" disabled style="width: 180px"></el-input>
         频率:
-        <el-select v-model="frequCode" size="mini" remote filterable clearable
-                   :remote-method="pinLvRemoteMethod" style="width: 120px"
-                   @clear="frequCode = null" @change="getFrequCodeName">
+        <el-select v-model="frequCode" :remote-method="pinLvRemoteMethod" clearable filterable remote
+                   size="mini" style="width: 120px"
+                   @change="getFrequCodeName" @clear="frequCode = null">
           <el-option v-for="item in yaoPinPingLvData" :key="item.code" :label="item.name"
                      :value="{label:item.name,value:item.code}">
             <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
@@ -81,11 +81,11 @@
         </el-select>
         <el-divider direction="vertical"></el-divider>
         <el-button :disabled="muBanShuJu.length === 0" type="warning" @click="bianJiNeiRong">编辑内容</el-button>
-        <el-table :data="muBanShuJu" :height="windowSize.h / 1.6" row-key="id"
-                  :row-class-name="differChildrenRows" @selection-change="xuanZhongMuBan" class="eltable"
-                  @select-all="quanXuanMuBan" ref="tableRef">
-          <el-table-column type="selection" fixed="left"></el-table-column>
-          <el-table-column label="uuid" prop="id" fixed="left"></el-table-column>
+        <el-table ref="tableRef" :data="muBanShuJu" :height="windowSize.h / 1.6"
+                  :row-class-name="differChildrenRows" class="eltable" row-key="id"
+                  @selection-change="xuanZhongMuBan" @select-all="quanXuanMuBan">
+          <el-table-column fixed="left" type="selection"></el-table-column>
+          <el-table-column fixed="left" label="uuid" prop="id"></el-table-column>
           <el-table-column label="医嘱名称" prop="orderName" show-overflow-tooltip width="135"></el-table-column>
           <el-table-column label="规格" prop="drugSpecification"></el-table-column>
           <el-table-column label="频率" prop="frequCodeName"></el-table-column>
@@ -111,19 +111,14 @@
 
 <script>
 import store from '../../../store'
-import {
-  huoQuMuBanShuJu,
-  huoQuYiZhuMuBan,
-  huoQuZhuYuanPinLv,
-  muBanCaoZuo,
-} from "../../../api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
-import {getSelfBuy, muBanMing} from "../../../views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng"
+import {huoQuMuBanShuJu, huoQuYiZhuMuBan, huoQuZhuYuanPinLv, muBanCaoZuo,} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
+import {getSelfBuy, muBanMing} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng"
 import {computed, ref} from "vue";
-import {listIsBlank, stringNotBlank} from "../../../utils/blank-utils";
+import {listIsBlank, stringNotBlank} from "@/utils/blank-utils";
 import {ElMessage, ElMessageBox} from "element-plus";
-import {clone} from "../../../utils/clone";
+import {clone} from "@/utils/clone";
 import BaoCunMuBan from "./BaoCunMuBan.vue";
-import {getServerDateApi} from "../../../api/public-api";
+import {getServerDateApi} from "@/api/public-api";
 
 export default {
   name: "HuoQuMuBan",
@@ -240,6 +235,8 @@ export default {
         }
       })
       if (!flag) {
+        // 在点击了全不选中 需要清空
+        tableRef.value.clearSelection()
       }
     }
 

+ 16 - 4
src/icons/iconfont.css

@@ -1,18 +1,30 @@
 @font-face {
   font-family: "iconfont"; /* Project id 2473230 */
-  src: url('iconfont.woff2?t=1643421220698') format('woff2'),
-       url('iconfont.woff?t=1643421220698') format('woff'),
-       url('iconfont.ttf?t=1643421220698') format('truetype');
+  src: url('iconfont.woff2?t=1644393231480') format('woff2'),
+       url('iconfont.woff?t=1644393231480') format('woff'),
+       url('iconfont.ttf?t=1644393231480') format('truetype');
 }
 
 .iconfont {
-  font-family: "iconfont", serif !important;
+  font-family: "iconfont" !important;
   font-size: 16px;
   font-style: normal;
   -webkit-font-smoothing: antialiased;
   -moz-osx-font-smoothing: grayscale;
 }
 
+.icon-jianyanshenqingdan:before {
+  content: "\e61c";
+}
+
+.icon-shoushushenqing:before {
+  content: "\e688";
+}
+
+.icon-jianchashenqing:before {
+  content: "\e6da";
+}
+
 .icon-huizhenshenqing:before {
   content: "\e61a";
 }

二進制
src/icons/iconfont.ttf


二進制
src/icons/iconfont.woff


二進制
src/icons/iconfont.woff2


+ 5 - 0
src/router/modules/dashboard.js

@@ -348,6 +348,11 @@ const route = [
                         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'},
+                    },
                 ]
             },
 

+ 51 - 157
src/views/hospitalization/case-front-sheet/JieShouHuiZhen.vue

@@ -1,16 +1,17 @@
 <template>
   <el-container>
     <el-header height="36px" style="margin-top: 8px">
-      <el-date-picker v-model="dateRange" type="daterange" range-separator="至" start-placeholder="开始日期"
-                      end-placeholder="结束日期"></el-date-picker>
-      <el-button @click="getHuiZhenDataClick" type="primary" icon="el-icon-search">检索</el-button>
+      <el-date-picker v-model="dateRange" :shortcuts="shortcuts" end-placeholder="结束日期" range-separator="至"
+                      start-placeholder="开始日期" type="daterange"></el-date-picker>
+      <el-button icon="el-icon-search" type="primary" @click="getHuiZhenDataClick">检索</el-button>
       <el-button icon="el-icon-upload" type="primary" @click="baoCunHuiZhenClick">保存</el-button>
       <el-button icon="el-icon-printer" type="success" @click="daYingClick">打印</el-button>
       <el-tag type="danger">会诊意见限制 1100 个字</el-tag>
     </el-header>
     <el-container>
       <el-aside width="400px">
-        <el-table :data="huanZeData" :height="tableHeight" @row-click="dianJiDanYuanGe" stripe highlight-current-row>
+        <el-table :data="huanZeData" :height="windowSize.h / 1.1 " highlight-current-row stripe
+                  @row-click="dianJiDanYuanGe">
           <el-table-column label="床号" prop="bedNo" width="40px"></el-table-column>
           <el-table-column label="住院号" prop="inpatientNo"></el-table-column>
           <el-table-column label="住院次数" prop="admissTimes"></el-table-column>
@@ -18,87 +19,17 @@
           <el-table-column label="申请次数" prop="reqTimes"></el-table-column>
         </el-table>
         <el-pagination
+            :current-page="currentPage"
+            :page-size="pageSize"
             :pager-count="5"
-            small
             :total="total"
             layout="prev, pager, next,total"
-            :current-page="currentPage"
-            :page-size="pageSize"
+            small
             @current-change="handleCurrentChange"
         ></el-pagination>
       </el-aside>
       <el-main>
-        <div :style="mainInfo" class="main-info-parent">
-          <div id="huiZhenXinXiDaYin">
-            <h1 style="text-align: center; font-size: 30px">湖南泰和医院</h1>
-            <h4 style="text-align: center; font-size: 17px; margin-top: 0px">会 诊 记 录 单</h4>
-            <div class="divHuanZheXinXi">
-              <div class="huanZheXinXi" style="margin-left: 20px">住院号:{{ huanZheXinXi.inpatientNo }}</div>
-              <div class="huanZheXinXi" style="margin-left: 25px">姓名:{{ huanZheXinXi.name }}</div>
-              <div class="huanZheXinXi">性别:{{ cptSex(huanZheXinXi.sex) }}</div>
-              <div class="huanZheXinXi" style="width: 90px">年龄:{{ huanZheXinXi.age }}</div>
-              <div class="huanZheXinXi" style="width: 140px">科室:{{ huanZheXinXi.deptCodeName }}</div>
-              <div class="huanZheXinXi">床号:{{ huanZheXinXi.bedNo }}</div>
-            </div>
-
-            <div class="huiZhenBody">
-              <div>
-                <div>
-                  请
-                  <div class="reqDept">{{ huanZheXinXi.reqDept1 }}</div>
-                  会诊
-                  <div class="huiZhenJiBie">会诊类别:{{ hzLeiBie(huanZheXinXi.hzType) }}</div>
-                </div>
-              </div>
-              <!-- 病情简介 -->
-              <div class="zhenDuanBianJu">
-                病情简介 <br/>
-                <textarea v-model="huanZheXinXi.reqComment" readonly="value" class="zhenDuanTextarea"
-                          style="height: 154px"/>
-              </div>
-
-              <!-- 目前主要诊断 -->
-              <div class="zhenDuanBianJu">
-                目前主要诊断 <br/>
-                <textarea v-model="huanZheXinXi.hzZd" readonly="value" class="zhenDuanTextarea"
-                          style="height: 50px"></textarea>
-              </div>
-
-              <!-- 会诊目的 -->
-              <div class="zhenDuanBianJu">
-                会诊目的 <br/>
-                <textarea v-model="huanZheXinXi.hzMd" readonly="value" class="zhenDuanTextarea"
-                          style="height: 50px"></textarea>
-              </div>
-              <div class="qingQiuHuiZhenXinXi">
-                <div class="div1">请求会诊科室:{{ huanZheXinXi.deptCodeName }}</div>
-                <div class="div2">会诊申请医师:{{ huanZheXinXi.reqDoctor }}</div>
-                <div>申请时间:{{ huanZheXinXi.reqDate }}</div>
-              </div>
-            </div>
-            <!-- 会诊意见  -->
-            <div class="huiZhenBody">
-              <!-- 会诊意见 -->
-              <div class="zhenDuanBianJu">
-                会诊意见 <br/>
-                <textarea
-                    maxlength="1100"
-                    autoHeight="true"
-                    v-model="huanZheXinXi.hzComment"
-                    class="zhenDuanTextarea"
-                    style="height: 329px"
-                    onkeydown="javascript:if(event.keyCode == 13)event.returnValue = false;"
-                >
-                </textarea>
-              </div>
-              <div class="qingQiuHuiZhenXinXi">
-                <div class="div1">会诊科室:{{ deptName }}</div>
-                <div class="div2">医师:{{ doctorName }}</div>
-                <div>会诊时间:{{ shiShidate }}</div>
-              </div>
-            </div>
-          </div>
-        </div>
+        <DaYingHuiZhen ref="daYingHuiZhenRef" @fanHuiXinXi="huiZhenFanHuiXinXi"></DaYingHuiZhen>
       </el-main>
     </el-container>
   </el-container>
@@ -106,64 +37,37 @@
 
 <script>
 import {ref} from '@vue/reactivity'
-import {getDeptName, getHuanZheXinXi, getHuiZhenData, wanChenHuiZhen} from '@/api/case-front-sheet/jie-shou-hui-zhen'
+import {getHuanZheXinXi, getHuiZhenData, wanChenHuiZhen} from '@/api/case-front-sheet/jie-shou-hui-zhen'
 import {cptSex} from '@/utils/computed'
 import store from '@/store'
-import {getDateRangeFormatDate, getDate, getDatetime} from '@/utils/date'
-import {onActivated, onDeactivated, onMounted} from '@vue/runtime-core'
+import {getDateRangeFormatDate, getDatetime} from '@/utils/date'
+import {onMounted} from '@vue/runtime-core'
 import {ElMessage, ElMessageBox} from 'element-plus'
-import '@/css/hui-zhen-ji-lv-dan.css'
-import {initLodop, getLodop} from '@/utils/c-lodop'
-import {huiZhenJiLvDanCss} from '../../../data/css-for-print'
+import DaYingHuiZhen from "@/components/huiZhenDaYing/DaYingHuiZhen.vue";
+import {computed} from "vue";
+import {stringIsBlank} from "@/utils/blank-utils";
+import {shortcuts} from '@/data/shortcuts'
 
 export default {
+  components: {DaYingHuiZhen},
   setup() {
     ////////////////////////////// 获取屏幕高度 /////////////////////////////////////////
 
-    const windowSize = store.state.app.windowSize
-    const tableHeight = windowSize.h - 70
-
-    const deptName = ref('')
+    const windowSize = computed(() => {
+      return store.state.app.windowSize
+    })
 
     const doctorName = store.state.user.info.name
-
-    const shiShidate = ref('')
+    const daYingHuiZhenRef = ref(null)
 
     onMounted(() => {
-      initLodop()
-      let MoRenRiQi = getDate(new Date())
-      dateRange.value[0] = MoRenRiQi
-      dateRange.value[1] = MoRenRiQi
+      dateRange.value[0] = shortcuts[0].value[0]
+      dateRange.value[1] = shortcuts[0].value[1]
       getHuiZhenDataClick()
-
-      getDeptName(store.state.user.info.deptCode).then((res) => {
-        deptName.value = res
-      })
-    })
-
-    /**
-     * 实时获取 时间 先定义一个专门赋值的 函数
-     * 在开启 计时器 1秒一次 在页面进入的时候 清除计时器 然后在打开
-     * 在离开页面的时候也要开启
-     */
-    function shiJian() {
-      shiShidate.value = getDatetime(new Date())
-    }
-
-    var interval = setInterval(shiJian, 1000)
-
-    onActivated(() => {
-      clearInterval(interval)
-      interval = setInterval(shiJian, 1000)
-    })
-
-    onDeactivated(() => {
-      clearInterval(interval)
     })
 
     ////////////////////////////// 获取患者信息 需分页  /////////////////////////////////////////
     const dateRange = ref([])
-
     const huanZeData = ref([])
     const currentPage = ref(1)
     const pageSize = ref(10)
@@ -188,6 +92,7 @@ export default {
     const dianJiDanYuanGe = (val) => {
       getHuanZheXinXi(val.admissTimes, val.reqTimes, val.inpatientNo).then((res) => {
         huanZheXinXi.value = res
+        daYingHuiZhenRef.value.huiZhenXinXiXiangQing(res)
       })
     }
 
@@ -197,17 +102,23 @@ export default {
      */
     const baoCunHuiZhenClick = () => {
       if (!huanZheXinXi.value.name) {
-        ElMessage.error({
+        ElMessage({
           message: '请先选择患者',
           showClose: true,
+          type: 'error'
         })
         return
       }
+      if (stringIsBlank(huanZheXinXi.value.hzComment)) {
+        return ElMessage({
+          message: '请填写会诊意见',
+          showClose: true,
+          type: 'error'
+        })
+      }
       ElMessageBox.confirm('是否保存【' + huanZheXinXi.value.name + '】的会诊信息', '提示', {
         type: 'warning',
-        closeOnClickModal: false,
-        closeOnPressEscape: false,
-        showClose: false,
+        distinguishCancelAndClose: true,
         cancelButtonText: '仅保存',
         confirmButtonText: '完成会诊',
       })
@@ -216,14 +127,22 @@ export default {
             // 完成 会诊 发送 axios
             wanChenHuiZhen(huanZheXinXi.value)
             getHuiZhenDataClick()
-            huanZheXinXi.value = []
+            huanZheXinXi.value = {}
+            daYingHuiZhenRef.value.huanZheXinXi.value = {}
           })
-          .catch(() => {
-            huanZheXinXi.value.statusFlag = 1
-            wanChenHuiZhen(huanZheXinXi.value)
+          .catch((e) => {
+            if (e === 'cancel') {
+              huanZheXinXi.value.statusFlag = 1
+              wanChenHuiZhen(huanZheXinXi.value)
+            }
           })
     }
 
+    const huiZhenFanHuiXinXi = (val) => {
+      huanZheXinXi.value = val.value
+
+    }
+
     ///////////////////////////////////////////////////////// 开启打印 ///////////////////////////////////////////////////////////////////////////////
 
     const daYingClick = () => {
@@ -234,37 +153,12 @@ export default {
         })
         return
       }
-      // 在vue 中使用 v-model 绑定的 都需要 这样不然没有数据
-      const allTextArea = document.body.getElementsByTagName('textarea')
-      const textInput = document.body.getElementsByTagName('input')
-      for (var i = 0; i < textInput.length; i++) {
-        textInput[i].setAttribute('value', textInput[i].value)
-      }
-      for (let i = 0; i < allTextArea.length; i++) {
-        allTextArea[i].innerText = allTextArea[i].value
-      }
-      // A4: 210毫米 × 297毫米 = 793.70px *  1122.52px
-      let LODOP = getLodop()
-      // 导入css样式,以及 内容
-      var strFormHtml = huiZhenJiLvDanCss  + '<body>' + document.getElementById('huiZhenXinXiDaYin').innerHTML + '</body>'
-      LODOP.PRINT_INIT('会诊记录单') // 初始化打印机 名字
-      LODOP.SET_PRINT_PAGESIZE(1, '210mm', '297mm', '') // 设置纸张大小  A4
-      LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
-      LODOP.ADD_PRINT_HTM('2mm', '5mm', '100%', '100%', strFormHtml) //要打印的内容
-      LODOP.SET_PRINT_STYLE('ItemType', 3) //设置对象风格
-      LODOP.ADD_PRINT_TEXT('290mm', '190mm', '20mm', '2mm', '第#页/共&页') //增加纯文本项
-      LODOP.PREVIEW() // 关闭
-    }
-
-    const mainInfo = {
-      height: windowSize.h - 45 + 'px',
-      padding: '0 20px',
-      overflowY: 'scroll',
+      daYingHuiZhenRef.value.daYing()
     }
 
     return {
       doctorName,
-      tableHeight,
+      windowSize,
       huanZeData,
       currentPage,
       pageSize,
@@ -276,12 +170,12 @@ export default {
       dateRange,
       getHuiZhenDataClick,
       baoCunHuiZhenClick,
-      mainInfo,
       daYingClick,
       hzLeiBie,
       getDatetime,
-      deptName,
-      shiShidate,
+      daYingHuiZhenRef,
+      huiZhenFanHuiXinXi,
+      shortcuts
     }
   },
 }

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

@@ -1,15 +1,16 @@
 <template>
   <el-container>
     <el-header>
-      <el-button @click="dianJiHuiZhenShenQing" type="success" icon="el-icon-plus">会诊申请</el-button>
-      <el-button @click="chaKanHuiZhenShenQingClick" type="primary" icon="el-icon-search">会诊查询</el-button>
+      <el-button icon="el-icon-plus" type="success" @click="dianJiHuiZhenShenQing">会诊申请</el-button>
+      <el-button icon="el-icon-search" type="primary" @click="chaKanHuiZhenShenQingClick">会诊查询</el-button>
     </el-header>
     <el-main>
       <el-table :data="chaKanHuiZhenList" :height="(windowSize.h / 1.5) ">
-        <el-table-column label="住院号" width="90" prop="inpatientNo"></el-table-column>
-        <el-table-column label="住院次数" width="70" prop="admissTimes"></el-table-column>
-        <el-table-column label="申请人" width="60" prop="inputName"></el-table-column>
-        <el-table-column label="申请时间" width="70" prop="inputDate"></el-table-column>
+        <el-table-column label="住院号" prop="inpatientNo" width="90"></el-table-column>
+        <el-table-column label="住院次数" prop="admissTimes" width="70"></el-table-column>
+        <el-table-column label="申请人" prop="inputName" width="60"></el-table-column>
+        <el-table-column label="申请时间" prop="inputDate" width="70"></el-table-column>
+        <el-table-column label="申请次数" prop="reqTimes"></el-table-column>
         <el-table-column label="科室" prop="deptName"></el-table-column>
         <el-table-column label="申请会诊科室" prop="reqDeptName"></el-table-column>
         <el-table-column label="会诊类别" prop="hzLevelName"></el-table-column>
@@ -19,24 +20,33 @@
             <span>{{ hzTypeName(scope.row.hzType) }}</span>
           </template>
         </el-table-column>
-        <el-table-column label="删除">
+        <el-table-column label="接受会诊日期" prop="hzDate"></el-table-column>
+        <el-table-column label="接受会诊医生" prop="hzDoctor2Name"></el-table-column>
+        <el-table-column label="接受会诊意见" prop="hzComment"></el-table-column>
+        <el-table-column fixed="right" label="操作" width="150">
           <template #default="scope">
             <el-popconfirm
-                @confirm="shanChuHuiZhenShenQingClick(scope.$index, scope.row)"
-                confirm-button-text="确定"
                 cancel-button-text="取消"
+                confirm-button-text="确定"
                 icon="el-icon-info"
-                title="确定要删除吗?"
                 icon-color="red"
+                title="确定要删除吗?"
+                @confirm="shanChuHuiZhenShenQingClick(scope.$index, scope.row)"
             >
               <template #reference>
-                <el-button type="danger">删除</el-button>
+                <el-button :disabled="scope.row.statusFlag === '2'" circle icon="el-icon-delete"
+                           type="danger"></el-button>
               </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>
           </template>
         </el-table-column>
       </el-table>
     </el-main>
+    <el-dialog v-model="huiZhenXiangQingDuiHua" title="会诊详情" width="920px">
+      <da-ying-hui-zhen ref="daYingHuiZhenRef" :lai-yuan="2"></da-ying-hui-zhen>
+    </el-dialog>
     <tian-jia-hui-zhen-shen-qing ref="tianJiaHuiZhen"></tian-jia-hui-zhen-shen-qing>
   </el-container>
 </template>
@@ -45,15 +55,14 @@
 import TianJiaHuiZhenShenQing from "@/components/zhu-yuan-yi-sheng/hui-zhen-shen-qing/TianJiaHuiZhenShenQing.vue";
 import {computed, onActivated, ref, watch} from "vue";
 import {chaKanHuiZhenShenQing, shanChuHuiZhenShenQing} from "@/api/case-front-sheet";
-import {
-  huanZheXinXi,
-  youWuXuanZheHuanZhe
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {huanZheXinXi, youWuXuanZheHuanZhe} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import store from "@/store";
+import DaYingHuiZhen from "@/components/huiZhenDaYing/DaYingHuiZhen.vue";
+import {getHuanZheXinXi} from "@/api/case-front-sheet/jie-shou-hui-zhen";
 
 export default {
   name: "HuiZhenShenQing",
-  components: {TianJiaHuiZhenShenQing},
+  components: {DaYingHuiZhen, TianJiaHuiZhenShenQing},
   setup() {
     const windowSize = computed(() => {
       return store.state.app.windowSize
@@ -80,6 +89,34 @@ export default {
       tianJiaHuiZhen.value.huiZhenShenQingDialog = true
     }
 
+    /**
+     * 打印会诊信息对话框
+     * @type {Ref<UnwrapRef<boolean>>}
+     */
+    const huiZhenXiangQingDuiHua = ref(false)
+    const daYingHuiZhenRef = ref(null)
+
+    const chaKanHuiZhenDan = (val) => {
+      getHuanZheXinXi(val.admissTimes, val.reqTimes, val.inpatientNo).then((res) => {
+        huiZhenXiangQingDuiHua.value = true
+        setTimeout(() => {
+          daYingHuiZhenRef.value.huiZhenXinXiXiangQing(res)
+        }, 100)
+      })
+    }
+
+    const dianJiDaYingHuiZhen = (val) => {
+      getHuanZheXinXi(val.admissTimes, val.reqTimes, val.inpatientNo).then((res) => {
+        huiZhenXiangQingDuiHua.value = true
+        setTimeout(() => {
+          daYingHuiZhenRef.value.huiZhenXinXiXiangQing(res)
+        }, 100)
+        setTimeout(() => {
+          daYingHuiZhenRef.value.daYing()
+        }, 500)
+      })
+    }
+
     watch(() => huanZheXinXi.value, () => {
       chaKanHuiZhenShenQingClick()
     })
@@ -95,7 +132,11 @@ export default {
       chaKanHuiZhenShenQingClick,
       shanChuHuiZhenShenQingClick,
       hzTypeName,
-      windowSize
+      windowSize,
+      huiZhenXiangQingDuiHua,
+      daYingHuiZhenRef,
+      chaKanHuiZhenDan,
+      dianJiDaYingHuiZhen
     }
   }
 }

+ 16 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/JianChaShenQing.vue

@@ -0,0 +1,16 @@
+<template>
+
+</template>
+
+<script>
+export default {
+  name: "JianChaShenQing",
+  setup() {
+    return {}
+  }
+}
+</script>
+
+<style scoped>
+
+</style>

+ 113 - 25
src/views/hospitalization/zhu-yuan-yi-sheng/YiZhuLuRu.vue

@@ -36,7 +36,13 @@
       <el-divider direction="vertical"></el-divider>
       <el-button icon="el-icon-search" type="primary" @click="chaXunYiZhuClick(0)">查询</el-button>
       <el-divider direction="vertical"></el-divider>
-      <el-button icon="el-icon-plus" type="primary" @click="addYiZhuClick">添加</el-button>
+      <el-button :disabled="huanZheXinXi.timesBilled === 1" icon="el-icon-plus" type="primary" @click="addYiZhuClick">
+        添加
+      </el-button>
+      <el-divider direction="vertical"></el-divider>
+      <el-button :disabled="xuanZhongDeShuJu.length === 0 " type="warning"
+                 @click="chaoZuoBiaoZhi = 90;yiZhuChaoZuoDialog = true;yiZhuChaoZuoBiaoTi = '批量停止'">批量停止
+      </el-button>
       <el-divider direction="vertical"></el-divider>
       <el-tag effect="dark" type="info">录入</el-tag>
       <el-tag effect="dark" type="success">确认</el-tag>
@@ -44,8 +50,11 @@
       <el-tag effect="dark" type="danger">停止</el-tag>
     </el-header>
     <el-main>
-      <el-table :data="yiZhuPage.data" :height="(windowSize.h / 1.5) " :row-class-name="differChildrenRows" border
-                class="eltable" highlight-current-row row-key="actOrderNo">
+      <el-table ref="tableRef" :data="yiZhuPage.data" :height="(windowSize.h / 1.5) "
+                :row-class-name="differChildrenRows"
+                border class="eltable" highlight-current-row row-key="actOrderNo"
+                @selection-change="huoQuXuanZhongDeShuJu" @select-all="quanXuanYiZhu">
+        <el-table-column fixed="left" type="index"></el-table-column>
         <el-table-column fixed="left" type="selection"></el-table-column>
         <el-table-column fixed="left" label="医嘱号" prop="actOrderNo" width="120">
           <template #default="scope">
@@ -61,12 +70,12 @@
         </el-table-column>
         <el-table-column label="频率" prop="frequCode"></el-table-column>
         <el-table-column label="给药方式" prop="supplyCodeName" show-overflow-tooltip></el-table-column>
-        <el-table-column label="医嘱时间" prop="orderTime" width="70"></el-table-column>
-        <el-table-column label="开始时间" prop="startTime" width="70"></el-table-column>
+        <el-table-column label="医嘱时间" prop="orderTime" show-overflow-tooltip></el-table-column>
+        <el-table-column label="开始时间" prop="startTime" show-overflow-tooltip></el-table-column>
         <el-table-column label="录入人" prop="physicianName"></el-table-column>
-        <el-table-column label="确认时间" prop="confirmTime" width="70"></el-table-column>
+        <el-table-column label="确认时间" prop="confirmTime" show-overflow-tooltip></el-table-column>
         <el-table-column label="确认人" prop="signerName"></el-table-column>
-        <el-table-column label="结束时间" prop="endTime" width="70"></el-table-column>
+        <el-table-column label="结束时间" prop="endTime" show-overflow-tooltip></el-table-column>
         <el-table-column label="停止人" prop="modifierName" show-overflow-tooltip></el-table-column>
         <el-table-column label="紧急" prop="emergencyFlag">
           <template #default="scope">
@@ -99,7 +108,7 @@
               操作
               <template #dropdown>
                 <el-dropdown-menu>
-                  <el-dropdown-item @click="dianJiYiZhuChaoZuo(scope.row,1)">
+                  <el-dropdown-item :disabled="scope.row.statusFlag === '5'" @click="dianJiYiZhuChaoZuo(scope.row,1)">
                     <span v-if="scope.row.emergencyFlag === '1'">取消紧急</span>
                     <span v-else>设为紧急</span>
                   </el-dropdown-item>
@@ -127,20 +136,24 @@
       <tian-jia-huo-xiu-gai-yi-zhu ref="tianJiaXiuGaiYiZhu"></tian-jia-huo-xiu-gai-yi-zhu>
     </el-main>
     <el-dialog v-model="yiZhuChaoZuoDialog"
-               :title="chaoZuoBiaoZhi === 2 ? '撤销医嘱' : '停止医嘱'" width="30%">
-      <div v-if="chaoZuoBiaoZhi === 3">
+               :close-on-click-modal="false"
+               :close-on-press-escape="false"
+               :show-close="false"
+               :title="yiZhuChaoZuoBiaoTi" top="25%" width="30%">
+      <div v-if="chaoZuoBiaoZhi === 2">
+        撤销原因:
+        <el-input v-model="content" maxlength="100" rows="2" show-word-limit type="textarea"></el-input>
+      </div>
+      <div v-else-if="chaoZuoBiaoZhi === 3 || chaoZuoBiaoZhi === 90">
         停止时间点:
-        <el-date-picker v-model="content" type="datetime">
+        <el-date-picker v-model="tingZhiRiQi" format="YYYY-MM-DD HH:mm:ss"
+                        type="datetime" value-format="YYYY-MM-DD HH:mm:ss">
         </el-date-picker>
       </div>
-      <div v-else>
-        撤销原因:
-        <el-input v-model="content" rows="2" type="textarea"></el-input>
-      </div>
       <template #footer>
       <span class="dialog-footer">
-        <el-button>关闭</el-button>
-        <el-button type="primary">确认</el-button>
+        <el-button @click="yiZhuChaoZuoDialog = false;content = ''">关闭</el-button>
+        <el-button type="primary" @click="zhiXingChaoZuo">确认</el-button>
       </span>
       </template>
     </el-dialog>
@@ -150,12 +163,17 @@
 <script>
 import {computed, onActivated, ref, watch} from "vue";
 import {shortcuts} from '@/data/shortcuts'
-import {huoQuYiZhuMingCheng, huoQuYiZhuShuJu, yiZhuChaoZuo,} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
+import {
+  huoQuYiZhuMingCheng,
+  huoQuYiZhuShuJu,
+  piLiangXiuGaiTingZhiShiJian,
+  yiZhuChaoZuo,
+} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
 import {huanZhePinLvData, huanZheXinXi, youWuXuanZheHuanZhe,} from './public-js/zhu-yuan-yi-sheng'
 
 import {getDateRangeFormatDate} from "@/utils/date";
 import store from '../../../store'
-import {stringIsBlank} from '@/utils/blank-utils';
+import {stringIsBlank, stringNotBlank} from '@/utils/blank-utils';
 import TianJiaHuoXiuGaiYiZhu from "../../../components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/TianJiaYiZhu.vue";
 
 export default {
@@ -185,6 +203,7 @@ export default {
       total: 0,
       data: []
     })
+    const tableRef = ref(null)
 
     const remoteMethodChargeCode = (val) => {
       if (youWuXuanZheHuanZhe()) return
@@ -274,22 +293,83 @@ export default {
 
     const dianJiYiZhuChaoZuo = ({actOrderNo, orderName}, flag, name) => {
       chaoZuoBiaoZhi.value = flag
+      yiZhuHao.value = actOrderNo
       if (flag === 1) {
-        zhiXingChaoZuo(actOrderNo, flag)
+        zhiXingChaoZuo()
       } else {
         yiZhuChaoZuoDialog.value = true
+        if (flag === 2) {
+          yiZhuChaoZuoBiaoTi.value = '撤销医嘱'
+        } else if (flag === 3) {
+          yiZhuChaoZuoBiaoTi.value = '停止医嘱'
+        }
       }
     }
 
-    const zhiXingChaoZuo = (actOrderNo, flag) => {
-      yiZhuChaoZuo(actOrderNo, flag).then((res) => {
-        handleCurrentChange(yiZhuPage.value.currentPage)
-      })
+    const zhiXingChaoZuo = () => {
+      if (chaoZuoBiaoZhi.value === 90) {
+        let data = {
+          actOrderNoList: [],
+          endTime: tingZhiRiQi.value
+        }
+        xuanZhongDeShuJu.value.forEach((item) => {
+          data.actOrderNoList.push(item.actOrderNo)
+        })
+        piLiangXiuGaiTingZhiShiJian(data).then((res) => {
+          handleCurrentChange(yiZhuPage.value.currentPage)
+          yiZhuChaoZuoDialog.value = false
+        })
+      } else {
+        let data = ''
+        if (chaoZuoBiaoZhi.value === 2) {
+          data = content.value
+        } else if (chaoZuoBiaoZhi.value === 3) {
+          data = tingZhiRiQi.value
+        }
+        yiZhuChaoZuo(yiZhuHao.value, chaoZuoBiaoZhi.value, data).then((res) => {
+          handleCurrentChange(yiZhuPage.value.currentPage)
+          yiZhuChaoZuoDialog.value = false
+          content.value = ''
+        })
+      }
+
+
     }
 
     const yiZhuChaoZuoDialog = ref(false)
     const content = ref('')
+    const tingZhiRiQi = ref('')
     const chaoZuoBiaoZhi = ref(0)
+    const yiZhuHao = ref(0)
+    const yiZhuChaoZuoBiaoTi = ref('')
+
+    const xuanZhongDeShuJu = ref([])
+
+    const huoQuXuanZhongDeShuJu = (val) => {
+      xuanZhongDeShuJu.value = val
+    }
+
+    // 用户切换全选和全不选 时 el-table中的全选不会选中子节点
+    const toggleSelection = (row, selected) => {
+      if (row) {
+        row.forEach(item => {
+          tableRef.value.toggleRowSelection(item, selected)
+        })
+      }
+    }
+
+    let quanXuanFlag = false; // 默认 为全不选
+    const quanXuanYiZhu = (selection) => {
+      quanXuanFlag = !quanXuanFlag
+      selection.forEach(item => {
+        if (stringNotBlank(item.children)) {
+          toggleSelection(item.children, quanXuanFlag)
+        }
+      })
+      if (!quanXuanFlag) {
+        tableRef.value.clearSelection()
+      }
+    }
 
 
     onActivated(() => {
@@ -321,7 +401,15 @@ export default {
       zhuangTaiXuanZhe,
       yiZhuChaoZuoDialog,
       content,
-      chaoZuoBiaoZhi
+      chaoZuoBiaoZhi,
+      tingZhiRiQi,
+      zhiXingChaoZuo,
+      xuanZhongDeShuJu,
+      huoQuXuanZhongDeShuJu,
+      yiZhuChaoZuoBiaoTi,
+      quanXuanYiZhu,
+      tableRef,
+      huanZheXinXi
     }
   }
 }