From 80b159d3c0d11a6479b4b5f93d6efe456ce6b6d9 Mon Sep 17 00:00:00 2001 From: xy <271556543@qq.com> Date: Tue, 27 Aug 2024 18:04:04 +0800 Subject: [PATCH] init --- package.json | 1 + src/api/me.js | 34 +++ src/api/role.js | 16 ++ src/api/user.js | 41 ++-- src/assets/face.jpg | Bin 0 -> 25275 bytes src/components/ThemePicker/index.vue | 176 ++++++++++++++++ src/icons/svg/folder.svg | 1 + src/icons/svg/logout.svg | 1 + src/layout/CardContainer.vue | 36 ++++ src/layout/components/Navbar/Icon.vue | 1 + src/layout/components/Navbar/Item.vue | 10 +- src/layout/components/Navbar/index.vue | 123 +++++++---- src/main.js | 18 +- src/permission.js | 1 - src/settings.js | 2 +- src/store/getters.js | 1 + src/store/modules/permission.js | 2 +- src/store/modules/user.js | 9 +- src/styles/element-ui.scss | 4 + src/styles/{navbar.css => navbar.scss} | 10 +- src/styles/variables.scss | 5 +- src/views/login/index.vue | 2 +- src/views/system/components/AddMenu.vue | 137 ++++++++++++ src/views/system/components/AddRole.vue | 75 +++++++ src/views/system/components/AddUser.vue | 99 +++++++++ .../system/components/BindPermissions.vue | 98 +++++++++ src/views/system/components/BindRoles.vue | 134 ++++++++++++ src/views/system/menu.vue | 190 +++++++++++++++-- src/views/system/role.vue | 107 ++++++---- src/views/system/user.vue | 199 +++++++++++++++++- 30 files changed, 1393 insertions(+), 140 deletions(-) create mode 100644 src/api/me.js create mode 100644 src/assets/face.jpg create mode 100644 src/components/ThemePicker/index.vue create mode 100644 src/icons/svg/folder.svg create mode 100644 src/icons/svg/logout.svg create mode 100644 src/layout/CardContainer.vue rename src/styles/{navbar.css => navbar.scss} (99%) create mode 100644 src/views/system/components/AddMenu.vue create mode 100644 src/views/system/components/AddRole.vue create mode 100644 src/views/system/components/AddUser.vue create mode 100644 src/views/system/components/BindPermissions.vue create mode 100644 src/views/system/components/BindRoles.vue diff --git a/package.json b/package.json index 6efba07..13f0bc8 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "test:ci": "npm run lint && npm run test:unit" }, "dependencies": { + "@riophae/vue-treeselect": "^0.4.0", "axios": "0.18.1", "bpmn-js": "^7.3.1", "bpmn-js-properties-panel": "^0.37.2", diff --git a/src/api/me.js b/src/api/me.js new file mode 100644 index 0000000..aca6a59 --- /dev/null +++ b/src/api/me.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +export function login(data) { + return request({ + url: '/api/auth/login', + method: 'post', + data, + isLoading: false + }) +} + +export function getInfo(token) { + return request({ + url: '/api/auth/me', + method: 'post', + params: { token }, + isLoading: false + }) +} + +export function logout() { + return request({ + url: '/api/auth/logout', + method: 'post' + }) +} + +export function permissions () { + return request({ + url: "/api/auth/permissions", + method: "post", + isLoading: false, + }) +} diff --git a/src/api/role.js b/src/api/role.js index 65c8381..60924ba 100644 --- a/src/api/role.js +++ b/src/api/role.js @@ -23,3 +23,19 @@ export function destroy (data) { data }) } + +export function getPermissions (params) { + return request({ + url: "/api/backend/role/get-permissions", + method: "get", + params + }) +} + +export function setPermissions (data) { + return request({ + url: "/api/backend/role/set-permissions", + method: "post", + data + }) +} diff --git a/src/api/user.js b/src/api/user.js index aca6a59..44fff87 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -1,34 +1,41 @@ -import request from '@/utils/request' +import request from '@/utils/request'; -export function login(data) { +export function index (params) { return request({ - url: '/api/auth/login', - method: 'post', - data, - isLoading: false + url: "/api/backend/user", + method: "get", + params }) } -export function getInfo(token) { +export function save (data) { return request({ - url: '/api/auth/me', - method: 'post', - params: { token }, - isLoading: false + url: "/api/backend/user/save", + method: "post", + data + }) +} + +export function destroy (data) { + return request({ + url: "/api/backend/user/delete", + method: "post", + data }) } -export function logout() { +export function getRoles (params) { return request({ - url: '/api/auth/logout', - method: 'post' + url: "/api/backend/user/get-roles", + method: "get", + params }) } -export function permissions () { +export function setRoles (data) { return request({ - url: "/api/auth/permissions", + url: "/api/backend/user/set-roles", method: "post", - isLoading: false, + data }) } diff --git a/src/assets/face.jpg b/src/assets/face.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e5cd07f41f0252110cb2977ba7396f274b93b7f GIT binary patch literal 25275 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 DxNyCy literal 0 HcmV?d00001 diff --git a/src/components/ThemePicker/index.vue b/src/components/ThemePicker/index.vue new file mode 100644 index 0000000..9b6b924 --- /dev/null +++ b/src/components/ThemePicker/index.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/icons/svg/folder.svg b/src/icons/svg/folder.svg new file mode 100644 index 0000000..2d2cbca --- /dev/null +++ b/src/icons/svg/folder.svg @@ -0,0 +1 @@ + diff --git a/src/icons/svg/logout.svg b/src/icons/svg/logout.svg new file mode 100644 index 0000000..cd9668a --- /dev/null +++ b/src/icons/svg/logout.svg @@ -0,0 +1 @@ + diff --git a/src/layout/CardContainer.vue b/src/layout/CardContainer.vue new file mode 100644 index 0000000..ac18770 --- /dev/null +++ b/src/layout/CardContainer.vue @@ -0,0 +1,36 @@ + + + + + diff --git a/src/layout/components/Navbar/Icon.vue b/src/layout/components/Navbar/Icon.vue index 78e7e08..a52d1c9 100644 --- a/src/layout/components/Navbar/Icon.vue +++ b/src/layout/components/Navbar/Icon.vue @@ -32,5 +32,6 @@ export default { diff --git a/src/layout/components/Navbar/Item.vue b/src/layout/components/Navbar/Item.vue index d1d1410..8c0c3a4 100644 --- a/src/layout/components/Navbar/Item.vue +++ b/src/layout/components/Navbar/Item.vue @@ -3,19 +3,21 @@ diff --git a/src/layout/components/Navbar/index.vue b/src/layout/components/Navbar/index.vue index 4f90c3c..014f219 100644 --- a/src/layout/components/Navbar/index.vue +++ b/src/layout/components/Navbar/index.vue @@ -15,12 +15,23 @@ @@ -43,28 +71,15 @@ @@ -73,13 +88,17 @@ import variables from "@/styles/variables.scss" import { mapGetters } from 'vuex' import Item from "./Item.vue" +import SvgIcon from '@/components/SvgIcon/index.vue' +import ThemePicker from '@/components/ThemePicker/index.vue' export default { components: { - Item + ThemePicker, + Item, + SvgIcon }, data () { return { - activeMenu: "" + isFullscreen: false, } }, computed: { @@ -91,21 +110,33 @@ export default { 'avatar', 'name', 'permission_routes', + 'department' ]), - // activeMenu() { - // const route = this.$route - // const { meta, path, matched } = route - // // if set path, the sidebar will highlight the path you set - // if (meta.activeMenu) { - // return meta.activeMenu - // } - // console.log(matched[matched.length-1].parent.path) - // return matched[matched.length-1].parent.path - // }, + activeMenu() { + const route = this.$route + const { + meta, + path + } = route + // if set path, the sidebar will highlight the path you set + if (meta.activeMenu) { + return meta.activeMenu + } + return path + }, }, methods: { - menuSelect (index,path) { - this.activeMenu = path[0] + handleFullscreen () { + this.isFullscreen = document.fullscreenElement !== null + }, + fullscreen () { + if (!document.fullscreenElement) { + // 请求全屏 + document.documentElement.requestFullscreen() + } else { + // 退出全屏 + document.exitFullscreen() + } }, async logout() { await this.$store.dispatch('user/logout') @@ -113,10 +144,16 @@ export default { } }, created() { + }, + mounted() { + document.addEventListener('fullscreenchange', this.handleFullscreen) + }, + beforeDestroy() { + document.removeEventListener('fullscreenchange', this.handleFullscreen) } } diff --git a/src/main.js b/src/main.js index 9fb3520..d9a7131 100644 --- a/src/main.js +++ b/src/main.js @@ -29,16 +29,28 @@ if (process.env.NODE_ENV === "production") { } // set ElementUI lang to EN -Vue.use(ElementUI, { locale }); +//Vue.use(ElementUI, { locale }); // 如果想要中文版 element-ui,按如下方式声明 -// Vue.use(ElementUI) -import { VXETable, VxeIcon, VxeTable, VxeColumn, VxeColgroup, VxeTableEditModule } from "vxe-table"; + Vue.use(ElementUI) + +//vxetable +import { VxeIcon, VxeTable, VxeColumn, VxeColgroup, VxeTableEditModule, VxeTableValidatorModule, VxeModal, VxeToolbar } from "vxe-table"; import "vxe-table/styles/index.scss" Vue.use(VxeTableEditModule); +Vue.use(VxeTableValidatorModule); Vue.use(VxeIcon); Vue.use(VxeTable); Vue.use(VxeColumn); Vue.use(VxeColgroup); +Vue.use(VxeModal); +Vue.use(VxeToolbar); +//treeselect +import '@riophae/vue-treeselect/dist/vue-treeselect.css' +import Treeselect from "@riophae/vue-treeselect" +Vue.component("Treeselect",Treeselect); + +import CardContainer from "@/layout/CardContainer.vue" +Vue.component("CardContainer",CardContainer) //wujie import Wujie from "wujie-vue2"; Vue.use(Wujie); diff --git a/src/permission.js b/src/permission.js index fdb579d..41d8294 100644 --- a/src/permission.js +++ b/src/permission.js @@ -12,7 +12,6 @@ const whiteList = ['/login'] // no redirect whitelist let isFirstEnter = true; //第一次进入获取用户信息 router.beforeEach(async(to, from, next) => { - console.log(from.path,to.path) // start progress bar NProgress.start() diff --git a/src/settings.js b/src/settings.js index 9cbbf15..f7909c9 100644 --- a/src/settings.js +++ b/src/settings.js @@ -1,7 +1,7 @@ module.exports = { title: 'Vue Admin Template', - copyright: '版权所有', + copyright: '常州环境监测中心', /** * @type {boolean} true | false diff --git a/src/store/getters.js b/src/store/getters.js index 2d79d65..2297fe2 100644 --- a/src/store/getters.js +++ b/src/store/getters.js @@ -4,6 +4,7 @@ const getters = { token: state => state.user.token, avatar: state => state.user.avatar, name: state => state.user.name, + department: state => state.user.department, admins: state => state.data.admins, departments: state => state.data.departments, permission_routes: state => state.permission.routes, diff --git a/src/store/modules/permission.js b/src/store/modules/permission.js index ea49a1b..27b3a1c 100644 --- a/src/store/modules/permission.js +++ b/src/store/modules/permission.js @@ -1,5 +1,5 @@ import { asyncRoutes, constantRoutes } from '@/router' -import { permissions } from "@/api/user" +import { permissions } from "@/api/me" import path from "path" import Layout from "@/layout" diff --git a/src/store/modules/user.js b/src/store/modules/user.js index 160b63f..94f1871 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,4 +1,4 @@ -import { login, logout, getInfo } from '@/api/user' +import { login, logout, getInfo } from '@/api/me' import { getToken, setToken, removeToken } from '@/utils/auth' import { resetRouter } from '@/router' @@ -8,6 +8,7 @@ const getDefaultState = () => { name: '', avatar: '', adminId: '', + department: {}, role: [], } } @@ -32,6 +33,9 @@ const mutations = { }, SET_ADMIN_ID: (state, id) => { state.adminId = id + }, + SET_DEPARTMENT: (state, department) => { + state.department = department } } @@ -57,8 +61,9 @@ const actions = { return new Promise((resolve, reject) => { getInfo(state.token).then(response => { - const { name, avatar, id, role } = response + const { name, avatar, id, role, department } = response + commit('SET_DEPARTMENT',department) commit('SET_NAME', name) commit('SET_AVATAR', avatar) commit('SET_ADMIN_ID', id) diff --git a/src/styles/element-ui.scss b/src/styles/element-ui.scss index 0062411..bf5f6ec 100644 --- a/src/styles/element-ui.scss +++ b/src/styles/element-ui.scss @@ -47,3 +47,7 @@ .el-range-separator { box-sizing: content-box; } + +.el-submenu.is-active .el-submenu__title { + border-bottom: 2px solid; +} diff --git a/src/styles/navbar.css b/src/styles/navbar.scss similarity index 99% rename from src/styles/navbar.css rename to src/styles/navbar.scss index 45fce6c..357b9ef 100644 --- a/src/styles/navbar.css +++ b/src/styles/navbar.scss @@ -383,6 +383,11 @@ a { text-decoration: none } +a:hover { + --tblr-link-color-rgb: var(--tblr-link-hover-color-rgb); + text-decoration: underline +} + a:not([href]):not([class]),a:not([href]):not([class]):hover { color: inherit; text-decoration: none @@ -24695,7 +24700,7 @@ textarea[cols] { animation: animated-dots 1.2s steps(4,jump-none) infinite } -.modal-content .btn-close { +.modal-content>.btn-close,.modal-header>.btn-close { position: absolute; top: 0; right: 0; @@ -25222,7 +25227,8 @@ textarea[cols] { .ribbon-start { right: auto; - left: calc(-1 * var(--tblr-ribbon-margin)) + left: calc(-1 * var(--tblr-ribbon-margin)); + border-radius: 0 var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) var(--tblr-ribbon-border-radius) } .ribbon-start:before { diff --git a/src/styles/variables.scss b/src/styles/variables.scss index 782453c..e97ecaf 100644 --- a/src/styles/variables.scss +++ b/src/styles/variables.scss @@ -1,6 +1,9 @@ // sidebar +:root { + --theme-color: #5898f2; +} $menuText:#333; -$menuActiveText:#409EFF; +$menuActiveText: var(--theme-color); $subMenuActiveText:#f4f4f5; //https://github.com/ElemeFE/element/issues/12951 $menuBg:#fff; diff --git a/src/views/login/index.vue b/src/views/login/index.vue index 2919cbb..07176f3 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -64,7 +64,7 @@ import { validUsername } from '@/utils/validate' -import { login, getInfo } from "@/api/user"; +import { login, getInfo } from "@/api/me"; const defaultSettings = require('../../../src/settings.js') export default { name: 'Login', diff --git a/src/views/system/components/AddMenu.vue b/src/views/system/components/AddMenu.vue new file mode 100644 index 0000000..c88b05f --- /dev/null +++ b/src/views/system/components/AddMenu.vue @@ -0,0 +1,137 @@ + + + + + diff --git a/src/views/system/components/AddRole.vue b/src/views/system/components/AddRole.vue new file mode 100644 index 0000000..91571bb --- /dev/null +++ b/src/views/system/components/AddRole.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/src/views/system/components/AddUser.vue b/src/views/system/components/AddUser.vue new file mode 100644 index 0000000..9f96edb --- /dev/null +++ b/src/views/system/components/AddUser.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/src/views/system/components/BindPermissions.vue b/src/views/system/components/BindPermissions.vue new file mode 100644 index 0000000..29a7fb3 --- /dev/null +++ b/src/views/system/components/BindPermissions.vue @@ -0,0 +1,98 @@ + + + + + diff --git a/src/views/system/components/BindRoles.vue b/src/views/system/components/BindRoles.vue new file mode 100644 index 0000000..a628edf --- /dev/null +++ b/src/views/system/components/BindRoles.vue @@ -0,0 +1,134 @@ + + + + + diff --git a/src/views/system/menu.vue b/src/views/system/menu.vue index 192af7c..51114bf 100644 --- a/src/views/system/menu.vue +++ b/src/views/system/menu.vue @@ -1,33 +1,191 @@ diff --git a/src/views/system/role.vue b/src/views/system/role.vue index c09b414..779f2d2 100644 --- a/src/views/system/role.vue +++ b/src/views/system/role.vue @@ -1,53 +1,72 @@