diff --git a/README-zh.md b/README-zh.md
index 5b6f7bd..1beec9b 100644
--- a/README-zh.md
+++ b/README-zh.md
@@ -8,6 +8,15 @@
目前版本为 `v4.0+` 基于 `vue-cli` 进行构建,若你想使用旧版本,可以切换分支到[tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0),它不依赖 `vue-cli`。
+
+ SPONSORED BY
+
+
+
+
+
+
+
## Extra
如果你想要根据用户角色来动态生成侧边栏和 router,你可以使用该分支[permission-control](https://github.com/PanJiaChen/vue-admin-template/tree/permission-control)
diff --git a/README.md b/README.md
index a2f3c71..fa54b78 100644
--- a/README.md
+++ b/README.md
@@ -9,6 +9,15 @@ English | [简体中文](./README-zh.md)
**The current version is `v4.0+` build on `vue-cli`. If you want to use the old version , you can switch branch to [tag/3.11.0](https://github.com/PanJiaChen/vue-admin-template/tree/tag/3.11.0), it does not rely on `vue-cli`**
+
+ SPONSORED BY
+
+
+
+
+
+
+
## Build Setup
```bash
diff --git a/src/api/system/sysRole.js b/src/api/system/sysRole.js
new file mode 100644
index 0000000..194068c
--- /dev/null
+++ b/src/api/system/sysRole.js
@@ -0,0 +1,116 @@
+/*
+角色管理相关的API请求函数
+*/
+import request from '@/utils/request'
+
+const api_name = '/admin/system/sysRole'
+
+export default {
+
+ /**
+ * 获取角色分页列表(带搜索)
+ * @param {*} page
+ * @param {*} limit
+ * @param {*} searchObj
+ * @returns
+ */
+ getPageList(page, limit, searchObj) {
+ return request({
+ url: `${api_name}/${page}/${limit}`,
+ method: 'get',
+ // 如果是普通对象参数写法,params:对象参数名
+ // 如果是使用json格式传递,data:对象参数名
+ params: searchObj
+ })
+ },
+
+ /**
+ * 角色删除
+ * @param {*} id
+ * @returns
+ */
+ removeById(id) {
+ return request({
+ url: `${api_name}/remove/${id}`,
+ method: 'delete'
+ })
+ },
+
+ /**
+ * 角色添加
+ * @param {*} role
+ * @returns
+ */
+ save(role) {
+ return request({
+ url: `${api_name}/save`,
+ method: 'post',
+ data: role
+ })
+ },
+
+ /**
+ * 回显要修改的id信息
+ *
+ * @param id
+ * @returns {*}
+ */
+ getById(id) {
+ return request({
+ url: `${api_name}/get/${id}`,
+ method: 'get'
+ })
+ },
+
+ /** 修改
+ *
+ * @param role
+ * @returns {*}
+ */
+ updateById(role) {
+ return request({
+ url: `${api_name}/update`,
+ method: 'put',
+ data: role
+ })
+ },
+
+ /**
+ * 批量删除
+ *
+ * @param idList
+ * @returns {*}
+ */
+ batchRemove(idList) {
+ return request({
+ url: `${api_name}/batchRemove`,
+ method: `delete`,
+ data: idList
+ })
+ },
+ /**
+ * 根据用户获取角色数据
+ *
+ * @param adminId
+ * @returns {*}
+ */
+ getRoles(adminId) {
+ return request({
+ url: `${api_name}/toAssign/${adminId}`,
+ method: 'get'
+ })
+ },
+ /**
+ * 为用户分配角色
+ *
+ * @param assginRoleVo
+ * @returns {*}
+ */
+ assignRoles(assginRoleVo) {
+ return request({
+ url: `${api_name}/doAssign`,
+ method: 'post',
+ data: assginRoleVo
+ })
+ }
+}
diff --git a/src/api/system/sysUser.js b/src/api/system/sysUser.js
new file mode 100644
index 0000000..6f8e9cf
--- /dev/null
+++ b/src/api/system/sysUser.js
@@ -0,0 +1,49 @@
+import request from '@/utils/request'
+
+const api_name = '/admin/system/sysUser'
+
+export default {
+
+ getPageList(page, limit, searchObj) {
+ return request({
+ url: `${api_name}/${page}/${limit}`,
+ method: 'get',
+ params: searchObj // url查询字符串或表单键值对
+ })
+ },
+ getById(id) {
+ return request({
+ url: `${api_name}/get/${id}`,
+ method: 'get'
+ })
+ },
+
+ save(role) {
+ return request({
+ url: `${api_name}/save`,
+ method: 'post',
+ data: role
+ })
+ },
+
+ updateById(role) {
+ return request({
+ url: `${api_name}/update`,
+ method: 'put',
+ data: role
+ })
+ },
+ removeById(id) {
+ return request({
+ url: `${api_name}/remove/${id}`,
+ method: 'delete'
+ })
+ },
+
+ updateStatus(id, status) {
+ return request({
+ url: `${api_name}/updateStatus/${id}/${status}`,
+ method: 'get'
+ })
+ }
+}
diff --git a/src/api/user.js b/src/api/user.js
index 8ff4389..cc79a94 100644
--- a/src/api/user.js
+++ b/src/api/user.js
@@ -2,7 +2,7 @@ import request from '@/utils/request'
export function login(data) {
return request({
- url: '/vue-admin-template/user/login',
+ url: '/admin/system/index/login',
method: 'post',
data
})
@@ -10,15 +10,15 @@ export function login(data) {
export function getInfo(token) {
return request({
- url: '/vue-admin-template/user/info',
+ url: '/admin/system/index/info',
method: 'get',
- params: { token }
+ params: {token}
})
}
export function logout() {
return request({
- url: '/vue-admin-template/user/logout',
+ url: '/admin/system/index/logout',
method: 'post'
})
}
diff --git a/src/router/index.js b/src/router/index.js
index 13459e9..773df0f 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -1,11 +1,10 @@
import Vue from 'vue'
import Router from 'vue-router'
-
-Vue.use(Router)
-
/* Layout */
import Layout from '@/layout'
+Vue.use(Router)
+
/**
* Note: sub-menu only appear when route children.length >= 1
* Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html
@@ -54,6 +53,34 @@ export const constantRoutes = [
meta: { title: 'Dashboard', icon: 'dashboard' }
}]
},
+ {
+ path: '/system',
+ component: Layout,
+ meta: {
+ title: '系统管理',
+ icon: 'el-icon-s-tools'
+ },
+ alwaysShow: true,
+ children: [
+ {
+ name: 'sysUser',
+ path: 'sysUser',
+ component: () => import('@/views/system/sysUser/list'),
+ meta: {
+ title: '用户管理',
+ icon: 'el-icon-s-custom'
+ }
+ },
+ {
+ path: 'sysRole',
+ component: () => import('@/views/system/sysRole/list'),
+ meta: {
+ title: '角色管理',
+ icon: 'el-icon-s-help'
+ }
+ }
+ ]
+ },
{
path: '/example',
diff --git a/src/utils/request.js b/src/utils/request.js
index 2fb95ac..0976d23 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -46,7 +46,7 @@ service.interceptors.response.use(
const res = response.data
// if the custom code is not 20000, it is judged as an error.
- if (res.code !== 20000) {
+ if (res.code !== 200) {
Message({
message: res.message || 'Error',
type: 'error',
diff --git a/src/views/system/sysRole/list.vue b/src/views/system/sysRole/list.vue
new file mode 100644
index 0000000..fb841de
--- /dev/null
+++ b/src/views/system/sysRole/list.vue
@@ -0,0 +1,230 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+ 添 加
+ 批量删除
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ (page - 1) * limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/system/sysUser/list.vue b/src/views/system/sysUser/list.vue
new file mode 100644
index 0000000..45da248
--- /dev/null
+++ b/src/views/system/sysUser/list.vue
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+ 重置
+
+
+
+
+
+
+ 添 加
+
+
+
+
+
+
+
+ {{ (page - 1) * limit + scope.$index + 1 }}
+
+
+
+
+
+
+
+
+
+
+ {{ item.roleName }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 全选
+
+
+
+ {{ role.roleName }}
+
+
+
+
+ 保存
+ 取消
+
+
+
+
+
+
diff --git a/vue.config.js b/vue.config.js
index 4856ed0..e36b2c9 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -36,7 +36,16 @@ module.exports = {
warnings: false,
errors: true
},
- before: require('./mock/mock-server.js')
+ // before: require('./mock/mock-server.js')
+ proxy: {
+ '/dev-api': { // 匹配所有以 '/dev-api'开头的请求路径
+ target: 'http://localhost:8800',
+ changeOrigin: true, // 支持跨域
+ pathRewrite: { // 重写路径: 去掉路径中开头的'/dev-api'
+ '^/dev-api': ''
+ }
+ }
+ }
},
configureWebpack: {
// provide the app's title in webpack's name field, so that
@@ -87,34 +96,34 @@ module.exports = {
.plugin('ScriptExtHtmlWebpackPlugin')
.after('html')
.use('script-ext-html-webpack-plugin', [{
- // `runtime` must same as runtimeChunk name. default is `runtime`
+ // `runtime` must same as runtimeChunk name. default is `runtime`
inline: /runtime\..*\.js$/
}])
.end()
config
.optimization.splitChunks({
- chunks: 'all',
- cacheGroups: {
- libs: {
- name: 'chunk-libs',
- test: /[\\/]node_modules[\\/]/,
- priority: 10,
- chunks: 'initial' // only package third parties that are initially dependent
- },
- elementUI: {
- name: 'chunk-elementUI', // split elementUI into a single package
- priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
- test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
- },
- commons: {
- name: 'chunk-commons',
- test: resolve('src/components'), // can customize your rules
- minChunks: 3, // minimum common number
- priority: 5,
- reuseExistingChunk: true
- }
+ chunks: 'all',
+ cacheGroups: {
+ libs: {
+ name: 'chunk-libs',
+ test: /[\\/]node_modules[\\/]/,
+ priority: 10,
+ chunks: 'initial' // only package third parties that are initially dependent
+ },
+ elementUI: {
+ name: 'chunk-elementUI', // split elementUI into a single package
+ priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
+ test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
+ },
+ commons: {
+ name: 'chunk-commons',
+ test: resolve('src/components'), // can customize your rules
+ minChunks: 3, // minimum common number
+ priority: 5,
+ reuseExistingChunk: true
}
- })
+ }
+ })
// https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
config.optimization.runtimeChunk('single')
}