فهرست منبع

完成血糖页面

DESKTOP-MINPJAU\Administrator 2 سال پیش
والد
کامیت
d573bec4d9

+ 25 - 0
src/api/blood-sugar/query.js

@@ -0,0 +1,25 @@
+import request from "@/utils/request";
+
+export function getThePatienMaxHospitalizationTimes(patNo) {
+    return request({
+        url: '/bloodSugar/getThePatienMaxHospitalizationTimes',
+        method: 'get',
+        params: {patNo}
+    })
+}
+
+export function getPatientLoodSugar(patNo, times) {
+    return request({
+        url: '/bloodSugar/getPatientLoodSugar',
+        method: 'get',
+        params: {patNo, times}
+    })
+}
+
+export function modifyPatientBloodGlucoseInfo(data) {
+    return request({
+        url: '/bloodSugar/modifyPatientBloodGlucoseInfo',
+        method: 'post',
+        data
+    })
+}

+ 36 - 0
src/components/blood-sugar-table/BloodSugarTable.vue

@@ -0,0 +1,36 @@
+<template>
+  <td @contextmenu.prevent="rightClick($event)">
+    {{ props.data?.testResult }}
+  </td>
+  <td @contextmenu.prevent="rightClick($event)">
+    {{ props.data?.formatTestTime }}
+    <div style="border-top: 1px solid #000;width: 100%;margin-bottom: 3px"/>
+    {{ props.data?.nurseIdName }}
+  </td>
+</template>
+
+<script setup name='BloodSugarTable'>
+const props = defineProps({
+  data: {
+    type: Object
+  }
+})
+
+const emit = defineEmits(['rightClick'])
+
+const rightClick = (event) => {
+  if (props.data) {
+    emit('rightClick', props.data, event)
+  }
+}
+
+
+</script>
+
+<style scoped>
+td {
+  border: 1px solid #000;
+  text-align: center;
+  padding: 10px 0;
+}
+</style>

+ 5 - 0
src/router/modules/dashboard.js

@@ -188,6 +188,11 @@ const route = [
                 component: createNameComponent(() => import('@/views/examination/TjReportInfo.vue')),
                 meta: {title: '体检报告', icon: 'iconfont icon-jianyanbaogao'},
             },
