190 lines
5.0 KiB
Vue
190 lines
5.0 KiB
Vue
<!--
|
||
@description 用户管理页面,实现用户账号的创建、编辑、禁用与权限配置
|
||
@author D吕贺034244311
|
||
@date 20260618
|
||
-->
|
||
<template>
|
||
|
||
<div>
|
||
|
||
<data-table
|
||
ref="pagingTable"
|
||
:options="options"
|
||
:list-query="listQuery"
|
||
@multi-actions="handleMultiAction"
|
||
>
|
||
|
||
<template #filter-content>
|
||
|
||
<el-input v-model="listQuery.params.userName" style="width: 200px" placeholder="搜索登录名" class="filter-item" />
|
||
<el-input v-model="listQuery.params.realName" style="width: 200px" placeholder="搜索姓名" class="filter-item" />
|
||
<el-button class="filter-item" type="primary" @click="handleAdd">
|
||
<el-icon><Plus /></el-icon> 添加
|
||
</el-button>
|
||
</template>
|
||
<template #data-columns>
|
||
<el-table-column type="selection" width="55"/>
|
||
<el-table-column align="center" label="用户名">
|
||
<template #default="scope">
|
||
<a style="color: #1890ff" @click="handleUpdate(scope.row)">{{ scope.row.userName }}</a>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="姓名" prop="realName"/>
|
||
<el-table-column align="center" label="角色" prop="roleIds"/>
|
||
<el-table-column align="center" label="创建时间">
|
||
<template #default="scope">
|
||
{{ $filters.xmDateFormat(scope.row.createTime) }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="状态">
|
||
<template #default="scope">
|
||
{{ $filters.stateFilter(scope.row.state) }}
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column align="center" label="操作">
|
||
<template #default="scope">
|
||
<a style="color: #1890ff" @click="handleUpdate(scope.row)">
|
||
<el-button link type="primary" size="small">编辑</el-button>
|
||
</a>
|
||
</template>
|
||
</el-table-column>
|
||
</template>
|
||
</data-table>
|
||
|
||
<el-dialog v-model="dialogVisible" title="添加用户" width="500px">
|
||
|
||
<el-form :model="formData" label-position="left" label-width="100px">
|
||
|
||
<el-form-item label="用户名">
|
||
<el-input v-model="formData.userName" />
|
||
</el-form-item>
|
||
|
||
<el-form-item label="姓名">
|
||
<el-input v-model="formData.realName" />
|
||
</el-form-item>
|
||
|
||
<el-form-item label="密码">
|
||
<el-input v-model="formData.password" placeholder="不修改请留空" type="password" />
|
||
</el-form-item>
|
||
|
||
<el-form-item label="角色">
|
||
<meet-role v-model="formData.roles" />
|
||
</el-form-item>
|
||
</el-form>
|
||
<template #footer>
|
||
<div class="dialog-footer">
|
||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||
<el-button type="primary" @click="handleSave">确 定</el-button>
|
||
</div>
|
||
</template>
|
||
|
||
</el-dialog>
|
||
|
||
</div>
|
||
|
||
</template>
|
||
|
||
<script>
|
||
import DataTable from '@/components/DataTable/index.vue'
|
||
import MeetRole from '@/components/MeetRole/index.vue'
|
||
import { saveData } from '@/api/sys/user/user.js'
|
||
import DepartTreeSelect from '@/components/DepartTreeSelect/index.vue'
|
||
|
||
export default {
|
||
name: 'SysUserList',
|
||
components: { DepartTreeSelect, DataTable, MeetRole },
|
||
data() {
|
||
return {
|
||
|
||
|
||
defaultProps: {
|
||
value: 'id',
|
||
label: 'deptName',
|
||
children: 'children'
|
||
},
|
||
dialogVisible: false,
|
||
|
||
listQuery: {
|
||
current: 1,
|
||
size: 10,
|
||
params: {
|
||
}
|
||
},
|
||
|
||
formData: {
|
||
avatar: ''
|
||
},
|
||
|
||
options: {
|
||
// 列表请求URL
|
||
listUrl: '/exam/api/sys/user/paging',
|
||
// 启用禁用
|
||
stateUrl: '/exam/api/sys/user/state',
|
||
deleteUrl: '/exam/api/sys/user/delete',
|
||
// 批量操作列表
|
||
multiActions: [
|
||
{
|
||
value: 'enable',
|
||
label: '启用'
|
||
}, {
|
||
value: 'disable',
|
||
label: '禁用'
|
||
},
|
||
{
|
||
value: 'delete',
|
||
label: '删除'
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
|
||
created() {
|
||
|
||
},
|
||
|
||
methods: {
|
||
|
||
handleUploadSuccess(response) {
|
||
// 上传图片赋值
|
||
this.formData.avatar = response.data.url
|
||
},
|
||
|
||
handleAdd() {
|
||
this.formData = {}
|
||
this.dialogVisible = true
|
||
},
|
||
|
||
handleUpdate(row) {
|
||
this.dialogVisible = true
|
||
this.formData = row
|
||
this.formData.roles = row.roleIds.split(',')
|
||
this.formData.password = null
|
||
|
||
console.log(JSON.stringify(this.formData))
|
||
},
|
||
|
||
departSelected(data) {
|
||
this.formData.departId = data.id
|
||
},
|
||
handleSave() {
|
||
saveData(this.formData).then(() => {
|
||
this.$message({
|
||
type: 'success',
|
||
message: '用户修改成功!'
|
||
})
|
||
this.dialogVisible = false
|
||
this.$refs.pagingTable.getList()
|
||
})
|
||
},
|
||
|
||
// 批量操作监听
|
||
handleMultiAction(obj) {
|
||
if (obj.opt === 'cancel') {
|
||
this.handleCancelOrder(obj.ids)
|
||
}
|
||
}
|
||
}
|
||
}
|
||
</script>
|