Browse Source

Merge branch 'master' of https://172.16.32.165/lighter/vue-intergration-platform

XU 9 months ago
parent
commit
99752b8987

+ 14 - 0
.env.tz

@@ -0,0 +1,14 @@
+ENV = 'tz'
+
+VITE_BASE_URL = 'http://172.16.20.115:8077'
+VITE_SOCKET_URL = 'ws://172.16.20.115:8707/websocket/'
+VITE_EMR_CONTROL_URL = '172.16.20.115:9227'
+VITE_DATA_BASE = 'http://172.16.20.115:9205'
+VITE_EMR_SOCKET = 'http://172.16.20.115:8707/socketApi'
+VITE_MAGIC_API_IFRAME = 'http://172.16.20.115:9206'
+
+VITE_HOSPITAL_NAME = '天资'
+VITE_SYSTEM_NAME = '工作集成平台'
+VITE_HOSPITAL_CODE = 'H00000000001'
+
+VITE_UPLOAD_TEMPLATE_THUMB = ''

+ 2 - 1
package.json

@@ -5,7 +5,8 @@
     "dev": "vite",
     "update:element": "npm install element-plus ./deps/element-plus.2.7.1.1.tar.gz",
     "build": "vite build --mode=production",
-    "build:show": "vite build --mode=show"
+    "build:show": "vite build --mode=show",
+    "build:tianzi": "vite build --mode=tz"
   },
   "dependencies": {
     "@babel/standalone": "7.24.5",

+ 19 - 1
src/api/technology-archives/technology-archives.js

@@ -38,6 +38,24 @@ export function selectTechnologyArchives1() {
     })
 }
 
