| | |
| | | const awardFormVisible = ref(false); |
| | | const awardForm = ref<SrmTenderApi.BidAwardVO>({ tenderProjectId: projectId, supplierId: undefined!, bidId: undefined!, awardNo: '' }); |
| | | |
| | | /** 已投标且未撤标的供应商列表(从投标记录中提取) */ |
| | | const bidSuppliers = computed(() => { |
| | | const activeBids = bidList.value.filter((b) => b.bidStatus !== BID_STATUS.WITHDRAWN); |
| | | const seen = new Map<number, { id: number; name: string }>(); |
| | | activeBids.forEach((b) => { |
| | | if (b.supplierId && !seen.has(b.supplierId)) { |
| | | seen.set(b.supplierId, { id: b.supplierId, name: b.supplierName || '' }); |
| | | } |
| | | }); |
| | | return [...seen.values()]; |
| | | }); |
| | | |
| | | /** 可选投标记录:排除撤标,且如果选了供应商则只显示该供应商的投标 */ |
| | | const activeBids = computed(() => { |
| | | return bidList.value.filter((b) => { |
| | | if (b.bidStatus === BID_STATUS.WITHDRAWN) return false; |
| | | if (awardForm.value.supplierId && b.supplierId !== awardForm.value.supplierId) return false; |
| | | return true; |
| | | }); |
| | | }); |
| | | |
| | | /** 选择供应商时清空已选的投标 */ |
| | | function onAwardSupplierChange() { |
| | | awardForm.value.bidId = undefined!; |
| | | } |
| | | |
| | | /** 选择投标时自动带入该投标的报价金额 */ |
| | | function onAwardBidChange(bidId: number) { |
| | | const bid = bidList.value.find((b) => b.id === bidId); |
| | | if (bid?.bidTotalAmount != null) { |
| | | awardForm.value.awardAmount = bid.bidTotalAmount; |
| | | } |
| | | } |
| | | |
| | | async function loadAward() { |
| | | try { award.value = await getAwardByProject(projectId); } catch { award.value = undefined; } |
| | | } |
| | |
| | | <a-row :gutter="12"> |
| | | <a-col :span="12"> |
| | | <a-form-item label="供应商" required> |
| | | <a-select v-model:value="awardForm.supplierId" show-search placeholder="选择供应商" :filter-option="filterOption"> |
| | | <a-select-option v-for="s in supplierList" :key="s.id" :value="s.id" :label="s.name">{{ s.name }}</a-select-option> |
| | | <a-select v-model:value="awardForm.supplierId" show-search placeholder="选择供应商" :filter-option="filterOption" @change="onAwardSupplierChange"> |
| | | <a-select-option v-for="s in bidSuppliers" :key="s.id" :value="s.id" :label="s.name">{{ s.name }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |
| | | <a-col :span="12"> |
| | | <a-form-item label="投标" required> |
| | | <a-select v-model:value="awardForm.bidId" show-search placeholder="选择投标" :filter-option="filterOption"> |
| | | <a-select-option v-for="b in bidList" :key="b.id" :value="b.id" :label="`${b.bidNo} - ${b.supplierName}`">{{ b.bidNo }} - {{ b.supplierName }}</a-select-option> |
| | | <a-select v-model:value="awardForm.bidId" show-search placeholder="选择投标" :filter-option="filterOption" :disabled="!awardForm.supplierId" @change="onAwardBidChange"> |
| | | <a-select-option v-for="b in activeBids" :key="b.id" :value="b.id" :label="`${b.bidNo} - ${b.supplierName}`">{{ b.bidNo }} - {{ b.supplierName }}</a-select-option> |
| | | </a-select> |
| | | </a-form-item> |
| | | </a-col> |