FlowBL/src/views/applyregistration/illnessCase/index.vue
2024-08-22 12:01:11 +08:00

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>