Vue_US/src/views/tblist/patientexamlist/index.vue

630 lines
20 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<ContentWrap>
<!-- 搜索工作栏 -->
<el-form
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="检查ID" prop="examId">
<el-input
v-model="queryParams.examId"
placeholder="检查ID\体检编号\住院号\门诊号等"
clearable
@keyup.enter="handleQuery"
class="!w-215px"
/>
</el-form-item>
<el-form-item label="患者姓名" prop="pName">
<el-input
v-model="queryParams.pname"
placeholder="请输入患者姓名"
clearable
@keyup.enter="handleQuery"
class="!w-160px"
/>
</el-form-item>
<!-- <el-form-item label="性别" prop="gender">
<el-input
v-model="queryParams.gender"
placeholder="请输入性别"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="出生日期" prop="birthday">
<el-input
v-model="queryParams.birthday"
placeholder="请输入出生日期"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="检查日期" prop="examDate" size="mini">
<!-- aaaaa -->
<el-radio-group ref="examDate_radio" v-model="examDate_radio_value" @change="examDate_radio_change">
<el-radio style="margin-right: 15px;" :value="1">今天</el-radio>
<el-radio style="margin-right: 15px;" :value="2">昨天</el-radio>
<el-radio style="margin-right: 15px;" :value="3">三天内</el-radio>
<el-radio style="margin-right: 15px;" :value="4">一周</el-radio>
<el-radio style="margin-right: 25px;" :value="5">
<el-date-picker
ref="examDate_picker"
:disabled="examDate_radio_value===5 ? false:true"
v-model="queryParams.examDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"/>
</el-radio>
</el-radio-group>
</el-form-item>
<!-- <el-form-item label="设备类型" prop="deviceType">
<el-select
v-model="queryParams.deviceType"
placeholder="请选择设备类型"
clearable
class="!w-240px"
>
<el-option label="请选择字典生成" value="" />
</el-select>
</el-form-item> -->
<!-- <el-form-item label="seri_dicomCount:序列数量/dicom数量" prop="seDc">
<el-input
v-model="queryParams.seDc"
placeholder="请输入seri_dicomCount:序列数量/dicom数量"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item label="检查项目" prop="examItemName">
<el-input
v-model="queryParams.examItemName"
placeholder="请输入检查项"
clearable
@keyup.enter="handleQuery"
class="!w-220px"
/>
</el-form-item>
<el-form-item label="报告状态" prop="reportstatus">
<el-select
v-model="queryParams.reportstatus"
placeholder="请选择报告状态"
clearable
class="!w-150px"
>
<el-option label="未申请" value="未申请" />
<el-option label="已申请" value="已申请" />
<el-option label="已分析" value="已分析" />
<el-option label="已审核" value="已审核" />
</el-select>
</el-form-item>
<!-- <el-form-item label="申请日期:年月日时分秒" prop="applicationDate">
<el-date-picker
v-model="queryParams.applicationDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="dicom文件上传时间" prop="uploadDate">
<el-date-picker
v-model="queryParams.uploadDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="机构名称" prop="orgName">
<el-input
v-model="queryParams.orgName"
placeholder="请输入机构名称"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="机构ID" prop="orgId">
<el-input
v-model="queryParams.orgId"
placeholder="请输入机构ID"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="上级判读机构id列表orgid1,orgid2,orgid3" prop="highLevelOrgId">
<el-input
v-model="queryParams.highLevelOrgId"
placeholder="请输入上级判读机构id列表orgid1,orgid2,orgid3"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="创建时间:年月日时分秒" prop="createDate">
<el-date-picker
v-model="queryParams.createDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="诊断结论" prop="diagResults">
<el-input
v-model="queryParams.diagResults"
placeholder="请输入诊断结论"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="下诊断结论的时间:年月日时分秒" prop="diagDate">
<el-date-picker
v-model="queryParams.diagDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="诊断医生" prop="diagDoctor">
<el-input
v-model="queryParams.diagDoctor"
placeholder="请输入诊断医生"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="审核医生" prop="reviewDoctor">
<el-input
v-model="queryParams.reviewDoctor"
placeholder="请输入审核医生"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item> -->
<!-- <el-form-item label="审核日期:年月日时分秒" prop="reviewDate">
<el-date-picker
v-model="queryParams.reviewDate"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="缩略图oss url, httP:oss url" prop="thumbnailImgUrl">
<el-input
v-model="queryParams.thumbnailImgUrl"
placeholder="请输入缩略图oss url, httP:oss url"
clearable
@keyup.enter="handleQuery"
class="!w-240px"
/>
</el-form-item>
<el-form-item label="框架需要:创建时间" prop="createTime">
<el-date-picker
v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
class="!w-240px"
/>
</el-form-item> -->
<el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button>
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button>
<el-button
type="primary"
plain
@click="openForm('create')"
v-hasPermi="['tblist:patientexamlist:create']"
v-if="false"
>
<Icon icon="ep:plus" class="mr-5px" /> 新增
</el-button>
<el-button
type="success"
plain
@click="handleExport"
:loading="exportLoading"
v-hasPermi="['tblist:patientexamlist:export']"
>
<Icon icon="ep:download" class="mr-5px" /> 导出
</el-button>
</el-form-item>
</el-form>
</ContentWrap>
<!-- 列表 -->
<ContentWrap>
<el-table v-loading="loading" :data="list" :stripe="true" :show-overflow-tooltip="true" @row-dblclick="handleEdit">
<el-table-column type="index" width="50px"/>
<el-table-column label="" width="150px">
<template #default="scope">
<el-image :src="scope.row.thumbnailImgUrl"/>
</template>
</el-table-column>
<el-table-column label="主键" align="center" prop="id" v-if="false"/>
<el-table-column label="检查ID" align="center" prop="examId" />
<el-table-column label="患者姓名" align="center" prop="pname" />
<el-table-column label="性别" align="center" prop="gender" />
<el-table-column label="出生日期" align="center" prop="birthday" />
<el-table-column
label="检查日期"
align="center"
prop="examDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="设备类型" align="center" prop="deviceType" />
<el-table-column label="Se/Im" align="center" prop="seDc" />
<el-table-column label="检查项目名称" align="center" prop="examItemName" />
<el-table-column label="报告状态" align="center" prop="reportstatus" >
<template #default="scope">
<el-tag :type="scope.row.reportstatus === '已审核' ? 'danger':'success'">
<span style="">{{ scope.row.reportstatus }}</span>
</el-tag>
</template>
</el-table-column>
<el-table-column
label="申请日期"
align="center"
prop="applicationDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column
label="上传时间"
align="center"
prop="uploadDate"
:formatter="dateFormatter"
width="180px"
/>
<el-table-column label="机构名称" align="center" prop="orgName" />
<el-table-column label="机构ID" align="center" prop="orgId" v-if="false"/>
<el-table-column label="上级判读机构id列表orgid1,orgid2,orgid3" align="center" prop="highLevelOrgId" v-if="false" />
<el-table-column
label="创建时间:年月日时分秒"
align="center"
prop="createDate"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column label="检查所见" align="center" prop="examDescription" v-if="false"/>
<el-table-column label="诊断结论" align="center" prop="diagResults" v-if="false"/>
<el-table-column
label="下诊断结论的时间:年月日时分秒"
align="center"
prop="diagDate"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column label="诊断医生" align="center" prop="diagDoctor" v-if="false" />
<el-table-column label="审核医生" align="center" prop="reviewDoctor" v-if="false" />
<el-table-column
label="审核日期:年月日时分秒"
align="center"
prop="reviewDate"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column
label="框架需要:创建时间"
align="center"
prop="createTime"
:formatter="dateFormatter"
width="180px"
v-if="false"
/>
<el-table-column label="操作" align="center">
<template #default="scope">
<el-button
size="small"
type="primary"
@click="getuporghiorgid(scope.row.id, scope.row.orgId,scope.row.reportstatus)"
v-hasPermi="['tblist:patientexamlist:query']"
>
申请
</el-button>
<!-- <el-button
link
type="danger"
@click="handleDelete(scope.row.id)"
v-hasPermi="['tblist:patientexamlist:delete']"
>
删除
</el-button> -->
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
</ContentWrap>
<!-- 表单弹窗:添加/修改 -->
<PatientexamlistForm ref="formRef" @success="getList" />
<!-- 表单弹窗:超声组件 -->
<Ultrasonic ref="ultrasonic" />
</template>
<script setup lang="ts">
import { dateFormatter } from '@/utils/formatTime'
import download from '@/utils/download'
import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist'
import PatientexamlistForm from './PatientexamlistForm.vue'
import Ultrasonic from '/src/views/ultrasoniccom/ultrasonicForm.vue'
/** PACS检查列表 列表 */
defineOptions({ name: 'Patientexamlist' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
const loading = ref(true) // 列表的加载中
const list = ref<PatientexamlistVO[]>([]) // 列表的数据
const total = ref(0) // 列表的总页数
const queryParams = reactive({
pageNo: 1,
pageSize: 10,
examId: undefined,
pname: undefined,
gender: undefined,
birthday: undefined,
examDate: [],
deviceType: undefined,
seDc: undefined,
examItemName: undefined,
reportstatus: undefined,
applicationDate: [],
uploadDate: [],
orgName: undefined,
orgId: "",
highLevelOrgId: "",
createDate: [],
examDescription: undefined,
diagResults: undefined,
diagDate: [],
diagDoctor: undefined,
reviewDoctor: undefined,
reviewDate: [],
thumbnailImgUrl: undefined,
createTime: [],
})
const queryFormRef = ref() // 搜索的表单
const exportLoading = ref(false) // 导出的加载中
/** 超声组件 */
const ultrasonic = ref();
const openultrForm = (id:number,orgid:string,regid:string) => {
ultrasonic.value.open(id,orgid,regid)
}
/** 表格行点击 */
const clickNumber = ref(0);
function handleEdit(row) {
console.log(111111121212)
openultrForm(row.id,row.orgId,row.regId)
/* clickNumber.value++;
if (clickNumber.value == 2) {
}
clickNumber.value = 0; */
}
/** aaaaa **/
const examDate_picker = ref(null);
const examDate_radio = ref(null);
const examDate_radio_value = ref(1);
const examDate_radio_change = ()=>{
if([1,2,3,4].includes(examDate_radio_value.value))
{
let timesta = new Date()
let timeend = new Date()
//判断当前选择的是那个时间
if (examDate_radio_value.value===1) {
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
} else if (examDate_radio_value.value===2)
{
timesta.setDate(timesta.getDate() - 1)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
}
else if(examDate_radio_value.value===3)
{
timesta.setDate(timesta.getDate() - 3)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
}
else if(examDate_radio_value.value===4)
{
timesta.setDate(timesta.getDate() - 7)
queryParams.examDate=[nowDate(timesta),nowDate(timeend)];
}
handleQuery();
}else if(5===examDate_radio_value.value)
{
queryParams.examDate=[];
}
}
///转换时间格式
function nowDate(time) {
var year = time.getFullYear(); // 年
var month = (time.getMonth() + 1).toString().padStart(2, '0'); // 月
var date = time.getDate().toString().padStart(2, '0'); // 日
var hour = time.getHours().toString().padStart(2, '0'); // 时
var minute = time.getMinutes().toString().padStart(2, '0'); // 分
var second = time.getSeconds().toString().padStart(2, '0'); // 秒
return (
year + "-" + month + "-" + date + " " + hour + ":" + minute + ":" + second
)
}
/** 查询列表 */
const getList = async () => {
loading.value = true
try {
const data = await PatientexamlistApi.getPatientexamlistPage(queryParams)
list.value = data.list
total.value = data.total
} finally {
loading.value = false
}
}
/** 搜索按钮操作 */
const handleQuery = () => {
queryParams.pageNo = 1
//获取到当前登陆用户的机构时 要进行赋值
queryParams.orgId=""
queryParams.highLevelOrgId=""
getList()
}
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value.resetFields();
/** aaaaa **/
//新写法
examDate_radio_value.value=1;
examDate_radio_change();
if(5===examDate_radio_value.value) handleQuery();
//老写法
//handleQuery();
}
/** 添加/修改操作 */
const formRef = ref()
const openForm = (type: string, id?: number) => {
formRef.value.open(type, id)
}
/** 申请后更新上级机构字段*/
const getuporghiorgid=async (id: number,orgId:string,reportstatus:string) => {
try {
if(reportstatus=="未申请")
{
await message.confirm("是否要进行申请?","确认提示")
await PatientexamlistApi.getuporghiid(id,orgId)
message.success(t('common.delSuccess'))
// 刷新列表
await getList()
}
else
{
await message. info("只有未申请才可以进行操作")
}
} catch {}
}
/** 删除按钮操作 */
const handleDelete = async (id: number) => {
try {
// 删除的二次确认
await message.delConfirm()
// 发起删除
await PatientexamlistApi.deletePatientexamlist(id)
message.success(t('common.delSuccess'))
// 刷新列表
await getList()
} catch {}
}
/** 申请按钮操作 */
const handleSub = async (id: number) => {
try {
// 删除的二次确认
await message.delConfirm()
// 发起删除
await PatientexamlistApi.deletePatientexamlist(id)
message.success(t('common.delSuccess'))
// 刷新列表
await getList()
} catch {}
}
/** 导出按钮操作 */
const handleExport = async () => {
try {
// 导出的二次确认
await message.exportConfirm()
// 发起导出
exportLoading.value = true
const data = await PatientexamlistApi.exportPatientexamlist(queryParams)
download.excel(data, 'PACS检查列表.xls')
} catch {
} finally {
exportLoading.value = false
}
}
/** 初始化 **/
onMounted(() => {
//在初始化的时候查询到当前登陆用户的机构 和上级机构
/** aaaaa **/
//新代码
examDate_radio_change();
if(5===examDate_radio_value.value) handleQuery();
//老代码
//getList();
})
</script>
<style>
/* 为了防止 el-form-item 的标签文本换行可以添加以下CSS样式 */
.el-form-item__label {
white-space: nowrap;
}
</style>