部门管理新增分包单位选项
This commit is contained in:
@ -47,6 +47,11 @@
|
||||
>
|
||||
<el-table-column prop="deptName" label="部门名称" width="260"></el-table-column>
|
||||
<el-table-column prop="deptCategory" align="center" label="类别编码" width="200"></el-table-column>
|
||||
<el-table-column prop="deptType" align="center" label="部门类型" width="200">
|
||||
<template #default="scope">
|
||||
<dict-tag :options="sys_dept_type" :value="scope.row.deptType" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="orderNum" align="center" label="排序" width="200"></el-table-column>
|
||||
<el-table-column prop="status" align="center" label="状态" width="100">
|
||||
<template #default="scope">
|
||||
@ -63,7 +68,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" v-if="scope.row.isSubset != '0'">
|
||||
<el-tooltip content="新增" placement="top" v-if="scope.row.deptType != '2' && scope.row.deptType != '4'">
|
||||
<el-button v-hasPermi="['system:dept:add']" link type="primary" icon="Plus" @click="handleAdd(scope.row)" />
|
||||
</el-tooltip>
|
||||
<el-tooltip content="删除" placement="top">
|
||||
@ -129,20 +134,26 @@
|
||||
</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 label="部门类型">
|
||||
<el-select v-model="form.deptType" placeholder="请选择部门类型" @change="changeProject">
|
||||
<el-option v-for="dict in sys_dept_type" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
<el-col :span="12" v-if="form.isSubset == '0'">
|
||||
<el-col :span="12" v-if="form.deptType == '3'">
|
||||
<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-col :span="12" v-if="form.deptType == '4'">
|
||||
<el-form-item label="分包单位" prop="contractorId">
|
||||
<el-select v-model="form.contractorId" placeholder="请选择分包单位">
|
||||
<el-option v-for="item in contractorList" :key="item.id" :label="item.name" :value="item.id" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@ -156,7 +167,7 @@
|
||||
</template>
|
||||
|
||||
<script setup name="Dept" lang="ts">
|
||||
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild, getDeptList } from '@/api/system/dept';
|
||||
import { listDept, getDept, delDept, addDept, updateDept, listDeptExcludeChild, getDeptList, optionProjectSelect } 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';
|
||||
@ -168,7 +179,7 @@ interface DeptOptionsType {
|
||||
}
|
||||
|
||||
const { proxy } = getCurrentInstance() as ComponentInternalInstance;
|
||||
const { sys_normal_disable } = toRefs<any>(proxy?.useDict('sys_normal_disable'));
|
||||
const { sys_normal_disable, sys_dept_type } = toRefs<any>(proxy?.useDict('sys_normal_disable', 'sys_dept_type'));
|
||||
|
||||
const deptList = ref<DeptVO[]>([]);
|
||||
const loading = ref(true);
|
||||
@ -182,6 +193,8 @@ const dialog = reactive<DialogOption>({
|
||||
title: ''
|
||||
});
|
||||
const projectList = ref([]);
|
||||
const contractorList = ref([]);
|
||||
|
||||
const deptTableRef = ref<ElTableInstance>();
|
||||
const queryFormRef = ref<ElFormInstance>();
|
||||
const deptFormRef = ref<ElFormInstance>();
|
||||
@ -196,8 +209,10 @@ const initFormData: DeptForm = {
|
||||
phone: undefined,
|
||||
email: undefined,
|
||||
isShow: undefined,
|
||||
isSubset: undefined,
|
||||
deptType: undefined,
|
||||
projectId: undefined,
|
||||
contractorId: undefined,
|
||||
rowProjectId: undefined,
|
||||
status: '0'
|
||||
};
|
||||
const initData: PageData<DeptForm, DeptQuery> = {
|
||||
@ -209,7 +224,7 @@ const initData: PageData<DeptForm, DeptQuery> = {
|
||||
deptCategory: undefined,
|
||||
status: undefined,
|
||||
isShow: undefined,
|
||||
isSubset: undefined
|
||||
deptType: undefined
|
||||
},
|
||||
rules: {
|
||||
parentId: [{ required: true, message: '上级部门不能为空', trigger: 'blur' }],
|
||||
@ -251,6 +266,7 @@ const cancel = () => {
|
||||
const reset = () => {
|
||||
form.value = { ...initFormData };
|
||||
projectList.value = [];
|
||||
contractorList.value = [];
|
||||
deptFormRef.value?.resetFields();
|
||||
};
|
||||
|
||||
@ -265,13 +281,6 @@ const resetQuery = () => {
|
||||
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;
|
||||
@ -288,6 +297,7 @@ const toggleExpandAll = (data: DeptVO[], status: boolean) => {
|
||||
/** 新增按钮操作 */
|
||||
const handleAdd = async (row?: DeptVO) => {
|
||||
reset();
|
||||
form.value.rowProjectId = row?.projectId;
|
||||
const res = await listDept();
|
||||
const data = proxy?.handleTree<DeptOptionsType>(res.data, 'deptId');
|
||||
if (data) {
|
||||
@ -303,6 +313,7 @@ const handleAdd = async (row?: DeptVO) => {
|
||||
/** 修改按钮操作 */
|
||||
const handleUpdate = async (row: DeptVO) => {
|
||||
reset();
|
||||
form.value.rowProjectId = row?.projectId;
|
||||
//查询当前部门所有用户
|
||||
getDeptAllUser(row.deptId);
|
||||
const res = await getDept(row.deptId);
|
||||
@ -324,6 +335,17 @@ const handleUpdate = async (row: DeptVO) => {
|
||||
dialog.visible = true;
|
||||
dialog.title = '修改部门';
|
||||
};
|
||||
|
||||
const changeProject = async (val: any) => {
|
||||
if (val == '3' && (!projectList.value || !projectList.value.length)) {
|
||||
const res = await getDeptList();
|
||||
projectList.value = res.data;
|
||||
} else if (val == '4' && (!contractorList.value || !contractorList.value.length)) {
|
||||
const res = await optionProjectSelect(form.value.rowProjectId);
|
||||
contractorList.value = res;
|
||||
}
|
||||
};
|
||||
|
||||
/** 提交按钮 */
|
||||
const submitForm = () => {
|
||||
deptFormRef.value?.validate(async (valid: boolean) => {
|
||||
|
Reference in New Issue
Block a user