7 小时以前 321fe494a393a1a2bb3114b135a5e838f0a499d1
feat(srm): 增加评标修改和定标删除功能

- 添加 updateBidEvaluation 接口用于修改评标信息
- 实现评标编辑功能,支持创建和更新操作
- 添加 deleteAward 接口用于删除定标记录
- 在定标详情页面增加删除按钮和确认弹窗
- 重构开标和定标结果显示组件结构
- 完善定标状态下的删除功能入口
已修改2个文件
74 ■■■■■ 文件已修改
src/api/srm/tender/index.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/srm/tender/detail.vue 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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}`);
}
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>