import { createRouter, createWebHistory, RouteRecordRaw, createWebHashHistory } from 'vue-router'
import { defineAsyncComponent } from 'vue'
import store from "@/store"
import { useStore } from "vuex";
import { Https } from "@/tool/https";
import { getCookie, setCookie } from "@/tool/cookie";
const _import = (path: string) => () => import(`../views/${path}.vue`);
const _import_component = (path : string) => () => import(`../component/${path}`);
const _import_custom = (path : string) => () => import(`../views/${path}`);
// defineAsyncComponent(import(`../views/${path}.vue`))
const routes: Array<RouteRecordRaw> = [
	{
		path: "/",
		// redirect重定向
		meta:{enter:'all',},
		redirect: "/Square"
		// redirect: "/upgrade"
		
	},
	{
		path: '/login',
		name: 'login',
		meta:{enter:'all',},
		component: _import('LoginPage')
	},
	{
		path: '/test',
		name: 'test1',
		meta:{enter:'all',},
		component: _import('test')
	},
	{
		path: '/register',
		name: 'register',
		meta:{enter:'all',},
		component: _import('Register')
	},
	// {
	// 	path: '/register',
	// 	name: 'register',
	// 	component: _import('RegisterPage')
	// },
	{
		path: '/upgrade',
		name: 'upgrade',
		meta:{enter:'all',},
		component: _import('Upgrade'),
	},
	// {
	// 	path: '/home',
	// 	name: 'home',
	// 	component: _import('HomeView')
	// },
	{
		path: '/home',
		name: 'home',
		meta:{enter:'all',},
		component: _import('HomeMain'),
		children:[
			{
				path: "",
				name:'HomeChil',
				redirect: "/home/homePage"
			},
			{
				path:'homePage',
				name:'homePage',
				meta:{enter:'all',},
				component: _import_custom('HomeView/HomeView.vue'),
			},{
				path:'library',
				name:'library',
				meta:{enter:'all',},
				component: _import_custom('HomeView/library.vue'),
			},{
				path:'history',
				name:'history',
				meta:{enter:'all',},
				component: _import_custom('HomeView/history.vue'),
			},{
				path:'works',
				name:'works',
				meta:{enter:'all',},
				component: _import_custom('HomeView/Works.vue'),
			},{
				path:'events',
				name:'events',
				meta:{enter:'all',},
				component: _import_custom('HomeView/Events.vue'),
			},{
				path:'eventsDetail',
				name:'eventsDetail',
				meta:{enter:'all',},
				component: _import_component('Events/eventsDetail.vue'),
			},{
				path:'account',
				name:'account',
				meta:{enter:'all',},
				component: _import_component('Account/account.vue'),
				children:[
					{
						path: "",
						name:'accountChil',
						meta:{enter:'all',},
						redirect: "/home/account/frontPage"
					},
					{
						path:'frontPage',
						name:'frontPage',
						meta:{enter:'all',},
						component: _import_component('Account/frontPage.vue'),
					},
					{
						path:'accountMessage',
						name:'accountMessage',
						meta:{enter:'all',},
						component: _import_component('Account/accountMessage.vue'),
					},
					{
						path:'accountFollowFans',
						name:'accountFollowFans',
						meta:{enter:'all',},
						component: _import_component('Account/accountFollowFans.vue'),
					}
				]
			},{
				path:'otherUsers',
				name:'otherUsers',
				meta:{enter:'all',},
				component: _import_component('Account/otherUsers.vue'),
			}
		]
	},
	{
		path: '/Square',
		name: "HomeRecommend",
		meta:{enter:'all',},
		component: _import('HomeRecommend'),
		children:[
			{
				path: "",
				name:'SquareChil',
				meta:{enter:'all',},
				redirect: "/Square/works"
			},
			{
				path:'works',
				name:'SquareWorks',
				meta:{enter:'all',},
				component: _import_custom('HomeView/Works.vue'),
			},{
				path:'events',
				name:'SquareEvents',
				meta:{enter:'all',},
				component: _import_custom('HomeView/Events.vue'),
				
			},{
				path:'eventsDetail',
				name:'SquareEventsDetail',
				meta:{enter:'all',},
				component: _import_component('Events/eventsDetail.vue'),
			}
		]
	},
	{
		path: '/demo',
		name: 'demo',
		component: _import('Demo')
	},
	// {
	// 	path: '/history',
	// 	name: 'history',
	// 	component: _import('history')
	// },
	// {
	// 	path: '/testClickData',
	// 	name: 'testClickData',
	// 	component: _import('TestClickData')
	// },
	{
		path: '/administrator',
		name: 'administrator',
		meta:{enter:3,},
		component: _import('Administrator'),
		children:[
			{
				path: "",
				name:'adminChil',
				meta:{enter:3,},
				redirect: "/administrator/allUser"
			},
			{
				path:'allUser',
				name:'allUser',
				meta:{enter:3,},
				component: _import_component('Administrator/allUser.vue'),
			},
			{
				path:'testClickData',
				name:'testClickData',
				meta:{enter:3,},
				component: _import_component('Administrator/TestClickData.vue'),
			},
			{
				path:'trialApproval',
				name:'trialApproval',
				meta:{enter:3,},
				component: _import_component('Administrator/trialApproval.vue'),
			},{
				path:'questionnaire',
				name:'questionnaire',
				meta:{enter:3,},
				component: _import_component('Administrator/questionnaire.vue'),
			},{
				path:'recentActiveChart',
				name:'recentActiveChart',
				meta:{enter:3,},
				component: _import_component('Administrator/recentActiveChart.vue'),
			},{
				path:'recentActiveUser',
				name:'recentActiveUser',
				meta:{enter:3,},
				component: _import_component('Administrator/recentActiveUser.vue'),
			},{
				path:'recentActiveUserChart',
				name:'recentActiveUserChart',
				meta:{enter:3,},
				component: _import_component('Administrator/recentActiveUserChart.vue'),
			},{
				path:'recentNewUser',
				name:'recentNewUser',
				meta:{enter:3,},
				component: _import_component('Administrator/recentNewUser.vue'),
			},{
				path:'recentNewUserChart',
				name:'recentNewUserChart',
				meta:{enter:3,},
				component: _import_component('Administrator/recentNewUserChart.vue'),
			},{
				path:'trialUserCountry',
				name:'trialUserCountry',
				meta:{enter:3,},
				component: _import_component('Administrator/trialUserCountry.vue'),
			},{
				path:'trialUserConversionRateChart',
				name:'trialUserConversionRateChart',
				meta:{enter:3,},
				component: _import_component('Administrator/trialUserConversionRateChart.vue'),
			},{
				path:'trialAllUser',
				name:'trialAllUser',
				meta:{enter:3,},
				component: _import_component('Administrator/trialAllUser.vue'),
			},{
				path:'affiliateAudit',
				name:'affiliateAudit',
				meta:{enter:3,},
				component: _import_component('Administrator/affiliate/affiliateAudit.vue'),
			},{
				path:'TransactionTable',
				name:'TransactionTable',
				meta:{enter:3,},
				component: _import_component('Administrator/Transaction/TransactionTable.vue'),
			},
		]
	},
	{
		path: '/paySucceed',
		name: 'paySucceed',
		meta:{
			enter:'all',
		},
		component: _import('paySucceed')
	},
	{
		path: '/affiliate',
		name: 'affiliate',
		meta:{
			enter:2,
		},
		component: _import('affiliate/affiliatePage'),
		children:[
			{
				path: "/affiliate",
				name:'affiliateHome',
				meta:{
					enter:2,
				},
				component: _import_component('affiliate/home'),
			},
		]
	},{
		path: '/affiliateRegister',
		name: 'affiliateRegister',
		meta:{
			enter:'all',
		},
		component: _import('affiliate/affiliateRegister'),
	},
	// {
	// 	path: '/library',
	// 	name: 'library',
	// 	component: _import('library')
	// },
	// {
	// 	path: '/trialApproval',
	// 	name: 'trialApproval',
	// 	component: _import('trialApproval')
	// },
	{
		path: '/setIdentification',
		name: 'setIdentification',
		meta:{
			enter:'all',
		},
		component: _import('setIdentification')
	},
	{
		path: '/feedbackSurvey',
		name: 'feedbackSurvey',
		meta:{
			enter:'all',
		},
		component: _import('feedbackSurvey'),
	},
	{
		path: '/feedbackSurveyCN',
		name: 'feedbackSurveyCN',
		meta:{
			enter:'all',
		},
		component: _import('feedbackSurveyCN'),
	},
	{
		path: '/404',
		name: '404',
		meta:{
			enter:'all',
		},
		component: _import('404')
	},
	{
		path: "/:catchAll(.*)",
		redirect: "/404",
	},
	
]

