/** * 操作日志工具 * 所有操作必须有操作日志 */ 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 }) }