import { API_BASE_URL, request, type ApiResponse } from './request';
|
|
export interface PageResult<T> {
|
list: T[];
|
total: number;
|
}
|
|
export interface SupplierItem {
|
id?: number;
|
code: string;
|
name: string;
|
type: string;
|
status: number;
|
contactName?: string;
|
contactMobile?: string;
|
contactEmail?: string;
|
address?: string;
|
bankName?: string;
|
bankAccount?: string;
|
taxNo?: string;
|
remark?: string;
|
createTime?: string;
|
}
|
|
export interface SupplierApplyItem {
|
id?: number;
|
applyNo?: string;
|
supplierId?: number;
|
supplierName: string;
|
type?: string;
|
contactName?: string;
|
contactMobile?: string;
|
contactEmail?: string;
|
address?: string;
|
bankName?: string;
|
bankAccount?: string;
|
taxNo?: string;
|
businessLicense?: string;
|
taxCertificate?: string;
|
orgCodeCertificate?: string;
|
blobIds?: number[];
|
attachmentList?: StorageAttachment[];
|
applyStatus?: number;
|
applyStatusLabel?: string;
|
auditComment?: string;
|
processInstanceId?: string | number;
|
remark?: string;
|
createTime?: string;
|
}
|
|
export interface StorageAttachment {
|
id: number;
|
name?: string;
|
url?: string;
|
previewURL?: string;
|
downloadURL?: string;
|
}
|
|
export interface SupplierCertificateItem {
|
id?: number;
|
supplierId: number;
|
supplierName?: string;
|
certificateName: string;
|
certificateNo?: string;
|
certificateType: number;
|
issuingAuthority?: string;
|
validStartDate: string;
|
validEndDate: string;
|
status?: number;
|
remark?: string;
|
blobIds?: number[];
|
attachmentList?: StorageAttachment[];
|
createTime?: string;
|
}
|
|
export interface SupplierEvaluationItem {
|
id?: number;
|
supplierId: number;
|
supplierName?: string;
|
evaluationPeriod: string;
|
qualityScore: number;
|
deliveryScore: number;
|
priceScore: number;
|
serviceScore: number;
|
compositeScore?: number;
|
grade?: string;
|
evaluatorName?: string;
|
remark?: string;
|
createTime?: string;
|
}
|
|
export interface ApplyReview {
|
id: number;
|
passed: boolean;
|
opinion?: string;
|
}
|
export interface SupplierApplyProcess {
|
id?: string;
|
key?: string;
|
processDefinitionKey?: string;
|
name?: string;
|
}
|
function authHeader(accessToken: string) {
|
return { Authorization: `Bearer ${accessToken}` };
|
}
|
|
function toQuery(params: Record<string, string | number | boolean | undefined>) {
|
const query = Object.entries(params)
|
.filter(([, value]) => value !== undefined && value !== '')
|
.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`)
|
.join('&');
|
return query ? `?${query}` : '';
|
}
|
|
function pageParams(
|
pageNo: number,
|
pageSize: number,
|
filters: Record<string, string | number | boolean | undefined>
|
) {
|
return toQuery({ pageNo, pageSize, ...filters });
|
}
|
|
export function getSupplierPage(
|
accessToken: string,
|
pageNo: number,
|
name?: string,
|
options: { status?: number; excludeApproved?: boolean; pageSize?: number } = {}
|
) {
|
return request<PageResult<SupplierItem>>(
|
`/srm/supplier/page${pageParams(pageNo, options.pageSize || 15, {
|
name,
|
status: options.status,
|
excludeApproved: options.excludeApproved,
|
})}`,
|
{ header: authHeader(accessToken) }
|
);
|
}
|
export function getSupplier(accessToken: string, id: number) { return request<SupplierItem>(`/srm/supplier/get${toQuery({ id })}`, { header: authHeader(accessToken) }); }
|
export function getSupplierList(accessToken: string) { return request<SupplierItem[]>('/srm/supplier/list', { header: authHeader(accessToken) }); }
|
export function getSupplierSimpleList(accessToken: string) { return request<SupplierItem[]>('/srm/supplier/simple-list', { header: authHeader(accessToken) }); }
|
export function createSupplier(accessToken: string, data: SupplierItem) { return request<number>('/srm/supplier/create', { method: 'POST', data, header: authHeader(accessToken) }); }
|
export function updateSupplier(accessToken: string, data: SupplierItem) { return request<boolean>('/srm/supplier/update', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
export function deleteSupplier(accessToken: string, id: number) { return request<boolean>(`/srm/supplier/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) }); }
|
|
export function getApplyPage(accessToken: string, pageNo: number, supplierName?: string) { return request<PageResult<SupplierApplyItem>>(`/srm/supplier-apply/page${pageParams(pageNo, 15, { supplierName })}`, { header: authHeader(accessToken) }); }
|
export function getApply(accessToken: string, id: number) { return request<SupplierApplyItem>(`/srm/supplier-apply/get${toQuery({ id })}`, { header: authHeader(accessToken) }); }
|
export function createApply(accessToken: string, data: SupplierApplyItem) { return request<number>('/srm/supplier-apply/create', { method: 'POST', data, header: authHeader(accessToken) }); }
|
export function updateApply(accessToken: string, data: SupplierApplyItem) { return request<boolean>('/srm/supplier-apply/update', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
export function deleteApply(accessToken: string, id: number) { return request<boolean>(`/srm/supplier-apply/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) }); }
|
export function getApplyProcessList(accessToken: string) { return request<SupplierApplyProcess[]>('/srm/supplier-apply/approve-process-list', { header: authHeader(accessToken) }); }
|
export function submitApply(accessToken: string, id: number, processDefinitionKey: string) { return request<boolean>(`/srm/supplier-apply/submit${toQuery({ id, processDefinitionKey })}`, { method: 'PUT', header: authHeader(accessToken) }); }
|
export function approveApply(accessToken: string, id: number) { return request<boolean>(`/srm/supplier-apply/approve${toQuery({ id })}`, { method: 'PUT', header: authHeader(accessToken) }); }
|
export function reviewPurchase(accessToken: string, data: ApplyReview) { return request<boolean>('/srm/supplier-apply/review-purchase', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
export function reviewQuality(accessToken: string, data: ApplyReview) { return request<boolean>('/srm/supplier-apply/review-quality', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
export function reviewFinance(accessToken: string, data: ApplyReview) { return request<boolean>('/srm/supplier-apply/review-finance', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
|
export function uploadCertificateFile(accessToken: string, filePath: string) {
|
return new Promise<StorageAttachment>((resolve, reject) => {
|
uni.uploadFile({
|
url: `${API_BASE_URL}/system/storage-blob/upload`,
|
filePath,
|
name: 'files',
|
header: authHeader(accessToken),
|
success: response => {
|
try {
|
const data = JSON.parse(response.data) as ApiResponse<StorageAttachment[]>;
|
if (data.code === 0 && data.data?.[0]) resolve(data.data[0]);
|
else reject(new Error(data.msg || '文件上传失败'));
|
} catch { reject(new Error('文件上传响应解析失败')); }
|
},
|
fail: () => reject(new Error('文件上传失败,请检查网络后重试')),
|
});
|
});
|
}
|
|
export function getCertificatePage(accessToken: string, pageNo: number, supplierName?: string) { return request<PageResult<SupplierCertificateItem>>(`/srm/supplier-certificate/page${pageParams(pageNo, 15, { supplierName })}`, { header: authHeader(accessToken) }); }
|
export function getCertificate(accessToken: string, id: number) { return request<SupplierCertificateItem>(`/srm/supplier-certificate/get${toQuery({ id })}`, { header: authHeader(accessToken) }); }
|
export function createCertificate(accessToken: string, data: SupplierCertificateItem) { return request<number>('/srm/supplier-certificate/create', { method: 'POST', data, header: authHeader(accessToken) }); }
|
export function updateCertificate(accessToken: string, data: SupplierCertificateItem) { return request<boolean>('/srm/supplier-certificate/update', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
export function deleteCertificate(accessToken: string, id: number) { return request<boolean>(`/srm/supplier-certificate/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) }); }
|
export function getExpiringCertificates(accessToken: string) { return request<SupplierCertificateItem[]>('/srm/supplier-certificate/expiring-list', { header: authHeader(accessToken) }); }
|
|
export function getEvaluationPage(accessToken: string, pageNo: number, supplierName?: string) { return request<PageResult<SupplierEvaluationItem>>(`/srm/supplier-evaluation/page${pageParams(pageNo, 15, { supplierName })}`, { header: authHeader(accessToken) }); }
|
export function getEvaluation(accessToken: string, id: number) { return request<SupplierEvaluationItem>(`/srm/supplier-evaluation/get${toQuery({ id })}`, { header: authHeader(accessToken) }); }
|
export function createEvaluation(accessToken: string, data: SupplierEvaluationItem) { return request<number>('/srm/supplier-evaluation/create', { method: 'POST', data, header: authHeader(accessToken) }); }
|
export function updateEvaluation(accessToken: string, data: SupplierEvaluationItem) { return request<boolean>('/srm/supplier-evaluation/update', { method: 'PUT', data, header: authHeader(accessToken) }); }
|
export function deleteEvaluation(accessToken: string, id: number) { return request<boolean>(`/srm/supplier-evaluation/delete${toQuery({ id })}`, { method: 'DELETE', header: authHeader(accessToken) }); }
|