<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.realname" placeholder="姓名"></el-input> </el-form-item> <el-form-item> <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> <!--列表--> <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="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="mobilephone" label="电话" width="125" sortable> </el-table-column> <el-table-column prop="creattime" label="创建时间" width="170" sortable> </el-table-column> <el-table-column prop="updatetime" label="更新时间" width="170" sortable> </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> <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="total, prev, pager, next" @current-change="handleCurrentChange" :page-size="5" :total="total" style="float:right;"> </el-pagination> </el-col> <!--编辑界面--> <el-dialog title="编辑" :visible.sync="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" 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> <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="新增" :visible.sync="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 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: { 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' }, addFormVisible: false,//新增界面是否显示 addLoading: false, addFormRules: { username: [ { required: true, message: '请输入姓名', trigger: 'blur' } ] }, //新增界面数据 addForm: { username: '', password: '', sex: 1, address: '', realname: '', email: '', mobilephone: '', age: 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.getUsers(); }, //获取用户列表 getUsers() { let para = { pageNum: this.pageNum, pageSize: this.pageSize, username: this.filters.username }; this.listLoading = true; //NProgress.start(); 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) { 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.getUsers(); } } </script> <style scoped> </style>