import React from 'react'; import { Form } from 'kts-components-antd-x3'; import { Select, Input, Spin, InputProps, Cascader, DatePicker } from 'kts-xui'; import { WrappedFormUtils } from 'kts-components-antd-x3/lib/form/Form'; import { IGoodPassenger } from '../../../../../InvoiceController'; import Invoice from '../../../../..'; import TitleText from './ui/TitleText'; import moment from 'moment'; import CustomCascader from '@/Invoice/ui/components/CustomCascader'; export default (form: WrappedFormUtils, isRequired?: boolean) => { const { getFieldDecorator } = form; const controller = Invoice.useInvoiceController(); const rootElement = controller.useMemo(s => s.rootElement, []); /** 组件模式 */ const model = controller.useMemo(e => e.model, []); /** 正在编辑的货物 */ const editGood = controller.useMemo((e) => e.passengerListState.editGood, []); /** 禁用字段 */ const disableds = controller.useMemo((e) => e.stakeholder.disableds || [], []); /** 运输工具种类列表 */ const vehicleTypeList = controller.useMemo((e) => e.passengerListState.vehicleTypeList, []); /** 证件类型列表 */ const certificateTypeList = controller.useMemo((e) => e.passengerListState.certificateTypeList, []); const area = controller.useMemo((e) => e.passengerListState.area, []); const addressFieldNames = controller.useMemo((e) => e.passengerListState.addressFieldNames, []); const getVehicle = React.useCallback((value?: string) => { if (vehicleTypeList && vehicleTypeList.length > 0) { return vehicleTypeList.find(e => e.value === value)?.label || ''; } }, [vehicleTypeList]) const getCertificateType = React.useCallback((value?: string) => { if (certificateTypeList && certificateTypeList.length > 0) { return certificateTypeList.find(e => e.value === value)?.label || ''; } }, [certificateTypeList]) // 等级选项配置 const levelOptionsMap = React.useMemo(() => { return { 'AIRCRAFT': { // 飞机 options: [ { value: '公务舱', label: '公务舱' }, { value: '头等舱', label: '头等舱' }, { value: '经济舱', label: '经济舱' }, ], required: true, }, 'TRAIN': { // 火车 options: [ { value: '一等座', label: '一等座' }, { value: '二等座', label: '二等座' }, { value: '软席(软座、软卧)', label: '软席(软座、软卧)' }, { value: '硬席(硬座、硬卧)', label: '硬席(硬座、硬卧)' }, ], required: true, }, 'SHIP': { // 船舶 options: [ { value: '一等舱', label: '一等舱' }, { value: '二等舱', label: '二等舱' }, { value: '三等舱', label: '三等舱' }, ], required: true, }, // 其他类型不配置,则等级为非必填的文本输入 } as any; }, []); const splitArea = React.useCallback((value?: string) => { if (value) { const _array = value.split(','); return _array; } else { return []; } }, []); /** 表头 */ const columns = React.useMemo(() => { return [ // { // title: '序号', // key: 'cxrxh', // dataIndex: 'cxrxh', // width: 50, // render: (e: number) => {e}, // }, { title: 出行人, dataIndex: 'cxr', key: 'cxr', width: 100, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && model !== 'prefab') { return ( {getFieldDecorator('cxr', { initialValue: editGood.cxr, rules: [ { required: true, message: '请输入出行人' }, ], })( { await controller.wait() await controller.setEditPassenger({ cxr: form.getFieldsValue().cxr }); }} />, )} ); } else { return {record.cxr}; } }, }, { title: 出行日期, dataIndex: 'chuxrq', key: 'chuxrq', width: 130, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && model !== 'prefab') { return ( {getFieldDecorator('chuxrq', { initialValue: editGood.chuxrq ? moment(editGood.chuxrq) : undefined, rules: [ { required: isRequired, message: '请选择出行日期' }, ], })( { await controller.wait() await controller.setEditPassenger({ chuxrq: moment(v).format('YYYY-MM-DD') }); }} />, )} ); } else { return {record.chuxrq}; } }, }, { title: 出行人证件类型, key: 'cxrzjlxDm', dataIndex: 'cxrzjlxDm', width: 160, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && !(model === 'prefab')) { return ( {getFieldDecorator('cxrzjlxDm', { initialValue: editGood.cxrzjlxDm, rules: [ { required: isRequired, message: '请选择出行人证件类型' }, ], })( , )} ); } else { return {getCertificateType(record.cxrzjlxDm)}; } }, }, { title: 出行人证件号码, dataIndex: 'sfzjhm', key: 'sfzjhm', width: 150, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && model !== 'prefab') { return ( {getFieldDecorator('sfzjhm', { initialValue: editGood.sfzjhm, rules: [ { required: isRequired, message: '请输入证件号码' }, ], })( { await controller.wait() await controller.setEditPassenger({ sfzjhm: form.getFieldsValue().sfzjhm }); }} />, )} ); } else { return {record.sfzjhm}; } }, }, { title: 出发点, key: 'cfd', dataIndex: 'cfd', width: 180, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && model !== 'prefab') { return ( {getFieldDecorator('cfd', { initialValue: editGood.cfd, rules: [ { required: isRequired, message: '请输入出发点' }, ], })( { await controller.setEditPassenger({ cfd: value }); }} />)} ); } else { return {record.cfd}; } }, }, { title: 到达地, dataIndex: 'ddd', key: 'ddd', width: 180, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && model !== 'prefab') { return ( {getFieldDecorator('ddd', { initialValue: editGood.ddd, rules: [ { required: isRequired, message: '请输入到达地' }, ], })( { await controller.setEditPassenger({ ddd: value }); }} /> )} ); } else { return {record.ddd}; } }, }, { title: 交通工具类型, key: 'jtgjlxDm', dataIndex: 'jtgjlxDm', width: 130, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && !(model === 'prefab')) { return ( {getFieldDecorator('jtgjlxDm', { initialValue: editGood.jtgjlxDm, rules: [ { required: isRequired, message: '请选择交通工具类型' }, ], })( , )} ); } else { return {getVehicle(record.jtgjlxDm)}; } }, }, { title: 等级, dataIndex: 'zwdj', key: 'zwdj', width: 110, render: (_: string, record: IGoodPassenger) => { if (editGood?.$index === record.$index && model !== 'prefab') { // 获取当前等级配置 const levelConfig: any = editGood.jtgjlxDm ? levelOptionsMap[editGood.jtgjlxDm as any] : undefined; const isLevelSelect = !!levelConfig; const isLevelRequired = levelConfig?.required || false; const levelOptions = levelConfig?.options || []; return ( {getFieldDecorator('zwdj', { initialValue: editGood.zwdj, rules: [ { required: isLevelRequired, message: '请选择等级' }, ], }) (isLevelSelect ? : { await controller.wait() await controller.setEditPassenger({ zwdj: form.getFieldsValue().zwdj }); }} /> )} ); } else { return {record.zwdj}; } }, }, ] // 只读 .filter(e => { if (model === 'readOnly') { return e.key !== 'operating'; } else { return true; } }) .map((e) => { return { ...e, ellipsis: true, }; }) as any[]; }, [editGood, controller, model, getVehicle]); return columns; }; class MyInput extends React.Component { render() { if (this.props.loading) { return ( ) } else { return } } }