455 lines
14 KiB
Vue
455 lines
14 KiB
Vue
<template>
|
|
<div>
|
|
<ContentWrap>
|
|
<el-form
|
|
ref="queryFormRef"
|
|
:model="queryParams"
|
|
size="default"
|
|
label-width="78px"
|
|
label-position="right"
|
|
label-suffix=""
|
|
class="-mb-15px"
|
|
>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="登记号" prop="regId" class="item-style">
|
|
<el-input
|
|
v-model="queryParams.regId"
|
|
placeholder="请输入登记号"
|
|
clearable
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="检查号" prop="examId" class="item-style">
|
|
<el-input
|
|
v-model="queryParams.examId"
|
|
placeholder="请输入检查号"
|
|
clearable
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="5">
|
|
<el-form-item label="检查日期" prop="examDate_ge" class="item-style date-picker">
|
|
<el-date-picker
|
|
v-model="queryParams.examDate_ge"
|
|
type="date"
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
placeholder="开始日期"
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="3">
|
|
<el-form-item
|
|
label=""
|
|
label-width="0px"
|
|
prop="examDate_le"
|
|
class="item-style date-picker"
|
|
>
|
|
<el-date-picker
|
|
v-model="queryParams.examDate_le"
|
|
type="date"
|
|
value-format="YYYY-MM-DD HH:mm:ss"
|
|
placeholder="结束日期"
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="7" v-if="false">
|
|
<el-form-item label="患者来源" prop="regSource" class="item-style">
|
|
<el-radio-group class="item-width radio-group">
|
|
<el-radio value="全部" style="margin-left: 6px; margin-right: 16px">全部</el-radio>
|
|
<el-radio value="门诊" style="margin-right: 16px">门诊</el-radio>
|
|
<el-radio value="住院" style="margin-right: 16px">住院</el-radio>
|
|
<el-radio value="体检" style="margin-right: 4px">体检</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="影像设备" prop="deviceName" class="item-style">
|
|
<el-select
|
|
v-model="queryParams.deviceName"
|
|
placeholder="请选择影像设备"
|
|
clearable
|
|
class="item-width"
|
|
>
|
|
<el-option
|
|
v-for="item in deviceList"
|
|
:key="item.deviceId"
|
|
:label="item.deviceName"
|
|
:value="item.deviceName"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="设备类型" prop="deviceType" class="item-style">
|
|
<el-select
|
|
v-model="queryParams.deviceType"
|
|
placeholder="请选择设备类型"
|
|
clearable
|
|
class="item-width"
|
|
>
|
|
<el-option label="DR" value="DR" />
|
|
<el-option label="CT" value="CT" />
|
|
<el-option label="MR" value="MR" />
|
|
<el-option label="超声" value="超声" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="阴性阳性" prop="diagFlag" class="item-style">
|
|
<el-radio-group v-model="queryParams.diagFlag" class="item-width radio-group">
|
|
<el-radio value="" style="margin-left: 12px; margin-right: 18px">全部</el-radio>
|
|
<el-radio value="0" style="margin-right: 18px">阴性</el-radio>
|
|
<el-radio value="1" style="margin-right: 18px">阳性</el-radio>
|
|
<el-radio value="2" style="margin-right: 4px">重大阳性</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="检查部位" prop="examItemName" class="item-style">
|
|
<el-select
|
|
v-model="queryParams.examItemName"
|
|
placeholder="请选择检查部位"
|
|
clearable
|
|
class="item-width"
|
|
>
|
|
<el-option
|
|
v-for="item in examitemsList"
|
|
:key="item.examItemCode"
|
|
:label="item.examItemName"
|
|
:value="item.examItemName"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="8">
|
|
<el-form-item label="报告状态" prop="reportstatus" class="item-style">
|
|
<el-select
|
|
v-model="queryParams.reportstatus"
|
|
placeholder="请选择报告状态"
|
|
clearable
|
|
class="item-width"
|
|
>
|
|
<el-option label="已分检" value="已分检" />
|
|
<el-option label="待分析" value="待分析" />
|
|
<el-option label="已分析" value="已分析" />
|
|
<el-option label="已审核" value="已审核" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="8">
|
|
<el-form-item label="患者姓名" prop="pname" class="item-style">
|
|
<el-input
|
|
v-model="queryParams.pname"
|
|
placeholder="请输入患者姓名"
|
|
clearable
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :span="4">
|
|
<el-form-item label="性别" prop="gender" class="item-style">
|
|
<el-select
|
|
v-model="queryParams.gender"
|
|
placeholder="请选择性别"
|
|
clearable
|
|
class="item-width"
|
|
>
|
|
<el-option label="男" value="男" />
|
|
<el-option label="女" value="女" />
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-col>
|
|
<el-col :offset="4" :span="8" style="text-align: right">
|
|
<el-button
|
|
@click="handleQuery"
|
|
style="background-color: rgba(56, 119, 246, 1); color: rgba(255, 255, 255, 1)"
|
|
>
|
|
<Icon icon="ep:search" class="mr-5px" /> 搜索
|
|
</el-button>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</ContentWrap>
|
|
|
|
<ContentWrap class="mb-1px">
|
|
<el-table
|
|
v-loading="loading"
|
|
size="default"
|
|
border
|
|
:stripe="true"
|
|
:show-overflow-tooltip="true"
|
|
:data="list_IllnessCase"
|
|
:header-cell-style="{
|
|
background: 'rgb(235, 241, 250)',
|
|
height: '40px',
|
|
color: '#333333'
|
|
}"
|
|
:row-style="{ height: '40px' }"
|
|
height="max(calc(100vh - 464px),100px)"
|
|
>
|
|
<el-table-column type="index" label="序号" align="center" width="54px" />
|
|
<el-table-column label="登记号" align="center" prop="regId" width="240px" />
|
|
<el-table-column label="检查号" align="center" prop="examId" width="240px" />
|
|
<el-table-column label="患者姓名" align="center" prop="pname" width="130px" />
|
|
<el-table-column label="性别" align="center" prop="gender" width="54px" />
|
|
<el-table-column
|
|
label="出生日期"
|
|
align="center"
|
|
prop="birthday"
|
|
:formatter="dateFormatter2"
|
|
width="110px"
|
|
/>
|
|
<el-table-column
|
|
label="检查日期"
|
|
align="center"
|
|
prop="examDate"
|
|
:formatter="dateFormatter2"
|
|
width="110px"
|
|
/>
|
|
<el-table-column
|
|
label="检查部位"
|
|
header-align="center"
|
|
prop="examItemName"
|
|
min-width="260px"
|
|
/>
|
|
<el-table-column
|
|
label="影像设备"
|
|
header-align="center"
|
|
prop="deviceName"
|
|
min-width="260px"
|
|
/>
|
|
<el-table-column
|
|
label="阴性阳性"
|
|
align="center"
|
|
prop="diagFlag"
|
|
fixed="right"
|
|
width="100px"
|
|
>
|
|
<template #default="scope">
|
|
<el-tag v-if="scope.row.diagFlag == '0'" effect="plain" style="width: 74px"
|
|
>阴性</el-tag
|
|
>
|
|
<el-tag
|
|
v-else-if="scope.row.diagFlag == '1'"
|
|
effect="plain"
|
|
type="danger"
|
|
style="width: 74px"
|
|
>阳性</el-tag
|
|
>
|
|
<el-tag
|
|
v-else-if="scope.row.diagFlag == '2'"
|
|
effect="plain"
|
|
type="warning"
|
|
style="width: 74px"
|
|
>重大阳性</el-tag
|
|
>
|
|
<el-tag v-else effect="plain" type="info" style="width: 74px">暂无</el-tag>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column label="操作" align="center" fixed="right" width="60px">
|
|
<template #default="scope">
|
|
<el-button link @click="handleRowClick(scope.row)" style="color: rgb(56, 119, 246)">
|
|
查看
|
|
</el-button>
|
|
</template>
|
|
</el-table-column>
|
|
<!-- 数据列 -->
|
|
</el-table>
|
|
<div>
|
|
<Pagination
|
|
:total="total"
|
|
v-model:page="queryParams.pageNo"
|
|
v-model:limit="queryParams.pageSize"
|
|
@pagination="getList"
|
|
/>
|
|
</div>
|
|
</ContentWrap>
|
|
|
|
<el-drawer v-model="activeDrawer" direction="rtl" :with-header="false" size="42%">
|
|
<div style="position: relative; z-index: 100">
|
|
<el-button
|
|
link
|
|
@click="activeDrawer = false"
|
|
style="position: absolute; top: 3px; right: 1px"
|
|
>
|
|
<Icon icon="ep:close" />
|
|
</el-button>
|
|
</div>
|
|
<el-tabs v-model="activeTabName" style="margin-top: -8px">
|
|
<el-tab-pane label="诊断信息" name="diagnosisInfo">
|
|
<el-scrollbar>
|
|
<el-form size="default" label-width="78px" label-position="top" label-suffix="">
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-form-item label="检查描述" class="item-style">
|
|
<el-input
|
|
v-model="examitemsDesc"
|
|
:readonly="true"
|
|
type="textarea"
|
|
:autosize="{ minRows: 8, maxRows: 9 }"
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
<el-row>
|
|
<el-col :span="24">
|
|
<el-form-item label="诊断意见" class="item-style">
|
|
<el-input
|
|
v-model="diagnosisDesc"
|
|
:readonly="true"
|
|
type="textarea"
|
|
:autosize="{ minRows: 8, maxRows: 9 }"
|
|
class="item-width"
|
|
/>
|
|
</el-form-item>
|
|
</el-col>
|
|
</el-row>
|
|
</el-form>
|
|
</el-scrollbar>
|
|
</el-tab-pane>
|
|
</el-tabs>
|
|
</el-drawer>
|
|
<!-- 可参考内容 -->
|
|
</div>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { dateFormatter, dateFormatter2 } from '@/utils/formatTime'
|
|
import download from '@/utils/download'
|
|
import { IllnessCaseApi } from '@/api/applyregistration/illnessCase'
|
|
|
|
defineOptions({ name: 'IllnessCase' })
|
|
/*
|
|
* 李传洋
|
|
* 病例管理
|
|
**/
|
|
/** 导入内容 **/
|
|
|
|
/** 组件引用 **/
|
|
const queryFormRef = ref()
|
|
|
|
/** 数据结构 **/
|
|
const message = useMessage()
|
|
const { t } = useI18n()
|
|
const activeDrawer = ref(false)
|
|
const activeTabName = ref('diagnosisInfo')
|
|
const diagnosisDesc = ref('')
|
|
const examitemsDesc = ref('')
|
|
const deviceList = ref<any[]>([])
|
|
const examitemsList = ref<any[]>([])
|
|
//表单核心
|
|
const queryParams0 = ref({
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
doctorName: undefined,
|
|
departmentName: undefined
|
|
})
|
|
const queryParams = ref({
|
|
pageNo: 1,
|
|
pageSize: 10,
|
|
/** 测试数据 **/
|
|
regId: '',
|
|
examId: '',
|
|
examDate_ge: '',
|
|
examDate_le: '',
|
|
deviceType: '',
|
|
deviceName: '',
|
|
diagFlag: '',
|
|
examItemName: '',
|
|
reportstatus: '',
|
|
pname: '',
|
|
gender: ''
|
|
})
|
|
//表格核心
|
|
const list_IllnessCase = ref<any[]>([])
|
|
const total = ref(0)
|
|
const loading = ref(true)
|
|
|
|
/****** 自定义内容 ******/
|
|
const resetDesc = async () => {
|
|
examitemsDesc.value = ''
|
|
diagnosisDesc.value = ''
|
|
}
|
|
|
|
/****** 可参考内容 ******/
|
|
/** 组件事件 **/
|
|
const getList = async () => {
|
|
resetDesc()
|
|
loading.value = true
|
|
try {
|
|
const data = await IllnessCaseApi.getPage(queryParams.value)
|
|
list_IllnessCase.value = data.list
|
|
total.value = data.total
|
|
} finally {
|
|
loading.value = false
|
|
}
|
|
}
|
|
|
|
const handleQuery = async () => {
|
|
queryParams.value.pageNo = 1
|
|
getList()
|
|
}
|
|
|
|
const handleRowClick = async (row) => {
|
|
examitemsDesc.value = row ? row.examDescription : ''
|
|
diagnosisDesc.value = row ? row.diagResults : ''
|
|
activeDrawer.value = true
|
|
}
|
|
|
|
/** 钩子方法 **/
|
|
onMounted(async () => {
|
|
deviceList.value = await IllnessCaseApi.getDeviceList()
|
|
examitemsList.value = await IllnessCaseApi.getExamitemsList()
|
|
getList()
|
|
})
|
|
|
|
/** 防空作用域 **/
|
|
console.log(dateFormatter)
|
|
console.log(download)
|
|
console.log(message)
|
|
console.log(t)
|
|
console.log(queryParams0)
|
|
//console.log(null)
|
|
|
|
/** 导出内容 **/
|
|
/**
|
|
* 备注:
|
|
*
|
|
* **/
|
|
</script>
|
|
|
|
<style scoped>
|
|
.el-form-item__label {
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.item-style {
|
|
margin-bottom: 8px;
|
|
}
|
|
|
|
.item-width {
|
|
width: 100%;
|
|
}
|
|
|
|
.date-picker :deep(.item-width) {
|
|
width: 100%;
|
|
}
|
|
|
|
.radio-group {
|
|
border: 1px solid #ececec;
|
|
}
|
|
</style>
|