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