vue3中固定格式信息识别功能

1.需求与效果

vue3中固定格式信息识别功能_第1张图片

vue3中固定格式信息识别功能_第2张图片

2.功能代码

// 定义一个函数discern
const discern = () => {
  // 定义变量paramsList和params
  let paramsList;
  let params = {};

  // 将htmlText.value按换行符分割,得到一个数组,每个元素是一行文本
  paramsList = htmlText.value.split('\n');

  // 定义两个数组,object包含了我们想要获取的信息的名称,discernList包含了每种信息可能对应的关键字
  let object = ['companyName', 'taxpayerNumber', 'address', 'phone', 'bank', 'account', 'email'];
  let discernList = [
    ['名称', '公司名称', '企业名称', '公司名'],
    ['税号', '纳税人识别号', '统一信用代码'],
    ['单位地址', '公司地址', '企业地址', '地址'],
    ['电话', '电话号码', '联系方式', '手机号'],
    ['开户银行', '银行名称', '开户行'],
    ['银行账户', '银行账号', '账号', '账户'],
    ['邮箱','电子邮箱']
  ];

  // 遍历paramsList中的每一行文本
  paramsList.forEach((el, i) => {
    // 将当前行按冒号分割,得到一个数组elList,第一个元素是关键字,第二个元素是值
    let elList = el.replace(':', ':').split(':');
    // 去除值中的所有空格
    elList[1] = elList[1]?.replace(/\s+/g, '');

    // 遍历discernList中的每个数组
    discernList.forEach((item, index) => {
      // 遍历当前数组中的每个关键字
      item.forEach((ele) => {
        // 如果当前行的关键字包含当前关键字
        if (elList[0].indexOf(ele) !== -1) {
          // 如果当前关键字是"地址",并且当前行的关键字不包含"邮箱"
          if (ele == '地址' && elList[0].indexOf('邮箱') == -1) {
            // 将值存储在params对象中,属性名是object数组中对应的元素
            params[object[index]] = elList[1];
          } else if (ele != '地址') { // 如果当前关键字不是"地址"
            // 将值存储在params对象中,属性名是object数组中对应的元素
            params[object[index]] = elList[1];
          }
        }
      });
    });
  });

  // 将params对象合并到invoiceHeaderForm.value对象中
  Object.assign(invoiceHeaderForm.value, params);
};

你可能感兴趣的:(vue3,vue.js,前端,javascript)