From 321fe494a393a1a2bb3114b135a5e838f0a499d1 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期三, 29 七月 2026 15:36:07 +0800
Subject: [PATCH] feat(srm): 增加评标修改和定标删除功能

---
 src/api/srm/tender/index.ts     |    8 ++++
 src/views/srm/tender/detail.vue |   66 +++++++++++++++++++++------------
 2 files changed, 50 insertions(+), 24 deletions(-)

diff --git a/src/api/srm/tender/index.ts b/src/api/srm/tender/index.ts
index 486765f..5cf30e8 100644
--- a/src/api/srm/tender/index.ts
+++ b/src/api/srm/tender/index.ts
@@ -199,6 +199,10 @@
   return requestClient.post('/srm/bid-evaluation/create', data);
 }
 
+export function updateBidEvaluation(data: SrmTenderApi.BidEvaluationVO) {
+  return requestClient.put('/srm/bid-evaluation/update', data);
+}
+
 export function calculateRanking(tenderProjectId: number) {
   return requestClient.put(`/srm/bid-evaluation/calculate-ranking?tenderProjectId=${tenderProjectId}`);
 }
@@ -219,6 +223,10 @@
   return requestClient.post('/srm/bid-award/create', data);
 }
 
+export function deleteAward(id: number) {
+  return requestClient.delete(`/srm/bid-award/delete?id=${id}`);
+}
+
 export function getAward(id: number) {
   return requestClient.get<SrmTenderApi.BidAwardVO>(`/srm/bid-award/get?id=${id}`);
 }
diff --git a/src/views/srm/tender/detail.vue b/src/views/srm/tender/detail.vue
index 020af3c..392af47 100644
--- a/src/views/srm/tender/detail.vue
+++ b/src/views/srm/tender/detail.vue
@@ -15,8 +15,8 @@
   getBidListByProject, createBid, withdrawBid,
   getQuoteList, createQuote, updateQuote,
   createBidOpen, getBidOpen,
-  getEvaluationList, createBidEvaluation, calculateRanking,
-  createAward, getAward, getAwardByProject, approveAward, generatePurchaseOrder,
+  getEvaluationList, createBidEvaluation, updateBidEvaluation, calculateRanking,
+  createAward, deleteAward, getAward, getAwardByProject, approveAward, generatePurchaseOrder,
 } from '#/api/srm/tender';
 import { getSupplierSimpleList } from '#/api/srm/supplier';
 import { getItemSimpleList } from '#/api/mdm/item';
@@ -193,7 +193,11 @@
   try { evaluationList.value = await getEvaluationList(projectId); } finally { evalLoading.value = false; }
 }
 async function handleCreateEvaluation() {
-  await createBidEvaluation(evalForm.value);
+  if (evalForm.value.id) {
+    await updateBidEvaluation(evalForm.value);
+  } else {
+    await createBidEvaluation(evalForm.value);
+  }
   evalFormVisible.value = false;
   loadEvaluations();
   loadProject();
@@ -225,6 +229,13 @@
   loadAward();
   loadProject();
 }
