import Basic from './Basic' import { BasicCheckbox, BasicInput, BasicRadio, BasicTextArea, BasicRate, BasicSelect, BasicMultSelect, ExpressLogisticsSelect, BuyerNickInput, AliPayInput, TradeIdInput, BasicGrade, BasicPicture, BasicDateTime, BasicCascader, BasicFile, BasicAddress, ReceiverAddressInput, BasicIdentifyAddress, StatusSelect, ActualPayment, ActualReceiptPayment, ItemSelect, ItemId, ItemEnCode, AfterSalesOrderId // EnterprisePayment } from './index' import { FormControl } from '../form' import type { FieldDataType, ValidRepeatEventFcType } from '@/types' export const factory: ( props: FieldDataType, form: FormControl, validRepeatEvent?: ValidRepeatEventFcType ) => | BasicInput | BasicTextArea | BasicRadio | BasicCheckbox | BasicSelect | BasicMultSelect | ExpressLogisticsSelect | BuyerNickInput | AliPayInput | BasicRate | BasicGrade | BasicPicture | BasicDateTime | BasicIdentifyAddress | BasicCascader | BasicFile | StatusSelect | ActualPayment | ItemSelect | ItemId | ItemEnCode | AfterSalesOrderId | ActualReceiptPayment // | EnterprisePayment | Basic = function (props, form, validRepeatEvent) { switch (props.workOrderComponentType) { case 'INPUT': return new BasicInput(props, form, validRepeatEvent) case 'TEXTAREA': return new BasicTextArea(props, form) case 'RADIO': return new BasicRadio(props, form) case 'CHECKBOX': return new BasicCheckbox(props, form) case 'SELECT': return new BasicSelect(props, form) case 'BASIC_MULT_SELECT': return new BasicMultSelect(props, form) case 'EXPRESS_LOGISTICS_SELECT': return new ExpressLogisticsSelect(props, form) case 'BUYER_NICK_INPUT': return new BuyerNickInput(props, form) case 'ALI_PAY_INPUT': return new AliPayInput(props, form) case 'TRADE_ID_INPUT': return new TradeIdInput(props, form) case 'RATE': return new BasicRate(props, form) case 'BASIC_GRADE': return new BasicGrade(props, form) case 'PICTURE': return new BasicPicture(props, form) case 'DATETIME': return new BasicDateTime(props, form) case 'MULT_SELECT': return new BasicCascader(props, form) case 'FILE': return new BasicFile(props, form) case 'BASIC_ADDRESS': return new BasicAddress(props, form) case 'RECEIVER_ADDRESS_INPUT': return new ReceiverAddressInput(props, form) case 'POSTING': return new BasicIdentifyAddress(props, form) case 'REISSUE_STATUS': case 'ADJUST_WORK_ORDER_STATUS': case 'CREATE_STATUS': case 'INVOICE_STATUS': case 'INVOICING_STATUS': case 'AGREE_REFUND_STATUS': case 'REJECT_REFUND_STATUS': return new StatusSelect(props, form) case 'ACTUAL_PAYMENT': return new ActualPayment(props, form) case 'ACTUAL_RECEIPT_PAYMENT': return new ActualReceiptPayment(props, form) case 'ITEM_SELECT': return new ItemSelect(props, form) case 'ITEM_ID': return new ItemId(props, form) case 'ITEM_ENCODE': return new ItemEnCode(props, form) case 'AFTER_SALES_ORDER_ID': return new AfterSalesOrderId(props, form) // case 'ENTERPRISE_PAYMENT': // return new EnterprisePayment(props, form) default: return new Basic(props, form) } } export const valueFactory = function ( fieldData: FieldDataType, params: { buyerOpenUid?: string buyerNick?: string shopId?: string } ) { switch (fieldData.workOrderComponentType) { case 'INPUT': return fieldData.componentConfig.input || '' case 'TEXTAREA': return fieldData.componentConfig.textarea || '' case 'AFTER_SALES_ORDER_ID': case 'TRADE_ID_INPUT': return '' case 'RADIO': return { value: fieldData.componentConfig.radio || '', other: fieldData.componentConfig.radioOther || '' } case 'CHECKBOX': return { value: fieldData.componentConfig.checkbox || [], other: fieldData.componentConfig.checkboxOther || '' } case 'EXPRESS_LOGISTICS_SELECT': return { order: '', company: '' } case 'ALI_PAY_INPUT': return { name: '', user: '' } case 'BUYER_NICK_INPUT': return { buyerNick: params.buyerNick || '', buyerOpenUid: params.buyerOpenUid || '' } case 'REISSUE_STATUS': case 'ADJUST_WORK_ORDER_STATUS': case 'CREATE_STATUS': case 'INVOICE_STATUS': case 'INVOICING_STATUS': case 'AGREE_REFUND_STATUS': case 'REJECT_REFUND_STATUS': return { status: '', reason: '' } case 'SELECT': return fieldData.componentConfig.select || null case 'BASIC_GRADE': return null case 'DATETIME': if (fieldData.componentConfig.dateType.includes('RANGE')) { return fieldData.componentConfig.dateTime || [] } return fieldData.componentConfig.dateTime || '' case 'MULT_SELECT': return [] case 'BASIC_MULT_SELECT': return fieldData.componentConfig.basicMultSelect || [] case 'PICTURE': return fieldData.componentConfig?.picture || [] case 'FILE': case 'RATE': case 'BASIC_ADDRESS': return [] case 'RECEIVER_ADDRESS_INPUT': return { detail: '', address: [] } case 'POSTING': return { address: [], detail: '', receiverName: '', receiverMobile: '' } case 'ENTERPRISE_PAYMENT': return { name: '', user: '', // TODO: 是否要带入买家信息 buyerNick: '', buyerOpenUid: '', tid: '', refundFee: '', status: '', time: '' } case 'ITEM_SELECT': case 'ITEM_ID': case 'ITEM_ENCODE': return [] default: return undefined } }