From d0aa46f87d2c83b07d541178a2025fd91c15b266 Mon Sep 17 00:00:00 2001
From: Euni4U <958079825@qq.com>
Date: Fri, 28 Feb 2025 10:30:21 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=84=E7=95=8C=E9=9D=A2?=
=?UTF-8?q?=E6=B5=8B=E8=AF=95BUG?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/inspect/inspectpatient/index.ts | 1 +
.../Department-entry/Department-entryUI.vue | 10 +-
src/views/inspect/physicalEnroll/index.vue | 183 +++++++-----------
.../project-management/base/createUI.vue | 2 +-
.../exam-package/drawer.vue | 12 +-
.../exam-package/exam-packageUI.vue | 14 +-
6 files changed, 95 insertions(+), 127 deletions(-)
diff --git a/src/api/inspect/inspectpatient/index.ts b/src/api/inspect/inspectpatient/index.ts
index 3eda41a..d383042 100644
--- a/src/api/inspect/inspectpatient/index.ts
+++ b/src/api/inspect/inspectpatient/index.ts
@@ -24,6 +24,7 @@ export interface PatientVO {
auditor: string // 审核人
auditorTime: Date // 审核时间
chargetime: Date // 收费时间
+ headimage: string // 个人信息图片
}
// 患者信息 API
diff --git a/src/views/Department-entry/Department-entryUI.vue b/src/views/Department-entry/Department-entryUI.vue
index 4016295..cd7fe06 100644
--- a/src/views/Department-entry/Department-entryUI.vue
+++ b/src/views/Department-entry/Department-entryUI.vue
@@ -883,15 +883,19 @@ const formattedMedicalDateTime = computed(() => {
}).replace(/\//g, '-')
})
+// 修改年龄计算属性
const age = computed(() => {
- if (!reportData.value.birthday || !Array.isArray(reportData.value.birthday)) return ''
+ if (!reportData.value.birthday) return ''
+
+ // 处理 YYYY-MM-DD 格式的生日
+ const birthDate = new Date(reportData.value.birthday)
+ if (isNaN(birthDate.getTime())) return '' // 日期无效时返回空字符串
- const [year, month, day] = reportData.value.birthday
- const birthDate = new Date(year, month - 1, day) // 注意月份要减1,因为JS中月份从0开始
const today = new Date()
let age = today.getFullYear() - birthDate.getFullYear()
const monthDiff = today.getMonth() - birthDate.getMonth()
+ // 如果还没到生日月份,或者是生日月但还没到具体日期,年龄减1
if (monthDiff < 0 || (monthDiff === 0 && today.getDate() < birthDate.getDate())) {
age--
}
diff --git a/src/views/inspect/physicalEnroll/index.vue b/src/views/inspect/physicalEnroll/index.vue
index b8c4177..21e6c85 100644
--- a/src/views/inspect/physicalEnroll/index.vue
+++ b/src/views/inspect/physicalEnroll/index.vue
@@ -161,28 +161,30 @@
-
+
人像采集
-
+
@@ -398,12 +400,7 @@
体检项目
{
- selectProjectDrawerTabName = 'comboInfo'
- selectProjectDrawerShow = true
- }
- "
+ @click="handleOpenProjectDrawer"
size="small"
style="
margin: 0;
@@ -481,7 +478,11 @@
prop="section"
min-width="180"
show-overflow-tooltip
- />
+ >
+
+ {{ scope.row.section || '暂无科室' }}
+
+
{
try {
// 表单验证
await personParamRef.value.validate()
-
+ var avatar=''
+ if(personParam.value.avatar){
+ avatar= personParam.value.avatar.split(',')[1]
+ }
// 准备患者数据
const patientData: PatientVO = {
id: selectedPatient.value?.id, // 如果是编辑模式,保留原ID
@@ -985,7 +989,8 @@ const handlePersonInfoSave = async () => {
phoneNum: personParam.value.mobile,
status: 0, // 患者登记状态
headPicUrl: personParam.value.avatar,
- medicalDateTime: new Date().getTime() // 修改为时间戳
+ medicalDateTime: new Date().getTime(), // 修改为时间戳
+ headimage: avatar
}
let result
@@ -1007,9 +1012,10 @@ const handlePersonInfoSave = async () => {
price: item.price,
discountedPrice: item.discountPrice,
discounted: item.discount,
- sectionID: item.section,
+ sectionID: item.sectionID,
itemStatus: '0',
- createTime: new Date().getTime() // 修改为时间戳
+ createTime: new Date().getTime(), // 修改为时间戳
+ headimage: avatar
}))
await PatientitemsApi.createPatientitemsBatch(saveItems)
@@ -1100,7 +1106,7 @@ const getPatientData = async () => {
mobile: item.phoneNum,
avatar: item.headPicUrl,
physicalType: item.chargeType,
- status: item.status
+ status: item.status,
}))
personDataOriginal.value = mappedData // 保存原始数据
@@ -1191,7 +1197,8 @@ const loadPatientProjects = async (medicalSn) => {
discount: item.discounted || 0,
discountPrice: item.discountedPrice || 0,
moduleName: item.moduleName || '',
- section: item.sectionID || '',
+ section: item.section || '',
+ sectionID: item.sectionID || '',
itemCode: item.itemCode
}))
@@ -1316,31 +1323,6 @@ const getComboInfoData = async () => {
}
}
-// 确保在组件挂载和抽屉打开时都调用
-onMounted(() => {
- getComboInfoData()
-
- // 初始化右侧表单数据,确保有默认值
- personParam.value = {
- avatar: '',
- testNum: '',
- personName: '',
- sex: '',
- age: '',
- idCard: '',
- mobile: ''
- }
-
- // 确保表格数据初始化
- comboInfoTable1.value = []
-})
-
-watch(() => selectProjectDrawerShow.value, (newVal) => {
- if (newVal) {
- getComboInfoData()
- }
-})
-
// 处理套餐搜索
const handleComboInfoSearch = () => {
comboInfoParam.value.pageNumber = 1
@@ -1413,7 +1395,6 @@ const handleCheckInfoSelection = (selection) => {
const confirmSelectedProjects = async () => {
try {
let selectedProjects: ProjectDetail[] = []
- // 创建一个Set来跟踪已处理的itemCode
const processedItemCodes = new Set()
// 先将现有项目的itemCode添加到Set中
@@ -1422,67 +1403,41 @@ const confirmSelectedProjects = async () => {
})
if (selectProjectDrawerTabName.value === 'comboInfo') {
- // 处理套餐项目
for (const combo of comboInfoSelectedData.value) {
try {
- // 获取套餐下的所有项目
const moduleItems = await ExammoduleApi.getListExammodule()
- // 过滤出当前套餐的项目
const filteredItems = moduleItems.filter(item =>
item.examModuleID === combo.examModuleID
)
- // 逐个处理套餐中的项目
for (const moduleItem of filteredItems) {
- // 如果已经处理过这个itemCode,跳过
if (processedItemCodes.has(moduleItem.itemCode)) {
continue
}
try {
- // 获取项目详情
- const itemDetail = await getItemDetailByCode(moduleItem.itemCode)
+ const itemDetail = await itemsApi.getitemsPage({
+ pageNum: 1,
+ pageSize: 1,
+ itemCode: moduleItem.itemCode
+ })
- // 添加到已处理集合
- processedItemCodes.add(moduleItem.itemCode)
-
- if (itemDetail) {
- // 使用获取到的项目详情
+ if (itemDetail?.list?.[0]) {
+ const item = itemDetail.list[0]
+ processedItemCodes.add(moduleItem.itemCode)
selectedProjects.push({
- name: itemDetail.itemName,
- section: itemDetail.section || '',
- price: itemDetail.price || 0,
- discount: itemDetail.discounted || 0,
- discountPrice: itemDetail.discountedPrice || 0,
- moduleName: itemDetail.moduleName || moduleItem.examModuleName,
- itemCode: moduleItem.itemCode
- })
- } else {
- // 如果获取不到项目详情,使用套餐项目数据
- selectedProjects.push({
- name: moduleItem.examModuleName,
- section: '',
- price: 0,
- discount: 0,
- discountPrice: 0,
- moduleName: moduleItem.examModuleName,
+ name: item.itemName,
+ section: item.section, // 使用科室名称
+ sectionID: item.sectionID, // 保存科室ID用于后端
+ price: item.price || 0,
+ discount: item.discounted || 0,
+ discountPrice: item.discountedPrice || 0,
+ moduleName: item.moduleName || moduleItem.examModuleName,
itemCode: moduleItem.itemCode
})
}
} catch (itemError) {
- // 出错时也尝试添加项目,使用套餐数据
- if (!processedItemCodes.has(moduleItem.itemCode)) {
- processedItemCodes.add(moduleItem.itemCode)
- selectedProjects.push({
- name: moduleItem.examModuleName,
- section: '',
- price: 0,
- discount: 0,
- discountPrice: 0,
- moduleName: moduleItem.examModuleName,
- itemCode: moduleItem.itemCode
- })
- }
+ console.error('处理项目详情失败:', itemError)
}
}
} catch (comboError) {
@@ -1490,19 +1445,16 @@ const confirmSelectedProjects = async () => {
}
}
} else if (selectProjectDrawerTabName.value === 'checkInfo') {
- // 直接处理已选中的项目
for (const item of checkInfoSelectedData.value) {
- // 如果已经处理过这个itemCode,跳过
if (processedItemCodes.has(item.itemCode)) {
continue
}
- // 添加到已处理集合
processedItemCodes.add(item.itemCode)
-
selectedProjects.push({
name: item.itemName,
- section: item.section,
+ section: item.section, // 使用科室名称
+ sectionID: item.sectionID, // 保存科室ID用于后端
price: item.price,
discount: item.discounted,
discountPrice: item.discountedPrice,
@@ -1513,7 +1465,6 @@ const confirmSelectedProjects = async () => {
}
if (selectedProjects.length > 0) {
- // 只添加到前端表格,不保存到数据库
comboInfoTable1.value = [...comboInfoTable1.value, ...selectedProjects]
message.success(`成功添加${selectedProjects.length}个新项目`)
} else {
@@ -1526,24 +1477,6 @@ const confirmSelectedProjects = async () => {
}
}
-// 添加通过itemCode查询项目详情的方法
-const getItemDetailByCode = async (itemCode) => {
- try {
- // 先获取所有项目
- const allItems = await itemsApi.getitemsPage({
- pageNum: 1,
- pageSize: 100
- })
-
- // 查找匹配itemCode的项目
- const item = allItems.list.find(item => item.itemCode === itemCode)
- return item || null
- } catch (error) {
- console.error('通过itemCode查询项目详情失败:', error)
- return null
- }
-}
-
/** 钩子方法 **/
onMounted(() => {
// 获取科室列表
@@ -1569,11 +1502,12 @@ const startIndex = computed(() => {
// 添加接口定义
interface ProjectDetail {
name: string
+ section: string // 科室名称
+ sectionID: string // 科室ID
price: number
discount: number
discountPrice: number
moduleName: string
- section: string
itemCode: string
}
@@ -1610,6 +1544,21 @@ const handleDeleteSelectedItems = async () => {
}
}
+// 修改打开抽屉的处理方法
+const handleOpenProjectDrawer = () => {
+ // 清空选择状态
+ comboInfoSelectedData.value = []
+ checkInfoSelectedData.value = []
+
+ // 如果表格有清除选择的方法,调用它
+ if (comboInfoTableRef.value) {
+ comboInfoTableRef.value.clearSelection()
+ }
+
+ selectProjectDrawerTabName.value = 'comboInfo'
+ selectProjectDrawerShow.value = true
+}
+
// 添加身份证输入处理函数
const handleIdCardInput = (value) => {
if (!value || value.length < 15) return
diff --git a/src/views/project-management/base/createUI.vue b/src/views/project-management/base/createUI.vue
index 76e1135..b50e7bd 100644
--- a/src/views/project-management/base/createUI.vue
+++ b/src/views/project-management/base/createUI.vue
@@ -157,7 +157,7 @@ const getDepartmentList = async () => {
try {
const data = await DepartmentApi.getListDepartment()
departmentOptions.value = data.map((item: DepartmentVO) => ({
- value: item.id,
+ value: item.departmentCode,
label: item.departmentName
}))
} catch (error) {
diff --git a/src/views/project-management/exam-package/drawer.vue b/src/views/project-management/exam-package/drawer.vue
index 84a60c2..c7e3e1f 100644
--- a/src/views/project-management/exam-package/drawer.vue
+++ b/src/views/project-management/exam-package/drawer.vue
@@ -68,23 +68,27 @@ async function handleSearch() {
pageSize: pageSize.value
}
- // 修改关键词的处理逻辑
const keyword = searchForm.keyword?.trim()
if (keyword) {
- queryParams.itemName = keyword // 使用itemName作为查询参数
+ queryParams.itemName = keyword
}
if (searchForm.department) {
- queryParams.sectionID = searchForm.department // 使用section作为科室查询参数
+ queryParams.sectionID = searchForm.department
+ console.log('选中的科室ID:', searchForm.department)
}
+ console.log('查询参数:', queryParams)
+
try {
const res = await itemsApi.getitemsPage(queryParams)
+ console.log('查询结果:', res)
if (res) {
tableData.value = res.list || []
total.value = res.total || 0
}
} catch (error) {
+ console.error('查询失败:', error)
ElMessage.error('查询失败')
tableData.value = []
total.value = 0
@@ -103,7 +107,9 @@ const getDepartmentList = async () => {
value: item.departmentCode,
label: item.departmentName
}))
+ console.log('科室列表数据:', departmentOptions.value)
} catch (error) {
+ console.error('获取科室列表错误:', error)
ElMessage.error('获取科室列表失败')
}
}
diff --git a/src/views/project-management/exam-package/exam-packageUI.vue b/src/views/project-management/exam-package/exam-packageUI.vue
index 6a758c6..089315e 100644
--- a/src/views/project-management/exam-package/exam-packageUI.vue
+++ b/src/views/project-management/exam-package/exam-packageUI.vue
@@ -60,11 +60,19 @@
新增套餐
-
+
添加项目
-
- 删除选中
+
+ 删除项目