作者 朱兆平

用户登录适配权限目录问题,登陆后已适配,一刷新 vue router就初始化为以前的了 未解决

... ... @@ -23,11 +23,19 @@ module.exports = {
},
dev: {
env: require('./dev.env'),
port: 8081,
port: 8082,
autoOpenBrowser: true,
assetsSubDirectory: 'static',
assetsPublicPath: '/',
proxyTable: {},
proxyTable: {
'/api':{
target: 'http://127.0.0.1:7003',//设置你调用的接口域名和端口号 别忘了加http
changeOrigin: true,
pathRewrite: {
'^/api': '/'//这里理解成用‘/api’代替target里面的地址,后面组件中我们掉接口时直接用api代替 比如我要调用'http://40.00.100.100:3002/user/add',直接写‘/api/user/add’即可
}
}
},
// CSS Sourcemaps off by default because relative paths are "buggy"
// with this option, according to the CSS-Loader README
// (https://github.com/webpack/css-loader#sourcemaps)
... ...
... ... @@ -16,6 +16,7 @@
"eslint": "^5.14.1",
"font-awesome": "^4.7.0",
"install": "^0.12.2",
"moment": "^2.24.0",
"npm": "^6.8.0",
"nprogress": "^0.2.0",
"vue": "^2.2.2",
... ...
import axios from 'axios';
import axios from 'axios'
import Vue from 'vue'
let base = 'http://127.0.0.1:7003';
axios.defaults.baseURL = 'http://127.0.0.1:7003';
// let base = 'http://127.0.0.1:7003';
axios.defaults.baseURL = 'http://localhost:8082/api';
Vue.prototype.$http = axios;
export const requestLogin = params => {
return axios({
method: 'POST',
url: '/login',
data: params,
withCredentials: true,
transformRequest: [function (data) {
// Do whatever you want to transform the data
let ret = ''
... ... @@ -23,15 +26,45 @@ export const requestLogin = params => {
})
// return axios.post(`${base}/login`, params).then(res => res.data);
};
export const getuserMenus = params => { return axios.get(`/perm/userMenus`, { params: params }); };
export const getUserList = params => { return axios.get(`${base}/user/list`, { params: params }); };
export const getUserList = params => { return axios.get(`/user/list`, { params: params }); };
export const getUserListPage = params => { return axios.get(`${base}/user/list`, { params: params }); };
export const getUserListPage = params => { return axios({
method: 'GET',
url: `/user/list`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
// withCredentials: true
}) };
export const removeUser = params => { return axios.get(`${base}/user/remove`, { params: params }); };
export const removeUser = params => { return axios({
method: 'DELETE',
url: `/user/del`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
export const batchRemoveUser = params => { return axios.get(`${base}/user/batchremove`, { params: params }); };
export const editUser = params => { return axios.get(`${base}/user/edit`, { params: params }); };
export const editUser = params => { return axios({
method: 'PUT',
url: `/user/edit`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
export const addUser = params => { return axios.get(`${base}/user/add`, { params: params }); };
\ No newline at end of file
export const addUser = params => { return axios({
method: 'POST',
url: `/user/add`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
\ No newline at end of file
... ...
import axios from 'axios'
axios.defaults.baseURL = 'http://localhost:8082/api';
let base = axios.defaults.baseURL+'/perm';
export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
export const remove = params => { return axios({
method: 'DELETE',
url: `${base}/del`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
//批量删除
export const batchRemove = params => { return axios.get(`${base}/user/batchremove`, { params: params }); };
export const edit = params => { return axios({
method: 'PUT',
url: `${base}/edit`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
export const add = params => { return axios({
method: 'POST',
url: `${base}/add`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
\ No newline at end of file
... ...
import axios from 'axios'
axios.defaults.baseURL = 'http://localhost:8082/api';
let base = axios.defaults.baseURL+'/role';
export const getList = params => { return axios.get(`${base}/list`, { params: params }); };
export const remove = params => { return axios({
method: 'DELETE',
url: `${base}/del`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
//批量删除
export const batchRemove = params => { return axios.get(`${base}/user/batchremove`, { params: params }); };
export const edit = params => { return axios({
method: 'PUT',
url: `${base}/edit`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
export const add = params => { return axios({
method: 'POST',
url: `${base}/add`,
data: params,
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})};
\ No newline at end of file
... ...
... ... @@ -9,8 +9,17 @@ import store from './vuex/store'
import Vuex from 'vuex'
//import NProgress from 'nprogress'
//import 'nprogress/nprogress.css'
import routes from './routes'
import rout from './routes'
import Mock from './mock'
//定义一个全局过滤器实现日期格式化
Vue.filter('datefmt',function(input,fmtstring){
return moment(input).format(fmtstring)
})
Mock.bootstrap();
import 'font-awesome/css/font-awesome.min.css'
... ... @@ -21,16 +30,21 @@ Vue.use(Vuex)
//NProgress.configure({ showSpinner: false });
const router = new VueRouter({
routes
routes:rout.routes
})
//判断本地存储的用户栏目列表是否存在,如果存在则加载路由
if(sessionStorage.getItem('menu')){
rout.setUserMenus(JSON.parse(sessionStorage.getItem('menu')));
router.options.routes = rout.routes
}
router.beforeEach((to, from, next) => {
//NProgress.start();
if (to.path == '/login') {
sessionStorage.removeItem('user');
sessionStorage.removeItem('menu');
}
let user = JSON.parse(sessionStorage.getItem('user'));
if (!user && to.path != '/login') {
if (!user && to.path != '/login' && !sessionStorage.getItem('menu')) {
next({ path: '/login' })
} else {
next()
... ...
... ... @@ -2,9 +2,12 @@ import Login from './views/Login.vue'
import NotFound from './views/404.vue'
import Home from './views/Home.vue'
import Main from './views/Main.vue'
import Table from './views/nav1/Table.vue'
import Form from './views/nav1/Form.vue'
import user from './views/nav1/user.vue'
// import Table from './views/nav1/Table.vue'
import Role from './views/nav1/role.vue'
import Perm from './views/nav1/perm.vue'
// import Form from './views/nav1/Form.vue'
import User from './views/nav1/user.vue'
import Page4 from './views/nav2/Page4.vue'
import Page5 from './views/nav2/Page5.vue'
import Page6 from './views/nav3/Page6.vue'
... ... @@ -14,26 +17,36 @@ let routes = [
{
path: '/login',
component: Login,
name: '',
name: '登录',
hidden: true
},
{
path: '/404',
component: NotFound,
name: '',
name: '错误',
hidden: true
},
// { path: '/main', component: Main },
{
path: '/',
component: Home,
name: '导航一',
iconCls: 'el-icon-message',//图标样式class
name: '',
leaf: true,
iconCls: 'el-icon-menu',
children: [
{ path: '/main', component: Main, name: '主页', hidden: false },
{ path: '/table', component: Table, name: '用户管理' },
{ path: '/form', component: Form, name: 'Form' },
{ path: '/user', component: user, name: '列表' },
{ path: '/main', component: Main, name: '首页', hidden: false },
]
},
// { path: '/test', component: Main },
{
path: '/',
component: Home,
name: '用户管理',
iconCls: 'el-icon-setting',//图标样式class
children: [
{ path: '/user', component: User, name: '用户管理' },
{ path: '/role', component: Role, name: '角色管理' },
{ path: '/perm', component: Perm, name: '权限管理' },
]
},
{
... ... @@ -72,4 +85,10 @@ let routes = [
}
];
export default routes;
\ No newline at end of file
let setUserMenus = function (list) {
routes = list;
let s= 1;
}
export default {
routes,setUserMenus
};
\ No newline at end of file
... ...
... ... @@ -23,8 +23,7 @@
<el-col :span="24" class="main">
<aside :class="collapsed?'menu-collapsed':'menu-expanded'">
<!--导航菜单-->
<el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect"
unique-opened router v-show="!collapsed">
<el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleopen" @close="handleclose" @select="handleselect" unique-opened router v-show="!collapsed" style="min-width: 230px">
<template v-for="(item,index) in $router.options.routes" v-if="!item.hidden">
<el-submenu :index="index+''" v-if="!item.leaf">
<template slot="title"><i :class="item.iconCls"></i>{{item.name}}</template>
... ... @@ -75,7 +74,7 @@
export default {
data() {
return {
sysName:'VUEADMIN',
sysName:'流浪地球管理系统',
collapsed:false,
sysUserName: '',
sysUserAvatar: '',
... ... @@ -239,6 +238,9 @@
flex:0 0 230px;
width: 230px;
}
.menu-expanded ul{
width: 230px;
}
.content-container {
// background: #f1f2f7;
flex:1;
... ...
... ... @@ -32,7 +32,8 @@
</template>
<script>
import { requestLogin } from '../api/api';
import { requestLogin,getuserMenus } from '../api/api';
import routes from '../routes'
//import NProgress from 'nprogress'
export default {
data() {
... ... @@ -54,7 +55,8 @@
//{ validator: validaePass2 }
]
},
checked: true
checked: true,
userMenus: []
};
},
methods: {
... ... @@ -64,6 +66,33 @@
handleReset2() {
this.$refs.ruleForm2.resetFields();
},
/**
* 处理登陆后的账号对应的菜单
* @param menuList
*/
handleMenuList: function (router,menu) {
var _self = this;
var routerName = "";
router.forEach(function (v_router) {
routerName = v_router.name;
menu.forEach(function (v_menu) {
//查找返回的目录列表是否包含路由名称,有就返回匹配到的元素,没有就移除
let result = menu.find(item => {
return item.name === routerName;
});
//匹配到继续判断是否子元素,有子元素继续递归
if (result) {
if(v_router.children) {
_self.handleMenuList(v_router.children,v_menu.children);
}
//没有则可以移除
}else {
router.splice(router.findIndex(itm => itm.name === routerName ),1);
}
})
})
},
handleSubmit2: function (ev) {
var _this = this;
this.$refs.ruleForm2.validate((valid) => {
... ... @@ -78,7 +107,6 @@
let status = res.status;
let user = res.data.principal;
let loginSuccess = res.data.authenticated;
if (status !== 200) {
let msg = "登录错误";
this.$message({
... ... @@ -87,7 +115,15 @@
});
} else if (loginSuccess) {
sessionStorage.setItem('user', JSON.stringify(user));
this.$router.push({path: '/table'});
getuserMenus('').then(res => {
if(res && res.status===200){
_this.userMenus = res.data.list;
this.handleMenuList(routes.routes,_this.userMenus);
//本地存储用户目录 ,防刷新目录丢失用
sessionStorage.setItem('menu', JSON.stringify(routes.routes));
}
});
this.$router.push({path: '/main'});
}
}).catch(error => {
let msg = error.message;
... ... @@ -96,10 +132,8 @@
type: "error"
});
this.logining = false;
console.log(_this);
});
} else {
console.log('error submit!!');
return false;
}
});
... ...
... ... @@ -4,7 +4,7 @@
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form :inline="true" :model="filters">
<el-form-item>
<el-input v-model="filters.ext1" placeholder="姓名"></el-input>
<el-input v-model="filters.realname" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item>
<el-input v-model="filters.username" placeholder="账号"></el-input>
... ... @@ -28,7 +28,7 @@
</el-table-column>
<el-table-column prop="username" label="账号" width="120" sortable>
</el-table-column>
<el-table-column prop="ext1" label="姓名" width="120" sortable>
<el-table-column prop="realname" label="姓名" width="120" sortable>
</el-table-column>
<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
</el-table-column>
... ... @@ -40,6 +40,10 @@
</el-table-column>
<el-table-column prop="address" label="地址" min-width="180" sortable>
</el-table-column>
<el-table-column prop="email" label="Email" min-width="180" sortable>
</el-table-column>
<el-table-column prop="state" label="启用" width="100" :formatter="formatState" sortable>
</el-table-column>
<el-table-column label="操作" width="150">
<template slot-scope="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
... ... @@ -61,12 +65,21 @@
<el-form-item label="ID">
<span>{{editForm.userId}}</span>
</el-form-item>
<el-form-item label="姓名" prop="username">
<el-input v-model="editForm.username" auto-complete="off"></el-input>
<el-form-item label="账号">
<span>{{editForm.username}}</span>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="editForm.password" auto-complete="off" type="password"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="realname">
<el-input v-model="editForm.realname" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobilephone">
<el-input v-model="editForm.mobilephone" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="Email" prop="email">
<el-input v-model="editForm.email" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="editForm.sex">
<el-radio class="radio" label="1" >男</el-radio>
... ... @@ -76,12 +89,18 @@
<el-form-item label="年龄">
<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="生日">
<el-date-picker type="date" placeholder="选择日期" v-model="editForm.creattime"></el-date-picker>
</el-form-item>
<!--<el-form-item label="创建日期">-->
<!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!--</el-form-item>-->
<el-form-item label="地址">
<el-input type="textarea" v-model="editForm.address"></el-input>
</el-form-item>
<el-form-item label="启用">
<el-radio-group v-model="editForm.state">
<el-radio class="radio" label="true" >是</el-radio>
<el-radio class="radio" label="false" >否</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="editFormVisible = false">取消</el-button>
... ... @@ -92,23 +111,32 @@
<!--新增界面-->
<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
<el-form-item label="姓名" prop="name">
<el-input v-model="addForm.name" auto-complete="off"></el-input>
<el-form-item label="账号" prop="username">
<el-input v-model="addForm.username"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="addForm.password" type="password"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="realname">
<el-input v-model="addForm.realname"></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobilephone">
<el-input v-model="addForm.mobilephone"></el-input>
</el-form-item>
<el-form-item label="Email" prop="email">
<el-input v-model="addForm.email"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="addForm.sex">
<el-radio class="radio" :label="1">男</el-radio>
<el-radio class="radio" :label="0">女</el-radio>
<el-radio class="radio" label="1">男</el-radio>
<el-radio class="radio" label="0">女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="年龄">
<el-form-item label="年龄" prop="age">
<el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="生日">
<el-date-picker type="date" placeholder="选择日期" v-model="addForm.birth"></el-date-picker>
</el-form-item>
<el-form-item label="地址">
<el-input type="textarea" v-model="addForm.addr"></el-input>
<el-input type="textarea" v-model="addForm.address"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
... ... @@ -122,17 +150,19 @@
<script>
import util from '../../common/js/util'
//import NProgress from 'nprogress'
import { getUserListPage, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
import { getUserList, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
import moment from 'moment'
export default {
data() {
return {
filters: {
name: ''
username: '',
realname: ''
},
users: [],
total: 0,
pageNum: 1,
pageSize: 5,
listLoading: false,
sels: [],//列表选中列
//编辑界面是否显示
... ... @@ -149,25 +179,31 @@
username: '',
password: '',
sex: 1,
age: 0,
creattime: '',
address: ''
address: '',
realname: '',
email: '',
mobilephone: '',
state: 'true'
},
addFormVisible: false,//新增界面是否显示
addLoading: false,
addFormRules: {
name: [
username: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
]
},
//新增界面数据
addForm: {
name: '',
sex: -1,
age: 0,
birth: '',
addr: ''
username: '',
password: '',
sex: 1,
address: '',
realname: '',
email: '',
mobilephone: '',
age: 1
}
}
... ... @@ -177,6 +213,9 @@
formatSex: function (row, column) {
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
},
formatState: function (row, column) {
return row.state == true ? '是' : row.state == false ? '否' : '未知';
},
handleCurrentChange(val) {
this.pageNum = val;
this.getUsers();
... ... @@ -185,16 +224,23 @@
getUsers() {
let para = {
pageNum: this.pageNum,
name: this.filters.name
pageSize: this.pageSize,
username: this.filters.username
};
this.listLoading = true;
//NProgress.start();
getUserListPage(para).then((res) => {
getUserList(para).then((res) => {
this.total = res.data.total;
this.users = res.data.list;
this.listLoading = false;
//NProgress.done();
}).catch((error) => {
this.listLoading = false;
let res= error.response.data;
alert(res.msg);
});
},
//删除
handleDel: function (index, row) {
... ... @@ -203,7 +249,7 @@
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { id: row.id };
let para = { userId: row.userId };
removeUser(para).then((res) => {
this.listLoading = false;
//NProgress.done();
... ... @@ -212,10 +258,11 @@
type: 'success'
});
this.getUsers();
}).catch((error) => {
this.listLoading = false;
alert(error);
});
}).catch(() => {
});
}).catch();
},
/**
* 显示编辑界面
... ... @@ -226,15 +273,18 @@
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
//显示新增界面
//显示新增界面,每次点开初始化数据
handleAdd: function () {
this.addFormVisible = true;
this.addForm = {
name: '',
sex: -1,
age: 0,
birth: '',
addr: ''
username: '',
password: '',
sex: 1,
address: '',
realname: '',
email: '',
mobilephone: '',
age: 1
};
},
//编辑
... ... @@ -245,9 +295,22 @@
this.editLoading = true;
//NProgress.start();
let para = Object.assign({}, this.editForm);
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
editUser(para).then((res) => {
//不需要提交的 去掉,后端不好接收
para.authorities = null;
para.permissions = null;
para.roles = null;
// para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
/*
查询之后格式this.filters.column.create_start_date中日期发生变化;
Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) 变成了 "2017-08-08T16:00:00.000Z";
所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格
式;
*/
/*moment 安装 npm install moment --save*/
para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
this.editLoading = false;
editUser(para).then((res) => {
//NProgress.done();
this.$message({
message: '提交成功',
... ... @@ -256,7 +319,7 @@
this.$refs['editForm'].resetFields();
this.editFormVisible = false;
this.getUsers();
});
}).catch(error => alert(error));
});
}
});
... ... @@ -280,7 +343,7 @@
this.$refs['addForm'].resetFields();
this.addFormVisible = false;
this.getUsers();
});
}).catch(error => alert(error));
});
}
});
... ...
<template>
<section>
<!--工具条-->
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form :inline="true" :model="filters">
<el-form-item>
<el-input v-model="filters.roleName" placeholder="权限名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="getRoles()">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleAdd">新增</el-button>
</el-form-item>
</el-form>
</el-col>
<!--列表-->
<el-table :data="tableList" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
<el-table-column type="selection" width="55">
</el-table-column>
<el-table-column type="index" width="60">
</el-table-column>
<el-table-column prop="permissionId" label="ID" width="100" sortable>
</el-table-column>
<el-table-column prop="permissionName" label="权限名称" min-width="200" sortable>
</el-table-column>
<el-table-column prop="description" label="描述" min-width="200" sortable>
</el-table-column>
<el-table-column prop="permissionSign" label="排序" width="100" sortable>
</el-table-column>
<el-table-column prop="url" label="路径" width="100" sortable>
</el-table-column>
<el-table-column label="操作" min-width="150">
<template slot-scope="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--工具条-->
<el-col :span="24" class="toolbar">
<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;">
</el-pagination>
</el-col>
<!--编辑界面-->
<el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
<el-form-item label="ID">
<span>{{editForm.roleId}}</span>
</el-form-item>
<el-form-item label="权限名称">
<el-input v-model="editForm.roleName" auto-complete="off" placeholder="请输入权限名称:例如:ROLE_name"></el-input>
</el-form-item>
<el-form-item label="权限描述">
<el-input v-model="editForm.description" auto-complete="off" placeholder="请输入权限描述:例如:用户管理员"></el-input>
</el-form-item>
<el-form-item label="权限排序">
<el-input v-model="editForm.roleSign" auto-complete="off" placeholder="请输入权限排序:例如:数字123"></el-input>
</el-form-item>
<!--<el-form-item label="创建日期">-->
<!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!--</el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="editFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
</div>
</el-dialog>
<!--新增界面-->
<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
<el-form-item label="权限名称" prop="permissionName">
<el-input v-model="addForm.roleName" auto-complete="off" placeholder="请输入权限名称:例如:用户新增权限"></el-input>
</el-form-item>
<el-form-item label="权限描述" prop="description">
<el-input v-model="addForm.description" auto-complete="off" placeholder="请输入权限描述:例如:用户管理员"></el-input>
</el-form-item>
<el-form-item label="权限路径" prop="url">
<el-input v-model="addForm.url" auto-complete="off" placeholder="请输入权限描述:例如:/user/update"></el-input>
</el-form-item>
<el-form-item label="权限排序" prop="permissionSign">
<el-input v-model="addForm.permissionSign" auto-complete="off" placeholder="请输入权限排序:例如:123"></el-input>
</el-form-item>
<el-form-item label="父目录ID" prop="parentId">
<el-input v-model="addForm.parentId" auto-complete="off" placeholder="请输入父目录ID:例如:123"></el-input>
</el-form-item>
<el-form-item label="父目录ID" prop="parentId">
<el-input v-model="addForm.parentId" auto-complete="off" placeholder="请输入父目录ID:例如:123"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="addFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
</div>
</el-dialog>
</section>
</template>
<script>
import util from '../../common/js/util'
//import NProgress from 'nprogress'
import { getList, remove, batchRemove, edit, add } from '../../api/perm_api';
import moment from 'moment'
export default {
data() {
return {
filters: {
roleName: ''
},
tableList: [],
total: 0,
pageNum: 1,
pageSize: 5,
listLoading: false,
sels: [],//列表选中列
//编辑界面是否显示
editFormVisible: false,
editLoading: false,
editFormRules: {
roleName: [
{ required: true, message: '请输入权限名称', trigger: 'blur' }
]
},
//编辑界面数据
editForm: {
roleId: 1,
description: '',
roleName: '',
roleSign: 1
},
addFormVisible: false,//新增界面是否显示
addLoading: false,
addFormRules: {
roleName: [
{ required: true, message: '请输入权限名称', trigger: 'blur' }
],
description: [
{ required: true, message: '请输入权限描述', trigger: 'blur' }
]
},
//新增界面数据
addForm: {
description: '',
roleName: '',
roleSign: 1
}
}
},
methods: {
//性别显示转换
formatSex: function (row, column) {
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
},
formatState: function (row, column) {
return row.state == true ? '是' : row.state == false ? '否' : '未知';
},
handleCurrentChange(val) {
this.pageNum = val;
this.getTableList();
},
//获取列表
getTableList() {
let para = {
pageNum: this.pageNum,
pageSize: this.pageSize,
roleName: this.filters.roleName
};
this.listLoading = true;
//NProgress.start();
getList(para).then((res) => {
this.total = res.data.total;
this.tableList = res.data.list;
this.listLoading = false;
//NProgress.done();
}).catch((error) => {
this.listLoading = false;
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
alert(status+msg);
}else {
alert(error);
}
});
},
//删除
handleDel: function (index, row) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { userId: row.userId };
remove(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getRoles();
}).catch((error) => {
this.listLoading = false;
alert(error);
});
}).catch();
},
/**
* 显示编辑界面
* @param index
* @param row 为这行的数据对象
*/
handleEdit: function (index, row) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
//显示新增界面,每次点开初始化数据
handleAdd: function () {
this.addFormVisible = true;
this.addForm = {
username: '',
password: '',
sex: 1,
address: '',
realname: '',
email: '',
mobilephone: '',
age: 1
};
},
//编辑
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.editLoading = true;
//NProgress.start();
let para = Object.assign({}, this.editForm);
//不需要提交的 去掉,后端不好接收
para.authorities = null;
para.permissions = null;
para.roles = null;
// para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
/*
查询之后格式this.filters.column.create_start_date中日期发生变化;
Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) 变成了 "2017-08-08T16:00:00.000Z";
所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格
式;
*/
/*moment 安装 npm install moment --save*/
para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
this.editLoading = false;
edit(para).then((res) => {
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['editForm'].resetFields();
this.editFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
});
}
});
},
//新增
addSubmit: function () {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.addLoading = true;
//NProgress.start();
let para = Object.assign({}, this.addForm);
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
add(para).then((res) => {
this.addLoading = false;
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['addForm'].resetFields();
this.addFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
});
}
});
},
selsChange: function (sels) {
this.sels = sels;
},
//批量删除
batchRemove: function () {
var ids = this.sels.map(item => item.id).toString();
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { ids: ids };
batchRemove(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getRoles();
});
}).catch(() => {
});
}
},
mounted() {
this.getTableList();
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
... ...
<template>
<section>
<!--工具条-->
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form :inline="true" :model="filters">
<el-form-item>
<el-input v-model="filters.roleName" placeholder="角色名称"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="getRoles()">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleAdd">新增</el-button>
</el-form-item>
</el-form>
</el-col>
<!--列表-->
<el-table :data="roles" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
<el-table-column type="selection" width="55">
</el-table-column>
<el-table-column type="index" width="60">
</el-table-column>
<el-table-column prop="roleId" label="ID" width="100" sortable>
</el-table-column>
<el-table-column prop="roleName" label="角色名称" min-width="200" sortable>
</el-table-column>
<el-table-column prop="description" label="角色描述" min-width="200" sortable>
</el-table-column>
<el-table-column prop="roleSign" label="排序" width="100" sortable>
</el-table-column>
<el-table-column label="操作" min-width="150">
<template slot-scope="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--工具条-->
<el-col :span="24" class="toolbar">
<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;">
</el-pagination>
</el-col>
<!--编辑界面-->
<el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
<el-form-item label="ID">
<span>{{editForm.roleId}}</span>
</el-form-item>
<el-form-item label="角色名称">
<el-input v-model="editForm.roleName" auto-complete="off" placeholder="请输入角色名称:例如:ROLE_name"></el-input>
</el-form-item>
<el-form-item label="角色描述">
<el-input v-model="editForm.description" auto-complete="off" placeholder="请输入角色描述:例如:用户管理员"></el-input>
</el-form-item>
<el-form-item label="角色排序">
<el-input v-model="editForm.roleSign" auto-complete="off" placeholder="请输入角色排序:例如:数字123"></el-input>
</el-form-item>
<!--<el-form-item label="创建日期">-->
<!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!--</el-form-item>-->
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="editFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
</div>
</el-dialog>
<!--新增界面-->
<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
<el-form-item label="角色名称" prop="roleName">
<el-input v-model="addForm.roleName" auto-complete="off" placeholder="请输入角色名称:例如:ROLE_name"></el-input>
</el-form-item>
<el-form-item label="角色描述" prop="description">
<el-input v-model="addForm.description" auto-complete="off" placeholder="请输入角色描述:例如:用户管理员"></el-input>
</el-form-item>
<el-form-item label="角色排序" prop="roleSign">
<el-input v-model="addForm.roleSign" auto-complete="off" placeholder="请输入角色排序:例如:数字123"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="addFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
</div>
</el-dialog>
</section>
</template>
<script>
import util from '../../common/js/util'
//import NProgress from 'nprogress'
import { getList, remove, batchRemove, edit, add } from '../../api/role_api';
import moment from 'moment'
export default {
data() {
return {
filters: {
roleName: ''
},
roles: [],
total: 0,
pageNum: 1,
pageSize: 5,
listLoading: false,
sels: [],//列表选中列
//编辑界面是否显示
editFormVisible: false,
editLoading: false,
editFormRules: {
roleName: [
{ required: true, message: '请输入角色名称', trigger: 'blur' }
]
},
//编辑界面数据
editForm: {
roleId: 1,
description: '',
roleName: '',
roleSign: 1
},
addFormVisible: false,//新增界面是否显示
addLoading: false,
addFormRules: {
roleName: [
{ required: true, message: '请输入角色名称', trigger: 'blur' }
],
description: [
{ required: true, message: '请输入角色描述', trigger: 'blur' }
]
},
//新增界面数据
addForm: {
description: '',
roleName: '',
roleSign: 1
}
}
},
methods: {
//性别显示转换
formatSex: function (row, column) {
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
},
formatState: function (row, column) {
return row.state == true ? '是' : row.state == false ? '否' : '未知';
},
handleCurrentChange(val) {
this.pageNum = val;
this.getRoles();
},
//获取列表
getRoles() {
let para = {
pageNum: this.pageNum,
pageSize: this.pageSize,
roleName: this.filters.roleName
};
this.listLoading = true;
//NProgress.start();
getList(para).then((res) => {
this.total = res.data.total;
this.roles = res.data.list;
this.listLoading = false;
//NProgress.done();
}).catch((error) => {
this.listLoading = false;
if(null!= error.response && error.response!==undefined){
let status= error.response.status;
let msg = error.response.statusText;
alert(status+msg);
}else {
alert(error);
}
});
},
//删除
handleDel: function (index, row) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { userId: row.userId };
remove(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getRoles();
}).catch((error) => {
this.listLoading = false;
alert(error);
});
}).catch();
},
/**
* 显示编辑界面
* @param index
* @param row 为这行的数据对象
*/
handleEdit: function (index, row) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
//显示新增界面,每次点开初始化数据
handleAdd: function () {
this.addFormVisible = true;
this.addForm = {
username: '',
password: '',
sex: 1,
address: '',
realname: '',
email: '',
mobilephone: '',
age: 1
};
},
//编辑
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.editLoading = true;
//NProgress.start();
let para = Object.assign({}, this.editForm);
//不需要提交的 去掉,后端不好接收
para.authorities = null;
para.permissions = null;
para.roles = null;
// para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
/*
查询之后格式this.filters.column.create_start_date中日期发生变化;
Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) 变成了 "2017-08-08T16:00:00.000Z";
所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格
式;
*/
/*moment 安装 npm install moment --save*/
para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
this.editLoading = false;
edit(para).then((res) => {
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['editForm'].resetFields();
this.editFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
});
}
});
},
//新增
addSubmit: function () {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.addLoading = true;
//NProgress.start();
let para = Object.assign({}, this.addForm);
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
add(para).then((res) => {
this.addLoading = false;
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['addForm'].resetFields();
this.addFormVisible = false;
this.getRoles();
}).catch(error => alert(error));
});
}
});
},
selsChange: function (sels) {
this.sels = sels;
},
//批量删除
batchRemove: function () {
var ids = this.sels.map(item => item.id).toString();
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { ids: ids };
batchRemove(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getRoles();
});
}).catch(() => {
});
}
},
mounted() {
this.getRoles();
}
}
</script>
<style scoped>
</style>
\ No newline at end of file
... ...
... ... @@ -4,46 +4,208 @@
<el-col :span="24" class="toolbar" style="padding-bottom: 0px;">
<el-form :inline="true" :model="filters">
<el-form-item>
<el-input v-model="filters.name" placeholder="姓名"></el-input>
<el-input v-model="filters.realname" placeholder="姓名"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="getUser">查询</el-button>
<el-input v-model="filters.username" placeholder="账号"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" v-on:click="getUsers">查询</el-button>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="handleAdd">新增</el-button>
</el-form-item>
</el-form>
</el-col>
<!--列表-->
<template>
<el-table :data="users" highlight-current-row v-loading="loading" style="width: 100%;">
<el-table :data="users" highlight-current-row v-loading="listLoading" @selection-change="selsChange" style="width: 100%;">
<el-table-column type="selection" width="55">
</el-table-column>
<el-table-column type="index" width="60">
</el-table-column>
<el-table-column prop="name" label="姓名" width="120" sortable>
<el-table-column prop="userId" label="ID" width="100" sortable>
</el-table-column>
<el-table-column prop="username" label="账号" width="120" sortable>
</el-table-column>
<el-table-column prop="realname" label="姓名" width="120" sortable>
</el-table-column>
<el-table-column prop="sex" label="性别" width="100" :formatter="formatSex" sortable>
</el-table-column>
<el-table-column prop="age" label="年龄" width="100" sortable>
<el-table-column prop="mobilephone" label="电话" width="125" sortable>
</el-table-column>
<el-table-column prop="birth" label="生日" width="120" sortable>
<el-table-column prop="creattime" label="创建时间" width="170" sortable>
</el-table-column>
<el-table-column prop="addr" label="地址" min-width="180" sortable>
<el-table-column prop="updatetime" label="更新时间" width="170" sortable>
</el-table-column>
</el-table>
<el-table-column prop="address" label="地址" min-width="180" sortable>
</el-table-column>
<el-table-column prop="email" label="Email" min-width="180" sortable>
</el-table-column>
<el-table-column prop="state" label="启用" width="100" :formatter="formatState" sortable>
</el-table-column>
<el-table-column label="操作" width="150">
<template slot-scope="scope">
<el-button size="small" @click="handleEdit(scope.$index, scope.row)">编辑</el-button>
<el-button type="danger" size="small" @click="handleDel(scope.$index, scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
<!--工具条-->
<el-col :span="24" class="toolbar">
<el-button type="danger" @click="batchRemove" :disabled="this.sels.length===0">批量删除</el-button>
<el-pagination layout="prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;">
</el-pagination>
</el-col>
<!--编辑界面-->
<el-dialog title="编辑" v-model="editFormVisible" :close-on-click-modal="false">
<el-form :model="editForm" label-width="80px" :rules="editFormRules" ref="editForm">
<el-form-item label="ID">
<span>{{editForm.userId}}</span>
</el-form-item>
<el-form-item label="账号">
<span>{{editForm.username}}</span>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="editForm.password" auto-complete="off" show-password></el-input>
</el-form-item>
<el-form-item label="姓名" prop="realname">
<el-input v-model="editForm.realname" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobilephone">
<el-input v-model="editForm.mobilephone" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="Email" prop="email">
<el-input v-model="editForm.email" auto-complete="off"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="editForm.sex">
<el-radio class="radio" label="1" >男</el-radio>
<el-radio class="radio" label="0" >女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="年龄">
<el-input-number v-model="editForm.age" :min="0" :max="200"></el-input-number>
</el-form-item>
<!--<el-form-item label="创建日期">-->
<!--<el-date-picker type="date" placeholder="创建日期" v-model="editForm.creattime" value-format="yyyy-MM-dd HH:mm:ss" format="yyyy-MM-dd HH:mm:ss"></el-date-picker>-->
<!--</el-form-item>-->
<el-form-item label="地址">
<el-input type="textarea" v-model="editForm.address"></el-input>
</el-form-item>
<el-form-item label="启用">
<el-radio-group v-model="editForm.state">
<el-radio class="radio" label="true" >是</el-radio>
<el-radio class="radio" label="false" >否</el-radio>
</el-radio-group>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="editFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="editSubmit" :loading="editLoading">提交</el-button>
</div>
</el-dialog>
<!--新增界面-->
<el-dialog title="新增" v-model="addFormVisible" :close-on-click-modal="false">
<el-form :model="addForm" label-width="80px" :rules="addFormRules" ref="addForm">
<el-form-item label="账号" prop="username">
<el-input v-model="addForm.username"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="addForm.password" type="password"></el-input>
</el-form-item>
<el-form-item label="姓名" prop="realname">
<el-input v-model="addForm.realname"></el-input>
</el-form-item>
<el-form-item label="电话" prop="mobilephone">
<el-input v-model="addForm.mobilephone"></el-input>
</el-form-item>
<el-form-item label="Email" prop="email">
<el-input v-model="addForm.email"></el-input>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="addForm.sex">
<el-radio class="radio" label="1">男</el-radio>
<el-radio class="radio" label="0">女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input-number v-model="addForm.age" :min="0" :max="200"></el-input-number>
</el-form-item>
<el-form-item label="地址">
<el-input type="textarea" v-model="addForm.address"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click.native="addFormVisible = false">取消</el-button>
<el-button type="primary" @click.native="addSubmit" :loading="addLoading">提交</el-button>
</div>
</el-dialog>
</section>
</template>
<script>
import { getUserList } from '../../api/api';
import util from '../../common/js/util'
//import NProgress from 'nprogress'
import { getUserList, removeUser, batchRemoveUser, editUser, addUser } from '../../api/api';
import moment from 'moment'
export default {
data() {
return {
filters: {
name: ''
username: '',
realname: ''
},
users: [],
total: 0,
pageNum: 1,
pageSize: 5,
listLoading: false,
sels: [],//列表选中列
//编辑界面是否显示
editFormVisible: false,
editLoading: false,
editFormRules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
]
},
//编辑界面数据
editForm: {
userId: 1,
username: '',
password: '',
sex: 1,
creattime: '',
address: '',
realname: '',
email: '',
mobilephone: '',
state: 'true'
},
loading: false,
users: [
addFormVisible: false,//新增界面是否显示
addLoading: false,
addFormRules: {
username: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
]
},
//新增界面数据
addForm: {
username: '',
password: '',
sex: 1,
address: '',
realname: '',
email: '',
mobilephone: '',
age: 1
}
}
},
methods: {
... ... @@ -51,24 +213,171 @@
formatSex: function (row, column) {
return row.sex == 1 ? '男' : row.sex == 0 ? '女' : '未知';
},
formatState: function (row, column) {
return row.state == true ? '是' : row.state == false ? '否' : '未知';
},
handleCurrentChange(val) {
this.pageNum = val;
this.getUsers();
},
//获取用户列表
getUser: function () {
getUsers() {
let para = {
name: this.filters.name
pageNum: this.pageNum,
pageSize: this.pageSize,
username: this.filters.username
};
this.loading = true;
this.listLoading = true;
//NProgress.start();
getUserList(para).then((res) => {
this.users = res.data.users;
this.loading = false;
this.total = res.data.total;
this.users = res.data.list;
this.listLoading = false;
//NProgress.done();
}).catch((error) => {
this.listLoading = false;
let res= error.response.data;
alert(res.msg);
});
},
//删除
handleDel: function (index, row) {
this.$confirm('确认删除该记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { userId: row.userId };
removeUser(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getUsers();
}).catch((error) => {
this.listLoading = false;
alert(error);
});
}).catch();
},
/**
* 显示编辑界面
* @param index
* @param row 为这行的数据对象
*/
handleEdit: function (index, row) {
this.editFormVisible = true;
this.editForm = Object.assign({}, row);
},
//显示新增界面,每次点开初始化数据
handleAdd: function () {
this.addFormVisible = true;
this.addForm = {
username: '',
password: '',
sex: 1,
address: '',
realname: '',
email: '',
mobilephone: '',
age: 1
};
},
//编辑
editSubmit: function () {
this.$refs.editForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.editLoading = true;
//NProgress.start();
let para = Object.assign({}, this.editForm);
//不需要提交的 去掉,后端不好接收
para.authorities = null;
para.permissions = null;
para.roles = null;
// para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
/*
查询之后格式this.filters.column.create_start_date中日期发生变化;
Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) 变成了 "2017-08-08T16:00:00.000Z";
所以使用 moment 日期格式化插件将时间转换成 [ Wed Aug 09 2017 00:00:00 GMT+0800 (中国标准时间) ] 格
式;
*/
/*moment 安装 npm install moment --save*/
para.creattime = moment(para.creattime).format('YYYY-MM-DD HH:mm:ss');
this.editLoading = false;
editUser(para).then((res) => {
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['editForm'].resetFields();
this.editFormVisible = false;
this.getUsers();
}).catch(error => alert(error));
});
}
});
},
//新增
addSubmit: function () {
this.$refs.addForm.validate((valid) => {
if (valid) {
this.$confirm('确认提交吗?', '提示', {}).then(() => {
this.addLoading = true;
//NProgress.start();
let para = Object.assign({}, this.addForm);
para.birth = (!para.birth || para.birth == '') ? '' : util.formatDate.format(new Date(para.birth), 'yyyy-MM-dd');
addUser(para).then((res) => {
this.addLoading = false;
//NProgress.done();
this.$message({
message: '提交成功',
type: 'success'
});
this.$refs['addForm'].resetFields();
this.addFormVisible = false;
this.getUsers();
}).catch(error => alert(error));
});
}
});
},
selsChange: function (sels) {
this.sels = sels;
},
//批量删除
batchRemove: function () {
var ids = this.sels.map(item => item.id).toString();
this.$confirm('确认删除选中记录吗?', '提示', {
type: 'warning'
}).then(() => {
this.listLoading = true;
//NProgress.start();
let para = { ids: ids };
batchRemoveUser(para).then((res) => {
this.listLoading = false;
//NProgress.done();
this.$message({
message: '删除成功',
type: 'success'
});
this.getUsers();
});
}).catch(() => {
});
}
},
mounted() {
this.getUser();
this.getUsers();
}
}
};
</script>
... ...