Files
shanxia2.0/web-admin/src/utils/pl-plan-contract-display.ts
T
2026-08-27 19:38:01 +08:00

48 lines
1.4 KiB
TypeScript

import { isPlInternalCustomerName } from '@/utils/pl-internal-customer'
export type PlanContractDisplayLine = {
side: string
no: string
contractId?: string
pending?: boolean
}
type PlanContractLike = {
contractId?: string
contractNo?: string
}
type PlanContractParties = {
supplierName?: string | null
customerName?: string | null
supplierContracts?: PlanContractLike[]
demanderContracts?: PlanContractLike[]
}
/** 单侧:有编号显示编号;非内置缺合同「待补充」;内置缺合同「—」 */
export function planContractSideLines(
side: '供' | '需',
contracts: PlanContractLike[] | undefined,
customerName?: string | null
): PlanContractDisplayLine[] {
const lines: PlanContractDisplayLine[] = []
for (const item of contracts || []) {
const contractId = item.contractId ? String(item.contractId) : undefined
const no = item.contractNo || contractId
if (no) lines.push({ side, no: String(no), contractId })
}
if (lines.length) return lines
if (isPlInternalCustomerName(customerName)) {
return [{ side, no: '—' }]
}
return [{ side, no: '待补充', pending: true }]
}
/** 合同列:供/需各至少一行 */
export function planContractLines(plan: PlanContractParties): PlanContractDisplayLine[] {
return [
...planContractSideLines('供', plan.supplierContracts, plan.supplierName),
...planContractSideLines('需', plan.demanderContracts, plan.customerName)
]
}