import { showToast } from './utils/feedback'
import { formatTime, arrRemoveObj, getTypeItem } from './utils/util'

const baseUrl = "https://test-ding.g107.com/";//测试
// const baseUrl = "https://ding.insys.g107.com/";//正式
var that;
var yearArr = [];
var year = formatTime(new Date()).year;
for (var i = 2018; i <= year; i++) {
  yearArr.push(i);
}
App({
  //自定义全局变量
  globalData: {
    showToast: showToast,//提示框
    arrRemoveObj: arrRemoveObj,//删除数组的某一项
    year: formatTime(new Date()).year,//当前年
    month: formatTime(new Date()).month,//当前月
    day: formatTime(new Date()).day,//当前日
    month_tow: formatTime(new Date()).month_tow,//当前月份
    allDate: formatTime(new Date()).allDate,//带时分
    types: [],
    userData: '',
    token: '',
    ALIOSS_URL: 'https://integralsys.oss-cn-shenzhen.aliyuncs.com',
    imgHttpUrl: 'https://intesys.cms.g107.com/integral.php/Api/get_signature',
    corpId: '',
    yearArr: yearArr,
    isAdministrator: false,//是否管理员
    isCreator: false,//是否是创始人
    corpMessage: '',//企业套餐信息
    usersList: [],//缓存的人员列表

  },
  //获取积分类型
  getTypes(callBack) {
    this.$get("api/integral/types", {}).then((res) => {
      this.globalData.types = res.data.data.list;
      callBack();
    })
  },
  //获取套餐信息
  getCorp(corpId) {
    this.$get("api/order/corp", { corp_id: corpId }).then((res) => {
      this.globalData.corpMessage = res.data.data;
    })
  },
  routerGet2(url, data = {}, Accept) {
    return new Promise(function (resolve, reject) {
      dd.httpRequest({
        url: baseUrl + url,
        method: 'GET',
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'A-Token': that.globalData.token,
          'Accept': Accept ? Accept : ''
        },
        data: data,
        dataType: 'json',
        success: function (res) {
          if (res.data.code == 1) {
            if (res.data.refresh_token && res.data.refresh_token != that.globalData.token) {
              that.globalData.token = res.data.refresh_token
            }
            resolve(res);
          } else if (res.data.code == 401) {
            that.globalData.showToast("授权已过期");
            // reject(res);
          } else {
            that.globalData.showToast(res.data.msg)
            // reject(res);
          }
        },
        fail: function (res) {
          if (res.errorMessage == 'NETWORK ERROR') {
            dd.alert({
              title: '网络异常',
              content: '网络异常，请检查网络是否畅通，再重新进入应用',
              buttonText: '我知道了',
              success: () => { },
            });
            return;
          }
          reject(res);
        }
      });
    })
  },
  routerGet(url, data = {}, Accept) {
    return new Promise(function (resolve, reject) {
      dd.showLoading();
      dd.httpRequest({
        url: baseUrl + url,
        method: 'GET',
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'A-Token': that.globalData.token,
          'Accept': Accept ? Accept : ''
        },
        data: data,
        dataType: 'json',
        success: function (res) {
          if (res.data.code == 1) {
            if (res.data.refresh_token && res.data.refresh_token != that.globalData.token) {
              that.globalData.token = res.data.refresh_token
            }
            resolve(res);
          } else if (res.data.code == 401) {
            that.globalData.showToast("授权已过期");
            // reject(res);
          } else {
            that.globalData.showToast(res.data.msg)
            // reject(res);
          }
        },
        fail: function (res) {
          if (res.errorMessage == 'NETWORK ERROR') {
            dd.alert({
              title: '网络异常',
              content: '网络异常，请检查网络是否畅通，再重新进入应用',
              buttonText: '我知道了',
              success: () => { },
            });
            return;
          }
          reject(res);
        },
        complete: function () {
          dd.hideLoading();
        }
      });
    })
  },
  routerPost(url, data = {}, Accept) {
    return new Promise(function (resolve, reject) {
      dd.httpRequest({
        url: baseUrl + url,
        method: 'POST',
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded',
          'A-Token': that.globalData.token,
          'Accept': Accept ? Accept : ''
        },
        data: data,
        dataType: 'json',
        success: function (res) {
          if (res.data.code == 1) {
            if (res.refresh_token && res.data.refresh_token != that.globalData.token) {
              that.globalData.token = res.data.refresh_token
            }
            resolve(res);
          } else if (res.data.code == 401) {
            that.globalData.showToast("授权已过期");
            reject(res);
          } else {
            that.globalData.showToast(res.data.msg);
            reject(res);
          }
        },
        fail: function (res) {
          if (res.errorMessage == 'NETWORK ERROR') {
            dd.alert({
              title: '网络异常',
              content: '网络异常，请检查网络是否畅通，再重新进入应用',
              buttonText: '我知道了',
              success: () => { },
            });
            return;
          }
          reject(res);
        }
      });
    })
  },
  //封装post
  $post(url, data = {}, Accept) {
    // if (url == 'api/ding/login') {
    //   return that.routerPost(url, data, Accept);
    // }
    // if (!that.globalData.token) {
    //   dd.navigateTo({
    //     url: '../../init/init'
    //   })
    //   return Promise.reject("登录中")
    // } else {
    return that.routerPost(url, data, Accept);
    // }
  },
  //封装get
  $get(url, data = {}, Accept) {
    // if (url == 'api/integral/types' || url == 'api/order/corp') {
    //   return that.routerGet(url, data, Accept);
    // }
    // if (!that.globalData.token) {
    //   dd.navigateTo({
    //     url: '../../init/init'
    //   })
    //   return Promise.reject("登录中")
    // } else {
    return that.routerGet(url, data, Accept);
    // }
  },
  //封装get
  $get2(url, data = {}, Accept) {
    // if (url == 'api/integral/types' || url == 'api/order/corp') {
    //   return that.routerGet2(url, data, Accept);
    // }
    // if (!that.globalData.token) {
    //   dd.navigateTo({
    //     url: '../../init/init'
    //   })
    //   return Promise.reject("登录中")
    // } else {
    return that.routerGet2(url, data, Accept);
    // }
  },
  //免登
  login(corpId, callBack, errBack=function(){}) {
    if (that.globalData.token) {
      callBack(true)
    } else {
      dd.getAuthCode({
        success: function (res) {
          that.$post('api/ding/login', { authCode: res.authCode, corpId: corpId }).then(res => {
            if (res.data.code == 1) {
              var { token, user } = res.data.data;
              var isStart = false;
              if (user.is_official == 1) {
                user.employee_detail.role_list.forEach(item => {
                  if (item.name == 'creator') {
                    that.globalData.isCreator = true;
                    isStart = true;
                  }
                  if (item.name == 'admin' || item.name == 'creator' || item.name == 'point_manager' || item.name == 'dept_manager') {
                    that.globalData.isAdministrator = true;
                  }
                });
                that.globalData.token = token;
                that.globalData.userData = user;
                var getIsStart = dd.getStorageSync({ key: 'isStart' });//判断是否需要打开引导页
                // console.log(JSON.stringify(user));
                that.getUserList();//缓存人员列表
                if (isStart && !getIsStart.data) {//判断是否需要打开引导
                  dd.reLaunch({
                    url: '../../start/start'
                  })
                } else {
                  callBack(true);
                }
              } else {
                callBack(false);
              }
            } else if (res.data.code == 3000) {
              that.globalData.showToast("员工信息同步中，请稍后进入")
            } else {
              that.globalData.showToast(res.msg)
            }
          }).catch(err => {
            // console.log(err)
            errBack(err.data);
            return
            if (err.data.code == 2001) {
              dd.confirm({
                title: '尊敬的用户',
                content: '您当前的套餐已到期',
                confirmButtonText: '去续费',
                cancelButtonText: '暂不需要',
                success: (result) => {
                  if (result.confirm) {
                    dd.reLaunch({
                      url: `../../deploy/addMoney/addMoney`
                    })
                  }
                },
              });
            }
          })
        },
        fail: function (err) {
          console.log(JSON.stringify(err))
          that.globalData.showToast("错误" + JSON.stringify(err))
        }
      });
    }
  },
  getUserList() {
    this.$get("api/employee/list", { dept_id: 0 }).then((res) => {
      that.globalData.usersList = res.data.data.list;
    })
  },
  getTypesItem(id) {
    return getTypeItem(this.globalData.types, id);
  },
  updateApp(){
    const updateManager = dd.getUpdateManager()
    updateManager.onCheckForUpdate(function (res) {
      // 请求完新版本信息的回调
      console.log(res.hasUpdate) // 是否有更新
    })
    updateManager.onUpdateReady(function (ret) {
      console.log(ret.version) // 更新版本号
      dd.confirm({
        title: '更新提示',
        content: '新版本已经准备好，是否重启应用？',
        success: function (res) {
          if (res.confirm) {
            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启
            updateManager.applyUpdate()
          }
        }
      })
    })
    updateManager.onUpdateFailed(function () {
      // 新版本下载失败
    })
  },
  onLaunch(options) {
    that = this;
    // that.updateApp();
    that.getTypes(function () { });
    that.getCorp(options.query.corpId);
    that.globalData.corpId = options.query.corpId;
  },
});
