"use strict";
import { config } from './config.js';
import { khcAlert } from './component/alert/khcAlert.js';
import { util } from './util/util.js'
import { khcMask } from "./component/alert/khcMask.js";
import {home} from "./component/home.js";
import {fullMap} from "./fullMap.js";
import {websocket} from "./component/websocket/websocket.js";
import {khcToastr} from "./component/alert/khcToastr.js";
import {httpUtil} from "./util/httpUtil.js";
axios.defaults.baseURL = config.getConfigJson().baseURL;
config.getConfigJson().downFileUrl=config.getConfigJson().baseURL+config.getConfigJson().contextPath+'/api/file/downFile'//这个没走axios，所以补上/api
//全局响应拦截器
axios.interceptors.response.use( (response)=> {
    if (response.data.status != 'ok') {//非ok状态则根据响应的中文错误信息弹出
        let alertData={title:response.data.message,text:'标识码：' + response.data.status}
        khcAlert.showSystemError(alertData);
        return response;
    }else{
        return response;
    }
},  (error)=> {
    return Promise.reject(error);//错误信息不处理，交给全局异常处理
});

//监听js运行时错误事件
window.addEventListener('error', (error) => {
    //当资源（如img或script）加载失败，加载资源的元素会触发一个Event接口的error事件，并执行该元素上的onerror()处理函数。
    //这些error事件不会向上冒泡到window，但可以在捕获阶段被捕获因此如果要全局监听资源加载错误，需要在捕获阶段捕获事件
    khcAlert.showSystemError(error.message);
});
window.addEventListener('unhandledrejection', (error) => {
    fullMap.getObj('mask').hide();
    if (error.reason.code == "ERR_BAD_RESPONSE") {//后端接口不通异常
        let alertData={title:'服务器正在升级更新',text:'请稍后再访问'}
        khcAlert.showSystemError(alertData);//出现此异常，说明和后端通信异常，检查后端是否正常运行，和IP和端口是否正确
    } else {
        //其他异常，这个能复现的有当前页面还没渲染完就点击下一个菜单导致捕抓到此异常
        let alertData={title:'操作频繁',text:'请稍后再访问'}
        khcAlert.showSystemError(alertData);
    }
});
document.querySelector('title').innerText=config.getConfigJson().systemFullName;//set 系统名称
document.querySelector('link[rel="icon"]').href=config.getConfigJson().iconPath;//set icon
let mask = new khcMask();
fullMap.push('mask',mask);
isWhiteListIP();
function isWhiteListIP(){
    let params={}
    params.nosessionCode='ns_system_config'
    params.methodNameShow="isWhiteListIP";//调试字段
    params.methodName=util.textEncrypt('isWhiteListIP',new Date().getTime(),util.getLocalStorageItem('ip'));
    let obj={url:config.getConfigJson().nosessionActionUrl,params:params,config:'no token'}
    httpUtil.post(obj, (response)=> {
        let ip=response.data.data.ip
        console.log(ip)
        util.setLocalStorageItem('ip',ip)
    })
}
await mask.show('正在加载...');
let code=util.getUrlParam('code');
if(util.isNull(code)){
    mask.hide();
    khcAlert.showSystemError('无效的访问')
}else{
    mask.hide(1000);
    setTimeout(()=>{
        let params={}
        params.nosessionCode='ns_system_config'
        params.code=code
        params.methodNameShow="getNoSessionInfo";//调试字段
        params.methodName=util.textEncrypt('getNoSessionInfo',new Date().getTime(),util.getLocalStorageItem('ip'));
        let obj={url:config.getConfigJson().nosessionActionUrl,params:params,config:'no token'}
        httpUtil.post(obj,(response)=>{
            let resData=response.data.data.data
            let jsonConfig={button_method:resData['js_method_name']}
            util.import2023(resData['js_file'],jsonConfig);
        });
    },600)
}

