/**
 * 值替换 错误提示判断
 */
export var getValueReplaceErrorInfo = function getValueReplaceErrorInfo(list, columns, editData) {
  var json = {};
  var json2 = {};
  // 列表数据
  list.map(function (item) {
    // 属于 值替换类型 并且 排除编辑中的这条数据
    if (item.ruleType === 'valueReplace' && item.key !== editData.key) {
      item.columns.map(function (_item) {
        if (!json[_item.name]) {
          json[_item.name] = [];
        }
        if (_item.originalValue) json[_item.name].push(_item.originalValue);
        if (_item.changeValue) json[_item.name].push(_item.changeValue);
      });
    }
  });
  columns.map(function (item) {
    if (!json2[item.name]) {
      json2[item.name] = [];
    }
    if (json2[item.name].indexOf(item.originalValue) !== -1) {
      item.error = true; // 本次表格中，自身已经出现重复值
    } else {
      if (json[item.name] && json[item.name].indexOf(item.originalValue) !== -1) {
        item.error = true; // 本次表格中的值，与其他值替换表格有冲突
      } else {
        item.error = false;
      }
    }
    if (item.originalValue) json2[item.name].push(item.originalValue);
    if (item.changeValue) json2[item.name].push(item.changeValue);
  });
  return columns;
};
/**
 * 字段输入格式校验: 数据清洗 | 拆分列
 */
export var getFieldInputErrorInfo = function getFieldInputErrorInfo(value) {
  var msg = '';
  var pattern = new RegExp('[A-Za-z]+');
  var pattern2 = /[\u4E00-\u9FA5]|[\uFE30-\uFFA0]/gi;
  var pattern3 = /[0-9]/gi;
  if (!pattern.test(value[0])) {
    msg = '只能以英文字母开头';
  } else if (pattern2.exec(value) !== null || pattern3.exec(value) !== null) {
    msg = '只能输入英文和符号';
  }
  return msg;
};
/**
 * 判断字段名称是否错误
 * @param nodeList 当前画布全部节点的字段数据
 * @param columnList 当前节点的字段数据
 * @param value 当前节点input实时输入的字段数据
 * @param extend 当前节点的实时数据（表格中多个input的数据，此时还未添加到nodeList中）
 * @param returnData 不填写：返回true或false; 填写：allList，获取全部字段数据 | repeatList, 获取当前重复的节点数据
 * @returns true 错误 | allList | repeatList
 */
export var getFieldNameError = function getFieldNameError(nodeList, columnList, value, editData, extend, returnData) {
  var _list = [];
  // 当前画布全部节点的字段数据
  nodeList.map(function (item) {
    // 数据清洗
    if (item.shape === 'dataClean') {
      var _item$data;
      (_item$data = item.data) === null || _item$data === void 0 ? void 0 : _item$data.list.map(function (_item) {
        // 身份证号提取 && 排除当前编辑的这条数据
        if (_item.ruleType === 'idCardParser' && _item.key !== editData.key) {
          if (_item.newField) _list.push(_item.newField);
          _item.columns.map(function (_item) {
            _list.push(_item.name);
            // if (_item.alias) _list.push(_item.alias);
          });
        }
        // 出生日期转年龄 && 排除当前编辑的这条数据
        if (_item.ruleType === 'ageBirthdayConvert' && _item.key !== editData.key) {
          if (_item.newField) _list.push(_item.newField);
          _list.push(_item.ageField);
        }
      });
    }
    // 拆分列
    if (item.shape === 'splitColumn') {
      var _item$data2;
      (_item$data2 = item.data) === null || _item$data2 === void 0 ? void 0 : _item$data2.splitResult.map(function (_item) {
        if (item.data.code !== editData.code) {
          _list.push(_item.name);
        }
        // _list.push(_item.alias);
      });
    }
    // 合并列 ||  计算列
    if (item.shape === 'mergeColumn' || item.shape === 'computeColumn') {
      if (item.data.code !== editData.code) {
        var _item$data3, _item$data4;
        if ((_item$data3 = item.data) === null || _item$data3 === void 0 ? void 0 : _item$data3.fieldName) _list.push((_item$data4 = item.data) === null || _item$data4 === void 0 ? void 0 : _item$data4.fieldName);
      }
    }
  });
  // 当前节点的字段数据
  columnList.map(function (item) {
    _list.push(item.name);
  });
  // 当前节点的实时数据（此时还未添加到nodeList中）
  if (extend) {
    extend.map(function (item) {
      if (item.name) _list.push(item.name);
      // if (item.alias) _list.push(item.alias);
    });
  }

  _list = _list.filter(function (item) {
    return item !== '';
  });
  if (returnData) {
    return returnData === 'allList' ? _list : getDuplicates(_list);
  }
  return _list.indexOf(value) !== -1 ? true : false;
};
/**
 * 获取数据中重复出现的元素
 */
export var getDuplicates = function getDuplicates(arr) {
  var temp = [];
  arr.forEach(function (item) {
    if (arr.indexOf(item) != arr.lastIndexOf(item) && temp.indexOf(item) == -1) {
      temp.push(item);
    }
  });
  return temp;
};