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