const WXAPI = require('./request')
import moment from 'moment'
import ICINLocker from "./equipment.js"
/**
 * @param {Function} fn 防抖函数
 * @param {Number} delay 延迟时间
 */

export default class utils {
  // 下发凭证
  static putCarfidzgAdd(drawerRow,resultArr, row) {
    var data = {};
    var userTelephone = JSON.parse(row.content).userTelephone;
    var userPassword = JSON.parse(row.content).userPassword;
    var startTime = row.startTime
    var endTime = row.endTime
    var passwordStartTime =startTime
    var passwordEndTime = endTime

    if (row.type == 1) {
      var fpId = new Date();
      var fingerprint1 = JSON.parse(row.content).fingerprint;
      var str = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        length: fingerprint1.length / 2,
        fpTimeId: fpId.getTime(),
        operateMode: 16,
        order: 6216,
        fingerprint: fingerprint1,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        pzname:JSON.parse(row.content).pzname
      };
      var data3 = {
        lockerId: resultArr.deviceNum,
        imei: resultArr.imei,
        order: 6216,
        lockerUserId: JSON.parse(drawerRow.info).userPassword,
        keyId: JSON.parse(drawerRow.info).userPassword,
        fingerType: 0,
        file: fingerprint1,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: resultArr.roomName,
        startTime: passwordStartTime,
        endTime: passwordEndTime
      };
      ICINLocker.addFingerPrints(data3.lockerId, data3.imei, data3.lockerUserId, data3.fingerType, data3
        .file, data3.startTime, data3.endTime, data3.cardName, data3.roomName, (callback) => {
          if (callback.success) {
            var data = {
              id: row.id,
              serial: callback.data.serialNumber,
            };
            WXAPI.updateCertificates(data).then((res) => {
                wx.showToast({
                  title: "下发成功",
                  duration:2000,
                  icon:"nonoe"
                })
            });
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })
    } else if (row.type == 2) {
      if (JSON.parse(row.content).password.length != 16) {
        wx.showToast({
          title: "卡格式错误，请重新录入",
          duration:2000,
          icon:"nonoe"
        })
        return
      }
      var str = {
        imei: resultArr.imei,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 13,
        order: 6213,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        pzname:JSON.parse(row.content).pzname,
        is: false,
      };
      var data3 = {
        lockerId: resultArr.deviceNum,
        imei: resultArr.imei,
        lockerUserId: userPassword,
        keyId: userPassword,
        action: 1,
        taskStatus: 1,
        order: 6210,
        startTime: passwordStartTime,
        endTime: passwordEndTime,
        cardType: 36,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: row.roomName,
        cardNo: JSON.parse(row.content).password
      };
      ICINLocker.RfCardRegister(data3.lockerId, data3.imei, data3.keyId, data3.action, data3.taskStatus,
        data3.cardNo, data3.cardType, data3.startTime,
        data3.endTime, data3.order, data3.cardName, data3.roomName, (callback) => {
          if (callback.success) {
            var data = {
              id: row.id,
              serial: callback.data.serialNumber,
            };
            WXAPI.updateCertificates(data).then((res) => {
                wx.showToast({
                  title: "下发成功",
                  duration:2000,
                  icon:"nonoe"
                })
            });
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })
    } else if (row.type == 3) {
      if (JSON.parse(row.content).password.length != 8) {
        wx.showToast({
          title: "卡格式错误，请重新录入",
          duration:2000,
          icon:"nonoe"
        })
        return
      }
      var str = {
        imei: resultArr.imei,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 10,
        order: 6210,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        pzname:JSON.parse(row.content).pzname,
        is: false,
      };
      var data3 = {
        lockerId: resultArr.deviceNum,
        lockerUserId: userPassword,
        keyId: userPassword,
        imei: resultArr.imei,
        action: 1,
        taskStatus: 1,
        order: 6210,
        startTime: passwordStartTime,
        endTime: passwordEndTime,
        cardType: 50,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: row.roomName,
        cardNo: JSON.parse(row.content).password
      };
      ICINLocker.RfCardRegister(data3.lockerId, data3.imei, data3.keyId, data3.action, data3.taskStatus,
        data3.cardNo, data3.cardType, data3.startTime,
        data3.endTime, data3.order, data3.cardName, data3.roomName, (callback) => {
          if (callback.success) {
            var data = {
              id: row.id,
              serial: callback.data.serialNumber,
            };
            WXAPI.updateCertificates(data).then((res) => {
                wx.showToast({
                  title: "下发成功",
                  duration:2000,
                  icon:"nonoe"
                })
            });
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })
    } else if (row.type == 4) {
      str = {
        imei: resultArr.imei,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 7,
        order: 6207,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        pzname:JSON.parse(row.content).pzname,
        is: false,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: row.roomName
      };
      var data3 = {
        lockerId: resultArr.deviceNum,
        imei: resultArr.imei,
        order: 6207,
        passwordCount: 255,
        lockerUserId: userPassword,
        keyId: userPassword,
        startTime: passwordStartTime,
        endTime: passwordEndTime,
        action: 1,
        password: JSON.parse(row.content).password,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: row.roomName
      };
      ICINLocker.addForeverPassword(data3.lockerId, data3.imei, data3.keyId, data3.action, data3.password,
        data3.passwordCount, data3.startTime, data3.endTime, data3.order, data3.cardName, data3
        .roomName, (callback) => {
          if (callback.success) {
            var data = {
              id: row.id,
              serial: callback.data.serialNumber,
            };
            WXAPI.updateCertificates(data).then((res) => {
                wx.showToast({
                  title: "下发成功",
                  duration:2000,
                  icon:"nonoe"
                })
            });

          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })

    }
  }
  // 下发凭证
 static putCarfidAdd(resultArr, row) {
    var data = {};
    var userTelephone = JSON.parse(row.content).userTelephone;
    var userPassword = JSON.parse(row.content).userPassword;
    var startTime = row.startTime
    var endTime = row.endTime
    var passwordEndTime = moment(endTime*1000).format("YYYYMMDDHHmmss");
    var passwordStartTime = moment(startTime*1000).format("YYYYMMDDHHmmss");
    if (row.type == 1) {
      var fpId = new Date();
      var fingerprint = JSON.parse(row.content).fingerprint;
      var str = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        length: fingerprint.length / 2,
        fpTimeId: fpId.getTime(),
        operateMode: 16,
        order: 6216,
        fingerprint: fingerprint,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: resultArr.roomName,
      };
      ICINLocker.LDAddFingerPrints(str.deviceNum, str.imei, str.userTelephone, str.userPassword, str
        .password, str.passwordStartTime, str.passwordEndTime, str.operateMode, str.order, str.length,
        str.fpTimeId, str.fingerprint, str.cardName, str.roomName, (callback) => {
          if (callback.success) {
            var datafid = {
              id: row.id,
              serial: callback.data.serialNumber,
            };
            WXAPI.updateCertificates(datafid).then((res) => {
              if (res.success) {
                wx.showToast({
                  title: "下发成功",
                  duration:2000,
                  icon:"nonoe"
                })
              } else {
                wx.showToast({
                  title: "下发失败",
                  duration:2000,
                  icon:"nonoe"
                })
              }
            });
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })
      return false
    } else if (row.type == 2) {
      data = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 13,
        order: 6213,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        is: false,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: resultArr.roomName,
      };
    } else if (row.type == 3) {
      data = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 10,
        order: 6210,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        is: false,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: resultArr.roomName,
      };
    } else if (row.type == 4) {
      data = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 7,
        order: 6207,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        is: false,
        cardName: row.name+'-'+JSON.parse(row.content).pzname,
        roomName: resultArr.roomName,
      };
    }
    ICINLocker.LDRfCardRegister(data.deviceNum, data.imei, data.userTelephone, data.userPassword, data
      .password, data
      .passwordStartTime, data.passwordEndTime, data.operateMode, data.order, data.cardName, data
      .roomName, (
        callback) => {
        if (callback.success) {
          var datafid = {
              id: row.id,
              serial: callback.data.serialNumber,
          };
          WXAPI.updateCertificates(datafid).then((res) => {
            if (res.success) {
              wx.showToast({
                title: "下发成功",
                duration:2000,
                icon:"nonoe"
              })
            } else {
              wx.showToast({
                title: "下发失败",
                duration:2000,
                icon:"nonoe"
              })
            }
          });
        } else {
          wx.showToast({
            title: callback.msg,
            duration:2000,
            icon:"nonoe"
          })
        }
      })
  }
  static getfiId1(row, callback) {
    var data = {
      q: JSON.stringify({
        serial: row.serial,
      }),
      pageNum: 1,
      pageSize: 10,
    };
    WXAPI.getDeviceResult(data).then((res) => {
      callback(res.data.list);
    });
  }
  static putCarfid(resultArr, row, endTime, startTime) {
    var data = {};
    var userTelephone = JSON.parse(row.content).userTelephone;
    var userPassword = JSON.parse(row.content).userPassword;
    var content = JSON.parse(row.content);
    var passwordEndTime = moment(endTime).format("YYYYMMDDHHmmss");
    var passwordStartTime = moment(startTime).format("YYYYMMDDHHmmss");
    if (row.type == 1) {
      this.getfiId(row, function(data) {
        if (data.length > 0) {
          if (data.length > 0) {
            var fpid = "";
            fpid =
              data[0].face.toString(16).length != 2 ?
              "0" + data[0].face.toString(16) :
              data[0].face;
            var str = {
              imei: resultArr.imei,
              deviceNum: resultArr.deviceNum,
              password: fpid,
              operateMode: 17,
              order: 6217,
              userPassword: userPassword,
              userTelephone: userTelephone,
              passwordStartTime: passwordEndTime,
              passwordEndTime: passwordStartTime,
              is: false,
              cardName: row.name,
              roomName: resultArr.roomName,
            };
            WXAPI.getDeviceOperateUserInfo(str).then((res1) => {
              if (res1.success) {
                content.passwordStartTime = str.passwordStartTime;
                content.passwordEndTime = str.passwordEndTime;
                var updatedata = {
                  id: row.id,
                  content: JSON.stringify(content),
                  serial: res1.data.serialNumber,
                  status: 0,
                  startTime: startTime / 1000,
                  endTime: endTime / 1000
                };
                WXAPI.updateCertificates(updatedata)
                  .then(
                    (res2) => {
                      wx.showToast({
                        title: "修改成功",
                        duration:2000,
                        icon:"nonoe"
                      })
                    }
                  );
              } else {
                wx.showToast({
                  title: "修改失败",
                  duration:2000,
                  icon:"nonoe"
                })
              }
            });
          }
        }
      })
      return false
    } else if (row.type == 2) {
      data = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 14,
        order: 6214,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        is: false,
        cardName: row.name,
        roomName: row.roomName
      };
    } else if (row.type == 3) {
      data = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 11,
        order: 6211,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        is: false,
        cardName: row.name,
        roomName: row.roomName
      };
    } else if (row.type == 4) {
      data = {
        imei: resultArr.imei,
        deviceNum: resultArr.deviceNum,
        userTelephone: userTelephone,
        cardId: row.cardId,
        userPassword: userPassword,
        password: JSON.parse(row.content).password,
        operateMode: 8,
        order: 6208,
        passwordStartTime: passwordStartTime,
        passwordEndTime: passwordEndTime,
        is: false,
        cardName: row.name,
        roomName: row.roomName
      };
    }
    ICINLocker.LDRfCardRegister(data.deviceNum, data.imei, data.userTelephone, data.userPassword, data
      .password, data
      .passwordStartTime, data.passwordEndTime, data.operateMode, data.order, data.cardName, data
      .roomName, (
        callback) => {
        if (callback.success) {
          var datafid = {
            id: row.id,
            content: JSON.stringify(data), //operateMode:NFC-10、把人员添加到凭证-1
            status: 0,
            serial: callback.data.serialNumber,
            startTime: moment(startTime).valueOf() / 1000,
            endTime: moment(endTime).valueOf() / 1000,
          };
          WXAPI.updateCertificates(datafid).then((res) => {
            if (res.success) {
              wx.showToast({
                title: "下发成功",
                duration:2000,
                icon:"nonoe"
              })
            } else {
              wx.showToast({
                title: "下发失败",
                duration:2000,
                icon:"nonoe"
              })
            }
          });
        } else {
          wx.showToast({
            title: callback.msg,
            duration:2000,
            icon:"nonoe"
          })
        }
      })
  }
  // 下发凭证
  static putCarfidzg(resultArr, row, endTime, startTime) {
    var data = {};
    var userTelephone = JSON.parse(row.content).userTelephone;
    var userPassword = JSON.parse(row.content).userPassword;
    var content = JSON.parse(row.content);
    var passwordEndTime = moment(startTime).valueOf() / 1000;
    var passwordStartTime = moment(endTime).valueOf() / 1000;
    if (row.type == 1) {
      this.getfiId1(row, function(data) {
        if (data.length > 0) {
          var fpid = "";
          fpid =
            data[0].face.toString(16).length != 2 ?
            "0" + data[0].face.toString(16) :
            data[0].face;
          var pwd = JSON.parse(row.content).userPassword
          ICINLocker.modifyFingerPrints(resultArr.deviceNum, resultArr.imei, pwd, 3,
            fpid, 0, passwordStartTime, passwordEndTime, row.name, resultArr.roomName, (callback) => {
              if (callback.success) {
                var str1 = JSON.parse(row.content);
                str1.fpTimeId = callback.data.serialNumber;
                str1.passwordStartTime = passwordStartTime;
                str1.passwordEndTime = passwordEndTime;
                var updatedata = {
                  id: row.id,
                  content: JSON.stringify(str1),
                  serial: callback.data.serialNumber,
                  status: 0,
                  startTime: passwordStartTime,
                  endTime: passwordEndTime
                };
                WXAPI.updateCertificates(updatedata)
                  .then(
                    (res2) => {
                      wx.showToast({
                        title: "下发成功",
                        duration:2000,
                        icon:"nonoe"
                      })
                    });
                wx.showToast({
                  title: callback.msg,
                  duration:2000,
                  icon:"nonoe"
                })
              } else {
                wx.showToast({
                  title: callback.msg,
                  duration:2000,
                  icon:"nonoe"
                })
              }
            })
        } else {
          wx.showToast({
            title: "修改失败",
            duration:2000,
            icon:"nonoe"
          })
        }
      })
    } else if (row.type == 2) {
      var idcard = ''
      if (content.password.length == 16) {
        idcard = content.password
      } else {
        idcard = dec2hex(content.password);
      }
      var userid = JSON.parse(row.content).userPassword
      if (idcard.length != 16) {
        wx.showToast({
          title: "卡格式错误，请重新录入",
          duration:2000,
          icon:"nonoe"
        })
        return
      }
      ICINLocker.RfCardRegister(resultArr.deviceNum, resultArr.imei, userid, 3, 1, idcard
        .toUpperCase(), 36, passwordStartTime, passwordEndTime, 6211, row.name, resultArr
        .roomName, (callback) => {
          if (callback.success) {
            var str = JSON.parse(row.content)
            str['password'] = idcard.toUpperCase()
            var updatedata = {
              id: row.id,
              content: JSON.stringify(str),
              serial: callback.data.serialNumber,
              startTime: passwordStartTime,
              endTime: passwordEndTime
            };
            WXAPI.updateCertificates(updatedata).then((res) => {
              wx.showToast({
                title: "下发成功",
                duration:2000,
                icon:"nonoe"
              })

            });
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })
    } else if (row.type == 3) {
      var nfc = "";
      if (content.password.length == 8) {
        nfc = content.password
      } else {
        nfc = dec2hex(content.password);
      }
      var userid = JSON.parse(row.content).userPassword
      if (nfc.length != 8) {
        wx.showToast({
          title: "卡格式错误，请重新录入",
          duration:2000,
          icon:"nonoe"
        })
        return
      }
      ICINLocker.RfCardRegister(resultArr.deviceNum, resultArr.imei, userid, 3, 1, nfc.toUpperCase(),
        50, passwordStartTime, passwordEndTime, 6211, row.name, resultArr.roomName, (
          callback) => {
          if (callback.success) {
            var str = JSON.parse(row.content)
            str['password'] = nfc.toUpperCase()
            str['pzname'] = that.certificatesContent.pzname
            var updatedata = {
              id: row.id,
              content: JSON.stringify(str),
              serial: callback.data.serialNumber,
              startTime: passwordStartTime,
              endTime: passwordEndTime
            };
            WXAPI.updateCertificates(updatedata).then((res) => {
              wx.showToast({
                title: "下发成功",
                duration:2000,
                icon:"nonoe"
              })
            });
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })
    } else if (row.type == 4) {
      var pwd = content.password
      var userid = JSON.parse(row.content).userPassword
      ICINLocker.addForeverPassword(resultArr.deviceNum, resultArr.imei, userid, 3, pwd, 255,
        passwordStartTime, passwordEndTime, 6208, row.name, resultArr.roomName, (
          callback) => {
          if (callback.success) {
            var data1 = JSON.parse(row.content)
            data1['password'] = content.password
            var updatedata = {
              id: row.id,
              content: JSON.stringify(data1),
              serial: callback.data.serialNumber,
              startTime: passwordStartTime,
              endTime: passwordEndTime
            };
            WXAPI.updateCertificates(updatedata).then((res) => {
              wx.showToast({
                title: "下发成功",
                duration:2000,
                icon:"nonoe"
              })
            });
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          } else {
            wx.showToast({
              title: callback.msg,
              duration:2000,
              icon:"nonoe"
            })
          }
        })

    }
  }
  static timeTotimeimp(obj) {
    var year = obj.substr(0, 4)
    var month = obj.substr(4, 2)
    var day = obj.substr(6, 2)
    var hours = obj.substr(8, 2)
    var min = obj.substr(8, 2)
    var miao = obj.substr(10, 2)
    var hm = obj.substr(12, 2)
    var str = year + "-" + month + "-" + day + " " + hours + ":" + min + ":" + miao
    var time = new Date(str)
    var time1 = time.getTime()
    return time1 / 1000;
  }
  // 格式化时间
  static formatTime(time, key) {
    var time1 = JSON.stringify(time)
    var text = ''
    if (time1.length == 14) {
      text = moment(this.timeTotimeimp(time1) * 1000).format('YYYY年MM月DD日 HH:mm:ss')
    } else if (time1.length == 13) {
      text = moment(time).format('YYYY年MM月DD日 HH:mm:ss')
    } else if (time1.length == 10) {
      text = moment(time * 1000).format('YYYY年MM月DD日 HH:mm:ss')
    }
    return text;
  }
  // 去重
  static uniqueArray(array, key) {
    var result = [array[0]];
    for (var i = 1; i < array.length; i++) {
      var item = array[i];
      var repeat = false;
      for (var j = 0; j < result.length; j++) {
        if (item[key] == result[j][key]) {
          repeat = true;
          break;
        }
      }
      if (!repeat) {
        result.push(item);
      }
    }
    return result;
  }
  // 生成树形数据结构
  static ztreeToElementTree(data, config) {
    var id = 'id' // 定义ztree数据存储id（自身的id）的key值，可以自定义但一般都是id、pid这种
    var pid = 'pid' // 定义ztree数据存储pid（父id）的key值
    var children = 'children' // 定义生成的element tree存储子节点的key，可以在element中规定defaultProps: {children: 'children'}
    var idMap = {} // 将原始数据转化为以id为key的map
    var elementTree = [] // 输出的element tree数据
    data.forEach(item => {
      item['value'] = item.id
      item['label'] = item.name
      idMap[item.id] = item
    })
    data.forEach(item => {
      // debugger
      if (idMap[item.pid] != idMap[item.id] && idMap[item.pid]) { // 该item项有爸爸，放到对应的父节点下
        !idMap[item.pid].hasOwnProperty(children) && (idMap[item.pid][children] = [])
        idMap[item.pid][children].push(item)
      } else { // 根节点
        elementTree.push(item)
      }
    });
    return elementTree
  }
  // 根据选择的父级id，获取所有子级id
  static getChild(nodes, item, arr) {
    for (let el of nodes) {
      if (el.id === item) {
        arr.push(el.id);
        if (el.children) {
          this.childNodesDeep(el.children, arr);
        }
      } else if (el.children) {
        this.getChild(el.children, item, arr);
      }
    }
    return arr;
  }
  static childNodesDeep(nodes, arr) {
    if (nodes)
      nodes.forEach((ele) => {
        arr.push(ele.id);
        if (ele.children) {
          this.childNodesDeep(ele.children, arr);
        }
      });
  }
  // 过滤两个数组对象相同id的数据
  static filterObj(arr1, arr2) {
    let arr3 = arr1.filter(obj => !arr2.some(obj1 => obj1 == obj.id))
    return arr3
  }
  // 过滤两个数组对象相同id的数据
  static filterObj1(arr1, arr2) {
    let arr3 = arr1.filter(obj => arr2.some(obj1 => obj1 == obj.id))
    return arr3
  }
  static loopDepName(treeData, id, joinStr, result) {
    let res = []
    const fn = (source) => {
      source.forEach(el => {
        res.push(el)
        el.children && el.children.length > 0 ? fn(el.children) : ""
      })
    }
  }
  static statusCode(code) {
    var str = ''
    switch (code) {
      case 0:
        str = "下发中";
        break;
      case 1:
        str = "下发成功";
        break;
      case 2:
        str = "未下发";
        break;
      case 3:
        str = "下发失败";
        break;
      case 249:
        str = "未发现用户";
        break;
      case 700:
        str = "等待发送";
        break;
      case 701:
        str = "下发中";
        break;
      case 702:
        str = "发送失败";
        break;
      case 703:
        str = "已作废";
        break;
        //LD返回错误码
      case 101224:
        str = "系统已锁定";
        break;
      case 101225:
        str = "存储读写错误";
        break;
      case 101226:
        str = "管理员手机号比对失败";
        break;
      case 101227:
        str = "存储空间已满";
        break;
      case 101228:
        str = "本地未检测到该凭证";
        break;
      case 101229:
        str = "参数错误";
        break;
      case 101230:
        str = "绑定失败";
        break;
      case 101240:
        str = "设备未绑定";
        break;
      case 101241:
        str = "设备ID不匹配";
        break;
      case 101242:
        str = "未添加蓝牙密码";
        break;
      case 101243:
        str = "蓝牙密码鉴权失败";
        break;
      case 101244:
        str = "门已反锁";
        break;
      case 101245:
        str = "门已开启";
        break;
      case 101246:
        str = "密码长度异常";
        break;
      case 101247:
        str = "当前用户容量已满";
        break;
      case 101248:
        str = "密码已存在(卡片已存在)";
        break;
      case 101249:
        str = "用户不存在";
        break;
      case 101250:
        str = "用户ID匹配失败";
        break;
      case 101251:
        str = "数据错误";
        break;
      case 101252:
        str = "初始密码比对失败";
        break;
      case 101253:
        str = "凭证ID无效";
        break;
        //ZG返回错误码
      case 201002:
        str = "包格式错误";
        break;
      case 201003:
        str = "密码错误";
        break;
      case 201004:
        str = "网络中断";
        break;
      case 201005:
        str = "用户未登记";
        break;
      case 201006:
        str = "参数错误";
        break;
      case 201007:
        str = "需要鉴权";
        break;
      case 201008:
        str = "无权限";
        break;
      case 201009:
        str = "应答超时";
        break;
      case 201010:
        str = "权限校验错误";
        break;
      case 201011:
        str = "钥匙不存在";
        break;
      case 201012:
        str = "钥匙过期";
        break;
      case 201013:
        str = "钥匙数量已到上限";
        break;
      case 201014:
        str = "钥匙无效";
        break;
      case 201015:
        str = "钥匙已存在";
        break;
      case 201016:
        str = "用户已存在";
        break;
      case 201017:
        str = "密码失效";
        break;
      case 201018:
        str = "无效指令";
        break;
      case 201019:
        str = "门锁时间异常";
        break;
      case 201020:
        str = "门锁NB芯片故障";
        break;
      case 201021:
        str = "门锁无NB芯片";
        break;
      case 201022:
        str = "升级程序校验通过";
        break;
      case 201023:
        str = "升级程序项目不匹配";
        break;
      case 201024:
        str = "升级程序版本太低";
        break;
      case 201025:
        str = "升级程序长度超长";
        break;
      case 201026:
        str = "升级程序启动失败";
        break;
      case 201033:
        str = "升级程序进行中";
        break;
      case 201034:
        str = "升级数据写入错误";
        break;
      case 201035:
        str = "升级数据校验和错误";
        break;
      case 201049:
        str = "到达数目定义上限";
        break;
      case 201050:
        str = "密码已经存在";
        break;
      case 201051:
        str = "禁止删除超管";
        break;
      case 201052:
        str = "门禁卡故障";
        break;
      case 201053:
        str = "远程指纹录入进行中";
        break;
      case 201054:
        str = "远程指纹上次录入未完成";
        break;
      case 201055:
        str = "远程指纹录入后,重复添加该用户";
        break;
      case 201254:
        str = "设备没有被发现";
        break;
      case 201255:
        str = "异常，未知错误";
        break;
      default:
        str = "异常";
        break;
    }
    return str
  }
}
