dataChange.js 2.69 KB
Newer Older
wangcong committed
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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
function convertDate(date) {
  if (typeof date === "number") {
    return date;
  } else if (typeof date != "object" && new Date(date).getTime()) {
    return new Date(date).getTime();
  } else {
    return date;
  }
}

export function compareData(oldBillData, newBill) {
  let that = this;
  for (let i in oldBillData) {
    if (i.endsWith("RQ") || i.endsWith("Time") || i.endsWith("SJ")) {
      oldBillData[i] = convertDate(oldBillData[i]);
    }
    if (
      Object.prototype.toString.apply(oldBillData[i]) == "[object Object]" &&
      oldBillData[i].code
    ) {
      //处理基础数据类型
      let code = oldBillData[i].code;
      oldBillData[i] = {};
      oldBillData[i].code = code;
    }
    if (
      i.endsWith("ZB") &&
      Object.prototype.toString.apply(oldBillData[i]) == "[object Array]" &&
      oldBillData[i].length > 0
    ) {
      let dateArr = Object.keys(oldBillData[i][0]).filter(
        //处理子表中的日期
        (v) => v.endsWith("RQ") || v.endsWith("Time") || v.endsWith("SJ")
      );
      oldBillData[i].forEach((v) => {
        if (dateArr.length > 0) {
          dateArr.forEach((b) => {
            v[b] = convertDate(v[b]);
          });
        }
        Object.entries(v).forEach((k) => {
          if (
            Object.prototype.toString.apply(k[1]) == "[object Object]" &&
            k[1].code
          ) {
            let code = k[1].code;
            v[k[0]] = {};
            v[k[0]].code = code;
          }
        });
      });
    }
  }
  for (let i in newBill) {
    if (i.endsWith("RQ") || i.endsWith("Time") || i.endsWith("SJ")) {
      newBill[i] = convertDate(newBill[i]);
    }
    if (
      Object.prototype.toString.apply(newBill[i]) == "[object Object]" &&
      newBill[i].code
    ) {
      //处理基础数据类型
      let code = newBill[i].code;
      newBill[i] = {};
      newBill[i].code = code;
    }
    if (
      i.endsWith("ZB") &&
      Object.prototype.toString.apply(newBill[i]) == "[object Array]" &&
      newBill[i].length > 0
    ) {
      let dateArr = Object.keys(newBill[i][0]).filter(
        (v) => v.endsWith("RQ") || v.endsWith("Time") || v.endsWith("SJ")
      );
      //处理子表中的日期
      newBill[i].forEach((v) => {
        if (dateArr.length > 0) {
          dateArr.forEach((b) => {
            v[b] = convertDate(v[b]);
          });
        }
        Object.entries(v).forEach((k) => {
          if (
            Object.prototype.toString.apply(k[1]) == "[object Object]" &&
            k[1].code
          ) {
            let code = k[1].code;
            v[k[0]] = {};
            v[k[0]].code = code;
          }
        });
      });
    }
  }
  return JSON.stringify(oldBillData) == JSON.stringify(newBill);
}