Files
exam-jyt/exam-vue/src/views/sys/user/index.vue
T
2026-06-18 22:08:46 +08:00

190 lines
5.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!--
@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>