+            {
+                path: 'bloodSugarQuery',
+                component: createNameComponent(() => import('@/views/examination/BloodSugarQuery.vue')),
+                meta: {title: '血糖查询'},
+            },
         ],
     },
     {

+ 235 - 0
src/views/examination/BloodSugarQuery.vue

@@ -0,0 +1,235 @@
+<template>
+  <el-header>
+    住院号:
+    <el-input style="width: 120px" v-model="patNo" @blur="inputBlur"/>
+    住院次数:
+    <el-input-number v-model="times" :min="0"/>
+    <el-button>查询</el-button>
+    <el-button @click="print">打印</el-button>
+
+  </el-header>
+
+  <el-main>
+    <div style="width: 1122px;height: 793px" ref="printDiv">
+      <table style="width: 100%;max-height:  793px">
+        <thead>
+        <tr>
+          <th colspan="23">泰和医院内分泌科血糖单</th>
+        </tr>
+        <tr>
+          <th colspan="23">
+            <div style="width: 100%;display: flex;justify-content: space-between">
+
+              <div>
+                床号: {{ patientInfo?.bedNo }}
+              </div>
+
+              <div>
+                姓名: {{ patientInfo?.name }}
+              </div>
+
+              <div>
+                年龄: {{ patientInfo?.age }}
+              </div>
+
+              <div>
+                住院号:{{ patientInfo?.inpatientNo }}
+              </div>
+
+              <div>
+                单位: mmol/l
+              </div>
+
+            </div>
+          </th>
+        </tr>
+
+        <tr class="tr">
+          <th style="width: 110px">日期</th>
+          <th style="width: 30px">空腹</th>
+          <th>时间签名</th>
+          <th>早餐后</th>
+          <th>时间签名</th>
+          <th>中餐前</th>
+          <th>时间签名</th>
+          <th>中餐后</th>
+          <th>时间签名</th>
+          <th>晚餐前</th>
+          <th>时间签名</th>
+          <th>晚餐后</th>
+          <th>时间签名</th>
+          <th style="width: 30px">零点</th>
+          <th>时间签名</th>
+          <th style="width: 30px">三点</th>
+          <th>时间签名</th>
+          <th>随机血糖</th>
+          <th>时间签名</th>
+          <th>随机血糖</th>
+          <th>时间签名</th>
+          <th>随机血糖</th>
+          <th>时间签名</th>
+        </tr>
+        </thead>
+        <tbody>
+
+        <tr v-for="item in data">
+          <td style="padding: 10px">
+            {{ item.date }}
+          </td>
+          <blood-sugar-table v-for="index in 11"
+                             @right-click="rightClick"
+                             :data="htmlTd(index - 1,item.data)"/>
+        </tr>
+        </tbody>
+      </table>
+    </div>
+    <right-click-menu :mouse-position="position" closeManually ref="RightClickMenuRef">
+      <div>
+        {{ position.data.timecodeName }}
+        <el-form label-width="70px">
+          <el-form-item label="医生签名">
+            <SelectStaffCode v-model="position.data" :name="['nurseId', 'nurseIdName']"/>
+          </el-form-item>
+
+          <el-form-item label="结果">
+            <el-input style="width: 120px;" v-model="position.data.testResult"/>
+          </el-form-item>
+
+          <el-form-item label="时间">
+            <el-time-picker
+                format="HH:mm:ss"
+                value-format="YYYY-MM-DD HH:mm:ss"
+                v-model="position.data.testTime"/>
+          </el-form-item>
+
+        </el-form>
+
+        <el-button @click="confirmTheChanges">确认</el-button>
+        <el-button @click="cancel">取消</el-button>
+      </div>
+    </right-click-menu>
+  </el-main>
+
+</template>
+
+<script setup name='BloodSugarQuery'>
+import {
+  getPatientLoodSugar,
+  getThePatienMaxHospitalizationTimes,
+  modifyPatientBloodGlucoseInfo
+} from "@/api/blood-sugar/query";
+import BloodSugarTable from "@/components/blood-sugar-table/BloodSugarTable.vue";
+import {getLodop, initLodop} from "@/utils/c-lodop";
+import RightClickMenu from "@/components/menu-item/RightClickMenu.vue";
+import SelectStaffCode from "@/components/SelectStaffCode.vue";
+import {clone} from "@/utils/clone";
+import {getFormatDatetime} from "@/utils/date";
+
+let patNo = $ref('0412588')
+let times = $ref(1)
+
+const queryPatientSBloodSugarInformation = () => {
+  getPatientLoodSugar(patNo, times).then((res) => {
+    data = res.bloodSugarData
+    patientInfo = res.patientInfo
+  })
+}
+
+let data = $ref()
+let patientInfo = $ref()
+
+let thead = ["空腹", "早餐后", "中餐前", "中餐后", "晚餐前", "晚餐后", "零点", "三点", "随机血糖1", "随机血糖2", "随机血糖3"]
+
+const inputBlur = () => {
+  if (patNo) {
+    getThePatienMaxHospitalizationTimes(patNo).then((res) => {
+      console.log(res)
+    })
+  }
+}
+
+let position = $ref()
+const RightClickMenuRef = ref()
+let tempBloodSugarData = $ref()
+const rightClick = (val, event) => {
+  position = {
+    event: event,
+    data: val
+  }
+  tempBloodSugarData = clone(val)
+}
+
+const confirmTheChanges = () => {
+  modifyPatientBloodGlucoseInfo(position.data).then((res) => {
+    position.data.formatTestTime = getFormatDatetime(position.data.testTime, 'HH:mm')
+    RightClickMenuRef.value.close()
+  })
+}
+
+const cancel = () => {
+  position.data.nurseId = tempBloodSugarData.nurseId
+  position.data.nurseIdName = tempBloodSugarData.nurseIdName
+  position.data.testResult = tempBloodSugarData.testResult
+  position.data.testTime = tempBloodSugarData.testTime
+  RightClickMenuRef.value.close()
+}
+
+const htmlTd = (index, data) => {
+  return data[thead[index]]
+}
+
+const printDiv = ref()
+
+const print = () => {
+  let LODOP = getLodop()
+  let style = `<style>td {
+  border: 1px solid #000;
+  text-align: center;
+  padding: 10px 0;
+}
+
+.tr th {
+  border: 1px solid #000;
+  text-align: center;
+}
+
+table, tr, td {
+  border-collapse: collapse;
+}</style>`
+
+  const strHtml = style + '<body>' + printDiv.value.innerHTML + '</body>'
+  LODOP.PRINT_INIT('泰和医院内分泌科血糖单') // 初始化打印机 名字
+  LODOP.SET_PRINT_PAGESIZE(2, 0, 0, 'A4') // 设置纸张大小  A4
+  LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
+  LODOP.ADD_PRINT_HTM('2mm', '5mm', '100%', '100%', strHtml) //要打印的内容
+  LODOP.SET_PRINT_STYLE('ItemType', 3) //设置对象风格
+  LODOP.ADD_PRINT_TEXT('290mm', '190mm', '20mm', '2mm', '第#页/共&页') //增加纯文本项
+  LODOP.PREVIEW() // 关闭
+  console.log(printDiv)
+}
+
+
+onMounted(() => {
+  queryPatientSBloodSugarInformation()
+  initLodop()
+})
+
+
+</script>
+
+<style scoped lang="scss">
+td {
+  border: 1px solid #000;
+  text-align: center;
+  padding: 10px 0;
+}
+
+.tr th {
+  border: 1px solid #000;
+  text-align: center;
+}
+
+table, tr, td {
+  border-collapse: collapse;
+}
+</style>