Files
admin-web/src/modules/audit/presentation.ts
T
2026-08-18 09:46:34 +08:00

130 lines
5.3 KiB
TypeScript

const auditEventLabels: Record<string, string> = {
TENANT_REGISTER: '客户注册',
TENANT_REVIEW: '客户入驻审核',
PLATFORM_TENANT_UPDATE: '编辑客户档案',
PLATFORM_TENANT_STATUS_CHANGE: '启停客户',
PLATFORM_TENANT_SUBMIT_REVIEW: '提交客户审核',
TENANT_PROFILE_UPDATE: '编辑企业资料',
PLATFORM_CUSTOMER_ARCHIVE: '归档客户',
PLATFORM_CUSTOMER_OWNER_PASSWORD_RESET: '重置企业管理员密码',
PLATFORM_CUSTOMER_IMPERSONATION_TICKET_CREATE: '创建客户代登录授权',
TENANT_ADDRESS_CREATE: '新增客户地址',
TENANT_QUALIFICATION_UPLOAD: '上传企业资质',
PLATFORM_TENANT_QUALIFICATION_UPLOAD: '平台上传企业资质',
TENANT_REQUIRED_QUALIFICATION_PACKAGE_UPLOAD: '上传必填资质包',
PLATFORM_REQUIRED_QUALIFICATION_PACKAGE_UPLOAD: '平台上传必填资质包',
INBOUND_MEASURE_APPROVE: '入库测量审核通过',
INBOUND_MEASURE_REJECT: '驳回入库测量',
INBOUND_MEASURE_EXCEPTION_RELEASE: '解除测量异常',
INBOUND_CARTON_SCAN: '扫描入库箱码',
INBOUND_CARTON_MANUAL_ENTRY: '手工录入箱码',
INBOUND_CARTON_MEASUREMENT_COUNT_CONFIRM: '确认测量箱数',
INBOUND_MEASUREMENT_DRAFT_SAVE: '保存入库测量草稿',
INBOUND_MEASUREMENT_SUBMIT: '提交入库测量审核',
INBOUND_WEIGHT_IMAGE_DELETE: '删除称重图片',
INBOUND_WEIGHT_OCR_RECORD: '登记称重图片 OCR 原值',
INBOUND_WEIGHT_OCR_CORRECT: '修正 OCR 重量',
INBOUND_WEIGHT_OCR_CONFIRM: '确认 OCR 重量',
INBOUND_SMART_SPLIT: '执行智能分柜',
INBOUND_START_PICKING: '开始拣货',
INBOUND_COMPLETE_PICKING: '完成拣货',
INBOUND_COMPLETE_LOADING: '完成装柜',
INBOUND_LOADING_EVIDENCE_UPSERT: '保存装柜证据',
INBOUND_LOADING_EVIDENCE_VOID: '作废装柜证据',
ORDER_CREATE: '创建运单',
ORDER_UPDATE: '编辑运单',
ORDER_SUBMIT: '提交运单',
ORDER_APPROVE: '审核通过运单',
ORDER_REJECT: '驳回运单',
ORDER_CANCEL: '取消运单',
ORDER_ACCEPT: '受理运单',
ORDER_START: '开始处理运单',
ORDER_COMPLETE: '完成运单',
OCEAN_BOOKING_CREATE: '创建海运订舱',
OCEAN_BOOKING_RELEASE: '确认放舱',
OCEAN_BOOKING_CANCEL: '取消海运订舱',
CONTAINER_CREATE: '创建柜次',
CONTAINER_UPDATE: '编辑柜次',
CONTAINER_TRANSPORT_UPDATE: '更新柜次运输信息',
OUTBOUND_CONFIRM_DISPATCH: '确认国内出仓',
OUTBOUND_REVERSE_DISPATCH: '撤销国内出仓',
PDA_COMPLETE_LOADING: 'PDA 完成装柜',
}
const serviceLabels: Record<string, string> = {
'iam-service': '客户与权限服务',
'auth-service': '认证服务',
'order-service': '订单服务',
'firstleg-service': '头程履约服务',
'finance-service': '财务服务',
'warehouse-service': '仓储服务',
'file-service': '文件服务',
'audit-service': '审计服务',
'integration-service': '外部集成服务',
'event-bridge-service': '事件桥接服务',
gateway: '网关服务',
}
const resourceLabels: Record<string, string> = {
TENANT: '客户',
CUSTOMER: '客户',
FIRST_LEG_ORDER: '头程运单',
INBOUND: '入库单',
INBOUND_MEASUREMENT: '入库测量',
CONTAINER: '柜次',
OCEAN_BOOKING: '海运订舱',
LOADING_PLAN: '装柜计划',
OUTBOUND_DISPATCH: '国内出仓',
QUALIFICATION: '企业资质',
MEMBER: '企业成员',
}
const eventTokenLabels: Record<string, string> = {
TENANT: '客户', CUSTOMER: '客户', ORDER: '运单', FIRSTLEG: '头程履约', INBOUND: '入库',
MEASURE: '测量', MEASUREMENT: '测量', WEIGHT: '重量', OCR: 'OCR', CARTON: '箱码',
CONTAINER: '柜次', OCEAN: '海运', BOOKING: '订舱', OUTBOUND: '出仓', LOADING: '装柜',
CREATE: '创建', UPDATE: '更新', SUBMIT: '提交', APPROVE: '审核通过', REJECT: '驳回',
CANCEL: '取消', CONFIRM: '确认', COMPLETE: '完成', START: '开始', SAVE: '保存',
DELETE: '删除', UPLOAD: '上传', ATTACH: '关联', RELEASE: '放行', RECORD: '记录',
CORRECT: '修正', DRAFT: '草稿', SCAN: '扫描', MANUAL: '手工', ENTRY: '录入',
}
export function auditEventLabel(value?: string | null) {
const code = value?.trim()
if (!code) return '—'
if (auditEventLabels[code]) return auditEventLabels[code]
const translated = code.split('_').map((token) => eventTokenLabels[token]).filter(Boolean).join('')
return translated || '其他业务操作'
}
export function auditDescriptionLabel(value?: string | null) {
const text = value?.trim()
if (!text) return '—'
const chinesePart = text.split(/\s*\/\s*/).find((part) => /[\u3400-\u9fff]/.test(part))
return chinesePart?.trim() || text
}
export function auditServiceLabel(value?: string | null) {
const code = value?.trim()
if (!code) return '—'
return serviceLabels[code] ?? code.replace(/-service$/i, '服务')
}
export function auditResourceLabel(value?: string | null) {
const code = value?.trim()
if (!code) return '—'
return resourceLabels[code] ?? code
}
export function auditOperatorLabel(value?: string | null) {
const code = value?.trim()
if (!code) return '—'
return code === 'platform_admin' ? '平台管理员' : code
}
export function auditHttpMethodLabel(value?: string | null) {
const code = value?.trim().toUpperCase()
if (!code) return '—'
return ({ GET: '查询', POST: '提交', PUT: '更新', PATCH: '变更', DELETE: '删除' } as Record<string, string>)[code] ?? code
}