map/ui/dasadmin/src/views/backend/auth/userManagement/index.vue

486 lines
16 KiB
Vue
Raw Normal View History

2024-06-26 14:43:58 +08:00
<template>
<!-- 用户 -->
<div style="margin-left: 25px">
<el-row :gutter="20">
<el-col :span="6" style="padding: 2.2% 1.4%; border-right: 1px solid #eaebed">
<el-input v-model="input1" size="large" placeholder="搜索" :suffix-icon="Search" style="width: 100%" />
2024-06-28 14:38:12 +08:00
<el-tree
style="max-width: 600px; margin-top: 2.2%"
:data="userData"
:props="defaultProps"
node-key="id"
:load="loadNode"
lazy
@node-click="handleNodeClick"
/>
2024-06-26 14:43:58 +08:00
</el-col>
<el-col :span="18" style="padding: 2.2% 1.4%">
<el-container>
<el-header style="display: flex; justify-content: space-between">
<div>
2024-06-26 18:04:40 +08:00
<el-input v-model="input2" size="large" placeholder="根据账户中文名查询" style="width: 220px; margin-right: 10px" />
2024-06-26 14:43:58 +08:00
<el-button type="primary" size="large" :icon="Search" @click="userFromQuery">查询</el-button>
</div>
<el-button type="primary" size="large" :icon="CirclePlusFilled" @click="addUserFromData">新增</el-button>
</el-header>
<el-main>
<el-table
ref="multipleTableRef"
:data="tableData"
style="width: 100%"
:header-cell-style="{ color: '#333333', background: '#EFF0F1' }"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="180" />
<el-table-column property="account" label="账户名称" width="200" />
<el-table-column property="userName" label="账户中文名" width="200" />
<!-- <el-table-column property="address" label="是否禁用" /> -->
<!-- <el-table-column property="updatedTime" label="令牌超时" /> -->
<el-table-column property="address" label="操作">
<template #default="scope">
<span style="color: #0064aa; cursor: pointer" @click="viewUsers(scope)">查看 </span>
<span style="color: #0064aa"> | </span>
<span style="color: #0064aa; cursor: pointer" @click="userFromDelete(scope)"> 删除 </span>
<!-- <span style="color: #0064aa"> | </span>
<span style="color: #0064aa"> 门户 </span>
<span style="color: #0064aa"> | </span>
<span style="color: #0064aa"> 密码</span> -->
</template>
</el-table-column>
</el-table>
</el-main>
2024-06-28 14:38:12 +08:00
<el-footer>
2024-06-26 14:43:58 +08:00
<div style="display: flex; justify-content: right">
<el-pagination
v-model:current-page="currentPage4"
v-model:page-size="pageSize4"
2024-06-26 18:04:40 +08:00
:page-sizes="[10, 15]"
2024-06-26 14:43:58 +08:00
layout="total, sizes, prev, pager, next, jumper"
2024-06-28 14:38:12 +08:00
:total="paginationTotal"
2024-06-26 14:43:58 +08:00
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
/>
</div>
2024-06-28 14:38:12 +08:00
</el-footer>
2024-06-26 14:43:58 +08:00
</el-container>
</el-col>
</el-row>
<!-- 用户新增页面 -->
<el-dialog v-model="visibleParam" title="新增账户" width="500" :before-close="handleCloseParam">
<el-form
2024-06-28 14:38:12 +08:00
ref="formRef"
2024-06-26 14:43:58 +08:00
:inline="true"
2024-06-28 14:38:12 +08:00
label-width="auto"
2024-06-26 14:43:58 +08:00
:model="formUserAdd"
2024-06-28 14:38:12 +08:00
:rules="rules"
2024-06-26 14:43:58 +08:00
style="padding: 24px 40px; font-size: 14px; line-height: 1.5; word-wrap: break-word; font-size: 20px"
>
<el-form-item label="账户名称:" prop="account">
<el-input v-model="formUserAdd.account" placeholder="" clearable />
</el-form-item>
2024-06-28 14:38:12 +08:00
<el-form-item label="账户密码:" prop="password">
2024-06-26 14:43:58 +08:00
<el-input v-model="formUserAdd.password" placeholder="" type="password" show-password clearable />
</el-form-item>
<el-form-item label="职员名称:" prop="userName">
<el-input v-model="formUserAdd.userName" placeholder="" clearable />
</el-form-item>
<el-form-item label="职员邮箱:" prop="email">
<el-input v-model="formUserAdd.email" placeholder="" clearable />
</el-form-item>
2024-06-28 14:38:12 +08:00
<el-form-item label="联系电话:" prop="phone">
2024-06-26 14:43:58 +08:00
<el-input v-model="formUserAdd.phone" placeholder="" clearable />
</el-form-item>
2024-06-26 18:04:40 +08:00
<!-- <el-form-item label="所属机构ID:" prop="orgId">
2024-06-26 14:43:58 +08:00
<el-input v-model="formUserAdd.orgId" placeholder="" clearable />
2024-06-26 18:04:40 +08:00
</el-form-item> -->
2024-06-28 14:38:12 +08:00
<el-form-item label="角色权限:" prop="roleList">
2024-06-26 18:04:40 +08:00
<el-select v-model="formUserAdd.roleList" placeholder="选择菜单权限" multiple style="width: 240px">
2024-06-28 14:38:12 +08:00
<el-option v-for="item in allPermissionData" :key="item.id" :label="item.roleName" :value="item.id" />
2024-06-26 18:04:40 +08:00
</el-select>
2024-06-26 14:43:58 +08:00
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="visibleParam = false"> 取消 </el-button>
<el-button type="primary" @click="addOnSubmit">提交</el-button>
</div>
</template>
</el-dialog>
<!-- 用户修改页面 -->
<el-dialog v-model="visibleParamUpData" title="查看账户" width="500" :before-close="handleCloseParamUp">
<el-form
2024-06-28 14:38:12 +08:00
ref="formRef"
2024-06-26 14:43:58 +08:00
:inline="true"
2024-06-28 14:38:12 +08:00
label-width="auto"
2024-06-26 14:43:58 +08:00
:model="formUserUpData"
2024-06-28 14:38:12 +08:00
:rules="rules"
2024-06-26 14:43:58 +08:00
style="padding: 24px 40px; font-size: 14px; line-height: 1.5; word-wrap: break-word; font-size: 20px"
>
<el-form-item label="账户名称:" prop="account">
<el-input v-model="formUserUpData.account" placeholder="" clearable />
</el-form-item>
2024-06-28 14:38:12 +08:00
<el-form-item label="账户密码:" prop="password">
2024-06-26 14:43:58 +08:00
<el-input v-model="formUserUpData.password" placeholder="" type="password" show-password clearable />
</el-form-item>
<el-form-item label="职员名称:" prop="userName">
<el-input v-model="formUserUpData.userName" placeholder="" clearable />
</el-form-item>
<el-form-item label="职员邮箱:" prop="email">
<el-input v-model="formUserUpData.email" placeholder="" clearable />
</el-form-item>
2024-06-28 14:38:12 +08:00
<el-form-item label="联系电话:" prop="phone">
2024-06-26 14:43:58 +08:00
<el-input v-model="formUserUpData.phone" placeholder="" clearable />
</el-form-item>
2024-06-26 18:04:40 +08:00
<!-- <el-form-item label="所属机构ID:" prop="orgId">
2024-06-26 14:43:58 +08:00
<el-input v-model="formUserUpData.orgId" placeholder="" clearable />
2024-06-26 18:04:40 +08:00
</el-form-item> -->
2024-06-28 14:38:12 +08:00
<el-form-item label="角色权限:" prop="roleList">
2024-06-26 18:04:40 +08:00
<el-select v-model="formUserUpData.roleList" placeholder="选择菜单权限" multiple style="width: 240px">
2024-06-28 14:38:12 +08:00
<el-option v-for="item in allPermissionData" :key="item.id" :label="item.roleName" :value="item.id" />
2024-06-26 18:04:40 +08:00
</el-select>
2024-06-26 14:43:58 +08:00
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="visibleParamUpData = false"> 取消 </el-button>
<el-button type="primary" @click="upDataOnSubmit">提交</el-button>
</div>
</template>
</el-dialog>
<!-- 删除确认弹框 -->
<el-dialog v-model="userDeleteDialog" title="操作提示" width="500" :before-close="handleCloseDelete">
<span>确定是否删除?</span>
<template #footer>
<div class="dialog-footer">
<el-button @click="userDeleteDialog = false">取消</el-button>
<el-button type="primary" @click="userDeleteDialog1"> 确定 </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup lang="ts">
import { ref, reactive, onMounted } from 'vue'
import { Search, CirclePlusFilled } from '@element-plus/icons-vue'
2024-06-26 18:04:40 +08:00
import { userQuery, userUpdate, userDelete, userAdd, userList, allRoleQuery } from '/@/api/backend'
2024-06-28 14:38:12 +08:00
import { ElTable, ElMessage, FormRules } from 'element-plus'
2024-06-26 14:43:58 +08:00
import { useAdminInfo } from '/@/stores/adminInfo'
2024-06-28 14:38:12 +08:00
import type Node from 'element-plus/es/components/tree/src/model/node'
2024-06-26 14:43:58 +08:00
const adminInfo = useAdminInfo()
const input1 = ref('')
const input2 = ref('')
interface Tree {
label: string
children?: Tree[]
id: string
}
// 用户左边树
const treeQuery = reactive({
parentOrgId: adminInfo.orgid,
recursive: true,
})
const userData = ref()
const getTree = () => {
console.log(treeQuery, 'treeQuery')
userList(treeQuery).then((res) => {
console.log(res, '树')
userData.value = res.data
})
}
onMounted(() => {
getTree()
2024-06-26 18:04:40 +08:00
allPermission()
2024-06-26 14:43:58 +08:00
})
const formQuery = reactive({
orgId: '',
recursive: false,
})
const treeId = ref()
const handleNodeClick = (data: Tree) => {
console.log(data.id, 'data')
treeId.value = data.id
formQuery.orgId = data.id
RyUserQuery(formQuery)
}
2024-06-28 14:38:12 +08:00
const loadNode = (node: Node, resolve: (data: Tree[]) => void) => {
if (node.level === 0) {
return resolve([])
}
const treeQuery = reactive({
parentOrgId: node.data.id,
recursive: false,
})
userList(treeQuery)
.then((res) => {
console.log(res, '树')
// userData.value = res.data
return resolve(res.data)
})
.catch((err) => {
console.log(err)
})
}
2024-06-26 14:43:58 +08:00
const defaultProps = {
children: 'children',
label: 'name',
}
// 用户查询
interface userQuery {
// rows?: any[]
}
const tableData = ref()
const RyUserQuery = (data: any) => {
userQuery(data).then((res) => {
if (res.code == 200) {
2024-06-28 14:38:12 +08:00
console.log(res, 'res111')
2024-06-26 14:43:58 +08:00
tableData.value = res.rows
2024-06-28 14:38:12 +08:00
paginationTotal.value = res.total
2024-06-26 14:43:58 +08:00
} else {
ElMessage.error({
message: res.msg,
type: 'error',
})
}
})
}
interface User {
date: string
name: string
address: string
}
const multipleTableRef = ref<InstanceType<typeof ElTable>>()
const multipleSelection = ref<User[]>([])
const handleSelectionChange = (val: User[]) => {
multipleSelection.value = val
}
// 用户搜索
const formQuery1 = reactive({
userName: '',
2024-06-26 18:04:40 +08:00
orgId: '',
2024-06-26 14:43:58 +08:00
})
const userFromQuery = () => {
formQuery1.userName = input2.value
2024-06-26 18:04:40 +08:00
formQuery1.orgId = treeId.value
2024-06-28 14:38:12 +08:00
console.log(formQuery1, 'formQuery1formQuery1formQuery1')
2024-06-26 14:43:58 +08:00
RyUserQuery(formQuery1)
}
// 用户增加
const visibleParam = ref(false)
interface RuleUser {
account: string
password: string
userName: string
email: string
phone: string
orgId: string
2024-06-26 18:04:40 +08:00
roleList: number[]
2024-06-26 14:43:58 +08:00
}
const formUserAdd = reactive({
account: '',
password: '',
userName: '',
email: '',
phone: '',
orgId: '',
2024-06-26 18:04:40 +08:00
roleList: [],
2024-06-26 14:43:58 +08:00
})
2024-06-28 14:38:12 +08:00
const rules = reactive<FormRules<RuleUser>>({
account: [
{
required: true,
message: '用户名不能为空',
trigger: 'blur',
},
],
password: [
{
required: true,
message: '用户密码不能为空',
trigger: 'blur',
},
],
})
2024-06-26 14:43:58 +08:00
const addUserFromData = () => {
visibleParam.value = true
formUserAdd.account = ''
formUserAdd.password = ''
formUserAdd.userName = ''
formUserAdd.email = ''
formUserAdd.phone = ''
formUserAdd.orgId = ''
2024-06-26 18:04:40 +08:00
formUserAdd.roleList = []
2024-06-26 14:43:58 +08:00
}
const handleCloseParam = (data: any) => {
visibleParam.value = false
console.log(data)
}
2024-06-28 14:38:12 +08:00
const formRef = ref()
2024-06-26 14:43:58 +08:00
const addOnSubmit = () => {
2024-06-28 14:38:12 +08:00
formRef.value.validate((valid: any) => {
if (valid) {
visibleParam.value = false
formUserAdd.orgId = treeId.value
console.log(formUserAdd, treeId.value, 'formUserAdd')
userAdd(formUserAdd).then((res) => {
if (res.code == 200) {
console.log(res, '新增')
formQuery.orgId = treeId.value
RyUserQuery(formQuery)
} else {
ElMessage.error({
message: res.msg,
type: 'error',
})
}
2024-06-26 18:04:40 +08:00
})
}
2024-06-26 14:43:58 +08:00
})
}
// 页面修改
const visibleParamUpData = ref(false)
2024-06-28 14:38:12 +08:00
const formUserUpData = reactive({ id: '', account: '', password: '', userName: '', email: '', phone: '', orgId: '', roleList: [] })
2024-06-26 14:43:58 +08:00
const viewUsers = (data: any) => {
2024-06-28 14:38:12 +08:00
console.log(data, '页面修改数据')
2024-06-26 14:43:58 +08:00
visibleParamUpData.value = true
formUserUpData.id = data.row.id
formUserUpData.account = data.row.account
formUserUpData.password = data.row.password
formUserUpData.userName = data.row.userName
formUserUpData.email = data.row.email
formUserUpData.phone = data.row.phone
formUserUpData.orgId = data.row.orgId
2024-06-28 14:38:12 +08:00
formUserUpData.roleList = data.row.roleList
2024-06-26 14:43:58 +08:00
}
const upDataOnSubmit = () => {
2024-06-28 14:38:12 +08:00
formRef.value.validate((valid: any) => {
if (valid) {
console.log(formUserUpData, formUserUpData.roleList, 'formUserUpData')
userUpdate(formUserUpData).then((res) => {
if (res.code == 200) {
console.log(res, '修改成功')
RyUserQuery(formQuery)
} else {
ElMessage.error({
message: res.msg,
type: 'error',
})
}
2024-06-26 18:04:40 +08:00
})
2024-06-28 14:38:12 +08:00
visibleParamUpData.value = false
2024-06-26 18:04:40 +08:00
}
2024-06-26 14:43:58 +08:00
})
}
const handleCloseParamUp = () => {
visibleParamUpData.value = false
}
// 页面删除
const userListDelete = reactive({
id: '',
})
const userFromDelete = (data: any) => {
userDeleteDialog.value = true
userListDelete.id = data.row.id
2024-06-28 14:38:12 +08:00
}
const userDeleteDialog = ref(false)
const handleCloseDelete = () => {
userDeleteDialog.value = false
}
const userDeleteDialog1 = () => {
userDeleteDialog.value = false
2024-06-26 14:43:58 +08:00
userDelete(userListDelete).then((res) => {
if (res.code == 200) {
setTimeout(() => {
ElMessage({
message: res.msg,
type: 'success',
})
}, 1000)
2024-06-28 14:38:12 +08:00
formQuery.orgId = treeId.value
console.log(formQuery, 'formQuery')
RyUserQuery(formQuery)
2024-06-26 14:43:58 +08:00
} else {
ElMessage.error({
message: res.msg,
type: 'error',
})
}
})
}
2024-06-26 18:04:40 +08:00
// 用户权限
const allPermissionData = ref()
// 用户权限
const roleName = {
roleName: '',
}
const allPermission = () => {
allRoleQuery(roleName).then((res) => {
console.log(res.rows, 'resdata')
allPermissionData.value = res.rows
console.log(allPermissionData.value, '89898989111')
})
}
2024-06-26 14:43:58 +08:00
// 分页
2024-06-28 14:38:12 +08:00
const currentPage4 = ref(0)
const pageSize4 = ref(10)
const paginationTotal = ref(0)
2024-06-26 14:43:58 +08:00
const handleSizeChange = (val: number) => {
console.log(`${val} items per page`)
}
const handleCurrentChange = (val: number) => {
console.log(`current page: ${val}`)
}
</script>
<style scoped lang="scss">
.el-row {
margin-bottom: 20px;
width: 99%;
height: 823px;
}
.el-row:last-child {
margin-bottom: 0;
}
.el-col {
// border-radius: 4px;
background-color: #fff;
}
</style>