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/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue | 167 +++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 106 insertions(+), 61 deletions(-) diff --git a/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue b/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue index 6117899..abb24d7 100644 --- a/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue +++ b/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue @@ -19,49 +19,71 @@ <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> <!-- 表格数据 --> - <el-table v-loading="loading" :data="dataList" border> - <el-table-column label="序号" type="index" align="center" width="80" /> - <el-table-column label="部门名称" prop="deptName" align="center" /> - <el-table-column label="负责人" prop="leaderName" align="center" /> - <el-table-column label="主要负责部门" prop="parentName" align="center"> - <template #default="scope"> - <span> - {{scope.row.sysDeptManageVoList?.map(i=>i.subDeptName).join('、')}} - </span> - </template> - </el-table-column> - <el-table-column label="部门涉及条款" prop="userTypeName" align="center" width="150"> + <el-table v-loading="loading" :data="dataList" border row-key="deptId" :default-expand-all="true" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"> + <el-table-column label="组织机构名称" prop="deptName" align="center" width="220"/> + <el-table-column label="排序" prop="orderNum" align="center" width="60"/> + <el-table-column label="负责人" prop="leaderName" align="center" width="80"/> +<!-- <el-table-column label="主要负责部门" prop="parentName" align="center">--> +<!-- <template #default="scope">--> +<!-- <span>--> +<!-- {{scope.row.sysDeptManageVoList?.map(i=>i.subDeptName).join('、')}}--> +<!-- </span>--> +<!-- </template>--> +<!-- </el-table-column>--> + <el-table-column label="部门涉及条款" prop="userTypeName" align="center"> <template #default="scope"> {{sortVersionNumbers(scope.row.caluseVO1List?.map(i=>i.clauseNum)).join('、')}} </template> </el-table-column> - <el-table-column label="部门职责表" prop="userTypeName" align="center" width="150"> + <el-table-column label="部门职责表" prop="userTypeName" align="center" width="140"> <template #default="scope"> <el-button link type="primary" @click="openDutyDialog(scope.row)">编辑</el-button> <el-button link type="danger" @click="download(scope.row)">导出</el-button> </template> </el-table-column> - <el-table-column label="操作" align="center" class-name="small-padding fixed-width" > + <el-table-column label="操作" align="center" width="160"> <template #default="scope"> <el-button link type="primary" @click="openDialog('edit',scope.row)">编辑</el-button> + <el-button link type="primary" @click="openDialog('add',scope.row)">新增</el-button> <el-button link type="danger" @click="handleDelete(scope.row)">删除</el-button> </template> </el-table-column> </el-table> - <pagination - v-show="total > 0" - :total="total" - v-model:page="queryParams.pageNum" - v-model:limit="queryParams.pageSize" - @pagination="getList" - /> +<!-- <pagination--> +<!-- v-show="total > 0"--> +<!-- :total="total"--> +<!-- v-model:page="queryParams.pageNum"--> +<!-- v-model:limit="queryParams.pageSize"--> +<!-- @pagination="getList"--> +<!-- />--> <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> @@ -87,27 +109,31 @@ const dutyDialogRef = ref() const data = reactive({ queryParams: { - pageNum: 1, - pageSize: 10, companyId: null }, total: 0, dataList: [], + deptList: { + id: 0, + deptName: "", + children:[] + }, companyList: [], + companyName: '', isAdmin: false, - firstFive: [ - {clauseNum: '5.3',content: '组织的岗位、职责和权限'}, - {clauseNum: '4.1',content: '理解组织及其环境'}, - {clauseNum: '4.2',content: '理解相关方的需求和期望'}, - {clauseNum: '6.1',content: '应对风险和机遇的措施'}, - {clauseNum: '6.2',content: '质量目标及其实现的策划'} - ], - lastTwo: [ - {clauseNum: '9.1',content: '监视、测量、分析和评价'}, - {clauseNum: '10',content: '改进'} - ] + 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')){ @@ -124,12 +150,38 @@ }) +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 getDepartByPage(data.queryParams) + const res = await getDepart(data.queryParams) if(res.code == 200){ - data.dataList = res.data.list || [] - data.total = res.data.total + data.dataList = proxy.handleTree(res.data, "deptId") + data.deptList.children = data.dataList + // data.total = res.data.total }else{ ElMessage.warning(res.message) } @@ -227,29 +279,16 @@ if (res.code == 200) { if(res.data){ tableData = res.data - if(res.data.sysDeptResponsibilitys && Array.isArray(res.data.sysDeptResponsibilitys) && res.data.sysDeptResponsibilitys.find(i=>i.clauseNum == '5.3')){ - tableData.tableData = sortResponsibilities(res.data.sysDeptResponsibilitys.map(i=>{ - return { - ...i, - leader: i.leader || '', - evidenceMaterials: i.evidenceMaterials || '', - managementDocuments: i.managementDocuments || '', - technicalDocuments: i.technicalDocuments || '', - existingRecords: i.existingRecords || '', - } - })) - }else{ - tableData.tableData = [...data.firstFive,...res.data.sysDeptResponsibilitys,...data.lastTwo].map(i=>{ - return { - ...i, - leader: i.leader || '', - evidenceMaterials: i.evidenceMaterials || '', - managementDocuments: i.managementDocuments || '', - technicalDocuments: i.technicalDocuments || '', - existingRecords: i.existingRecords || '', - } - }) - } + tableData.tableData = res.data.sysDeptResponsibilitys.map(i=>{ + return { + ...i, + leader: i.leader || '', + evidenceMaterials: i.evidenceMaterials || '', + managementDocuments: i.managementDocuments || '', + technicalDocuments: i.technicalDocuments || '', + existingRecords: i.existingRecords || '', + } + }) return tableData }else{ ElMessage.warning('暂无部门信息') @@ -312,3 +351,9 @@ } </script> +<style scoped lang="scss"> +.deptTreeBox{ + width: 100%; + height: 800px; +} +</style> -- Gitblit v1.9.2