From 29f470c7c1d121d865ec098c78374f9299aa29aa Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E8=A2=81=E5=AD=90=E9=BE=99?=
<14096380+qwe963852@user.noreply.gitee.com>
Date: Tue, 20 Aug 2024 22:07:34 +0800
Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
babel.config.js | 13 ++
src/App.vue | 28 ++++
src/layout/components/AppMain.vue | 75 +++++++++++
src/plugins/auth.js | 60 +++++++++
src/utils/auth.js | 29 ++++
src/views/dashboard/BarChart.vue | 103 +++++++++++++++
src/views/system/role/authUser.vue | 205 +++++++++++++++++++++++++++++
src/views/system/user/authRole.vue | 118 +++++++++++++++++
8 files changed, 631 insertions(+)
create mode 100644 babel.config.js
create mode 100644 src/App.vue
create mode 100644 src/layout/components/AppMain.vue
create mode 100644 src/plugins/auth.js
create mode 100644 src/utils/auth.js
create mode 100644 src/views/dashboard/BarChart.vue
create mode 100644 src/views/system/role/authUser.vue
create mode 100644 src/views/system/user/authRole.vue
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..c8267b2
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,13 @@
+module.exports = {
+ presets: [
+ // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
+ '@vue/cli-plugin-babel/preset'
+ ],
+ 'env': {
+ 'development': {
+ // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
+ // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
+ 'plugins': ['dynamic-import-node']
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..69a3716
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
new file mode 100644
index 0000000..7c1e34f
--- /dev/null
+++ b/src/layout/components/AppMain.vue
@@ -0,0 +1,75 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/plugins/auth.js b/src/plugins/auth.js
new file mode 100644
index 0000000..6c6bc24
--- /dev/null
+++ b/src/plugins/auth.js
@@ -0,0 +1,60 @@
+import store from '@/store'
+
+function authPermission(permission) {
+ const all_permission = "*:*:*";
+ const permissions = store.getters && store.getters.permissions
+ if (permission && permission.length > 0) {
+ return permissions.some(v => {
+ return all_permission === v || v === permission
+ })
+ } else {
+ return false
+ }
+}
+
+function authRole(role) {
+ const super_admin = "admin";
+ const roles = store.getters && store.getters.roles
+ if (role && role.length > 0) {
+ return roles.some(v => {
+ return super_admin === v || v === role
+ })
+ } else {
+ return false
+ }
+}
+
+export default {
+ // 验证用户是否具备某权限
+ hasPermi(permission) {
+ return authPermission(permission);
+ },
+ // 验证用户是否含有指定权限,只需包含其中一个
+ hasPermiOr(permissions) {
+ return permissions.some(item => {
+ return authPermission(item)
+ })
+ },
+ // 验证用户是否含有指定权限,必须全部拥有
+ hasPermiAnd(permissions) {
+ return permissions.every(item => {
+ return authPermission(item)
+ })
+ },
+ // 验证用户是否具备某角色
+ hasRole(role) {
+ return authRole(role);
+ },
+ // 验证用户是否含有指定角色,只需包含其中一个
+ hasRoleOr(roles) {
+ return roles.some(item => {
+ return authRole(item)
+ })
+ },
+ // 验证用户是否含有指定角色,必须全部拥有
+ hasRoleAnd(roles) {
+ return roles.every(item => {
+ return authRole(item)
+ })
+ }
+}
diff --git a/src/utils/auth.js b/src/utils/auth.js
new file mode 100644
index 0000000..a673d22
--- /dev/null
+++ b/src/utils/auth.js
@@ -0,0 +1,29 @@
+import Cookies from 'js-cookie'
+
+const TokenKey = 'Admin-Token'
+
+const ExpiresInKey = 'Admin-Expires-In'
+
+export function getToken() {
+ return Cookies.get(TokenKey)
+}
+
+export function setToken(token) {
+ return Cookies.set(TokenKey, token)
+}
+
+export function removeToken() {
+ return Cookies.remove(TokenKey)
+}
+
+export function getExpiresIn() {
+ return Cookies.get(ExpiresInKey) || -1
+}
+
+export function setExpiresIn(time) {
+ return Cookies.set(ExpiresInKey, time)
+}
+
+export function removeExpiresIn() {
+ return Cookies.remove(ExpiresInKey)
+}
diff --git a/src/views/dashboard/BarChart.vue b/src/views/dashboard/BarChart.vue
new file mode 100644
index 0000000..e175369
--- /dev/null
+++ b/src/views/dashboard/BarChart.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue
new file mode 100644
index 0000000..ea88e9d
--- /dev/null
+++ b/src/views/system/role/authUser.vue
@@ -0,0 +1,205 @@
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+ 添加用户
+
+
+
+ 批量取消授权
+
+
+
+ 关闭
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.createTime) }}
+
+
+
+
+ 取消授权
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue
new file mode 100644
index 0000000..e849c05
--- /dev/null
+++ b/src/views/system/user/authRole.vue
@@ -0,0 +1,118 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (pageNum - 1) * pageSize + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+ {{ parseTime(scope.row.createTime) }}
+
+
+
+
+
+
+
+
+ 提交
+ 返回
+
+
+
+
+
+