forked from drone/command-center-dashboard

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