From dd2bdb18a8394d2f2a13534a98bcadb8020e3668 Mon Sep 17 00:00:00 2001 From: 祖安之光 <11848914+light-of-zuan@user.noreply.gitee.com> Date: 星期三, 23 七月 2025 16:09:33 +0800 Subject: [PATCH] 修改新增 --- src/store/modules/user.js | 2 + src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue | 75 ++++++++++++++++++++++++++++++++++++- 2 files changed, 74 insertions(+), 3 deletions(-) diff --git a/src/store/modules/user.js b/src/store/modules/user.js index c0b4cc6..1a4d328 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -12,6 +12,7 @@ id: '', name: '', companyId: null, + companyName: '', avatar: '', roles: [], permissions: [] @@ -49,6 +50,7 @@ this.id = user.userId this.name = user.userName this.companyId = user.companyId + this.companyName = user.companyName this.avatar = avatar Cookies.set('userInfo',JSON.stringify(user)) resolve(res) diff --git a/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue b/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue index 3d8929b..abb24d7 100644 --- a/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue +++ b/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue @@ -19,6 +19,7 @@ <el-button v-if="isAdmin" type="primary" @click="getList">查询</el-button> <el-button v-if="isAdmin" type="primary" plain @click="reset">重置</el-button> <el-button type="primary" @click="initDistribute">生成职能分配表</el-button> + <el-button type="primary" @click="generateMap">生成组织机构图</el-button> </el-form-item> </el-form> </div> @@ -63,6 +64,26 @@ <!-- />--> <depart-dialog ref="dialogRef" @getList=getList></depart-dialog> <duty-dialog ref="dutyDialogRef" @getList=getList></duty-dialog> + <el-dialog + v-model="dialogVisible" + title="组织机构图" + width="75%" + center + :before-close="handleClose" + :close-on-press-escape="false" + :close-on-click-modal="false" + > + <div class="deptTreeBox"> + <vue3-tree-org + :data="deptList" + :horizontal="false" + :props="treeProps" + :toolBar="tools" + :label-style="labelStyle" + center + /> + </div> + </el-dialog> </div> </template> @@ -92,10 +113,27 @@ }, total: 0, dataList: [], + deptList: { + id: 0, + deptName: "", + children:[] + }, companyList: [], - isAdmin: false + companyName: '', + isAdmin: false, + dialogVisible: false, + treeProps: { + label: 'deptName' + }, + tools: { + scale: true, restore: true, expand: false, zoom: false, fullscreen: false + }, + labelStyle: { + border: '1px solid #ccc', + background: 'rgba(0,0,0,0)' + } }); -const { queryParams, total, dataList, companyList, isAdmin } = toRefs(data); +const { queryParams, total, dataList, companyList, isAdmin, dialogVisible, deptList, treeProps, tools, labelStyle } = toRefs(data); const userInfo = ref() onMounted(async ()=>{ if(userStore.roles.includes('admin')){ @@ -112,12 +150,37 @@ }) +const generateMap = async ()=>{ + if(!data.queryParams.companyId){ + ElMessage.warning('请先选择企业') + }else{ + data.deptList.deptName = data.companyList?.find(i=>i.id == data.queryParams.companyId)?.name || userStore.companyName + const res = await getDepart(data.queryParams) + if(res.code == 200){ + const list = proxy.handleTree(res.data, "deptId") + data.deptList.children = list + }else{ + ElMessage.warning(res.message) + } + data.dialogVisible = true + } +} + +const handleClose = ()=>{ + data.deptList = { + id: 0, + deptName: "", + children:[] + } + data.dialogVisible = false +} + const getList = async () => { loading.value = true const res = await getDepart(data.queryParams) if(res.code == 200){ data.dataList = proxy.handleTree(res.data, "deptId") - console.log(data.dataList,'list') + data.deptList.children = data.dataList // data.total = res.data.total }else{ ElMessage.warning(res.message) @@ -288,3 +351,9 @@ } </script> +<style scoped lang="scss"> +.deptTreeBox{ + width: 100%; + height: 800px; +} +</style> -- Gitblit v1.9.2