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