+async function handleDeleteAward() {
+  if (!award.value?.id) return;
+  await deleteAward(award.value.id);
+  message.success('瀹氭爣宸插垹闄�');
+  award.value = undefined;
+}
+
 async function handleGeneratePurchaseOrder() {
   if (!award.value?.id) return;
   await generatePurchaseOrder(award.value.id);
@@ -529,14 +540,12 @@
               </template>
               <template v-else>
                 <div class="text-center py-8">
-                  <a-result status="info" title="灏氭湭寮�鏍�" sub-title="鎵ц寮�鏍囧悗椤圭洰杩涘叆鎶曟爣闃舵锛屼緵搴斿晢鍙寮忔姇鏍�">
-                    <template #extra>
-                      <a-button type="primary" @click="handleCreateBidOpen">
-                        <template #icon><IconifyIcon icon="ant-design:thunderbolt-outlined" /></template>
-                        鎵ц寮�鏍�
-                      </a-button>
-                    </template>
-                  </a-result>
+                  <a-result status="info" title="灏氭湭寮�鏍�" sub-title="鎵ц寮�鏍囧悗椤圭洰杩涘叆鎶曟爣闃舵锛屼緵搴斿晢鍙寮忔姇鏍�" />
+                  <br />
+                  <a-button type="primary" @click="handleCreateBidOpen">
+                    <template #icon><IconifyIcon icon="ant-design:thunderbolt-outlined" /></template>
+                    鎵ц寮�鏍�
+                  </a-button>
                 </div>
               </template>
             </a-tab-pane>
@@ -615,11 +624,16 @@
                   </a-col>
                   <a-col :span="8" class="flex items-center justify-center">
                     <template v-if="award.awardStatus === AWARD_STATUS.ORDER_GENERATED">
-                      <a-result status="success" title="璁㈠崟宸茬敓鎴�" class="p-0">
-                        <template #sub-title>
-                          <span class="text-sm">閲囪喘璁㈠崟 ID: {{ award.purchaseOrderId }}</span>
-                        </template>
-                      </a-result>
+                      <div class="text-center">
+                        <a-result status="success" title="璁㈠崟宸茬敓鎴�" class="p-0">
+                          <template #sub-title>
+                            <span class="text-sm">閲囪喘璁㈠崟 ID: {{ award.purchaseOrderId }}</span>
+                          </template>
+                        </a-result>
+                        <a-popconfirm title="纭畾鍒犻櫎璇ュ畾鏍囪褰曪紵" ok-text="纭畾" cancel-text="鍙栨秷" @confirm="handleDeleteAward">
+                          <a-button type="link" danger size="small" class="mt-2">鍒犻櫎瀹氭爣</a-button>
+                        </a-popconfirm>
+                      </div>
                     </template>
                     <template v-else-if="award.awardStatus === AWARD_STATUS.AWARDED">
                       <div class="text-center">
@@ -628,6 +642,9 @@
                           <template #icon><IconifyIcon icon="ant-design:shopping-cart-outlined" /></template>
                           鐢熸垚閲囪喘璁㈠崟
                         </a-button>
+                        <a-popconfirm title="纭畾鍒犻櫎璇ュ畾鏍囪褰曪紵" ok-text="纭畾" cancel-text="鍙栨秷" @confirm="handleDeleteAward">
+                          <a-button type="link" danger size="small" class="mt-2">鍒犻櫎瀹氭爣</a-button>
+                        </a-popconfirm>
                       </div>
                     </template>
                     <template v-else>
@@ -637,6 +654,9 @@
                           <template #icon><IconifyIcon icon="ant-design:check-outlined" /></template>
                           瀹℃壒閫氳繃
                         </a-button>
+                        <a-popconfirm title="纭畾鍒犻櫎璇ュ畾鏍囪褰曪紵" ok-text="纭畾" cancel-text="鍙栨秷" @confirm="handleDeleteAward">
+                          <a-button type="link" danger size="small" class="mt-2">鍒犻櫎瀹氭爣</a-button>
+                        </a-popconfirm>
                       </div>
                     </template>
                   </a-col>
@@ -644,14 +664,12 @@
               </template>
               <template v-else>
                 <div class="text-center py-8">
-                  <a-result status="info" title="灏氭湭瀹氭爣" sub-title="鍩轰簬璇勬爣鎺掑悕閫夋嫨涓爣渚涘簲鍟嗗苟鍒涘缓瀹氭爣">
-                    <template #extra>
-                      <a-button type="primary" @click="awardForm = { tenderProjectId: projectId, supplierId: 0, bidId: 0, awardNo: '' }; awardFormVisible = true">
-                        <template #icon><IconifyIcon icon="ant-design:plus-outlined" /></template>
-                        鍒涘缓瀹氭爣
-                      </a-button>
-                    </template>
-                  </a-result>
+                  <a-result status="info" title="灏氭湭瀹氭爣" sub-title="鍩轰簬璇勬爣鎺掑悕閫夋嫨涓爣渚涘簲鍟嗗苟鍒涘缓瀹氭爣" />
+                  <br />
+                  <a-button type="primary" @click="awardForm = { tenderProjectId: projectId, supplierId: 0, bidId: 0, awardNo: '' }; awardFormVisible = true">
+                    <template #icon><IconifyIcon icon="ant-design:plus-outlined" /></template>
+                    鍒涘缓瀹氭爣
+                  </a-button>
                 </div>
               </template>
             </a-tab-pane>

--
Gitblit v1.9.3