export const sensitive = { /** * 初始化敏感数据管理器 * @param {Object} config 配置项 * @param {Array} config.fields 需要脱敏的字段列表 * @returns {Object} 敏感数据管理器实例 */ create(config = {}) { const sensitiveFields = config.fields || []; let initialMaskedData = {}; return { /** * 保存初始的脱敏数据 * @param {Object} data 包含脱敏数据的对象 */ saveInitialData(data) { initialMaskedData = {}; sensitiveFields.forEach(field => { if (data[field]) { initialMaskedData[field] = data[field]; } }); }, /** * 获取要提交的数据,过滤掉未修改的敏感字段 * @param {Object} formData 表单数据 * @returns {Object} 过滤后的提交数据 */ getSubmitData(formData) { const submitData = { ...formData }; sensitiveFields.forEach(field => { // 如果敏感字段的值与初始值相同,删除该字段 if (submitData[field] === initialMaskedData[field]) { delete submitData[field]; } }); return submitData; }, /** * 更新脱敏数据 * @param {Object} newMaskedData 新的脱敏数据 */ updateMaskedData(newMaskedData) { Object.assign(initialMaskedData, newMaskedData); }, /** * 判断敏感数据是否被修改 * @returns {boolean} */ isModified(formData) { return sensitiveFields.some(field => formData[field] !== initialMaskedData[field]); }, /** * 获取已修改的敏感字段列表 * @returns {Array} */ getModifiedFields(formData) { return sensitiveFields.filter(field => formData[field] !== initialMaskedData[field]); }, /** * 重置为初始状态 * @param {Object} formData 表单数据对象 */ reset(formData) { sensitiveFields.forEach(field => { if (initialMaskedData[field]) { formData[field] = initialMaskedData[field]; } }); }, }; }, };