const router = createRouter({
	history: createWebHistory(process.env.BASE_URL),
	//   history: createWebHashHistory(),
	routes
})
// 刷新保存数据-
let state:any = store.state
window.addEventListener("beforeunload", (e) => {
	localStorage.setItem(
		"vuex_setUserDetail",
		JSON.stringify(state.UserHabit.userDetail)
	);
	
});
var vuex_setUserDetail:any = localStorage.getItem("vuex_setUserDetail");
if (vuex_setUserDetail) {
	if(JSON.parse(vuex_setUserDetail).email != '-------------'){
		store.commit("setUserDetail", JSON.parse(vuex_setUserDetail));
	}
	// localStorage.removeItem("vuex_setUserDetail");
}

let setMurmur = (id:any)=> {
	let murmurStr: any = localStorage.getItem('murmurStr')
	// let isSxis = false
	let data = {
		browserIdentifiers: murmurStr,
		id:id
	}
	if(data.id){
		Https.axiosPost(Https.httpUrls.noLoginRequired, data)
		.then((rv) => {
			let isTest = rv.systemUser == 3 ? true : false
			let isBeginner = rv.isBeginner == 1 ? true : false
			setCookie("isMurmur", true);
			setCookie("token", rv.token);
			setCookie("isTest", isTest);
			setCookie("isBeginner", isBeginner);
			setCookie("isBeginnerNum", 0);//从第一步开始，机器人开始的话就是从第二部开始
			setCookie("userInfo", JSON.stringify(rv));
			let userid = {
				ueserId:rv.userId,
				systemUser:rv.systemUser
			}
			store.commit("upUserDetail", userid);
			sessionStorage.setItem('isTimeOne', JSON.stringify(false));//是否需要公告 提示 弹窗
			let randomNum: any = Math.floor(Math.random() * 9000000000000000) + 1000000000000000;
			sessionStorage.setItem('sessionId', randomNum);
			router.push("/home");
			
		})
		.catch((res) => {
			// router.push('/Square')
		});
	}
}
const setViewsIncrease = (value:any)=>{
	sessionStorage.setItem('affiliateRef', value);
	let data = {
		id:value
	}
	Https.axiosGet(Https.httpUrls.viewsIncrease,{params:data}).then((rv)=>{})
}
let upgradeList = ['/feedbackSurvey','/feedbackSurveyCN','emailVerify']//指定页面系统维护也可以访问
router.beforeEach((to:any, from, next) => {
	// 	系统维护
	// const toName = to.name === 'upgrade';
	// if(upgradeList.indexOf(to.path) > -1){
	// 	next();
	// }else{
	// 	if (toName) {
	// 		next();
	// 	} else {
	// 		next({ name: 'upgrade' });
	// 	}
	// }
	// return
	// 检查路由是否存在
	// 机房用户
	let herfData = window.location.search.substring(1)
	if(herfData.split('=')[0] == 'noLogin' && to.name != 'homePage'){
		setMurmur(herfData.split('=')[1])
		return
	}
	let affiliateRef = sessionStorage.getItem('affiliateRef');
	if(to.query.order)sessionStorage.setItem('orderId', to.query.order);//记录是否点击跳转订单链接
	if(to.query.ref && affiliateRef != to.query.ref)setViewsIncrease(to.query.ref)
	
	if(to.meta.enter == 'all'){
		next();
	}else if(state.UserHabit.userDetail.systemList.indexOf(to.meta.enter) > -1){
		next()
	}else{
		next('/404');
	}
	// if(systemUser == 0){//游客用户只能进入这两个页面

});

export default router
