forked from drone/command-center-dashboard

罗广辉
2025-04-21 2800fa4f32f3900509cb4d6eefaf2bfaf54efdd7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
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]
                    }
                })
            },
        }
    },
}