体检结果汇总---初步
This commit is contained in:
parent
8ac316329c
commit
071f4eb48a
55
src/api/summary/index.ts
Normal file
55
src/api/summary/index.ts
Normal file
@ -0,0 +1,55 @@
|
||||
import request from '@/config/axios'
|
||||
|
||||
export interface SummaryResultVO {
|
||||
id: number
|
||||
inspectionOpinion: string
|
||||
auditStatus: number
|
||||
medicalSn: string
|
||||
summaryResult: string
|
||||
|
||||
}
|
||||
export interface AnalyseVO {
|
||||
id: number
|
||||
itemName: string
|
||||
itemResult: string
|
||||
analyse: string
|
||||
medicalSn: string
|
||||
|
||||
}
|
||||
|
||||
// 根据条码获取患者信息
|
||||
export const getPatient = (medicalSn: String) => {
|
||||
return request.get({ url: '/checkup/result/getPatient?medicalSn=' + medicalSn })
|
||||
}
|
||||
|
||||
// 根据条码获取患者检查项
|
||||
export const getPatientItems = (medicalSn: String) => {
|
||||
return request.get({ url: '/checkup/result/getPatientItems?medicalSn=' + medicalSn })
|
||||
}
|
||||
|
||||
// 更新患者汇总结果分析
|
||||
export const updatePatient = (data: SummaryResultVO) => {
|
||||
return request.put({ url: '/checkup/result/updatePatient', data })
|
||||
}
|
||||
|
||||
// 审核
|
||||
export const updateAudit = (medicalSn: String, auditStatus: number, inspectionOpinion: String) => {
|
||||
return request.put({ url: '/checkup/result/updateAudit?medicalSn=' + medicalSn + '&auditStatus=' + auditStatus + '&inspectionOpinion=' + inspectionOpinion})
|
||||
}
|
||||
|
||||
// 更新检查项目汇总结果分析
|
||||
export const updateItemsAnalyse = (data: AnalyseVO[]) => {
|
||||
return request.post({ url: '/checkup/result/updateItemsAnalyse', data })
|
||||
}
|
||||
|
||||
|
||||
// 用户密码重置
|
||||
export const resetUserPwd = (id: number, password: string) => {
|
||||
const data = {
|
||||
id,
|
||||
password
|
||||
}
|
||||
return request.put({ url: '/system/user/update-password', data: data })
|
||||
}
|
||||
|
||||
|
170
src/views/summary/audit/index.vue
Normal file
170
src/views/summary/audit/index.vue
Normal file
@ -0,0 +1,170 @@
|
||||
<template>
|
||||
<ContentWrap :istable="true">
|
||||
<el-form class="-mb-15px" :inline="true">
|
||||
<el-form-item label="条码" prop="medicalSn">
|
||||
<el-input v-model="medicalSn" placeholder="请输入条码" clearable class="!w-240px" @blur="handleBlur"/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="pass" type="primary">通过</el-button>
|
||||
<el-button @click="overrule" type="primary">驳回</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
<ContentWrap :istable="true">
|
||||
<el-form class="-mb-15px" :inline="true">
|
||||
<el-form-item label="总检意见">
|
||||
<el-input v-model="inspectionOpinion" placeholder="请输入内容" type="textarea" style="width: 400px"/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
|
||||
<ContentWrap :istable="true" class="h-1/1">
|
||||
<el-table :data="list" @row-click="rowChange" :show-overflow-tooltip="true" :scroll-x="true">
|
||||
<el-table-column label="用户编号" align="center" key="id" prop="id" v-if="false"/>
|
||||
<el-table-column label="检查项目" align="center" prop="itemName" min-width="100"/>
|
||||
<el-table-column label="阳性" align="center" prop="itemResult" min-width="320" />
|
||||
<el-table-column label="审核人" align="center" prop="auditor" min-width="100"/>
|
||||
</el-table>
|
||||
</ContentWrap>
|
||||
<el-row :gutter="20">
|
||||
<!-- 左侧部门树 -->
|
||||
<el-col :span="4" :xs="24">
|
||||
<ContentWrap class="h-1/1" >
|
||||
<!-- <ul style="list-style-type: none;text-align: center">
|
||||
<li>
|
||||
<el-button type="primary" @click="checkAll">全部选中</el-button>
|
||||
</li>
|
||||
<li>
|
||||
<el-button type="primary" @click="automaticRollups">自动汇总</el-button>
|
||||
</li>
|
||||
<li>
|
||||
<el-button type="primary" @click="autoEncoding">自动编码</el-button>
|
||||
</li>
|
||||
<li>
|
||||
<el-button type="primary" @click="clearEncoding">清除编码</el-button>
|
||||
</li>
|
||||
</ul>-->
|
||||
<el-col style="text-align: center;margin-top: 10px">
|
||||
<el-button type="primary" @click="checkAll">全部选中</el-button>
|
||||
</el-col >
|
||||
<!-- <el-col style="text-align: center;margin-top: 10px">
|
||||
<el-button type="primary" @click="automaticRollups">自动汇总</el-button>
|
||||
</el-col >-->
|
||||
<el-col style="text-align: center;margin-top: 10px">
|
||||
<el-button type="primary" @click="autoEncoding">自动编码</el-button>
|
||||
</el-col >
|
||||
<el-col style="text-align: center;margin-top: 10px">
|
||||
<el-button type="primary" @click="clearEncoding">清除编码</el-button>
|
||||
</el-col >
|
||||
</ContentWrap>
|
||||
</el-col>
|
||||
<el-col :span="20" :xs="24">
|
||||
<ContentWrap class="h-1/1">
|
||||
<ol :style="{ listStyleType: showNumbers ? 'decimal' : 'none' }" style="margin-left: 15px">
|
||||
<li v-for="(item, index) in list3" :key="index" @click="handleClick(item)">
|
||||
<span style="display: block"> {{ analyseFlag ? '【' : '' }} {{ item.itemResult }} {{ analyseFlag ? '】' : '' }}</span>
|
||||
<span style="display: block" v-if="analyseFlag"> <el-input v-model="item.analyse" placeholder="请输入" type="textarea"/> </span>
|
||||
</li>
|
||||
</ol>
|
||||
</ContentWrap>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import {ElMessage} from "element-plus";
|
||||
import * as SummaryApi from '@/api/summary'
|
||||
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
|
||||
const list = ref([]);
|
||||
const list3 = ref([]) // 列表的数
|
||||
|
||||
const showNumbers = ref(false)
|
||||
const analyseFlag = ref(false)
|
||||
|
||||
const checkAll = () => {
|
||||
showNumbers.value = false; // 切换显示序号的状态
|
||||
/*const descriptions = ref(list.value.map(item => item.description));
|
||||
list3.value = descriptions.value*/
|
||||
list3.value = list.value
|
||||
}
|
||||
const automaticRollups = () => {
|
||||
ElMessageBox.confirm('自动汇总将会覆盖现有汇总内容是否继续', '提示', {
|
||||
confirmButtonText: '继 续',
|
||||
cancelButtonText: '取 消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
analyseFlag.value = true;
|
||||
/*const descriptions = ref(list.value.map(item => item.description));
|
||||
list3.value = descriptions.value*/
|
||||
list3.value = list.value
|
||||
})
|
||||
|
||||
}
|
||||
const autoEncoding = () => {
|
||||
showNumbers.value = true; // 切换显示序号的状态
|
||||
}
|
||||
const clearEncoding = () => {
|
||||
showNumbers.value = false; // 切换显示序号的状态
|
||||
}
|
||||
const rowChange = (row)=>{
|
||||
var flagChange = true;
|
||||
for (let i = 0; i < list3.value.length; i++) {
|
||||
if (list3.value[i].id == row.id){
|
||||
flagChange = false;
|
||||
}
|
||||
}
|
||||
if (flagChange){
|
||||
list3.value.push(row)
|
||||
}
|
||||
|
||||
}
|
||||
const handleClick = (item) =>{
|
||||
//item.analyse = '建议喝水哦'
|
||||
analyseFlag.value = true
|
||||
console.log('list3',list3)
|
||||
}
|
||||
|
||||
//-------
|
||||
const medicalSn = ref()
|
||||
const inspectionOpinion = ref()
|
||||
|
||||
const pass = async () =>{
|
||||
if(medicalSn.value == null || medicalSn.value == ''){
|
||||
message.error(t('请输入条码!'))
|
||||
return
|
||||
}
|
||||
inspectionOpinion.value = '同意汇总分析意见'
|
||||
await SummaryApi.updateAudit(medicalSn.value,0,inspectionOpinion.value)
|
||||
message.success(t('审核成功'))
|
||||
}
|
||||
const overrule = async () =>{
|
||||
if(medicalSn.value == null || medicalSn.value == ''){
|
||||
message.error(t('请输入条码!'))
|
||||
return
|
||||
}
|
||||
if(inspectionOpinion.value == '' || inspectionOpinion.value ==null){
|
||||
ElMessage({
|
||||
message: '请先填写驳回意见',
|
||||
type: 'warning',
|
||||
})
|
||||
}else {
|
||||
await SummaryApi.updateAudit(medicalSn.value,1,inspectionOpinion.value)
|
||||
message.success(t('驳回成功'))
|
||||
}
|
||||
}
|
||||
|
||||
const handleBlur = async () =>{
|
||||
const patientInfo = await SummaryApi.getPatient(medicalSn.value)
|
||||
const patientItemsInfo = await SummaryApi.getPatientItems(medicalSn.value)
|
||||
inspectionOpinion.value = patientInfo.inspectionOpinion
|
||||
list.value = patientItemsInfo
|
||||
analyseFlag.value = true;
|
||||
list3.value = patientItemsInfo
|
||||
|
||||
}
|
||||
|
||||
</script>
|
189
src/views/summary/examination/index.vue
Normal file
189
src/views/summary/examination/index.vue
Normal file
@ -0,0 +1,189 @@
|
||||
<template>
|
||||
<ContentWrap :istable="true">
|
||||
<el-form class="-mb-15px" :inline="true">
|
||||
<el-form-item label="条码" prop="medicalSn">
|
||||
<el-input v-model="medicalSn" placeholder="请输入条码" clearable class="!w-240px" @blur="handleBlur"/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button @click="save" type="primary">汇总保存</el-button>
|
||||
<el-button @click="submit" type="primary">提交</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
<ContentWrap :istable="true">
|
||||
<el-form class="-mb-15px" :inline="true">
|
||||
<el-form-item label="条码" prop="medicalSn">
|
||||
<el-input v-model="formData2.medicalSn" class="!w-200px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="姓名" prop="pname">
|
||||
<el-input v-model="formData2.pname" class="!w-200px"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="性别" prop="gender">
|
||||
<el-select v-model="formData2.gender" placeholder="请选择" class="!w-120px">
|
||||
<el-option
|
||||
v-for="dict in getIntDictOptions(DICT_TYPE.SYSTEM_USER_SEX)"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="出生日期" prop="birthday" >
|
||||
<el-date-picker
|
||||
v-model="formData2.birthday"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="登记日期" prop="medicalDateTime" >
|
||||
<el-date-picker
|
||||
v-model="formData2.medicalDateTime"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</ContentWrap>
|
||||
<el-row :gutter="20">
|
||||
<!-- 左侧部门树 -->
|
||||
<el-col :span="8" :xs="24">
|
||||
<ContentWrap class="h-1/1">
|
||||
<el-table :data="list" @row-click="rowChange" :show-overflow-tooltip="true" :scroll-x="true">
|
||||
<el-table-column label="用户编号" align="center" key="id" prop="id" v-if="false"/>
|
||||
<el-table-column label="检查项目" align="center" prop="itemName" min-width="100"/>
|
||||
<el-table-column label="阳性" align="center" prop="itemResult" min-width="320" />
|
||||
</el-table>
|
||||
</ContentWrap>
|
||||
</el-col>
|
||||
<el-col :span="2" :xs="24">
|
||||
<ContentWrap class="h-1/1">
|
||||
<ul style="list-style-type: none;text-align: center">
|
||||
<li style="margin-top: 10px">
|
||||
<el-button type="primary" @click="checkAll">全部选中</el-button>
|
||||
</li>
|
||||
<!-- <li style="margin-top: 10px">
|
||||
<el-button type="primary" @click="automaticRollups">自动汇总</el-button>
|
||||
</li>-->
|
||||
<li style="margin-top: 10px">
|
||||
<el-button type="primary" @click="autoEncoding">自动编码</el-button>
|
||||
</li>
|
||||
<li style="margin-top: 10px">
|
||||
<el-button type="primary" @click="clearEncoding">清除编码</el-button>
|
||||
</li>
|
||||
</ul>
|
||||
</ContentWrap>
|
||||
</el-col>
|
||||
<el-col :span="14" :xs="24">
|
||||
<ContentWrap class="h-1/1">
|
||||
<ol :style="{ listStyleType: showNumbers ? 'decimal' : 'none' }" style="margin-left: 15px">
|
||||
<li v-for="(item, index) in list3" :key="index" @click="handleClick(item)">
|
||||
<span style="display: block"> {{ analyseFlag ? '【' : '' }} {{ item.itemResult }} {{ analyseFlag ? '】' : '' }}</span>
|
||||
<span style="display: block" v-if="analyseFlag"> <el-input v-model="item.analyse" placeholder="请输入" type="textarea"/> </span>
|
||||
</li>
|
||||
</ol>
|
||||
</ContentWrap>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import * as SummaryApi from '@/api/summary'
|
||||
import {DICT_TYPE, getIntDictOptions} from "@/utils/dict";
|
||||
|
||||
const { t } = useI18n() // 国际化
|
||||
const message = useMessage() // 消息弹窗
|
||||
|
||||
const list = ref([]);
|
||||
/*const list = ref([
|
||||
{ id: 1, itemName: 'Item 1', itemResult: 'Description for Item 1',analyse: '' },
|
||||
{ id: 2, itemName: 'Item 2', itemResult: 'Description for Item 2' ,analyse: ''},
|
||||
{ id: 3, itemName: 'Item 3', itemResult: 'Description for Item 3' ,analyse: ''},
|
||||
]);*/
|
||||
/*const list3 = ref(['Item 1', 'Item 2', 'Item 3', 'Item 4']) // 列表的数*/
|
||||
const list3 = ref([]) // 列表的数
|
||||
|
||||
const showNumbers = ref(false)
|
||||
const analyseFlag = ref(false)
|
||||
|
||||
const checkAll = () => {
|
||||
showNumbers.value = false; // 切换显示序号的状态
|
||||
/*const descriptions = ref(list.value.map(item => item.description));
|
||||
list3.value = descriptions.value*/
|
||||
list3.value = list.value
|
||||
}
|
||||
const automaticRollups = () => {
|
||||
ElMessageBox.confirm('自动汇总将会覆盖现有汇总内容是否继续', '提示', {
|
||||
confirmButtonText: '继 续',
|
||||
cancelButtonText: '取 消',
|
||||
type: 'warning'
|
||||
}).then(async () => {
|
||||
analyseFlag.value = true;
|
||||
/*const descriptions = ref(list.value.map(item => item.description));
|
||||
list3.value = descriptions.value*/
|
||||
list3.value = list.value
|
||||
})
|
||||
|
||||
}
|
||||
const autoEncoding = () => {
|
||||
showNumbers.value = true; // 切换显示序号的状态
|
||||
}
|
||||
const clearEncoding = () => {
|
||||
showNumbers.value = false; // 切换显示序号的状态
|
||||
}
|
||||
const rowChange = (row)=>{
|
||||
var flagChange = true;
|
||||
for (let i = 0; i < list3.value.length; i++) {
|
||||
if (list3.value[i].id == row.id){
|
||||
flagChange = false;
|
||||
}
|
||||
}
|
||||
if (flagChange){
|
||||
list3.value.push(row)
|
||||
}
|
||||
|
||||
}
|
||||
const handleClick = (item) =>{
|
||||
analyseFlag.value = true
|
||||
}
|
||||
|
||||
//-------
|
||||
const medicalSn = ref()
|
||||
|
||||
const formData2 = ref({
|
||||
id: undefined,
|
||||
medicalSn: undefined,
|
||||
pname: undefined,
|
||||
gender: undefined,
|
||||
birthday: undefined,
|
||||
medicalDateTime: undefined,
|
||||
auditStatus: undefined,
|
||||
|
||||
|
||||
})
|
||||
|
||||
const handleBlur = async () =>{
|
||||
const patientInfo = await SummaryApi.getPatient(medicalSn.value)
|
||||
const patientItemsInfo = await SummaryApi.getPatientItems(medicalSn.value)
|
||||
formData2.value = patientInfo
|
||||
list.value = patientItemsInfo
|
||||
console.log('patientInfo',patientInfo)
|
||||
}
|
||||
const save = async () =>{
|
||||
await SummaryApi.updateItemsAnalyse(list3.value)
|
||||
message.success(t('common.updateSuccess'))
|
||||
}
|
||||
const submit = async () =>{
|
||||
if(formData2.value.medicalSn == null || formData2.value.medicalSn == ''){
|
||||
message.error(t('请输入条码!'))
|
||||
return
|
||||
}
|
||||
if(formData2.value.auditStatus == 0){
|
||||
message.error(t('已审核通过,无须再次提交!'))
|
||||
}else if (formData2.value.auditStatus == 2){
|
||||
message.error(t('已提交,无须再次提交!'))
|
||||
}else {
|
||||
await SummaryApi.updateAudit(medicalSn.value,2,'')
|
||||
message.success(t('提交成功'))
|
||||
}
|
||||
|
||||
}
|
||||
</script>
|
Loading…
Reference in New Issue
Block a user