first commit
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
const states = {
|
||||
unchanged: '已核对,业务字段没有变化',
|
||||
unavailable: '未能取得完整的修改前后数据',
|
||||
failed: '操作失败,未确认生效的改动',
|
||||
notCaptured: '此操作未记录字段对比'
|
||||
}
|
||||
|
||||
function toParamRows(params) {
|
||||
if (!params || typeof params !== 'object') return []
|
||||
return Object.keys(params).map(key => ({ label: key, value: String(params[key]) }))
|
||||
}
|
||||
|
||||
export function parseOperationAudit(text) {
|
||||
const empty = { action: '', target: '', changes: [], params: [], notice: '', structured: false }
|
||||
if (!text) return empty
|
||||
try {
|
||||
const data = JSON.parse(text)
|
||||
if (data && data.auditVersion === 1) {
|
||||
const target = data.target || {}
|
||||
const changes = data.state === 'changed' && Array.isArray(data.changes)
|
||||
? data.changes.filter(c => c && typeof c.label === 'string' && typeof c.before === 'string' && typeof c.after === 'string') : []
|
||||
return {
|
||||
action: typeof data.action === 'string' ? data.action : '操作',
|
||||
target: target.id == null ? '' : '用户ID:' + target.id + (typeof target.name === 'string' && target.name ? '(' + target.name + ')' : ''),
|
||||
changes,
|
||||
params: toParamRows(data.params),
|
||||
notice: [states[data.state] || '', data.truncated ? '内容超出存储上限,部分改动未展示' : ''].filter(Boolean).join(';'),
|
||||
structured: true
|
||||
}
|
||||
}
|
||||
return { ...empty, action: '历史记录', notice: '历史记录未保存可验证的前后值' }
|
||||
} catch (e) { /* Legacy action strings are not JSON. */ }
|
||||
if (!text.startsWith('点击【')) return { ...empty, action: '历史记录', notice: '历史记录未保存可验证的前后值' }
|
||||
const separator = text.indexOf('|')
|
||||
if (separator < 0) return { ...empty, action: text, notice: '此记录未保存字段对比' }
|
||||
const changes = text.slice(separator + 1).split('\n').map(line => line.split('\t'))
|
||||
.filter(parts => parts.length === 3).map(parts => ({ label: parts[0], before: parts[1], after: parts[2] }))
|
||||
return { ...empty, action: text.slice(0, separator), changes, notice: changes.length ? '' : '历史记录未保存可验证的前后值' }
|
||||
}
|
||||
Reference in New Issue
Block a user