+// 查询技术文档的图片
+export function selectImage1(socialNo, getTime) {
+    return request({
+        url: '/technologyArchives/selectImage1',
+        method: 'get',
+        params: { socialNo, getTime },
+    })
+}
+
+// 删除技术文档的图片
+export function deleteImage1(socialNo, getTime) {
+    return request({
+        url: '/technologyArchives/deleteImage1',
+        method: 'get',
+        params: { socialNo, getTime },
+    })
+}
+
 // 保存技术文档1
 export function saveTechnologyArchives1(data) {
     return request({
@@ -466,7 +484,7 @@ export function exportTechnologyArchivesInfo(params) {
         const data = {
             param: params,
             url: '/technologyArchives/exportTechnologyArchivesInfo',
-            fileName: value + '.xlsx',
+            fileName: value + '.xls',
         }
         setTimeout(() => {
             downloadExcel(data)

+ 660 - 109
src/components/inpatient/frontsheet-printpage/TailPage.vue

@@ -1,8 +1,22 @@
 <template>
   <div style="width: 820px">
-    <div style="width: 770px; margin-right: 35px; border-right: 1px dashed gray; padding-right: 35px">
+    <div
+      style="
+        width: 770px;
+        margin-right: 35px;
+        border-right: 1px dashed gray;
+        padding-right: 35px;
+      "
+    >
       <div style="border: 1px solid black; padding: 5px">
-        <table id="surgeryTable" style="border: 1px solid black; border-collapse: collapse; width: 100%">
+        <table
+          id="surgeryTable"
+          style="
+            border: 1px solid black;
+            border-collapse: collapse;
+            width: 100%;
+          "
+        >
           <tr>
             <th rowspan="2">手术及操作名称</th>
             <th rowspan="2" style="width: 70px">手术及操作日期</th>
@@ -26,7 +40,12 @@
               {{ patient.surgeryList[n - 1].date }}
             </td>
             <td style="text-align-last: center; width: 30px">
-              {{ filterNameInDic(patient.surgeryList[n - 1].level, 'getOperateScale') }}
+              {{
+                filterNameInDic(
+                  patient.surgeryList[n - 1].level,
+                  "getOperateScale"
+                )
+              }}
             </td>
             <td style="width: 70px">
               {{ patient.surgeryList[n - 1].code }}
@@ -41,10 +60,20 @@
               {{ patient.surgeryList[n - 1].assistantTwoName }}
             </td>
             <td style="text-align-last: center">
-              {{ filterNameInDic(patient.surgeryList[n - 1].cutHeal, 'getCutHealGrade') }}
+              {{
+                filterNameInDic(
+                  patient.surgeryList[n - 1].cutHeal,
+                  "getCutHealGrade"
+                )
+              }}
             </td>
             <td>
-              {{ filterNameInDic(patient.surgeryList[n - 1].anaesthesia, 'getAnaesthesia') }}
+              {{
+                filterNameInDic(
+                  patient.surgeryList[n - 1].anaesthesia,
+                  "getAnaesthesia"
+                )
+              }}
             </td>
             <td style="width: 40px">
               {{ patient.surgeryList[n - 1].anaesthesiaorName }}
@@ -53,221 +82,737 @@
         </table>
         <div style="margin: 10px 8px 10px 0">
           离院方式:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black">{{ filterNameInDic(patient.zyDismissWay, 'getZyDismissWay') }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+            >{{
+              filterNameInDic(patient.zyDismissWay, "getZyDismissWay")
+            }}</span
+          >
           ,拟接收医疗机构名称:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 210px">{{ patient.dismissDestination }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 210px;
+            "
+            >{{ patient.dismissDestination }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           是否有出院31天内再住院计划:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black">{{ filterNameInDic(patient.admissAgainInOneMonth, 'getHaveOrNot') }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+            >{{
+              filterNameInDic(patient.admissAgainInOneMonth, "getHaveOrNot")
+            }}</span
+          >
           ,目的:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 300px">{{ patient.admissAgainPurpose }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 300px;
+            "
+            >{{ patient.admissAgainPurpose }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           颅脑损伤患者昏迷时间: 入院前
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.comaDaysBeforeAdmiss }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.comaDaysBeforeAdmiss }}</span
+          >
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.comaHoursBeforeAdmiss }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.comaHoursBeforeAdmiss }}</span
+          >
           小时
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.comaMinutesBeforeAdmiss }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.comaMinutesBeforeAdmiss }}</span
+          >
           分钟 <span style="margin-left: 8px">入院后</span>
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.comaDaysAfterAdmiss }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.comaDaysAfterAdmiss }}</span
+          >
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.comaHoursAfterAdmiss }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.comaHoursAfterAdmiss }}</span
+          >
           小时
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.comaMinutesAfterAdmiss }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.comaMinutesAfterAdmiss }}</span
+          >
           分钟
         </div>
         <div style="margin: 10px 8px 10px 0">
           住院费用(元): 总费用
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 110px">{{ patient.totalCost }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 110px;
+            "
+            >{{ patient.totalCost }}</span
+          >
           (自付金额:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 110px">{{ patient.selfPay }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 110px;
+            "
+            >{{ patient.selfPay }}</span
+          >
           )
         </div>
         <div style="margin: 10px 8px 10px 0">
           1.综合医疗服务类: (1)一般医疗服务费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.generalMedicalServiceFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.generalMedicalServiceFee }}</span
+          >
           (2)一般治疗操作费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.generalTreatmentOperatingFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.generalTreatmentOperatingFee }}</span
+          >
           (3)护理费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 50px">{{ patient.careFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 50px;
+            "
+            >{{ patient.careFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           (4)其他费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.elseFee }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.elseFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           2.诊断类: (5)病理诊断费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.pathologicDiagFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.pathologicDiagFee }}</span
+          >
           (6)实验室诊断费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.experimentDiagFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.experimentDiagFee }}</span
+          >
           (7)影像学诊断费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.ctDiagFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.ctDiagFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           (8)临床诊断项目费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.clinicalDiagFee }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.clinicalDiagFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           3.治疗类: (9)非手术治疗项目费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.notSurgicalFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.notSurgicalFee }}</span
+          >
           (临床物理治疗费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.clinicalPhysicalFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.clinicalPhysicalFee }}</span
