update
1.安眼健康体检添加体检详情
This commit is contained in:
+4
-4
@@ -11,13 +11,13 @@ VITE_PUBLIC_PATH = /
|
||||
VITE_DROP_CONSOLE = false
|
||||
|
||||
#后台接口父地址(必填)
|
||||
VITE_GLOB_API_URL=https://api-jkglpt.iosp.ydpt.tech
|
||||
#VITE_GLOB_API_URL=http://192.168.1.33
|
||||
#VITE_GLOB_API_URL=https://api-jkglpt.iosp.ydpt.tech
|
||||
VITE_GLOB_API_URL=http://192.168.1.33
|
||||
#VITE_GLOB_API_URL=http://cqyt.test.yg.dt.io
|
||||
|
||||
#后台接口全路径地址(必填)
|
||||
VITE_GLOB_DOMAIN_URL=https://api-jkglpt.iosp.ydpt.tech
|
||||
#VITE_GLOB_DOMAIN_URL=http://192.168.1.33
|
||||
#VITE_GLOB_DOMAIN_URL=https://api-jkglpt.iosp.ydpt.tech
|
||||
VITE_GLOB_DOMAIN_URL=http://192.168.1.33
|
||||
#VITE_GLOB_DOMAIN_URL=http://cqyt.test.yg.dt.io
|
||||
# 接口前缀
|
||||
VITE_GLOB_API_URL_PREFIX=
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
<template>
|
||||
<BasicDrawer width="60%" title="体检详情" @register="registerDrawer">
|
||||
<div
|
||||
v-if="loading"
|
||||
style="position: absolute; width: 100%; height: 100%; left: 0; right: 0; display: flex; justify-content: center; align-items: center"
|
||||
>
|
||||
<a-spin />
|
||||
</div>
|
||||
<div class="d-title-d">基础信息</div>
|
||||
<a-row style="padding: 20px">
|
||||
<a-col v-for="(item, index) in fData" :key="`f-data-${index}`" :span="item.span" style="margin-bottom: 10px; display: flex">
|
||||
<div style="width: 80px; text-align: right">{{ item.label }}:</div>
|
||||
<div style="flex: 1" v-if="index < fData.length - 2">
|
||||
{{ item.field.indexOf('.') === -1 ? fForm[item.field] : fForm?.[item.field.split('.')[0]]?.[item.field.split('.')[1]] }}
|
||||
</div>
|
||||
<div v-else style="flex: 1; min-width: 0">
|
||||
<div
|
||||
style="flex: 1"
|
||||
:class="[(item.field === 'empHealthCheckNew.checkResult' ? fForm?.open1 : fForm?.open2) ? '' : 'no-show-info']"
|
||||
>
|
||||
{{ item.field.indexOf('.') === -1 ? fForm[item.field] : fForm?.[item.field.split('.')[0]]?.[item.field.split('.')[1]] }}
|
||||
</div>
|
||||
<template v-if="index >= fData.length - 2">
|
||||
<div style="text-align: right">
|
||||
<a-button type="link" @click="changeOpen(item)">
|
||||
{{ (item.field === 'empHealthCheckNew.checkResult' ? fForm?.open1 : fForm?.open2) ? '收起' : '展开' }}</a-button
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<div class="d-title-d">详细数据</div>
|
||||
<div style="margin-top: 10px; padding: 0 20px 0 50px">
|
||||
<div class="list-item-outer-d" style="display: flex; background: #f3f3f3; text-align: center">
|
||||
<div style="width: 70px; padding: 7px 0">序号</div>
|
||||
<div style="flex: 1; padding: 7px 0">科室</div>
|
||||
<div style="flex: 1; padding: 7px 0">小结</div>
|
||||
<div style="width: 100px; padding: 7px 0">小结日期</div>
|
||||
<div style="flex: 1; padding: 7px 0">小结医生</div>
|
||||
<div style="width: 100px; padding: 7px 0">操作</div>
|
||||
</div>
|
||||
<div v-for="(item, index) in listData" class="list-item-outer-d" :key="`list-data-${index}`" style="display: flex; text-align: center">
|
||||
<div style="width: 70px">{{ index + 1 }}</div>
|
||||
<div class="list-item-d" style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span>{{ item?.departName || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.departName || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div class="list-item-d" style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span>{{ item?.summary || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.summary || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="width: 100px">{{ item?.summaryDate || -'' }}</div>
|
||||
<div class="list-item-d" style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span>{{ item?.summaryDoctor || -'' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.summaryDoctor || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="width: 100px; cursor: pointer" @click="toResult(item)">查看项目结果</div>
|
||||
</div>
|
||||
</div>
|
||||
<result-modal @register="registerModal" />
|
||||
</BasicDrawer>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import BasicDrawer from '/@/components/Drawer/src/BasicDrawer.vue';
|
||||
import { useDrawerInner } from '/@/components/Drawer';
|
||||
import { fData } from '/@/views/healthMonitor/anY/physical/physical.data';
|
||||
import { ref } from 'vue';
|
||||
import { useModal } from '/@/components/Modal';
|
||||
import ResultModal from '/@/views/healthMonitor/anY/physical/components/resultModal.vue';
|
||||
import { queryCheckNewByIdApi } from '/@/views/healthMonitor/anY/physical/physical.api';
|
||||
|
||||
const listData = ref([]);
|
||||
const fForm = ref({});
|
||||
const loading = ref<any>(false);
|
||||
|
||||
const [registerModal, { openModal }] = useModal();
|
||||
|
||||
const [registerDrawer, {}] = useDrawerInner(async (data) => {
|
||||
listData.value = [];
|
||||
fForm.value = {};
|
||||
data.id = '1994381754169057282';
|
||||
try {
|
||||
loading.value = true;
|
||||
const res = await queryCheckNewByIdApi({ id: data?.id });
|
||||
fForm.value = { ...res, open1: false, open2: false } || { open1: false, open2: false };
|
||||
listData.value = res?.empHealthCheckNew?.healthCheckDepartList || [];
|
||||
loading.value = false;
|
||||
} catch (error) {
|
||||
loading.value = false;
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
|
||||
function toResult(item: any) {
|
||||
openModal(true, { ...item });
|
||||
}
|
||||
|
||||
function changeOpen(item: any) {
|
||||
if (item.field === 'empHealthCheckNew.checkResult') {
|
||||
fForm.value.open1 = !fForm.value.open1;
|
||||
} else {
|
||||
fForm.value.open2 = !fForm.value.open2;
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.d-title-d {
|
||||
padding-left: 20px;
|
||||
position: relative;
|
||||
|
||||
&:after {
|
||||
position: absolute;
|
||||
width: 3px;
|
||||
height: 80%;
|
||||
background: #5a99ee;
|
||||
content: '';
|
||||
top: 10%;
|
||||
left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.list-item-outer-d {
|
||||
> div {
|
||||
border-right: 1px solid #e6e6e6;
|
||||
border-bottom: 1px solid #e6e6e6;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
|
||||
&:first-child {
|
||||
border-left: 1px solid #e6e6e6;
|
||||
}
|
||||
}
|
||||
}
|
||||
.list-item-d {
|
||||
overflow: hidden;
|
||||
padding: 7px 5px;
|
||||
> div {
|
||||
width: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
|
||||
.no-show-info {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 3 !important;
|
||||
-webkit-box-orient: vertical;
|
||||
white-space: normal;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,150 @@
|
||||
<template>
|
||||
<BasicModal width="800px" @register="registerModal" title="项目结果详情">
|
||||
<div
|
||||
v-if="loading"
|
||||
style="position: absolute; width: 100%; height: 100%; left: 0; right: 0; display: flex; justify-content: center; align-items: center"
|
||||
>
|
||||
<a-spin />
|
||||
</div>
|
||||
<div class="modal-inner-d">
|
||||
<div class="list-item-d" style="background: #f3f3f3">
|
||||
<div style="width: 70px">序号</div>
|
||||
<div style="flex: 1">科室名称</div>
|
||||
<div style="flex: 1">项目名称</div>
|
||||
<div style="flex: 1">结果值</div>
|
||||
<div style="flex: 1">单位</div>
|
||||
<div style="flex: 1">参考值</div>
|
||||
<div style="flex: 1">是否异常</div>
|
||||
<div style="flex: 1">异常结果</div>
|
||||
</div>
|
||||
<div class="list-item-d" v-for="(item, index) in listData" :key="`list-data-${index}`">
|
||||
<div style="width: 70px">{{ index + 1 }}</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.departName || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.departName || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.projectName || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.projectName || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.abnormalResult && item?.abnormalResult !== 'null' ? item?.abnormalResult : '无' }}</span>
|
||||
</template>
|
||||
<div :style="{ color: item?.abnormal === '正常' ? '' : 'red' }">
|
||||
{{ item?.abnormalResult && item?.abnormalResult !== 'null' ? item?.abnormalResult : '无' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.unit || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.unit || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.referenceValue || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.referenceValue || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.abnormal || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.abnormal || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
<div style="flex: 1">
|
||||
<a-tooltip placement="top">
|
||||
<template #title>
|
||||
<span> {{ item?.resultValue || '-' }}</span>
|
||||
</template>
|
||||
<div>
|
||||
{{ item?.resultValue || '-' }}
|
||||
</div>
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</BasicModal>
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { BasicModal, useModalInner } from '/@/components/Modal';
|
||||
import { ref } from 'vue';
|
||||
import { queryHealthCheckProjectApi } from '/@/views/healthMonitor/anY/physical/physical.api';
|
||||
|
||||
const listData = ref([]);
|
||||
const loading = ref<any>(false);
|
||||
|
||||
const [registerModal, { setModalProps }] = useModalInner(async (data) => {
|
||||
listData.value = [];
|
||||
setModalProps({ showCancelBtn: false, showOkBtn: false });
|
||||
try {
|
||||
loading.value = true;
|
||||
const { checkId, departName, departNo } = data;
|
||||
listData.value = await queryHealthCheckProjectApi({ checkId, departName, departNo });
|
||||
loading.value = false;
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
loading.value = false;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
<style scoped lang="less">
|
||||
.list-item-d {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-left: 1px solid #e6e6e6;
|
||||
|
||||
> div {
|
||||
padding: 5px 7px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border-right: 1px solid #e6e6e6;
|
||||
border-bottom: 1px solid #e6e6e6;
|
||||
overflow: hidden;
|
||||
|
||||
> div {
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.modal-inner-d {
|
||||
width: 100%;
|
||||
position: relative;
|
||||
|
||||
> div {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,5 +1,11 @@
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
enum Api {
|
||||
list = '/health-emergency/emergency/LargeScreenNew/queryAnYanHealthCheckNew',
|
||||
queryCheckNewById = '/health-emergency/emergency/LargeScreenNew/queryCheckNewById',
|
||||
queryHealthCheckProject = '/health-emergency/emergency/LargeScreenNew/queryHealthCheckProject',
|
||||
}
|
||||
export const listApi = (params: any) => defHttp.post({ url: Api.list, params });
|
||||
|
||||
export const queryCheckNewByIdApi = (params: any) => defHttp.get({ url: Api.queryCheckNewById, params });
|
||||
|
||||
export const queryHealthCheckProjectApi = (params: any) => defHttp.post({ url: Api.queryHealthCheckProject, params });
|
||||
|
||||
@@ -70,3 +70,68 @@ export const searchScheme: FormSchema[] = [
|
||||
}),
|
||||
},
|
||||
];
|
||||
|
||||
export const fData = [
|
||||
{
|
||||
label: '姓名',
|
||||
field: 'name',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '性别',
|
||||
field: 'sexCode',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '出生日期',
|
||||
field: 'birthday',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '身份证号',
|
||||
field: 'idNo',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '单位',
|
||||
field: 'workUnit',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '民族',
|
||||
field: 'nationalityValueText',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '电话号码',
|
||||
field: 'phone',
|
||||
span: 24,
|
||||
},
|
||||
{
|
||||
label: '医院名称',
|
||||
field: 'empHealthCheckNew.hospitalName',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '体检日期',
|
||||
field: 'empHealthCheckNew.checkDate',
|
||||
span: 12,
|
||||
},
|
||||
{
|
||||
label: '体检医生',
|
||||
field: 'empHealthCheckNew.checkDoctor',
|
||||
span: 24,
|
||||
},
|
||||
{
|
||||
label: '体检综述',
|
||||
field: 'empHealthCheckNew.checkResult',
|
||||
span: 24,
|
||||
open: false,
|
||||
},
|
||||
{
|
||||
label: '体检建议',
|
||||
field: 'empHealthCheckNew.checkSuggestion',
|
||||
span: 24,
|
||||
open: false,
|
||||
},
|
||||
];
|
||||
|
||||
@@ -1,11 +1,22 @@
|
||||
<template>
|
||||
<BasicTable @register="registerTable"> </BasicTable>
|
||||
<BasicTable @register="registerTable">
|
||||
<template #action="{ record }">
|
||||
<TableAction :actions="getTableAction(record)" />
|
||||
</template>
|
||||
</BasicTable>
|
||||
|
||||
<detail-drawer @register="registerDrawer" />
|
||||
</template>
|
||||
<script setup lang="ts">
|
||||
import { BasicTable } from '/@/components/Table';
|
||||
import { BasicTable, TableAction } from '/@/components/Table';
|
||||
import { useListPage } from '/@/hooks/system/useListPage';
|
||||
import { columns, searchScheme } from '/@/views/healthMonitor/anY/physical/physical.data';
|
||||
import { listApi } from '/@/views/healthMonitor/anY/physical/physical.api';
|
||||
import DetailDrawer from '/@/views/healthMonitor/anY/physical/components/detailDrawer.vue';
|
||||
import { useDrawer } from '/@/components/Drawer';
|
||||
|
||||
const [registerDrawer, { openDrawer }] = useDrawer();
|
||||
|
||||
const { tableContext } = useListPage({
|
||||
tableProps: {
|
||||
api: listApi,
|
||||
@@ -20,10 +31,26 @@
|
||||
fieldMapToNumber: [],
|
||||
fieldMapToTime: [['date', ['checkDateStart', 'checkDateEnd'], 'YYYY-MM-DD']],
|
||||
},
|
||||
showActionColumn: false,
|
||||
actionColumn: {
|
||||
width: 100,
|
||||
fixed: 'right',
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
const [registerTable, {}, {}] = tableContext;
|
||||
|
||||
function getTableAction(record: Recordable) {
|
||||
return [
|
||||
{
|
||||
label: '查看详情',
|
||||
onClick: handleDetail.bind(null, record),
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
function handleDetail(record: any) {
|
||||
openDrawer(true, { id: record.id });
|
||||
}
|
||||
</script>
|
||||
<style scoped lang="less"></style>
|
||||
|
||||
Reference in New Issue
Block a user