From e9d11197772e896c42e08f93370016b4f6a509ec Mon Sep 17 00:00:00 2001 From: wzk <2438381872@qq.com> Date: Mon, 10 Nov 2025 14:41:22 +0800 Subject: [PATCH] =?UTF-8?q?=E9=97=A8=E8=AF=8A=E5=8F=B7=E7=A0=81=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=BB=B4=E6=8A=A4=E7=95=8C=E9=9D=A2-=E3=80=8B?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/operationLog.js | 105 ++++++ .../components/outpatientNumber.js | 32 +- .../outpatientNoManagement/index.vue | 350 +++++++++++++++++- 3 files changed, 465 insertions(+), 22 deletions(-) create mode 100644 openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/operationLog.js diff --git a/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/operationLog.js b/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/operationLog.js new file mode 100644 index 00000000..c9ab9bbb --- /dev/null +++ b/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/operationLog.js @@ -0,0 +1,105 @@ +/** + * 操作日志工具 + * 所有操作必须有操作日志 + */ +import { addOperationLog } from './outpatientNumber' + +/** + * 记录操作日志 + * @param {Object} params + * @param {string} params.operation - 操作类型(新增/修改/删除/查询) + * @param {string} params.details - 操作详情 + * @param {boolean} params.success - 操作是否成功 + * @param {string} params.errorMessage - 错误信息 + * @param {Object} params.userInfo - 用户信息 + */ +export async function logOperation({ operation, details, success, errorMessage, userInfo }) { + try { + const logData = { + operation, + details, + success, + errorMessage: errorMessage || null, + timestamp: new Date().toISOString(), + userId: userInfo?.id || null, + userName: userInfo?.name || null, + } + + // 控制台输出(便于调试) + console.log('[门诊号码管理] 操作日志:', logData) + + // 调用后端接口记录日志 + try { + await addOperationLog(logData) + } catch (apiError) { + console.warn('[门诊号码管理] 日志接口调用失败,仅记录到控制台') + } + } catch (error) { + console.error('[门诊号码管理] 记录日志失败:', error) + } +} + +/** + * 记录查询操作 + */ +export function logQuery(recordCount, userInfo) { + return logOperation({ + operation: '查询', + details: `查询门诊号码段列表,共 ${recordCount} 条记录`, + success: true, + userInfo + }) +} + +/** + * 记录新增操作 + */ +export function logCreate(record, success, errorMessage, userInfo) { + const details = success + ? `新增门诊号码段:${record.startNo} - ${record.endNo}(操作员:${record.operatorName})` + : `尝试新增门诊号码段:${record.startNo} - ${record.endNo},失败原因:${errorMessage}` + + return logOperation({ + operation: '新增', + details, + success, + errorMessage, + userInfo + }) +} + +/** + * 记录修改操作 + */ +export function logUpdate(record, success, errorMessage, userInfo) { + const details = success + ? `修改门诊号码段:${record.startNo} - ${record.endNo}(ID:${record.id})` + : `尝试修改门诊号码段 ID:${record.id},失败原因:${errorMessage}` + + return logOperation({ + operation: '修改', + details, + success, + errorMessage, + userInfo + }) +} + +/** + * 记录删除操作 + */ +export function logDelete(records, success, errorMessage, userInfo) { + const recordsInfo = records.map(r => `${r.startNo}-${r.endNo}`).join('、') + const details = success + ? `删除门诊号码段(共 ${records.length} 条):${recordsInfo}` + : `尝试删除门诊号码段(共 ${records.length} 条),失败原因:${errorMessage}` + + return logOperation({ + operation: '删除', + details, + success, + errorMessage, + userInfo + }) +} + diff --git a/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/outpatientNumber.js b/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/outpatientNumber.js index 569695b4..a7e3e259 100644 --- a/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/outpatientNumber.js +++ b/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/components/outpatientNumber.js @@ -1,5 +1,13 @@ +/** + * 门诊号码管理 API 接口 + * 严格按照要求实现 + */ import request from '@/utils/request' +/** + * 分页查询门诊号码段列表 + * 要求:普通用户只能查看自己的,管理员可以查看所有 + */ export function listOutpatientNo(query) { return request({ url: '/business-rule/outpatient-no/page', @@ -8,6 +16,10 @@ export function listOutpatientNo(query) { }) } +/** + * 新增门诊号码段 + * 要求:必须校验前缀一致性、长度一致性、重复检查 + */ export function addOutpatientNo(data) { return request({ url: '/business-rule/outpatient-no', @@ -16,6 +28,9 @@ export function addOutpatientNo(data) { }) } +/** + * 更新门诊号码段 + */ export function updateOutpatientNo(data) { return request({ url: '/business-rule/outpatient-no', @@ -24,6 +39,10 @@ export function updateOutpatientNo(data) { }) } +/** + * 删除门诊号码段 + *要求:双重校验(归属权+使用状态) + */ export function deleteOutpatientNo(params) { return request({ url: '/business-rule/outpatient-no', @@ -32,5 +51,14 @@ export function deleteOutpatientNo(params) { }) } - - +/** + * 记录操作日志 + * PRD要求:所有操作必须有操作日志 + */ +export function addOperationLog(data) { + return request({ + url: '/business-rule/outpatient-no/log', + method: 'post', + data, + }) +} diff --git a/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/index.vue b/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/index.vue index f29a8cc6..dbb55e1e 100644 --- a/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/index.vue +++ b/openhis-ui-vue3/src/views/basicmanage/outpatientNoManagement/index.vue @@ -1,6 +1,15 @@ - - + + + + @@ -125,10 +140,17 @@