Quellcode durchsuchen

出院人员查询皮试结果页面

LIJU vor 2 Monaten
Ursprung
Commit
c2cb7ec61c

+ 35 - 0
src/api/medical-advice/nursing-manage.js

@@ -55,6 +55,41 @@ export function queryPsInfo(data) {
     })
 }
 
+/**
+ * 查询出院人员的皮试信息
+ * @param data
+ * @returns {AxiosPromise}
+ */
+export function queryPsInfoInact(data) {
+    return request({
+        url: '/medicalAdvice/nursingManagement/queryPsInfoInact',
+        method: 'post',
+        data,
+    })
+}
+
+/**
+ * 出院:按住院号获取入院次数(倒序)
+ */
+export function inactAdmissTimes(inpatientNo) {
+    return request({
+        url: '/medicalAdvice/nursingManagement/inactAdmissTimes',
+        method: 'get',
+        params: { inpatientNo }
+    })
+}
+
+/**
+ * 出院:更新皮试信息
+ */
+export function updatePsInfoInact(data) {
+    return request({
+        url: '/medicalAdvice/nursingManagement/updatePsInfoInact',
+        method: 'post',
+        data,
+    })
+}
+
 /**
  * 更新皮试信息
  * @param data

+ 123 - 0
src/views/medical-advice/nursing-manage/PsInfoInact.vue

@@ -0,0 +1,123 @@
+<template>
+  <el-container>
+    <el-header>
+      住院号:
+      <el-input v-model="queryForm.inpatientNo" placeholder="请输入住院号" style="width: 160px;margin-right: 10px" size="small" />
+      入院次数:
+      <el-select v-model="queryForm.admissTimes" :disabled="admissTimes.length===0" style="width: 120px;margin-right: 10px" size="small">
+        <el-option v-for="item in admissTimes" :key="item" :label="item" :value="item" />
+      </el-select>
+      <el-radio-group v-model="queryForm.confirmFlag">
+        <el-radio value="0" size="small">未确认</el-radio>
+        <el-radio value="1" size="small">已确认</el-radio>
+      </el-radio-group>
+      <el-button icon="Search" type="primary" @click="handleQuery">查询</el-button>
+      <el-button type="success" @click="handleSave">保存</el-button>
+    </el-header>
+    <el-main>
+      <div style="width: 100%;">
+        <el-table :data="psInfo" highlight-current-row stripe border show-overflow-tooltip :height="props.height">
+          <el-table-column label="排序" type="index" width="40" />
+          <el-table-column prop="bedNo" label="床号" width="40" />
+          <el-table-column prop="inpatientNo" label="住院号" />
+          <el-table-column prop="name" label="病人姓名" />
+          <el-table-column prop="actOrderNo" label="医嘱号" />
+          <el-table-column prop="orderName" label="医嘱名称" min-width="120" />
+          <el-table-column prop="orderTime" label="医嘱时间" min-width="125" />
+          <el-table-column prop="dose" label="剂量" width="40" />
+          <el-table-column prop="doseUnit" label="剂量单位" width="80" />
+          <el-table-column prop="supplyName" label="给药方式" min-width="100" />
+          <el-table-column prop="psStatus" label="皮试结果" min-width="140">
+            <template #default="scope">
+              <el-radio-group v-model="scope.row.psStatus">
+                <el-radio value="0" size="small">阴性</el-radio>
+                <el-radio value="1" size="small">阳性</el-radio>
+              </el-radio-group>
+            </template>
+          </el-table-column>
+          <el-table-column prop="psOperName" label="皮试执行人" min-width="100" />
+          <el-table-column prop="psResultTime" label="皮试结果时间" min-width="150">
+            <template #default="scope">
+              <el-date-picker v-model="scope.row.psResultTime" type="datetime" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" style="width: 130px;" />
+            </template>
+          </el-table-column>
+          <el-table-column prop="enterTime" label="录入时间" min-width="125" />
+        </el-table>
+      </div>
+    </el-main>
+  </el-container>
+</template>
+
+<script setup name='PsInfoInact'>
+import { ref } from 'vue'
+import { ElMessage, ElMessageBox } from 'element-plus'
+import { getWindowSize } from '@/utils/window-size'
+import { inactAdmissTimes, queryPsInfoInact, updatePsInfoInact } from '@/api/medical-advice/nursing-manage'
+
+const props = defineProps({
+  height: { type: Number, default: getWindowSize.value.h - 50 }
+})
+
+const psInfo = ref([])
+const admissTimes = ref([])
+const loading = ref(false)
+
+const queryForm = ref({
+  inpatientNo: '',
+  admissTimes: undefined,
+  confirmFlag: '0'
+})
+
+const fetchAdmissTimes = async () => {
+  admissTimes.value = []
+  queryForm.value.admissTimes = undefined
+  if (!queryForm.value.inpatientNo) return
+  const res = await inactAdmissTimes(queryForm.value.inpatientNo)
+  if (Array.isArray(res) && res.length > 0) {
+    admissTimes.value = res
+    queryForm.value.admissTimes = res[0] // 默认选择最新(倒序第一个)
+  }
+}
+
+const handleQuery = async () => {
+  if (!queryForm.value.inpatientNo) {
+    ElMessage.warning('请输入住院号')
+    return
+  }
+  if (!queryForm.value.admissTimes) {
+    await fetchAdmissTimes()
+    if (!queryForm.value.admissTimes) {
+      ElMessage.warning('未找到该住院号的出院记录')
+      return
+    }
+  }
+  loading.value = true
+  try {
+    const data = await queryPsInfoInact({
+      inpatientNo: queryForm.value.inpatientNo,
+      admissTimes: queryForm.value.admissTimes,
+      confirmFlag: queryForm.value.confirmFlag
+    })
+    psInfo.value = data || []
+  } finally {
+    loading.value = false
+  }
+}
+
+const handleSave = () => {
+  if (!psInfo.value || psInfo.value.length === 0) {
+    ElMessage.warning('无可保存的数据')
+    return
+  }
+  ElMessageBox.confirm('请确认是否保存', { cancelButtonText: '取消', confirmButtonText: '确定' })
+    .then(async () => {
+      await updatePsInfoInact(psInfo.value)
+      ElMessage.success('保存成功')
+      handleQuery()
+    })
+    .catch(() => {})
+}
+
+</script>
+
+