diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json index 751addcc..fc09fb93 100644 --- a/node_modules/.package-lock.json +++ b/node_modules/.package-lock.json @@ -6460,6 +6460,22 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/echarts": { + "version": "5.6.0", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/echarts/-/echarts-5.6.0.tgz", + "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.1" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -17684,6 +17700,21 @@ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true + }, + "node_modules/zrender": { + "version": "5.6.1", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" } } } diff --git a/package-lock.json b/package-lock.json index 8fd7bd56..18d0eabb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "axios": "^0.21.1", "core-js": "^3.10.0", "dayjs": "^1.10.4", + "echarts": "^5.6.0", "element-ui": "^2.15.14", "file-saver": "^2.0.5", "js-cookie": "^2.2.1", @@ -6512,6 +6513,22 @@ "safer-buffer": "^2.1.0" } }, + "node_modules/echarts": { + "version": "5.6.0", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/echarts/-/echarts-5.6.0.tgz", + "integrity": "sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "2.3.0", + "zrender": "5.6.1" + } + }, + "node_modules/echarts/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz", @@ -17736,6 +17753,21 @@ "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz", "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true + }, + "node_modules/zrender": { + "version": "5.6.1", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/zrender/-/zrender-5.6.1.tgz", + "integrity": "sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==", + "license": "BSD-3-Clause", + "dependencies": { + "tslib": "2.3.0" + } + }, + "node_modules/zrender/node_modules/tslib": { + "version": "2.3.0", + "resolved": "https://packages.aliyun.com/67652170c2681cbfb7c0b3fe/npm/npm-registry/tslib/-/tslib-2.3.0.tgz", + "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", + "license": "0BSD" } } } diff --git a/package.json b/package.json index 568326cf..7adf28f1 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "axios": "^0.21.1", "core-js": "^3.10.0", "dayjs": "^1.10.4", + "echarts": "^5.6.0", "element-ui": "^2.15.14", "file-saver": "^2.0.5", "js-cookie": "^2.2.1", diff --git a/src/permission.js b/src/permission.js index b538526d..e69de29b 100644 --- a/src/permission.js +++ b/src/permission.js @@ -1,98 +0,0 @@ -import store from '@/store'; // 导入 Vuex store 实例 -import router from '@/router'; // 导入 Vue Router 实例 -import { notification } from 'ant-design-vue'; // 导入 ant-design-vue 的 notification 组件 -import NProgress from 'nprogress'; // 导入进度条组件 -import 'nprogress/nprogress.css'; // 导入进度条样式 -NProgress.configure({ showSpinner: false }); // 配置进度条,隐藏加载动画 - -const loginPath = '/login'; // 登录路径 -const defaultRoutePath = '/race/list'; // 默认路由路径 -const whiteList = ['Login']; // 白名单,无需登录即可访问的页面 - -router.beforeEach(async(to, from, next) => { - NProgress.start(); // 开始进度条 - - const tokens = window.localStorage.getItem("token"); // 使用相同的键来获取token - /* 未登录情况下的路由拦截 */ - if (!tokens) { - // alert(tokens) - if (whiteList.includes(to.name)) { // 如果在白名单中,直接放行 - next(); - } else { // 否则重定向至登录页面 - next({ - path: loginPath, - query: { - redirect: to.fullPath, - }, - }); - } - return; - } - - /* 已登录情况下访问登录界面的处理 */ - if (to.path === loginPath) { // 如果已登录且访问登录页面,则重定向至默认页面 - next(defaultRoutePath); - return; - } - - /* 已获取用户信息的情况 */ - if (store.getters.permissions!=null && store.getters.permissions!=="") { // 如果已获取用户权限信息,则直接放行 - next(); - NProgress.done(); // 结束进度条 - return; - } - - /* 未获取用户信息的情况 */ - try { - await store.dispatch('initUser'); // 异步获取用户信息 - } catch (e) { - store.commit('logout'); // 获取失败时执行退出登录操作 - next({ path: loginPath, query: { redirect: to.fullPath } }); // 重定向至登录页面 - notification.error({ - message: '错误', - description: '请求用户信息失败,请重试', - }); // 显示错误通知 - NProgress.done(); // 结束进度条 - return; - } - - /* 成功获取用户信息的情况 */ - // 检查路由权限 - if (!checkAccess(to)) { // 如果当前路由无权限访问,则重定向至默认页面 - next({ path: defaultRoutePath, replace: true }); - NProgress.done(); // 结束进度条 - return; - } - const redirect = decodeURIComponent(from.query.redirect || to.path); // 获取重定向地址 - // 如果重定向地址与当前路径相同,则替换历史记录 - if (redirect === to.path) { - next({...to, replace: true }); - } else { // 否则正常重定向 - next(redirect); - } - NProgress.done(); // 结束进度条 -}); - -router.afterEach(() => { - NProgress.done(); // 结束进度条 -}); - -/** - * 判断当前路由是否具有权限访问 - * @param {Route} route 路由对象 - * @returns {boolean} 是否具有权限 - */ - -function checkAccess(route) { - - const userPrivileges = store.state.user.userPrivileges==null ? 1 : store.state.user.userPrivileges; // 获取用户权限信息 - const requiredPrivileges = route.meta.auth; // 获取当前路由所需权限信息 - console.log(userPrivileges) - // 如果路由未设置权限要求,则默认放行 - if (!requiredPrivileges) { - return true; - } - - // 检查用户的权限是否包含在所需权限中 - return requiredPrivileges.includes(userPrivileges); -} diff --git a/src/views/user/Console.vue b/src/views/user/Console.vue index c755a9d5..dcdf6111 100644 --- a/src/views/user/Console.vue +++ b/src/views/user/Console.vue @@ -1,1260 +1,629 @@ - - - - - -
-
系统状态
- -
- -
-
-
平台数据
- - -
- -
- -
  • -
    -
    -
      -
    • - -
    • - -
    • - -
    • -
    -
    -
    -
      -
    • 参赛总数
    • -
    • 获奖用户总数
    • -
    -
    -
    -
    -
    -
    -
    -
    -
    -
  • -
  • -
    -
    获奖监控
    -
    -
    最新赛事
    -
    - -
  • -

    - - {{ item.competitionName }} - - - {{ item.studentName }} - {{ item.awardLevel ? item.awardLevel : "暂未获奖" }} - - - {{ formatDateTime(item.registrationTime) }} -

    -
  • - - - -
    + + + + +
    +
    +
    +
    - - - - + - --> +