Commit 42056450a8c48e5af8bbc853146d147ee0419c01
1 parent
dd5150c5
权限修改
Showing
10 changed files
with
459 additions
and
195 deletions
E/system-commandline-sentinel-files/dotnet-suggest-registration-git-credential-manager-core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null
0 → 100644
1 | +Exception during registration: | ||
2 | +System.ComponentModel.Win32Exception (0x80004005): 系统找不到指定的文件。 | ||
3 | + 在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) | ||
4 | + 在 System.Diagnostics.Process.Start() | ||
5 | + 在 System.CommandLine.Invocation.Process.StartProcess(String command, String args, String workingDir, Action`1 stdOut, Action`1 stdErr, ValueTuple`2[] environmentVariables) | ||
6 | + 在 System.CommandLine.Builder.CommandLineBuilderExtensions.<>c.<<RegisterWithDotnetSuggest>b__10_1>d.MoveNext() | ||
0 | \ No newline at end of file | 7 | \ No newline at end of file |
src/api/apis/apis.js
@@ -28,9 +28,9 @@ export default { | @@ -28,9 +28,9 @@ export default { | ||
28 | }) | 28 | }) |
29 | }, | 29 | }, |
30 | // 分页查询账号 | 30 | // 分页查询账号 |
31 | - deviceList(data) { | 31 | + userPage(data) { |
32 | return service({ | 32 | return service({ |
33 | - url: setUpUrls.deviceList, | 33 | + url: setUpUrls.userPage, |
34 | method: 'POST', | 34 | method: 'POST', |
35 | data | 35 | data |
36 | }) | 36 | }) |
src/api/urls/apis.js
@@ -7,7 +7,7 @@ export default { | @@ -7,7 +7,7 @@ export default { | ||
7 | // 查询角色列表 | 7 | // 查询角色列表 |
8 | roleList: "/api_html/school/manager/roleList", | 8 | roleList: "/api_html/school/manager/roleList", |
9 | // 分页查询账号 | 9 | // 分页查询账号 |
10 | - deviceList: "/api_html/school/manager/userPage", | 10 | + userPage: "/api_html/school/manager/userPage", |
11 | // 修改账号 禁用账号、修改账号密码等 | 11 | // 修改账号 禁用账号、修改账号密码等 |
12 | updateUser: "/api_html/school/manager/updateUser", | 12 | updateUser: "/api_html/school/manager/updateUser", |
13 | // 查询学校详情 | 13 | // 查询学校详情 |
src/router/permission.js
1 | -import NProgress from "nprogress" | ||
2 | -import router from "./index" | ||
3 | -import store from "../store" | 1 | +import NProgress from "nprogress"; |
2 | +import router from "./index"; | ||
3 | +import store from "../store"; | ||
4 | 4 | ||
5 | // 获取角色信息,根据用户权限动态加载路由 | 5 | // 获取角色信息,根据用户权限动态加载路由 |
6 | router.beforeEach((to, from, next) => { | 6 | router.beforeEach((to, from, next) => { |
7 | - NProgress.start() | ||
8 | - if (store.getters.token) { | ||
9 | - // if (to.path === "/login") { | ||
10 | - next() | ||
11 | - // } else { | ||
12 | - // if (!store.getters.info.permissions) { | ||
13 | - // (async function getAddRouters() { | ||
14 | - // // 省略 axios 请求代码 通过 token 向后台请求用户权限等信息,这里用假数据赋值 | ||
15 | - // const userInfo = { | ||
16 | - // permissions: [ | ||
17 | - // { | ||
18 | - // role: "superAdmin", | ||
19 | - // roleName: "超级管理员" | ||
20 | - // } | ||
21 | - // ], | ||
22 | - // name: "李老师", | ||
23 | - // // avatar: data.avatar ? data.avatar : "", | ||
24 | - // // uid: data.id, | ||
25 | - // authorityRouter: ["examinationPaper", | ||
26 | - // "examinationPaperAdd", | ||
27 | - // "examinationPaperEdit", | ||
28 | - // "examinationPaperRecycle", "ask", | ||
29 | - // "askAnalysis", | ||
30 | - // "test", | ||
31 | - // "testAnalysis", "portrait"], | ||
32 | - | ||
33 | - // } | ||
34 | - // await store.commit("setInfo", { ...userInfo }) | ||
35 | - // await store.commit("setRouters", userInfo.authorityRouter) | ||
36 | - // let newAddRouters = store.getters.addRouters | ||
37 | - // newAddRouters.forEach(res => { | ||
38 | - // router.addRoute(res) | ||
39 | - // }) | ||
40 | - // router.addRoute({ | ||
41 | - // path: "*", | ||
42 | - // redirect: "/404", | ||
43 | - // hidden: true, | ||
44 | - // children: [] | ||
45 | - // }) | ||
46 | - // next({ path: to.fullPath }) | ||
47 | - // }()) | ||
48 | - // } else { | ||
49 | - // next() | ||
50 | - // } | ||
51 | - // } | 7 | + NProgress.start(); |
8 | + if (to.path === "/login") { | ||
9 | + next(); | ||
52 | } else { | 10 | } else { |
53 | - if (store.getters.info && store.getters.addRouters) { | ||
54 | - console.log(store.getters.addRouters) | ||
55 | - store.commit("setToken", "isLogin"); | ||
56 | - store.commit( | ||
57 | - "setRouters", | ||
58 | - store.getters.info.authorityRouter | ||
59 | - ); | ||
60 | - | ||
61 | - let newAddRouters = store.getters.addRouters; | ||
62 | - newAddRouters.forEach((res) => { | ||
63 | - router.addRoute(res); | ||
64 | - }); | ||
65 | - router.addRoute({ | ||
66 | - path: "*", | ||
67 | - redirect: "/404", | ||
68 | - hidden: true, | ||
69 | - children: [], | ||
70 | - }); | ||
71 | - next({ path: to.fullPath }) | 11 | + if (store.getters.token) { |
12 | + next(); | ||
72 | } else { | 13 | } else { |
73 | - if (store.getters.code) { | ||
74 | - next() | 14 | + if (store.getters.info && store.getters.addRouters) { |
15 | + store.commit("setToken", "isLogin"); | ||
16 | + let userInfo = store.getters.info; | ||
17 | + let authorityRouterObj = userInfo.permissions.filter((item) => { | ||
18 | + return item.roleName == userInfo.showRoleName; | ||
19 | + }); | ||
20 | + console.log([...authorityRouterObj[0]?.authorityRouter]) | ||
21 | + store.commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]); | ||
22 | + store.commit("setInfo", { ...userInfo }); | ||
23 | + store.getters.addRouters.forEach((res) => { | ||
24 | + router.addRoute(res); | ||
25 | + }); | ||
26 | + router.addRoute({ | ||
27 | + path: "*", | ||
28 | + redirect: "/404", | ||
29 | + hidden: true, | ||
30 | + children: [], | ||
31 | + }); | ||
32 | + next({ path: to.fullPath }); | ||
75 | } else { | 33 | } else { |
76 | - if (to.path === "/login") { | ||
77 | - next() | 34 | + if (store.getters.code) { |
35 | + next(); | ||
78 | } else { | 36 | } else { |
79 | - next({ path: "/login" }) | 37 | + if (to.path === "/login") { |
38 | + next(); | ||
39 | + } else { | ||
40 | + next({ path: "/login" }); | ||
41 | + } | ||
80 | } | 42 | } |
81 | } | 43 | } |
82 | } | 44 | } |
83 | } | 45 | } |
84 | -}) | 46 | +}); |
85 | 47 | ||
86 | router.afterEach(() => { | 48 | router.afterEach(() => { |
87 | - NProgress.done() | ||
88 | -}) | 49 | + NProgress.done(); |
50 | +}); | ||
89 | router.onError((error) => { | 51 | router.onError((error) => { |
90 | const pattern = /Loading chunk (\d)+ failed/g; | 52 | const pattern = /Loading chunk (\d)+ failed/g; |
91 | const isChunkLoadFailed = error.message.match(pattern); | 53 | const isChunkLoadFailed = error.message.match(pattern); |
92 | const targetPath = router.history.pending.fullPath; | 54 | const targetPath = router.history.pending.fullPath; |
93 | - if (isChunkLoadFailed) { router.replace(targetPath); } | 55 | + if (isChunkLoadFailed) { |
56 | + router.replace(targetPath); | ||
57 | + } | ||
94 | }); | 58 | }); |
src/store/index.js
1 | -import Vue from "vue" | ||
2 | -import Vuex from "vuex" | ||
3 | -import Cookies from "js-cookie" | ||
4 | -import layoutStore from "./modules/layout/index" | ||
5 | -import { defaultRouter } from "@/router/index" | 1 | +import Vue from "vue"; |
2 | +import Vuex from "vuex"; | ||
3 | +import Cookies from "js-cookie"; | ||
4 | +import layoutStore from "./modules/layout/index"; | ||
5 | +import { defaultRouter } from "@/router/index"; | ||
6 | import { encryptLoginPassword } from "@/utils"; | 6 | import { encryptLoginPassword } from "@/utils"; |
7 | 7 | ||
8 | -import request from "@/api/index" | ||
9 | -import router from "@/router/index" | ||
10 | -import { addrouters } from "@/router/index" | ||
11 | -Vue.use(Vuex) | 8 | +import request from "@/api/index"; |
9 | +import router from "@/router/index"; | ||
10 | +import { addrouters } from "@/router/index"; | ||
11 | +Vue.use(Vuex); | ||
12 | 12 | ||
13 | const store = new Vuex.Store({ | 13 | const store = new Vuex.Store({ |
14 | state: { | 14 | state: { |
15 | token: "", | 15 | token: "", |
16 | csCode: localStorage.getItem("csCode") || "", | 16 | csCode: localStorage.getItem("csCode") || "", |
17 | - info: sessionStorage.getItem("info") ? JSON.parse(sessionStorage.getItem("info")) : "", // 每次刷新都要通过token请求个人信息来筛选动态路由 | ||
18 | - routers: [],//左侧菜单 | ||
19 | - addRouters: sessionStorage.getItem("addRouters") ? JSON.parse(sessionStorage.getItem("addRouters")) : [],//动态路由 | ||
20 | - tokenSources: new Map(),//正在请求接口(切换取消请求) | 17 | + info: sessionStorage.getItem("info") |
18 | + ? JSON.parse(sessionStorage.getItem("info")) | ||
19 | + : "", // 每次刷新都要通过token请求个人信息来筛选动态路由 | ||
20 | + routers: [], //左侧菜单 | ||
21 | + addRouters: | ||
22 | + sessionStorage.getItem("addRouters") && | ||
23 | + sessionStorage.getItem("addRouters") != "undefined" | ||
24 | + ? JSON.parse(sessionStorage.getItem("addRouters")) | ||
25 | + : [], //动态路由 | ||
26 | + tokenSources: new Map(), //正在请求接口(切换取消请求) | ||
21 | }, | 27 | }, |
22 | mutations: { | 28 | mutations: { |
23 | setToken(state, token) { | 29 | setToken(state, token) { |
24 | - state.token = token | 30 | + state.token = token; |
25 | }, | 31 | }, |
26 | setCode(state, code) { | 32 | setCode(state, code) { |
27 | state.csCode = code; | 33 | state.csCode = code; |
28 | - localStorage.setItem("csCode", code) | 34 | + localStorage.setItem("csCode", code); |
29 | }, | 35 | }, |
30 | setInfo(state, data) { | 36 | setInfo(state, data) { |
31 | - state.info = { | ||
32 | - role: data.role, | ||
33 | - permissions: data.permissions, | ||
34 | - name: data.name, | ||
35 | - authorityRouter: data.authorityRouter, | ||
36 | - avatar: data.avatar ? data.avatar : "", | ||
37 | - uid: data.uid | ||
38 | - } | ||
39 | - sessionStorage.setItem("info", JSON.stringify(state.info)) | 37 | + state.info = { ...data }; |
38 | + sessionStorage.setItem("info", JSON.stringify(state.info)); | ||
40 | }, | 39 | }, |
41 | setRouters: (state, routers) => { | 40 | setRouters: (state, routers) => { |
42 | - let aRouters = addrouters.filter(item => { | ||
43 | - let path = item.children[0]?.path.replace("/", "") | ||
44 | - return routers?.includes(path) | ||
45 | - }) | 41 | + let aRouters = addrouters.filter((item) => { |
42 | + let path = item.children[0]?.path.replace("/", ""); | ||
43 | + return routers?.includes(path); | ||
44 | + }); | ||
46 | 45 | ||
47 | - state.addRouters = aRouters // 保存动态路由用来addRouter | ||
48 | - state.routers = defaultRouter.concat(aRouters) // 所有有权限的路由表,用来生成菜单列表 | ||
49 | - sessionStorage.setItem("addRouters", JSON.stringify(routers)) | 46 | + state.addRouters = aRouters; // 保存动态路由用来addRouter |
47 | + state.routers = defaultRouter.concat(aRouters); // 所有有权限的路由表,用来生成菜单列表 | ||
48 | + sessionStorage.setItem("addRouters", JSON.stringify(routers)); | ||
50 | }, | 49 | }, |
51 | setTokenSources(state, data) { | 50 | setTokenSources(state, data) { |
52 | if (data instanceof Array) { | 51 | if (data instanceof Array) { |
53 | - state.tokenSources.set(data[0], data[1]) | 52 | + state.tokenSources.set(data[0], data[1]); |
54 | } else { | 53 | } else { |
55 | - state.tokenSources = new Map() | 54 | + state.tokenSources = new Map(); |
56 | } | 55 | } |
57 | }, | 56 | }, |
58 | delTokenSources(state, data) { | 57 | delTokenSources(state, data) { |
59 | - state.tokenSources.delete(data) | 58 | + state.tokenSources.delete(data); |
60 | }, | 59 | }, |
61 | }, | 60 | }, |
62 | actions: { | 61 | actions: { |
63 | Login({ state, commit }, params) { | 62 | Login({ state, commit }, params) { |
64 | - let loginForm = {} | 63 | + let loginForm = {}; |
65 | loginForm.username = params.username; | 64 | loginForm.username = params.username; |
66 | loginForm.password = encryptLoginPassword(params.password); | 65 | loginForm.password = encryptLoginPassword(params.password); |
67 | - request.login({ ...loginForm }).then(res => { | ||
68 | - let response = res | ||
69 | - if (response.status == 0) { | ||
70 | - const userInfo = { ...response.data } | ||
71 | - commit("setToken", Cookies.get("ZT_YIJIAO_TOKEN")); | ||
72 | - commit("setInfo", { ...userInfo }); | ||
73 | - | ||
74 | - commit("setRouters", [...userInfo.authorityRouter]) | ||
75 | - state.addRouters.forEach((res) => { | ||
76 | - router.addRoute(res); | ||
77 | - }); | ||
78 | - router.addRoute({ | ||
79 | - path: "*", | ||
80 | - redirect: "/404", | ||
81 | - hidden: true, | ||
82 | - children: [] | ||
83 | - }) | ||
84 | - console.log() | ||
85 | - if (params.url) { | ||
86 | - window.location.href = params.url; | ||
87 | - } else { | ||
88 | - router.push({ path: "/" }) | 66 | + request |
67 | + .login({ ...loginForm }) | ||
68 | + .then((res) => { | ||
69 | + let response = res; | ||
70 | + if (response.status == 0) { | ||
71 | + const userInfo = { ...response.data }; | ||
72 | + userInfo.showRoleName = response.data.permissions[0]?.roleName; | ||
73 | + commit("setToken", "isLogin"); | ||
74 | + commit("setInfo", { ...userInfo }); | ||
75 | + commit("setRouters", [...userInfo.permissions[0]?.authorityRouter]); | ||
76 | + state.addRouters.forEach((res) => { | ||
77 | + router.addRoute(res); | ||
78 | + }); | ||
79 | + router.addRoute({ | ||
80 | + path: "*", | ||
81 | + redirect: "/404", | ||
82 | + hidden: true, | ||
83 | + children: [], | ||
84 | + }); | ||
85 | + console.log(Cookies.get("ZT_YIJIAO_TOKEN")); | ||
86 | + if (params.url) { | ||
87 | + window.location.href = params.url; | ||
88 | + } else { | ||
89 | + router.push({ path: "/" }); | ||
90 | + } | ||
89 | } | 91 | } |
90 | - } | ||
91 | - }).catch(() => { | ||
92 | - }) | 92 | + }) |
93 | + .catch(() => {}); | ||
93 | }, | 94 | }, |
94 | - permissions({ state, commit }, that) { | ||
95 | - let userInfo = { | ||
96 | - permissions: [ | ||
97 | - { | ||
98 | - role: "ROLE_XUEXIAO", | ||
99 | - roleName: "学校管理员", | ||
100 | - }, | ||
101 | - { | ||
102 | - role: "ROLE_LAOSHI", | ||
103 | - roleName: "老师", | ||
104 | - }, | ||
105 | - ], | ||
106 | - name: "李老师", | ||
107 | - authorityRouter:[ | ||
108 | - "setUpAccount", | ||
109 | - "setUpSchool", | ||
110 | - "setUpTeacher", | ||
111 | - "setUpStudent", | ||
112 | - "card", | ||
113 | - "device", | ||
114 | - "analysis", | ||
115 | - "down", | ||
116 | - "downClient", | ||
117 | - "dataSync" | ||
118 | - ], | ||
119 | - } | ||
120 | - commit("setToken", "xxxx") | 95 | + permissions({ state, commit }, role) { |
96 | + commit("setToken", "isLogin"); | ||
97 | + let userInfo = state.info; | ||
98 | + let authorityRouterObj = userInfo.permissions.filter((item) => { | ||
99 | + return item.role == role; | ||
100 | + }); | ||
101 | + userInfo.showRoleName = authorityRouterObj[0]?.roleName | ||
121 | commit("setInfo", userInfo); | 102 | commit("setInfo", userInfo); |
122 | - commit("setRouters", [...userInfo.authorityRouter]) | 103 | + commit("setRouters", [...authorityRouterObj[0]?.authorityRouter]); |
123 | state.addRouters.forEach((res) => { | 104 | state.addRouters.forEach((res) => { |
124 | router.addRoute(res); | 105 | router.addRoute(res); |
125 | }); | 106 | }); |
@@ -127,27 +108,26 @@ const store = new Vuex.Store({ | @@ -127,27 +108,26 @@ const store = new Vuex.Store({ | ||
127 | path: "*", | 108 | path: "*", |
128 | redirect: "/404", | 109 | redirect: "/404", |
129 | hidden: true, | 110 | hidden: true, |
130 | - children: [] | ||
131 | - }) | ||
132 | - // } | ||
133 | - // }) | ||
134 | - } | 111 | + children: [], |
112 | + }); | ||
113 | + router.push({ path: "/" }); | ||
114 | + }, | ||
135 | }, | 115 | }, |
136 | getters: { | 116 | getters: { |
137 | - addRouters: state => state.addRouters, | ||
138 | - token: state => state.token, | ||
139 | - code: state => state.csCode, | ||
140 | - info: state => state.info, | ||
141 | - routers: state => state.routers, | ||
142 | - logoShow: state => state.layoutStore.logoShow, | ||
143 | - isCollapse: state => state.layoutStore.isCollapse, | ||
144 | - uniquerouter: state => state.layoutStore.uniquerouter, | ||
145 | - tabnavBox: state => state.layoutStore.tabnavBox, | ||
146 | - rightNav: state => state.layoutStore.rightNav | 117 | + addRouters: (state) => state.addRouters, |
118 | + token: (state) => state.token, | ||
119 | + code: (state) => state.csCode, | ||
120 | + info: (state) => state.info, | ||
121 | + routers: (state) => state.routers, | ||
122 | + logoShow: (state) => state.layoutStore.logoShow, | ||
123 | + isCollapse: (state) => state.layoutStore.isCollapse, | ||
124 | + uniquerouter: (state) => state.layoutStore.uniquerouter, | ||
125 | + tabnavBox: (state) => state.layoutStore.tabnavBox, | ||
126 | + rightNav: (state) => state.layoutStore.rightNav, | ||
147 | }, | 127 | }, |
148 | modules: { | 128 | modules: { |
149 | - layoutStore | ||
150 | - } | ||
151 | -}) | 129 | + layoutStore, |
130 | + }, | ||
131 | +}); | ||
152 | 132 | ||
153 | -export default store | 133 | +export default store; |
src/views/index/mainIndex.vue
@@ -102,7 +102,7 @@ export default { | @@ -102,7 +102,7 @@ export default { | ||
102 | }; | 102 | }; |
103 | }, | 103 | }, |
104 | watch:{ | 104 | watch:{ |
105 | - "$store.getters.routers":function(val){ | 105 | + "$store.getters.info.showRoleName":function(val){ |
106 | window.location.reload() | 106 | window.location.reload() |
107 | } | 107 | } |
108 | }, | 108 | }, |
src/views/layout/header/header.vue
@@ -14,7 +14,7 @@ | @@ -14,7 +14,7 @@ | ||
14 | <img :src="avatar" /> | 14 | <img :src="avatar" /> |
15 | <div class="txt"> | 15 | <div class="txt"> |
16 | <p>{{ `${this.$store.getters.info.name}` }}</p> | 16 | <p>{{ `${this.$store.getters.info.name}` }}</p> |
17 | - <p>{{ `${permissions[0].roleName}` }}</p> | 17 | + <p>{{ `${this.$store.getters.info.showRoleName}` }}</p> |
18 | </div> | 18 | </div> |
19 | <i class="el-icon-arrow-down"></i> | 19 | <i class="el-icon-arrow-down"></i> |
20 | </div> | 20 | </div> |
@@ -125,7 +125,7 @@ export default { | @@ -125,7 +125,7 @@ export default { | ||
125 | }, | 125 | }, |
126 | handleCommand(command) { | 126 | handleCommand(command) { |
127 | //刷新权限跳转首页 | 127 | //刷新权限跳转首页 |
128 | - this.$store.dispatch("permissions", this); | 128 | + this.$store.dispatch("permissions", command); |
129 | }, | 129 | }, |
130 | async logOut() { | 130 | async logOut() { |
131 | const { data,status } = await this.$request.logout(); | 131 | const { data,status } = await this.$request.logout(); |
src/views/login/index.vue
@@ -92,8 +92,10 @@ export default { | @@ -92,8 +92,10 @@ export default { | ||
92 | loginForm: { | 92 | loginForm: { |
93 | // username: "13610050254", | 93 | // username: "13610050254", |
94 | // password: "Pw050254#", | 94 | // password: "Pw050254#", |
95 | - username: "18946034886", | ||
96 | - password: "Pw034886#", | 95 | + // username: "18946034886", |
96 | + // password: "Pw034886#", | ||
97 | + username: "18332123505", | ||
98 | + password: "Pw123505#", | ||
97 | }, | 99 | }, |
98 | loginRules: { | 100 | loginRules: { |
99 | username: [ | 101 | username: [ |
src/views/setUp/account.vue
1 | <template> | 1 | <template> |
2 | - <div>账号管理</div> | 2 | + <div> |
3 | + <back-box> | ||
4 | + <template slot="title"> | ||
5 | + <span>账号管理</span> | ||
6 | + </template> | ||
7 | + </back-box> | ||
8 | + <div class="answer-header"> | ||
9 | + <div class="sel-box"> | ||
10 | + <el-select | ||
11 | + class="sel" | ||
12 | + v-model="query.id" | ||
13 | + placeholder="选择账号角色" | ||
14 | + @change="(page = 1),_QueryData(1)" | ||
15 | + > | ||
16 | + <el-option | ||
17 | + v-for="item in roleList" | ||
18 | + :key="item.id" | ||
19 | + :label="item.roleName" | ||
20 | + :value="item.id" | ||
21 | + > | ||
22 | + </el-option> | ||
23 | + </el-select> | ||
24 | + <el-select | ||
25 | + class="sel" | ||
26 | + v-model="query.available" | ||
27 | + placeholder="选择账号状态" | ||
28 | + @change="(page = 1),_QueryData(1)" | ||
29 | + > | ||
30 | + <el-option label="可用" :value="0"></el-option> | ||
31 | + <el-option label="不可用" :value="1"></el-option> | ||
32 | + </el-select> | ||
33 | + <el-input | ||
34 | + type="number" | ||
35 | + placeholder="请输入老师账号" | ||
36 | + v-model="query.loginName" | ||
37 | + class="input-with-select" | ||
38 | + @keyup.enter.native="(page = 1),_QueryData(2)" | ||
39 | + > | ||
40 | + <el-button | ||
41 | + slot="append" | ||
42 | + icon="el-icon-search" | ||
43 | + @click="(page = 1),_QueryData(2)" | ||
44 | + ></el-button> | ||
45 | + </el-input> | ||
46 | + <el-input | ||
47 | + placeholder="请输入老师姓名" | ||
48 | + v-model="query.realName" | ||
49 | + class="input-with-select" | ||
50 | + @keyup.enter.native="(page = 1),_QueryData(3)" | ||
51 | + > | ||
52 | + <el-button | ||
53 | + slot="append" | ||
54 | + icon="el-icon-search" | ||
55 | + @click="(page = 1),_QueryData(3)" | ||
56 | + ></el-button> | ||
57 | + </el-input> | ||
58 | + </div> | ||
59 | + </div> | ||
60 | + <div class="table-box"> | ||
61 | + <el-table | ||
62 | + :data="tableData" | ||
63 | + border | ||
64 | + style="width: 100%" | ||
65 | + v-loading="loading" | ||
66 | + > | ||
67 | + <el-table-column | ||
68 | + prop="loginName" | ||
69 | + label="账号" | ||
70 | + align="center" | ||
71 | + ></el-table-column> | ||
72 | + <el-table-column | ||
73 | + prop="realName" | ||
74 | + label="姓名" | ||
75 | + align="center" | ||
76 | + ></el-table-column> | ||
77 | + <el-table-column prop="roleList" label="角色" align="center"> | ||
78 | + <template slot-scope="scoped"> | ||
79 | + <span v-for="(item, index) in scoped.row.roleList" :key="item.id">{{ | ||
80 | + `${item.roleName}${ | ||
81 | + index != scoped.row.roleList.length - 1 ? "、" : "" | ||
82 | + }` | ||
83 | + }}</span> | ||
84 | + </template> | ||
85 | + </el-table-column> | ||
86 | + <el-table-column prop="available" label="状态" align="center" | ||
87 | + ><template slot-scope="scoped">{{ | ||
88 | + `${scoped.row.available == 0 ? "可用" : "不可用"}` | ||
89 | + }}</template></el-table-column | ||
90 | + > | ||
91 | + <el-table-column | ||
92 | + prop="createdTime" | ||
93 | + label="创建时间" | ||
94 | + align="center" | ||
95 | + ></el-table-column> | ||
96 | + <el-table-column label="操作" align="center" width="160"> | ||
97 | + <template slot-scope="scoped"> | ||
98 | + <el-tooltip content="修改账号" placement="left"> | ||
99 | + <el-button | ||
100 | + class="set-count" | ||
101 | + type="primary" | ||
102 | + circle | ||
103 | + icon="el-icon-edit-outline" | ||
104 | + size="mini" | ||
105 | + @click="setCount(scoped.row)" | ||
106 | + ></el-button> | ||
107 | + </el-tooltip> | ||
108 | + <el-dropdown | ||
109 | + trigger="hover" | ||
110 | + @command="handleDropdownClick($event, scoped.row)" | ||
111 | + > | ||
112 | + <el-button | ||
113 | + type="info" | ||
114 | + size="mini" | ||
115 | + circle | ||
116 | + icon="el-icon-more" | ||
117 | + ></el-button> | ||
118 | + <el-dropdown-menu slot="dropdown"> | ||
119 | + <el-dropdown-item :command="0">重置密码</el-dropdown-item> | ||
120 | + <el-dropdown-item :command="1">禁用</el-dropdown-item> | ||
121 | + <el-dropdown-item :command="2">删除</el-dropdown-item> | ||
122 | + </el-dropdown-menu> | ||
123 | + </el-dropdown> | ||
124 | + </template> | ||
125 | + </el-table-column> | ||
126 | + </el-table> | ||
127 | + <div class="pagination-box"> | ||
128 | + <el-pagination | ||
129 | + small="" | ||
130 | + layout="total,prev, pager, next" | ||
131 | + :hide-on-single-page="true" | ||
132 | + :total="total" | ||
133 | + @current-change="changePage" | ||
134 | + :current-page="page" | ||
135 | + :page-size="size" | ||
136 | + > | ||
137 | + </el-pagination> | ||
138 | + </div> | ||
139 | + <el-empty | ||
140 | + v-if="!loading && tableData.length == 0" | ||
141 | + content="没有更多数据" | ||
142 | + :image-size="100" | ||
143 | + ></el-empty> | ||
144 | + </div> | ||
145 | + <el-dialog title="修改年级信息" :visible.sync="diaCount" width="400"> | ||
146 | + <el-form | ||
147 | + class="form-box" | ||
148 | + :model="formCount" | ||
149 | + :rules="ruleCount" | ||
150 | + ref="formCount" | ||
151 | + label-width="160px" | ||
152 | + > | ||
153 | + <el-form-item label="手机号码:" prop="loginName"> | ||
154 | + <el-col :span="12"> | ||
155 | + <el-input | ||
156 | + placeholder="请输入联系电话" | ||
157 | + v-model.trim="formCount.loginName" | ||
158 | + maxlength="11" | ||
159 | + > | ||
160 | + </el-input> | ||
161 | + </el-col> | ||
162 | + </el-form-item> | ||
163 | + <el-form-item label="姓名:" prop="realName"> | ||
164 | + <el-col :span="12"> | ||
165 | + <el-input | ||
166 | + placeholder="请输入教师姓名" | ||
167 | + v-model.trim="formCount.realName" | ||
168 | + maxlength="11" | ||
169 | + > | ||
170 | + </el-input> | ||
171 | + </el-col> | ||
172 | + </el-form-item> | ||
173 | + </el-form> | ||
174 | + <div class="dialog-footer" slot="footer"> | ||
175 | + <el-button @click="saveCount">确 定</el-button> | ||
176 | + <el-button @click="diaCount = false">取 消</el-button> | ||
177 | + </div> | ||
178 | + </el-dialog> | ||
179 | + </div> | ||
3 | </template> | 180 | </template> |
4 | 181 | ||
5 | <script> | 182 | <script> |
6 | export default { | 183 | export default { |
184 | + data() { | ||
185 | + return { | ||
186 | + loading: false, | ||
187 | + diaCount: false, | ||
188 | + formCount: { | ||
189 | + userId: "", | ||
190 | + loginName: "", | ||
191 | + realName: "", | ||
192 | + }, | ||
193 | + ruleCount: { | ||
194 | + loginName: [ | ||
195 | + { required: true, message: "请输入联系电话", trigger: "blur" }, | ||
196 | + ], | ||
197 | + realName: [ | ||
198 | + { required: true, message: "请输入教师姓名", trigger: "blur" }, | ||
199 | + ], | ||
200 | + }, | ||
201 | + roleList: [], | ||
202 | + query: { | ||
203 | + roleId: "", | ||
204 | + available: "", | ||
205 | + loginName: "", | ||
206 | + realName: "", | ||
207 | + }, | ||
208 | + tableData: [], | ||
209 | + total: 0, | ||
210 | + page: 1, | ||
211 | + size: 20, | ||
212 | + }; | ||
213 | + }, | ||
214 | + created() { | ||
215 | + this._QueryData(4); | ||
216 | + this._RoleList(); | ||
217 | + }, | ||
218 | + methods: { | ||
219 | + setCount(obj) { | ||
220 | + this.formCount.userId = obj.userId; | ||
221 | + this.formCount.loginName = obj.loginName; | ||
222 | + this.formCount.realName = obj.realName; | ||
223 | + this.diaCount = true; | ||
224 | + }, | ||
225 | + handleDropdownClick(value, item) { | ||
226 | + //更多 | ||
227 | + this.updateUser(item, value); | ||
228 | + }, | ||
229 | + changePage(page) { | ||
230 | + this.page = page; | ||
231 | + this._QueryData(4); | ||
232 | + }, | ||
7 | 233 | ||
8 | -} | 234 | + saveCount() { |
235 | + this.$refs.formCount.validate(async (valid) => { | ||
236 | + if (valid) { | ||
237 | + const { data, status, info } = await this.$request.updateUser({ | ||
238 | + type: 3, | ||
239 | + ...this.formCount, | ||
240 | + }); | ||
241 | + if (status === 0) { | ||
242 | + this.$message.success(info); | ||
243 | + this._QueryData(4); | ||
244 | + } else { | ||
245 | + this.$message.error(info); | ||
246 | + } | ||
247 | + } else { | ||
248 | + console.log("输入有误请检查!"); | ||
249 | + return false; | ||
250 | + } | ||
251 | + }); | ||
252 | + }, | ||
253 | + async updateUser(obj, type) { | ||
254 | + let query = { | ||
255 | + userId: obj.userId, | ||
256 | + type: type, | ||
257 | + }; | ||
258 | + if (type == 1) { | ||
259 | + query.available = obj.available == 0 ? 1 : 0; | ||
260 | + } | ||
261 | + const { data, status, info } = await this.$request.updateUser({ | ||
262 | + ...query, | ||
263 | + }); | ||
264 | + if (status === 0) { | ||
265 | + this.$message.success(info); | ||
266 | + this._QueryData(4); | ||
267 | + } else { | ||
268 | + this.$message.error(info); | ||
269 | + } | ||
270 | + }, | ||
271 | + async _RoleList() { | ||
272 | + const { data, status, info } = await this.$request.roleList(); | ||
273 | + if (status === 0) { | ||
274 | + this.roleList = data.list || []; | ||
275 | + } else { | ||
276 | + this.$message.error(info); | ||
277 | + } | ||
278 | + }, | ||
279 | + async _QueryData(type) { | ||
280 | + let query = {}; | ||
281 | + if (type == 1) { | ||
282 | + query.roleId = this.query.roleId; | ||
283 | + query.available = this.query.available; | ||
284 | + this.query.loginName = ""; | ||
285 | + this.query.realName = ""; | ||
286 | + } else if (type == 2) { | ||
287 | + this.query.roleId = ""; | ||
288 | + this.query.available = ""; | ||
289 | + query.loginName = this.query.loginName; | ||
290 | + this.query.realName = ""; | ||
291 | + } else if (type == 3) { | ||
292 | + this.query.roleId = ""; | ||
293 | + this.query.available = ""; | ||
294 | + this.query.loginName = ""; | ||
295 | + query.realName = this.query.realName; | ||
296 | + } else { | ||
297 | + query = { ...this.query }; | ||
298 | + } | ||
299 | + this.loading = true; | ||
300 | + this.tableData = []; | ||
301 | + const { data, status, info } = await this.$request.userPage({ | ||
302 | + ...query, | ||
303 | + page: this.page, | ||
304 | + size: this.size, | ||
305 | + }); | ||
306 | + this.loading = false; | ||
307 | + if (status === 0) { | ||
308 | + this.tableData = data.list || []; | ||
309 | + this.total = data.count; | ||
310 | + } else { | ||
311 | + this.$message.error(info); | ||
312 | + } | ||
313 | + }, | ||
314 | + }, | ||
315 | +}; | ||
9 | </script> | 316 | </script> |
10 | 317 | ||
11 | -<style> | ||
12 | - | 318 | +<style lang="scss" scoped> |
319 | +.set-count { | ||
320 | + margin-right: 12px; | ||
321 | +} | ||
322 | +.table-box { | ||
323 | + padding: 0 20px; | ||
324 | +} | ||
13 | </style> | 325 | </style> |
14 | \ No newline at end of file | 326 | \ No newline at end of file |
src/views/setUp/index.vue deleted