Files
ylst-pc/src/router/index.js
2024-08-27 17:39:22 +08:00

513 lines
18 KiB
JavaScript

import { createRouter, createWebHashHistory } from 'vue-router'
import routes from './modules'
import ProjectManage from './router.projectManage'
import TemplateMarket from './route.templateMarket'
import Contact from './route.contact'
import DocumentLibrary from './route.documentLibrary'
import DataStatistics from './route.datastatistics'
import SharedRoutes from './route.shared'
import { jsonp } from "vue-jsonp";
import { jsonpUrl } from "../config.js";
import { useStore } from "vuex";
import Creative from "./route.creative"; // 创作中心路由
import MarketList from "@/views/TempMarket/components/TempMarketLayout"
const store = useStore();
const constantRoutes = [
// {
// path: '/redirect',
// component: Layout,
// hidden: true,
// children: [
// {
// path: '/redirect/:path(.*)',
// component: () => import('@/views/redirect/index')
// }
// ]
// },
...SharedRoutes,
{
path: '/:catchAll(.*)',
redirect: '/error/404',
meta: { noRedirectLogin: true }
},
{
path: '/',
redirect: '/home'
},
{
path: '/heartbeat',
component: () => import(/* webpackChunkName: 'heartbeat' */ '@views/Heartbeat/Index.vue')
},
{
path: '/home',
name: 'home',
redirect: '/home/create',
component: () => import(/* webpackChunkName: 'home' */ '@views/Home/Index.vue'),
children: [...ProjectManage, ...TemplateMarket, ...Contact, ...DocumentLibrary, ...DataStatistics, ...Creative]
},
{
path: '/market',
name: 'Market',
meta: { title: '模板库' },
component: MarketList,
},
{
path: '/edit-creative-scene',
name: 'editCreativeScene',
component: () => import(/* webpackChunkName: 'creativeScene' */ '@views/Creative/CreationScene.vue')
},
{
path: '/edit-creative-model',
name: 'editCreativeModel',
component: () => import(/* webpackChunkName: 'creativeModel' */ '@views/Creative/CreationModel.vue')
},
{
path: '/ring360-preview',
name: 'ring360Preview',
component: () => import(/* webpackChunkName: 'ring360Preview' */ '@views/Creative/Ring360Preview.vue')
},
{
path: '/model3d-preview',
name: 'model3dPreview',
component: () => import(/* webpackChunkName: 'model3dPreview' */ '@views/Creative/Model3DPreview.vue')
},
{
path: '/luck',
name: 'luck',
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/redpacket/luck.vue')
},
{
path: '/addinfor',
name: 'addinfor',
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/redpacket/addinfor.vue')
},
{
path: '/prize',
name: 'prize',
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/redpacket/prize.vue')
},
{
path: '/succeed',
name: 'succeed',
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/redpacket/succeed.vue')
},
{
path: '/login',
name: 'login',
component: () => import(/* webpackChunkName: 'login' */ '@views/Login/Login.vue')
},
{
path: '/loginInvite',
name: 'loginInvite',
component: () => import(/* webpackChunkName: 'login' */ '@views/TeamManage/TeamCenter/teamAdmin/login.vue')
},
{
path: '/answer',
name: 'Answer',
meta: { noRedirectLogin: true },
component: () => import(/* webpackChunkName: "answer" */ '../views/Answer/Index.vue')
},
{
path: '/answer/limitResult',
name: 'AnswerLimitResult',
component: () => import(/* webpackChunkName: "answer" */ '../views/Answer/pages/AnswerLimitResult.vue')
},
{
path: '/preview',
name: 'Preview',
component: () => import(/* webpackChunkName: "preview" */ '../views/Answer/Preview.vue')
},
{
path: '/survey',
name: 'Survey',
redirect: '/survey/planet',
component: () => import(/* webpackChunkName: "survey" */ '../views/survey/index.vue'),
children: [
{
path: 'planet',
name: 'planet',
redirect: '/survey/planet/design',
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/Index.vue'),
children: [
{
path: 'design',
name: 'design',
meta: { showPreview: true, showPublish: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/Design/DesignContent.vue')
},
{
path: 'logical',
name: 'logical',
meta: { showPublish: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/Logical/Index.vue')
},
{
path: 'test',
meta: { showPublish: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/PlanetTest.vue')
},
{
path: 'answer-setting',
meta: { showPublish: true, showDownload: false },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/AnswerSetting.vue')
},
{
path: 'theme',
meta: { showPublish: true, showPreview: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/Theme/index.vue')
},
{
path: 'redpacket',
meta: { showPublish: true, showPreview: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/redpacket/index.vue')
},
{
path: 'addset',
meta: { showPublish: true, showPreview: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/planetDesign/redpacket/addset.vue')
}
]
},
{
path: 'schedule',
name: 'schedule',
redirect: '/survey/schedule/index',
component: () => import(/* webpackChunkName: "planet" */ '../views/schedule/index.vue'),
children: [
{
path: 'recycle',
name: 'recycle',
meta: { showPreview: true, showPublish: true, showDownload: true },
component: () => import(/* webpackChunkName: "planet" */ '../views/schedule/recycle.vue')
}
]
},
{
path: 'analyse',
name: 'analyse',
redirect: { name: 'Diagram' },
meta: { keepAlive: false },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/index'),
children: [
{
path: 'data-particulars',
name: 'DataParticulars',
meta: { keepAlive: true, showPublish: false, showPreview: false, showShare: true, showDownload: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/particulars/list')
},
{
path: 'test-particulars',
name: 'TestParticulars',
meta: { keepAlive: true, showPublish: false, showPreview: false, showShare: true, showDownload: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/particulars/test')
},
{
path: 'insight',
name: 'AnalysisInsight',
meta: { keepAlive: true, showDownload: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/insight/Index.vue')
},
{
path: 'diagram',
name: 'Diagram',
meta: { keepAlive: true, showDownload: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/diagram/test')
},
{
path: 'test',
name: 'test',
meta: { keepAlive: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/diagram/test')
},
{
path: "kndiagram",
name: "knDiagram",
component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/index"),
redirect: "index",
children: [{
name: "KANO分析",
path: "index",
component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/questions/Kano"),
},
{
name: "PSM分析",
path: "psm",
component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/questions/psm"),
},
{
name: "MXD分析",
path: "mxd",
component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/questions/mxd"),
},
{
name: "3D场景分析",
path: "q3d",
component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/questions/q3d"),
},
{
name: "NPS分析",
path: "nps",
component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/questions/nps"),
},
],
// {
// name: "分析模型",
// path: "index",
// component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/index"),
// },
// {
// name: "市场模拟",
// path: "index",
// component: () => import(/* webpackChunkName: "analyse" */ "@/views/DataAnalyse/kndiagram/index"),
// }
},
{
path: 'bi',
name: 'bi',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/bi')
},
{
// BPTO模拟
path: 'bptoAnalog',
name: 'bptoAnalog',
meta: { keepAlive: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/bptoAnalog/index')
},
{
path: 'crosstabs',
name: 'crosstabs',
meta: { keepAlive: true, showDownload: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/crosstabs/index.vue')
},
{
path: 'recycleBin',
name: 'recycleBin',
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/recycleBin/index'),
redirect: 'detailData',
children: [
{
name: '数据明细',
path: 'detailData',
// meta: {title:"数据明细" },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/recycleBin/binList/detailData')
}
]
}
]
},
{
path: 'publish',
name: 'publish',
redirect: '/survey/publish/link',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/index'),
children: [
{
path: 'link-source',
name: 'link-source',
meta: { showPreview: false, showPublish: false, keepAlive: true, showShare: true },
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/link')
},
{
path: 'link',
name: 'link',
meta: { showPreview: false, showPublish: false, keepAlive: true, showShare: true },
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/launch-center/launch-task/index')
},
{
path: 'create',
name: 'create',
meta: { showPreview: false, showPublish: false, keepAlive: true, showShare: true },
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/launch-center/launch-task/create')
},
{
path: 'enterprise-weChat',
name: 'enterprise-weChat',
meta: { showPreview: false, showPublish: false, keepAlive: true, showShare: true, permission:'super_admin_flag' },
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/launch-center/launch-task/enterpriseWeChat')
},
// {
// path: "link",
// name: "link",
// meta: { showPreview: false, showPublish: false, keepAlive: true, showShare: true },
// component: () => import(/* webpackChunkName: "publish" */ "@/views/Publish/link")
// },
{
path: 'analyst',
name: 'analyst',
meta: { showPreview: false, showPublish: false, keepAlive: true, showShare: true },
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/analyse')
},
{
path: 'api',
name: 'api',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/api')
},
{
path: 'email',
name: 'email',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/message/record')
},
{
path: 'census',
name: 'census',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/census/census')
},
{
path: 'emailRecord',
name: 'emailRecord',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/email/email')
},
{
path: 'message',
name: 'message',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/message/record')
},
{
path: 'messageRecord',
name: 'messageRecord',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/message/message')
},
{
path: 'sample',
name: 'sample',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/sample/sample')
},
{
path: 'activity',
name: 'activity',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/activity/activity')
},
{
path: 'group',
name: 'group',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/temp')
},
{
path: 'flush',
name: 'flush',
component: () => import(/* webpackChunkName: "publish" */ '@/views/Publish/flush')
}
]
}
]
},
{
path: '/not-data',
name: 'notData',
// meta: { showPublish: false, showPreview: false, showShare: true, showDownload: true },
component: () => import(/* webpackChunkName: "analyse" */ '@/views/DataAnalyse/particulars/notData/notData')
},
{
path: '/InviteLogin',
name: 'InviteLogin',
component: () => import(/* webpackChunkName: 'InviteLogin' */ '../views/TeamManage/InviteLogin.vue')
},
{
path: '/team-manage',
name: 'TeamManage',
component: () => import(/* webpackChunkName: 'home' */ '../views/TeamManage/index.vue'),
children: [
{
path: 'user-center',
name: 'userCenTer',
component: () => import(/* webpackChunkName: 'home' */ '../views/TeamManage//UserCenter/index.vue')
// children: [
// {
// path: "design",
// name: "design",
// meta: { showPreview: true, showPublish: true, keepAlive: true },
// component: () => import(/* webpackChunkName: "planet" */ "../views/planetDesign/DesignContent.vue")
// },
// {
// path: "logical",
// name: "logical",
// component: () => import(/* webpackChunkName: "planet" */ "../views/planetDesign/PlanetLogical.vue")
// },
// {
// path: "test",
// name: "test",
// component: () => import(/* webpackChunkName: "planet" */ "../views/planetDesign/PlanetTest.vue")
// },
// {
// path: "answer-setting",
// meta: { showPublish: true },
// component: () => import(/* webpackChunkName: "planet" */ "../views/planetDesign/AnswerSetting.vue")
// },
// {
// path: "theme",
// meta: { showPublish: true, showPreview: true },
// component: () => import(/* webpackChunkName: "planet" */ "../views/planetDesign/Theme/index.vue")
// }
// ]
},
{
path: 'team-center',
name: 'teamCenter',
component: () => import(/* webpackChunkName: 'home' */ '../views/TeamManage//TeamCenter/index.vue')
}
]
},
{
path: "/SceneSurveyViewerPage",
name: "SceneSurveyViewerPage",
component: () => import(/* webpackChunkName: 'SceneSurveyViewerPage' */ "../views/planetDesign/SceneSurveyViewerPage/Index.vue")
},
// 下载中心
// {
// path: "/downloadCenter",
// name: "downloadCenter",
// component: () => import(/* webpackChunkName: "preview" */ "../views/DownloadCenter/index.vue")
// },
...routes
]
export const asyncRoutes = []
const router = createRouter({
history: createWebHashHistory(),
routes: constantRoutes
})
router.beforeEach(async (to, from, next) => {
// token
if (!to.meta.shared && !router.options.history.state.back) {
await getToken();
}
if (!to.meta.noRedirectLogin) {
if (window.self === window.top) {
// window.parent.location.href = 'https://yip-uat.dctest.digitalyili.com/login';
}
}
if(!to.meta.permission) {
next()
return
}
if(!JSON.parse(localStorage.getItem('plantUserInfo'))[to.meta.permission]) {
next({
path:'/error/404',
})
return
}
next()
})
const getToken = async () => {
try {
const res = await jsonp(jsonpUrl, {
appId: "yip",
remoteIp: window.returnCitySN?window.returnCitySN["cip"]:"127.0.0.1",
callbackQuery: "jsonpCallback",
})
localStorage.setItem("plantToken", res.data.tokenid);
store.commit("common/M_COMMON_SET_TOKEN", res.data.tokenid);
console.log("成功");
} catch (error) {
console.log("错误");
}
};
export default router