Browse Source

检验检查模板调用,电子病历优化时间,以及查询自己的申请

xiaochan 2 years ago
parent
commit
25b506915e

+ 16 - 0
src/App.vue

@@ -397,6 +397,22 @@ input[type=number]::-webkit-outer-spin-button {
   margin: 0;
 }
 
+.vxe-header-max_content {
+  .vxe-table--header {
+    tr th {
+      height: max-content !important;
+    }
+  }
+}
+
+.vxe-scroll_15 {
+  .vxe-table--body-wrapper {
+    &::-webkit-scrollbar {
+      width: 15px;
+      height: 15px;
+    }
+  }
+}
 
 .vxe-padding_zero {
   .vxe-header--row {

+ 17 - 9
src/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing.js

@@ -25,15 +25,6 @@ export function getCheckNewApplication() {
     })
 }
 
-
-export function jianChaJianYanFenLei(total, currentPage, leiXing, jianCha) {
-    return request({
-        url: url + 'jianChaJianYanFenLei',
-        method: 'get',
-        params: {total, currentPage, leiXing, jianCha}
-    })
-}
-
 export function huoQuShengQingXiangQing(reqNo) {
     return request({
         url: url + 'huoQuShengQingXiangQing',
@@ -82,6 +73,23 @@ export function getTemplate(itemType, templateType) {
     })
 }
 
+export function getTemplateGrouping(itemType, templateType) {
+    return request({
+        url: url + 'getTemplateGrouping',
+        method: 'get',
+        params: {itemType, templateType}
+    })
+}
+
+export function getTemplateByCodeAndType(code, type) {
+    return request({
+        url: url + 'getTemplateByCodeAndType',
+        method: 'get',
+        params: {code, type}
+    })
+}
+
+
 export function shanShuJianChaMuBan(code, deptCode) {
     return request({
         url: url + 'shanShuJianChaMuBan',

+ 2 - 2
src/api/zhu-yuan-yi-sheng/qrder-quash.js

@@ -10,11 +10,11 @@ export function applicationForRevocation(data) {
     })
 }
 
-export function getReqOrderQuash(startTime, endTime, state) {
+export function getReqOrderQuash(startTime, endTime, state, myReq) {
     return request({
         url: url + 'getReqOrderQuash',
         method: 'get',
-        params: {startTime, endTime, state}
+        params: {startTime, endTime, state, myReq}
     })
 }
 

+ 0 - 1
src/components/pat-info-list/PatInfomationDialog.vue

@@ -29,7 +29,6 @@
       <el-tab-pane label="检验">
         <emr-test :pat-no="props.patNo"
                   @close="emits('closed')"
-                  :admiss-date="startDate"
                   :is-emr="false"/>
       </el-tab-pane>
       <el-tab-pane label="检查">

+ 20 - 6
src/components/xiao-chan/sd-table/SdTable.vue

@@ -28,6 +28,13 @@ const props = defineProps({
     type: Array,
     default: []
   },
+  height: {
+    type: Number,
+    default: null
+  },
+  rowHeight: {
+    type: Number,
+  },
   columns: {
     type: Array,
     default: []
@@ -102,7 +109,13 @@ const setStyle = () => {
     }
 
     item.fixedStyle = {}
-    item.fixedStyle.width = item.width + 'pt'
+
+    if (XEUtils.isString(item.width)) {
+      item.fixedStyle.width = item.width;
+    } else {
+      item.fixedStyle.width = item.width + 'pt';
+    }
+
 
     if (item.fixed && item.fixed === 'left') {
       fixedStyle(item, index, 'left', tempColumns.value)
@@ -117,8 +130,11 @@ const setStyle = () => {
     }
   })
 
-  left.fixedStyle['border-right'] = '1px solid #ebeef5'
-  left.fixedStyle['box-shadow'] = 'inset -10px 0 10px -10px rgba(0, 0, 0, .15)'
+  if (left.fixedStyle != null) {
+    left.fixedStyle['border-right'] = '1px solid #ebeef5' as any;
+    left.fixedStyle['box-shadow'] = 'inset -10px 0 10px -10px rgba(0, 0, 0, .15)' as any
+  }
+
 }
 
 watch(() => props.columns, () => {
@@ -127,9 +143,8 @@ watch(() => props.columns, () => {
 
 onMounted(async () => {
 
-
   watch(() => props.data.length, () => {
-    tableRef.value.changeData()
+    tableRef.value.changeData(props.data)
   })
 
   await nextTick()
@@ -140,7 +155,6 @@ onMounted(async () => {
         if (isIntersecting) {
           sdMitt.emit('setScrollTop')
         }
-
       },
   )
 

+ 20 - 7
src/components/xiao-chan/sd-table/table-body/SdTableBody.vue

@@ -1,5 +1,7 @@
 <template>
-  <div v-bind="containerProps" style="height: 200px" class="sd-body">
+  <div v-bind="containerProps"
+       :style="{height: height + 'px'}"
+       class="sd-body">
     <div v-bind="wrapperProps">
       <div v-for="item in list"
            :key="item.index"
@@ -8,7 +10,7 @@
            @mouseenter="isHoverIndex = item.index"
            @mouseleave="isHoverIndex = -1"
            @click="rowClick(item)"
-           style="height: 23px">
+           :style="{height: rowHeight + 'px'}">
         <template v-for="(he,heindex) in tempColumns">
           <div class="cell"
                :style="he.fixedStyle"
@@ -38,14 +40,22 @@
 </template>
 
 <script setup name='SdTableBody' lang="tsx">
-import {defineProps, ref, onMounted, nextTick} from 'vue'
+import {defineProps, ref, onMounted, nextTick, computed} from 'vue'
 import {useVirtualList} from "@vueuse/core";
 
-const {data, tempColumns, columns, sdMitt} = defineProps({
+const {data, tempColumns, columns, sdMitt, height, rowHeight} = defineProps({
   data: {
     type: Array,
     default: []
   },
+  height: {
+    type: Number,
+    default: null
+  },
+  rowHeight: {
+    type: Number,
+    default: 23
+  },
   tempColumns: {
     type: Array,
     default: []
@@ -66,10 +76,12 @@ const {data, tempColumns, columns, sdMitt} = defineProps({
   }
 })
 
+const tempData = ref([])
+
 const {list, containerProps, wrapperProps, scrollTo} = useVirtualList(
-    data,
+    tempData,
     {
-      itemHeight: 23,
+      itemHeight: rowHeight,
     },
 )
 
@@ -129,8 +141,9 @@ onMounted(async () => {
 
 })
 
-const changeData = async () => {
+const changeData = async (data) => {
   await nextTick()
+  tempData.value = data
   sdMitt.emit('changeScrollY', containerProps.ref.value.scrollHeight > containerProps.ref.value.clientHeight)
 }
 

+ 0 - 1
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrAuxiliaryTools.vue

@@ -58,7 +58,6 @@
                    :emr-data="props.emrData"
                    @to-fill-in-data="toFillInData"/>
     <emr-test @close="close" v-if="index === 6"
-              :admiss-date="patInfo.admissDate"
               :pat-no="patInfo.inpatientNo"/>
     <emr-herbs v-if="index === 7"
                @close="close"

+ 2 - 2
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrOrderList.vue

@@ -22,8 +22,8 @@
                    :height="height"
                    class="vxe-padding_zero"
                    align="left"
-                   :scroll-x="{gt: 0}"
-                   :scroll-y="{gt: 0}"
+                   :scroll-x="{gt: 20}"
+                   :scroll-y="{gt: 50,enabled: true}"
                    show-header-overflow
                    border
                    :row-config="{isHover : true, isCurrent: true,height: 24,useKey :  'actOrderNo'}"

+ 5 - 9
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrTest.vue

@@ -92,8 +92,8 @@
                        :row-config="{isHover : true, isCurrent: true,height: 24}"
                        show-header-overflow
                        show-overflow
-                       :scroll-x="{gt: 0}"
-                       :scroll-y="{gt: 0}"
+                       :scroll-x="{gt: 20}"
+                       :scroll-y="{gt: 50,enabled: true}"
                        class="vxe-padding_zero"
                        @cell-click="sidebarRow"
                        :data="sidebarList">
@@ -146,7 +146,6 @@
 </template>
 
 <script setup name='EmrTest'>
-import {getServerDateApi} from "@/api/public-api";
 import {
   queryInspectionDetail,
   queryInspectionsIndex
@@ -154,16 +153,15 @@ import {
 import {onMounted, ref} from "vue";
 import {xcMessage} from '@/utils/xiaochan-element-plus'
 import TestDescribe from "@/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/TestDescribe.vue";
-import {getDateRangeFormatDate} from '@/utils/date'
+import {currentAndAFewDaysAgo, getDateRangeFormatDate} from '@/utils/date'
 import {
   elementReplication,
   emrCopyFunc
 } from '@/views/hospitalization/zhu-yuan-yi-sheng/electronic-medical-record/emr-editor/emr-init'
 import {copyStrFunc} from "@/utils/public";
 
-const {patNo, admissDate, isEmr} = defineProps({
+const {patNo, isEmr} = defineProps({
   patNo: String,
-  admissDate: String,
   isEmr: {
     type: Boolean,
     default: true
@@ -316,9 +314,7 @@ function getItemStr(val, strValue, value) {
 }
 
 onMounted(async () => {
-  let nowDate = await getServerDateApi()
-  dateRange.value.push(admissDate)
-  dateRange.value.push(nowDate)
+  dateRange.value = await currentAndAFewDaysAgo()
   await query()
   // todo 检验接口没有返回危急值。
   // let res = await getCriticalValueByPatInfo(patInfo.value.inpatientNo, patInfo.value.admissTimes)

+ 4 - 6
src/components/zhu-yuan-yi-sheng/emr/auxiliary-tools/EmrYzTemperature.vue

@@ -22,8 +22,8 @@
         </div>
         <vxe-table :height="height - 40"
                    border
-                   :scroll-x="{gt: 0}"
-                   :scroll-y="{gt: 0}"
+                   :scroll-x="{gt: 20}"
+                   :scroll-y="{gt: 50,enabled: true}"
                    :column-config="{resizable: true}"
                    :row-config="{ height: 24}"
                    class="vxe-padding_zero hl-style"
@@ -110,7 +110,7 @@ import {stringNotBlank} from "@/utils/blank-utils";
 import {shortcuts} from '@/data/shortcuts'
 import {getServerDateApi} from "@/api/public-api";
 import moment from "moment";
-import {getFormatDatetime} from '@/utils/date'
+import {getFormatDatetime, currentAndAFewDaysAgo} from '@/utils/date'
 
 
 const props = defineProps({
@@ -243,9 +243,7 @@ const rowClassName = ({row}) => {
 }
 
 onMounted(async () => {
-  let now = await getServerDateApi()
-  let start = getFormatDatetime(moment(now).subtract(7, "day"), 'YYYY-MM-DD')
-  dateRange.value = [start, getFormatDatetime(now, 'YYYY-MM-DD')]
+  dateRange.value = await currentAndAFewDaysAgo()
   query()
 })
 </script>

+ 16 - 14
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/TianJiaJianYan.vue

@@ -1,20 +1,21 @@
 <template>
   <div style="display: flex;margin: 0 10px">
-    <div style="width: 400px">
+    <div style="width: max-content">
       <el-radio-group v-model="chaZhaoLeiXing" @change="dianJiLeiXingChaXun">
         <el-radio-button :label="1">新申请</el-radio-button>
         <el-radio-button :label="2">个人模板</el-radio-button>
         <el-radio-button :label="3">科室模板</el-radio-button>
       </el-radio-group>
-      <div style="overflow: auto ;width: 220px"
+      <div style="overflow: auto  "
            :style="{height: ( yzSize.h / 1.2) + 'px'}">
         <div v-show="chaZhaoLeiXing === 1">
           <JyJcTree yjyc="jy" @nodeClick="nodeClick"/>
         </div>
         <div v-show="chaZhaoLeiXing !== 1">
-          <jy-jc-template-tree :data="templateData"
-                               @node-click="tempClick"
-                               @del-click="clickDeleteTemplate"/>
+          <jc-jy-template :data="templateData"
+                          :is-check="false"
+                          @del-click="deleteTemplate"
+                          @node-click="rowClick"/>
         </div>
       </div>
     </div>
@@ -73,7 +74,7 @@ import {computed, onMounted, ref} from 'vue'
 import {
   baoCunJianChaJianYanMuBan,
   baoCunJianYanJianCha,
-  getTemplate,
+  getTemplateGrouping,
   jianChaJianYanMuBanMing,
   shanShuJianChaMuBan,
 } from '@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing'
@@ -90,11 +91,10 @@ 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";
 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 JianChaJianYanTable
   from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JianChaJianYanTable.vue";
+import JcJyTemplate
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JcJyTemplate.vue";
 
 
 const chaZhaoLeiXing = ref(1)
@@ -119,13 +119,15 @@ const baoCunMuBan = ref({
 
 const templateData = ref()
 const dianJiLeiXingChaXun = () => {
-  getTemplate('2', chaZhaoLeiXing.value).then((res) => {
-    templateData.value = res
-  })
+  if (chaZhaoLeiXing.value !== 1) {
+    getTemplateGrouping('2', chaZhaoLeiXing.value).then((res) => {
+      templateData.value = res
+    });
+  }
 }
 
 
-const tempClick = async (data) => {
+const rowClick = async (data) => {
   if (data.isTheParentNode === '2') {
     if (xuanZhongJianYan.value.weiBianMa.indexOf(data.orderCode) > -1) {
       BizException(ExceptionEnum.MESSAGE_ERROR, '请勿重复添加。')
@@ -189,7 +191,7 @@ function baoCunShuJu() {
   })
 }
 
-const clickDeleteTemplate = (data) => {
+const deleteTemplate = (data) => {
   ElMessageBox.confirm('是否要删除该模板', '提示', {
     type: 'warning',
   }).then(() => {

+ 10 - 10
src/components/zhu-yuan-yi-sheng/jian-cha-shen-qing/aside/NewApplication.vue

@@ -4,15 +4,14 @@
     <el-radio-button :label="2">个人模板</el-radio-button>
     <el-radio-button :label="3">科室模板</el-radio-button>
   </el-radio-group>
-  <div style="overflow: auto; width: 220px"
-       :style="{height: getWindowSize.h - (yzHeaderSize)  - 60 + 'px'}">
+  <div style="overflow: auto;" :style="{height: yzSize.h / 1.2 + 'px' }">
     <div v-show="chaZhaoLeiXing === 1" style="width: max-content">
       <JyJcTree yjyc="jc" @node-click="nodeClick"/>
     </div>
-    <div v-show="chaZhaoLeiXing !== 1" style="width: max-content">
-      <jy-jc-template-tree :data="templateData"
-                           @node-click="rowClick"
-                           @del-click="deleteTemplate"/>
+    <div v-show="chaZhaoLeiXing !== 1">
+      <jc-jy-template :data="templateData"
+                      @del-click="deleteTemplate"
+                      @node-click="rowClick"/>
     </div>
   </div>
 </template>
@@ -22,17 +21,19 @@
 import {ref} from "vue";
 import {
   getCheckNewApplication,
-  getTemplate, shanShuJianChaMuBan
+  getTemplate, getTemplateGrouping, shanShuJianChaMuBan
 } from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
 import JyJcTree from "@/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/jy-jc-tree/JyJcTree.vue";
 import {ElMessageBox} from "element-plus";
 import store from "@/store";
 import {
-  addJcCheck, yzHeaderSize,
+  addJcCheck, yzHeaderSize, yzSize,
 } from "@/views/hospitalization/zhu-yuan-yi-sheng/public-js/zhu-yuan-yi-sheng";
 import JyJcTemplateTree
   from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/JyJcTemplateTree.vue";
 import {getWindowSize} from "@/utils/window-size";
+import JcJyTemplate
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JcJyTemplate.vue";
 
 const props = defineProps({
   returnItem: Function
@@ -42,7 +43,6 @@ const config = {value: 'code', label: 'name', children: 'children'}
 
 
 const chaZhaoLeiXing = ref(1)
-
 const newApplication = ref([])
 const templateData = ref([])
 
@@ -55,7 +55,7 @@ const rowClick = (data) => {
 
 const dianJiLeiXingChaXun = () => {
   if (chaZhaoLeiXing.value !== 1) {
-    getTemplate('3', chaZhaoLeiXing.value).then((res) => {
+    getTemplateGrouping('3', chaZhaoLeiXing.value).then(res => {
       templateData.value = res
     })
   }

+ 1 - 1
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/HuoQuMuBan.vue

@@ -53,7 +53,7 @@
       <div>
         <div>
           <p
-              style="color: red">注意:如果你在长期医嘱页面,那么模板中的临时医嘱会变成ALWAYS,如果在临时医嘱页面中,那么模板中的长期医嘱都会变成ONCE,在全部页面中那么模板中的频率不会变,
+              style="color: red">注意:如果你在长期医嘱页面,那么模板中的临时医嘱会变成QD,如果在临时医嘱页面中,那么模板中的长期医嘱都会变成ONCE,在全部页面中那么模板中的频率不会变,
             复制和粘贴医嘱同理。
           </p>
         </div>

+ 9 - 7
src/components/zhu-yuan-yi-sheng/yi-zhu-lu-ru/jy-jc-tree/JyJcTree.vue

@@ -8,13 +8,15 @@
       @node-click="nodeClick"
       :props="config">
     <template #default="{node, data}">
-      <el-icon>
-        <FolderOpened v-if="data?.code === null || data?.code.length < 5"/>
-        <Document v-else/>
-      </el-icon>
-      <span :title="showName(data)">
-        {{ showName(data) }}
-      </span>
+      <div style="width: 100%">
+        <el-icon>
+          <FolderOpened v-if="data?.code === null || data?.code.length < 5"/>
+          <Document v-else/>
+        </el-icon>
+        <span :title="showName(data)">
+         {{ showName(data) }}
+        </span>
+      </div>
     </template>
   </el-tree>
 </template>

+ 4 - 10
src/router/modules/dashboard.js

@@ -606,12 +606,6 @@ 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',
@@ -923,7 +917,7 @@ const route = [
                 path: 'patientInfo/adjustBed',
                 component: createNameComponent(() => import('@/views/medical-advice/patient-info/AdjustBed.vue')),
                 meta: {title: '整理床位'},
-            },{
+            }, {
                 path: 'chaXunFenXi/arrearagePatientList',
                 component: createNameComponent(() => import('@/views/medical-advice/cha-xun-fen-xi/ArrearagePatientList.vue')),
                 meta: {title: '欠费病人清单'},
@@ -933,17 +927,17 @@ const route = [
     {
         path: '/targetManagement',
         component: Layout,
-        meta: { title: '指标管理' },
+        meta: {title: '指标管理'},
         children: [
             {
                 path: 'targetHome/targetHomePage',
                 component: createNameComponent(() => import('@/views/target-management/target-home/TargetHomePage.vue')),
-                meta: { title: '指标管理综合首页' },
+                meta: {title: '指标管理综合首页'},
             },
             {
                 path: 'targetDict/targetDictConfig',
                 component: createNameComponent(() => import('@/views/target-management/target-dict/TargetDictConfig.vue')),
-                meta: { title: '指标字典维护' },
+                meta: {title: '指标字典维护'},
             }
         ],
     },

+ 8 - 0
src/utils/date.js

@@ -1,5 +1,6 @@
 import {stringIsBlank} from '@/utils/blank-utils'
 import moment from 'moment'
+import {getServerDateApi} from "@/api/public-api";
 
 export function getDate() {
     const date = new Date()
@@ -240,3 +241,10 @@ function doHandleMonth(month) {
     }
     return m;
 }
+
+export const currentAndAFewDaysAgo = async (day = 7, format = 'YYYY-MM-DD') => {
+    let date = await getServerDateApi();
+    let now = moment(new Date(date)).format(format)
+    let start = moment(new Date(date)).subtract(day, 'day')
+    return [moment(start).format(format), now]
+}

+ 24 - 1
src/views/data-modify/OrderQuash.vue

@@ -8,15 +8,18 @@ import XcTable from "@/components/xiao-chan/xc-table/XcTable.vue";
 import {getWindowSize} from "@/utils/window-size";
 import XEUtils from 'xe-utils'
 import {BizException, ExceptionEnum} from "@/utils/BizException";
+import CovidVaccinateAppointment from "@/views/reports/covid-vaccinate/CovidVaccinateAppointment.vue";
+import {needRule} from "@/utils/public";
 
 const dateRange = ref([])
 const stateRaf = ref(1)
+const myReq = ref(!needRule(38))
 
 const returnData = ref([])
 
 const queryData = () => {
   let {startTime, endTime} = getDateRangeFormatDate(dateRange.value)
-  getReqOrderQuash(startTime, endTime, stateRaf.value).then((res) => {
+  getReqOrderQuash(startTime, endTime, stateRaf.value, myReq.value).then((res) => {
     returnData.value = res
   })
 }
@@ -80,8 +83,12 @@ onMounted(async () => {
                    style="width: 120px">
           <xc-el-option :data="stateList"/>
         </el-select>
+        <el-divider direction="vertical"/>
+        <el-checkbox v-model="myReq" label="自己"/>
+        <el-divider direction="vertical"/>
         <el-button @click="queryData" type="primary">查询</el-button>
         <el-button @click="saveData" type="success"
+                   v-if="needRule(38)"
                    :disabled="currentPat.state !== 1">
           保存
         </el-button>
@@ -89,8 +96,24 @@ onMounted(async () => {
       <el-main>
         <xc-table :local-data="patReqData"
                   :open-paging="false"
+                  :default-expand-all="false"
                   :final-height="getWindowSize.h / 1.05">
           <el-table-column type="index"/>
+          <el-table-column type="expand">
+            <template #default="{row}">
+              <div style="width: 100%; height: max-content;padding: 10px">
+                <el-form inline>
+                  <el-form-item label="审核人:">
+                    {{ row.approverName }}
+                  </el-form-item>
+                  <el-form-item label="审核时间:">
+                    {{ row.approverDatatime }}
+                  </el-form-item>
+                </el-form>
+              </div>
+            </template>
+          </el-table-column>
+          <el-table-column label="医嘱名" prop="actOrderNo" width="70"/>
           <el-table-column label="医嘱名" prop="orderName"/>
           <el-table-column label="频率" prop="frequCode" width="50"/>
           <el-table-column label="撤销备注" prop="reqRemark"/>

+ 8 - 6
src/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/JyJcTemplateTree.vue

@@ -1,10 +1,11 @@
 <template>
-  <el-tree-v2 :data="props.data"
-              :props="treeProps"
-              :height="690"
-              @node-click="rowClick">
+  <el-tree :data="props.data"
+           :props="treeProps"
+           :height="690"
+           style="width: max-content"
+           @node-click="rowClick">
     <template #default="{ node,data }">
-      <div class="temp-tree">
+      <div class="temp-tree" :title="node.label">
         <div>
           <el-icon>
             <FolderOpened v-if="data.isTheParentNode === '1' "/>
@@ -30,7 +31,7 @@
         </div>
       </div>
     </template>
-  </el-tree-v2>
+  </el-tree>
 </template>
 
 <script setup name='JyJcTemplateTree'>
@@ -63,6 +64,7 @@ const selectAll = (data) => {
 
 <style scoped lang="scss">
 .temp-tree {
+  min-width: 180px;
   display: flex;
   justify-content: space-between;
   align-items: center;

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

@@ -0,0 +1,106 @@
+<script setup name='JcJyTemplate'>
+import {getTemplateByCodeAndType} from "@/api/zhu-yuan-yi-sheng/jian-yan-jian-cha-shen-qing";
+import {getWindowSize} from "@/utils/window-size";
+import {BizException, ExceptionEnum} from "@/utils/BizException";
+import XEUtils from 'xe-utils'
+
+const {isCheck, data} = defineProps({
+  isCheck: {
+    type: Boolean,
+    default: true
+  },
+  data: {
+    type: Array,
+  }
+})
+
+const emits = defineEmits(['node-click', 'delClick'])
+
+const vxeTableRef = ref(null)
+const dialog = ref(false)
+const tempList = ref([])
+
+const cellClick = ({row}) => {
+  getTemplateByCodeAndType(row.code, isCheck ? '3' : '2').then((res) => {
+    dialog.value = true
+    tempList.value = res
+  })
+}
+
+const tempClick = ({row}) => {
+  vxeTableRef.value.toggleCheckboxRow(row)
+}
+
+const confirm = () => {
+  let temp = vxeTableRef.value.getCheckboxRecords()
+  if (XEUtils.isEmpty(temp)) {
+    BizException(ExceptionEnum.MESSAGE_ERROR, "请先选择数据。");
+  }
+  selectAll(temp)
+}
+
+
+const selectAll = (data) => {
+  if (data) {
+    data.forEach(item => {
+      emits('node-click', item)
+    })
+  }
+  dialog.value = false
+}
+
+
+</script>
+
+<template>
+  <vxe-table :height="662"
+             style="width: 220px"
+             border
+             @cell-click="cellClick"
+             :scroll-x="{gt: 50}"
+             :scroll-y="{gt: 10}"
+             :column-config="{resizable: true}"
+             :row-config="{height: 24}"
+             class="vxe-padding_zero vxe-header-max_content vxe-scroll_15"
+             show-header-overflow
+             show-overflow
+             :data="data">
+    <vxe-column field="name" title="名称"/>
+    <vxe-column title="操作">
+      <template #default="scope">
+        <el-button type="danger" text @click.stop.prevent="emits('delClick',scope.row)">删除</el-button>
+      </template>
+    </vxe-column>
+  </vxe-table>
+
+  <el-dialog v-model="dialog" title="模板">
+    <vxe-table :data="tempList"
+               :height="getWindowSize.h - 400"
+               style="width: 100%"
+               border
+               ref="vxeTableRef"
+               :scroll-x="{gt: 50}"
+               :scroll-y="{gt: 10}"
+               @cell-click="tempClick"
+               :column-config="{resizable: true}"
+               :row-config="{height: 24}"
+               class="vxe-header-max_content vxe-scroll_15"
+               show-header-overflow
+               show-overflow>
+      <vxe-column type="checkbox" width="40"/>
+      <vxe-column field="name" title="名称"/>
+    </vxe-table>
+
+    <template #footer>
+      <el-button type="danger" @click="dialog = false">取消</el-button>
+      <el-button type="primary" @click="confirm">确认</el-button>
+
+    </template>
+
+  </el-dialog>
+
+</template>
+
+<style scoped lang="scss">
+
+</style>

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

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

+ 3 - 39
src/views/settings/Test.vue

@@ -1,46 +1,10 @@
 <template>
-  <el-button @click="test">测试</el-button>
-  <sd-table :data="data" style="width: 100%" :columns="columns">
-    <sd-column prop="code">
-      <template #default="scope">
-        {{ scope.row.$selected }}
-      </template>
-    </sd-column>
-  </sd-table>
+  <jc-jy-template :temp-type="2"/>
 </template>
 
 <script setup>
-import SdTable from "@/components/xiao-chan/sd-table/SdTable.vue";
-import SdColumn from "@/components/xiao-chan/sd-table/table-column/sd-column";
-
-const data = ref([])
-
-onMounted(() => {
-  for (let i = 0; i < 100; i++) {
-    data.value.push({
-      code: 'code_' + i,
-      name: 'name_' + i,
-      te1: 'te1' + i,
-      te2: 'te2' + i
-    })
-  }
-})
-
-const columns = ref([
-  {type: 'index', width: 30, fixed: 'left'},
-  {type: 'selected', width: 30, fixed: 'left'},
-  {
-    code: 'code', name: '编码', width: 500,
-  },
-  {code: 'code', name: '编码', width: 120, fixed: 'right'},
-
-])
-
-const test = () => {
-  columns.value.push({
-    code: 'name', name: '名称', width: 220
-  })
-}
+import JcJyTemplate
+  from "@/views/hospitalization/zhu-yuan-yi-sheng/jian-cha-jian-yan-shen-qing/components/public/JcJyTemplate.vue";
 
 
 </script>