From 2d3530a7c11557a40807ad7c0b9e302ce6ce3a9f Mon Sep 17 00:00:00 2001
From: hsy <1029150275@qq.com>
Date: 星期五, 28 八月 2026 10:16:32 +0800
Subject: [PATCH] feat: 综合业务模块页面重构与交互完善

---
 src/views/projectManagement/Management/index.vue |   36 ++++++++++++++++++++++++++++++------
 1 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/src/views/projectManagement/Management/index.vue b/src/views/projectManagement/Management/index.vue
index 7547209..67e51c6 100644
--- a/src/views/projectManagement/Management/index.vue
+++ b/src/views/projectManagement/Management/index.vue
@@ -37,7 +37,7 @@
         </el-dropdown> -->
         <el-button :loading="submitLoading" @click="handleSubmit">鎻愪氦</el-button>
         <el-button :loading="auditLoading" @click="handleAudit">瀹℃牳</el-button>
-        <el-button :loading="reverseAuditLoading" @click="handleReverseAudit">鍙嶅鏍�</el-button>
+        <!-- <el-button :loading="reverseAuditLoading" @click="handleReverseAudit">鍙嶅鏍�</el-button> -->
         <el-button :loading="deleteLoading" @click="handleDelete">鍒犻櫎</el-button>
       </div>
 
@@ -56,15 +56,21 @@
         <template #projectStage="{ row }">
           <dict-tag :options="plan_status" :value="row.projectStage" />
         </template>
+        <template #salesContractCount="{ row }">
+          <el-button link type="primary" @click="handleOpenContractDialog(row)">{{ row.salesContractCount || 0 }}</el-button>
+        </template>
         <template #action="{ row }">
           <el-button link type="primary" @click="handleEdit(row)">缂栬緫</el-button>
           <el-button link type="primary" :loading="progressBtnLoadingId===row.id" @click="handleProgressReport(row)">杩涘害姹囨姤</el-button>
+          <el-button link type="primary" @click="handleArchive(row)">鏂囨。褰掓。</el-button>
           <el-button link type="primary" @click="handleDetail(row)">璇︽儏</el-button>
         </template>
       </PIMTable>
     </div>
 
     <FormDia ref="formDiaRef" @completed="getList" />
+    <ArchiveDialog v-model="archiveVisible" :project-id="archiveProjectId" />
+    <ContractListDialog v-model="contractVisible" :project-id="contractProjectId" />
     <ProgressReportDialog
       v-model="progressReportVisible"
       :project-id="progressProjectId"
@@ -82,6 +88,8 @@
 import SearchPanel from '@/components/SearchPanel/index.vue'
 import PIMTable from '@/components/PIMTable/PIMTable.vue'
 import FormDia from './components/formDia.vue'
+import ArchiveDialog from './components/ArchiveDialog.vue'
+import ContractListDialog from './components/ContractListDialog.vue'
 import ProgressReportDialog from '@/components/ProjectManagement/ProgressReportDialog.vue'
 import {
   listProject,
@@ -111,6 +119,10 @@
 const progressPlanNodes = ref([])
 const progressDefaultPlanNodeId = ref(undefined)
 const progressBtnLoadingId = ref(null)
+const archiveVisible = ref(false)
+const archiveProjectId = ref(null)
+const contractVisible = ref(false)
+const contractProjectId = ref(null)
 const submitLoading = ref(false)
 const auditLoading = ref(false)
 const reverseAuditLoading = ref(false)
@@ -154,6 +166,7 @@
   { label: '绔嬮」鏃ユ湡', prop: 'setupDate', align: 'center', width: '120' },
   { label: '椤圭洰鏉ユ簮', prop: 'projectSource', align: 'center' },
   { label: '椤圭洰鍒嗙被', prop: 'projectClassification', align: 'center' },
+  { label: '閿�鍞悎鍚屾�绘暟', prop: 'salesContractCount', align: 'center', dataType: 'slot', slot: 'salesContractCount' },
   { label: '鎿嶄綔', prop: 'action', align: 'center', width: '250', dataType: 'slot', slot: 'action', fixed: 'right' }
 ]
 
@@ -188,6 +201,7 @@
         projectType: r.planName ?? r.projectType,
         projectSource: r.source ?? r.projectSource,
         projectClassification: r.departmentName ?? r.projectClassification,
+        salesContractCount: r.salesContractCount,
         raw: r
       }))
       pagination.value.total = response?.total || response?.data?.total || 0
@@ -384,7 +398,7 @@
       actualStartTime: payload.actualStartTime || null,
       actualEndTime: payload.actualEndTime || null,
       progress: Number(payload.totalProgress ?? payload.completionProgress ?? 0) || 0,
-      attachmentIds: Array.isArray(payload.attachmentIds) ? payload.attachmentIds : []
+      storageBlobDTOs: Array.isArray(payload.storageBlobDTOs) ? payload.storageBlobDTOs : []
     }
     const res = await saveStage(req)
     if (res?.code === 200) {
@@ -407,6 +421,18 @@
   formDiaRef.value?.openDialog({ operationType: 'edit', row })
 }
 
+function handleArchive(row) {
+  if (!row?.id) return
+  archiveProjectId.value = row.id
+  archiveVisible.value = true
+}
+
+function handleOpenContractDialog(row) {
+  if (!row?.id) return
+  contractProjectId.value = row.id
+  contractVisible.value = true
+}
+
 onMounted(() => {
   getList()
 })
@@ -422,9 +448,7 @@
   border-radius: 4px;
 }
 .table-actions {
-  margin-bottom: 15px;
-  display: flex;
-  align-items: center;
-  gap: 10px;
+  text-align: right;
+	margin-bottom: 10px;
 }
 </style>

--
Gitblit v1.9.3