refactor: update package.json and improve ESLint configuration

- Removed outdated Vue CLI plugins and added new ESLint rules and plugins for better TypeScript support.
- Enhanced ESLint configuration with parser options and overrides for Vue files.

feat: refactor router configuration for improved readability

- Reformatted router configuration for better structure and clarity.
- Ensured consistent use of async component imports and updated route definitions.

chore: update TypeScript configuration for better compatibility

- Adjusted tsconfig.json to target ES2020 and include necessary libraries.
- Added a new tsconfig.node.json for Node.js specific configurations.

fix: update Vite configuration for proper asset handling

- Modified vite.config.js to specify input for Rollup, ensuring correct asset management.
This commit is contained in:
bighuixiang
2025-06-18 21:25:25 +08:00
parent 3a52cc1e53
commit 5f4e1176f0
10 changed files with 1135 additions and 8815 deletions

View File

@@ -1,433 +1,475 @@
import { createRouter, createWebHistory, RouteRecordRaw, createWebHashHistory } from 'vue-router'
import { defineAsyncComponent } from 'vue'
import store from "@/store"
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}`);
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('Login')
// component: _import('LoginPage')
},{
path: '/schoolLogin',
name: 'schoolLogin',
meta:{enter:'all',},
component: _import('LoginPageSchool')
},{
path: '/enterpriseLogin',
name: 'enterpriseLogin',
meta:{enter:'all',},
component: _import('LoginPageEnterprise')
},
{
path: '/test',
name: 'test1',
meta:{enter:'all',},
component: _import('test')
},
{
path: '/register',
name: 'register',
meta:{enter:'all',},
component: _import('Register')
},
{
path: '/upgrade',
name: 'upgrade',
meta:{enter:'all',},
component: _import('Upgrade'),
},
{
path: '/home',
name: 'home',
meta:{enter:'all',},
component: _import('HomeMain'),
children:[
// {
// path: "",
// name:'HomeChil',
// redirect: "/home/homePage"
// },
{
path:'tools',
name:'tools',
meta:{enter:'all',},
component: _import_custom('HomeView/Tools.vue'),
},{
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:'cloud',
name:'cloud',
meta:{enter:'all',},
component: _import_custom('HomeView/cloudGeneration.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'),
},
{
path: '/administrator',
name: 'administrator',
meta:{enter:3,},
component: _import('Administrator'),
children:[
{
path:'allUser',
name:'allUser',
meta:{enter:3,},
component: _import_component('Administrator/allUser.vue'),
},
{
path:'coupons',
name:'coupons',
meta:{enter:3,},
component: _import_component('Administrator/coupons/index.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:'organization',
name:'organization',
meta:{enter:3,},
component: _import_component('Administrator/organization/organization.vue'),
},
//企业版教育管理员页面
{
path:'allUserSE',
name:'allUserSE',
meta:{enter:3,},
component: _import_component('Administrator/SE/allUser/index.vue'),
},
{
path:'testClickDataSE',
name:'testClickDataSE',
meta:{enter:3,},
component: _import_component('Administrator/SE/designDetailList/index.vue'),
},
{
path:'generateFrequencySE',
name:'generateFrequencySE',
meta:{enter:3,},
component: _import_component('Administrator/SE/getGenerateFrequency/index.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: '/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",
},
]
{
path: "/",
// redirect重定向
meta: { enter: "all" },
redirect: "/Square",
// redirect: "/upgrade"
},
{
path: "/login",
name: "login",
meta: { enter: "all" },
component: _import("Login"),
// component: _import('LoginPage')
},
{
path: "/schoolLogin",
name: "schoolLogin",
meta: { enter: "all" },
component: _import("LoginPageSchool"),
},
{
path: "/enterpriseLogin",
name: "enterpriseLogin",
meta: { enter: "all" },
component: _import("LoginPageEnterprise"),
},
{
path: "/test",
name: "test1",
meta: { enter: "all" },
component: _import("test"),
},
{
path: "/register",
name: "register",
meta: { enter: "all" },
component: _import("Register"),
},
{
path: "/upgrade",
name: "upgrade",
meta: { enter: "all" },
component: _import("Upgrade"),
},
{
path: "/home",
name: "home",
meta: { enter: "all" },
component: _import("HomeMain"),
children: [
// {
// path: "",
// name:'HomeChil',
// redirect: "/home/homePage"
// },
{
path: "tools",
name: "tools",
meta: { enter: "all" },
component: _import_custom("HomeView/Tools.vue"),
},
{
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: "cloud",
name: "cloud",
meta: { enter: "all" },
component: _import_custom("HomeView/cloudGeneration.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"),
},
{
path: "/administrator",
name: "administrator",
meta: { enter: 3 },
component: _import("Administrator"),
children: [
{
path: "allUser",
name: "allUser",
meta: { enter: 3 },
component: _import_component("Administrator/allUser.vue"),
},
{
path: "coupons",
name: "coupons",
meta: { enter: 3 },
component: _import_component("Administrator/coupons/index.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: "organization",
name: "organization",
meta: { enter: 3 },
component: _import_component(
"Administrator/organization/organization.vue"
),
},
//企业版教育管理员页面
{
path: "allUserSE",
name: "allUserSE",
meta: { enter: 3 },
component: _import_component("Administrator/SE/allUser/index.vue"),
},
{
path: "testClickDataSE",
name: "testClickDataSE",
meta: { enter: 3 },
component: _import_component(
"Administrator/SE/designDetailList/index.vue"
),
},
{
path: "generateFrequencySE",
name: "generateFrequencySE",
meta: { enter: 3 },
component: _import_component(
"Administrator/SE/getGenerateFrequency/index.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: "/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
})
history: createWebHistory(import.meta.env.BASE_URL),
// history: createWebHashHistory(),
routes,
});
// 刷新保存数据-
let state:any = store.state
let state: any = store.state;
window.addEventListener("beforeunload", (e) => {
localStorage.setItem(
"vuex_setUserDetail",
JSON.stringify(state.UserHabit.userDetail)
);
localStorage.setItem(
"vuex_setUserDetail",
JSON.stringify(state.UserHabit.userDetail)
);
});
var vuex_setUserDetail:any = localStorage.getItem("vuex_setUserDetail");
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");
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){//游客用户只能进入这两个页面
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
export default router;

57
src/shims-vue.d.ts vendored
View File

@@ -1,21 +1,38 @@
/* eslint-disable */
declare module '*.vue' {
import type { DefineComponent } from 'vue'
const component: DefineComponent<{}, {}, any>
export default component
/// <reference types="vite/client" />
declare module "*.vue" {
import type { DefineComponent } from "vue";
const component: DefineComponent<{}, {}, any>;
export default component;
}
interface ImportMetaEnv {
readonly VITE_APP_TITLE: string;
readonly VITE_APP_BASE_URL: string;
readonly BASE_URL: string;
// 更多环境变量...
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}
// 第三方库声明
declare module "@ans1998/vue3-color";
declare module "three";
declare module "three/examples/jsm/controls/OrbitControls";
declare module "three/examples/jsm/postprocessing/EffectComposer";
declare module "three/examples/jsm/postprocessing/RenderPass";
declare module "three/examples/jsm/postprocessing/OutlinePass";
// 全局变量声明
declare global {
var ColorThief: any;
var EyeDropper: any;
interface Window {
ColorThief: any;
EyeDropper: any;
google: any;
gc?: () => void;
}
}
// declare module '@vue/runtime-core' {
// //全局this注册方法或者公用属性
// interface ComponentCustomProperties {
// // 调整成你要使用到的属性,在这里进行注册
// // GO: any
// }
// }
declare module '@ans1998/vue3-color'
declare var ColorThief: any;
declare var EyeDropper: any;
declare module 'three'
declare module 'OrbitControls'
declare module 'EffectComposer'
declare module 'RenderPass'
declare module 'OutlinePass'