/*******************************************************************************
* Copyright(c) 2022 dongke All rights reserved. / Confidential
* 类的信息：
*		1.程序名称：
*		2.功能描述：欢迎页面画面
* 编辑履历：
*		作者				日期					版本				修改内容
*		姜永辉		  	2022-11-22			1.00		   	新建
*******************************************************************************/
const app = getApp()

const api = require('@/utils/api.js');
const config = require('@/config/config.js');
const Constants = require('@/utils/Constants.js');
const util = require('@/utils/util.js');
const { gradeCode } = require('@/utils/Constants.js');
Page({

    /**
     * 页面的初始数据
     */
    data: {
        imageUrl: config.image_url + '/static/img/',
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        console.log("welcome", options);
        // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
        if (options.scene) {
            var scene = decodeURIComponent(options.scene)
            this.setData({
                scene: scene,
            })
        }
        // 从员工一览购买授权过来
        if (options.buy) {
            this.setData({
                buy: options.buy,
            })
        }

        // 小程序推送消息传过来的值
        if (options.loginType) {
            this.setData({
                loginType: options.loginType,
                //小程序推送消息传过来的值 pages/welcome/welcome?loginType=loginType&otherParam=值 

            })
        }
        // 推送消息的其他参数-字符串处理，需要json到各自模块转换
        if (options.otherParam) {
            let reg = /\\/g
            let otherParam = options.otherParam.replace(reg, '')
            this.setData({
                otherParam
            })
        }

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {
        // 登录 code
        this.wx_login()
        console.log("app.global", app.globalData);
    },

    /**
    * @desc : 登录
    * @date : 2022/5/12 13:49
    * @author : 姜永辉
    */
    wx_login() {
        let _this = this
        _this.wxlogin().then(res => {
            _this.getopenid({ code: res.code });
        })
    },

    /**
    * @desc : 获取微信派发的临时登录凭证
    * @date : 2022/5/12 13:49
    * @author : 姜永辉
    */
    wxlogin() {
        return new Promise((resolve, reject) => {
            // 登录
            wx.login({
                success: res => {
                    // 发送 res.code 到后台换取 openId, sessionKey, unionId
                    if (res.code) {
                        resolve(res)
                    } else {
                        reject(res)
                    }
                }
            })
        })
    },

    /**
    * @desc : 获取微信派发的 openid
    * @date : 2022/5/12 13:49
    * @author : 姜永辉
    */
    getopenid(param) {
        let _this = this
        api.request(Constants.SYS_OPENID_API + 'oauth/wx/login_wechat', 'POST', param).then(res => {
            if (res.data.code == Constants.SUCESS_CODE) {
                app.globalData.openid = res.data.data.openid
                app.globalData.unionid = res.data.data.unionid
                app.globalData.sessionkey = res.data.data.session_key
                _this.gettoken()
            }
        })
    },

    /**
    * @desc : 通过openid获取用户信息
    * @date : 2022/5/12 13:49
    * @author : 姜永辉
    */
    gettoken() {
        let _this = this
        //  调用接口
        _this.getTokenPromise().then(res => {
            if (res.data.code === Constants.SUCESS_CODE) {
                let data = res.data.data;
                console.log('company', data.company);

                // 记录登录的缓存
                app.globalData.company = data.company

                // 说明注册未支付
                if (!data.company.license) {
                    // 成功后跳转支付
                    _this.toPay(res.data.data);
                    return
                }

                app.globalData.user = {
                    userId: data.userId,
                    userName: data.userName,
                    userPhone: data.userPhone
                }
                app.globalData.token = res.data.data.accessToken
                // 读取后台设置的url
                if (data.company && data.company.svcIp && data.company.svcPort) {
                    app.globalData.URI = data.company.svcIp + ':' + data.company.svcPort
                }
                if (data.company == undefined && data.joinedCps != undefined && data.joinedCps.length > 0) {
                    // 调转加入企业
                    wx.reLaunch({
                        url: '../../pages/company/company',
                    })
                }
                else if (data.company == undefined
                    || res.data.data.company.cpId == null
                    || res.data.data.company.cpId == ''
                    || res.data.data.company.cpId == undefined) {
                    // 调转选择公司
                    wx.reLaunch({
                        url: '../../pages/login/login',
                    })
                }
                else {
                    // // 接口登录后获取数据
                    _this.getInfoAfterLogin()
                }
            }
            else if (res.data.code === 1015 || res.data.code === 1016) {
                // 当前用户未注册 // 公司到期
                // 调转选择公司
                setTimeout(() => {
                    wx.reLaunch({
                        url: '../../pages/login/login',
                    })
                }, 2000)
            }
        })
    },
    /**
     * @desc : 微信支付
     * @date : 2022/5/12 13:49
     * @author : 姜永辉
     */
    toPay(e) {
        console.log("toPay", e);
        let trade = e.company.trade
        let wechatPayService = app.globalData['wechatPayService']
        let params = {
            openId: app.globalData.openid,
            payFee: trade.tradeAmount,
            paymentSn: trade.tradeNo,
        }
        api.request(wechatPayService.prefix + wechatPayService.unifiedOrder, 'POST', params).then(res => {
            if (res.data.code === Constants.SUCESS_CODE) {
                var appid = res.data.data.appId
                var timeStamp = res.data.data.timeStamp
                var nonce_str = res.data.data.nonceStr
                var pk = res.data.data.pack
                var paySign = res.data.data.paySign
                let _this = this
                //调用微信支付
                wx.requestPayment({
                    'appId': appid,
                    'timeStamp': timeStamp,
                    'nonceStr': nonce_str,
                    'package': pk,
                    'signType': 'MD5',
                    'paySign': paySign,
                    'success': function (res) {
                        console.log('success', res);
                        wx.showToast({
                            title: '支付成功',
                            image: '/static/image/success.png',
                            duration: 2000
                        })
                        _this.setData({
                            loading: false
                        })
                        //刷新当前页面
                        _this.onShow()
                    },
                    'fail': function (res) {
                        console.log('fail', res);
                        _this.setData({
                            loading: false
                        })
                    },
                    'complete': function (res) {
                        // console.log(res);
                        console.log('complete', res);
                    }
                });
            }
        });
    },
    /**
    * @desc : 登录后获取数据
    * @date : 2022/5/12 13:49
    * @author : 周兴
    */
    getInfoAfterLogin() {
        api.request('mdm-server/mst/staff/get_info_after_login', 'POST',
            {
                'appCode': Constants.APP_CODE,
                'cpId': app.globalData.company.cpId,
                'userId': app.globalData.user.userId
            }).then(res => {
                if (res.data.code === Constants.SUCESS_CODE) {
                    // 服务器的日期
                    let nowDate = res.data.data.nowDate
                    app.globalData.nowDate = nowDate
                    // 员工
                    let staff = res.data.data.staff
                    if (staff && staff.staffId) {
                        // 判断当前用户是否到期 标准版
                        if (app.globalData.company.gradeCode == Constants.gradeCode.STD && !staff.flgInit) {
                            let userEndDate = app.globalData.company.userEndDate
                            if (userEndDate) {
                                // 必须用服务器的返回时间来判断是否到期
                                let diffs = new Date(userEndDate).dayDiff(new Date(nowDate))
                                // 说明已经到期，跳转到
                                if (diffs < 0) {
                                    util.showToast('用户已到期，到期日期【' + userEndDate + '】')
                                    setTimeout(() => {
                                        wx.reLaunch({
                                            url: '../../pages/login/login',
                                        })
                                    }, 2000)
                                    return;
                                }
                            }
                        }
                        app.globalData.user.staffId = staff.staffId
                        app.globalData.user.staffCode = staff.staffCode
                        app.globalData.user.staffName = staff.staffName
                        app.globalData.user.roleIds = staff.roleIds
                        app.globalData.user.orgId = staff.orgId
                        app.globalData.user.orgName = staff.orgName
                        app.globalData.user.defaultWhName = staff.defaultWhName
                        app.globalData.user.defaultWhId = staff.defaultWhId
                        app.globalData.user.flgBusiness = staff.flgBusiness
                        app.globalData.user.flgInit = !!staff.flgInit
                        console.log('ffffffd', app.globalData.company);

                        // 调转主页--注意有场景值的情况 
                        if (this.data.scene) {
                            wx.reLaunch({
                                url: '../../pages/home-page/home-page?scene=' + this.data.scene,
                            })
                        } else if (this.data.buy) {
                            wx.reLaunch({
                                url: '../../pages/home-page/home-page?buy=' + this.data.buy,
                            })
                        } else {
                            wx.reLaunch({
                                url: '../../pages/home-page/home-page',
                            })
                        }
                    }
                    // 菜单
                    let menuList = res.data.data.menuList
                    if (menuList) {
                        // 如果标准版把销售出库 修改为订单开单
                        // if (app.globalData.company.gradeCode == Constants.gradeCode.STD) {
                        //     let filters = menuList.filter(it => it.objectCode == 'order-out');
                        //     if (filters && filters.length > 0) {
                        //         filters[0].menuName = '订单开单'
                        //         filters[0].name = '订单开单'
                        //     }
                        //     // 出库明细表修改为销售明细表
                        //     filters = menuList.filter(it => it.objectCode == 'out-detail-report');
                        //     if (filters && filters.length > 0) {
                        //         filters[0].menuName = '销售明细表'
                        //         filters[0].name = '销售明细表'
                        //     }
                        // }
                        // 处理操作链接
                        let filters = menuList.filter(it => it.menuTags)
                        if (filters && filters.length > 0) {
                            filters.forEach(t => {
                                if (t.menuTags.value) {
                                    let val = JSON.parse(t.menuTags.value)
                                    t.guideUrl = val.guideUrl
                                }
                            })
                        }
                        app.globalData.menus = menuList
                    }
                    // 常用菜单
                    let comMenuList = res.data.data.comMenuList
                    if (comMenuList) {
                        app.globalData.comMenuList = comMenuList
                    }
                    // 系统参数
                    let setting = res.data.data.settingValue
                    if (setting) {
                        app.globalData.setting = JSON.parse(setting.setting.value)
                        // console.log('setting', app.globalData.setting[Constants.settingCode.IVT001]);
                    }
                    // 系统字典
                    let dataKindList = res.data.data.dataKindList
                    if (dataKindList) {
                        app.globalData.dataKindList = dataKindList
                    }
                } else {
                    // 报错跳转到登录界面
                    setTimeout(() => {
                        wx.reLaunch({
                            url: '../../pages/login/login',
                        })
                    }, 3000)
                }
            })
        console.log('app.globalData', app.globalData);
    },

    /**
    * @desc : 获取微信派发的临时登录凭证
    * @date : 2022/5/12 13:49
    * @author : 姜永辉
    */
    getTokenPromise() {
        return new Promise((resolve, reject) => {
            api.request(Constants.SYS_OPENID_API + 'oauth/wx/token', 'POST',
                { 'userWxid': app.globalData.openid }).then(res => {
                    resolve(res)
                })
        })
    },

    /**
     * @desc : 获取语言的方法
     * @author : 周兴
     * @date : 2024/1/19
     */
    $t(name) {
        if (this.data.$t[name]) {
            return this.data.$t[name];
        } else {
            return name;
        }
    },

})