系统管理/部门管理角色管理用户管理

This commit is contained in:
Teo
2025-07-11 19:16:57 +08:00
parent 4a0962b117
commit 748464b44a
13 changed files with 243 additions and 81 deletions

View File

@ -63,7 +63,7 @@
<el-tooltip content="修改" placement="top">
<el-button v-hasPermi="['system:dept:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" />
</el-tooltip>
<el-tooltip content="新增" placement="top">
<el-tooltip content="新增" placement="top" v-if="scope.row.isSubset != '0'">
<el-button v-hasPermi="['system:dept:add']" link type="primary" icon="Plus" @click="handleAdd(scope.row)" />
</el-tooltip>
<el-tooltip content="删除" placement="top">
@ -75,7 +75,7 @@
</el-card>
<el-dialog v-model="dialog.visible" :title="dialog.title" destroy-on-close append-to-body width="600px">
<el-form ref="deptFormRef" :model="form" :rules="rules" label-width="80px">
<el-form ref="deptFormRef" :model="form" :rules="rules" label-width="110px">
<el-row>
<el-col v-if="form.parentId !== 0" :span="24">
<el-form-item label="上级部门" prop="parentId">
@ -128,6 +128,21 @@
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否拥有子级">
<el-radio-group v-model="form.isSubset" @change="handleChangeisSubset">
<el-radio value="1"></el-radio>
<el-radio value="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12" v-if="form.isSubset == '0'">
<el-form-item label="所属项目" prop="projectId">
<el-select v-model="form.projectId" placeholder="请选择所属项目">
<el-option v-for="item in projectList" :key="item.id" :label="item.projectName" :value="item.id" />
</el-select>
</el-form-item>
</el-col>
</el-row>
</el-form>
<template #footer>
@ -141,7 +156,7 @@
</template>
<script setup name="Dept" lang="ts">
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild } from '@/api/system/dept';
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild, getDeptList } from '@/api/system/dept';
import { DeptForm, DeptQuery, DeptVO } from '@/api/system/dept/types';
import { UserVO } from '@/api/system/user/types';
import { listUserByDeptId } from '@/api/system/user';
@ -166,7 +181,7 @@ const dialog = reactive<DialogOption>({
visible: false,
title: ''
});
const projectList = ref([]);
const deptTableRef = ref<ElTableInstance>();
const queryFormRef = ref<ElFormInstance>();
const deptFormRef = ref<ElFormInstance>();
@ -180,6 +195,9 @@ const initFormData: DeptForm = {
leader: undefined,
phone: undefined,
email: undefined,
isShow: undefined,
isSubset: undefined,
projectId: undefined,
status: '0'
};
const initData: PageData<DeptForm, DeptQuery> = {
@ -190,7 +208,8 @@ const initData: PageData<DeptForm, DeptQuery> = {
deptName: undefined,
deptCategory: undefined,
status: undefined,
isShow:1
isShow: undefined,
isSubset: undefined
},
rules: {
parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }],
@ -231,6 +250,7 @@ const cancel = () => {
/** 表单重置 */
const reset = () => {
form.value = { ...initFormData };
projectList.value = [];
deptFormRef.value?.resetFields();
};
@ -241,9 +261,17 @@ const handleQuery = () => {
/** 重置按钮操作 */
const resetQuery = () => {
queryFormRef.value?.resetFields();
projectList.value = [];
handleQuery();
};
const handleChangeisSubset = async (value: string) => {
if (value == '0' && (!projectList.value || !projectList.value.length)) {
const res = await getDeptList();
projectList.value = res.data;
}
};
/** 展开/折叠操作 */
const handleToggleExpandAll = () => {
isExpandAll.value = !isExpandAll.value;
@ -279,6 +307,7 @@ const handleUpdate = async (row: DeptVO) => {
getDeptAllUser(row.deptId);
const res = await getDept(row.deptId);
form.value = res.data;
projectList.value = res.data.projectList;
const response = await listDeptExcludeChild(row.deptId);
const data = proxy?.handleTree<DeptOptionsType>(response.data, 'deptId');
if (data) {