diff --git a/src/views/analysis/ABPM/ABPM.vue b/src/views/analysis/ABPM/ABPM.vue index 5ec7bb6..b8990aa 100644 --- a/src/views/analysis/ABPM/ABPM.vue +++ b/src/views/analysis/ABPM/ABPM.vue @@ -32,8 +32,8 @@ clearable style="width: 100px" > - - + + @@ -47,14 +47,16 @@ value-format="YYYY-MM-DD" /> - - + + + + + 搜索 @@ -68,10 +70,7 @@ - - 共找到 {{ tableData.length }} 条记录 - - + @@ -80,7 +79,37 @@ - + + + + + + + + + + + + + + + {{ formatMeasureTime(row.measureTime) }} + + + + + + @@ -111,7 +140,7 @@ v-else style="display: flex; align-items: center; justify-content: center; gap: 8px" > - {{ getDeviceLabel(row.device) }} + {{ getDeviceLabel(row.devicename) }} @@ -129,9 +158,12 @@ 查看 - - - 已申请 + + + + 已申请 + + 申请 @@ -151,6 +183,7 @@ import { ref, reactive, onMounted } from 'vue' import { ElMessage } from 'element-plus' import { Icon } from '@/components/Icon' +import { formatDate } from '@/utils/formatTime' import AnalysisDialog from './analysis.vue' import PatientSelect from '@/patientcom/index.vue' import { abpmApi, abpmVO } from '@/api/abpm' @@ -167,8 +200,12 @@ const queryParams = reactive({ name: '', gender: '', dateRange: [], - wearTime: '', - device: '' + measuretime: '', + status: '', + device: '', + orgid: '', + orgname: '', + age: '' }) // 表格数据 @@ -199,6 +236,21 @@ const getDeviceLabel = (value: string) => { return found ? found.label : value } +// 时间格式化函数 +const formatMeasureTime = (time: any) => { + if (!time) return '' + + // 如果是时间戳(数字),先转换为Date对象 + if (typeof time === 'number') { + // 判断是否为毫秒时间戳 + const timestamp = time.toString().length === 13 ? time : time * 1000 + return formatDate(new Date(timestamp), 'YYYY-MM-DD HH:mm:ss') + } + + // 如果是字符串或已经是Date对象,直接格式化 + return formatDate(new Date(time), 'YYYY-MM-DD HH:mm:ss') +} + // 获取列表数据 const getList = async () => { loading.value = true @@ -223,11 +275,8 @@ const resetQuery = () => { Object.assign(queryParams, { pageNo: 1, pageSize: 10, - name: '', - gender: '', dateRange: [], - wearTime: '', - device: '' + measuretime: '' }) getList() } @@ -254,10 +303,23 @@ const editDevice = (row: any, index: number) => { row.editingDevice = true } -const saveDevice = (row: any, index: number) => { - row.editingDevice = false - delete row.originalDevice - ElMessage.success(`已更新设备为:${getDeviceLabel(row.device)}`) +const saveDevice = async (row: any, index: number) => { + try { + // 调用API更新设备信息 + const updateData = { ...row } + await abpmApi.updateabpm(updateData) + + row.editingDevice = false + delete row.originalDevice + ElMessage.success(`已更新设备为:${getDeviceLabel(row.device)}`) + } catch (error) { + console.error('更新设备失败:', error) + ElMessage.error('更新设备失败,请重试') + // 恢复原始值 + if (row.originalDevice !== undefined) { + row.device = row.originalDevice + } + } } const cancelEditDevice = (row: any, index: number) => { @@ -269,9 +331,47 @@ const cancelEditDevice = (row: any, index: number) => { delete row.originalDevice } +// 佩戴时间编辑相关方法 +const editMeasureTime = (row: any, index: number) => { + // 保存原始值,用于取消时恢复 + row.originalMeasureTime = row.measureTime + row.editingMeasureTime = true +} + +const saveMeasureTime = async (row: any, index: number) => { + try { + // 将佩戴时间转换为时间戳 + const measureTimeTimestamp = row.measureTime ? new Date(row.measureTime).getTime() : null + + // 调用API更新佩戴时间 + const updateData = { ...row, measureTime: measureTimeTimestamp } + await abpmApi.updateabpm(updateData) + + row.editingMeasureTime = false + delete row.originalMeasureTime + ElMessage.success(`已更新佩戴时间为:${formatMeasureTime(row.measureTime)}`) + } catch (error) { + console.error('更新佩戴时间失败:', error) + ElMessage.error('更新佩戴时间失败,请重试') + // 恢复原始值 + if (row.originalMeasureTime !== undefined) { + row.measureTime = row.originalMeasureTime + } + } +} + +const cancelEditMeasureTime = (row: any, index: number) => { + // 恢复原始值 + if (row.originalMeasureTime !== undefined) { + row.measureTime = row.originalMeasureTime + } + row.editingMeasureTime = false + delete row.originalMeasureTime +} + const onAnalyze = (row: any) => { - // 打开分析弹窗 - analysisDialogRef.value?.open() + // 打开分析弹窗并传递患者数据 + analysisDialogRef.value?.open(row) } const onViewReport = (row: any) => { ElMessage.success(`查看报告:${row.name}`) @@ -279,6 +379,23 @@ const onViewReport = (row: any) => { const onSetting = (row: any) => { ElMessage.success(`设置:${row.name}`) } + +// 申请处理函数 +const handleApply = async (row: any) => { + try { + // 更新状态为已申请 + const updateData = { ...row, status: 1 } + await abpmApi.updateabpm(updateData) + + // 更新本地数据 + row.status = 1 + + ElMessage.success(`${row.name} 申请成功`) + } catch (error) { + console.error('申请失败:', error) + ElMessage.error('申请失败,请重试') + } +}