From 4fe6c5ac4bc2b7fa9c9c71bb52d9df3e8b13bd7c Mon Sep 17 00:00:00 2001
From: zhouwx <1175765986@qq.com>
Date: 星期二, 15 七月 2025 10:11:45 +0800
Subject: [PATCH] 修改

---
 src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue |  127 +++++++++++++++++++++--------------------
 1 files changed, 65 insertions(+), 62 deletions(-)

diff --git a/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue b/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue
index 955110e..76cb20a 100644
--- a/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue
+++ b/src/views/build/conpanyFunctionConsult/orgStructure/departManage/index.vue
@@ -18,46 +18,49 @@
         <el-form-item >
           <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="initDistribute">生成职能分配表</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"/>
-      <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">
-          <div v-if="scope.row.caluseVO1List">
-            <div v-for="(item,index) in scope.row.caluseVO1List" :key="index">
-              {{ item.clauseNum + ' ' + item.content}}
-            </div>
-          </div>
+              {{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>
   </div>
@@ -66,7 +69,14 @@
 <script setup>
 import {getCurrentInstance, onMounted, onUnmounted, reactive, ref, toRefs} from "vue";
 import {ElMessage, ElMessageBox} from "element-plus";
-import {getDepart, delDepart, getCompany, getDeptInfo, initDistribution} from "@/api/orgStructure/depart";
+import {
+  getDepart,
+  delDepart,
+  getCompany,
+  getDeptInfo,
+  initDistribution,
+  getDepartByPage
+} from "@/api/orgStructure/depart";
 import departDialog from './components/departDialog.vue'
 import dutyDialog from './components/dutyDialog.vue'
 import {generateWordDocument} from "./components/exportWord.js";
@@ -78,25 +88,12 @@
 const dutyDialogRef = ref()
 const data = reactive({
   queryParams: {
-    pageNum: 1,
-    pageSize: 10,
     companyId: null
   },
   total: 0,
   dataList: [],
   companyList: [],
-  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: '改进'}
-  ]
+  isAdmin: false
 });
 const { queryParams, total, dataList, companyList, isAdmin } = toRefs(data);
 const userInfo = ref()
@@ -119,8 +116,9 @@
   loading.value = true
   const res = await getDepart(data.queryParams)
   if(res.code == 200){
-    data.dataList = res.data || []
-    data.total = res.data.total
+    data.dataList = proxy.handleTree(res.data, "deptId")
+    console.log(data.dataList,'list')
+    // data.total = res.data.total
   }else{
     ElMessage.warning(res.message)
   }
@@ -128,6 +126,9 @@
 }
 
 const initDistribute = async ()=>{
+  if(!data.queryParams.companyId){
+    ElMessage.warning('请先选择要生成的企业')
+  }
   ElMessageBox.confirm(
       '重新生成将重置原有分配信息,是否继续?',
       '提示',
@@ -154,14 +155,13 @@
   const res = await getCompany(queryParams)
   if (res.code == 200) {
     data.companyList = res.data.list?res.data.list:[]
-    data.queryParams.companyId = data.companyList[0].id
   } else {
     ElMessage.warning(res.message)
   }
 }
 
 const openDialog = (type, value) => {
-  dialogRef.value.openDialog(type, value, data.queryParams.companyId);
+  dialogRef.value.openDialog(type, value, data.queryParams.companyId, data.isAdmin, data.companyList );
 }
 const openDutyDialog = (value) =>{
   dutyDialogRef.value.openDialog(value);
@@ -200,7 +200,6 @@
 const download = async (val) => {
   const templatePath = '/dutyFile.docx'
   const data = await getDeptDetail(val.deptId)
-  console.log(data)
   try {
     generateWordDocument(templatePath, data, `${data.deptName}职责表.docx`);
   } catch (error){
@@ -217,27 +216,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,
-            evidenceMaterials: i.evidenceMaterials || '',
-            managementDocuments: i.managementDocuments || '',
-            technicalDocuments: i.technicalDocuments || '',
-            existingRecords: i.existingRecords || '',
-          }
-        }))
-      }else{
-        tableData.tableData = [...data.firstFive,...res.data.sysDeptResponsibilitys.map(i=>{
-          return {
-            ...i,
-            evidenceMaterials: i.evidenceMaterials || '',
-            managementDocuments: i.managementDocuments || '',
-            technicalDocuments: i.technicalDocuments || '',
-            existingRecords: i.existingRecords || '',
-          }
-        }),...data.lastTwo]
-      }
+      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('暂无部门信息')
@@ -246,7 +234,22 @@
     ElMessage.warning(res.message)
   }
 }
+const sortVersionNumbers = (versions) => {
+  return versions.sort((a, b) => {
+    const partsA = a.split('.').map(Number);
+    const partsB = b.split('.').map(Number);
+    const maxLength = Math.max(partsA.length, partsB.length)
+    for (let i = 0; i < maxLength; i++) {
+      const numA = partsA[i] || 0
+      const numB = partsB[i] || 0
 
+      if (numA !== numB) {
+        return numA - numB
+      }
+    }
+    return 0
+  });
+}
 const sortResponsibilities = (list) => {
   // 提取firstFive和lastTwo的clauseNum作为排序依据
   const firstFiveClauses = data.firstFive.map(item => item.clauseNum)

--
Gitblit v1.9.2