diff --git a/src/api/applyregistration/deviceManage/index.ts b/src/api/applyregistration/deviceManage/index.ts index ad72c7b4..1e7d20bf 100644 --- a/src/api/applyregistration/deviceManage/index.ts +++ b/src/api/applyregistration/deviceManage/index.ts @@ -6,15 +6,27 @@ import request from '@/config/axios' */ export const DeviceManageApi = { /* 测试方法 */ + getOrgList: async () => { + return await request.get({ url: `/org/org/getlist` }) + }, getDepartmentList: async () => { return await request.get({ url: `/system/department/getlist` }) }, getPage: async (params: any) => { return await request.get({ url: `/test/device/page`, params }) }, + get: async (id: any) => { + return await request.get({ url: `/test/device/get?id=`+ id }) + }, create: async (data: any) => { return await request.post({ url: `/test/device/create`, data }) - } + }, + update: async (data: any) => { + return await request.put({ url: `/test/device/update`, data }) + }, + delete: async (id: any) => { + return await request.delete({ url: `/test/device/delete?id=` + id }) + }, } diff --git a/src/api/applyregistration/diagnosisTemplate/index.ts b/src/api/applyregistration/diagnosisTemplate/index.ts index 917008ef..977d20d6 100644 --- a/src/api/applyregistration/diagnosisTemplate/index.ts +++ b/src/api/applyregistration/diagnosisTemplate/index.ts @@ -6,15 +6,27 @@ import request from '@/config/axios' */ export const DiagnosisTemplateApi = { /* 测试方法 */ + getOrgList: async () => { + return await request.get({ url: `/org/org/getlist` }) + }, getDoctorList: async () => { return await request.get({ url: `/doctor/getlist` }) }, getPage: async (params: any) => { return await request.get({ url: `/test/reporttemplate/page`, params }) }, + get: async (id: any) => { + return await request.get({ url: `/test/reporttemplate/get?id=`+ id }) + }, create: async (data: any) => { return await request.post({ url: `/test/reporttemplate/create`, data }) - } + }, + update: async (data: any) => { + return await request.put({ url: `/test/reporttemplate/update`, data }) + }, + delete: async (id: any) => { + return await request.delete({ url: `/test/reporttemplate/delete?id=` + id }) + }, } diff --git a/src/api/applyregistration/exampartManage/index.ts b/src/api/applyregistration/exampartManage/index.ts index 7a6170dc..b282b285 100644 --- a/src/api/applyregistration/exampartManage/index.ts +++ b/src/api/applyregistration/exampartManage/index.ts @@ -12,9 +12,18 @@ export const ExampartManageApi = { getPage: async (params: any) => { return await request.get({ url: `/test/exampart/page`, params }) }, + get: async (id: any) => { + return await request.get({ url: `/test/exampart/get?id=`+ id }) + }, create: async (data: any) => { return await request.post({ url: `/test/exampart/create`, data }) - } + }, + update: async (data: any) => { + return await request.put({ url: `/test/exampart/update`, data }) + }, + delete: async (id: any) => { + return await request.delete({ url: `/test/exampart/delete?id=` + id }) + }, } diff --git a/src/api/applyregistration/illnessCase/index.ts b/src/api/applyregistration/illnessCase/index.ts index 86c11b5e..99ec139f 100644 --- a/src/api/applyregistration/illnessCase/index.ts +++ b/src/api/applyregistration/illnessCase/index.ts @@ -5,7 +5,16 @@ import request from '@/config/axios' * IllnessCaseApi */ export const IllnessCaseApi = { - + /* 测试方法 */ + getDeviceList: async () => { + return await request.get({ url: `/test/device/getlist` }) + }, + getExamitemsList: async () => { + return await request.get({ url: `/examitems/examitems/getlist` }) + }, + getPage: async (params: any) => { + return await request.get({ url: `/tblist/patientexamlist/pageIllnessCase`, params }) + } } diff --git a/src/api/applyregistration/reportPrintStatistics/index.ts b/src/api/applyregistration/reportPrintStatistics/index.ts index 0b28f4ac..f3dcdaf7 100644 --- a/src/api/applyregistration/reportPrintStatistics/index.ts +++ b/src/api/applyregistration/reportPrintStatistics/index.ts @@ -5,7 +5,16 @@ import request from '@/config/axios' * ReportPrintStatisticsApi */ export const ReportPrintStatisticsApi = { - + /* 测试方法 */ + getDeviceList: async () => { + return await request.get({ url: `/test/device/getlist` }) + }, + getExamitemsList: async () => { + return await request.get({ url: `/examitems/examitems/getlist` }) + }, + getPage: async (params: any) => { + return await request.get({ url: `/tblist/patientexamlist/pageReportPrintStatistics`, params }) + } } diff --git a/src/api/applyregistration/reservationInfo/index.ts b/src/api/applyregistration/reservationInfo/index.ts index 8812a306..8cf89abd 100644 --- a/src/api/applyregistration/reservationInfo/index.ts +++ b/src/api/applyregistration/reservationInfo/index.ts @@ -18,6 +18,9 @@ export const ReservationInfoApi = { getExamitemsList: async () => { return await request.get({ url: `/examitems/examitems/getlist` }) }, + create: async (data: any) => { + return await request.post({ url: `/applyregistration/applyform/createReservationInfo`, data }) + }, } diff --git a/src/views/applyregistration/deviceManage/DeviceManageForm.vue b/src/views/applyregistration/deviceManage/DeviceManageForm.vue index 3a054e80..1cfc0e3a 100644 --- a/src/views/applyregistration/deviceManage/DeviceManageForm.vue +++ b/src/views/applyregistration/deviceManage/DeviceManageForm.vue @@ -1,6 +1,6 @@ <template> <div> - <Dialog title="弹出框" v-model="dialogVisible" width="66%"> + <Dialog :title="dialogTitle" v-model="dialogVisible" width="66%"> <el-form ref="formRef" :model="formData" @@ -8,26 +8,30 @@ label-width="100px" label-position="right" label-suffix="" - class="-ml-34px" + class="-ml-30px" + v-loading="formLoading" > <el-row> <el-col :span="12"> - <el-form-item label="科室" prop="departmentCode" class="item-style"> - <el-select - v-model="formData.departmentCode" - placeholder="请选择科室" + <el-form-item label="设备名称" prop="deviceName" class="item-style"> + <el-input + v-model="formData.deviceName" + placeholder="请输入设备名称" clearable class="item-width" - > - <el-option - v-for="item in departmentList" - :key="item.id" - :label="item.departmentName" - :value="item.id" - /> - </el-select> + /> </el-form-item> </el-col> + <el-col :span="6"> + <el-form-item label="设备状态" prop="deviceStatus" class="item-style"> + <el-radio-group v-model="formData.deviceStatus" class="item-width radio-group"> + <el-radio value="1" style="margin-left: 12px; margin-right: 10px">有效</el-radio> + <el-radio value="0" style="margin-right: 10px">无效</el-radio> + </el-radio-group> + </el-form-item> + </el-col> + </el-row> + <el-row> <el-col :span="12"> <el-form-item label="设备类型" prop="deviceType" class="item-style"> <el-select @@ -43,23 +47,11 @@ </el-select> </el-form-item> </el-col> - </el-row> - <el-row> <el-col :span="12"> - <el-form-item label="名称" prop="deviceName" class="item-style"> - <el-input - v-model="formData.deviceName" - placeholder="请输入名称" - clearable - class="item-width" - /> - </el-form-item> - </el-col> - <el-col :span="12"> - <el-form-item label="型号" prop="deviceModel" class="item-style"> + <el-form-item label="设备型号" prop="deviceModel" class="item-style"> <el-input v-model="formData.deviceModel" - placeholder="请输入型号" + placeholder="请输入设备型号" clearable class="item-width" /> @@ -111,12 +103,53 @@ </el-col> </el-row> <el-row> - <el-col :span="6"> - <el-form-item label="设备状态" prop="deviceStatus" class="item-style"> - <el-radio-group v-model="formData.deviceStatus" class="item-width radio-group"> - <el-radio value="1" style="margin-left: 8px; margin-right: 10px">有效</el-radio> - <el-radio value="0" style="margin-right: 10px">无效</el-radio> - </el-radio-group> + <el-col :span="12"> + <el-form-item label="科室" prop="departmentCode" class="item-style"> + <el-select + v-model="deviceDepartmentInfo" + value-key="departmentCode" + placeholder="请选择科室" + clearable + class="item-width" + @change="deviceDept_change" + > + <el-option + v-for="(item, index) in departmentList" + :key="index" + :label="item.departmentName" + :value="item" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="机构" prop="orgId" class="item-style"> + <el-select + v-model="formData.orgId" + placeholder="请选择机构" + clearable + class="item-width" + > + <el-option + v-for="item in orgList" + :key="item.orgID" + :label="item.orgName" + :value="item.orgID" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-form-item label="AET" prop="scheduledAET" class="item-style"> + <el-input + v-model="formData.scheduledAET" + placeholder="请输入AET" + type="textarea" + :autosize="{ minRows: 3, maxRows: 9 }" + class="item-width" + /> </el-form-item> </el-col> </el-row> @@ -127,7 +160,7 @@ v-model="formData.remark" placeholder="请输入备注" type="textarea" - :autosize="{ minRows: 6, maxRows: 9 }" + :autosize="{ minRows: 5, maxRows: 9 }" class="item-width" /> </el-form-item> @@ -137,7 +170,7 @@ <template #footer> <div style="text-align: center"> - <el-button type="primary" @click="submitForm">保存</el-button> + <el-button type="primary" :disabled="formLoading" @click="submitForm">保存</el-button> <el-button @click="dialogVisible = false">取消</el-button> </div> </template> @@ -156,6 +189,7 @@ defineOptions({ name: 'DeviceManageForm' }) * DeviceManageForm **/ /** 导入内容 **/ +const emit = defineEmits(['success']) /** 组件引用 **/ const formRef = ref() @@ -164,6 +198,10 @@ const formRef = ref() const message = useMessage() const { t } = useI18n() const dialogVisible = ref(false) +const dialogTitle = ref('') +const formLoading = ref(false) +const formType = ref('') +const orgList = ref<any[]>([]) const departmentList = ref<any[]>([]) //表单核心 const formData0 = ref({ @@ -174,53 +212,124 @@ const formData0 = ref({ }) const formData = ref({ /** 测试数据 **/ - departmentCode: '', - deviceType: '', + id: '', deviceName: '', + deviceStatus: '', + deviceType: '', deviceModel: '', madeCompany: '', madeCompanyTel: '', saleCompany: '', saleCompanyTel: '', - deviceStatus: '1', - remark: '' + scheduledAET: '', + remark: '', + departmentCode: '', + deviceDepartment: '', + orgId: '' }) +const deviceDepartmentInfo = ref<any>() /****** 自定义内容 ******/ +const resetForm = async () => { + formData.value = { + /** 测试数据 **/ + id: '', + deviceName: '', + deviceStatus: '', + deviceType: '', + deviceModel: '', + madeCompany: '', + madeCompanyTel: '', + saleCompany: '', + saleCompanyTel: '', + scheduledAET: '', + remark: '', + departmentCode: '', + deviceDepartment: '', + orgId: '' + } + deviceDepartmentInfo.value = undefined + formRef.value?.clearValidate() +} + +const open = async (type: string, id?: number) => { + dialogVisible.value = true + dialogTitle.value = t('action.' + type) + formType.value = type + resetForm() + if (id) { + formLoading.value = true + try { + formData.value = await DeviceManageApi.get(id) + deviceDepartmentInfo.value = departmentList.value?.find((item) => { + return ( + item?.departmentCode && + formData.value?.departmentCode && + item.departmentCode == formData.value.departmentCode + ) + }) + } finally { + formLoading.value = false + } + } +} + /****** 可参考内容 ******/ -const emit = defineEmits(['success']) +/** 组件事件 **/ +const deviceDept_change = async (value: any) => { + formData.value.departmentCode = value ? value.departmentCode : '' + formData.value.deviceDepartment = value ? value.departmentName : '' +} + const submitForm = async () => { + formLoading.value = true try { const data = formData.value - await DeviceManageApi.create(data) + //校验 + if (!data.deviceName) { + await message.alertWarning('请输入设备名称') + return + } + if (!data.deviceStatus) { + await message.alertWarning('请选择设备状态') + return + } + if (!data.orgId) { + await message.alertWarning('请选择机构') + return + } + if (!data.departmentCode || !deviceDepartmentInfo.value) { + await message.alertWarning('请选择科室') + return + } + //更新 + if (formType.value === 'create') { + await DeviceManageApi.create(data) + message.success(t('common.createSuccess')) + } else if (formType.value === 'update') { + await DeviceManageApi.update(data) + message.success(t('common.updateSuccess')) + } dialogVisible.value = false emit('success') } finally { + formLoading.value = false } } -const openTest = () => { - dialogVisible.value = true - //清空内容 -} - -/** 组件事件 **/ /** 钩子方法 **/ onMounted(async () => { - //ceshi + orgList.value = await DeviceManageApi.getOrgList() departmentList.value = await DeviceManageApi.getDepartmentList() }) /** 防空作用域 **/ console.log(dateFormatter) -console.log(message) -console.log(t) -console.log(DeviceManageApi) console.log(formData0) //console.log(null) /** 导出内容 **/ -defineExpose({ openTest }) +defineExpose({ open }) /** * 备注: * diff --git a/src/views/applyregistration/deviceManage/index.vue b/src/views/applyregistration/deviceManage/index.vue index cb2b47e0..81c6eae1 100644 --- a/src/views/applyregistration/deviceManage/index.vue +++ b/src/views/applyregistration/deviceManage/index.vue @@ -11,47 +11,89 @@ class="-mb-15px" > <el-row> - <el-col :span="9"> - <!-- Notes: --> - <el-form-item label="科室" prop="deviceDepartment" class="item-style"> - <el-select - v-model="queryParams.deviceDepartment" - placeholder="请选择科室" - clearable - class="item-width" - > - <el-option - v-for="item in departmentList" - :key="item.id" - :label="item.departmentName" - :value="item.departmentName" - /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="10"> + <el-col :span="6" v-if="false"> <!-- Notes: --> <el-form-item - label="名称/拼音码/型号" + label="名称/类型/型号" prop="deviceDesc" label-width="120px" class="item-style" > <el-input v-model="queryParams.deviceDesc" - placeholder="请输入名称/拼音码/型号" + placeholder="请输入设备名称/类型/型号" clearable class="item-width" /> </el-form-item> </el-col> - <el-col :span="5"> + <el-col :span="6"> <!-- Notes: --> - <el-form-item class="item-style"> + <el-form-item label="科室" prop="departmentCode" class="item-style"> + <el-select + v-model="deviceDepartmentInfo" + value-key="departmentCode" + placeholder="请选择科室" + clearable + class="item-width" + @change="deviceDept_change" + > + <el-option + v-for="(item, index) in departmentList" + :key="index" + :label="item.departmentName" + :value="item" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="6"> + <!-- Notes: --> + <el-form-item label="设备名称" prop="deviceName" class="item-style"> + <el-input + v-model="queryParams.deviceName" + placeholder="请输入设备名称" + clearable + class="item-width" + /> + </el-form-item> + </el-col> + <el-col :span="6"> + <!-- Notes: --> + <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="6"> + <!-- Notes: --> + <el-form-item label="设备型号" prop="deviceModel" class="item-style"> + <el-input + v-model="queryParams.deviceModel" + placeholder="请输入设备型号" + clearable + class="item-width" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :offset="18" :span="6"> + <!-- Notes: --> + <el-form-item label-width="8px" class="item-style"> <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" /> 搜索 </el-button> - <el-button type="primary" plain @click="openFormTest()"> + <el-button type="primary" plain @click="openForm('create')"> <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> @@ -70,13 +112,19 @@ :data="list_devices" height="max(53vh,80px)" > - <el-table-column label="科室名称" align="center" prop="deviceDepartment" /> - <el-table-column label="名称" align="center" prop="deviceName" /> - <el-table-column label="型号" align="center" prop="deviceModel" /> + <el-table-column type="index" label="序号" align="center" width="54px" /> + <el-table-column label="科室" align="center" prop="deviceDepartment" /> + <el-table-column label="设备名称" align="center" prop="deviceName" /> + <el-table-column label="设备类型" align="center" prop="deviceType" /> + <el-table-column label="设备型号" align="center" prop="deviceModel" /> + <el-table-column label="AET" align="center" prop="scheduledAET" /> + <el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="操作" align="center"> - <template #default> - <el-button link type="primary"> 编辑 </el-button> - <el-button link type="danger"> 删除 </el-button> + <template #default="scope"> + <el-button link type="primary" @click="openForm('update', scope.row.id)"> + 编辑 + </el-button> + <el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button> </template> </el-table-column> <!-- 数据列 --> @@ -130,16 +178,40 @@ const queryParams = ref({ pageNo: 1, pageSize: 10, /** 测试数据 **/ + deviceDesc: undefined, + departmentCode: '', deviceDepartment: '', - deviceDesc: '' + deviceName: '', + deviceType: '', + deviceModel: '' }) +const deviceDepartmentInfo = ref<any>() //表格核心 const list_devices = ref<any[]>([]) const total = ref(0) -const loading = ref(false) +const loading = ref(true) /****** 自定义内容 ******/ /****** 可参考内容 ******/ +/** 组件事件 **/ +const deviceDept_change = async (value: any) => { + queryParams.value.departmentCode = value ? value.departmentCode : '' + queryParams.value.deviceDepartment = value ? value.departmentName : '' +} + +const openForm = (type: string, id?: any) => { + formRef.value.open(type, id) +} + +const handleDelete = async (id: any) => { + try { + await message.delConfirm() + await DeviceManageApi.delete(id) + message.success(t('common.delSuccess')) + await getList() + } catch {} +} + const getList = async () => { loading.value = true try { @@ -150,19 +222,14 @@ const getList = async () => { loading.value = false } } + const handleQuery = () => { queryParams.value.pageNo = 1 getList() } -const openFormTest = () => { - formRef.value.openTest() -} - -/** 组件事件 **/ /** 钩子方法 **/ onMounted(async () => { - //ceshi departmentList.value = await DeviceManageApi.getDepartmentList() getList() }) @@ -170,10 +237,6 @@ onMounted(async () => { /** 防空作用域 **/ console.log(dateFormatter) console.log(download) -console.log(message) -console.log(t) -console.log(DeviceManageApi) -console.log(DeviceManageForm) console.log(queryParams0) //console.log(null) @@ -190,7 +253,7 @@ console.log(queryParams0) } .item-style { - margin-bottom: 6px; + margin-bottom: 8px; } .item-width { diff --git a/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue b/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue index f42db231..bdb6b826 100644 --- a/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue +++ b/src/views/applyregistration/diagnosisTemplate/DiagnosisTemplateForm.vue @@ -1,6 +1,6 @@ <template> <div> - <Dialog title="弹出框" v-model="dialogVisible" width="60%"> + <Dialog :title="dialogTitle" v-model="dialogVisible" width="60%"> <el-form ref="formRef" :model="formData" @@ -9,6 +9,7 @@ label-position="right" label-suffix="" class="-ml-30px" + v-loading="formLoading" > <el-row> <el-col :span="24"> @@ -49,6 +50,23 @@ </el-col> </el-row> <el-row> + <el-col :span="12"> + <el-form-item label="机构" prop="orgId" class="item-style"> + <el-select + v-model="formData.orgId" + placeholder="请选择机构" + clearable + class="item-width" + > + <el-option + v-for="item in orgList" + :key="item.orgID" + :label="item.orgName" + :value="item.orgID" + /> + </el-select> + </el-form-item> + </el-col> <el-col :span="12"> <el-form-item label="医生" prop="privateDoctorId" class="item-style"> <el-select @@ -71,7 +89,7 @@ <template #footer> <div style="text-align: center"> - <el-button type="primary" @click="submitForm">保存</el-button> + <el-button type="primary" :disabled="formLoading" @click="submitForm">保存</el-button> <el-button @click="dialogVisible = false">取消</el-button> </div> </template> @@ -90,6 +108,7 @@ defineOptions({ name: 'DiagnosisTemplateForm' }) * DiagnosisTemplateForm **/ /** 导入内容 **/ +const emit = defineEmits(['success']) /** 组件引用 **/ const formRef = ref() @@ -98,6 +117,10 @@ const formRef = ref() const message = useMessage() const { t } = useI18n() const dialogVisible = ref(false) +const dialogTitle = ref('') +const formLoading = ref(false) +const formType = ref('') +const orgList = ref<any[]>([]) const doctorList = ref<any[]>([]) //表单核心 const formData0 = ref({ @@ -111,31 +134,59 @@ const formData = ref({ templateName: '', examDescription: '', diagResults: '', - privateDoctorId: '' + privateDoctorId: '', + orgId: '' }) /****** 自定义内容 ******/ -/****** 可参考内容 ******/ -const emit = defineEmits(['success']) -const submitForm = async () => { - try { - const data = formData.value - await DiagnosisTemplateApi.create(data) - dialogVisible.value = false - emit('success') - } finally { +const resetForm = () => { + formRef.value?.resetFields() +} + +const open = async (type: string, id?: number) => { + dialogVisible.value = true + dialogTitle.value = t('action.' + type) + formType.value = type + resetForm() + if (id) { + formLoading.value = true + try { + formData.value = await DiagnosisTemplateApi.get(id) + } finally { + formLoading.value = false + } } } + +/****** 可参考内容 ******/ const openTest = () => { dialogVisible.value = true //清空内容 } /** 组件事件 **/ +const submitForm = async () => { + formLoading.value = true + try { + const data = formData.value + if (formType.value === 'create') { + await DiagnosisTemplateApi.create(data) + message.success(t('common.createSuccess')) + } else if (formType.value === 'update') { + await DiagnosisTemplateApi.update(data) + message.success(t('common.updateSuccess')) + } + dialogVisible.value = false + emit('success') + } finally { + formLoading.value = false + } +} /** 钩子方法 **/ onMounted(async () => { //ceshi + orgList.value = await DiagnosisTemplateApi.getOrgList() doctorList.value = await DiagnosisTemplateApi.getDoctorList() }) @@ -148,7 +199,7 @@ console.log(formData0) //console.log(null) /** 导出内容 **/ -defineExpose({ openTest }) +defineExpose({ open, openTest }) /** * 备注: * diff --git a/src/views/applyregistration/diagnosisTemplate/index.vue b/src/views/applyregistration/diagnosisTemplate/index.vue index aabcc97a..9e75c29f 100644 --- a/src/views/applyregistration/diagnosisTemplate/index.vue +++ b/src/views/applyregistration/diagnosisTemplate/index.vue @@ -41,7 +41,7 @@ <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" /> 搜索 </el-button> - <el-button type="primary" plain @click="openFormTest()"> + <el-button type="primary" plain @click="openForm('create')"> <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> @@ -60,13 +60,16 @@ :data="list_templates" height="max(53vh,80px)" > + <el-table-column type="index" label="序号" align="center" width="50px" /> <el-table-column label="节点" align="center" prop="templateName" /> <el-table-column label="所见" align="center" prop="examDescription" /> <el-table-column label="所得" align="center" prop="diagResults" /> <el-table-column label="操作" align="center"> - <template #default> - <el-button link type="primary"> 编辑 </el-button> - <el-button link type="danger"> 删除 </el-button> + <template #default="scope"> + <el-button link type="primary" @click="openForm('update', scope.row.id)"> + 编辑 + </el-button> + <el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button> </template> </el-table-column> <!-- 数据列 --> @@ -129,6 +132,21 @@ const loading = ref(false) /****** 自定义内容 ******/ /****** 可参考内容 ******/ + +/** 组件事件 **/ +const openForm = (type: string, id?: any) => { + formRef.value.open(type, id) +} + +const handleDelete = async (id: any) => { + try { + await message.delConfirm() + await DiagnosisTemplateApi.delete(id) + message.success(t('common.delSuccess')) + await getList() + } catch {} +} + const getList = async () => { loading.value = true try { @@ -139,19 +157,14 @@ const getList = async () => { loading.value = false } } + const handleQuery = () => { queryParams.value.pageNo = 1 getList() } -const openFormTest = () => { - formRef.value.openTest() -} - -/** 组件事件 **/ /** 钩子方法 **/ onMounted(() => { - //ceshi getList() }) diff --git a/src/views/applyregistration/exampartManage/ExampartManageForm.vue b/src/views/applyregistration/exampartManage/ExampartManageForm.vue index 33aa87c0..23168f8d 100644 --- a/src/views/applyregistration/exampartManage/ExampartManageForm.vue +++ b/src/views/applyregistration/exampartManage/ExampartManageForm.vue @@ -1,6 +1,6 @@ <template> <div> - <Dialog title="弹出框" v-model="dialogVisible" width="45%"> + <Dialog :title="dialogTitle" v-model="dialogVisible" width="45%"> <el-form ref="formRef" :model="formData" @@ -9,6 +9,7 @@ label-position="right" label-suffix="" class="-ml-30px" + v-loading="formLoading" > <el-row> <el-col :span="24"> @@ -70,7 +71,7 @@ <template #footer> <div style="text-align: center"> - <el-button type="primary" @click="submitForm">保存</el-button> + <el-button type="primary" :disabled="formLoading" @click="submitForm">保存</el-button> <el-button @click="dialogVisible = false">取消</el-button> </div> </template> @@ -89,6 +90,7 @@ defineOptions({ name: 'ExampartManageForm' }) * ExampartManageForm **/ /** 导入内容 **/ +const emit = defineEmits(['success']) /** 组件引用 **/ const formRef = ref() @@ -96,8 +98,11 @@ const formRef = ref() /** 数据结构 **/ const message = useMessage() const { t } = useI18n() -const orgList = ref<any[]>([]) const dialogVisible = ref(false) +const dialogTitle = ref('') +const formLoading = ref(false) +const formType = ref('') +const orgList = ref<any[]>([]) //表单核心 const formData0 = ref({ pageNo: 1, @@ -107,47 +112,87 @@ const formData0 = ref({ }) const formData = ref({ /** 测试数据 **/ + id: '', examPartCode: '', examPartName: '', - orgId: '', - remark: '' + remark: '', + orgId: '' }) /****** 自定义内容 ******/ +const resetForm = async () => { + formData.value = { + /** 测试数据 **/ + id: '', + examPartCode: '', + examPartName: '', + remark: '', + orgId: '' + } + formRef.value?.clearValidate() +} + +const open = async (type: string, id?: number) => { + dialogVisible.value = true + dialogTitle.value = t('action.' + type) + formType.value = type + resetForm() + if (id) { + formLoading.value = true + try { + formData.value = await ExampartManageApi.get(id) + } finally { + formLoading.value = false + } + } +} + /****** 可参考内容 ******/ -const emit = defineEmits(['success']) +/** 组件事件 **/ const submitForm = async () => { + formLoading.value = true try { const data = formData.value - await ExampartManageApi.create(data) + //校验 + if (!data.examPartCode) { + await message.alertWarning('请输入检查部位编码') + return + } + if (!data.examPartName) { + await message.alertWarning('请输入检查部位名称') + return + } + if (!data.orgId) { + await message.alertWarning('请选择机构') + return + } + //更新 + if (formType.value === 'create') { + await ExampartManageApi.create(data) + message.success(t('common.createSuccess')) + } else if (formType.value === 'update') { + await ExampartManageApi.update(data) + message.success(t('common.updateSuccess')) + } dialogVisible.value = false emit('success') } finally { + formLoading.value = false } } -const openTest = () => { - dialogVisible.value = true - //清空内容 -} - -/** 组件事件 **/ /** 钩子方法 **/ onMounted(async () => { - //ceshi orgList.value = await ExampartManageApi.getOrgList() }) /** 防空作用域 **/ console.log(dateFormatter) -console.log(message) -console.log(t) -console.log(ExampartManageApi) console.log(formData0) //console.log(null) /** 导出内容 **/ -defineExpose({ openTest }) +defineExpose({ open }) /** * 备注: * diff --git a/src/views/applyregistration/exampartManage/index.vue b/src/views/applyregistration/exampartManage/index.vue index 4edf142a..6996d1a1 100644 --- a/src/views/applyregistration/exampartManage/index.vue +++ b/src/views/applyregistration/exampartManage/index.vue @@ -38,7 +38,7 @@ <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" /> 搜索 </el-button> - <el-button type="primary" plain @click="openFormTest()"> + <el-button type="primary" plain @click="openForm('create')"> <Icon icon="ep:plus" class="mr-5px" /> 新增 </el-button> </el-form-item> @@ -57,13 +57,16 @@ :data="list_examparts" height="max(53vh,80px)" > + <el-table-column type="index" label="序号" align="center" width="54px" /> <el-table-column label="检查部位编码" align="center" prop="examPartCode" /> <el-table-column label="检查部位名称" align="center" prop="examPartName" /> <el-table-column label="备注" align="center" prop="remark" /> <el-table-column label="操作" align="center"> - <template #default> - <el-button link type="primary"> 编辑 </el-button> - <el-button link type="danger"> 删除 </el-button> + <template #default="scope"> + <el-button link type="primary" @click="openForm('update', scope.row.id)"> + 编辑 + </el-button> + <el-button link type="danger" @click="handleDelete(scope.row.id)"> 删除 </el-button> </template> </el-table-column> <!-- 数据列 --> @@ -122,10 +125,24 @@ const queryParams = ref({ //表格核心 const list_examparts = ref<any[]>([]) const total = ref(0) -const loading = ref(false) +const loading = ref(true) /****** 自定义内容 ******/ /****** 可参考内容 ******/ +/** 组件事件 **/ +const openForm = (type: string, id?: any) => { + formRef.value.open(type, id) +} + +const handleDelete = async (id: any) => { + try { + await message.delConfirm() + await ExampartManageApi.delete(id) + message.success(t('common.delSuccess')) + await getList() + } catch {} +} + const getList = async () => { loading.value = true try { @@ -136,31 +153,21 @@ const getList = async () => { loading.value = false } } + const handleQuery = () => { queryParams.value.pageNo = 1 getList() } -const openFormTest = () => { - formRef.value.openTest() -} - -/** 组件事件 **/ /** 钩子方法 **/ onMounted(() => { - //ceshi getList() }) /** 防空作用域 **/ console.log(dateFormatter) console.log(download) -console.log(message) -console.log(t) -console.log(ExampartManageApi) -console.log(ExampartManageForm) console.log(queryParams0) -console.log(openFormTest) //console.log(null) /** 导出内容 **/ diff --git a/src/views/applyregistration/illnessCase/index.vue b/src/views/applyregistration/illnessCase/index.vue index 6c352fb3..769646e7 100644 --- a/src/views/applyregistration/illnessCase/index.vue +++ b/src/views/applyregistration/illnessCase/index.vue @@ -2,7 +2,7 @@ <div> <el-row> <el-col :span="24"> - <el-card shadow="never" style="margin-bottom: 8px"> + <el-card shadow="never" style="margin-bottom: 4px"> <el-form ref="queryFormRef" :model="queryParams" @@ -13,49 +13,59 @@ class="-mb-15px" > <el-row> - <el-col :span="5"> - <!-- Notes: --> - <el-form-item label="开始日期" prop="it_1" class="item-style date-picker"> - <el-date-picker - v-model="queryParams.it_1" - type="date" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="请选择开始日期" - class="item-width" - /> - </el-form-item> - </el-col> - <el-col :span="4"> - <!-- Notes: --> - <el-form-item label="" label-width="0px" prop="it_2" class="item-style date-picker"> - <el-date-picker - v-model="queryParams.it_2" - type="date" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="请选择结束日期" + <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"> - <!-- Notes: --> - <el-form-item label="报告状态" prop="it_3" class="item-style"> - <el-select - v-model="queryParams.it_3" - placeholder="请选择报告状态" + <el-form-item label="检查号" prop="examId" class="item-style"> + <el-input + v-model="queryParams.examId" + placeholder="请输入检查号" clearable class="item-width" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> + /> </el-form-item> </el-col> - <el-col :span="7"> + <el-col :span="5"> <!-- Notes: --> - <el-form-item label="患者来源" prop="it_4" class="item-style"> - <el-radio-group v-model="queryParams.it_4" class="item-width radio-group"> + <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"> + <!-- Notes: --> + <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"> + <!-- Notes: --> + <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 > @@ -67,62 +77,95 @@ </el-col> </el-row> <el-row> - <el-col :span="9"> + <el-col :span="8"> <!-- Notes: --> - <el-form-item label="检查设备" prop="it_5" class="item-style"> + <el-form-item label="影像设备" prop="deviceName" class="item-style"> <el-select - v-model="queryParams.it_5" - placeholder="请选择检查设备" + v-model="queryParams.deviceName" + placeholder="请选择影像设备" clearable class="item-width" > <el-option v-for="item in deviceList" - :key="item.value" - :label="item.label" - :value="item.value" + :key="item.deviceId" + :label="item.deviceName" + :value="item.deviceName" /> </el-select> </el-form-item> </el-col> <el-col :span="8"> <!-- Notes: --> - <el-form-item label="检查部位" prop="it_6" class="item-style"> + <el-form-item label="设备类型" prop="deviceType" class="item-style"> <el-select - v-model="queryParams.it_6" + 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"> + <!-- Notes: --> + <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"> + <!-- Notes: --> + <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.value" - :label="item.label" - :value="item.value" + :key="item.examItemCode" + :label="item.examItemName" + :value="item.examItemName" /> </el-select> </el-form-item> </el-col> - <el-col :span="7"> + <el-col :span="8"> <!-- Notes: --> - <el-form-item label="阳性" prop="it_7" class="item-style"> - <el-radio-group v-model="queryParams.it_7" 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: 4px">阳性</el-radio> - </el-radio-group> + <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="9"> + <el-col :span="8"> <!-- Notes: --> - <el-form-item label="姓名" prop="it_8" class="item-style"> + <el-form-item label="患者姓名" prop="pname" class="item-style"> <el-input - v-model="queryParams.it_8" - placeholder="请输入姓名" + v-model="queryParams.pname" + placeholder="请输入患者姓名" clearable class="item-width" /> @@ -130,23 +173,22 @@ </el-col> <el-col :span="4"> <!-- Notes: --> - <el-form-item label="性别" prop="it_9" class="item-style"> + <el-form-item label="性别" prop="gender" class="item-style"> <el-select - v-model="queryParams.it_9" + v-model="queryParams.gender" placeholder="请选择性别" clearable class="item-width" > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> + <el-option label="男" value="男" /> + <el-option label="女" value="女" /> </el-select> </el-form-item> </el-col> <el-col - :span="7" :offset="4" - style="text-align: left; padding-left: 8px; margin-bottom: 6px" + :span="8" + style="text-align: left; padding-left: 10px; margin-bottom: 6px" > <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-5px" /> 搜索 @@ -158,31 +200,58 @@ </el-col> </el-row> <el-row> - <el-col :span="15"> + <el-col :span="16"> <el-card shadow="never" style="min-height: 400px"> <el-table - v-loading="loading_patExamitems" + v-loading="loading" size="small" border + fit :stripe="true" :show-overflow-tooltip="true" - :data="list" + :data="list_IllnessCase" height="max(45vh,330px)" - @row-click="handleRowClick" + @row-click="handleRowClick" > - <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 type="index" label="序号" align="center" width="54px" /> + <el-table-column label="登记号" align="center" prop="regId" width="120px" /> + <el-table-column label="检查号" align="center" prop="examId" width="120px" /> + <el-table-column label="患者姓名" align="center" prop="pname" width="100px" /> + <el-table-column label="性别" align="center" prop="gender" width="48px" /> <el-table-column label="出生日期" align="center" prop="birthday" :formatter="dateFormatter2" - width="180px" + width="90px" /> - <el-table-column label="机构ID" align="center" prop="orgId" v-if="false" /> - <el-table-column label="登记单号" align="center" prop="regId" /> + <el-table-column + label="检查日期" + align="center" + prop="examDate" + :formatter="dateFormatter2" + width="90px" + /> + <el-table-column + label="检查部位" + header-align="center" + prop="examItemName" + width="160px" + /> + <el-table-column + label="影像设备" + header-align="center" + prop="deviceName" + width="160px" + /> + <el-table-column label="阴性阳性" align="center" prop="diagFlag"> + <template #default="scope"> + <el-tag v-if="scope.row.diagFlag == '0'">阴性</el-tag> + <el-tag v-else-if="scope.row.diagFlag == '1'">阳性</el-tag> + <el-tag v-else-if="scope.row.diagFlag == '2'">重大阳性</el-tag> + <el-tag type="danger" v-else>暂无</el-tag> + </template> + </el-table-column> <!-- 数据列 --> </el-table> <div style="display: flex; justify-content: center"> @@ -192,11 +261,12 @@ :total="total" v-model:page="queryParams.pageNo" v-model:limit="queryParams.pageSize" + @pagination="getList" /> </div> </el-card> </el-col> - <el-col :span="9"> + <el-col :span="8"> <el-card shadow="never" style="height: 100%" class="ml-1"> <el-scrollbar> <el-form size="small" label-width="68px" label-position="top" label-suffix=""> @@ -239,7 +309,7 @@ import { dateFormatter, dateFormatter2 } from '@/utils/formatTime' import download from '@/utils/download' import { IllnessCaseApi } from '@/api/applyregistration/illnessCase' -import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist' + defineOptions({ name: 'IllnessCase' }) /* * 李传洋 @@ -264,101 +334,69 @@ const queryParams0 = ref({ doctorName: undefined, departmentName: undefined }) - const queryParams = ref({ pageNo: 1, pageSize: 10, - examId: undefined, - pname: undefined, - gender: undefined, - birthday: undefined, - examDate: [], - deviceType: '', - 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: [], - regId: '', /** 测试数据 **/ - it_1: '', - it_2: '', - it_3: '', - it_4: '', - it_5: '', - it_6: '', - it_7: '', - it_8: '', - it_9: '' + regId: '', + examId: '', + examDate_ge: '', + examDate_le: '', + deviceType: '', + deviceName: '', + diagFlag: '', + examItemName: '', + reportstatus: '', + pname: '', + gender: '' }) -// 列表的总页数 +//表格核心 +const list_IllnessCase = ref<any[]>([]) const total = ref(0) -const loading_patExamitems = ref(false) -// 列表的数据 -const list = ref<PatientexamlistVO[]>([]) - -/** 查询列表 */ -const getList = async () => { - resetForm() - loading_patExamitems.value = true - try { - const data = await PatientexamlistApi.getPatientexamlistPage(queryParams) - list.value = data.list - total.value = data.total - } finally { - loading_patExamitems.value = false - } -} -// 行点击事件 -const handleRowClick = (row) => { - //所见 - examitemsDesc .value= row.examDescription - //所得 - diagnosisDesc.value = row.diagResults -} - - -/** 搜索按钮操作 */ -const handleQuery = () => { - queryParams.value.pageNo = 1 - //获取到当前登陆用户的机构时 要进行赋值 - queryParams.value.orgId = '' - queryParams.value.highLevelOrgId = '' - getList() -} -/** 重置表单 */ -const resetForm = () => { - list.value = [] - examitemsDesc.value='' - diagnosisDesc.value='' -} +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) + console.log('---------------------') + console.log(data.list) + 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 : '' +} /** 钩子方法 **/ -onMounted(() => { +onMounted(async () => { + deviceList.value = await IllnessCaseApi.getDeviceList() + examitemsList.value = await IllnessCaseApi.getExamitemsList() getList() }) /** 防空作用域 **/ console.log(dateFormatter) console.log(download) -console.log(IllnessCaseApi) console.log(message) console.log(t) console.log(queryParams0) diff --git a/src/views/applyregistration/reportPrintStatistics/index.vue b/src/views/applyregistration/reportPrintStatistics/index.vue index ec767a8c..c40a9b92 100644 --- a/src/views/applyregistration/reportPrintStatistics/index.vue +++ b/src/views/applyregistration/reportPrintStatistics/index.vue @@ -12,11 +12,35 @@ label-suffix="" class="mb-2px -ml-14px" > + <el-row> + <el-col :span="24"> + <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-row> + <el-row> + <el-col :span="24"> + <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-row> <el-row> <el-col :span="13"> - <el-form-item label="日期" prop="it_1" class="item-style date-picker"> + <el-form-item label="检查日期" prop="examDate_ge" class="item-style date-picker"> <el-date-picker - v-model="queryParams.it_1" + v-model="queryParams.examDate_ge" type="date" value-format="YYYY-MM-DD HH:mm:ss" placeholder="开始日期" @@ -28,11 +52,11 @@ <el-form-item label="" label-width="0px" - prop="it_1a" + prop="examDate_le" class="item-style date-picker" > <el-date-picker - v-model="queryParams.it_1a" + v-model="queryParams.examDate_le" type="date" value-format="YYYY-MM-DD HH:mm:ss" placeholder="结束日期" @@ -43,59 +67,29 @@ </el-row> <el-row> <el-col :span="24"> - <el-form-item label="设备" prop="it_2" class="item-style"> + <el-form-item label="影像设备" prop="deviceName" class="item-style"> <el-select - v-model="queryParams.it_2" + v-model="queryParams.deviceName" placeholder="请选择设备" clearable class="item-width" > <el-option v-for="item in deviceList" - :key="item.value" - :label="item.label" - :value="item.value" + :key="item.deviceId" + :label="item.deviceName" + :value="item.deviceName" /> </el-select> </el-form-item> </el-col> </el-row> - <el-row> - <el-col :span="13"> - <el-form-item label="类别" prop="it_3" class="item-style"> - <el-select - v-model="queryParams.it_3" - placeholder="请选择类别" - clearable - class="item-width" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="11"> - <el-form-item label="打印" label-width="44px" prop="it_4" class="item-style"> - <el-select - v-model="queryParams.it_4" - placeholder="请选择打印" - clearable - class="item-width" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> - </el-form-item> - </el-col> - </el-row> <el-row> <el-col :span="24"> - <el-form-item label="检查号" prop="it_5" class="item-style"> + <el-form-item label="患者姓名" prop="pname" class="item-style"> <el-input - v-model="queryParams.it_5" - placeholder="请输入检查号" + v-model="queryParams.pname" + placeholder="请输入患者姓名" clearable class="item-width" /> @@ -108,9 +102,9 @@ <el-button @click="handleQuery"> <Icon icon="ep:search" class="mr-2px" /> 搜索 </el-button> - <!-- <el-button type="primary" plain> + <el-button type="primary" plain> <Icon icon="ep:printer" class="mr-2px" /> 打印 - </el-button> --> + </el-button> </div> </el-col> </el-row> @@ -121,23 +115,49 @@ border :stripe="true" :show-overflow-tooltip="true" - :data="list" - height="max(43vh,294px)" + :data="list_infos" + height="max(30vh,294px)" @row-click="handleRowClick" > - <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 type="index" label="序号" align="center" width="54px" /> + <el-table-column label="登记号" align="center" prop="regId" width="120px" /> + <el-table-column label="检查号" align="center" prop="examId" width="120px" /> + <el-table-column label="患者姓名" align="center" prop="pname" width="100px" /> + <el-table-column label="性别" align="center" prop="gender" width="48px" /> <el-table-column label="出生日期" align="center" prop="birthday" :formatter="dateFormatter2" - width="180px" + width="90px" /> - <el-table-column label="机构ID" align="center" prop="orgId" v-if="false" /> - <el-table-column label="登记单号" align="center" prop="regId" /> + <el-table-column + label="检查日期" + align="center" + prop="examDate" + :formatter="dateFormatter2" + width="90px" + /> + <el-table-column + label="检查部位" + header-align="center" + prop="examItemName" + width="160px" + /> + <el-table-column + label="影像设备" + header-align="center" + prop="deviceName" + width="160px" + /> + <el-table-column label="阴性阳性" align="center" prop="diagFlag"> + <template #default="scope"> + <el-tag v-if="scope.row.diagFlag == '0'">阴性</el-tag> + <el-tag v-else-if="scope.row.diagFlag == '1'">阳性</el-tag> + <el-tag v-else-if="scope.row.diagFlag == '2'">重大阳性</el-tag> + <el-tag type="danger" v-else>暂无</el-tag> + </template> + </el-table-column> <!-- 数据列 --> </el-table> <div style="display: flex; justify-content: center"> @@ -166,266 +186,104 @@ > <el-row> <el-col :span="13"> - <el-form-item label="检查号" prop="it_1" class="item-style"> + <el-form-item label="检查号" prop="examId" class="item-style"> <el-input - v-model="infoParams.it_1" + v-model="infoParams.examId" clearable - :readonly="true" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> </el-col> <el-col :span="11"> - <el-form-item label="病例号" prop="it_2" class="item-style"> + <el-form-item label="病例号" prop="regId" class="item-style"> <el-input - v-model="infoParams.it_2" + v-model="infoParams.regId" clearable - :readonly="true" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> </el-col> </el-row> - <el-row> - <!-- <el-col :span="6"> - <el-form-item label="类别" prop="it_3" class="item-style"> - <el-select - v-model="infoParams.it_3" - placeholder="" - clearable - :disabled="true" - class="item-width" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> - </el-form-item> - </el-col> --> - <!-- <el-col :span="7"> - <el-form-item label="床号" prop="it_4" class="item-style"> - <el-input - v-model="infoParams.it_4" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - <!-- <el-col :span="2"> - <el-form-item label="" label-width="4px" prop="it_5" class="item-style"> - <el-checkbox v-model="infoParams.it_5" label="初诊" :disabled="true" /> - </el-form-item> - </el-col> - <el-col :span="9"> - <el-form-item label="备注" label-width="64px" prop="it_6" class="item-style"> - <el-input - v-model="infoParams.it_6" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - </el-row> <el-row> <el-col :span="13"> - <el-form-item label="姓名" prop="it_7" class="item-style"> + <el-form-item label="姓名" prop="pname" class="item-style"> <el-input - v-model="infoParams.it_7" + v-model="infoParams.pname" clearable - :readonly="true" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> </el-col> - <el-col :span="5"> - <el-form-item label="性别" prop="it_8" class="item-style"> + <el-col :span="6"> + <el-form-item label="性别" prop="gender" class="item-style"> <el-select - v-model="infoParams.it_8" + v-model="infoParams.gender" placeholder="" clearable - :disabled="true" + :disabled="diagnosisInfo_readonly" class="item-width" > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> + <el-option label="男" value="男" /> + <el-option label="女" value="女" /> </el-select> </el-form-item> </el-col> - <!-- <el-col :span="6"> - <el-form-item label="婚否" prop="it_9" class="item-style"> - <el-select - v-model="infoParams.it_9" - placeholder="" - clearable - :disabled="true" - class="item-width" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> - </el-form-item> - </el-col> --> </el-row> <el-row> - <el-col :span="7"> - <el-form-item label="生日" prop="it_10" class="item-style date-picker"> + <el-col :span="13"> + <el-form-item label="出生日期" prop="birthday" class="item-style date-picker"> <el-date-picker - v-model="infoParams.it_10" + v-model="infoParams.birthday" type="date" - :readonly="true" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> </el-col> - <el-col :span="8"> - <el-form-item label="年龄" prop="it_11" class="item-style"> + <el-col :span="6"> + <el-form-item label="年龄" class="item-style"> <el-input v-model="age" clearable - :readonly="true" + :readonly="diagnosisInfo_readonly" class="item-width" > - <!-- <template #append> - <el-select - v-model="infoParams.it_11a" - placeholder="" - clearable - :disabled="true" - style="width: 90px" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> - </template> --> + <template #append>岁</template> </el-input> </el-form-item> </el-col> - <!-- <el-col :span="9"> - <el-form-item label="临床诊断" label-width="64px" prop="it_12" class="item-style"> - <el-input - v-model="infoParams.it_12" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> </el-row> <el-row> <el-col :span="13"> - <el-form-item label="科室" prop="it_13" class="item-style"> + <el-form-item label="送检科室" prop="billDoctorDepartment" class="item-style"> <el-input v-model="infoParams.billDoctorDepartment" clearable - :readonly="true" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> </el-col> - <el-col :span="11"> + <el-col :span="11" v-if="false"> <el-form-item label="申请医生" prop="it_14" class="item-style"> - <el-input - v-model="infoParams.it_14" - clearable - :readonly="true" - class="item-width" - /> + <el-input clearable :readonly="true" class="item-width" /> </el-form-item> </el-col> </el-row> - <el-row> - <el-col :span="7"> - <el-form-item label="申请日期" prop="it_15" class="item-style date-picker"> - <el-date-picker - v-model="infoParams.it_15" - type="datetime" - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> - <!-- <el-col :span="17"> - <el-form-item label="末次月经" prop="it_16" class="item-style"> - <el-input - v-model="infoParams.it_16" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - </el-row> - <el-row> - <!-- <el-col :span="7"> - <el-form-item label="孕次" prop="it_17" class="item-style"> - <el-input - v-model="infoParams.it_17" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - <!-- <el-col :span="6"> - <el-form-item label="产次" prop="it_18" class="item-style"> - <el-input - v-model="infoParams.it_18" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - <!-- <el-col :span="11"> - <el-form-item label="避孕方式" prop="it_19" class="item-style"> - <el-select - v-model="infoParams.it_19" - placeholder="" - clearable - :disabled="true" - class="item-width" - > - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - <el-option label="xxxxx" value="xxxxx" /> - </el-select> - </el-form-item> - </el-col> --> - </el-row> - <el-row> - <!-- <el-col :span="13"> - <el-form-item label="活检部位" prop="it_20" class="item-style"> - <el-input - v-model="infoParams.it_20" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - <!-- <el-col :span="11"> - <el-form-item label="HP" prop="it_21" class="item-style"> - <el-input - v-model="infoParams.it_21" - clearable - :readonly="true" - class="item-width" - /> - </el-form-item> - </el-col> --> - </el-row> <el-row> <el-col :span="13"> - <el-form-item label="建议" prop="it_22" class="item-style"> - <el-input - v-model="infoParams.it_22" - clearable - :readonly="true" + <el-form-item + label="检查日期" + prop="applicationDate" + class="item-style date-picker" + > + <el-date-picker + v-model="infoParams.applicationDate" + type="datetime" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> @@ -433,12 +291,12 @@ </el-row> <el-row> <el-col :span="24"> - <el-form-item label="所见" prop="it_23" class="item-style"> + <el-form-item label="所见" prop="examDescription" class="item-style"> <el-input - v-model="infoParams.it_23" + v-model="infoParams.examDescription" type="textarea" - :autosize="{ minRows: 4, maxRows: 6 }" - :readonly="true" + :autosize="{ minRows: 6, maxRows: 9 }" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> @@ -446,12 +304,12 @@ </el-row> <el-row> <el-col :span="24"> - <el-form-item label="结论" prop="it_24" class="item-style"> + <el-form-item label="结论" prop="diagResults" class="item-style"> <el-input - v-model="infoParams.it_24" + v-model="infoParams.diagResults" type="textarea" - :autosize="{ minRows: 4, maxRows: 6 }" - :readonly="true" + :autosize="{ minRows: 6, maxRows: 9 }" + :readonly="diagnosisInfo_readonly" class="item-width" /> </el-form-item> @@ -460,36 +318,47 @@ </el-form> </el-tab-pane> <el-tab-pane label="报告单" name="reportInfo"> - <!--报告区域--> <div class="flex-center" id="printMe" style="height: calc(100% - 15px)"> <div class="ultrasound-report" id="PDF"> <h2>超声检查报告单</h2> <hr /> <div class="patient-info"> - <p class="info-item">姓名:{{infoParams.it_7}}</p> - <p class="info-item">送检科室:{{infoParams.billDoctorDepartment}}</p> - <p class="info-item">门诊号:{{infoParams.it_2}}</p> - <p class="info-item">性别:{{infoParams.it_8}}</p> - <p class="info-item">年龄:{{age}}</p> - <p class="info-item">设备:{{ infoParams.deviceName}}</p> - <p class="info-item">检查号:{{infoParams.it_1 }}</p> - <p class="info-item">检查类型:{{infoParams.examItemName }}</p> + <p class="info-item">姓名:{{ infoParams.pname }}</p> + <p class="info-item">送检科室:{{ infoParams.billDoctorDepartment }}</p> + <p class="info-item">门诊号:{{ infoParams.regId }}</p> + <p class="info-item">性别:{{ infoParams.gender }}</p> + <p class="info-item">年龄:{{ age }}</p> + <p class="info-item">设备:{{ infoParams.deviceName }}</p> + <p class="info-item">检查号:{{ infoParams.examId }}</p> + <p class="info-item">检查类型:{{ infoParams.examItemName }}</p> </div> <hr /> - <!-- 图片展示区域 --> <h3>超声图像:</h3> <div class="image-gallery"> - <div class="image-item-container" v-for="image in reportimages" :key="image.id"> - <img :src="image.imgUrl" alt="" style="width: 180px; height: 180px" /> + <div v-for="image in reportimages" :key="image.id"> + <img + alt="" + style="width: 140px; height: 140px" + :src="image.imgUrl" + v-if="false" + /> + <el-image + alt="" + fit="fill" + style="width: 99%; height: 99%" + :src="image.imgUrl" + :preview-src-list="[image.imgUrl]" + v-if="true" + /> </div> </div> <div class="ultrasound-findings"> <h3>超声所见:</h3> - <p>{{infoParams.it_23}}</p> + <p>{{ infoParams.examDescription }}</p> </div> <div class="ultrasound-recommendation"> <h3>超声提示:</h3> - <p>{{infoParams.it_24}}</p> + <p>{{ infoParams.diagResults }}</p> </div> <div style="position: absolute; bottom: 20px; right: 20px"> <p>医生签名:{{}}</p> @@ -521,8 +390,8 @@ import { dateFormatter, dateFormatter2 } from '@/utils/formatTime' import download from '@/utils/download' import { ReportPrintStatisticsApi } from '@/api/applyregistration/reportPrintStatistics' -import { PatientexamlistApi, PatientexamlistVO } from '@/api/tblist/patientexamlist' -import { ultrasoniccomApi, updateexamineimageVO } from '@/api/ultrasoniccom' +import { ultrasoniccomApi } from '@/api/ultrasoniccom' + defineOptions({ name: 'ReportPrintStatistics' }) /* * 李传洋 @@ -538,9 +407,10 @@ const infoFormRef = ref() const message = useMessage() const { t } = useI18n() const activeTabName = ref('diagnosisInfo') +const diagnosisInfo_readonly = ref(true) const deviceList = ref<any[]>([]) -// 列表的总页数 -const total = ref(0) +const reportimages = ref<any[]>([]) +const age = ref<any>('') //表单核心 const queryParams0 = ref({ pageNo: 1, @@ -551,168 +421,113 @@ const queryParams0 = ref({ const queryParams = ref({ pageNo: 1, pageSize: 10, - examId: undefined, - pname: undefined, - gender: undefined, - birthday: undefined, - examDate: [], - deviceType: '', - 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: [], - regId: '' + /** 测试数据 **/ + regId: '', + examId: '', + examDate_ge: '', + examDate_le: '', + deviceName: '', + deviceType: 'US', //固定默认值 + pname: '' }) -// 计算年龄 -const age = ref() -const calculateAge = (birthdate) => { - if (!birthdate) { - age.value = null - return - } - const today = new Date() - const birth = new Date(birthdate) - - let yearsDiff = today.getFullYear() - birth.getFullYear() - - // Check if the birthday hasn't occurred yet this year - const hasBirthdayPassed = - today.getMonth() > birth.getMonth() || - (today.getMonth() === birth.getMonth() && today.getDate() >= birth.getDate()) - - if (!hasBirthdayPassed) { - yearsDiff-- - } - - age.value = yearsDiff - -} -// 列表的数据 -const list = ref<PatientexamlistVO[]>([]) - -/** 查询列表 */ -const getList = async () => { - loading.value = true - try { - queryParams.deviceType = 'US' - const data = await PatientexamlistApi.getPatientexamlistPage(queryParams) - list.value = data.list - total.value = data.total - } finally { - loading.value = false - } -} - -/** 搜索按钮操作 */ -const handleQuery = () => { - queryParams.value.pageNo = 1 - queryParams.value.deviceType = 'US' - //获取到当前登陆用户的机构时 要进行赋值 - queryParams.value.orgId = '' - queryParams.value.highLevelOrgId = '' - getList() -} -//报告的查询 -//选择图片集合 -const reportimages = ref<any[]>([]) -// 加载选择的三个图片 -const loadimage = async (orgId:string,regId:string) => { - const imageslist = await ultrasoniccomApi.getimageslist(orgId, regId, '1') - console.log(imageslist) - reportimages.value = imageslist -} -// 行点击事件 -const handleRowClick = (row) => { - //所见 - infoParams.value.it_23 = row.examDescription - //所得 - infoParams.value.it_24 = row.diagResults - //姓名 - infoParams.value.it_7 = row.pname - //性别 - infoParams.value.it_8 = row.gender - // 生日 - infoParams.value.it_10 = row.birthday - //病例号 - infoParams.value.it_2 = row.examId - //检查号 - infoParams.value.it_1 = row.regId - //申请日期 - infoParams.value.it_15 = row.applicationDate - //科室 - infoParams.value.billDoctorDepartment= row.billDoctorDepartment - //设备 - infoParams.value.deviceName= row.deviceName - //年龄 - calculateAge(row.birthday) - //检查类型 - infoParams.value.examItemName=row.examItemName - - loadimage(row.orgId,row.regId) -} - - const infoParams0 = ref({ doctorName: undefined, departmentName: undefined }) const infoParams = ref({ /** 测试数据 **/ - it_1: '', - it_2: '', - it_3: '', - it_4: '', - it_5: '', - it_6: '', - it_7: '', - it_8: '', - it_9: '', - it_10: '', - it_11: '', - it_11a: '', - it_12: '', - it_13: '', - it_14: '', - it_15: '', - it_16: '', - it_17: '', - it_18: '', - it_19: '', - it_20: '', - it_21: '', - it_22: '', - it_23: '', - it_24: '', - billDoctorDepartment:'', - deviceName:'', - examItemName:'', + examId: '', + regId: '', + pname: '', + gender: '', + birthday: '', + billDoctorDepartment: '', + applicationDate: '', + examDescription: '', + diagResults: '', + examItemName: '', + deviceName: '' }) //表格核心 const list_infos = ref<any[]>([]) - -const loading = ref(false) +const total = ref(0) +const loading = ref(true) /****** 自定义内容 ******/ -/****** 可参考内容 ******/ +const calculateAge = async (birthdate) => { + if (!birthdate) { + age.value = '' + return + } + const today = new Date() + const birth = new Date(birthdate) + let yearsDiff = today.getFullYear() - birth.getFullYear() + // Check if the birthday hasn't occurred yet this year + const hasBirthdayPassed = + today.getMonth() > birth.getMonth() || + (today.getMonth() === birth.getMonth() && today.getDate() >= birth.getDate()) + if (!hasBirthdayPassed) { + yearsDiff-- + } + age.value = yearsDiff +} +const loadimage = async (orgId: string, regId: string) => { + const imageslist = await ultrasoniccomApi.getimageslist(orgId, regId, '1') + reportimages.value = imageslist +} + +const resetDiagnosisInfo = async () => { + infoParams.value = { + /** 测试数据 **/ + examId: '', + regId: '', + pname: '', + gender: '', + birthday: '', + billDoctorDepartment: '', + applicationDate: '', + examDescription: '', + diagResults: '', + examItemName: '', + deviceName: '' + } + age.value = '' + reportimages.value = [] + infoFormRef.value?.clearValidate() +} + +/****** 可参考内容 ******/ /** 组件事件 **/ +const getList = async () => { + resetDiagnosisInfo() + loading.value = true + try { + const data = await ReportPrintStatisticsApi.getPage(queryParams.value) + list_infos.value = data.list + total.value = data.total + } finally { + loading.value = false + } +} + +const handleQuery = () => { + queryParams.value.pageNo = 1 + getList() +} + +const handleRowClick = (row) => { + resetDiagnosisInfo() + if (row) { + infoParams.value = row + calculateAge(row.birthday) + loadimage(row.orgId, row.regId) + } +} /** 钩子方法 **/ -onMounted(() => { - //ceshi +onMounted(async () => { + deviceList.value = await ReportPrintStatisticsApi.getDeviceList() getList() }) @@ -721,7 +536,6 @@ console.log(dateFormatter) console.log(download) console.log(message) console.log(t) -console.log(ReportPrintStatisticsApi) console.log(queryParams0) console.log(infoParams0) //console.log(null) @@ -781,8 +595,6 @@ console.log(infoParams0) margin: 5px 0; } - - .ultrasound-findings h3, .ultrasound-recommendation h3 { margin-top: 20px; diff --git a/src/views/applyregistration/reservationInfo/index.vue b/src/views/applyregistration/reservationInfo/index.vue index 20acf48f..0dcc6c2f 100644 --- a/src/views/applyregistration/reservationInfo/index.vue +++ b/src/views/applyregistration/reservationInfo/index.vue @@ -2,43 +2,24 @@ <div> <el-row> <el-col :span="10"> - <el-card shadow="never" style="min-height: 540px; height: 76vh"> + <el-card shadow="never" v-loading="formLoading" style="min-height: 540px; height: 76vh"> <el-form - ref="queryFormRef" - :model="queryParams" + ref="infoFormRef" + :model="infoParams" size="small" label-width="68px" label-position="right" label-suffix="" - class="-mb-15px" + class="-mb-10px" + :disabled="infoFormRef_disabled" > - <el-row> - <el-col :span="24"> - <!-- Notes: --> - <el-form-item label="检查设备" prop="it_1" class="item-style"> - <el-select - v-model="queryParams.it_1" - placeholder="请选择检查设备" - clearable - class="item-width" - > - <el-option - v-for="item in deviceList" - :key="item.deviceId" - :label="item.deviceName" - :value="item.deviceId" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> <el-row> <el-col :span="13"> <!-- Notes: --> - <el-form-item label="病例号" prop="it_2" class="item-style"> + <el-form-item label="登记号" prop="regId" class="item-style"> <el-input - v-model="queryParams.it_2" - placeholder="请输入病例号" + v-model="infoParams.regId" + placeholder="请输入登记号" clearable class="item-width" /> @@ -46,14 +27,13 @@ </el-col> <el-col :span="11"> <!-- Notes: --> - <el-form-item label="患者来源" prop="it_3" class="item-style"> + <el-form-item label="患者来源" prop="regSource" class="item-style"> <el-select - v-model="queryParams.it_3" + v-model="infoParams.regSource" placeholder="请选择患者来源" clearable class="item-width" > - <el-option label="全部" value="全部" /> <el-option label="门诊" value="门诊" /> <el-option label="住院" value="住院" /> <el-option label="体检" value="体检" /> @@ -61,144 +41,12 @@ </el-form-item> </el-col> </el-row> - <el-row> - <el-col :span="24"> - <!-- Notes: --> - <el-form-item label="姓名" prop="it_4" class="item-style"> - <el-input - v-model="queryParams.it_4" - placeholder="请输入姓名" - clearable - class="item-width" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="10"> - <!-- Notes: --> - <el-form-item label="性别" prop="it_5" class="item-style"> - <el-select - v-model="queryParams.it_5" - placeholder="请选择性别" - clearable - class="item-width" - > - <el-option label="男" value="1" /> - <el-option label="女" value="2" /> - </el-select> - </el-form-item> - </el-col> - <el-col :span="14"> - <!-- Notes: --> - <el-form-item label="联系电话" prop="it_8" class="item-style"> - <el-input - v-model="queryParams.it_8" - placeholder="请输入联系电话" - clearable - class="item-width" - /> - </el-form-item> - </el-col> - </el-row> <el-row> <el-col :span="13"> <!-- Notes: --> - <el-form-item label="出生日期" prop="it_7" class="item-style date-picker"> - <el-date-picker - v-model="queryParams.it_7" - type="date" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="请选择出生日期" - class="item-width" - /> - </el-form-item> - </el-col> - <el-col :span="11"> - <!-- Notes: --> - <el-form-item label="年龄" prop="it_6" class="item-style"> + <el-form-item label="申请单号" class="item-style"> <el-input - v-model="queryParams.it_6" - placeholder="请输入年龄" - clearable - class="item-width" - > - <template #append>岁</template> - </el-input> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <!-- Notes: --> - <el-form-item label="开单科室" prop="it_9" class="item-style"> - <el-select - v-model="queryParams.it_9" - placeholder="请选择开单科室" - clearable - class="item-width" - > - <el-option - v-for="item in departmentList" - :key="item.departmentCode" - :label="item.departmentName" - :value="item.departmentCode" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="24"> - <!-- Notes: --> - <el-form-item label="开单医生" prop="it_10" class="item-style"> - <el-select - v-model="queryParams.it_10" - placeholder="请选择开单医生" - clearable - class="item-width" - > - <el-option - v-for="item in doctorList" - :key="item.doctorID" - :label="item.doctorName" - :value="item.doctorID" - /> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="13"> - <!-- Notes: --> - <el-form-item label="开单时间" prop="it_11" class="item-style date-picker"> - <el-date-picker - v-model="queryParams.it_11" - type="datetime" - value-format="YYYY-MM-DD HH:mm:ss" - placeholder="请选择开单时间" - class="item-width" - /> - </el-form-item> - </el-col> - <el-col :span="11"> - <!-- Notes: --> - <el-form-item label="床号" prop="it_12" class="item-style"> - <el-input - v-model="queryParams.it_12" - placeholder="请输入床号" - clearable - class="item-width" - /> - </el-form-item> - </el-col> - </el-row> - <el-row> - <el-col :span="13"> - <!-- Notes: --> - <el-form-item label="申请单号" prop="it_13" class="item-style"> - <el-input - v-model="queryParams.it_13" + v-model="examIdFirst" placeholder="申请单号" :disabled="true" class="item-width" @@ -207,11 +55,154 @@ </el-col> </el-row> <el-row> + <el-col :span="24"> + <!-- Notes: --> + <el-form-item label="姓名" prop="pname" class="item-style"> + <el-input + v-model="infoParams.pname" + placeholder="请输入姓名" + clearable + class="item-width" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="10"> + <!-- Notes: --> + <el-form-item label="性别" prop="gender" class="item-style"> + <el-select + v-model="infoParams.gender" + placeholder="请选择性别" + clearable + class="item-width" + > + <el-option label="男" value="男" /> + <el-option label="女" value="女" /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="14"> + <!-- Notes: --> + <el-form-item label="联系电话" prop="contactTel" class="item-style"> + <el-input + v-model="infoParams.contactTel" + placeholder="请输入联系电话" + clearable + class="item-width" + /> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="13"> + <!-- Notes: --> + <el-form-item label="出生日期" prop="birthday" class="item-style date-picker"> + <el-date-picker + v-model="infoParams.birthday" + type="date" + value-format="x" + placeholder="请选择出生日期" + class="item-width" + /> + </el-form-item> + </el-col> + <el-col :span="11" v-if="false"> + <!-- Notes: --> + <el-form-item label="年龄" prop="it_6" class="item-style"> + <el-input placeholder="请输入年龄" clearable class="item-width"> + <template #append>岁</template> + </el-input> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <!-- Notes: --> + <el-form-item label="检查设备" prop="deviceId" class="item-style"> + <el-select + v-model="deviceInfo" + value-key="deviceId" + placeholder="请选择检查设备" + clearable + class="item-width" + @change="deviceInfo_change" + > + <el-option + v-for="item in deviceList" + :key="item.deviceId" + :label="item.deviceName" + :value="item" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <!-- Notes: --> + <el-form-item label="开单科室" prop="billDoctorDepartment" class="item-style"> + <el-select + v-model="infoParams.billDoctorDepartment" + placeholder="请选择开单科室" + clearable + class="item-width" + > + <el-option + v-for="item in departmentList" + :key="item.departmentCode" + :label="item.departmentName" + :value="item.departmentName" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <!-- Notes: --> + <el-form-item label="开单医生" prop="billgDoctor" class="item-style"> + <el-select + v-model="infoParams.billgDoctor" + placeholder="请选择开单医生" + clearable + class="item-width" + > + <el-option + v-for="item in doctorList" + :key="item.doctorID" + :label="item.doctorName" + :value="item.doctorName" + /> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="13"> + <!-- Notes: --> + <el-form-item label="开单时间" prop="regDate" class="item-style date-picker"> + <el-date-picker + v-model="infoParams.regDate" + type="datetime" + value-format="x" + placeholder="请选择开单时间" + class="item-width" + /> + </el-form-item> + </el-col> + <el-col :span="11" v-if="false"> + <!-- Notes: --> + <el-form-item label="床号" prop="it_12" class="item-style"> + <el-input placeholder="请输入床号" clearable class="item-width" /> + </el-form-item> + </el-col> + </el-row> + <el-row v-if="false"> <el-col :span="24"> <!-- Notes: --> <el-form-item label="诊断" prop="it_14" class="item-style"> <el-input - v-model="queryParams.it_14" placeholder="请输入诊断" type="textarea" :autosize="{ minRows: 4 }" @@ -223,28 +214,44 @@ <el-row> <el-col :span="24"> <!-- Notes: --> - <el-form-item label="备注" prop="it_15" class="item-style"> + <el-form-item label="备注" prop="remark" class="item-style"> <el-input - v-model="queryParams.it_15" + v-model="infoParams.remark" placeholder="请输入备注" type="textarea" - :autosize="{ minRows: 4 }" + :autosize="{ minRows: 7 }" class="item-width" /> </el-form-item> </el-col> </el-row> - <el-row> - <el-col :span="24" style="text-align: center; margin-top: 6px; margin-bottom: 10px"> - <el-button type="primary" plain> - <Icon icon="ep:plus" class="mr-5px" /> 新增 - </el-button> - <el-button type="success" plain> - <Icon icon="ep:check" class="mr-5px" /> 保存 - </el-button> - </el-col> - </el-row> </el-form> + <el-row> + <el-col + :span="24" + style="text-align: center; margin-left: 8px; margin-top: 16px; margin-bottom: 10px" + > + <el-button type="primary" size="small" v-show="btnAdd_show" @click="btnAdd_click"> + <Icon icon="ep:plus" class="mr-10px" /> 新增 + </el-button> + <el-button + type="primary" + size="small" + v-show="btnSubmit_show" + @click="btnSubmit_click" + > + <Icon icon="ep:check" class="mr-10px" /> 保存 + </el-button> + <el-button + type="default" + size="small" + v-show="btnCancel_show" + @click="btnCancel_click" + > + <Icon icon="ep:close" class="mr-10px" /> 取消 + </el-button> + </el-col> + </el-row> </el-card> </el-col> @@ -252,7 +259,9 @@ <el-card shadow="never" class="card-right ml-2"> <el-scrollbar> <el-checkbox-group - v-model="queryParams.cks" + v-model="infoParams.examItems" + v-loading="formLoading" + :disabled="infoFormRef_disabled" style=" display: flex; flex-direction: column; @@ -263,10 +272,10 @@ > <el-checkbox v-for="item in examitemsList" - :key="item.id" + :key="item.examItemCode" :label="item.examItemName" - :value="item.id" - style="margin-right: 15px; margin-bottom: -1px" + :value="{ examItemCode: item.examItemCode, examItemName: item.examItemName }" + style="margin-right: 15px; margin-bottom: -8px" /> </el-checkbox-group> </el-scrollbar> @@ -277,8 +286,7 @@ </template> <script setup lang="ts"> -import { dateFormatter } from '@/utils/formatTime' -import download from '@/utils/download' +import { formatDate, dateFormatter } from '@/utils/formatTime' import { ReservationInfoApi } from '@/api/applyregistration/reservationInfo' defineOptions({ name: 'ReservationInfo' }) @@ -289,52 +297,166 @@ defineOptions({ name: 'ReservationInfo' }) /** 导入内容 **/ /** 组件引用 **/ -const queryFormRef = ref() +const infoFormRef = ref() /** 数据结构 **/ const message = useMessage() const { t } = useI18n() +const formLoading = ref(false) const examitemsList = ref<any[]>([]) const doctorList = ref<any[]>([]) const deviceList = ref<any[]>([]) const departmentList = ref<any[]>([]) //表单核心 -const queryParams0 = ref({ +const infoFormRef_disabled = ref(true) +const btnAdd_show = ref(true) +const btnSubmit_show = ref(false) +const btnCancel_show = ref(false) +const infoParams0 = ref({ pageNo: 1, pageSize: 10, doctorName: undefined, departmentName: undefined }) -const queryParams = ref({ - pageNo: 1, - pageSize: 10, +const infoParams = ref({ /** 测试数据 **/ - it_1: '', - it_2: '', - it_3: '', - it_4: '', - it_5: '', - it_6: '', - it_7: '', - it_8: '', - it_9: '', - it_10: '', - it_11: '', - it_12: '', - it_13: '', - it_14: '', - it_15: '', - cks: [] + regId: '', + regSource: '', + examIdBase: '', + pname: '', + gender: '', + contactTel: '', + birthday: '', + deviceId: '', + deviceName: '', + billDoctorDepartment: '', + billgDoctor: '', + regDate: '', + remark: '', + examItems: [] }) +const deviceInfo = ref<any>() +const examIdFirst = ref('') /****** 自定义内容 ******/ +const resetInfoForm = async () => { + infoParams.value = { + /** 测试数据 **/ + regId: '', + regSource: '', + examIdBase: '', + pname: '', + gender: '', + contactTel: '', + birthday: '', + deviceId: '', + deviceName: '', + billDoctorDepartment: '', + billgDoctor: '', + regDate: '', + remark: '', + examItems: [] + } + deviceInfo.value = undefined + examIdFirst.value = '' + infoFormRef.value?.clearValidate() +} + /****** 可参考内容 ******/ /** 组件事件 **/ +const deviceInfo_change = async (value: any) => { + infoParams.value.deviceId = value ? value.deviceId : '' + infoParams.value.deviceName = value ? value.deviceName : '' +} + +const btnAdd_click = async () => { + try { + resetInfoForm() + infoParams.value.examIdBase = formatDate(new Date(), 'YYYYMMDDHHmmssSSS') + '_' + examIdFirst.value = infoParams.value.examIdBase + '1' + btnAdd_show.value = false + btnSubmit_show.value = true + btnCancel_show.value = true + infoFormRef_disabled.value = false + } finally { + } +} + +const btnSubmit_click = async () => { + formLoading.value = true + try { + const data = infoParams.value + console.log('-----------------------') + console.log(data) + //校验 + if (!data.regId) { + await message.alertWarning('请输入登记号') + return + } + if (!data.regSource) { + await message.alertWarning('请选择患者来源') + return + } + if (!data.pname) { + await message.alertWarning('请输入姓名') + return + } + if (!data.gender) { + await message.alertWarning('请选择性别') + return + } + if (!data.contactTel) { + await message.alertWarning('请输入联系电话') + return + } + if (!data.birthday) { + await message.alertWarning('请选择出生日期') + return + } + if (!data.deviceId || !deviceInfo.value) { + await message.alertWarning('请选择检查设备') + return + } + if (!data.billDoctorDepartment) { + await message.alertWarning('请选择开单科室') + return + } + if (!data.billgDoctor) { + await message.alertWarning('请选择开单医生') + return + } + if (!data.regDate) { + await message.alertWarning('请选择开单时间') + return + } + if (!data.examItems || !Array.isArray(data.examItems) || data.examItems.length <= 0) { + await message.alertWarning('请选择右侧检查项目') + return + } + //更新 + await ReservationInfoApi.create(data) + message.success(t('common.createSuccess')) + btnAdd_click() + } finally { + formLoading.value = false + } +} + +const btnCancel_click = async () => { + try { + await message.confirm('确认取消本次新增操作') + resetInfoForm() + btnAdd_show.value = true + btnSubmit_show.value = false + btnCancel_show.value = false + infoFormRef_disabled.value = true + } finally { + } +} /** 钩子方法 **/ onMounted(async () => { - //ceshi examitemsList.value = await ReservationInfoApi.getExamitemsList() doctorList.value = await ReservationInfoApi.getDoctorList() deviceList.value = await ReservationInfoApi.getDeviceList() @@ -343,11 +465,8 @@ onMounted(async () => { /** 防空作用域 **/ console.log(dateFormatter) -console.log(download) -console.log(message) console.log(t) -console.log(ReservationInfoApi) -console.log(queryParams0) +console.log(infoParams0) //console.log(null) /** 导出内容 **/