+          >
           )
         </div>
         <div style="margin: 10px 8px 10px 0">
           (10)手术治疗费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.surgicalFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.surgicalFee }}</span
+          >
           (麻醉费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.anesthetizeFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.anesthetizeFee }}</span
+          >
           &nbsp;&nbsp;手术费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.surgeryFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.surgeryFee }}</span
+          >
           )
         </div>
         <div style="margin: 10px 8px 10px 0">
           4.康复类: (11)康复费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.recoverFee }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.recoverFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           5.中医类: (12)中医治疗费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.tcmTreatmentFee }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.tcmTreatmentFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           6.西药类: (13)西药费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.westMedicineFee }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.westMedicineFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           7.中药类: (14)中成药费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.chinesePatentMedicineFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.chinesePatentMedicineFee }}</span
+          >
           (15)中草药费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.chineseHerbalMedicineFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.chineseHerbalMedicineFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           8.血液和血液制品类: (16)血费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 50px">{{ patient.bloodFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 50px;
+            "
+            >{{ patient.bloodFee }}</span
+          >
           (17)白蛋白类制品费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 50px">{{ patient.albuminProductsFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 50px;
+            "
+            >{{ patient.albuminProductsFee }}</span
+          >
           (18)球蛋白类制品费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 50px">{{ patient.globulinProductsFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 50px;
+            "
+            >{{ patient.globulinProductsFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           (19)凝血因子类制品费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.coagulationFactorProductsFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.coagulationFactorProductsFee }}</span
+          >
           (20)细胞因子类制品费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.cytokineProductsFee }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.cytokineProductsFee }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           9.耗材类: (21)检查用一次性医用材料费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+          >
             {{ patient.costOfDisposableMedicalMaterialsForExamination }}
           </span>
           (22)治疗用一次性医用材料费:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+          >
             {{ patient.costOfDisposableMedicalMaterialsForTreatment }}
           </span>
         </div>
         <div style="margin: 10px 8px 10px 0">
           (23)手术用一次性医用材料费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.costOfDisposableMedicalMaterialsForOperation }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.costOfDisposableMedicalMaterialsForOperation }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           10.其他类: (24)其他费:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; width: 70px">{{ patient.otherFees }}</span>
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 70px;
+            "
+            >{{ patient.otherFees }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           主要诊断治愈好转情况:
-          <span style="margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black; padding: 0 5px">
+          <span
+            style="
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              padding: 0 5px;
+            "
+          >
             {{ dismissStatusText(patient.disdiagList[0].dismissStatus) }}
           </span>
         </div>
         <div style="margin: 10px 8px 10px 0">
           诊断符合情况: 门诊与出院
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">{{
-            filterNameInDic(patient.diagConform1, 'getDiagConform')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+            >{{ filterNameInDic(patient.diagConform1, "getDiagConform") }}</span
+          >
           入院与出院
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black">{{
-            filterNameInDic(patient.diagConform2, 'getDiagConform')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+            >{{ filterNameInDic(patient.diagConform2, "getDiagConform") }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           术前与术后
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">{{
-            filterNameInDic(patient.diagConform3, 'getDiagConform')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+            >{{ filterNameInDic(patient.diagConform3, "getDiagConform") }}</span
+          >
           临床与病理
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">{{
-            filterNameInDic(patient.diagConform4, 'getDiagConform')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+            >{{ filterNameInDic(patient.diagConform4, "getDiagConform") }}</span
+          >
           放射与病理
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black">{{
-            filterNameInDic(patient.diagConform5, 'getDiagConform')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+            >{{ filterNameInDic(patient.diagConform5, "getDiagConform") }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           抢救情况: 抢救
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 90px">{{ patient.rescueTimes }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 90px;
+            "
+            >{{ patient.rescueTimes }}</span
+          >
           次, 成功
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 90px">{{ patient.rescueSuccessTimes }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 90px;
+            "
+            >{{ patient.rescueSuccessTimes }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           病例分型:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">
-            {{ filterNameInDic(patient.caseClassification, 'getCaseClassification') }}
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+          >
+            {{
+              filterNameInDic(
+                patient.caseClassification,
+                "getCaseClassification"
+              )
+            }}
           </span>
           实施重症监护:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black">{{ filterNameInDic(patient.hasIcu, 'getHaveOrNot') }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+            >{{ filterNameInDic(patient.hasIcu, "getHaveOrNot") }}</span
+          >
           ,监护总时间:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.icuDays }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.icuDays }}</span
+          >
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 30px">{{ patient.icuHours }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 30px;
+            "
+            >{{ patient.icuHours }}</span
+          >
           小时
         </div>
         <div style="margin: 10px 8px 10px 0">
           单病种管理:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">{{
-            filterNameInDic(patient.monopathyManagement, 'getYesOrNo')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+            >{{
+              filterNameInDic(patient.monopathyManagement, "getYesOrNo")
+            }}</span
+          >
           实施临床路径管理:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">
-            {{ filterNameInDic(patient.clinicalPathwayManagement, 'getClinicalPathwayManagement') }}
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+          >
+            {{
+              filterNameInDic(
+                patient.clinicalPathwayManagement,
+                "getClinicalPathwayManagement"
+              )
+            }}
           </span>
           实施DRGs管理:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black">{{
-            filterNameInDic(patient.drgsManagement, 'getDrgsManagement')
-          }}</span>
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+            >{{
+              filterNameInDic(patient.drgsManagement, "getDrgsManagement")
+            }}</span
+          >
         </div>
         <div style="margin: 10px 8px 10px 0">
           抗生素使用:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">{{ filterNameInDic(patient.useAntibiotic, 'getYesOrNo') }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+            >{{ filterNameInDic(patient.useAntibiotic, "getYesOrNo") }}</span
