消毒机设备
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

<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>