Browse Source

修改文件位置

DESKTOP-0GD05B0\Administrator 2 years ago
parent
commit
ac0d1fae2a

+ 1 - 1
src/components/hui-zhen-da-ying/DaYingHuiZhen.vue

@@ -89,7 +89,7 @@ import {
   copyEnum, delEmrCopy,
   getEmrCopy,
   setEmrCopy
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import {xcMessage} from "@/utils/xiaochan-element-plus";
 
 const props = defineProps({

+ 1 - 1
src/components/si-sheet-upload/jie-suan-dan-xiu-gai/JieSuanDanXiangQing.vue

@@ -405,7 +405,7 @@ import {ArrayIsEqual} from '@/utils/list-utlis'
 import JieSuanDanXiuGaiShouShu from '@/components/si-sheet-upload/jie-suan-dan-xiu-gai/JieSuanDanXiuGaiShouShu.vue'
 import ShuXueXinXi from '@/components/si-sheet-upload/ShuXueXinXi.vue'
 import XcSelect from "@/components/xiao-chan/select/XcSelect.vue";
-import {getEmrUrl,getInEmrUrl} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init';
+import {getEmrUrl,getInEmrUrl} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js';
 import router from "@/router";
 const props = defineProps({
   data: {},

+ 139 - 0
src/components/xiao-chan/select-v2/XcSelectV2.vue

@@ -0,0 +1,139 @@
+<template>
+  <div class="xc-select-v3__main">
+    <div>
+      <el-input ref="inputRef" @focus="focus" @blur="blur"/>
+    </div>
+    <div class="xc-select-v3-ui__main">
+      <el-scrollbar @scroll="scroll">
+        <div
+            v-show="isShow"
+            :style="{
+              height:virtualizationHeight
+            }">
+          <ul :style="{transform: `translateY(${translateY})`}">
+            <li v-for="(item,index) in tempData"
+                :title="item.name"
+                @mouseover="mouseover($event)">
+              <slot name="defalut" :item="item" v-if="isSlot"/>
+              <span v-else>
+                {{ item.name }}
+              </span>
+
+            </li>
+          </ul>
+        </div>
+      </el-scrollbar>
+    </div>
+  </div>
+</template>
+
+<script setup name='XcSelectV2' lang="ts">
+import {ref, watch, defineProps, nextTick, computed, onMounted, useSlots} from 'vue'
+import {Ref} from "vue";
+
+const props = defineProps({
+  data: {
+    type: Array,
+    default: []
+  }
+})
+
+const inputRef: Ref<HTMLElement> = ref({})
+const isShow = ref(true)
+const virtualizationHeight = ref('400px')
+const itemHeight = 34
+const startIndex = ref(0)
+const displayNumber = ref(10)
+const translateY = ref('0px')
+const isSlot = ref(false)
+
+const focus = () => {
+  isShow.value = true
+}
+
+const blur = () => {
+  // isShow.value = false
+}
+
+const mouseover = (e) => {
+  // console.log(e)
+}
+
+const tempData = computed(() => {
+  return props.data.slice(startIndex.value, startIndex.value + displayNumber.value)
+})
+
+const scroll = ({scrollTop}) => {
+  translateY.value = scrollTop + 'px'
+  startIndex.value = Math.floor(scrollTop / itemHeight)
+}
+
+
+watch(() => props.data, async () => {
+  await nextTick()
+  virtualizationHeight.value = props.data.length * itemHeight + 'px'
+}, {immediate: true})
+
+const node = ref(null)
+onMounted(() => {
+  try {
+    isSlot.value = !!useSlots().defalut;
+    console.log(!!useSlots().defalut)
+    console.log(isSlot.value)
+    // node.value = useSlots().defalut()[0]
+  } catch (e) {
+    console.error(e)
+  }
+
+  console.log(isSlot.value)
+})
+
+</script>
+
+<style scoped lang="scss">
+.xc-select-v3__main {
+  width: max-content;
+  position: absolute;
+}
+
+.xc-select-v3-ui__main {
+  overflow: hidden;
+  background-color: white;
+  color: black;
+  height: 170px;
+  position: relative;
+  top: 4px;
+
+  .xc-select-v3__list {
+    position: relative;
+    will-change: transform;
+    direction: ltr;
+    height: 100%;
+    width: 214px;
+    list-style: none;
+    padding: 6px 0;
+    margin: 0;
+    box-sizing: border-box;
+  }
+
+  li {
+    padding: 0 32px 0 20px;
+    position: relative;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    color: #606266;
+    height: 34px;
+    line-height: 34px;
+    box-sizing: border-box;
+    cursor: pointer;
+  }
+
+  .option_hover {
+    background-color: #f5f7fa !important;
+  }
+
+}
+
+
+</style>

+ 1 - 1
src/components/zhu-yuan-yi-sheng/emr/EmrEditorTool.vue

@@ -15,7 +15,7 @@
 </template>
 
 <script setup name='EmrEditorTool' lang="ts">
-import {availableFonts} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+import {availableFonts} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import {defineProps, ref} from 'vue'
 
 const props = defineProps({

+ 1 - 1
src/components/zhu-yuan-yi-sheng/emr/EmrSidebar.vue

@@ -43,7 +43,7 @@ import {
   queryWhetherThePatientHasASpecifiedMedicalRecord
 } from "@/api/zhu-yuan-yi-sheng/emr-patient";
 import {BizException, ExceptionEnum} from "@/utils/BizException";
-import {emrConfig} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init'
+import {emrConfig} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js'
 import {stringIsBlank} from "@/utils/blank-utils";
 import {getAllWards} from "@/api/zhu-yuan-yi-sheng/resident-doctor";
 

+ 1 - 1
src/components/zhu-yuan-yi-sheng/emr/EmrSnippet.vue

@@ -35,7 +35,7 @@
 <script setup name='EmrSnippet'>
 
 import {getWindowSize} from "@/utils/window-size";
-import {emrConfig, EMRInteractive} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+import {emrConfig, EMRInteractive} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import {getSnippetTree} from "@/api/zhu-yuan-yi-sheng/emr-patient";
 
 

+ 1 - 1
src/components/zhu-yuan-yi-sheng/emr/HistoricalEmr.vue

@@ -42,7 +42,7 @@
 <script setup name='HistoricalEmr' lang="ts">
 import XcDialogV2 from "@/components/xiao-chan/dialog/XcDialogV2.vue";
 import {nextTick, onMounted, ref} from "vue";
-import {EMRInteractive} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init'
+import {EMRInteractive} from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js'
 import {getHistory} from '@/api/zhu-yuan-yi-sheng/emr-patient'
 import {getFormatDatetime} from '@/utils/date'
 import {ElMessageBox} from "element-plus";

+ 0 - 2
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-edit/YzEditor.vue

@@ -341,7 +341,6 @@ const xuanZhongFeiYong = async (row, laiyuan = 1) => {
       // 加载药品计量
       yaoPinJiLiangData.value = res.yaoPingJiLiang
       if (newData) {
-        yiZhuData.value.drugFlag = row.orderType
         // 判断是否 是皮试的药 如果是就只能有这些 给药方式
         geiYaoFangShiData.value = res.piShi
         // 是否是 抗菌药物
@@ -400,7 +399,6 @@ const xuanZhongFeiYong = async (row, laiyuan = 1) => {
       let res = await huoQuFeiYongXinXi(queryKey)
       if (newData) {
         openTheOrderPopUpWindow('请输入处置医嘱名')
-        yiZhuData.value.drugFlag = row.orderType
         if (stringNotBlank(res.prompt)) {
           tiShiBiaoTi.value = res.prompt
         }

+ 10 - 8
src/instructions/tip.js

@@ -1,16 +1,14 @@
 export default (app) => {
+    let div = null
 
     app.directive('tip', (el, binding, vnode, prevVnode) => {
-        let div = null
-        el.onmouseover = () => {
-            let e = vnode.el
-            let event = window.event
-            console.log(event)
+        el.onmouseover = (event) => {
+            console.log(event.currentTarget.getBoundingClientRect())
             div = document.createElement("div")
             div.style.position = 'fixed'
             div.style.width = 'max-content'
-            div.style.top = e.offsetTop + e.offsetHeight + 4 + 'px'
-            div.style.left = e.offsetLeft + event.offsetX + 30 + 'px'
+            div.style.top = event.x + 'px'
+            div.style.left = event.y + 'px'
             div.style.backgroundColor = 'rgb(116,116,116)'
             div.innerHTML = binding.value
             div.style.fontSize = '12px'
@@ -27,8 +25,13 @@ export default (app) => {
         el.onmouseout = () => {
             document.body.removeChild(div)
         }
+
     })
 
+    app.beforeUnmount = () => {
+        document.body.removeChild(div)
+    }
+
 
 }
 
@@ -43,7 +46,6 @@ function edgeMonitoringJudgment(el) {
         console.log(el)
     }
 
-    console.log(el.offsetWidth, '222');
 }
 
 

+ 11 - 6
src/layout/MenuV2/MenuItemV2.vue

@@ -1,16 +1,15 @@
 <template>
-  <el-sub-menu v-if="data?.children && data?.children.length > 0" :index="data?.completeRoute">
+  <el-sub-menu v-if="data?.children && data?.children.length > 0"
+               :index="data?.completeRoute"
+               :router="data?.completeRoute">
     <template #title>
       <i :class="data?.meta?.icon" v-if="data?.meta?.icon"></i>
       <span>{{ data?.metaTitle }}</span>
     </template>
     <menu-item-v2 :data="item" v-for="item in data?.children"/>
   </el-sub-menu>
-<!--  <el-menu-item v-else-if="data?.children && data?.children.length === 1" :index="data?.children[0]?.completeRoute">-->
-<!--    <i :class="data?.children[0]?.meta?.icon" v-if="data?.children[0]?.meta?.icon"></i>-->
-<!--    <span>{{ data?.children[0]?.metaTitle }}</span>-->
-<!--  </el-menu-item>-->
-  <el-menu-item v-else :index="data?.completeRoute">
+  <el-menu-item v-else :index="data?.completeRoute"
+                :router="data?.completeRoute">
     <i :class="data?.meta?.icon" v-if="data?.meta?.icon"></i>
     <span>{{ data?.metaTitle }}</span>
   </el-menu-item>
@@ -28,6 +27,12 @@ const props = defineProps({
 i {
   margin-right: 5px;
 }
+
+a {
+  text-decoration: none; /* 去除默认的下划线 */
+  outline: none; /* 去除旧版浏览器的点击后的外虚线框 */
+  color: #000; /* 去除默认的颜色和点击后变化的颜色 */
+}
 </style>
 
 //4224

+ 8 - 2
src/router/modules/dashboard.js

@@ -11,7 +11,7 @@ const route = [
     {
         path: '/emrEditor',
         name: 'emrEditor',
-        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/Home.vue')),
+        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/Home.vue')),
         hideMenu: true,
         meta: {title: '电子病历', hideTabs: true},
     },
@@ -481,6 +481,12 @@ const route = [
                 component: createNameComponent(() => import('@/views/hospitalization/case-front-sheet/JieShouHuiZhen.vue')),
                 meta: {title: '接收会诊'},
             },
+
+            {
+                path: 'emrControlRule',
+                component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/EmrControlRule.vue')),
+                meta: {title: '病历质控规则',},
+            },
             {
                 path: 'zhuYuanYiSheng',
                 redirect: '', //
@@ -490,7 +496,7 @@ const route = [
                     {
                         path: 'dianZiBingLi',
                         name: 'dianZiBingLi',
-                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/Home.vue')),
+                        component: createNameComponent(() => import('@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/Home.vue')),
                         meta: {
                             title: '电子病历',
                         },

+ 1 - 2
src/views/hospitalization/zhu-yuan-yi-sheng/Home.vue

@@ -56,8 +56,7 @@ import {getOperationGuide} from "@/api/public-api";
 import {xcMessage} from "@/utils/xiaochan-element-plus";
 import {isDev} from "@/utils/public";
 import EmrDualScreen from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/EmrDualScreen.vue";
-import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
-import XcCourse from "@/components/xiao-chan/course/XcCourse.vue";
+import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init";
 
 const windowSize = computed(() => {
   return store.state.app.windowSize

+ 11 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/EmrControlRule.vue

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

+ 1 - 1
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/ResumeMedicalRecords.vue

@@ -45,7 +45,7 @@ import {huanZheXinXi} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/
 import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
 import {huanHangXianShi} from "@/utils/date";
 import * as net from "net";
-import {EMRInteractive} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+import {EMRInteractive} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import {BizException, ExceptionEnum} from "@/utils/BizException";
 
 const deleteData = ref([])

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

@@ -318,7 +318,7 @@ import {
   EMRInteractive,
   emrConfig,
   fontSizes, availableFonts, copyEnum, getEmrCopy, delEmrCopy
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import {ElMessage, ElMessageBox} from "element-plus";
 import {BizException, ExceptionEnum} from "@/utils/BizException";
 import EmrSnippet from "@/components/zhu-yuan-yi-sheng/emr/EmrSnippet.vue";
@@ -1350,9 +1350,10 @@ defineExpose({
   top: 5px;
   color: black;
   left: 5px;
+  cursor: pointer;
   padding: 2px;
-  z-index: 99;
-  background-color: rgba(63, 0, 130, 0.35);
+  z-index: 1;
+  background-color: rgb(0 101 241 / 27%);
   box-shadow: 0 4px 8px rgb(0 0 0 / 20%), 0 6px 20px rgb(0 0 0 / 19%);
 
   div {

+ 4 - 5
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/Home.vue → src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/Home.vue

@@ -28,23 +28,22 @@
 </template>
 
 <script setup name='Home'>
-import EmrMain from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/EmrMain";
+import EmrMain from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/EmrMain.vue";
 import {getDisPatient, getPatientInfo} from "@/api/inpatient/patient";
 import router from "@/router";
-import HuanZheXinXi from "@/components/zhu-yuan-yi-sheng/HuanZheXinXi";
+import HuanZheXinXi from "@/components/zhu-yuan-yi-sheng/HuanZheXinXi.vue";
 import {BizException, ExceptionEnum} from "@/utils/BizException";
-import {getDischargeTimes, isDisReqEdit} from "@/api/zhu-yuan-yi-sheng/emr-patient";
+import {isDisReqEdit} from "@/api/zhu-yuan-yi-sheng/emr-patient";
 import {getServerDateApi} from "@/api/public-api";
 import {subtractTime} from "@/utils/date";
 import {
   emrConfig,
   query,
   resolveRoute
-} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import EmrPatientList from "@/components/zhu-yuan-yi-sheng/emr/EmrPatientList.vue";
 import EmrLeaveHospitalPatient from "@/components/zhu-yuan-yi-sheng/emr/EmrLeaveHospitalPatient.vue";
 import EmrSelectPat from "@/components/zhu-yuan-yi-sheng/EmrSelectPat.vue";
-import sleep from "@/utils/sleep";
 
 const divRef = ref(null)
 const headerRef = ref(null)

+ 0 - 0
src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init.js → src/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js


+ 2 - 4
src/views/hospitalization/zhu-yuan-yi-sheng/yi-zhu-lu-ru/YiZhuLuRu.vue

@@ -102,7 +102,7 @@ import {BizException, ExceptionEnum} from "@/utils/BizException";
 import {ElMessageBox} from "element-plus";
 import YzQueryCondition from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-header/YzQueryCondition";
 import YzTable from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/table/YzTable";
-import YzEditor from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-edit/YzEditor";
+import YzEditor from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/yz-edit/YzEditor.vue";
 import {tempYzData} from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import HuoQuMuBan from '@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuoQuMuBan.vue'
 import {getFormatDatetime} from "@/utils/date";
@@ -111,10 +111,8 @@ import {xcMessage} from "@/utils/xiaochan-element-plus";
 import YaoPingXiangQing from "@/components/zhu-yuan-yi-sheng/he-li-yong-yao/YaoPingXiangQing.vue";
 import AllergenEntry from "@/components/zhu-yuan-yi-sheng/AllergenEntry.vue";
 import OrderProgress from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/OrderProgress.vue";
-import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
-import {isDev} from "@/utils/public";
+import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 import RationalDrugUseWindow from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/RationalDrugUseWindow.vue";
-import YzTableV2 from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/table/YzTableV2.vue";
 
 const windowSize = computed(() => {
   return store.state.app.windowSize

+ 1 - 1
src/views/medical-insurance/inpatient/Home.vue

@@ -43,7 +43,7 @@ import Overview from '../../../components/medical-insurance/patient-overview/Ind
 import IdentifyImage from '../../../components/inpatient/IdentifyImage.vue'
 import Registinfo from '../../../components/medical-insurance/registinfo/Index.vue'
 import PageLayer from "@/layout/PageLayer";
-import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-init";
+import {getEmrUrl} from "@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init.js";
 
 
 const search = initSearchParam()

+ 11 - 62
src/views/settings/Test.vue

@@ -1,79 +1,28 @@
 <template>
-  <el-button @click="测试">测试</el-button>
-  <xc-table-v3 :data="data" :height="430" :columns="columns">
-    <el-table-column label="测试" prop="cs" width="150" show-overflow-tooltip/>
-    <el-table-column label="测试1" prop="code" width="150">
-      <template #default>
-        <button>测试</button>
-      </template>
-    </el-table-column>
-  </xc-table-v3>
+  <xc-select-v2 :data="data" style="width: 120px">
+    <template #defalut="{item}">
+      <span>
+        {{ item }}
+      </span>
+    </template>
+  </xc-select-v2>
 </template>
 
 <script setup name='Test' lang="tsx">
-import XcTableV3 from "@/components/xiao-chan/xc-table-v3/XcTableV3.vue";
+import XcSelectV2 from "@/components/xiao-chan/select-v2/XcSelectV2.vue";
 import {onMounted} from "vue";
-import {XcColumn} from "@/components/xiao-chan/xc-table-v3/XcColumn";
 
 let data = $ref([])
 
-const columns: XcColumn<any>[] = [
-  {
-    title: '序号',
-    type: 'index'
-  },
-  {
-    key: 'cs',
-    title: 'cs',
-    width: 150,
-    children: [
-      {
-        key: 'name',
-        title: '名字',
-        width: 120,
-        cellRenderer: ({row}) => (
-            <span>123</span>
-        )
-      },
-      {
-        key: 'cs',
-        title: 'cs'
-      }
-    ]
-  },
-  {
-    key: 'code',
-    title: 'code',
-    width: 150,
-    fixed: 'left',
-    cellRenderer: ({row}) => {
-      return (
-          <span>{row.cs}</span>
-      )
-    }
-  }
-]
-
 onMounted(() => {
-  for (let i = 0; i < 100000; i++) {
+  for (let i = 0; i < 1000; i++) {
     data.push({
-      cs: "测试asghkdhasgdhasgdhjagsdhj" + (i + 1),
-      code: 'asd' + i,
-      name: '名字'
+      code: 'code' + i,
+      name: 'name' + i
     })
   }
 })
 
-const 测试 = () => {
-  data = []
-  for (let i = 0; i < 100; i++) {
-    data.push({
-      cs: "一个" + (i + 1),
-      code: '一个' + i
-    })
-  }
-}
-
 </script>
 
 <style lang="scss" scoped>