| | |
| | | import { useUserStore } from '@vben/stores'; |
| | | |
| | | import { getContractSimpleList } from '#/api/crm/contract'; |
| | | import { getInvoiceSimpleList } from '#/api/crm/invoice'; |
| | | import { |
| | | getReceivablePlan, |
| | | getReceivablePlanSimpleList, |
| | |
| | | placeholder: '请选择客户', |
| | | onChange: () => { |
| | | form.setFieldValue('contractId', undefined); |
| | | form.setFieldValue('invoiceId', undefined); |
| | | form.setFieldValue('planId', undefined); |
| | | form.setFieldValue('price', undefined); |
| | | form.setFieldValue('returnTime', undefined); |
| | |
| | | })), |
| | | placeholder: '请选择合同', |
| | | onChange: (value: number) => { |
| | | form.setFieldValue('invoiceId', undefined); |
| | | form.setFieldValue('planId', undefined); |
| | | form.setFieldValue('returnTime', undefined); |
| | | form.setFieldValue('returnType', undefined); |
| | |
| | | }, |
| | | }, |
| | | { |
| | | fieldName: 'invoiceId', |
| | | label: '关联开票', |
| | | component: 'Select', |
| | | rules: 'required', |
| | | dependencies: { |
| | | triggerFields: ['contractId', 'invoiceId'], |
| | | disabled: (values) => !values.contractId || !!values.id, |
| | | async componentProps(values, form) { |
| | | if (!values.contractId) { |
| | | return { |
| | | options: [], |
| | | placeholder: '请先选择合同', |
| | | }; |
| | | } |
| | | const invoices = await getInvoiceSimpleList(values.contractId); |
| | | return { |
| | | options: invoices.map((item) => { |
| | | const remain = item.remainingInvoicePrice ?? item.price ?? 0; |
| | | return { |
| | | label: `${item.no} / ${item.invoiceNo ?? '-'} / ¥${item.price ?? 0} / 剩余可回款 ¥${remain.toFixed(2)}`, |
| | | value: item.id, |
| | | }; |
| | | }), |
| | | placeholder: '请选择关联开票', |
| | | onChange: (value: number) => { |
| | | form.setFieldValue('planId', undefined); |
| | | form.setFieldValue('returnTime', undefined); |
| | | form.setFieldValue('returnType', undefined); |
| | | const invoice = invoices.find((item) => item.id === value); |
| | | if (invoice) { |
| | | form.setFieldValue( |
| | | 'price', |
| | | invoice.remainingInvoicePrice ?? invoice.price ?? undefined, |
| | | ); |
| | | form.setFieldValue('customerId', invoice.customerId); |
| | | } |
| | | }, |
| | | } as any; |
| | | }, |
| | | }, |
| | | }, |
| | | { |
| | | fieldName: 'planId', |
| | | label: '回款期数', |
| | | component: 'Select', |
| | | rules: 'required', |
| | | help: '此参数可在回款计划配置', |
| | | dependencies: { |
| | | triggerFields: ['contractId'], |
| | | disabled: (values) => !values.contractId || values.id, |
| | |
| | | componentProps: { |
| | | placeholder: '请选择回款日期', |
| | | showTime: false, |
| | | valueFormat: 'x', |
| | | valueFormat: 'YYYY-MM-DD', |
| | | format: 'YYYY-MM-DD', |
| | | }, |
| | | }, |
| | |
| | | slots: { default: 'contractNo' }, |
| | | }, |
| | | { |
| | | title: '关联开票', |
| | | field: 'invoice', |
| | | minWidth: 200, |
| | | slots: { default: 'invoiceNo' }, |
| | | }, |
| | | { |
| | | title: '回款日期', |
| | | field: 'returnTime', |
| | | minWidth: 150, |
| | |
| | | title: '创建人', |
| | | field: 'creatorName', |
| | | minWidth: 150, |
| | | }, |
| | | { |
| | | title: '回款状态', |
| | | field: 'auditStatus', |
| | | minWidth: 100, |
| | | fixed: 'right', |
| | | cellRender: { |
| | | name: 'CellDict', |
| | | props: { type: DICT_TYPE.CRM_AUDIT_STATUS }, |
| | | }, |
| | | }, |
| | | { |
| | | title: '操作', |