Browse Source

检验检查优化

xiaochan 2 years ago
parent
commit
87db53569a

+ 25 - 17
src/components/xiao-chan/combo-grid/XcComboGrid.vue

@@ -104,7 +104,7 @@ const props = defineProps({
   }
 })
 
-const emit = defineEmits(['input', 'rowClick', 'clear', 'focus', 'blur','update:modelValue'])
+const emit = defineEmits(['input', 'rowClick', 'clear', 'focus', 'blur', 'update:modelValue'])
 
 const placeholder = ref(props.placeholder)
 const inputData = ref('')
@@ -126,20 +126,29 @@ const queryData = debounce((value) => {
   emit('input', value)
   tableConfig.value.isLoad = true
   if (props.queryDataFunc === null) return
-  props.queryDataFunc(value).then((res) => {
-    tableData.value.currentPage = 1
-    tableConfig.value.isShow = true
-    tableData.value.list = res
-    tableData.value.total = tableData.value.list.length
-    theNumberOfPages = Math.ceil(tableData.value.total / tableData.value.pageSize)
-    currentIndex = 0
-    rowAddClass()
-  }).finally((res) => {
-    tableConfig.value.isLoad = false
-  })
+
+  try {
+    props.queryDataFunc(value).then((res) => {
+      tableConfig.value.isShow = true
+      tableData.value.list = res
+      dataChange()
+    }).finally((res) => {
+      tableConfig.value.isLoad = false
+    })
+  } catch {
+
+  }
 
 }, 200)
 
+const dataChange = () => {
+  tableData.value.currentPage = 1
+  tableData.value.total = tableData.value.list.length
+  theNumberOfPages = Math.ceil(tableData.value.total / tableData.value.pageSize)
+  currentIndex = 0
+  rowAddClass()
+}
+
 let currentIndex = 0;
 
 const tableRef = ref(null)
@@ -238,7 +247,7 @@ const clear = () => {
     props.modelValue[props.code] = null
     props.modelValue[props.name] = null
   } else {
-    emit('update:modelValue',null)
+    emit('update:modelValue', null)
   }
   emit('clear');
 }
