no message

This commit is contained in:
kuaifan 2025-03-14 22:41:26 +08:00
parent 957201804c
commit 79ca1aea02
4 changed files with 51 additions and 34 deletions

View File

@ -191,15 +191,15 @@
<FormItem prop="parent_id" :label="$L('上级部门')"> <FormItem prop="parent_id" :label="$L('上级部门')">
<Select v-model="departmentData.parent_id" :placeholder="$L('请选择上级部门')"> <Select v-model="departmentData.parent_id" :placeholder="$L('请选择上级部门')">
<Option :value="0"> <Option :value="0">
<div class="team-department-level-name level-1">{{ $L('默认部门') }}</div> <div class="department-level-name level-1">{{ $L('默认部门') }}</div>
</Option> </Option>
<Option <Option
v-for="(item, index) in departmentList" v-for="(item, index) in departmentList"
:disabled="item.level > 3 || item.id == departmentData.id || item.parent_id == departmentData.id" :disabled="item.level > 3 || item.id == departmentData.id || (item.parent_id == departmentData.id && departmentData.id > 0)"
:value="item.id" :value="item.id"
:key="index" :key="index"
:label="item.chains.join(' - ')"> :label="item.chains.join(' - ')">
<div :class="`team-department-level-name level-${item.level}`">{{ item.name }}</div> <div :class="`department-level-name level-${item.level}`">{{ item.name }}</div>
</Option> </Option>
</Select> </Select>
</FormItem> </FormItem>
@ -311,7 +311,7 @@
:value="item.id" :value="item.id"
:key="index" :key="index"
:label="item.chains.join(' - ')"> :label="item.chains.join(' - ')">
<div :class="`team-department-level-name level-${item.level - 1}`">{{ item.name }}</div> <div :class="`department-level-name level-${item.level - 1}`">{{ item.name }}</div>
</Option> </Option>
</Select> </Select>
</FormItem> </FormItem>
@ -1238,28 +1238,13 @@ export default {
getDepartmentLists() { getDepartmentLists() {
this.departmentLoading++; this.departmentLoading++;
this.$store.dispatch("call", { this.$store.dispatch("getDepartmentList").then(list => {
url: 'users/department/list', this.departmentList = list;
}).then(({data}) => {
this.departmentList = []
this.generateDepartmentList(data, 0, 1, [])
}).finally(_ => { }).finally(_ => {
this.departmentLoading--; this.departmentLoading--;
}) })
}, },
generateDepartmentList(data, parent_id, level, chains = []) {
data.some(item => {
if (item.parent_id == parent_id) {
this.departmentList.push(Object.assign(item, {
chains: chains.concat([item.name]),
level: level + 1
}))
this.generateDepartmentList(data, item.id, level + 1, chains.concat([item.name]))
}
})
},
onMultipleMaxBefore(num) { onMultipleMaxBefore(num) {
$A.messageError(`最多选择${num}个部门`) $A.messageError(`最多选择${num}个部门`)
return false return false

View File

@ -631,7 +631,6 @@ export default {
}, typeof timeout === "number" ? timeout : 1000) }, typeof timeout === "number" ? timeout : 1000)
}, },
/** /**
* 获取审批待办未读数量 * 获取审批待办未读数量
* @param state * @param state
@ -866,6 +865,38 @@ export default {
}); });
}, },
/**
* 获取部门列表
* @param dispatch
* @returns {Promise<unknown>}
*/
getDepartmentList({dispatch}) {
return new Promise((resolve, reject) => {
const generateList = (data, parent_id = 0, level = 0, chains = []) => {
let result = [];
data.some(item => {
if (item.parent_id == parent_id) {
const newItem = Object.assign({}, item, {
chains: chains.concat([item.name]),
level: level + 1
});
result.push(newItem);
// 递归获取子部门
const children = generateList(data, item.id, level + 1, chains.concat([item.name]));
result = result.concat(children);
}
});
return result;
};
dispatch("call", {
url: 'users/department/list',
}).then(({data}) => {
resolve(generateList(data, 0, 1));
}).catch(reject);
});
},
/** /**
* 登出打开登录页面 * 登出打开登录页面
* @param state * @param state

View File

@ -942,3 +942,16 @@ body.window-portrait {
transform: translateY(-50%); transform: translateY(-50%);
} }
} }
/*部门层级*/
.department-level-name {
&.level-2 {
margin-left: 18px;
}
&.level-3 {
margin-left: 36px;
}
&.level-4 {
margin-left: 54px;
}
}

View File

@ -157,18 +157,6 @@
} }
} }
.team-department-level-name {
&.level-2 {
margin-left: 18px;
}
&.level-3 {
margin-left: 36px;
}
&.level-4 {
margin-left: 54px;
}
}
.team-department-add-dialog-group { .team-department-add-dialog-group {
display: flex; display: flex;
align-items: center; align-items: center;