+          >
           细菌培养标本送检:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">{{ filterNameInDic(patient.bacilliculture, 'getYesOrNo') }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+            >{{ filterNameInDic(patient.bacilliculture, "getYesOrNo") }}</span
+          >
           法定传染病:
-          <span style="display: inline-block; margin-right: 8px; padding: 0 4px; border-bottom: 1px solid black">
-            {{ filterNameInDic(patient.statutoryEpidemic, 'getStatutoryEpidemic') }}
+          <span
+            style="
+              display: inline-block;
+              margin-right: 8px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+            "
+          >
+            {{
+              filterNameInDic(patient.statutoryEpidemic, "getStatutoryEpidemic")
+            }}
           </span>
         </div>
         <div style="margin: 10px 8px 10px 0">
           肿瘤分期: T
-          <span style="display: inline-block; width: 30px; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">
-            {{ filterNameInDic(patient.tumorLevelT, 'getTumorLevelT') }}
+          <span
+            style="
+              display: inline-block;
+              width: 30px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+          >
+            {{ filterNameInDic(patient.tumorLevelT, "getTumorLevelT") }}
           </span>
           N
-          <span style="display: inline-block; width: 30px; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">
-            {{ filterNameInDic(patient.tumorLevelN, 'getTumorLevelN') }}
+          <span
+            style="
+              display: inline-block;
+              width: 30px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+          >
+            {{ filterNameInDic(patient.tumorLevelN, "getTumorLevelN") }}
           </span>
           M
-          <span style="display: inline-block; width: 30px; padding: 0 4px; border-bottom: 1px solid black; margin-right: 12px">
-            {{ filterNameInDic(patient.tumorLevelM, 'getTumorLevelM') }}
+          <span
+            style="
+              display: inline-block;
+              width: 30px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 12px;
+            "
+          >
+            {{ filterNameInDic(patient.tumorLevelM, "getTumorLevelM") }}
           </span>
           分期
-          <span style="display: inline-block; width: 30px; padding: 0 4px; border-bottom: 1px solid black; margin-right: 18px">
-            {{ filterNameInDic(patient.tumorLevel, 'getTumorLevel') }}
+          <span
+            style="
+              display: inline-block;
+              width: 30px;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              margin-right: 18px;
+            "
+          >
+            {{ filterNameInDic(patient.tumorLevel, "getTumorLevel") }}
           </span>
           新生儿Apgar评分:
