效果
1:表格以及分页
2:增加一条数据
3:删除一条数据
4:修改一条数据
5:查询一条数据
实例:
<template> <div class="tab-container"> <div class="filter-container" style="margin-bottom: 20px"> <el-input maxlength="40" placeholder="用户名" style="width: 200px" class="filter-item" v-model="searchContent" @keyup.enter.native="handleFilter" /> <el-button class="filter-item" type="primary" icon="el-icon-search" @click="searchContList" >搜索 </el-button> <el-button class="filter-item" style="margin-left: 10px" type="primary" icon="el-icon-edit" @click="handleCreate" >新增用户 </el-button> </div> <el-table :data="pvData.slice((currentPage - 1) * pagesize, currentPage * pagesize)" border fit highlight-current-row style="width: 100%" > <el-table-column prop="userName" label="用户名" width="180" ></el-table-column> <el-table-column prop="realName" label="姓名"></el-table-column> <el-table-column prop="sex" label="性别" :formatter="formatSex"></el-table-column> <el-table-column prop="organName" label="所属部门"></el-table-column> <el-table-column prop="authority" label="权限"></el-table-column> <el-table-column prop="roleName" label="角色"></el-table-column> <el-table-column label="操作" align="center" width="230" class-name="small-padding fixed-width" > <template slot-scope="{ row, $index }"> <el-button type="primary" size="mini" @click="handleUpdate(row)" >编辑</el-button > <el-button v-if="row.status != 'deleted'" size="mini" type="danger" @click="handleDelete($index, row)" >删除</el-button > </template> </el-table-column> </el-table> <el-pagination style="margin: 12px 0px" background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[5, 10, 20, 40]" :page-size="pagesize" layout="total, sizes, prev, pager, next, jumper" :total="pvData.length" > </el-pagination> <!-- 弹框 --> <el-dialog :title="textMap[dialogStatus]" :visible.sync="dialogFormVisible"> <el-form :model="questionForm" ref="dataForm" label-position="left" label-width="90px" style="width: 400px; margin-left: 50px" > <el-form-item label="用户名" prop="userName"> <el-input v-model="questionForm.userName" /> </el-form-item> <el-form-item label="昵称" prop="realName"> <el-input v-model="questionForm.realName" /> </el-form-item> <el-form-item label="性别"> <el-select v-model="questionForm.sex" class="filter-item" placeholder="选择性别" style="width:100%" > <el-option v-for="item in sexOptions" :key="item.key" :label="item.label" :value="item.key" /> </el-select> </el-form-item> <el-form-item label="角色"> <el-select v-model="questionForm.roleName" class="filter-item" placeholder="选择角色" style="width:100%" > <el-option v-for="item in roleNameOptions" :key="item.key" :label="item.label" :value="item.key" /> </el-select> </el-form-item> <el-form-item label="部门"> <el-select v-model="questionForm.organName" placeholder="请选择" style="width:100%" > <el-option v-for="item in getOrganList" :key="item.id" :label="item.organName" :value="item.id" > </el-option> </el-select> </el-form-item> <el-form-item label="密码" prop="password"> <el-input type="password" v-model="questionForm.password" /> </el-form-item> <el-form-item label="密码确认" prop="password"> <el-input type="password" v-model="questionForm.password" /> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">取消</el-button> <el-button type="primary" @click="dialogStatus === 'create' ? createData() : updateData()" >确定</el-button > </div> </el-dialog> </div> </template> <script> //调用接口 import { getQuerycheckList, saveSubject, updateSubject, deleteSubject, getOrgan, } from "@/api/permission/user"; export default { data() { return { // 分页 currentPage: 1, //初始页 pagesize: 5, // 每页的数据 total: 0, searchContent: "", //规则 input: "", dialogPvVisible: false, questionForm: { userName: "", realName: "", organId: 1, organName: "", // sex: 1, sex: [], roleId: 1, roleName: "", authority: 1, password: "", companyId: 1, }, sexOptions: [ { label: "男", key: 1 }, { label: "女", key: 0 }, ], roleNameOptions: [ { label: "管理员", key: 1 }, { label: "普通用户", key: 0 }, ], activeName: "CN", dialogFormVisible: false, dialogStatus: "", textMap: { update: "编辑", create: "添加", }, pvData: [], getOrganList: [], }; }, watch: {}, created() { //加载用户列表信息接口 this.getQuerycheckList(); //加载部门 this.getOrgan(); }, methods: { // 初始页currentPage、初始每页数据数pagesize和数据data handleSizeChange: function (size) { this.pagesize = size; console.log(this.pagesize); //每页下拉显示数据 }, handleCurrentChange: function (currentPage) { this.currentPage = currentPage; console.log(this.currentPage); //点击第几页 }, // 查询按钮 searchContList() { this.getQuerycheckList(); }, //查询题目列表信息接口 getQuerycheckList() { const params = { // userName: "", organId: 1, userOrganId: 1, authority: 0, page: 1, rows: 5, isPagination: false, }; // //题目内容的参数 if(this.searchContent){ params.userName= this.searchContent } this.dataLoading = true; getQuerycheckList(params).then((res) => { console.log("查询题目列表信息", res); this.pvData = res.data; // this.total=res.data.questionCount; // this.questionNormalCount=res.data.questionNormalCount; this.dataLoading = false; }); }, //获取部门信息接口定义 getOrgan() { const params = { organId: 1, authority: 1, }; this.dataLoading = true; getOrgan(params).then((res) => { console.log("查询部门列表信息", res); this.getOrganList = res.data.organs; this.dataLoading = false; }); }, handleModifyStatus(row, status) { this.$message({ message: "操作Success", type: "success", }); row.status = status; }, //新增表单里面的值 handleCreate() { this.questionForm = { userName: "", realName: "", organId: 1, organName: "", sex: undefined, roleId: 1, roleName: "", authority: 1, password: "", companyId: 1, }; this.dialogStatus = "create"; this.dialogFormVisible = true; this.$nextTick(() => { this.$refs["dataForm"].clearValidate(); }); }, //添加用户 async createData() { let form = null; if (!this.questionForm.userName) { this.$message({ message: "必须填写用户名", type: "error" }); return; } if (!this.questionForm.realName) { this.$message({ message: "必须填写用户昵称", type: "error" }); return; } form = this.questionForm; const params = form; const res = await saveSubject(params); console.log(res); if (res.code === 1) { this.$message({ type: "info", message: "保存成功", }); this.dialogFormVisible = false; this.getQuerycheckList(); return; } this.$message({ type: "error", message: "保存失败", }); }, //编辑弹出框 handleUpdate(row) { this.questionForm = row; this.getQuerycheckList(); this.dialogStatus = "update"; this.dialogFormVisible = true; this.$nextTick(() => { this.$refs["dataForm"].clearValidate(); }); }, updateData() { const params = { userName: this.questionForm.userName, realName: this.questionForm.realName, organId: 1, organName: this.questionForm.organName, sex: 1, roleId: 1, roleName: this.questionForm.roleName, authority: 1, password: this.questionForm.password, companyId: 1, id:this.questionForm.id }; updateSubject(params).then((res) => { console.log(res); this.$notify({ title: "Success", message: "更新成功", type: "success", duration: 2000, }); this.dialogFormVisible = false; this.getQuerycheckList(); }); }, //调用删除接口 handleDelete(index, row) { const params = { id: row.id, }; this.dataLoading = true; deleteSubject(params).then((res) => { this.$notify({ message: "删除成功", type: "success", duration: 2000, }); this.getQuerycheckList(); console.log(this.pvData); this.dataLoading = false; }); }, //格式化性别 formatSex(row, column) { return row.sex === 1? "男" : "女"; } }, }; </script> <style scoped> .tab-container { margin: 30px; } </style>