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) ] }