-          <span style="display: inline-block; padding: 0 4px; border-bottom: 1px solid black; width: 50px">{{ patient.xxeApgar }}</span>
+          <span
+            style="
+              display: inline-block;
+              padding: 0 4px;
+              border-bottom: 1px solid black;
+              width: 50px;
+            "
+            >{{ patient.xxeApgar }}</span
+          >
         </div>
       </div>
@@ -276,6 +821,8 @@
 </template>
 
 <script>
+import XEUtils from "xe-utils";
+
 export default {
   props: {
     patient: {
@@ -288,47 +835,50 @@ export default {
     },
   },
   setup(props) {
-    const dismissStatusText = (val) => {
+    const dismissStatusText = val => {
       switch (val) {
         case 1:
-        case '1':
-          return '治愈'
+        case "1":
+          return "治愈";
         case 2:
-        case '2':
-          return '好转'
+        case "2":
+          return "好转";
         case 3:
-        case '3':
-          return '未愈'
+        case "3":
+          return "未愈";
         case 4:
-        case '4':
-          return '死亡'
+        case "4":
+          return "死亡";
         case 9:
-        case '9':
-          return '其他'
+        case "9":
+          return "其他";
         default:
-          return ''
+          return "";
       }
-    }
+    };
 
     const filterNameInDic = (val, dic) => {
       if (!val) {
-        return ''
+        return "";
+      }
+      const dicValue = props.dics[dic];
+      if (!XEUtils.isArray(dicValue)) {
+        return "";
       }
-      const dicValue = props.dics[dic]
       for (let i = 0; i < dicValue.length; i++) {
-        const dicItem = dicValue[i]
+        const dicItem = dicValue[i];
         if (dicItem.code == val) {
-          return dicItem.name
+          return dicItem.name;
         }
       }
-      return '-'
-    }
+      return "-";
+    };
     return {
       dismissStatusText,
       filterNameInDic,
-    }
+    };
   },
-}
+};
 </script>
 
 <style scoped>
@@ -338,6 +888,7 @@ td {
   border: 1px solid black;
   border-collapse: collapse;
 }
