import type { PageParam, PageResult } from '@vben/request';
|
|
import { requestClient } from '#/api/request';
|
|
export namespace SrmTenderApi {
|
export interface TenderProjectVO {
|
id?: number;
|
tenderNo?: string;
|
tenderName: string;
|
tenderType: number;
|
purchaseOrg?: string;
|
projectLeaderId?: number;
|
projectLeaderName?: string;
|
tenderStatus?: number;
|
budgetAmount?: number;
|
startTime?: string;
|
endTime?: string;
|
bidOpenTime?: string;
|
tenderDesc?: string;
|
qualificationRequirements?: string;
|
purchaseRequestId?: number;
|
awardId?: number;
|
purchaseOrderNo?: string;
|
createTime?: string;
|
}
|
|
export interface TenderMaterialVO {
|
id?: number;
|
tenderProjectId: number;
|
productId?: number;
|
productCode?: string;
|
productName: string;
|
productSpec?: string;
|
unit?: string;
|
quantity?: number;
|
techRequirement?: string;
|
estimatedPrice?: number;
|
sort?: number;
|
}
|
|
export interface TenderBidVO {
|
id?: number;
|
tenderProjectId: number;
|
supplierId: number;
|
supplierName?: string;
|
bidNo: string;
|
bidStatus?: number;
|
bidTime?: string;
|
bidTotalAmount?: number;
|
bidFileName?: string;
|
bidFileUrl?: string;
|
createTime?: string;
|
}
|
|
export interface QuoteVO {
|
id?: number;
|
tenderProjectId?: number;
|
supplierId?: number;
|
bidId: number;
|
tenderMaterialId: number;
|
materialName?: string;
|
quotePrice?: number;
|
taxRate?: number;
|
deliveryCycle?: number;
|
paymentTerms?: string;
|
warrantyPeriod?: number;
|
remark?: string;
|
}
|
|
export interface BidEvaluationVO {
|
id?: number;
|
tenderProjectId: number;
|
supplierId: number;
|
supplierName?: string;
|
bidId: number;
|
priceScore?: number;
|
techScore?: number;
|
deliveryScore?: number;
|
serviceScore?: number;
|
compositeScore?: number;
|
rank?: number;
|
evaluatorId?: number;
|
evaluatorName?: string;
|
evaluationOpinion?: string;
|
}
|
|
export interface BidAwardVO {
|
id?: number;
|
tenderProjectId: number;
|
supplierId: number;
|
supplierName?: string;
|
bidId: number;
|
awardNo: string;
|
awardStatus?: number;
|
awardAmount?: number;
|
awardTime?: string;
|
noticeFileName?: string;
|
noticeFileUrl?: string;
|
purchaseOrderId?: number;
|
remark?: string;
|
}
|
}
|
|
// ========== 招标项目 ==========
|
|
export function getTenderProjectPage(params: PageParam) {
|
return requestClient.get<PageResult<SrmTenderApi.TenderProjectVO>>('/srm/tender-project/page', { params });
|
}
|
|
export function getTenderProject(id: number) {
|
return requestClient.get<SrmTenderApi.TenderProjectVO>(`/srm/tender-project/get?id=${id}`);
|
}
|
|
export function createTenderProject(data: SrmTenderApi.TenderProjectVO) {
|
return requestClient.post('/srm/tender-project/create', data);
|
}
|
|
export function updateTenderProject(data: SrmTenderApi.TenderProjectVO) {
|
return requestClient.put('/srm/tender-project/update', data);
|
}
|
|
export function deleteTenderProject(id: number) {
|
return requestClient.delete(`/srm/tender-project/delete?id=${id}`);
|
}
|
|
export function publishTender(id: number) {
|
return requestClient.put(`/srm/tender-project/publish?id=${id}`);
|
}
|
|
export function closeTender(id: number) {
|
return requestClient.put(`/srm/tender-project/close?id=${id}`);
|
}
|
|
export function startBidding(id: number) {
|
return requestClient.put(`/srm/tender-project/start-bidding?id=${id}`);
|
}
|
|
export function startEvaluation(id: number) {
|
return requestClient.put(`/srm/tender-project/start-evaluation?id=${id}`);
|
}
|
|
// ========== 物料子表 ==========
|
|
export function getMaterialList(tenderProjectId: number) {
|
return requestClient.get<SrmTenderApi.TenderMaterialVO[]>(`/srm/tender-project/material/list?tenderProjectId=${tenderProjectId}`);
|
}
|
|
export function createMaterial(data: SrmTenderApi.TenderMaterialVO) {
|
return requestClient.post('/srm/tender-project/material/create', data);
|
}
|
|
export function updateMaterial(data: SrmTenderApi.TenderMaterialVO) {
|
return requestClient.put('/srm/tender-project/material/update', data);
|
}
|
|
export function deleteMaterial(id: number) {
|
return requestClient.delete(`/srm/tender-project/material/delete?id=${id}`);
|
}
|
|
// ========== 投标管理 ==========
|
|
export function getBidListByProject(tenderProjectId: number) {
|
return requestClient.get<SrmTenderApi.TenderBidVO[]>(`/srm/tender-bid/list-by-project?tenderProjectId=${tenderProjectId}`);
|
}
|
|
export function getBid(id: number) {
|
return requestClient.get<SrmTenderApi.TenderBidVO>(`/srm/tender-bid/get?id=${id}`);
|
}
|
|
export function createBid(data: SrmTenderApi.TenderBidVO) {
|
return requestClient.post('/srm/tender-bid/create', data);
|
}
|
|
export function withdrawBid(id: number) {
|
return requestClient.put(`/srm/tender-bid/withdraw?id=${id}`);
|
}
|
|
// ========== 报价管理 ==========
|
|
export function getQuoteList(bidId: number) {
|
return requestClient.get<SrmTenderApi.QuoteVO[]>(`/srm/tender-bid/quote/list-by-bid?bidId=${bidId}`);
|
}
|
|
export function createQuote(data: SrmTenderApi.QuoteVO) {
|
return requestClient.post('/srm/tender-bid/quote/create', data);
|
}
|
|
export function updateQuote(data: SrmTenderApi.QuoteVO) {
|
return requestClient.put('/srm/tender-bid/quote/update', data);
|
}
|
|
// ========== 评标管理 ==========
|
|
export function getEvaluationList(tenderProjectId: number) {
|
return requestClient.get<SrmTenderApi.BidEvaluationVO[]>(`/srm/bid-evaluation/list-by-project?tenderProjectId=${tenderProjectId}`);
|
}
|
|
export function createBidEvaluation(data: SrmTenderApi.BidEvaluationVO) {
|
return requestClient.post('/srm/bid-evaluation/create', data);
|
}
|
|
export function calculateRanking(tenderProjectId: number) {
|
return requestClient.put(`/srm/bid-evaluation/calculate-ranking?tenderProjectId=${tenderProjectId}`);
|
}
|
|
// ========== 开标 ==========
|
|
export function createBidOpen(tenderProjectId: number) {
|
return requestClient.post(`/srm/bid-evaluation/bid-open/create?tenderProjectId=${tenderProjectId}`);
|
}
|
|
export function getBidOpen(id: number) {
|
return requestClient.get(`/srm/bid-evaluation/bid-open/get?id=${id}`);
|
}
|
|
// ========== 定标管理 ==========
|
|
export function createAward(data: SrmTenderApi.BidAwardVO) {
|
return requestClient.post('/srm/bid-award/create', data);
|
}
|
|
export function getAward(id: number) {
|
return requestClient.get<SrmTenderApi.BidAwardVO>(`/srm/bid-award/get?id=${id}`);
|
}
|
|
export function approveAward(id: number) {
|
return requestClient.put(`/srm/bid-award/approve?id=${id}`);
|
}
|
|
export function generatePurchaseOrder(id: number) {
|
return requestClient.put(`/srm/bid-award/generate-purchase-order/${id}`);
|
}
|