Browse Source

电子病历签名

xiaochan 1 year ago
parent
commit
7fbbf4a1a0

+ 3 - 4
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/EmrMain.vue

@@ -185,6 +185,7 @@
                 >
                   加载脚本
                 </div>
+                <GenerateSignature/>
               </div>
             </template>
 
@@ -351,6 +352,8 @@ import HuanZheXinXi from "@/components/zhu-yuan-yi-sheng/HuanZheXinXi.vue";
 import CyFlex from "@/components/cy/flex/src/CyFlex.vue";
 import useEmrScript from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/useEmrScript";
 import {useUserStore} from "@/pinia/user-store";
+import GenerateSignature
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/components/GenerateSignature.vue";
 
 const userInfo = useUserStore().userInfo
 const props = defineProps({
@@ -1620,7 +1623,6 @@ const restoreDefaultSettings = () => {
         .scroll({top: 0})
   } catch {
   }
-
 }
 
 const loadDocument = (param: EmrParam): Promise<void> => {
@@ -1657,13 +1659,10 @@ const loadDocument = (param: EmrParam): Promise<void> => {
         emrConfig.value.loadDocument = false
       })
     })
-
   })
-
 }
 
 const emrMittInit = () => {
-
   // @ts-ignore
   emrMitt.on('editor', () => {
     return editor

+ 40 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/components/GenerateSignature.vue

@@ -0,0 +1,40 @@
+<script setup lang="ts">
+import {magicApi} from "@/utils/database/magic-api-request";
+import {useUserStore} from "@/pinia/user-store";
+import {isDev} from "@/utils/public";
+import {stringNotBlank} from "@/utils/blank-utils";
+import {emrMitt} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
+
+async function handelGenerateSignature() {
+  await magicApi({
+    url: '/dataEmr/getGenerateSignature',
+    method: 'get',
+    params: {code: isDev ? '01144' : useUserStore().userInfo.code}
+  }).then(res => {
+    if (stringNotBlank(res.autographImage)) {
+      const editor = emrMitt.emit('editor')
+      editor.execute('insertContents', {
+        value: [{
+          type: "image",
+          src: `data:image/png;base64,${res.autographImage}`,
+          style: {
+            css: {width: 100, height: 30}
+          }
+        }]
+      })
+    }
+  }).catch(() => {
+  })
+}
+
+</script>
+
+<template>
+  <div
+      @click="handelGenerateSignature"
+      class="tabs_item tabs_item-loading—script">
+    生成签名
+  </div>
+</template>
+
+

+ 1 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.ts

@@ -1,7 +1,7 @@
 // @ts-nocheck
 import {xcMessage} from "@/utils/xiaochan-element-plus";
 import EventBus from "../../../../../utils/mitt";
-import {ref} from 'vue'
+import {Ref, ref} from 'vue'
 import {EditType} from "@/utils/emr/edit";
 import {LoadParams} from "@/utils/emr/emr-init-v2";
 import Patient from "../../../../../ts-type/patient";

+ 51 - 53
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr_control_rule/EmrControlRule.vue

@@ -1,58 +1,56 @@
 <template>
-  <div class="layout_main_card">
-    <div class="layout_display_flex_y">
-      <div>
-        <el-switch
-            active-value="intervalPatients"
-            inactive-value="admissTimes"
-            v-model="timeType"
-            active-text="质控时间"
-            inactive-text="入院时间"
-        />
-        <el-date-picker
-            :shortcuts="shortcuts"
-            style="width: 220px"
-            type="daterange"
-            v-model="intervalPatients"/>
-
-
-        <el-button type="primary"
-                   @click="querySearch">查询质控数据
-        </el-button>
-
-        <el-button @click="queryScale">
-          {{ proportion }} 比例
-        </el-button>
-
-        <div>
-          <el-progress :percentage="percentage"/>
-        </div>
-      </div>
-      <div class="layout_flex_1-y">
-        <el-tabs v-model="tabsModel" class="el-tabs__fill">
-          <el-tab-pane label="质控数量" name="质控数量">
-            <CyVxeTable :data="numberToArray">
-              <vxe-column field="name" title="质控名称"/>
-              <vxe-column field="total" title="总数"/>
-              <vxe-column title="操作">
-                <template #default="{row}">
-                  <el-button text @click="detailClick(row)" plain type="primary">详情</el-button>
-                </template>
-              </vxe-column>
-            </CyVxeTable>
-          </el-tab-pane>
-
-          <el-tab-pane label="详情" name="详情">
-            <RuleSift :data="ruleReturnData.patient"/>
+  <div class="layout_container">
+    <header>
+      <el-switch
+          active-value="intervalPatients"
+          inactive-value="admissTimes"
+          v-model="timeType"
+          active-text="质控时间"
+          inactive-text="入院时间"
+      />
+      <el-date-picker
+          :shortcuts="shortcuts"
+          style="width: 220px"
+          type="daterange"
+          v-model="intervalPatients"/>
+
+
+      <el-button type="primary"
+                 @click="querySearch">查询质控数据
+      </el-button>
+
+      <el-button @click="queryScale">
+        {{ proportion }} 比例
+      </el-button>
+    </header>
+
+    <div>
+      <el-progress :percentage="percentage"/>
+    </div>
+    <div class="layout_main">
+      <el-tabs v-model="tabsModel" class="el-tabs__fill">
+        <el-tab-pane label="质控数量" name="质控数量">
+          <CyVxeTable :data="numberToArray">
+            <vxe-column field="name" title="质控名称"/>
+            <vxe-column field="total" title="总数"/>
+            <vxe-column title="操作">
+              <template #default="{row}">
+                <el-button text @click="detailClick(row)" plain type="primary">详情</el-button>
+              </template>
+            </vxe-column>
+          </CyVxeTable>
+        </el-tab-pane>
+
+        <el-tab-pane label="详情" name="详情">
+          <RuleSift :data="ruleReturnData.patient"/>
+        </el-tab-pane>
+
+        <template v-for="(val, key) in siftData">
+          <el-tab-pane :label="key" :name="key">
+            <RuleSift :data="val"/>
           </el-tab-pane>
-
-          <template v-for="(val, key) in siftData">
-            <el-tab-pane :label="key" :name="key">
-              <RuleSift :data="val"/>
-            </el-tab-pane>
-          </template>
-        </el-tabs>
-      </div>
+        </template>
+      </el-tabs>
     </div>
   </div>
 </template>