+
 td,
 th {
   height: 24px;

+ 2 - 3
src/components/medical-insurance/patient-overview/Index.vue

@@ -13,7 +13,7 @@
           v-model="currentMedType"
           clearable style="width: 90px"
           @change="handleMedTypeChange">
-        <el-option v-for="item in trueMedTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
+        <el-option v-for="item in customMedTypes" :key="item.code" :label="item.name" :value="item.code"></el-option>
       </el-select>
       <el-select v-if="showStatus" v-model="currentStatus" clearable style="width: 90px">
         <el-option :value="0" label="未登记"></el-option>
@@ -76,9 +76,8 @@ import femaleIcon from '@/assets/female-icon.png'
 import dismissIcon from '@/assets/dismiss-icon.png'
 import {getOverView, getPatientInfo} from '@/api/inpatient/patient'
 import {setBaseinfo} from '@/data/inpatient'
-import {trueMedTypes} from '@/data'
+import {customMedTypes} from '@/data'
 import {allWardsVisible} from '@/utils/permission'
-import {visibleWindowSize} from '@/utils/window-size'
 import {useMedinsStore} from "@/pinia/medins-store";
 import {getWardsApi} from "@/api/login";
 

+ 12 - 0
src/data/index.js

@@ -46,6 +46,18 @@ export const trueMedTypes = [
     {code: '42', name: '工伤住院'},
 ]
 
+export const customMedTypes = [
+    {code: '01', name: '自费'},
+    {code: '2101', name: '普通住院'},
+    {code: '2102', name: '单病种住院'},
+    {code: '2106', name: '生育平产(居民)'},
+    {code: '2107', name: '生育剖宫产(居民)'},
+    {code: '22', name: '外伤住院'},
+    {code: '52', name: '生育住院(职工)'},
+    {code: '42', name: '工伤住院'},
+    {code: '4X', name: '工伤待定'},
+]
+
 export const needVerifyMedTypes = [
     {code: '2102', name: '单病种住院'},
     {code: '2106', name: '生育平产(居民)'},

+ 153 - 54
src/views/technology-archives/TechnologyArchivesMain.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="layout_container">
     <header>
-      <el-input v-model="text" class="w-50 m-2" style="width: 360px" placeholder="请输入工号/身份证号" clearable>
-        <template #prepend>工号/身份证号 </template>
+      <el-input v-model="text" class="w-50 m-2" style="width: 360px" placeholder="请输入工号/身份证号/姓名" clearable>
+        <template #prepend>工号/身份证号/姓名 </template>
       </el-input>
       <el-button type="primary" icon="Search" @click="queryEmployeeInfo" style="margin-left: 10px">查询</el-button>
       <el-button type="primary" icon="Check" @click="submitForm(ruleFormRef)" style="margin-left: 10px">保存</el-button>
@@ -263,24 +263,40 @@
                 <el-table-column prop="image" label="图片链接">
                   <template v-slot="scope">
                     <!-- <el-input  size="small" v-model="scope.row.image"></el-input>-->
-                    <div v-if="scope.row.isEdit">
+                    <div v-if="scope.row.isEdit" stylr="display:flex;">
                       <el-upload
-                          class="upload-demo"
                           ref="upload"
-                          :action="apiUrl + '/technologyArchives/putCertificateImage'"
+                          v-model:file-list="fileList"
+                          list-type="picture-card"
+                          :action="apiUrl + `/technologyArchives/putCertificateImage?getTime=` + scope.row.getTime"
                           :headers="header"
-                          :file-list="fileList"
-                          :data="{ socialNo: scope.row.socialNo }"
                           :on-success="uploadSuccess"
+                          :on-preview="handlePreview"
+                          :on-remove="handleRemove"
+                          :before-upload="beforeUpload"
                           :auto-upload="false"
+                          :multiple
+                          :show-file-list="true"
                       >
-                        <template #trigger>
-                          <el-button type="primary" icon="Picture">选取文件</el-button>
-                        </template>
-                        <el-button style="margin-left: 10px" type="success" icon="Upload" @click="submitUpload">上传到服务器</el-button>
+                        <el-icon> <Plus /></el-icon>
                       </el-upload>
+                      <el-button style="margin-top: 10px" type="success" icon="Upload" @click="submitUpload(scope.row)">上传到服务器</el-button>
+                      <el-dialog width="75%" v-model="dialogVisible">
+                        <img width="100%" :src="dialogImageUrl"  />
+                      </el-dialog>
                     </div>
-                    <span v-else>{{ scope.row.image }}</span>
+                    <!-- <span v-else>{{ scope.row.image }}</span> -->
+                    <div v-else class="demo-image__preview">
+                      <el-image
+                        style="width: 100px; height: 100px"
+                        :src="url"
+                        :zoom-rate="1.2"
+                        :max-scale="7"
+                        :min-scale="0.2"
+                        :preview-src-list="srcList"
+                        fit="cover"
+                      />
+                  </div>
                   </template>
                 </el-table-column>
                 <el-table-column fixed="right" label="操作" min-width="180" width="180" center>
@@ -1057,9 +1073,12 @@
     </div>
   </div>
 </template>
-<script setup name="TechnologyArchivesMain">
+<script  setup lang="ts" name="TechnologyArchivesMain">
 import {nextTick, onMounted, ref} from "vue";
 import {ElMessage, ElMessageBox} from "element-plus";
+import type { UploadFile, UploadFiles, UploadProps, UploadUserFile, UploadInstance } from 'element-plus'
+import XEUtils from "xe-utils";
+import {stringIsBlank} from "@/utils/blank-utils";
 import {QuestionFilled, StarFilled} from '@element-plus/icons-vue'
 import {
   delTechnologyArchives10ByCode,
@@ -1075,6 +1094,8 @@ import {
   delTechnologyArchives7ByCode,
   delTechnologyArchives9ByCode,
   saveTechnologyArchives1,
+  selectImage1,
+  deleteImage1,
   saveTechnologyArchives10,
   saveTechnologyArchives12,
   saveTechnologyArchives13,
@@ -1310,7 +1331,14 @@ const queryTechnologyArchives1 = () => {
         row['isEdit'] = false
         // 是否新增
         row['isAdd'] = false
-      })
+        selectImage1(row.socialNo, row.getTime)
+          .then((res1)=>{
+            url.value = row.image
+            srcList.value = [res1.data.image]
+            console.log(res1.data)
+            console.log(srcList.value)
+        })
+      }) 
       firstData.value = res
     })
     .catch(() => {
@@ -1493,6 +1521,7 @@ const onAddItem = () => {
       image: '',
       isEdit: true,
       isAdd: true,
+      isUpload: false
     })
   } else if(editableTabsValue.value === 'secondInfo'){
     secondData.value.push({
@@ -1629,6 +1658,13 @@ const editFirstInfo = (row) => {
   // 备份原始数据
   row['oldRow'] = JSON.parse(JSON.stringify(row))
   row.isEdit = true
+  // if(!row.isUpload){
+  //   for(let i=0; i<fileList.value.length; i++){
+  //     fileList.value[i].name = row[i].image 
+  //   }  
+  // }else{
+  //   fileList.value = []
+  // }
 }
 // 取消
 const cancelFirstInfo = (row, index) => {
@@ -1644,24 +1680,78 @@ const cancelFirstInfo = (row, index) => {
   firstKey.value = Math.random()
 }
 
+//上传图片
 const apiUrl = import.meta.env.VITE_BASE_URL
+const upload = ref()
 const fileList = ref([])
-const upload = ref(null)
-const header = {
-  token: localStorage.token,
+
+const dialogImageUrl = ref('')
+const dialogVisible = ref(false) 
+
+const handleRemove= (uploadFile, uploadFiles) => {
+  console.log(uploadFile, uploadFiles)
 }
-const submitUpload = () => {
-  upload.value.submit()
+
+const handlePreview= (uploadFile) => {
+  dialogImageUrl.value = uploadFile.url
+  dialogVisible.value = true
+  console.log(fileList.value[0].name)
+}
+
+const isOversize = ref(false)
+// 图片上传前文件信息
+const beforeUpload = (file: File) => { 
+  if (file.size / 1024 / 1024 > 2) {
+    ElMessage.error('上传图片大小不能超过 2MB!')
+    return isOversize.value = true
+  }              
+  console.log('正在上传文件:'+ file.name)
 }
-const uploadSuccess = (response) =>{
-  if(response.code === 200){
-    firstData.value.image = response.data.image;
-    ElMessage.success('上传成功!')
+
+const header = {
+  token: localStorage.token, 
+}
+
+const multiple = computed(() => {
+  // return stringIsBlank(props.getTime)
+  if(fileList.value.length > 1){
+    return true
+  }
+  return false
+})
+ 
+
+const submitUpload = (row) => {
+  upload.value!.submit();
+  if(!isOversize.value){
+    row.isUpload = true 
   }else{
-    return upload.status = 'fail';
+    row.isUpload = false
   }
+  
 }
 
+function uploadSuccess(response: any, uploadFile: UploadFile, uploadFiles: UploadFiles) {
+  const index = XEUtils.findLastIndexOf(fileList.value, (item: UploadUserFile) => {
+    return item.uid === uploadFile.uid;
+  })
+  if (response.code === 200) {
+    fileList.value[index] = {
+      ...fileList.value[index],
+      ...response.data,
+    }
+    ElMessage.success("上传成功");
+  } else {
+    fileList.value[index].status = 'fail'
+    ElMessage.error("上传失败");
+  }
+}
+
+//查看图片
+const srcList = ref([])
+const url = ref("")
+
+
 // 保存
 const updateFirstInfo = (row) => {
   if (!row.socialNo || !row.getTime) {
@@ -1673,7 +1763,6 @@ const updateFirstInfo = (row) => {
     });
     return
   }
-
   if (row.isAdd) {
     let fe = 0
     for (let num in firstData.value) {
@@ -1690,9 +1779,8 @@ const updateFirstInfo = (row) => {
       });
     } else {
       callSaveFirstInfo(row, null)
-    }
-
-  } else {
+    }  
+  }else {
     let oldGetTime = row.oldRow.getTime
     if (oldGetTime !== row.getTime) {
       ElMessageBox.confirm(megTip, {
@@ -1710,40 +1798,50 @@ const updateFirstInfo = (row) => {
       })
     } else {
       callSaveFirstInfo(row, oldGetTime)
-    }
+    } 
   }
 }
 
 const callSaveFirstInfo = (row, oldGetTime) => {
-  let title = '请确认是否保存<span style="color:#d12020;">' + row.title + '</span>?'
-  ElMessageBox.confirm(title, {
-    cancelButtonText: '取消',
-    confirmButtonText: '确定',
-    type: 'warning',
-    distinguishCancelAndClose: true,
-    dangerouslyUseHTMLString: true
-  }).then(() => {
-    saveTechnologyArchives1(row).then((res) => {
-      ElMessage({
-        type: "success",
-        message: res.cg,
-        duration: 2500,
-        showClose: true,
-      });
-      if (oldGetTime !== null && oldGetTime !== row.getTime) {
-        // 删除原始数据
-        delTechnologyArchives1ByCode(row.socialNo, oldGetTime).then((res) => {
+  if(!row.isUpload){
+    ElMessage({
+      type: "warning",
+      message: "图片还未上传!",
+      duration: 2500,
+      showClose: true,
+    });
+  }else{
+    let title = '请确认是否保存<span style="color:#d12020;">' + row.title + '</span>?'
+    ElMessageBox.confirm(title, {
+      cancelButtonText: '取消',
+      confirmButtonText: '确定',
+      type: 'warning',
+      distinguishCancelAndClose: true,
+      dangerouslyUseHTMLString: true
+    }).then(() => {
+      saveTechnologyArchives1(row).then((res) => {
+        ElMessage({
+          type: "success",
+          message: res.cg,
+          duration: 2500,
+          showClose: true,
+        });
+        if (oldGetTime !== null && oldGetTime !== row.getTime) {
+          // 删除原始数据
+          delTechnologyArchives1ByCode(row.socialNo, oldGetTime).then((res) => {
+            queryTechnologyArchives1()
+          })
+        } else {
           queryTechnologyArchives1()
-        })
-      } else {
+        }
+      })
+    }).catch((action) => {
+      if (action === 'cancel') {
         queryTechnologyArchives1()
       }
     })
-  }).catch((action) => {
-    if (action === 'cancel') {
-      queryTechnologyArchives1()
-    }
-  })
+  }
+  
 }
 
 const deleteFirstInfo = (row) => {
@@ -1769,6 +1867,7 @@ const deleteFirstInfo = (row) => {
       queryTechnologyArchives1()
     }
   })
+  fileList.value = [];
 }
 // 专业技术职称晋升情况增删改存结束
 

+ 2 - 2
src/views/technology-archives/TechnologyArchivesSearch.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="layout_container">
     <header>
-      <el-input v-model="text" class="w-50 m-2" style="width: 360px" placeholder="请输入工号/身份证号" clearable>
-        <template #prepend>工号/身份证号 </template>
+      <el-input v-model="text" class="w-50 m-2" style="width: 360px" placeholder="请输入工号/身份证号/姓名" clearable>
+        <template #prepend>工号/身份证号/姓名 </template>
       </el-input>
       <el-select v-model="textType" placeholder="请选择文档类型" clearable style="width: 160px;margin-left: 3px">
         <el-option v-for="item in typeList" :key="item.code" :label="item.name" :value="item.code" />