diff --git a/src/components/Sidebar.vue b/src/components/Sidebar.vue
index 07b9de7..cd7e4fa 100644
--- a/src/components/Sidebar.vue
+++ b/src/components/Sidebar.vue
@@ -59,37 +59,37 @@ export default {
menuList: [
{
icon: 'el-icon-school',
- index: 'customer',
+ index: '/customer',
title: '客户管理'
},
{
icon: 'el-icon-user',
- index: 'user',
+ index: '/user',
title: '用户管理'
},
{
icon: 'el-icon-shopping-bag-2',
- index: 'order',
+ index: '/order',
title: '订单管理'
},
{
icon: 'el-icon-document-checked',
- index: 'curriculum',
+ index: '/curriculum',
title: '课程管理'
},
{
icon: 'el-icon-notebook-2',
- index: 'data',
+ index: '/data',
title: '数据管理'
},
{
icon: 'el-icon-office-building',
- index: 'configure',
+ index: '/configure',
title: '服务配置'
},
{
icon: 'el-icon-office-building',
- index: 'system',
+ index: '/system',
title: '系统配置'
},
],
@@ -118,10 +118,11 @@ export default {
},
initMenu() {
if (Setting.dynamicRoute) {
- const routes = this.routes
+ const routes = this.$store.state.routes
+ console.log("🚀 ~ file: Sidebar.vue ~ line 122 ~ initMenu ~ routes", routes)
const menus = []
this.menuList.map(e => {
- routes.find(n => n.name === e.index) && menus.push(e)
+ routes.find(n => n.path === e.index) && menus.push(e)
})
this.menus = menus
} else {
diff --git a/src/directive/auth/index.js b/src/directive/auth/index.js
new file mode 100644
index 0000000..a5ba3b1
--- /dev/null
+++ b/src/directive/auth/index.js
@@ -0,0 +1,27 @@
+/**
+ * @description 鉴权指令
+ * 当传入的权限当前用户没有时,会移除该组件
+ * 用例:text 或者:text
+ * */
+import store from '@/store'
+
+export default {
+ inserted (el, binding, vnode) {
+ let btnText = ''
+ // 如果有传值,就取传的值,否则,就取页面路由和按钮名字拼接起来
+ if(binding.value){
+ btnText = binding.value
+ }else{
+ btnText = `${vnode.context.$route.path}:${el.innerText}`
+ }
+ const btnPermissions = store.state.btns
+ console.log("🚀 ~ file: index.js ~ line 18 ~ inserted ~ btnPermissions", btnPermissions, btnText)
+ if (btnText && btnPermissions && btnPermissions.length) {
+ const isPermission = btnPermissions.includes(btnText)
+ // 如果按钮集合里没有该权限,就把该按钮给去除
+ if (!isPermission) {
+ el.parentNode && el.parentNode.removeChild(el)
+ }
+ }
+ }
+}
diff --git a/src/directive/index.js b/src/directive/index.js
new file mode 100644
index 0000000..49d418c
--- /dev/null
+++ b/src/directive/index.js
@@ -0,0 +1,12 @@
+/**
+ * 插件
+ * */
+
+import directiveAuth from './auth'
+
+export default {
+ async install (Vue) {
+ // 指令
+ Vue.directive('auth', directiveAuth)
+ }
+}
\ No newline at end of file
diff --git a/src/libs/auth/generateBtnPermission.js b/src/libs/auth/generateBtnPermission.js
index 195f554..9433f81 100644
--- a/src/libs/auth/generateBtnPermission.js
+++ b/src/libs/auth/generateBtnPermission.js
@@ -8,14 +8,17 @@ export default function(data){
data.map(e => {
e.children.map(n => {
if(n.children.length){
- result.push(`${e.name}:${n.name}`)
+ result.push(`${e.path}:${n.name}`)
n.children.map(j => {
e.path ? result.push(`${e.path}:${n.name}:${j.name}`) : result.push(`${n.path}:${j.name}`)
+ j.children.map(k => {
+ e.path ? result.push(`${e.path}:${n.name}:${j.name}:${k.name}`) : result.push(`${n.path}:${j.name}:${k.name}`)
+ })
})
}else{
result.push(`${e.path}:${n.name}`)
}
})
})
- store.dispatch('auth/addBtnAuth',result)
+ store.commit('addBtnAuth', result)
}
diff --git a/src/libs/route/addRoutes.js b/src/libs/route/addRoutes.js
index caf6e9e..63fddf1 100644
--- a/src/libs/route/addRoutes.js
+++ b/src/libs/route/addRoutes.js
@@ -1,5 +1,4 @@
import store from '@/store';
-import router from '@/router';
import generateBtnPermission from '../auth/generateBtnPermission';
const newRoutes = []
@@ -14,7 +13,6 @@ function createRoute(data){
if(e.path){
let meta = createMeta(e)
newRoutes.push({
- name: e.path,
path: e.path,
meta
})
@@ -27,6 +25,5 @@ function createRoute(data){
export default function(data,path){
generateBtnPermission(data)
createRoute(data)
- console.log('route', newRoutes)
- // store.dispatch('addRoutes',newRoutes)
+ store.commit('addRoutes',newRoutes)
}
\ No newline at end of file
diff --git a/src/libs/route/generateRoutes.js b/src/libs/route/generateRoutes.js
index 638f846..02362a4 100644
--- a/src/libs/route/generateRoutes.js
+++ b/src/libs/route/generateRoutes.js
@@ -3,7 +3,7 @@ import router from '@/router';
export default function(){
setTimeout(() => {
- let routes = store.state.auth.routes
+ let routes = store.state.routes
routes.forEach(e => {
if(e.path == '/'){
e.component = () => import('@/layouts/home/index.vue')
diff --git a/src/main.js b/src/main.js
index f51f298..af2eeec 100644
--- a/src/main.js
+++ b/src/main.js
@@ -14,6 +14,7 @@ import store from './store'
import { systemStatus, systemTypeStatus, systemAttributionStatus, courseTypeStatus,
hoursStatus, roleStatus, orderTypeFn, orderStatusFn, orderNatureFn, Percentage, removeByValue, isIE, encodeString, formatDate, downloadFile } from './utils/core';
import preventReClick from './utils/preventReClick' //防多次点击,重复提交
+import plugins from '@/directive';
Vue.prototype.api = api;
@@ -41,7 +42,7 @@ Vue.prototype.downloadFile = downloadFile;
Vue.config.productionTip = false;
Vue.use(ElementUI, { size: 'small' });
-
+Vue.use(plugins);
new Vue({
router,
diff --git a/src/utils/api.js b/src/utils/api.js
index b95d153..0b47056 100644
--- a/src/utils/api.js
+++ b/src/utils/api.js
@@ -5,8 +5,8 @@ const host1 = 'http://192.168.31.137:9000'
export default {
- logins: `users/users/user/login`, //登录
- verification: `users/users/user/captcha`,// 验证码图片
+ logins: `${host1}/users/users/user/login`, //登录
+ verification: `${host1}/users/users/user/captcha`,// 验证码图片
bindPhoneOrEmail: `users/users/userAccount/bindPhoneOrEmail`,// 绑定手机
sendPhoneOrEmailCode: `users/users/userAccount/sendPhoneOrEmailCode`,// 手机验证码
@@ -110,6 +110,7 @@ export default {
saveReferenceDemo: `nakadai/model/reference/demo/saveReferenceDemo`,
referenceDemoList: `nakadai/model/reference/demo/referenceDemoList`,
getAllModelList: `nakadai/model/reference/demo/getAllModelList`,
+ synchronizationMdel: `nakadai/model/reference/demo/synchronizationMdel`,
deleteSourceModelCategory: `nakadai/model/category/deleteSourceModelCategory`,
categorySave: `nakadai/model/category/save`,
diff --git a/src/views/course/Curriculum.vue b/src/views/course/Curriculum.vue
index aab3df3..860608b 100644
--- a/src/views/course/Curriculum.vue
+++ b/src/views/course/Curriculum.vue
@@ -72,8 +72,8 @@
课程列表
- 新建课程
- 批量删除
+ 新增课程
+ 批量删除
+ @change="changeSwitch($event, scope.row)"
+ v-auth="'/curriculum:上下架'">
- 编辑
- 内容设置
- 删除
+ 编辑
+ 内容设置
+ 删除
diff --git a/src/views/course/contentSettings.vue b/src/views/course/contentSettings.vue
index b360446..7d58b63 100644
--- a/src/views/course/contentSettings.vue
+++ b/src/views/course/contentSettings.vue
@@ -12,8 +12,8 @@
内容设置
- 添加章节
- 编辑顺序
+ 添加章节
+ 编辑顺序
取消
@@ -28,9 +28,9 @@
{{ chapter.name }}
- 修改章节名称
- 添加小节
- 删除
+ 修改章节名称
+ 添加小节
+ 删除
@@ -51,11 +51,11 @@
- 下载
- 查看
- 删除
- 修改小节名称
- 更换文件
+ 下载
+ 查看
+ 删除
+ 修改小节名称
+ 更换文件
diff --git a/src/views/customer/customer.vue b/src/views/customer/customer.vue
index 5cc7458..707c20c 100644
--- a/src/views/customer/customer.vue
+++ b/src/views/customer/customer.vue
@@ -50,8 +50,8 @@
客户列表
- 新建
- 批量删除
+ 新增
+ 批量删除
@@ -80,11 +80,11 @@
- 重置密码
- 查看
- 编辑
- 删除
- 应用权限
+ 重置密码
+ 查看
+ 编辑
+ 删除
+ 应用权限
diff --git a/src/views/data/Data.vue b/src/views/data/Data.vue
index 799ddca..33ddddc 100644
--- a/src/views/data/Data.vue
+++ b/src/views/data/Data.vue
@@ -20,6 +20,7 @@
import Product from './Product.vue';
import Framework from './Framework.vue';
import Introduce from './Introduce.vue';
+import Setting from '@/setting'
export default {
data() {
return {
@@ -39,13 +40,26 @@ export default {
Introduce
},
created() {
-
+ Setting.dynamicRoute && this.initTabs()
},
methods: {
tabChange(index){
this.active = index
this.$router.push(`/data?tab=${index}`)
},
+ initTabs() {
+ const btns = this.$store.state.btns
+ const tab1 = btns.includes('/data:产品管理')
+ const tab2 = btns.includes('/data:数据架构')
+ const tab3 = btns.includes('/data:数据简介')
+
+ tab1 || delete this.tabs.first
+ tab2 || delete this.tabs.second
+ tab3 || delete this.tabs.third
+ const tab = this.$route.query.tab
+ const keys = Object.keys(this.tabs)
+ this.active = keys.includes(tab) ? tab : keys[0]
+ }
}
};
diff --git a/src/views/data/Framework.vue b/src/views/data/Framework.vue
index 6542ca1..a5da962 100644
--- a/src/views/data/Framework.vue
+++ b/src/views/data/Framework.vue
@@ -10,9 +10,9 @@
{{ node.label }}
-
-
-
+
+
+
@@ -28,8 +28,8 @@
- 导入数据
- 批量删除
+ 导入数据
+ 批量删除
@@ -51,10 +51,10 @@
- 预览
- 删除
- 编辑产品表名
- 编辑产品表头
+ 预览
+ 删除
+ 编辑产品表名
+ 编辑产品表头
diff --git a/src/views/data/Introduce.vue b/src/views/data/Introduce.vue
index cb3d6bd..b4c9d7d 100644
--- a/src/views/data/Introduce.vue
+++ b/src/views/data/Introduce.vue
@@ -10,7 +10,7 @@
请添加简介
diff --git a/src/views/data/Product.vue b/src/views/data/Product.vue
index 77bf3be..f4baafa 100644
--- a/src/views/data/Product.vue
+++ b/src/views/data/Product.vue
@@ -37,8 +37,8 @@
产品列表
- 新增
- 批量删除
+ 新增
+ 批量删除
@@ -52,14 +52,14 @@
-
+
- 预览
- 编辑
- 删除
+ 预览
+ 编辑
+ 删除
diff --git a/src/views/order/Order.vue b/src/views/order/Order.vue
index d3dfb47..35a3e93 100644
--- a/src/views/order/Order.vue
+++ b/src/views/order/Order.vue
@@ -65,8 +65,8 @@
订单列表
- 新建订单
- 批量删除
+ 新建订单
+ 批量删除
-
+
{{ scope.row.orderStatus === "已完成" ? "修改" : "处理" }}
- 查看
- 删除
+ 查看
+ 删除
续费
+ @click="handle('renew',scope.row)" v-auth>续费
diff --git a/src/views/serve/Configure.vue b/src/views/serve/Configure.vue
index 6fb71d2..ee49490 100644
--- a/src/views/serve/Configure.vue
+++ b/src/views/serve/Configure.vue
@@ -70,17 +70,17 @@
- 进入
+ 进入
- 进入
+ 进入
- 进入
+ 进入