import router from "../router";
import { wecomTicket } from "../api/indexAI";
declare let wx: any;
export const dateFormat = (fmt: string, x: Date | string) => {
  const date = typeof x === "string" ? new Date(x) : x;
  let ret;
  let opt: IAny = {
    "Y+": date.getFullYear().toString(), // 年
    "M+": (date.getMonth() + 1).toString(), // 月
    "d+": date.getDate().toString(), // 日
    "h+": date.getHours().toString(), // 时
    "m+": date.getMinutes().toString(), // 分
    "s+": date.getSeconds().toString() // 秒
  };
  for (let k in opt) {
    ret = new RegExp("(" + k + ")").exec(fmt);
    if (ret) {
      fmt = fmt.replace(
        ret[1],
        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
      );
    }
  }
  return fmt;
};

export const RegAccount = /^[a-zA-Z0-9]{9,16}$/;

export const Dateformat = (t: string | Date, format: string) => {
  let fmt = format;
  let ret;
  const date = typeof t === "string" ? new Date(t) : t;
  const opt: IAny = {
    "Y+": date.getFullYear().toString(), // 年
    "m+": (date.getMonth() + 1).toString(), // 月
    "d+": date.getDate().toString(), // 日
    "H+": date.getHours().toString(), // 时
    "M+": date.getMinutes().toString(), // 分
    "S+": date.getSeconds().toString() // 秒
    // 有其他格式化字符需求可以继续添加，必须转化成字符串
  };
  for (let k in opt) {
    ret = new RegExp("(" + k + ")").exec(fmt);
    if (ret) {
      fmt = fmt.replace(
        ret[1],
        ret[1].length == 1 ? opt[k] : opt[k].padStart(ret[1].length, "0")
      );
    }
  }
  return fmt;
};

export const getWecomType = (agentFrom: string) => {
  switch (agentFrom) {
    case 'ssb':
      return 0;
    case 'hbs':
      return 1;
    case 'stoneLikePaint':
      return 2;
    case 'goldShop':
      return 3;
    case 'dg':
      return 4;
    default:
      return 0; // 默认为0
  }
}

export const toLBHome = () => {
  router.replace('/');
}

export const toXiaoChengxu = (appid) => {
  let url = window.location.href.split("#")[0];
  wx.ready(function () {
    wx.checkJsApi({
      jsApiList: ["agentConfig", "launchMiniprogram"], // 需要检测的JS接口列表
      success: function (res) {
        const formData = new FormData();
        formData.append('url', url);
        formData.append('agent', '1');
        wecomTicket(formData).then(response => {
          if (response.status == 200) {
            let yingyongData = response.Data;
            wx.agentConfig({
              corpid: yingyongData.appid, // 必填，企业微信的corpid，必须与当前登录的企业一致
              agentid: process.env.VUE_APP_AGENTID, // 必填，企业微信的应用id （e.g. 1000247）
              timestamp: yingyongData.timestamp, // 必填，生成签名的时间戳
              nonceStr: yingyongData.noncestr, // 必填，生成签名的随机串
              signature: yingyongData.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
              jsApiList: ["launchMiniprogram"], //必填，传入需要使用的接口名称
              success: function (res) {
                wx.invoke(
                  "launchMiniprogram",
                  {
                    appid: appid, // 需跳转的小程序appid
                    path: "" // 所需跳转的小程序内页面路径及参数。非必填
                  },
                  function (res) {
                    if (res.err_msg == "launchMiniprogram:ok") {
                      // 正常
                      console.log("正常");
                    } else {
                      // 错误处理
                    }
                  }
                );
              },
              fail: function (res) {
                if (res.errMsg.indexOf("function not exist") > -1) {
                  alert("版本过低请升级");
                }
              }
            });
          }
        });
      }
    });
  });
}

// 获取微信API授权信息
export const getWxconfig = () => {
  const jsApiList = ['getSetting', 'authorize', 'showModal', 'openSetting', 'downloadFile', 'saveImageToPhotosAlbum'];
  let url = window.location.href.split("#")[0];
  const formData = new FormData();
  formData.append('url', url);
  formData.append('agent', '1');
  wecomTicket(formData).then(response => {
    if (response.status == 200) {
      let qiyeData = response.Data;
      wx.agentConfig({
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来，若要查看传入的参数，可以在pc端打开，参数信息会通过log打出，仅在pc端时才会打印。
        corpid: qiyeData.appid, // 必填，企业微信的corpid，必须与当前登录的企业一致
        agentid: process.env.VUE_APP_AGENTID, // 必填，企业微信的应用id （e.g. 1000247）
        timestamp: qiyeData.timestamp, // 必填，生成签名的时间戳
        nonceStr: qiyeData.noncestr, // 必填，生成签名的随机串
        signature: qiyeData.signature, // 必填，签名，见附录-JS-SDK使用权限签名算法
        jsApiList: [...jsApiList], //必填，传入需要使用的接口名称
        success: function (res) {
          console.log('获取签名成功');
        },
        fail: function (res) {
          console.log(res);
          if (res.errMsg.indexOf('function not exist') > -1) {
            alert('版本过低请升级');
          }
        },
      });
    }
  });
}
