513 lines
18 KiB
JavaScript
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
|