diff --git a/src/directives/auth.js b/src/directives/auth.js
index 660bcc87..75d74bed 100644
--- a/src/directives/auth.js
+++ b/src/directives/auth.js
@@ -1,4 +1,4 @@
-import permission from '@/utils/permission'
+import { permission } from '@/utils/permission'
export default {
mounted(el, binding) {
diff --git a/src/directives/role.js b/src/directives/role.js
new file mode 100644
index 00000000..42655b05
--- /dev/null
+++ b/src/directives/role.js
@@ -0,0 +1,22 @@
+import { rolePermission } from '@/utils/permission'
+
+export default {
+ mounted(el, binding) {
+ const { value } = binding
+ if(Array.isArray(value)){
+ let ishas = false;
+ value.forEach(item => {
+ if(rolePermission(item)){
+ ishas = true;
+ }
+ })
+ if (!ishas){
+ el.parentNode.removeChild(el)
+ }
+ }else{
+ if(!rolePermission(value)){
+ el.parentNode.removeChild(el);
+ }
+ }
+ }
+};
diff --git a/src/main.js b/src/main.js
index c0fc1c6b..a9b38ea2 100644
--- a/src/main.js
+++ b/src/main.js
@@ -10,7 +10,7 @@ import store from './store'
import api from './api'
import tool from './utils/tool'
import http from "./utils/request"
-import permission from './utils/permission'
+import { permission, rolePermission } from './utils/permission'
import errorHandler from './utils/errorHandler'
import scTable from './components/scTable'
import scFilterBar from './components/scFilterBar'
@@ -20,6 +20,7 @@ import scFormTable from './components/scFormTable'
import scTableSelect from './components/scTableSelect'
import scPageHeader from './components/scPageHeader'
import auth from './directives/auth'
+import role from './directives/role'
const app = createApp(App);
@@ -29,6 +30,7 @@ app.config.globalProperties.$TOOL = tool;
app.config.globalProperties.$HTTP = http;
app.config.globalProperties.$API = api;
app.config.globalProperties.$AUTH = permission;
+app.config.globalProperties.$ROLE = rolePermission;
app.use(store);
app.use(router);
@@ -45,6 +47,7 @@ app.component('scPageHeader', scPageHeader);
//注册全局指令
app.directive('auth', auth)
+app.directive('role', role)
//全局代码错误捕捉
app.config.errorHandler = errorHandler
diff --git a/src/utils/permission.js b/src/utils/permission.js
index cdde2930..7abc0328 100644
--- a/src/utils/permission.js
+++ b/src/utils/permission.js
@@ -1,6 +1,6 @@
import tool from '@/utils/tool';
-let permission = (data) => {
+export function permission(data) {
let userInfo = tool.data.get("user");
if(!userInfo){
return false;
@@ -12,4 +12,16 @@ let permission = (data) => {
let isHave = permissions.includes(data);
return isHave;
}
-export default permission;
\ No newline at end of file
+
+export function rolePermission(data) {
+ let userInfo = tool.data.get("user");
+ if(!userInfo){
+ return false;
+ }
+ let role = userInfo.userInfo.role;
+ if(!role){
+ return false;
+ }
+ let isHave = role.includes(data);
+ return isHave;
+}
diff --git a/src/views/other/directive.vue b/src/views/other/directive.vue
index 49f7fe10..1dc89185 100644
--- a/src/views/other/directive.vue
+++ b/src/views/other/directive.vue
@@ -6,7 +6,12 @@
v-auth="['user.no','user.add']"
-
+
+ v-role 角色权限控制
+ v-role="'admin'"
+ v-role="['SA','admin']"
+
+
@@ -17,7 +22,7 @@
return {}
},
created() {
-
+
}
}