update
1.安眼健康体检添加体检详情
This commit is contained in:
+4
-4
@@ -11,13 +11,13 @@ VITE_PUBLIC_PATH = /
|
|||||||
VITE_DROP_CONSOLE = false
|
VITE_DROP_CONSOLE = false
|
||||||
|
|
||||||
#后台接口父地址(必填)
|
#后台接口父地址(必填)
|
||||||
VITE_GLOB_API_URL=https://api-jkglpt.iosp.ydpt.tech
|
#VITE_GLOB_API_URL=https://api-jkglpt.iosp.ydpt.tech
|
||||||
#VITE_GLOB_API_URL=http://192.168.1.33
|
VITE_GLOB_API_URL=http://192.168.1.33
|
||||||
#VITE_GLOB_API_URL=http://cqyt.test.yg.dt.io
|
#VITE_GLOB_API_URL=http://cqyt.test.yg.dt.io
|
||||||
|
|
||||||
#后台接口全路径地址(必填)
|
#后台接口全路径地址(必填)
|
||||||
VITE_GLOB_DOMAIN_URL=https://api-jkglpt.iosp.ydpt.tech
|
#VITE_GLOB_DOMAIN_URL=https://api-jkglpt.iosp.ydpt.tech
|
||||||
#VITE_GLOB_DOMAIN_URL=http://192.168.1.33
|
VITE_GLOB_DOMAIN_URL=http://192.168.1.33
|
||||||
#VITE_GLOB_DOMAIN_URL=http://cqyt.test.yg.dt.io
|
#VITE_GLOB_DOMAIN_URL=http://cqyt.test.yg.dt.io
|
||||||
# 接口前缀
|
# 接口前缀
|
||||||
VITE_GLOB_API_URL_PREFIX=
|
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';
|
import { defHttp } from '/@/utils/http/axios';
|
||||||
enum Api {
|
enum Api {
|
||||||
list = '/health-emergency/emergency/LargeScreenNew/queryAnYanHealthCheckNew',
|
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 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>
|
<template>
|
||||||
<BasicTable @register="registerTable"> </BasicTable>
|
<BasicTable @register="registerTable">
|
||||||
|
<template #action="{ record }">
|
||||||
|
<TableAction :actions="getTableAction(record)" />
|
||||||
|
</template>
|
||||||
|
</BasicTable>
|
||||||
|
|
||||||
|
<detail-drawer @register="registerDrawer" />
|
||||||
</template>
|
</template>
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import { BasicTable } from '/@/components/Table';
|
import { BasicTable, TableAction } from '/@/components/Table';
|
||||||
import { useListPage } from '/@/hooks/system/useListPage';
|
import { useListPage } from '/@/hooks/system/useListPage';
|
||||||
import { columns, searchScheme } from '/@/views/healthMonitor/anY/physical/physical.data';
|
import { columns, searchScheme } from '/@/views/healthMonitor/anY/physical/physical.data';
|
||||||
import { listApi } from '/@/views/healthMonitor/anY/physical/physical.api';
|
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({
|
const { tableContext } = useListPage({
|
||||||
tableProps: {
|
tableProps: {
|
||||||
api: listApi,
|
api: listApi,
|
||||||
@@ -20,10 +31,26 @@
|
|||||||
fieldMapToNumber: [],
|
fieldMapToNumber: [],
|
||||||
fieldMapToTime: [['date', ['checkDateStart', 'checkDateEnd'], 'YYYY-MM-DD']],
|
fieldMapToTime: [['date', ['checkDateStart', 'checkDateEnd'], 'YYYY-MM-DD']],
|
||||||
},
|
},
|
||||||
showActionColumn: false,
|
actionColumn: {
|
||||||
|
width: 100,
|
||||||
|
fixed: 'right',
|
||||||
|
},
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
const [registerTable, {}, {}] = tableContext;
|
const [registerTable, {}, {}] = tableContext;
|
||||||
|
|
||||||
|
function getTableAction(record: Recordable) {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
label: '查看详情',
|
||||||
|
onClick: handleDetail.bind(null, record),
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleDetail(record: any) {
|
||||||
|
openDrawer(true, { id: record.id });
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
<style scoped lang="less"></style>
|
<style scoped lang="less"></style>
|
||||||
|
|||||||
Reference in New Issue
Block a user