You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
160 lines
4.0 KiB
160 lines
4.0 KiB
<script lang="ts" setup>
|
|
import { syncSendCmd } from 'apis/system'
|
|
import { FtMessage } from 'libs/message'
|
|
import { FtMessageBox } from 'libs/messageBox'
|
|
import { onMounted, ref } from 'vue'
|
|
|
|
import { useSettingStore } from '@/stores/settingStore'
|
|
|
|
import AddUser from './AddUser.vue'
|
|
import ModifyPwd from './ModifyPwd.vue'
|
|
|
|
const settingStore = useSettingStore()
|
|
const tableData = ref(settingStore.userList)
|
|
const selectedUserList = ref<User.UserItem[]>([])
|
|
const userData = localStorage.getItem('user')
|
|
const userInfo = userData ? JSON.parse(userData) : {}
|
|
|
|
onMounted(() => {
|
|
queryUserList()
|
|
})
|
|
const queryUserList = () => {
|
|
const userParams = {
|
|
className: 'UserMgrService',
|
|
fnName: 'getAllUser',
|
|
params: {},
|
|
}
|
|
syncSendCmd(userParams).then((res) => {
|
|
if (res.ackcode === 0) {
|
|
tableData.value = res.rely
|
|
}
|
|
})
|
|
}
|
|
const updatePwd = (userItem: User.UserItem) => {
|
|
// 判断登录是否管理员,非管理员不可修改密码
|
|
if (userInfo.roleType !== 'admin' && userInfo.id !== userItem.id) {
|
|
FtMessage.error('无权限修改密码')
|
|
return
|
|
}
|
|
settingStore.updateCurrentEditUser(userItem)
|
|
settingStore.updatePwdVisible(true)
|
|
}
|
|
|
|
const onAddUser = () => {
|
|
settingStore.updateUserModalState('add')
|
|
settingStore.updateVisible(true)
|
|
}
|
|
const onDelUser = (user: User.UserItem) => {
|
|
// 自己不是管理员,要删除管理账号,不允许
|
|
if (user.id === userInfo.id) {
|
|
FtMessage.warning('自己不可删除自己')
|
|
return
|
|
}
|
|
// 禁止删除超级管理员
|
|
if (user.name === 'admin') {
|
|
FtMessage.warning('不可删除超级管理员用户')
|
|
return
|
|
}
|
|
FtMessageBox.warning('请确认是否删除?').then(() => {
|
|
const delParams = {
|
|
className: 'UserMgrService',
|
|
fnName: 'delUser',
|
|
params: {
|
|
id: user.id,
|
|
},
|
|
}
|
|
syncSendCmd(delParams).then((res) => {
|
|
if (res.ackcode === 0) {
|
|
FtMessage.success('删除成功')
|
|
queryUserList()
|
|
}
|
|
})
|
|
})
|
|
}
|
|
const handleSelectionChange = (users: User.UserItem[]) => {
|
|
selectedUserList.value = users
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="user">
|
|
<div class="add-user">
|
|
<bt-button type="primary" button-text="新增用户" @click="onAddUser" />
|
|
</div>
|
|
<div class="user-table">
|
|
<el-table :data="tableData" style="width: 100%" height="100%" @selection-change="handleSelectionChange">
|
|
<el-table-column prop="name" label="用户名" />
|
|
<el-table-column prop="roleType" label="角色">
|
|
<template #default="{ row }">
|
|
<span v-if="row.roleType === 'admin'"> 管理员 </span>
|
|
<span v-else>普通用户</span>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column prop="detail" label="操作" width="250" align="center">
|
|
<template #default="scoped">
|
|
<div class="user-opera">
|
|
<el-button class="view-button" @click.stop="updatePwd(scoped.row)">
|
|
修改密码
|
|
</el-button>
|
|
<el-button class="delete-button" @click.stop="onDelUser(scoped.row)">
|
|
删 除
|
|
</el-button>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<AddUser @refresh="queryUserList" />
|
|
<ModifyPwd @refresh="queryUserList" />
|
|
</div>
|
|
</template>
|
|
|
|
<style lang="scss" scoped>
|
|
.user {
|
|
height: 100%;
|
|
overflow: hidden;
|
|
background: $gradient-color;
|
|
.add-user {
|
|
display: flex;
|
|
align-items: center;
|
|
height: 50px;
|
|
}
|
|
.user-table {
|
|
height: calc(100% - 50px);
|
|
}
|
|
}
|
|
.user-opera {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.view-button,
|
|
.delete-button {
|
|
border: none;
|
|
padding: 4px 8px;
|
|
border-radius: 3px;
|
|
cursor: pointer;
|
|
margin-right: 5px;
|
|
transition: all 0.3s;
|
|
font-family: serif;
|
|
}
|
|
|
|
.view-button {
|
|
background-color: #e6f0ff;
|
|
color: #1890ff;
|
|
}
|
|
|
|
.view-button:hover {
|
|
background-color: #1890ff;
|
|
color: white;
|
|
}
|
|
|
|
.delete-button {
|
|
background-color: #ffe6e6;
|
|
color: #ff4d4f;
|
|
}
|
|
|
|
.delete-button:hover {
|
|
background-color: #ff4d4f;
|
|
color: white;
|
|
}
|
|
</style>
|