<script setup>
import { reactive, inject, onMounted } from 'vue';
import { onLaunch, onShow, onHide } from '@dcloudio/uni-app';
import useUserStore from './stores/useUserStore';
import useDictStore from './stores/useDictStore';
const { $api, navTo, appendScriptTagElement, aes_Decrypt, sm2_Decrypt } = inject('globalFunction');
import config from '@/config.js';

const appword = 'aKd20dbGdFvmuwrt'; // 固定值

onLaunch((options) => {
    // uni.hideTabBar();
    useDictStore().getDictData();
    try {
        getUserInfo();
    } catch {
        console.log('不是爱山东平台，使用测试登陆');
        useUserStore().initSeesionId(); //更新
        let token = uni.getStorageSync('token') || ''; // 同步获取 缓存信息
        if (token) {
            useUserStore()
                .loginSetToken(token)
                .then(() => {
                    $api.msg('登录成功');
                });
        } else {
            uni.redirectTo({
                url: '/pages/login/login',
            });
        }
    }
});

onMounted(() => {});

onShow(() => {
    console.log('App Show');
});

onHide(() => {
    console.log('App Hide');
});

function getUserInfo() {
    lightAppJssdk.user.getUserInfoWithEncryptedParamByAppId({
        appId: config.appInfo.loveShandong, // 接入方在成功创建应用后自动生成
        success: function (data) {
            if (data == '未登录') onLoginApp();
            else {
                if (typeof data == 'string') data = JSON.parse(data);
                const sm2_privateKey = config.appInfo.sm2PrivateKey;
                let sm2_encrypt_result = data.data;
                let sm2_decrypt_result = sm2_Decrypt(sm2_encrypt_result, sm2_privateKey);
                console.log(sm2_decrypt_result);
                if (typeof sm2_decrypt_result == 'string') sm2_decrypt_result = JSON.parse(sm2_decrypt_result);

                // 其次,对sm2解密后的结果进行 aes解密
                // aes解密需要用到 appword , 为固定值,使用示例代码中的即可
                let aes_encrypt_result = sm2_decrypt_result.data;
                let aes_decrypt_result = aes_Decrypt(aes_encrypt_result, appword);
                // 加密
                loginCallback(aes_decrypt_result);
            }
        },
        fail: function (data) {
            console.log('err', data);
        },
    });
}

/**
 * 使用jssdk调用登录页面
 */
function onLoginApp() {
    lightAppJssdk.user.loginapp({
        success: function (data) {
            if (data == '未登录') {
                //取消登录或登录失败，关闭页面
                oncloseWindow();
            } else {
                getUserInfo();
            }
        },
        fail: function (data) {
            //关闭页面
            oncloseWindow();
        },
    });
}

/**
 * 关闭容器
 */
function oncloseWindow() {
    lightAppJssdk.navigation.close({
        success: function (data) {},
        fail: function (data) {},
    });
}

function loginCallback(userInfo) {
    let params = {
        username: userInfo,
    };
    $api.createRequest('/app/login', params, 'post').then((resData) => {
        useUserStore()
            .loginSetToken(resData.token)
            .then((resume) => {
                if (resume.data.jobTitleId) {
                    useUserStore().initSeesionId();
                    uni.reLaunch({
                        url: '/pages/index/index',
                    });
                } else {
                    uni.redirectTo({
                        url: '/pages/login/login',
                    });
                }
            });
    });
}
</script>

<style>
/*每个页面公共css */
@import '@/common/animation.css';
@import '@/common/common.css';
/* 修改pages tabbar样式 H5有效 */
.uni-tabbar .uni-tabbar__item:nth-child(4) .uni-tabbar__bd .uni-tabbar__icon {
    height: 110rpx !important;
    width: 122rpx !important;
    margin-top: 6rpx;
}

.uni-tabbar-border {
    background-color: transparent !important;
    /* background-color: #e4e4e4 !important; */
}
.uni-popup {
    z-index: 1001 !important;
}
/* 提升toast层级 */
uni-toast,
uni-modal,
.uni-modal,
.uni-mask {
    z-index: 998;
}

@font-face {
    font-family: DingTalk JinBuTi;
    src: url('/static/font/DingTalk JinBuTi_min.woff2') format('woff2');
    font-display: swap;
}

@font-face {
    font-family: PingFangSC-Regular;
    src: url('https://qd.zhaopinzao8dian.com/file/csn/PingFangSC-Regular.woff2') format('woff2');
    font-display: swap;
}

@font-face {
    font-family: PingFangSC-Medium;
    src: url('https://qd.zhaopinzao8dian.com/file/csn/PingFangSC-Medium.woff2') format('woff2');
    font-display: swap;
}

@font-face {
    font-family: DIN-Medium;
    src: url('https://qd.zhaopinzao8dian.com/file/csn/DIN-Medium.woff2') format('woff2');
    font-display: swap;
}

body {
    font-family: 'PingFangSC-Regular', 'PingFang SC', 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}
</style>
