diff --git a/.env.admin b/.env.admin new file mode 100644 index 0000000..c5f54ab --- /dev/null +++ b/.env.admin @@ -0,0 +1 @@ +VUE_APP_TYPE=admin \ No newline at end of file diff --git a/.env.client b/.env.client new file mode 100644 index 0000000..ee6f919 --- /dev/null +++ b/.env.client @@ -0,0 +1 @@ +VUE_APP_TYPE=client \ No newline at end of file diff --git a/package.json b/package.json index 9e024cc..d57e37b 100755 --- a/package.json +++ b/package.json @@ -2,10 +2,11 @@ "name": "newkuaile-vue-project2", "version": "0.1.0", "private": true, - "scripts": { - "serve": "vue-cli-service serve", - "build": "vue-cli-service build", - "lint": "vue-cli-service lint" + "scripts": { + "serve:client": "vue-cli-service serve --mode client", + "serve:admin": "vue-cli-service serve --mode admin", + "build:client": "vue-cli-service build --mode client", + "build:admin": "vue-cli-service build --mode admin" }, "dependencies": { "axios": "^1.8.3", diff --git a/src/router/admin-routes.json b/src/router/admin-routes.json index e69de29..10979ca 100644 --- a/src/router/admin-routes.json +++ b/src/router/admin-routes.json @@ -0,0 +1,175 @@ +[ + { + "path": "/super/ranking", + "component": "views/super/Ranking/Ranking.vue", + "webpackChunkName": "Ranking", + "children": [ + { + "path": "", + "redirect": "views/super/Ranking/RankDetail.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "总利润 - 年排行", + "rank_type": 1, + "type": "year", + "showDateSelect": false + } + }, + { + "path": "yearProfit", + "name": "年排行", + "component": "views/super/Ranking/RankDetail.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "总利润 - 年排行", + "rank_type": 1, + "type": "year", + "showDateSelect": false + } + }, + { + "path": "monthProfit", + "name": "月排行", + "component": "views/super/Ranking/RankDetail.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "总利润 - 月排行", + "rank_type": 1, + "type": "month", + "showDateSelect": true + } + }, + { + "path": "checkProfit", + "name": "产品毛利润排行", + "component": "views/super/Ranking/RankBatchList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "产品 - 毛利润排行", + "rank_type": 1, + "type": "check_type" + } + }, + { + "path": "checkOrdernum", + "name": "产品订单数排行", + "component": "views/super/Ranking/RankBatchList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "产品 - 订单数排行", + "rank_type": 2, + "type": "check_type" + } + }, + { + "path": "checkRefund", + "name": "产品退单数排行", + "component": "views/super/Ranking/RankList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "产品 - 退单数排行", + "rank_type": 3, + "type": "check_type" + } + }, + { + "path": "loss", + "name": "产品负毛利排行", + "component": "views/super/Ranking/RankList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "产品 - 负毛利排行", + "rank_type": 5, + "type": "loss" + } + }, + { + "path": "agentProfit", + "name": "代理商毛利润排行", + "component": "views/super/Ranking/RankBatchList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "代理商 - 毛利润排行", + "rank_type": 1, + "type": "agent" + } + }, + { + "path": "agentRecharge", + "name": "代理商充值排行", + "component": "views/super/Ranking/RankBatchList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "代理商 - 充值排行", + "rank_type": 4, + "type": "agent" + } + }, + { + "path": "agentNew", + "name": "代理商新加盟", + "component": "views/super/Ranking/RankDetail.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "代理商 - 新加盟", + "type": "agentnew", + "showDateSelect": false + } + }, + { + "path": "purchase", + "name": "采购价", + "component": "views/super/Ranking/Purchase.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "设置 - 采购价", + "type": "purchase" + } + }, + { + "path": "stagePurchase", + "name": "阶段采购价", + "component": "views/super/Ranking/Purchase.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "设置 - 阶段采购", + "type": "stagePurchase" + } + }, + { + "path": "detail", + "name": "详情", + "component": "views/super/Ranking/RankDetail.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "详情", + "type": "day", + "showDateSelect": false, + "lookMore": false + } + }, + { + "path": "list", + "name": "列表", + "component": "views/super/Ranking/RankList.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "详情", + "showDateSelect": false, + "lookMore": false + } + }, + { + "path": "order", + "name": "订单统计", + "component": "views/super/Ranking/RankDetail.vue", + "webpackChunkName": "Ranking", + "props": { + "pageTitle": "订单统计", + "type": "order", + "showDateSelect": false + } + } + ] + } + ] \ No newline at end of file diff --git a/src/router/client-routes.json b/src/router/client-routes.json index e69de29..7a2d077 100644 --- a/src/router/client-routes.json +++ b/src/router/client-routes.json @@ -0,0 +1,81 @@ +[ + { + "path": "/", + "name": "首页", + "component": "views/HomeView.vue" + }, + { + "path": "/register", + "name": "register", + "component": "views/Register.vue", + "webpackChunkName": "register", + "children": [] + }, + { + "path": "/ui", + "name": "ui组件", + "component": "views/elementGroups.vue", + "webpackChunkName": "ui" + }, + { + "path": "/franchise", + "name": "加盟", + "component": "views/Franchise.vue", + "webpackChunkName": "franchise" + }, + { + "path": "/configureServicePrices", + "name": "配置服务价格", + "component": "views/ConfigureServicePrices.vue", + "webpackChunkName": "configureServicePrices" + }, + { + "path": "/siteList", + "name": "站点列表", + "component": "views/SiteList.vue", + "webpackChunkName": "siteList" + }, + { + "path": "/siteSetting", + "name": "站点设置", + "component": "views/SiteSetting.vue", + "webpackChunkName": "SiteSetting", + "children": [ + { + "path": "", + "redirect": "views/SiteBaseSetting.vue", + "webpackChunkName": "siteBaseSetting" + }, + { + "path": "siteBaseSetting", + "name": "站点基础设置", + "component": "views/SiteBaseSetting.vue", + "webpackChunkName": "siteBaseSetting" + }, + { + "path": "sitePersonalization", + "name": "个性化设置", + "component": "views/SitePersonalization.vue", + "webpackChunkName": "sitePersonalization" + }, + { + "path": "siteH5", + "name": "移动端设置", + "component": "views/SiteH5.vue", + "webpackChunkName": "siteH5" + }, + { + "path": "siteSem", + "name": "营销推广", + "component": "views/SiteSem.vue", + "webpackChunkName": "siteSem" + } + ] + }, + { + "path": "/pageTemplete", + "name": "网页模板", + "component": "views/PageTemplete.vue", + "webpackChunkName": "pageTemplete" + } + ] \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 942ec7e..54d99d6 100755 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,7 +1,9 @@ import Vue from 'vue'; import VueRouter from 'vue-router'; import store from '../store'; -import HomeView from '../views/HomeView.vue'; +import clientRoutes from './client-routes.json'; +import adminRoutes from './admin-routes.json'; +import { loadRoutesFromJSON } from '../utils/loadRoutes' // import UserPosts from '../views/UserPosts.vue'; // import Franchise from '../views/Franchise.vue' @@ -18,211 +20,194 @@ const whiteFooterList = ['/', '/ui', '/configureServicePrices', '/super/ranking/checkRefund', '/super/ranking/agentProfit', '/super/ranking/agentRecharge', '/super/ranking/agentNew', '/super/ranking/purchase','/super/ranking/stagePurchase','/super/ranking/loss' ]; //底部白名单 -const routes = [{ - path: '/', - name: '首页', - component: HomeView, - // component: Franchise - }, - { - path: '/register', - name: 'register', - // route level code-splitting - // this generates a separate chunk (about.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => import( /* webpackChunkName: "register" */ '../views/Register.vue'), - children: [ // 这是子路由的定义开始 - // { - // path: '', // 当访问 /user 时,默认加载 UserProfile 组件 - // name: 'register', - // component: Register - // }, - // { - // path: 'posts', // 当访问 /user/posts 时,加载 UserPosts 组件 - // name: 'UserPosts', - // component: UserPosts, - // } - ] - }, - { - path: '/ui', - name: 'ui组件', - // route level code-splitting - // this generates a separate chunk (about.[hash].js) for this route - // which is lazy-loaded when the route is visited. - component: () => import( /* webpackChunkName: "ui" */ '../views/elementGroups.vue') - }, - { - path: '/franchise', - name: '加盟', - component: () => import( /* webpackChunkName: "franchise" */ '../views/Franchise.vue') - }, - { - path: '/configureServicePrices', - name: '配置服务价格', - component: () => import( /* webpackChunkName: "configureServicePrices" */ '../views/ConfigureServicePrices.vue') - }, - { - path: '/siteList', - name: '站点列表', - component: () => import( /* webpackChunkName: "siteList" */ '../views/SiteList.vue') - }, - { - path: '/siteSetting', - name: '站点设置', - component: () => import( /* webpackChunkName: "SiteSetting" */ '../views/SiteSetting.vue'), - children: [ - { - path: '', // 默认子路由 - redirect: () => import( /* webpackChunkName: "siteBaseSetting" */ '../views/SiteBaseSetting.vue') // 重定向到第一个页面 - }, - { - path: 'siteBaseSetting', - name: '站点基础设置', - component: () => import( /* webpackChunkName: "siteBaseSetting" */ '../views/SiteBaseSetting.vue'), - }, - { - path: 'sitePersonalization', - name: '个性化设置', - component: () => import( /* webpackChunkName: "sitePersonalization" */ '../views/SitePersonalization.vue') - }, - { - path: 'siteH5', - name: '移动端设置', - component: () => import( /* webpackChunkName: "siteH5" */ '../views/SiteH5.vue') - }, - { - path: 'siteSem', - name: '营销推广', - component: () => import( /* webpackChunkName: "siteSem" */ '../views/SiteSem.vue') - }, - // { - // path: 'demoTable', // 默认子路由 - // name: '测试页面', - // redirect: () => import( /* webpackChunkName: "demoTable" */ '../views/DemoTable.vue') // 重定向到第一个页面 - // }, - ] - }, - { - path: '/pageTemplete', - name: '网页模板', - component: () => import( /* webpackChunkName: "pageTemplete" */ '../views/PageTemplete.vue') - }, +// ...loadRoutesFromJSON(rankingRoutes), +const APP_TYPE = process.env.VUE_APP_TYPE || 'client'; + +const routes = APP_TYPE === 'admin' + ? [...loadRoutesFromJSON(adminRoutes)] + : [...loadRoutesFromJSON(clientRoutes)]; + + console.log(routes,'routes---000'); +const router = new VueRouter({ + mode: 'history', + routes +}); +// const routes = [ // { - // path: '/demo', - // name: 'demo页面', - // component: () => import( /* webpackChunkName: "Demo" */ '../views/Demo.vue'), + // path: '/', + // name: '首页', + // component: HomeView, + // // component: Franchise + // }, + // { + // path: '/register', + // name: 'register', + // component: () => import( /* webpackChunkName: "register" */ '../views/Register.vue'), + // children: [ // 这是子路由的定义开始 + // ] + // }, + // { + // path: '/ui', + // name: 'ui组件', + // component: () => import( /* webpackChunkName: "ui" */ '../views/elementGroups.vue') + // }, + // { + // path: '/franchise', + // name: '加盟', + // component: () => import( /* webpackChunkName: "franchise" */ '../views/Franchise.vue') + // }, + // { + // path: '/configureServicePrices', + // name: '配置服务价格', + // component: () => import( /* webpackChunkName: "configureServicePrices" */ '../views/ConfigureServicePrices.vue') + // }, + // { + // path: '/siteList', + // name: '站点列表', + // component: () => import( /* webpackChunkName: "siteList" */ '../views/SiteList.vue') + // }, + + // { + // path: '/siteSetting', + // name: '站点设置', + // component: () => import( /* webpackChunkName: "SiteSetting" */ '../views/SiteSetting.vue'), // children: [ // { // path: '', // 默认子路由 - // redirect: () => import( /* webpackChunkName: "DemoTable" */ '../views/DemoTable.vue') // 重定向到第一个页面 + // redirect: () => import( /* webpackChunkName: "siteBaseSetting" */ '../views/SiteBaseSetting.vue') // 重定向到第一个页面 + // }, + // { + // path: 'siteBaseSetting', + // name: '站点基础设置', + // component: () => import( /* webpackChunkName: "siteBaseSetting" */ '../views/SiteBaseSetting.vue'), + // }, + // { + // path: 'sitePersonalization', + // name: '个性化设置', + // component: () => import( /* webpackChunkName: "sitePersonalization" */ '../views/SitePersonalization.vue') + // }, + // { + // path: 'siteH5', + // name: '移动端设置', + // component: () => import( /* webpackChunkName: "siteH5" */ '../views/SiteH5.vue') + // }, + // { + // path: 'siteSem', + // name: '营销推广', + // component: () => import( /* webpackChunkName: "siteSem" */ '../views/SiteSem.vue') // }, // ] - // } + // }, + // { + // path: '/pageTemplete', + // name: '网页模板', + // component: () => import( /* webpackChunkName: "pageTemplete" */ '../views/PageTemplete.vue') + // }, - { - path: '/super/ranking', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/Ranking.vue'), - children: [ - { - path: '', // 默认子路由 - redirect: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), - props: {pageTitle:'总利润 - 年排行', rank_type: 1, type: 'year', showDateSelect: false} - }, - { - path: 'yearProfit', - name: '年排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), - props: {pageTitle:'总利润 - 年排行', rank_type: 1, type: 'year', showDateSelect: false} - }, - { - path: 'monthProfit', - name: '月排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), - props: {pageTitle:'总利润 - 月排行', rank_type: 1, type: 'month', showDateSelect: true} - }, - { - path: 'checkProfit', - name: '产品毛利润排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), - props: {pageTitle:'产品 - 毛利润排行', rank_type: 1, type: 'check_type'} - }, - { - path: 'checkOrdernum', - name: '产品订单数排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), - props: {pageTitle:'产品 - 订单数排行', rank_type: 2, type: 'check_type'} - }, - { - path: 'checkRefund', - name: '产品退单数排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankList.vue'), - props: {pageTitle:'产品 - 退单数排行', rank_type: 3, type: 'check_type'} - }, - { - path: 'loss', - name: '产品负毛利排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankList.vue'), - props: {pageTitle:'产品 - 负毛利排行', rank_type: 5, type: 'loss'} - }, - { - path: 'agentProfit', - name: '代理商毛利润排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), - props: {pageTitle:'代理商 - 毛利润排行', rank_type: 1, type: 'agent'} - }, - { - path: 'agentRecharge', - name: '代理商充值排行', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), - props: {pageTitle:'代理商 - 充值排行', rank_type: 4, type: 'agent'} - }, - { - path: 'agentNew', - name: '代理商新加盟', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), - props: {pageTitle:'代理商 - 新加盟', type: 'agentnew', showDateSelect: false} - }, - { - path: 'purchase', - name: '采购价', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/Purchase.vue'), - props: {pageTitle:'设置 - 采购价', type: 'purchase'} - }, - { - path: 'stagePurchase', - name: '阶段采购价', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/Purchase.vue'), - props: {pageTitle:'设置 - 阶段采购', type: 'stagePurchase'} - }, - { - path: 'detail', - name: '详情', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), - props: {pageTitle:'详情', type: 'day', showDateSelect: false, lookMore:false} - }, - { - path: 'list', - name: '列表', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankList.vue'), - props: {pageTitle:'详情', showDateSelect: false, lookMore:false} - }, - { - path: 'order', - name: '订单统计', - component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), - props: {pageTitle:'订单统计', type: 'order', showDateSelect: false} - }, - ] - }, -] + // { + // path: '/super/ranking', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/Ranking.vue'), + // children: [ + // { + // path: '', // 默认子路由 + // redirect: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), + // props: {pageTitle:'总利润 - 年排行', rank_type: 1, type: 'year', showDateSelect: false} + // }, + // { + // path: 'yearProfit', + // name: '年排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), + // props: {pageTitle:'总利润 - 年排行', rank_type: 1, type: 'year', showDateSelect: false} + // }, + // { + // path: 'monthProfit', + // name: '月排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), + // props: {pageTitle:'总利润 - 月排行', rank_type: 1, type: 'month', showDateSelect: true} + // }, + // { + // path: 'checkProfit', + // name: '产品毛利润排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), + // props: {pageTitle:'产品 - 毛利润排行', rank_type: 1, type: 'check_type'} + // }, + // { + // path: 'checkOrdernum', + // name: '产品订单数排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), + // props: {pageTitle:'产品 - 订单数排行', rank_type: 2, type: 'check_type'} + // }, + // { + // path: 'checkRefund', + // name: '产品退单数排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankList.vue'), + // props: {pageTitle:'产品 - 退单数排行', rank_type: 3, type: 'check_type'} + // }, + // { + // path: 'loss', + // name: '产品负毛利排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankList.vue'), + // props: {pageTitle:'产品 - 负毛利排行', rank_type: 5, type: 'loss'} + // }, + // { + // path: 'agentProfit', + // name: '代理商毛利润排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), + // props: {pageTitle:'代理商 - 毛利润排行', rank_type: 1, type: 'agent'} + // }, + // { + // path: 'agentRecharge', + // name: '代理商充值排行', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankBatchList.vue'), + // props: {pageTitle:'代理商 - 充值排行', rank_type: 4, type: 'agent'} + // }, + // { + // path: 'agentNew', + // name: '代理商新加盟', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), + // props: {pageTitle:'代理商 - 新加盟', type: 'agentnew', showDateSelect: false} + // }, + // { + // path: 'purchase', + // name: '采购价', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/Purchase.vue'), + // props: {pageTitle:'设置 - 采购价', type: 'purchase'} + // }, + // { + // path: 'stagePurchase', + // name: '阶段采购价', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/Purchase.vue'), + // props: {pageTitle:'设置 - 阶段采购', type: 'stagePurchase'} + // }, + // { + // path: 'detail', + // name: '详情', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), + // props: {pageTitle:'详情', type: 'day', showDateSelect: false, lookMore:false} + // }, + // { + // path: 'list', + // name: '列表', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankList.vue'), + // props: {pageTitle:'详情', showDateSelect: false, lookMore:false} + // }, + // { + // path: 'order', + // name: '订单统计', + // component: () => import( /* webpackChunkName: "Ranking" */ '../views/super/Ranking/RankDetail.vue'), + // props: {pageTitle:'订单统计', type: 'order', showDateSelect: false} + // }, + // ] + // }, +// ] -const router = new VueRouter({ - mode: 'history', - base: process.env.BASE_URL, - routes -}) +// const router = new VueRouter({ +// mode: 'history', +// base: process.env.BASE_URL, +// routes +// }) +console.log(router,'router----'); router.beforeEach((to, from, next) => { console.log(to.path, 'to.path-----'); if (whiteSlideList.includes(to.path)) { diff --git a/src/utils/loadRoutes.js b/src/utils/loadRoutes.js new file mode 100644 index 0000000..2dc71dd --- /dev/null +++ b/src/utils/loadRoutes.js @@ -0,0 +1,14 @@ +import Vue from 'vue' +import VueRouter from 'vue-router' + +Vue.use(VueRouter) +export const loadRoutesFromJSON = (routesConfig) => { + return routesConfig.map(route => ({ + ...route, + component: () => import(/* webpackChunkName: route.webpackChunkName */ `@/${route.component}`), + ...(route.redirect ? { + redirect: () => import(/* webpackChunkName: route.webpackChunkName */ `@/${route.redirect}`) + } : {}), + children: route.children ? loadRoutesFromJSON(route.children) : [] + })) + } \ No newline at end of file