@@ -324,13 +333,12 @@ onMounted(() => {
     }, {immediate: true, deep: true})
   }
   if (props.data !== null) {
-    watch(() => props.data, () => {
+    watch(() => props.data.length, () => {
       if (isFocus.value) {
         tableConfig.value.isShow = true
       }
-      tableData.value.list = props.data;
-      tableData.value.total = tableData.value.list.length
-      tableData.value.currentPage = 1
+      tableData.value.list = props.data
+      dataChange()
     }, {immediate: true, deep: true})
   }
 

+ 1 - 1
src/components/xiao-chan/select-v3/XcSelectV3.vue

@@ -512,7 +512,7 @@ onMounted(() => {
     overflow: auto;
     display: flex;
     //direction: rtl;
-    z-index: 9999;
+    z-index: 999999;
     top: 26px;
     box-shadow: 0 0 12px rgba(0, 0, 0, .12);
     background-color: white;

+ 86 - 105
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianChaJianYan.vue → src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianYan.vue

@@ -20,50 +20,10 @@
     </div>
 
     <div style="flex: 1">
-      <el-button @click="dianJiBaoCunShenQing">保存</el-button>
-      <el-button @click="clickSaveTemplate">存为模板</el-button>
-      <CuoWuXinXiVue/>
-
-
       <!--   这里是检查的数据信息     -->
-      <el-table :data="xuanZhongJianCha.data"
-                :header-cell-class-name="starAdd"
-                :height="getWindowSize.h -(yzHeaderSize + 75)">
-        <el-table-column label="操作" width="90" fixed="left">
-          <template #default="scope">
-            <el-button-group>
-              <el-button icon="Edit" type="primary"
-                         @click="dianJiBianJi(scope.row, scope.$index)"></el-button>
-              <el-button icon="Delete" type="danger"
-                         @click="deleteInspectionCheck(scope.$index)"></el-button>
-            </el-button-group>
-          </template>
-        </el-table-column>
-        <el-table-column label="项目编码" prop="orderCode"></el-table-column>
-        <el-table-column label="项目名称" prop="orderName" show-overflow-tooltip></el-table-column>
-        <el-table-column label="检查时间" prop="startTime" show-overflow-tooltip></el-table-column>
-        <el-table-column label="执行科室" prop="execDeptName"></el-table-column>
-        <el-table-column label="急诊标识">
-          <template #default="scope">
-            <span v-if="scope.row.jzFlag === 1">√</span>
-          </template>
-        </el-table-column>
-        <el-table-column label="自费">
-          <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>
+      <jian-cha-jian-yan-table :data="xuanZhongJianYan.data"
+                               @del-click="delCLick"
+                               :public-data="extraInformation"/>
     </div>
 
   </div>
@@ -105,15 +65,10 @@
       </el-row>
     </el-form>
   </el-dialog>
-  <BianJiJianYan ref="bianJiRef"
-                 :jian-cha="jianCha"
-                 @fanYe="bianJiFanYe"/>
-
-  <!--  <check-the-edits/>-->
 
 </template>
 
-<script setup name="TianJiaJianChaJianYan">
+<script setup name="TianJiaJianYan">
 import {computed, onMounted, ref} from 'vue'
 import {
   baoCunJianChaJianYanMuBan,
@@ -124,17 +79,13 @@ import {
 } from '@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
 import store from '@/store'
 import {ElMessage, ElMessageBox} from 'element-plus'
-import {stringNotBlank} from '@/utils/blank-utils'
-import BianJiJianYan
-  from '@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/EditInspection.vue'
+import {stringIsBlank, stringNotBlank} from '@/utils/blank-utils'
 import {
   cuoWuXinXi,
   huanZheXinXi,
-  youWuXuanZheHuanZhe,
-  xuanZhongJianCha, yzHeaderSize
+  xuanZhongJianYan, yzHeaderSize, yzMitt
 } from '@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng'
 import {getServerDateApi, yaoPinXiangMuPiPeiYiBao} from '@/api/public-api'
-import CuoWuXinXiVue from '@/components/zhu-yuan-yi-sheng/CuoWuXinXi.vue'
 import Sleep from '@/utils/sleep'
 import {BizException, ExceptionEnum} from "@/utils/BizException";
 import JyJcTree from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/jy-jc-tree/JyJcTree.vue";
@@ -142,23 +93,18 @@ import {xcMessage} from "@/utils/xiaochan-element-plus";
 import JyJcTemplateTree
   from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/JyJcTemplateTree.vue";
 import {getWindowSize} from '@/utils/window-size'
-import CheckTheEdits
-  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/CheckTheEdits.vue";
+import JianChaJianYanTable
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JianChaJianYanTable.vue";
 
 
-const props = defineProps({
-  jianCha: {
-    type: Boolean,
-    default: true,
-  },
-})
 const chaZhaoLeiXing = ref(1)
 
 const windowSize = computed(() => {
   return store.state.app.windowSize
 })
 
-const bianJiRef = ref(null)
+let extraInformation = $ref({})
+
 const baoCunMuBanRef = ref()
 const tcNameRef = $ref(null)
 const baoCunMuBan = ref({
@@ -178,38 +124,37 @@ const dianJiLeiXingChaXun = () => {
   })
 }
 
+
 const tempClick = async (data) => {
   if (data.isTheParentNode === '2') {
-    if (xuanZhongJianCha.value.weiBianMa.indexOf(data.orderCode) > -1) {
+    if (xuanZhongJianYan.value.weiBianMa.indexOf(data.orderCode) > -1) {
       BizException(ExceptionEnum.MESSAGE_ERROR, '请勿重复添加。')
     }
     data.startTime = await getServerDateApi()
-    xuanZhongJianCha.value.weiBianMa.push(data.orderCode)
-    xuanZhongJianCha.value.data.push(data)
+    xuanZhongJianYan.value.weiBianMa.push(data.orderCode)
+    xuanZhongJianYan.value.data.push(data)
   }
 }
 
-const dianJiBianJi = (row, index) => {
-  bianJiRef.value.daKaiBenDuiHua(row, index, xuanZhongJianCha.value.data.length)
+const delCLick = (index) => {
+  xuanZhongJianYan.value.weiBianMa.splice(index, 1)
+  xuanZhongJianYan.value.data.splice(index, 1)
 }
 
 const dianJiBaoCunShenQing = () => {
-  if (xuanZhongJianCha.value.data.length < 0) {
+  if (xuanZhongJianYan.value.data.length < 0) {
     ElMessage.error('请选择数据')
     return
   }
-  if (youWuXuanZheHuanZhe()) {
-    clickSaveTemplate()
-    return
-  }
+
   let listCode = []
-  xuanZhongJianCha.value.data.forEach((item) => {
+  xuanZhongJianYan.value.data.forEach((item) => {
     listCode.push(item.orderCode + '-00')
   })
   yaoPinXiangMuPiPeiYiBao(listCode).then((res) => {
     if (stringNotBlank(res)) {
       cuoWuXinXi.value = res
-      ElMessageBox.confirm(res, '提示,仅提示,请继续电子确认完成保存。', {
+      ElMessageBox.confirm(res, '提示,仅提示,请继续点击确认完成保存。', {
         type: 'warning',
         dangerouslyUseHTMLString: true,
         confirmButtonText: '继续录入'
@@ -228,12 +173,14 @@ function baoCunShuJu() {
     type: 'warning',
   }).then(() => {
     let data = huanZheXinXi.value
-    data.list = xuanZhongJianCha.value.data
-    data.reqType = props.jianCha ? 3 : 2
+    data.list = xuanZhongJianYan.value.data
+    data.reqType = 2
+
     baoCunJianYanJianCha(data)
         .then((res) => {
-          xuanZhongJianCha.value.weiBianMa = []
-          xuanZhongJianCha.value.data = []
+          xuanZhongJianYan.value.weiBianMa = []
+          xuanZhongJianYan.value.data = []
+          extraInformation = {}
         })
         .catch((e) => {
           cuoWuXinXi.value = e
@@ -269,7 +216,7 @@ const dianJiBaoCunMuBan = async (form) => {
   if (!form) return
   try {
     await form.validate()
-    jianChaJianYanMuBanMing(baoCunMuBan.value.tcName, props.jianCha ? '3' : '2').then((res) => {
+    jianChaJianYanMuBanMing(baoCunMuBan.value.tcName, '2').then((res) => {
       if (res) {
         ElMessageBox.confirm('已经存在相同的模板名称,是否覆盖数据', '温馨提示', {
           type: 'warning',
@@ -292,8 +239,8 @@ const dianJiBaoCunMuBan = async (form) => {
 }
 
 const faSongBaoCunMuBan = () => {
-  baoCunMuBan.value.reqType = props.jianCha ? 3 : 2
-  baoCunMuBan.value.list = xuanZhongJianCha.value.data
+  baoCunMuBan.value.reqType = 2
+  baoCunMuBan.value.list = xuanZhongJianYan.value.data
   baoCunMuBan.value.tcExec = store.state.user.info.deptCode
   baoCunJianChaJianYanMuBan(baoCunMuBan.value).then((res) => {
     dianJiLeiXingChaXun()
@@ -301,13 +248,8 @@ const faSongBaoCunMuBan = () => {
   })
 }
 
-const bianJiFanYe = (val) => {
-  let index = val.val - 1
-  bianJiRef.value.daKaiBenDuiHua(xuanZhongJianCha.value.data[index], index, xuanZhongJianCha.value.data.length)
-}
-
 const clickSaveTemplate = async () => {
-  if (xuanZhongJianCha.value.data.length > 0) {
+  if (xuanZhongJianYan.value.data.length > 0) {
     baoCunMuBan.value.dialog = true
     await Sleep(200)
     tcNameRef.focus()
@@ -316,19 +258,12 @@ const clickSaveTemplate = async () => {
   }
 }
 
-const starAdd = (obj) => {
-  let index = [0, 1, 2, 3, 6, 7, 8, 9]
-  if (index.indexOf(obj.columnIndex) > -1) {
-    return 'star'
-  }
-}
-
-
 const nodeClick = async (val) => {
   if (val.code.length < 5) {
     BizException(ExceptionEnum.LOGICAL_ERROR, '无法添加目录')
   }
   let temp = {
+    classes: val.classes,
     orderType: "",
     execDept: val.execUnit,
     execDeptName: val.execUnitName,
@@ -340,21 +275,67 @@ const nodeClick = async (val) => {
     checkFlag: "0",
     jzFlag: 0,
     ybSelfFlag: 0
-  }
-  if (xuanZhongJianCha.value.weiBianMa.indexOf(temp.orderCode) > -1) {
+  };
+  if (xuanZhongJianYan.value.weiBianMa.indexOf(temp.orderCode) > -1) {
     xcMessage.error('请勿重复添加。')
   } else {
-    xuanZhongJianCha.value.weiBianMa.push(temp.orderCode)
-    xuanZhongJianCha.value.data.push(temp)
+    xuanZhongJianYan.value.weiBianMa.push(temp.orderCode)
+    xuanZhongJianYan.value.data.push(temp)
   }
 }
 
-const deleteInspectionCheck = (index) => {
-  xuanZhongJianCha.value.data.splice(index, 1)
-  xuanZhongJianCha.value.weiBianMa.splice(index, 1)
-}
 
 onMounted(() => {
+
+  yzMitt.on('jySave', () => {
+
+    function error() {
+      if (stringNotBlank(huanZheXinXi.value.inpatientNo)) {
+        BizException(ExceptionEnum.LOGICAL_ERROR, "根据病理科要求,检验有病理项目需要填写,病史摘要、体征信息、相关辅检结果、临床诊断。")
+      }
+    }
+
+    let isPathology = false
+
+    for (let i = 0; i < xuanZhongJianYan.value.data.length; i++) {
+      let item = xuanZhongJianYan.value.data[i];
+      if (item.classes === '038') {
+        item.reqComment = extraInformation.reqComment
+        item.reqTzComment = extraInformation.reqTzComment
+        item.reqOtherResult = extraInformation.reqOtherResult
+        item.diagCode = extraInformation.diagCode
+        item.diagText = extraInformation.diagText;
+        isPathology = true
+      }
+    }
+
+    if (isPathology) {
+      if (stringIsBlank(extraInformation.reqComment)) {
+        error()
+      }
+      if (stringIsBlank(extraInformation.reqTzComment)) {
+        error()
+      }
+      if (stringIsBlank(extraInformation.reqOtherResult)) {
+        error();
+      }
+      if (stringIsBlank(extraInformation.diagCode)) {
+        error()
+      }
+    }
+
+    // 没有选择患者启动保存模板
+    if (stringIsBlank(huanZheXinXi.value.inpatientNo)) {
+      BizException(ExceptionEnum.LOGICAL_ERROR, "请先选择患者后保存。")
+    }
+
+    dianJiBaoCunShenQing();
+  })
+
+  yzMitt.on('jySaveTemplate', () => {
+    clickSaveTemplate()
+  })
+
   dianJiLeiXingChaXun()
 })
 

+ 0 - 22
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheck.vue

@@ -1,22 +0,0 @@
-<template>
-  <xc-print category-id="f4da8050a6e711ed946c0561a12323c7"
-            category-code="7d35c6e0a6d311ed87671b16314fa5ea"
-            width="800px"
-            height="800px"/>
-</template>
-
-<script setup name='PrintCheck'>
-
-import XcPrint from "@/components/xiao-chan/print/XcPrint.vue";
-
-let scr = ''
-
-const fillData = (data) => {
-  console.log(data)
-}
-
-</script>
-
-<style scoped lang="scss">
-
-</style>

+ 250 - 0
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheckTable.vue

@@ -0,0 +1,250 @@
+<template>
+  <div>
+    <el-button v-if="showPrint" @click="printDirectly">打印</el-button>
+    <div ref="printRef">
+      <div
+          style="width:147mm;height:209mm;background-color: white;font-size: 9.75pt;position: relative">
+        <div style="position:absolute; margin-top: 12pt">
+          <img ref="svgRef"/>
+        </div>
+        <div style="font-size: 20pt;text-align: center;font-weight:bold;margin-bottom: 6pt">
+          长沙泰和医院
+        </div>
+        <div style="text-align: center;margin-top: 5pt">
+          {{ title }}
+        </div>
+
+        <table class="no_border">
+          <tr>
+            <td>病人身份:{{ patInfo.responceTypeName }}</td>
+            <td>单号:{{ patInfo.reqNo }}</td>
+            <td>
+              急诊: {{ judgeWhetherItIsEmergency(patInfo.zFlag) }}
+            </td>
+          </tr>
+        </table>
+
+        <div style="border-top: 0.75pt dashed black; border-bottom: 0;width: 100%">
+          <table class="no_border">
+            <tr>
+              <td>住院号:{{ patInfo.inpatientNo }}</td>
+              <td>姓名:{{ patInfo.pname }}</td>
+              <td>性别:{{ cptSex(patInfo.sex) }}</td>
+              <td>年龄:{{ patInfo.page }}</td>
+              <td>床号:{{ patInfo.bedNo }}</td>
+            </tr>
+
+            <tr>
+              <td colspan="3">病人住址: {{ patInfo.homeStreet }}</td>
+              <td colspan="2" style="width: 90pt">联系电话:{{ patInfo.homeTel }}</td>
+            </tr>
+          </table>
+
+        </div>
+
+        <table class="table_border" cellspacing=0>
+          <tr>
+            <td class="describe" style="border-right: 0;border-top: 0.75pt solid black">
+              <div style="height: 5px"/>
+              病史摘要<br>
+              申请检查<br>
+              要求:
+            </td>
+            <td style=" border-top: 0.75pt solid black">
+              {{ patInfo.reqComment }}
+            </td>
+          </tr>
+
+          <tr>
+            <td class="describe" style="border-right: 0">
+              <div style="height: 5px"/>
+              体征
+            </td>
+            <td>
+              {{ patInfo.reqTzComment }}
+            </td>
+          </tr>
+
+          <tr>
+            <td class="describe" style="border-right: 0">
+              <div style="height: 5px"/>
+              相关辅检<br>
+              结果
+            </td>
+            <td>
+              {{ patInfo.reqOtherResult }}
+            </td>
+          </tr>
+
+          <tr>
+            <td class="describe" style="border-right: 0">
+              <div style="height: 5px"/>
+              临床诊断
+            </td>
+            <td>
+              {{ patInfo.diagText }}
+            </td>
+          </tr>
+
+          <tr>
+            <td class="describe" style="border-right: 0">
+              <div style="height: 5px"/>
+              检查部位<br>
+              及项目
+            </td>
+            <td>
+              {{ patInfo.orderName }}
+              <template v-if="stringNotBlank(patInfo.inspectStuffName)">
+                标本: {{ patInfo.inspectStuffName }}
+              </template>
+            </td>
+          </tr>
+
+          <tr>
+            <td class="describe" style="border-right: 0;height: 30pt">
+            </td>
+            <td>
+              <table style="width: 100%">
+                <tr>
+                  <td style="border: 0">
+                    申请科室:{{ patInfo.reqDeptName }}
+                  </td>
+                  <td style="border: 0">
+                    申请医生: {{ patInfo.reqDoctorName }}
+                  </td>
+                </tr>
+                <tr>
+                  <td style="border: 0">
+                    申请日期:{{ patInfo.reqDate }}
+                  </td>
+                  <td style="border: 0">
+                    医师签字:
+                  </td>
+                </tr>
+              </table>
+            </td>
+          </tr>
+        </table>
+        <div style="margin-left: 7.5pt; max-height: 187.5pt">
+          <div>
+            注意事项:
+          </div>
+          <div>
+            <pre style="margin: 3.75pt 0 0;">{{ mattersNeedingAttention }}</pre>
+          </div>
+        </div>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script setup>
+import {cptSex} from "@/utils/computed";
+import {stringIsBlank, stringNotBlank} from "@/utils/blank-utils";
+import JsBarcode from "jsbarcode";
+import sleep from "@/utils/sleep";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+
+const {showPrint} = defineProps({
+  showPrint: {
+    type: Boolean,
+    default: false
+  }
+})
+
+let patInfo = $ref({})
+let title = $ref('检查申请单')
+let mattersNeedingAttention = $ref('')
+
+const judgeWhetherItIsEmergency = (val) => {
+  if (stringIsBlank(val)) return
+  if (val === '1') {
+    return '√'
+  }
+}
+
+const svgRef = ref(null)
+const printRef = ref(null)
+
+onMounted(() => {
+  initLodop()
+})
+
+const printClick = async (data) => {
+  fillData(data)
+  await nextTick()
+  await sleep(200)
+  printDirectly()
+}
+
+const printDirectly = () => {
+  let css = `@page {size: 148mm 210mm;margin:0; padding: 0} *{margin:0; padding: 0;box-sizing: border-box;} table{width:100%}table td{font-size:9pt}.no_border{border:0;width:100%}.table_border{width:100%}.table_border td{border:0.75pt solid;border-top:0;vertical-align:baseline}.describe{width:52.5pt;height:52.5pt;text-align:center;font-size:9pt} `
+  let html = `<style>${css}</style><meta http-equiv="X-UA-Compatible" content="IE=edge"><body>${printRef.value.innerHTML}</body>`
+  let LODOP = getLodop()
+  LODOP.PRINT_INIT('检查检验申请单')
+  LODOP.SET_PRINT_PAGESIZE(0, 0, 0, 'A5')
+  LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true)
+  LODOP.ADD_PRINT_HTM(0, 0, '100%', '100%', html)
+  LODOP.PREVIEW()
+}
+
+const fillData = (data) => {
+  patInfo = data.data
+  title = data.title
+  mattersNeedingAttention = data.mattersNeedingAttention
+
+  JsBarcode(svgRef.value, patInfo.reqNo, {
+    lineColor: '#333',
+    width: 2,
+    height: 18,
+    displayValue: false,
+    margin: 0,
+    fontSize: 12,
+  })
+}
+
+
+defineExpose({
+  printClick,
+  fillData
+})
+
+
+</script>
+
+<style>
+
+@page {
+  size: 148mm 210mm;
+}
+
+table {
+  width: 100%;
+}
+
+table td {
+  font-size: 9pt;
+}
+
+.no_border {
+  border: 0;
+  width: 100%;
+}
+
+.table_border {
+  width: 100%;
+}
+
+.table_border td {
+  border: 0.75pt solid;
+  border-top: 0;
+  vertical-align: baseline;
+}
+
+.describe {
+  width: 52.5pt;
+  height: 52.5pt;
+  text-align: center;
+  font-size: 9pt;
+}
+</style>

+ 0 - 258
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheckV2.vue

@@ -1,258 +0,0 @@
-<template>
-    <el-button @click="printClick(2)">横向打印</el-button>
-    <el-button @click="printClick(1)">竖向打印</el-button>
-    <el-radio v-model="paperSize" label="A4" size="large">A4</el-radio>
-    <el-radio v-model="paperSize" label="A5" size="large">A5</el-radio>
-    <div ref="printRef">
-        <div style="width:394pt;height:570pt;background-color: white;font-size: 9.75pt;position: relative">
-            <div style="position:absolute; margin-top: 12pt">
-                <svg id="reqNo" style="width: 135pt"></svg>
-            </div>
-            <div style="font-size: 20pt;text-align: center;font-weight:bold;margin-bottom: 6pt">
-                长沙泰和医院
-            </div>
-            <div style="text-align: center;margin-top: 5pt">
-                {{ title }}
-            </div>
-
-            <table class="no_border">
-                <tr>
-                    <td>病人身份:{{ patInfo.responceTypeName }}</td>
-                    <td>单号:{{ patInfo.reqNo }}</td>
-                    <td>
-                        急诊: {{ judgeWhetherItIsEmergency(patInfo.zFlag) }}
-                    </td>
-                </tr>
-            </table>
-
-            <div style="border-top: 0.75pt dashed black; border-bottom: 0;width: 100%">
-                <table class="no_border">
-                    <tr>
-                        <td>住院号:{{ patInfo.inpatientNo }}</td>
-                        <td>姓名:{{ patInfo.pname }}</td>
-                        <td>性别:{{ cptSex(patInfo.sex) }}</td>
-                        <td>年龄:{{ patInfo.page }}</td>
-                        <td>床号:{{ patInfo.bedNo }}</td>
-                    </tr>
-
-                    <tr>
-                        <td colspan="3">病人住址: {{ patInfo.homeStreet }}</td>
-                        <td colspan="2" style="width: 90pt">联系电话:{{ patInfo.homeTel }}</td>
-                    </tr>
-                </table>
-
-            </div>
-
-            <table class="table_border" cellspacing=0>
-                <tr>
-                    <td class="describe" style="border-right: 0;border-top: 0.75pt solid black">
-                        <div style="height: 5px"/>
-                        病史摘要<br>
-                        申请检查<br>
-                        要求:
-                    </td>
-                    <td style=" border-top: 0.75pt solid black">
-                        {{ patInfo.reqComment }}
-                    </td>
-                </tr>
-
-                <tr>
-                    <td class="describe" style="border-right: 0">
-                        <div style="height: 5px"/>
-                        体征
-                    </td>
-                    <td>
-                        {{ patInfo.reqTzComment }}
-                    </td>
-                </tr>
-
-                <tr>
-                    <td class="describe" style="border-right: 0">
-                        <div style="height: 5px"/>
-                        相关辅检<br>
-                        结果
-                    </td>
-                    <td>
-                        {{ patInfo.reqOtherResult }}
-                    </td>
-                </tr>
-
-                <tr>
-                    <td class="describe" style="border-right: 0">
-                        <div style="height: 5px"/>
-                        临床诊断
-                    </td>
-                    <td>
-                        {{ patInfo.diagText }}
-                    </td>
-                </tr>
-
-                <tr>
-                    <td class="describe" style="border-right: 0">
-                        <div style="height: 5px"/>
-                        检查部位<br>
-                        及项目
-                    </td>
-                    <td>
-                        {{ patInfo.orderName }}
-                    </td>
-                </tr>
-
-                <tr>
-                    <td class="describe" style="border-right: 0;height: 30pt">
-                    </td>
-                    <td>
-                        <table style="width: 100%">
-                            <tr>
-                                <td style="border: 0">
-                                    申请科室:{{ patInfo.reqDeptName }}
-                                </td>
-                                <td style="border: 0">
-                                    申请医生: {{ patInfo.reqDoctorName }}
-                                </td>
-                            </tr>
-                            <tr>
-                                <td style="border: 0">
-                                    申请日期:{{ patInfo.reqDate }}
-                                </td>
-                                <td style="border: 0">
-                                    医师签字:
-                                </td>
-                            </tr>
-                        </table>
-                    </td>
-                </tr>
-            </table>
-            <div style="margin-left: 7.5pt; max-height: 187.5pt">
-                <div>
-                    注意事项:
-                </div>
-                <div>
-                    <pre style="margin: 3.75pt 0 0;">{{ mattersNeedingAttention }}</pre>
-                </div>
-            </div>
-        </div>
-    </div>
-</template>
-
-<script setup name='PrintCheckV2'>
-
-import {getLodop, initLodop} from "@/utils/c-lodop";
-import {stringIsBlank} from "@/utils/blank-utils";
-import {cptSex} from "@/utils/computed";
-import JsBarcode from "jsbarcode";
-
-
-const printRef = ref()
-const printClick = (flag) => {
-    let LODOP = getLodop()
-    let css = `<style>
-table{
-width: 100%;
-}
-
-table td{
-  font-size: 9pt;
-}
-.no_border {
-  border: 0;
-  width: 100%;
-}
-.table_border {
-  width: 100%;
-}
-
-.table_border td {
-    border: 0.75pt solid black;
-    border-top: 0;
-    vertical-align: baseline;
-  }
-
-.describe {
-  width: 52.5pt;
-  height: 52.5pt;
-  text-align: center;
-  font-size: 9pt;
-}</style>`
-    let strFormHtml = css + '<body style="width:394pt;height:570pt">' + printRef.value.innerHTML + '</body>'
-    LODOP.PRINT_INIT(0, 0, 522, 333, '检查申请') // 初始化打印机 名字
-    LODOP.SET_PRINT_PAGESIZE(flag, 0, 0, paperSize)
-    LODOP.ADD_PRINT_HTML(0, 0, '100%', '100%', strFormHtml)
-    LODOP.PREVIEW()
-}
-
-
-let patInfo = $ref({})
-let title = $ref('检查申请单')
-let mattersNeedingAttention = $ref('')
-let paperSize = $ref('A5')
-const fillData = (data) => {
-    patInfo = data.data
-    title = data.title
-    mattersNeedingAttention = data.mattersNeedingAttention
-    JsBarcode('#reqNo', patInfo.reqNo, {
-        lineColor: '#333', //线条颜色
-        width: 2, //线宽
-        height: 18, //条码高度
-        displayValue: false, //是否显示文字信息,
-        margin: 0,
-        fontSize: 12,
-    })
-}
-
-const judgeWhetherItIsEmergency = (val) => {
-    if (stringIsBlank(val)) return
-    if (val === '1') {
-        return '√'
-    }
-}
-
-
-defineExpose({
-    fillData
-})
-
-onMounted(() => {
-    initLodop()
-    JsBarcode('#reqNo', '0000000', {
-        lineColor: '#333', //线条颜色
-        width: 1, //线宽
-        height: 15, //条码高度
-        displayValue: false, //是否显示文字信息
-    })
-})
-
-</script>
-
-<style scoped>
-table {
-    width: 100%;
-}
-
-table td {
-    font-size: 9pt;
-}
-
-.no_border {
-    border: 0;
-    width: 100%;
-}
-
-.table_border {
-    width: 100%;
-}
-
-.table_border td {
-    border: 0.75pt solid;
-    border-top: 0;
-    vertical-align: baseline;
-}
-
-.describe {
-    width: 52.5pt;
-    height: 52.5pt;
-    text-align: center;
-    font-size: 9pt;
-}
-
-</style>

+ 7 - 1
src/router/modules/dashboard.js

@@ -64,6 +64,12 @@ const route = [
                 meta: {
                     title: '检验申请',
                 },
+            }, {
+                path: 'inspectionAndInspection',
+                component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-v2/InspectionAndInspection.vue')),
+                meta: {
+                    title: '检查检验申请',
+                },
             },
             {
                 path: 'shouShuShenQing',
@@ -535,7 +541,7 @@ const route = [
         ],
     },
     {
-        path: '/emrManage',
+        path: '/myEmrManage',
         component: Layout,
         meta: {title: '电子病历管理'},
         children: [

+ 2 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/EditInspection.vue

@@ -139,7 +139,7 @@ import {stringIsBlank, stringNotBlank} from '@/utils/blank-utils'
 import {biaoBenApi, diagnosisInOurHospital} from '@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
 import XcSelectV3 from "@/components/xiao-chan/select-v3/XcSelectV3.vue";
 import {huoQuZhiXinKeShi} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
-import {xuanZhongJianCha} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {xuanZhongJianYan} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 
 const props = defineProps({
   jianCha: {
@@ -152,7 +152,7 @@ const emit = defineEmits(['fan-ye', 'dialogCloses'])
 
 const fillData = () => {
   let tData = bianJiJianChaShuJu.value
-  xuanZhongJianCha.value.data.forEach((item, i) => {
+  xuanZhongJianYan.value.data.forEach((item, i) => {
     if (i !== index.value - 1) {
       item.jzFlag = tData.jzFlag
       item.ybSelfFlag = tData.ybSelfFlag

+ 186 - 245
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/JianChaShenQing.vue

@@ -1,138 +1,80 @@
 <template>
-    <div class="jiancha-toubu">
-        <el-date-picker
-                v-model="dateRange"
-                :shortcuts="shortcuts"
-                end-placeholder="申请结束"
-                placeholder="选择日期"
-                range-separator="至"
-                size="small"
-                start-placeholder="申请开始"
-                style="width: 220px"
-                type="daterange"/>
-        <el-button icon="Search" type="primary" @click="dianJiChaXunHuanZheJianCha">查询</el-button>
-        <el-divider direction="vertical"></el-divider>
-        <el-button icon="Check" type="success" @click="saveData">保存</el-button>
-        <el-button icon="Check" type="primary" @click="saveTemplate"
-                   :disabled="addCheckList.length ===0">存为模板
-        </el-button>
-        搜索:
-        <xc-combo-grid :query-data-func="getJcItem" @rowClick="searchAdd">
-            <el-table-column label="编码" prop="code"/>
-            <el-table-column width="240" label="名称" prop="name"/>
-            <el-table-column label="执行科室" prop="execUnitName"/>
-        </xc-combo-grid>
+  <div class="jiancha-toubu">
+    <el-date-picker
+        v-model="dateRange"
+        :shortcuts="shortcuts"
+        end-placeholder="申请结束"
+        placeholder="选择日期"
+        range-separator="至"
+        size="small"
+        start-placeholder="申请开始"
+        style="width: 220px"
+        type="daterange"/>
+    <el-button icon="Search" type="primary" @click="dianJiChaXunHuanZheJianCha">查询</el-button>
+    <el-divider direction="vertical"></el-divider>
+    <el-button icon="Check" type="success" @click="saveData">保存</el-button>
+    <el-button icon="Check" type="primary" @click="saveTemplate"
+               :disabled="addCheckList.length ===0">存为模板
+    </el-button>
+    搜索:
+    <xc-combo-grid :query-data-func="getJcItem" @rowClick="searchAdd">
+      <el-table-column label="编码" prop="code"/>
+      <el-table-column width="240" label="名称" prop="name"/>
+      <el-table-column label="执行科室" prop="execUnitName"/>
+    </xc-combo-grid>
+  </div>
+
+  <div style="display: flex;">
+    <div style="max-width: 440px;min-width: 440px;overflow: auto;">
+      <div style="overflow: auto">
+        <el-tabs v-model="asideTabs">
+          <el-tab-pane :name="0" label="新增">
+            <new-application/>
+          </el-tab-pane>
+          <el-tab-pane :name="1" label="历史记录">
+            <check-application-history :data="jianChaShuJu"
+                                       :returnData="dianJiaJianChaXiangQing"/>
+          </el-tab-pane>
+        </el-tabs>
+      </div>
     </div>
 
-    <div style="display: flex;">
-        <div style="max-width: 440px;min-width: 440px;overflow: auto;">
-            <div style="overflow: auto">
-                <el-tabs v-model="asideTabs">
-                    <el-tab-pane :name="0" label="新增">
-                        <new-application/>
-                    </el-tab-pane>
-                    <el-tab-pane :name="1" label="历史记录">
-                        <check-application-history :data="jianChaShuJu"
-                                                   :returnData="dianJiaJianChaXiangQing"/>
-                    </el-tab-pane>
-                </el-tabs>
-            </div>
-        </div>
-
-        <div>
-            <el-tabs v-model="mainTabs">
-                <el-tab-pane :name="0" label="检查申请单">
-                    <print-check-v2 ref="daYingJianChaRef"/>
-                </el-tab-pane>
-                <el-tab-pane :name="1" label="检查结果">
-                    <jian-cha-jie-guo ref="jianChaJieGuoRef" :pat-info="huanZheXinXi"/>
-                </el-tab-pane>
-                <el-tab-pane :name="3" label="编辑数据">
-                    <div :style="{width: getWindowSize.w - (170 + 440)  + 'px'}">
-                        <xc-table :local-data="addCheckList"
-                                  :default-expand-all="false"
-                                  :final-height="getWindowSize.h  - (yzHeaderSize + 90)">
-                            <el-table-column label="操作" width="90" fixed="left">
-                                <template #default="scope">
-                                    <el-button-group>
-                                        <el-button type="primary" icon="Edit" title="编辑"
-                                                   @click="openTheEditPopUpWindow(scope.$index)"/>
-                                        <el-button type="danger" icon="Delete" title="删除"
-                                                   @click="deleteRequest(scope.$index)"/>
-                                    </el-button-group>
-                                </template>
-                            </el-table-column>
-                            <el-table-column label="编码" prop="orderCode" width="60"></el-table-column>
-                            <el-table-column label="名称" prop="orderName" width="220"
-                                             show-overflow-tooltip></el-table-column>
-                            <el-table-column label="诊断" prop="diagText" width="120"
-                                             show-overflow-tooltip></el-table-column>
-                            <el-table-column label="病史摘要" prop="reqComment" show-overflow-tooltip></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="startTime" width="130"/>
-                            <el-table-column label="执行科室" prop="execDeptName" width="110"></el-table-column>
-                            <el-table-column label="急诊" width="40">
-                                <template #default="{row}">
-                    <span v-if="row.jzFlag === 1">
-                      √
-                    </span>
-                                </template>
-                            </el-table-column>
-                            <el-table-column label="自费" width="40">
-                                <template #default="{row}">
-                    <span v-if="row.ybSelfFlag === 1">
-                      √
-                    </span>
-                                </template>
-                            </el-table-column>
-                        </xc-table>
-                    </div>
-                </el-tab-pane>
-            </el-tabs>
-        </div>
-
+    <div>
+      <el-tabs v-model="mainTabs">
+        <el-tab-pane :name="0" label="检查申请单">
+          <print-check-table ref="daYingJianChaRef" show-print/>
+        </el-tab-pane>
+        <el-tab-pane :name="1" label="检查结果">
+          <jian-cha-jie-guo ref="jianChaJieGuoRef" :pat-info="huanZheXinXi"/>
+        </el-tab-pane>
+        <el-tab-pane :name="3" label="编辑数据">
+          <div :style="{width: getWindowSize.w - (170 + 440)  + 'px'}">
+            <jian-cha-jian-yan-table is-check :data="addCheckList"
+                                     :public-data="extraInformation"
+                                     @del-click="deleteRequest"/>
+          </div>
+        </el-tab-pane>
+      </el-tabs>
     </div>
-
-
-    <xc-dialog-v2 v-model="editor.dialog" title="检查编辑">
-        <inspection-requisition :data="editor.data"
-                                :diagnosis="diagnosis"
-                                :search-diagnostics="searchDiagnostics"/>
-
-        <template #footer>
-            {{ (editor.index + 1) + '/' + addCheckList.length }}
-            <el-button-group>
-                <el-button @click="openTheEditPopUpWindow(editor.index-1)" :disabled="editor.index === 0">
-                    上一个
-                </el-button>
-                <el-button @click="openTheEditPopUpWindow(editor.index+1)"
-                           :disabled="editor.index === addCheckList.length - 1">下一个
-                </el-button>
-            </el-button-group>
-            <el-button type="primary" @click="fillData(editor.index,editor.data)">确认</el-button>
-        </template>
-    </xc-dialog-v2>
-    <save-template-inspection ref="saveTemplateRef"/>
+  </div>
+  <save-template-inspection ref="saveTemplateRef"/>
 </template>
 
 <script setup name="JianChaShenQing">
 import {
-    addJcCheck,
-    addCheckList, cuoWuXinXi,
-    huanZheXinXi,
-    youWuXuanZheHuanZhe, yzHeaderSize
+  addJcCheck,
+  addCheckList, cuoWuXinXi,
+  huanZheXinXi,
+  youWuXuanZheHuanZhe, yzHeaderSize
 } from '@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng'
 import {computed, ref, watch} from 'vue'
 import {
-    baoCunJianYanJianCha,
-    diagnosisInOurHospital, getJcItem,
-    huoQuJianChaShenQing,
-    huoQuJianYanJianChaMing,
-    huoQuShengQingXiangQing,
-    queryCheckTextResults,
+  baoCunJianYanJianCha,
+  diagnosisInOurHospital, getJcItem,
+  huoQuJianChaShenQing,
+  huoQuJianYanJianChaMing,
+  huoQuShengQingXiangQing,
+  queryCheckTextResults,
 } from '@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
 import store from '@/store'
 import {getDateRangeFormatDate} from '@/utils/date'
@@ -140,23 +82,21 @@ import {shortcuts} from '@/data/shortcuts'
 import {ElMessageBox} from 'element-plus'
 import CheckApplicationHistory from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/aside/CheckApplicationHistory";
 import NewApplication from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/aside/NewApplication";
-import InspectionRequisition
-    from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/InspectionRequisition";
 import SaveTemplateInspection
-    from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/SaveTemplateInspection";
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/SaveTemplateInspection";
 import {BizException, ExceptionEnum} from "@/utils/BizException";
 import {yaoPinXiangMuPiPeiYiBao} from "@/api/public-api";
-import {stringNotBlank} from "@/utils/blank-utils";
+import {stringIsBlank, stringNotBlank} from "@/utils/blank-utils";
 import JianChaJieGuo from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/JianChaJieGuo.vue";
-import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
-import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2.vue";
 import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
-import PrintCheckV2 from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheckV2.vue";
 import {getWindowSize} from "@/utils/window-size";
+import JianChaJianYanTable
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JianChaJianYanTable.vue";
+import PrintCheckTable from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheckTable.vue";
 
 
 const windowSize = computed(() => {
-    return store.state.app.windowSize
+  return store.state.app.windowSize
 })
 
 
@@ -175,17 +115,17 @@ const jianChaJieGuoRef = ref()
  * @param total
  */
 const dianJiChaXunHuanZheJianCha = () => {
-    let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
-    let param = {
-        patNo: huanZheXinXi.value.inpatientNo,
-        times: huanZheXinXi.value.admissTimes,
-        orderName: orderName.value,
-        startTime: startTime,
-        endTime: endTime,
-    }
-    huoQuJianChaShenQing(param).then((res) => {
-        jianChaShuJu.value = res
-    })
+  let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
+  let param = {
+    patNo: huanZheXinXi.value.inpatientNo,
+    times: huanZheXinXi.value.admissTimes,
+    orderName: orderName.value,
+    startTime: startTime,
+    endTime: endTime,
+  }
+  huoQuJianChaShenQing(param).then((res) => {
+    jianChaShuJu.value = res
+  })
 }
 
 
@@ -194,21 +134,21 @@ const dianJiChaXunHuanZheJianCha = () => {
  * @param row 行数据
  */
 const dianJiaJianChaXiangQing = (row) => {
-    huoQuShengQingXiangQing(row.reqNo).then((res) => {
-        daYingJianChaRef.value.fillData(res)
-        mainTabs.value = 0
+  huoQuShengQingXiangQing(row.reqNo).then((res) => {
+    daYingJianChaRef.value.fillData(res)
+    mainTabs.value = 0
+  })
+
+  queryCheckTextResults(row.inpatientNo, row.reqNo).then((res) => {
+    res.row = row
+    jianChaJieGuoRef.value.fillData(res).then(() => {
+      mainTabs.value = 1
     })
-
-    queryCheckTextResults(row.inpatientNo, row.reqNo).then((res) => {
-        res.row = row
-        jianChaJieGuoRef.value.fillData(res).then(() => {
-            mainTabs.value = 1
-        })
-    }).catch((e) => {
-        jianChaJieGuoRef.value.fillData({
-            record: {}, row: {}
-        })
+  }).catch((e) => {
+    jianChaJieGuoRef.value.fillData({
+      record: {}, row: {}
     })
+  })
 
 
 }
@@ -217,121 +157,127 @@ const dianJiaJianChaXiangQing = (row) => {
 // 搜索临床诊断
 const diagnosis = ref([])
 const searchDiagnostics = (val) => {
-    diagnosisInOurHospital(val).then((res) => {
-        diagnosis.value = res
-    })
+  diagnosisInOurHospital(val).then((res) => {
+    diagnosis.value = res
+  })
 }
 
 // 保存模板
 const saveTemplateRef = ref()
 const saveTemplate = () => {
-    saveTemplateRef.value.openOrClose()
+  saveTemplateRef.value.openOrClose()
 }
 
+
+let extraInformation = $ref({})
+
 // 保存数据
 const saveData = () => {
-    if (youWuXuanZheHuanZhe()) return
-    if (addCheckList.value.length === 0) {
-        BizException(ExceptionEnum.LOGICAL_ERROR, '请先选择数据')
+
+  if (youWuXuanZheHuanZhe()) return
+
+  function error() {
+    if (stringNotBlank(huanZheXinXi.value.inpatientNo)) {
+      BizException(ExceptionEnum.LOGICAL_ERROR, "病史摘要、体征信息、相关辅检结果、临床诊断,不能为空。")
     }
-    let listCode = []
-    addCheckList.value.forEach((item) => {
-        listCode.push(item.orderCode + '-00')
-    })
-    yaoPinXiangMuPiPeiYiBao(listCode).then((res) => {
-        if (stringNotBlank(res)) {
-            cuoWuXinXi.value = res
-            ElMessageBox.confirm(res, '提示', {
-                type: 'warning',
-                dangerouslyUseHTMLString: true,
-                confirmButtonText: '继续录入'
-            })
-                .then(() => {
-                    baoCunShuJu()
-                })
-                .catch(() => {
-                })
-        } else {
+  }
+
+  if (stringIsBlank(extraInformation.reqComment)) {
+    error()
+  }
+  if (stringIsBlank(extraInformation.reqTzComment)) {
+    error()
+  }
+  if (stringIsBlank(extraInformation.reqOtherResult)) {
+    error();
+  }
+  if (stringIsBlank(extraInformation.diagCode)) {
+    error()
+  }
+
+  for (let i = 0, len = addCheckList.value.length; i < len; i++) {
+    let item = addCheckList.value[i]
+    item.reqComment = extraInformation.reqComment
+    item.reqTzComment = extraInformation.reqTzComment
+    item.reqOtherResult = extraInformation.reqOtherResult
+    item.diagCode = extraInformation.diagCode
+    item.diagText = extraInformation.diagText;
+  }
+
+  if (addCheckList.value.length === 0) {
+    BizException(ExceptionEnum.LOGICAL_ERROR, '请先选择数据')
+  }
+  let listCode = []
+  addCheckList.value.forEach((item) => {
+    listCode.push(item.orderCode + '-00')
+  })
+  yaoPinXiangMuPiPeiYiBao(listCode).then((res) => {
+    if (stringNotBlank(res)) {
+      cuoWuXinXi.value = res
+      ElMessageBox.confirm(res, '提示', {
+        type: 'warning',
+        dangerouslyUseHTMLString: true,
+        confirmButtonText: '继续录入'
+      })
+          .then(() => {
             baoCunShuJu()
-        }
-    })
+          })
+          .catch(() => {
+          })
+    } else {
+      baoCunShuJu()
+    }
+  })
 }
 
 function baoCunShuJu() {
-    ElMessageBox.confirm('确定要保存这些数据吗?', '提示', {
-        type: 'warning',
-    }).then(() => {
-        let data = huanZheXinXi.value
-        data.list = addCheckList.value
-        data.reqType = 3
-        baoCunJianYanJianCha(data)
-            .then((res) => {
-                addCheckList.value = []
-                dianJiChaXunHuanZheJianCha()
-                mainTabs.value = 0
-                asideTabs.value = 1
-            })
-    }).catch(() => {
-    })
+  ElMessageBox.confirm('确定要保存这些数据吗?', '提示', {
+    type: 'warning',
+  }).then(() => {
+    let data = huanZheXinXi.value
+    data.list = addCheckList.value
+    data.reqType = 3
+    baoCunJianYanJianCha(data)
+        .then((res) => {
+          addCheckList.value = []
+          dianJiChaXunHuanZheJianCha()
+          mainTabs.value = 0
+          asideTabs.value = 1
+          extraInformation = {}
+        })
+  }).catch(() => {
+  })
 }
 
 // 查询患者的检查项目名称
 const querySearchAsync = (val, cb) => {
-    if (youWuXuanZheHuanZhe()) return
-    huoQuJianYanJianChaMing(val, huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, huanZheXinXi.value.bedNo, '3').then((res) => {
-        cb(res)
-    })
+  if (youWuXuanZheHuanZhe()) return
+  huoQuJianYanJianChaMing(val, huanZheXinXi.value.inpatientNo, huanZheXinXi.value.admissTimes, huanZheXinXi.value.bedNo, '3').then((res) => {
+    cb(res)
+  })
 }
 
-// 编辑器弹窗
-const editor = ref({
-    dialog: false,
-    data: {},
-    index: -1
-})
-const openTheEditPopUpWindow = (index) => {
-    editor.value.index = index
-    editor.value.dialog = true
-    editor.value.data = addCheckList.value[index]
-}
 const deleteRequest = (index) => {
-    addCheckList.value.splice(index, 1)
+  addCheckList.value.splice(index, 1)
 }
 
 const searchAdd = (data) => {
-    let temp = {
-        execDept: data.execUnit,
-        execDeptName: data.execUnitName,
-        orderCode: data.code,
-        orderName: data.name,
-    }
-    addJcCheck(temp)
+  let temp = {
+    execDept: data.execUnit,
+    execDeptName: data.execUnitName,
+    orderCode: data.code,
+    orderName: data.name,
+  }
+  addJcCheck(temp)
 }
 
 
-const fillData = (i, data) => {
-    addCheckList.value.forEach((item, index) => {
-        if (index !== i) {
-            item.jzFlag = data.jzFlag
-            item.ybSelfFlag = data.ybSelfFlag
-
-            item.diagCode = data.diagCode
-            item.diagText = data.diagText
-
-            item.reqComment = data.reqComment
-            item.reqTzComment = data.reqTzComment
-            item.reqOtherResult = data.reqOtherResult
-        }
-    })
-    editor.value.dialog = false
-}
-
 watch(
     () => huanZheXinXi.value,
     () => {
-        dianJiChaXunHuanZheJianCha()
+      dianJiChaXunHuanZheJianCha()
     }, {
-        immediate: true
+      immediate: true
     }
 )
 
@@ -339,11 +285,6 @@ watch(
 </script>
 
 <style scoped lang="scss">
-.jiancha-toubu {
-  //display: flex;
-  //align-content: center;
-}
-
 :deep(.el-table .success-row) {
   background: rgba(71, 123, 220, 0.69);
 }

+ 158 - 135
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/JianYanShenQing.vue

@@ -1,100 +1,112 @@
 <template>
-    <div>
-        检验时间:
-        <el-date-picker
-                v-model="dateRange"
-                :shortcuts="shortcuts"
-                clearable
-                end-placeholder="结束日期"
-                placeholder="选择日期"
-                range-separator="至"
-                size="small"
-                start-placeholder="开始日期"
-                style="width: 280px"
-                type="daterange"
-        ></el-date-picker>
-        <el-divider direction="vertical"></el-divider>
-        <el-button icon="Search" type="primary" @click="dianJiChaXunJianYan">查询</el-button>
-        <el-button icon="View" type="primary" @click="dianJiChaKanHuanZheJianYan">查看患者检验</el-button>
-        检验搜索查询:
-        <xc-combo-grid :query-data-func="getJyItem" @rowClick="searchAdd">
-            <el-table-column label="编码" prop="code"/>
-            <el-table-column width="240" label="名称" prop="name"/>
-            <el-table-column label="标本" prop="inspectStuffName"/>
-            <el-table-column label="执行科室" prop="execUnitName"/>
-        </xc-combo-grid>
-    </div>
-
-    <div>
-        <el-tabs v-model="activeName">
-            <el-tab-pane :name="1" label="新增">
-                <tian-jia-jian-cha-jian-yan :jian-cha="false"/>
-            </el-tab-pane>
-            <el-tab-pane :name="0" label="历史记录">
-                <xc-table :local-data="jianYanShuJu" :final-height="getWindowSize.h - (yzHeaderSize + 75) ">
-                    <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-column label="接受" prop="receiveFlagName"></el-table-column>
-                    <el-table-column label="操作" width="250" fixed="right">
-                        <template #default="scope">
-                            <el-popover :width="500"
-                                        trigger="click"
-                                        placement="left"
-                                        title="费用详情">
-                                <template #reference>
-                                    <el-button icon="View" type="primary" text @click="viewFeeDetails(scope.row )">
-                                        查看详情
-                                    </el-button>
-                                </template>
-                                <el-table :data="feeDetailsData">
-                                    <el-table-column property="orderCode" label="检查编码"/>
-                                    <el-table-column property="occCode" label="收费编码"/>
-                                    <el-table-column property="name" label="名字"/>
-                                    <el-table-column property="amount" label="数量"/>
-                                    <el-table-column property="chargeAmount" label="金额"/>
-                                    <el-table-column property="unitPrice" label="单价"/>
-                                </el-table>
-                            </el-popover>
-                            <el-button icon="Delete" type="danger" text @click="dianJiShanChu(scope.row, scope.$index)">
-                                删除
-                            </el-button>
-                        </template>
-                    </el-table-column>
-                </xc-table>
-            </el-tab-pane>
-        </el-tabs>
-    </div>
+  <div>
+    检验时间:
+    <el-date-picker
+        v-model="dateRange"
+        :shortcuts="shortcuts"
+        clearable
+        end-placeholder="结束日期"
+        placeholder="选择日期"
+        range-separator="至"
+        size="small"
+        start-placeholder="开始日期"
+        style="width: 280px"
+        type="daterange"
+    ></el-date-picker>
+    <el-divider direction="vertical"></el-divider>
+    <el-button icon="Search" type="primary" @click="dianJiChaXunJianYan">查询</el-button>
+    <el-button @click="yzMitt.emit('jySave')" icon="Check" type="success">保存</el-button>
+    <el-button @click="yzMitt.emit('jySaveTemplate')" icon="Check" type="primary">存为模板</el-button>
+    <CuoWuXinXiVue/>
+    <el-button icon="View" type="primary" @click="dianJiChaKanHuanZheJianYan">查看患者检验</el-button>
+    检验搜索查询:
+    <xc-combo-grid :query-data-func="getJyItem" @rowClick="searchAdd">
+      <el-table-column label="编码" prop="code"/>
+      <el-table-column width="240" label="名称" prop="name"/>
+      <el-table-column label="标本" prop="inspectStuffName"/>
+      <el-table-column label="执行科室" prop="execUnitName"/>
+    </xc-combo-grid>
+  </div>
+
+  <!--  这里是打印病理检验申请单的   -->
+  <print-check-table ref="printRef" v-show="false"/>
+
+  <div>
+    <el-tabs v-model="activeName">
+      <el-tab-pane :name="1" label="新增">
+        <TianJiaJianYan/>
+      </el-tab-pane>
+      <el-tab-pane :name="0" label="历史记录">
+        <xc-table :local-data="jianYanShuJu" :final-height="getWindowSize.h - (yzHeaderSize + 75) ">
+          <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-column label="接受" prop="receiveFlagName"></el-table-column>
+          <el-table-column label="操作" width="250" fixed="right">
+            <template #default="scope">
+              <el-button-group>
+                <el-button @click="printClick(scope.row)" type="primary">打印</el-button>
+                <el-popover :width="500"
+                            trigger="click"
+                            placement="left"
+                            title="费用详情">
+                  <template #reference>
+                    <el-button @click="viewFeeDetails(scope.row)">
+                      明细
+                    </el-button>
+                  </template>
+                  <el-table :data="feeDetailsData">
+                    <el-table-column property="orderCode" label="检查编码"/>
+                    <el-table-column property="occCode" label="收费编码"/>
+                    <el-table-column property="name" label="名字"/>
+                    <el-table-column property="amount" label="数量"/>
+                    <el-table-column property="chargeAmount" label="金额"/>
+                    <el-table-column property="unitPrice" label="单价"/>
+                  </el-table>
+                </el-popover>
+                <el-button type="danger" @click="dianJiShanChu(scope.row, scope.$index)">
+                  删除
+                </el-button>
+              </el-button-group>
+            </template>
+          </el-table-column>
+        </xc-table>
+      </el-tab-pane>
+    </el-tabs>
+  </div>
 
 </template>
 
 <script name="JianYanShenQing" setup>
-import {ref, watch} from 'vue'
+import {createVNode, ref, watch} from 'vue'
 import {shortcuts} from '@/data/shortcuts'
 import {getDateRangeFormatDate, getFormatDatetime} from '@/utils/date'
 import {
-    huanZheXinXi,
-    xuanZhongJianCha,
-    youWuXuanZheHuanZhe, yzHeaderSize
+  huanZheXinXi,
+  xuanZhongJianYan,
+  youWuXuanZheHuanZhe,
+  yzHeaderSize, yzMitt
 } from '@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng'
 import {
-    getJyItem,
-    huoQuJianYan,
-    shanChuJianChaJianYan, viewInspectionItemDetails
+  getJyItem,
+  huoQuJianYan, huoQuShengQingXiangQing, queryCheckTextResults,
+  shanChuJianChaJianYan, viewInspectionItemDetails
 } from '@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
 import router from '@/router'
 import {ElMessageBox} from 'element-plus'
 import {getServerDateApi} from '@/api/public-api'
-import TianJiaJianChaJianYan from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianChaJianYan";
+import TianJiaJianYan from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianYan.vue";
 import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
 import {xcMessage} from "@/utils/xiaochan-element-plus";
 import {getWindowSize} from "@/utils/window-size";
 import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
+import CuoWuXinXiVue from "@/components/zhu-yuan-yi-sheng/CuoWuXinXi.vue";
+import PrintCheckTable from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheckTable.vue";
 
 
 const dateRange = ref(null)
@@ -103,88 +115,99 @@ const jianYanShuJu = ref([])
 const activeName = ref(1)
 
 const chaXunJianYanTiaoJian = ref({
-    orderName: '',
-    startTime: '',
-    endTime: '',
-    patNo: '',
-    times: '',
+  orderName: '',
+  startTime: '',
+  endTime: '',
+  patNo: '',
+  times: '',
 })
 
 const dianJiChaXunJianYan = () => {
-    let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
-    chaXunJianYanTiaoJian.value.startTime = startTime
-    chaXunJianYanTiaoJian.value.endTime = endTime
-    chaXunJianYanTiaoJian.value.patNo = huanZheXinXi.value.inpatientNo
-    chaXunJianYanTiaoJian.value.times = huanZheXinXi.value.admissTimes
-    huoQuJianYan(chaXunJianYanTiaoJian.value).then((res) => {
-        jianYanShuJu.value = res
-    })
+  let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
+  chaXunJianYanTiaoJian.value.startTime = startTime
+  chaXunJianYanTiaoJian.value.endTime = endTime
+  chaXunJianYanTiaoJian.value.patNo = huanZheXinXi.value.inpatientNo
+  chaXunJianYanTiaoJian.value.times = huanZheXinXi.value.admissTimes
+  huoQuJianYan(chaXunJianYanTiaoJian.value).then((res) => {
+    jianYanShuJu.value = res
+    activeName.value = 0
+  })
 }
 
 
 let feeDetailsData = $ref([])
 
 const viewFeeDetails = ({orderCode}) => {
-    viewInspectionItemDetails(orderCode).then((res) => {
-        feeDetailsData = res
-    })
+  viewInspectionItemDetails(orderCode).then((res) => {
+    feeDetailsData = res
+  })
 }
 
 const dianJiShanChu = (row, index) => {
-    ElMessageBox.confirm(`您确定要删除【${row.orderName}】吗?`, '提示')
-        .then(() => {
-            shanChuJianChaJianYan(row.reqNo, row.inpatientNo, row.admissTimes).then((res) => {
-                jianYanShuJu.value.splice(index, 1)
-            })
-        })
-        .catch(() => {
+  ElMessageBox.confirm(`您确定要删除【${row.orderName}】吗?`, '提示')
+      .then(() => {
+        shanChuJianChaJianYan(row.reqNo, row.inpatientNo, row.admissTimes).then((res) => {
+          jianYanShuJu.value.splice(index, 1)
         })
+      })
+      .catch(() => {
+      })
 }
 
 // 点击查看患者检验
 const dianJiChaKanHuanZheJianYan = () => {
-    if (youWuXuanZheHuanZhe()) return
-    let end = ''
-    getServerDateApi().then((res) => {
-        end = getFormatDatetime(res, 'YYYY-MM-DD')
-        router.push({
-            name: 'inspectionReportIndex',
-            params: {
-                passRule: true,
-                patNo: huanZheXinXi.value.inpatientNo,
-                start: huanZheXinXi.value.admissDate,
-                end: end,
-            },
-        })
+  if (youWuXuanZheHuanZhe()) return
+  let end = ''
+  getServerDateApi().then((res) => {
+    end = getFormatDatetime(res, 'YYYY-MM-DD')
+    router.push({
+      name: 'inspectionReportIndex',
+      params: {
+        passRule: true,
+        patNo: huanZheXinXi.value.inpatientNo,
+        start: huanZheXinXi.value.admissDate,
+        end: end,
+      },
     })
+  })
 }
 
 const searchAdd = async (val) => {
-    let temp = {
-        orderType: "",
-        execDept: val.execUnit,
-        execDeptName: val.execUnitName,
-        inspectStuff: val.inspectStuff,
-        inspectStuffName: val.inspectStuffName,
-        orderCode: val.code,
-        startTime: await getServerDateApi(),
-        orderName: val.name,
-        checkFlag: "0",
-        jzFlag: 0,
-        ybSelfFlag: 0
-    }
-    if (xuanZhongJianCha.value.weiBianMa.indexOf(temp.orderCode) > -1) {
-        xcMessage.error('请勿重复添加。')
-    } else {
-        xuanZhongJianCha.value.weiBianMa.push(temp.orderCode)
-        xuanZhongJianCha.value.data.push(temp)
-    }
+  let temp = {
+    orderType: "",
+    execDept: val.execUnit,
+    execDeptName: val.execUnitName,
+    inspectStuff: val.inspectStuff,
+    inspectStuffName: val.inspectStuffName,
+    orderCode: val.code,
+    startTime: await getServerDateApi(),
+    orderName: val.name,
+    checkFlag: "0",
+    jzFlag: 0,
+    ybSelfFlag: 0,
+    classes: val.classes
+  }
+  if (xuanZhongJianYan.value.weiBianMa.indexOf(temp.orderCode) > -1) {
+    xcMessage.error('请勿重复添加。')
+  } else {
+    xuanZhongJianYan.value.weiBianMa.push(temp.orderCode)
+    xuanZhongJianYan.value.data.push(temp)
+  }
 }
 
+
+const printRef = ref(null)
+const printClick = (row) => {
+  huoQuShengQingXiangQing(row.reqNo).then(async (res) => {
+    await printRef.value.printClick(res)
+  })
+}
+
+
 watch(
     () => huanZheXinXi.value,
     () => {
-        dianJiChaXunJianYan()
+      dianJiChaXunJianYan()
     },
     {immediate: true}
 )

+ 0 - 127
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/CheckTheEdits.vue

@@ -1,127 +0,0 @@
-<script setup name='CheckTheEdits'>
-import XcSelectV3 from "@/components/xiao-chan/select-v3/XcSelectV3.vue";
-import {huoQuZhiXinKeShi} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
-import {diagnosisInOurHospital} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
-
-const dialog = ref(true)
-
-const {data} = defineProps({
-  data: {
-    type: Object,
-    default: {}
-  }
-})
-
-
-/* 获取执行科室 */
-const zhiXingKeShiData = ref([])
-const metZhiXingKeShi = (val) => {
-  huoQuZhiXinKeShi(val).then((res) => {
-    zhiXingKeShiData.value = res
-  })
-}
-
-const linChuangZhenDuanShuJu = ref([])
-const linChuangZhenDuanSuoSou = (val) => {
-  diagnosisInOurHospital(val).then((res) => {
-    linChuangZhenDuanShuJu.value = res
-  })
-}
-
-</script>
-
-<template>
-
-  <el-dialog v-model="dialog" title="编辑检验">
-
-    <el-form label-width="100px" size="small" inline>
-      <el-row>
-
-        <el-col :span="12">
-          <el-form-item label="检查项目编码:">
-            {{ data.orderCode }}
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="检查项目名称:">
-            {{ data.orderName }}
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item class="bi_tian" label="检查时间:">
-            <el-date-picker
-                v-model="data.startTime"
-                format="YYYY-MM-DD HH:mm:ss"
-                style="width: 180px"
-                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 class="bi_tian" label="执行科室:">
-            <xc-select-v3
-                style="width: 120px"
-                v-model="data"
-                :data="zhiXingKeShiData"
-                code="execDept"
-                name="execDeptName"
-                :remote-method="metZhiXingKeShi"/>
-          </el-form-item>
-        </el-col>
-
-        <el-col :span="12">
-          <el-form-item label="急诊:">
-            <el-switch
-                v-model="data.jzFlag"
-                :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.ybSelfFlag"
-                :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 class="bi_tian" label="临床诊断:" prop="diagCode">
-            <xc-select-v3
-                v-model="data"
-                :data="linChuangZhenDuanShuJu"
-                :remote-method="linChuangZhenDuanSuoSou"
-                code="diagCode"
-                name="diagText"
-            />
-          </el-form-item>
-        </el-col>
-
-
-      </el-row>
-    </el-form>
-
-
-  </el-dialog>
-
-</template>
-
-<style scoped lang="scss">
-
-</style>

+ 0 - 104
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/JianYanShenQingDan.vue

@@ -1,104 +0,0 @@
-<script setup name='JianYanShenQingDan'>
-import JsBarcode from "jsbarcode";
-
-const props = defineProps({
-  data: {
-    inpatientNo: ''
-  }
-})
-
-
-onMounted(async () => {
-  await nextTick()
-  JsBarcode("#pathologyApplicationForm", '1561561', {
-    lineColor: "#333",
-    width: 2,
-    height: 30,
-    displayValue: false, //是否显示文字信息
-    fontSize: 15,//设置文本的大小
-    margin: 0,
-  });
-})
-</script>
-
-<template>
-  <div style="height: 500px;width: 560px;">
-    <table width="100%" style=" border-collapse:collapse">
-      <thead style="height: 14pt; text-align: center">
-      <tr>
-        <th colspan="7" style="border: 0">
-          <div style="position: relative ">
-            <div style="position: absolute; left: 5px; top: 5px; height: 20px">
-              <svg id="pathologyApplicationForm"/>
-            </div>
-            <div style="font-size: 20px">
-              长沙泰和医院
-            </div>
-            <div>
-              检验申请单
-            </div>
-          </div>
-        </th>
-      </tr>
-      </thead>
-
-      <tbody style="border: 1px solid #000">
-      <tr style="border-bottom: 1px solid #000">
-        <td style="padding: 5px">住院号:{{ props.data.inpatientNo }}</td>
-        <td style="padding: 5px">姓名:{{ props.data.name }}</td>
-        <td style="padding: 5px">性别:{{ props.data.sexName }}</td>
-        <td style="padding: 5px">年龄:{{ props.data.age }}</td>
-      </tr>
-
-      <tr class="content_of_the_application">
-        <td>标本</td>
-        <td colspan="3">
-          {{ props.data.inspectStuffName }}
-        </td>
-      </tr>
-
-      <tr class="content_of_the_application">
-        <td>申请说明</td>
-        <td colspan="3">
-          {{ props.data.reqComment }}
-        </td>
-      </tr>
-
-      </tbody>
-
-      <tfoot>
-      <tr>
-        <td style="border-left: 1px solid #000">
-          申请科室:
-        </td>
-        <td colspan="3" style="border-right:  1px solid #000">
-          申请医生:
-        </td>
-      </tr>
-      <tr style="border-bottom: 1px solid #000">
-        <td style="border-left: 1px solid #000">
-          申请日期:
-        </td>
-        <td colspan="3" style="border-right:  1px solid #000">
-          申请医生
-        </td>
-      </tr>
-      </tfoot>
-
-    </table>
-  </div>
-</template>
-
-<style scoped lang="scss">
-td {
-  padding: 5px;
-}
-
-.content_of_the_application td {
-  padding: 10px;
-  border-right: 1px solid #000;
-  border-bottom: 1px solid #000;
-}
-
-
-</style>

+ 219 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JianChaJianYanTable.vue

@@ -0,0 +1,219 @@
+<script setup name='JianChaJianYanTable'>
+import {yzHeaderSize} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
+import {getWindowSize} from "@/utils/window-size";
+import {huoQuZhiXinKeShi} from "@/api/zhu-yuan-yi-sheng/yi-zhu-lu-ru";
+import XcComboGrid from "@/components/xiao-chan/combo-grid/XcComboGrid.vue";
+import {biaoBenApi, diagnosisInOurHospital} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
+import XcSelectV3 from "@/components/xiao-chan/select-v3/XcSelectV3.vue";
+
+const {data, isCheck} = defineProps({
+  data: {
+    type: Array,
+    default: []
+  },
+  isCheck: {
+    type: Boolean,
+    default: false
+  },
+  publicData: {
+    type: Object,
+    default: {}
+  }
+})
+
+const emits = defineEmits(['delClick'])
+
+
+const deleteInspectionCheck = (index) => {
+  emits('delClick', index)
+}
+
+const starAdd = (obj) => {
+  let index = [0, 1, 2, 3, 6, 7, 8, 9]
+  if (index.indexOf(obj.columnIndex) > -1) {
+    return 'star'
+  }
+}
+
+/* 获取执行科室 */
+const zhiXingKeShiData = ref([])
+const metZhiXingKeShi = (val) => {
+  huoQuZhiXinKeShi(val).then((res) => {
+    zhiXingKeShiData.value = res
+  })
+}
+
+// 标本
+const biaoBenShuJu = ref([])
+const biaoBenSouSuo = (val) => {
+  biaoBenApi(val).then((res) => {
+    biaoBenShuJu.value = res
+  })
+}
+
+// 临床诊断
+const linChuangZhenDuanShuJu = ref([])
+const linChuangZhenDuanSuoSou = (val) => {
+  diagnosisInOurHospital(val).then((res) => {
+    linChuangZhenDuanShuJu.value = res
+  })
+}
+
+const divRef = ref(null)
+
+const tableHeight = computed(() => {
+  if (divRef.value != null) {
+    return getWindowSize.value.h - (yzHeaderSize.value + 75) - divRef?.value.clientHeight;
+  }
+  return getWindowSize.value.h - (yzHeaderSize.value + 75)
+})
+
+const PATHOLOGY = '038'
+
+const needPublicData = computed(() => {
+
+  if (isCheck) {
+    return true
+  }
+
+  for (let i = 0; i < data.length; i++) {
+    let item = data[i];
+    if (item.classes === PATHOLOGY) {
+      return true
+    }
+  }
+})
+
+const enterPadding = (val) => {
+  data.forEach(item => {
+    if (item.classes !== PATHOLOGY) {
+      item.reqComment = val
+    }
+  })
+}
+
+</script>
+
+<template>
+  <div ref="divRef">
+    <el-row :gutter="5" v-if="needPublicData">
+      <el-col :span="12">
+        病史摘要:
+        <el-input v-model="publicData.reqComment"
+                  :rows="2" maxlength="125"
+                  show-word-limit
+                  type="textarea"/>
+      </el-col>
+
+      <el-col :span="12">
+        体征信息:
+        <el-input v-model="publicData.reqTzComment"
+                  :rows="2" maxlength="125"
+                  show-word-limit
+                  type="textarea"/>
+      </el-col>
+
+      <el-col :span="12">
+        相关辅检结果:
+        <el-input v-model="publicData.reqOtherResult"
+                  :rows="2"
+                  maxlength="125"
+                  show-word-limit
+                  type="textarea"/>
+      </el-col>
+
+      <el-col :span="12">
+        临床诊断:
+        <br>
+        <xc-select-v3
+            v-model="publicData"
+            :data="linChuangZhenDuanShuJu"
+            :remote-method="linChuangZhenDuanSuoSou"
+            code="diagCode"
+            name="diagText"/>
+      </el-col>
+
+    </el-row>
+  </div>
+
+  <el-table :data="data"
+            :header-cell-class-name="starAdd"
+            :height="tableHeight">
+    <el-table-column label="操作" width="90" fixed="left">
+      <template #default="scope">
+        <el-button-group>
+          <el-button icon="Delete" type="danger"
+                     @click="deleteInspectionCheck(scope.$index)"></el-button>
+        </el-button-group>
+      </template>
+    </el-table-column>
+    <el-table-column label="项目名称"
+                     prop="orderName"
+                     width="220"
+                     show-overflow-tooltip/>
+    <el-table-column label="执行科室" prop="execDeptName" width="100">
+      <template #default="scope">
+        <xc-combo-grid
+            v-model="scope.row"
+            code="execDept"
+            name="execDeptName"
+            :query-data-func="metZhiXingKeShi"
+            :data="zhiXingKeShiData"/>
+      </template>
+    </el-table-column>
+    <el-table-column label="标本"
+                     v-if="!isCheck"
+                     prop="inspectStuffName" width="80">
+      <template #default="scope">
+        <xc-combo-grid
+            v-model="scope.row"
+            :data="biaoBenShuJu"
+            :query-data-func="biaoBenSouSuo"
+            code="inspectStuff"
+            name="inspectStuffName"
+        />
+      </template>
+    </el-table-column>
+    <el-table-column label="申请说明"
+                     width="220px"
+                     v-if="!isCheck">
+      <template #default="scope">
+        <el-input v-model="scope.row.reqComment"
+                  @keydown.enter.prevent="enterPadding(scope.row.reqComment)"
+                  :disabled="scope.row.classes === PATHOLOGY"
+                  maxlength="125"/>
+      </template>
+    </el-table-column>
+    <el-table-column label="急诊" width="90">
+      <template #default="scope">
+        <el-switch
+            v-model="scope.row.jzFlag"
+            :active-value="1"
+            :inactive-value="0"
+            active-color="#13ce66"
+            active-text="是"
+            inactive-color="#ff4949"
+            inactive-text="否">
+        </el-switch>
+      </template>
+    </el-table-column>
+    <el-table-column label="自费" width="90">
+      <template #default="scope">
+        <el-switch
+            v-model="scope.row.ybSelfFlag"
+            :active-value="1"
+            :inactive-value="0"
+            active-color="#13ce66"
+            active-text="是"
+            inactive-color="#ff4949"
+            inactive-text="否">
+        </el-switch>
+      </template>
+    </el-table-column>
+  </el-table>
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

+ 14 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-v2/InspectionAndInspection.vue

@@ -0,0 +1,14 @@
+<script setup name='InspectionAndInspection'>
+
+</script>
+
+<template>
+
+
+
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

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

@@ -281,7 +281,7 @@ export const operationApplication = ref([])
 // 添加检查申请
 export const addCheckList = ref([])
 // 添加检验申请
-export const xuanZhongJianCha = ref({
+export const xuanZhongJianYan = ref({
     data: [],
     weiBianMa: [],
     daiXuanZhong: [],
@@ -328,7 +328,7 @@ const switchPatients = () => {
     if (addCheckList.value.length > 0) {
         str += '存在未保存的检查申请。'
     }
-    if (xuanZhongJianCha.value.data.length > 0) {
+    if (xuanZhongJianYan.value.data.length > 0) {
         str += '存在未保存的检验申请。'
     }
     if (mingXi.value.list.length > 0) {

+ 65 - 24
src/views/settings/Test.vue

@@ -1,40 +1,81 @@
 <template>
-  <jian-yan-shen-qing-dan :data="data"/>
-
-  <el-button @click="打印测试">打印</el-button>
-
+  <el-button @click="te">测试</el-button>
+  <print-check-table ref="printCheck"/>
 </template>
 
-<script setup lang="jsx">
-import JianYanShenQingDan
-  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/JianYanShenQingDan.vue";
-
+<script setup>
+import PrintCheckTable from "@/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/da-ying/PrintCheckTable.vue";
+import {getLodop, initLodop} from "@/utils/c-lodop";
 
 let data = {
-  inpatientNo: '040123',
-  name: '测试',
-  sexName: '男',
-  age: 20,
-  inspectStuffName: '测试',
-  reqComment: '爱上降低金卡好几十块的'
+  "mattersNeedingAttention": "",
+  "data": {
+    "reqNo": 5563470,
+    "inpatientNo": "0403883",
+    "admissTimes": 3,
+    "bedNo": "-06",
+    "groupName": "中晚孕常规检查(单胎)",
+    "actOrderNo": 17648200,
+    "orderCode": "09634",
+    "orderName": "中晚孕常规检查(单胎)",
+    "pageNo": "5563470",
+    "reqComment": "噶啥的",
+    "reqDoctor": "02896",
+    "reqDoctorName": "肖蟾",
+    "reqDept": "8000007",
+    "reqDeptName": "七病室",
+    "reqWard": "8000007",
+    "execDept": "2020300",
+    "execDeptName": null,
+    "reqDate": "2023-06-02 19:48:02",
+    "inspectPart": null,
+    "inspectStuff": null,
+    "inspectStuffName": "测试标本名称,已实际为准。",
+    "sampleStatus": null,
+    "printFlag": null,
+    "receiveFlag": "1",
+    "reqType": "3",
+    "resultComment": null,
+    "sysDate": "2023-06-02 19:48:02",
+    "startTime": "2023-06-02 19:47:50",
+    "diagText": "埃尔托生物型霍乱",
+    "diagCode": "A00.100x001",
+    "orderType": "02",
+    "reportNo": null,
+    "jzFlag": null,
+    "reqStudyid": null,
+    "reqTzComment": "法撒旦",
+    "reqOtherResult": "法撒旦",
+    "receiveJc": null,
+    "sex": 2,
+    "homeStreet": "落刀嘴118号广福园5栋2单元203房  ",
+    "homeTel": "18008466033     ",
+    "responceTypeName": "普通住院",
+    "ybSelfFlag": null,
+    "confirmId": null,
+    "confirmFlag": null,
+    "classes": "00",
+    "page": "53岁",
+    "pbarCode": null,
+    "pname": "梁建",
+    "receiveFlagName": "申请医技"
+  },
+  "title": "病理检验申请单"
 }
 
+const printCheck = ref(null)
 
-const 打印测试 = () => {
-
-  let content = h(JianYanShenQingDan, {
-    props: {
-      data: data
-    }
-  })
-
+onMounted(async () => {
+  initLodop()
+})
 
 
+const te = async () => {
+  await printCheck.value.printClick(data)
 }
 
 </script>
 
-<style lang="scss">
+<style>
 
 </style>
-