Преглед изворни кода

门诊电子病历携带科室

xiaochan пре 3 недеља
родитељ
комит
b4f321f77e

+ 60 - 52
src/components/SelectStaffCode.vue

@@ -1,102 +1,110 @@
 <template>
-  <el-select v-model="selectValue" :remote-method="methodStaff"
-             :style="{width: props.width}" :clearable="props.clearable" filterable
-             remote @change="changeStaff" @clear="clear"
-             ref="selectRef">
-    <el-option v-for="item in staffList" :key="item.code" :label="item.name"
-               :value="item.code ">
+  <el-select
+    v-model="selectValue"
+    :remote-method="methodStaff"
+    :style="{ width: props.width }"
+    :clearable="props.clearable"
+    filterable
+    remote
+    @change="changeStaff"
+    @clear="clear"
+    ref="selectRef"
+  >
+    <el-option
+      v-for="item in staffList"
+      :key="item.code"
+      :label="item.name"
+      :value="item.code"
+    >
       <span style="color: #8492a6; font-size: 12px">{{ item.code }}</span>
       <el-divider direction="vertical"></el-divider>
-      <span style="color:#67C23A">{{ item.name }}</span>
+      <span style="color: #67c23a">{{ item.name }}</span>
       <el-divider direction="vertical"></el-divider>
-      <span style="color:#E6A23C">{{ item.deptName }}</span>
+      <span style="color: #e6a23c">{{ item.deptName }}</span>
       <el-divider direction="vertical"></el-divider>
-      <span style="color:#a5673f">{{ item.empTitName }}</span>
+      <span style="color: #a5673f">{{ item.empTitName }}</span>
       <el-divider direction="vertical"></el-divider>
-      <span style="color:#a5673f">{{ item.ybCode }}</span>
+      <span style="color: #a5673f">{{ item.ybCode }}</span>
     </el-option>
   </el-select>
 </template>
 
 <script setup>
-import {getRenYuan} from "@/api/public-api";
-import {stringNotBlank} from "@/utils/blank-utils";
-import {useUserStore} from "@/pinia/user-store";
+import { getRenYuan } from "@/api/public-api";
+import { stringNotBlank } from "@/utils/blank-utils";
+import { useUserStore } from "@/pinia/user-store";
 
 const props = defineProps({
   modelValue: {
     type: Object,
-    default: ''
+    default: "",
   },
   name: {
     type: Array,
-    default: ['code', 'name']
+    default: ["code", "name"],
   },
   width: {
     type: String,
-    default: '220px'
+    default: "220px",
   },
   clearable: {
     type: Boolean,
-    default: true
+    default: true,
   },
   deptCode: {
     type: Boolean,
-    default: false
-  }
-})
+    default: false,
+  },
+});
 
-const staffList = ref([])
-const selectValue = ref()
+const staffList = ref([]);
+const selectValue = ref();
 
 const modelChange = () => {
-  selectValue.value = props.modelValue[props.name[0]]
+  selectValue.value = props.modelValue[props.name[0]];
   if (stringNotBlank(selectValue.value)) {
     for (let i = 0, len = staffList.value.length; i < len; i++) {
       if (selectValue.value === staffList.value[i].code) {
-        return
+        return;
       }
     }
     getRenYuan(selectValue.value).then(res => {
-      staffList.value = res
-    })
+      staffList.value = res;
+    });
   }
-}
+};
 
 onMounted(() => {
-  modelChange()
-})
+  modelChange();
+});
 
+watch(
+  () => props.modelValue[props.name[0]],
+  () => {
+    modelChange();
+  }
+);
 
-watch(() => props.modelValue[props.name[0]], () => {
-  modelChange()
-})
-
-let deptCode = props.deptCode ? useUserStore().userInfo.deptCode : ''
-const methodStaff = (val) => {
+let deptCode = props.deptCode ? useUserStore().userInfo.deptCode : "";
+const methodStaff = val => {
   if (val.length === 0) {
-    return
+    return;
   }
   getRenYuan(val, deptCode).then(res => {
-    staffList.value = res
+    staffList.value = res;
   });
-}
+};
 
-const selectRef = ref()
+const selectRef = ref();
 const changeStaff = async () => {
-  await nextTick()
-  props.modelValue[props.name[0]] = selectRef.value?.selected?.value
-  props.modelValue[props.name[1]] = selectRef.value?.selected?.currentLabel
-}
+  await nextTick();
+  props.modelValue[props.name[0]] = selectRef.value?.selected?.value;
+  props.modelValue[props.name[1]] = selectRef.value?.selected?.currentLabel;
+};
 
 const clear = () => {
-  selectValue.value = ''
-  props.modelValue[props.name[0]] = ''
-  props.modelValue[props.name[1]] = ''
-}
-
+  selectValue.value = "";
+  props.modelValue[props.name[0]] = "";
+  props.modelValue[props.name[1]] = "";
+};
 </script>
-
-<style lang="scss" scoped>
-
-</style>

+ 27 - 3
src/views/mz-emr/emr-v2/comp/aside/AddEmrDialog.vue

