|
|
@@ -2,23 +2,110 @@
|
|
|
<div class="tab2">
|
|
|
<div class="insideTop">
|
|
|
用户管理
|
|
|
+ <div class="addBtn">
|
|
|
+ <el-button type="primary" @click="dialogVisible = true">新增</el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="obstruct"></div>
|
|
|
<div class="conten">
|
|
|
+ <div class="top">
|
|
|
+ <el-input
|
|
|
+ style="width: 300px"
|
|
|
+ v-model="pageData.searchKey"
|
|
|
+ placeholder="请输入用户名"
|
|
|
+ ></el-input>
|
|
|
+   
|
|
|
+ <el-button type="primary" @click="userList(pageData)">查 询</el-button>
|
|
|
+ <el-button @click="reset">重 置</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="table">
|
|
|
+ <el-table :data="tableData" style="width: 100%" height="550px">
|
|
|
+ <el-table-column label="编号" width="80">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ {{
|
|
|
+ scope.$index + (pageData.pageNum - 1) * pageData.pageSize + 1
|
|
|
+ }}
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column prop="userName" label="账号"> </el-table-column>
|
|
|
+ <el-table-column prop="phone" label="联系电话"> </el-table-column>
|
|
|
+ <el-table-column prop="createTime" label="新建时间">
|
|
|
+ </el-table-column>
|
|
|
|
|
|
+ <el-table-column label="启用状态">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-switch
|
|
|
+ :disabled="row.isAdmin === 1"
|
|
|
+ @change="changeSta($event, row.id)"
|
|
|
+ v-model="row.isEnabled"
|
|
|
+ active-color="#a30014"
|
|
|
+ inactive-color="#ccc"
|
|
|
+ :active-value="1"
|
|
|
+ :inactive-value="0"
|
|
|
+ >
|
|
|
+ </el-switch>
|
|
|
+ <!-- {{ row.isEnabled ? "启用" : "禁用" }} -->
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作">
|
|
|
+ <template #default="{ row }">
|
|
|
+ <el-button type="text" @click="editUser(row)">修改</el-button>
|
|
|
+ <el-button
|
|
|
+ v-if="row.isAdmin !== 1"
|
|
|
+ type="text"
|
|
|
+ @click="resetPass(row.id)"
|
|
|
+ >重置密码</el-button
|
|
|
+ >
|
|
|
+ <el-button
|
|
|
+ v-if="row.isAdmin !== 1"
|
|
|
+ type="text"
|
|
|
+ style="color: #f56c6c"
|
|
|
+ @click="userDel(row.id)"
|
|
|
+ >删除</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ </div>
|
|
|
+ <!-- 分页器 -->
|
|
|
+ <div class="paging">
|
|
|
+ <span>共 {{ total }} 条</span>
|
|
|
+ <el-pagination
|
|
|
+ :current-page="pageData.pageNum"
|
|
|
+ @current-change="currentChange"
|
|
|
+ @size-change="sizeChange"
|
|
|
+ layout="sizes,prev,pager,next,jumper"
|
|
|
+ :total="total"
|
|
|
+ >
|
|
|
+ </el-pagination>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
-
|
|
|
+ <!-- 点击新增和编辑出现的弹窗 -->
|
|
|
+ <Dialog
|
|
|
+ ref="projectRef"
|
|
|
+ :dialogVisible.sync="dialogVisible"
|
|
|
+ @clickSon="userList(pageData)"
|
|
|
+ />
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
+import Dialog from './Dialog'
|
|
|
+import { userList, userDel, editStatus, userResetPass } from '@/apis/system'
|
|
|
export default {
|
|
|
name: 'tab2',
|
|
|
- components: {},
|
|
|
+ components: { Dialog },
|
|
|
data () {
|
|
|
// 这里存放数据
|
|
|
return {
|
|
|
-
|
|
|
+ dialogVisible: false,
|
|
|
+ total: 0,
|
|
|
+ pageData: {
|
|
|
+ pageNum: 1,
|
|
|
+ pageSize: 10,
|
|
|
+ searchKey: ''
|
|
|
+ },
|
|
|
+ tableData: []
|
|
|
}
|
|
|
},
|
|
|
// 监听属性 类似于data概念
|
|
|
@@ -27,16 +114,80 @@ export default {
|
|
|
watch: {},
|
|
|
// 方法集合
|
|
|
methods: {
|
|
|
-
|
|
|
+ // 点击编辑,调用子组件弹窗的方法
|
|
|
+ editUser (item) {
|
|
|
+ this.$refs.projectRef.setRuleForm(item)
|
|
|
+ this.dialogVisible = true
|
|
|
+ },
|
|
|
+ // 点击重置密码
|
|
|
+ async resetPass (id) {
|
|
|
+ this.$confirm('确定重置吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ .then(async () => {
|
|
|
+ const res = await userResetPass(id)
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.$message.success('重置成功!')
|
|
|
+ } else this.$message.warning(res.msg)
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message.info('已取消重置')
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 启用和停用状态
|
|
|
+ async changeSta (val, id) {
|
|
|
+ await editStatus(id, val)
|
|
|
+ this.$message.success('操作成功!')
|
|
|
+ },
|
|
|
+ // 点击删除
|
|
|
+ userDel (id) {
|
|
|
+ this.$confirm('确定删除吗?', '提示', {
|
|
|
+ confirmButtonText: '确定',
|
|
|
+ cancelButtonText: '取消',
|
|
|
+ type: 'warning'
|
|
|
+ })
|
|
|
+ .then(async () => {
|
|
|
+ const res = await userDel(id)
|
|
|
+ if (res.code === 0) {
|
|
|
+ this.$message.success('删除成功!')
|
|
|
+ this.userList(this.pageData)
|
|
|
+ } else this.$message.warning(res.msg)
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.$message.info('已取消删除')
|
|
|
+ })
|
|
|
+ },
|
|
|
+ // 点击重置
|
|
|
+ reset () {
|
|
|
+ this.pageData.pageNum = 1
|
|
|
+ this.pageData.searchKey = ''
|
|
|
+ this.userList(this.pageData)
|
|
|
+ },
|
|
|
+ // 封装一个获取表列表的方法
|
|
|
+ async userList (data) {
|
|
|
+ const res = await userList(data)
|
|
|
+ this.total = res.data.total
|
|
|
+ this.tableData = res.data.records
|
|
|
+ },
|
|
|
+ // 分页器
|
|
|
+ currentChange (val) {
|
|
|
+ this.pageData.pageNum = val
|
|
|
+ this.userList(this.pageData)
|
|
|
+ },
|
|
|
+ sizeChange (val) {
|
|
|
+ this.pageData.pageNum = 1
|
|
|
+ this.pageData.pageSize = val
|
|
|
+ this.userList(this.pageData)
|
|
|
+ }
|
|
|
},
|
|
|
// 生命周期 - 创建完成(可以访问当前this实例)
|
|
|
created () {
|
|
|
-
|
|
|
+ this.userList(this.pageData)
|
|
|
},
|
|
|
// 生命周期 - 挂载完成(可以访问DOM元素)
|
|
|
- mounted () {
|
|
|
-
|
|
|
- },
|
|
|
+ mounted () {},
|
|
|
beforeCreate () {}, // 生命周期 - 创建之前
|
|
|
beforeMount () {}, // 生命周期 - 挂载之前
|
|
|
beforeUpdate () {}, // 生命周期 - 更新之前
|
|
|
@@ -47,6 +198,32 @@ export default {
|
|
|
}
|
|
|
</script>
|
|
|
<style lang='less' scoped>
|
|
|
-//@import url(); 引入公共css类
|
|
|
-
|
|
|
+.tab2 {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ .insideTop {
|
|
|
+ position: relative;
|
|
|
+ .addBtn {
|
|
|
+ position: absolute;
|
|
|
+ top: -10px;
|
|
|
+ right: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ .conten {
|
|
|
+ width: 100%;
|
|
|
+ height: calc(100% - 52px);
|
|
|
+ position: relative;
|
|
|
+ padding: 20px;
|
|
|
+ .table {
|
|
|
+ margin-top: 20px;
|
|
|
+ }
|
|
|
+ .paging {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ position: absolute;
|
|
|
+ bottom: 30px;
|
|
|
+ right: 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
</style>
|