@@ -10,6 +10,7 @@ import { addFile } from "@/api/mz-emr/mz-emr";
 import { useUserStore } from "@/pinia/user-store";
 import { useMzEmrStoreKey, UseMzEmrStoreType } from "@/views/mz-emr/emr-v2";
 import { isDev } from "@/utils/public";
+import env from "@/utils/setting";
 
 const props = defineProps<{
   data: any[];
@@ -55,6 +56,28 @@ function nodeClick(data, node) {
     });
 }
 
+const tempData = {
+  editorConfig: {
+    editorMode: "free",
+  },
+  endpoints: {
+    app: env.VITE_DATA_BASE + "/thyy/api/dataEmr/comp",
+    his: env.VITE_BASE_URL,
+  },
+  input: {
+    user: userInfo.code,
+    name: userInfo.name,
+  },
+  userCode: userInfo.code,
+  login: {
+    token: localStorage.token,
+    user: {
+      id: userInfo.code,
+      name: userInfo.name,
+    },
+  },
+};
+
 const eventFun = {
   componentClick: (evt, view) => {
     const eleInfo = view.getAttribute("element");
@@ -64,7 +87,10 @@ const eventFun = {
 
 function opened() {
   if (!tmpStore.loading) return;
-  useEmrInit(divRef.value, { event: eventFun }).then(res => {
+  useEmrInit(divRef.value, {
+    appContext: tempData,
+    event: eventFun,
+  }).then(res => {
     edit = res.editor;
     editFun = res;
     tmpStore.loading = false;
@@ -158,5 +184,3 @@ defineExpose({
     </template>
   </el-dialog>
 </template>
-
-<style lang="scss"></style>

+ 5 - 6
src/views/mz-emr/emr-v2/index.tsx

@@ -1,6 +1,5 @@
 import { useUserStore } from "@/pinia/user-store";
 import { xcMessage } from "@/utils/xiaochan-element-plus";
-import router from "@/router";
 import XEUtils from "xe-utils";
 import {
   delFile,
@@ -24,7 +23,7 @@ import { useEmrCaSignUtils } from "@/views/mz-emr/emr-v2/useEmrCaSign";
 import { isDev } from "@/utils/public";
 import { useDialog } from "@/components/cy/CyDialog/index";
 import env from "@/utils/setting";
-import { onDeactivated, onBeforeMount } from "vue";
+import { onBeforeMount, onDeactivated } from "vue";
 
 interface PatientInfo {
   patientId: string;
@@ -94,6 +93,7 @@ function queryEmrPatientInfo(store) {
       params: {
         patientId: store.patientInfo.patientId,
         times: store.patientInfo.times,
+        deptCode: store.urlParams.deptCode,
       },
     })
       .then(res => {
@@ -217,6 +217,7 @@ export const useMzEmrStore = () => {
     urlParams: {} as {
       times: number;
       patientId: string;
+      deptCode: string;
     },
     isSave: false,
     // 是否准备好了
@@ -275,11 +276,10 @@ export const useMzEmrStore = () => {
       historyMainEdit = value;
     },
     async queryPatientEmr() {
-      const data = await getEmrModelByPatientId(
+      store.emrData = await getEmrModelByPatientId(
         store.patientInfo.patientId,
         store.patientInfo.times
       );
-      store.emrData = data;
     },
     getFillData() {
       const { copy, ...val } = store.emrFillData;
@@ -323,7 +323,6 @@ export const useMzEmrStore = () => {
           return;
         }
       }
-
       mainEdit
         .loadAndSetDocument({
           documentId: value.emrDocumentId,
@@ -476,6 +475,7 @@ export const useMzEmrStore = () => {
           JSON.stringify({
             times: 78,
             patientId: "489108-4",
+            deptCode: "1010300",
           })
         )
       );
@@ -484,7 +484,6 @@ export const useMzEmrStore = () => {
     onDeactivated(() => {
       editSocket.socket.close();
     });
-
     onBeforeMount(() => {
       editSocket.socket.close();
     });

+ 2 - 1
src/views/settings/dashboard-editor/index.vue

@@ -153,10 +153,11 @@ defineOptions({
             effect="dark"
             title="列宽可能拖动,但是列高不行,因为高度是不确定的,发布后才能看到效果。"
             :closable="false"
-          ></el-alert>
+          />
           <el-form style="width: 100%">
             <el-form-item label="病区:">
               <el-select
+                filterable
                 style="width: 100%"
                 v-model="store.currentWard"
                 @change="handleWardChange"

+ 3 - 1
src/views/system/JumpRedirect.vue

@@ -66,14 +66,16 @@ const openAddress = {
     const data = {
       patientId: param.patientId,
       times: XEUtils.toNumber(param.times),
+      deptCode: param.dept,
     };
+    console.log(data);
     if (stringIsBlank(data.patientId)) {
       setMsg("门诊号不能为空");
     }
     if (stringIsBlank(data.times)) {
       setMsg("住院次数不能为空");
     }
-    routerPush(`/mzEmrEditorV2?params=${window.btoa(JSON.stringify(data))}`);
+    // routerPush(`/mzEmrEditorV2?params=${window.btoa(JSON.stringify(data))}`);
   },
 };