diff --git a/package.json b/package.json index dd93ac5..1eaed3b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "global-highlights-hub", "private": true, - "version": "2.0.0-alpha.2", + "version": "2.0.0-alpha.3", "type": "module", "scripts": { "dev": "vite", diff --git a/prerelease.bat b/prerelease.bat new file mode 100644 index 0000000..f418442 --- /dev/null +++ b/prerelease.bat @@ -0,0 +1 @@ +npm version prerelease \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index ec6f14b..b2062c1 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -68,7 +68,7 @@ const initRouter = async () => { { path: 'invoice/paid',element:}, { path: 'invoice/paid/detail/:flid', element: }, { path: 'airticket',element: }, - { path: 'airticket/plan/:coli_sn',element:}, + { path: 'airticket/plan/:coli_sn/:gri_sn',element:}, { path: "products",element: }, { path: "products/:travel_agency_id/:use_year/:audit_state/audit",element:}, { path: "products/:travel_agency_id/:use_year/:audit_state/edit",element:}, diff --git a/src/stores/Airticket.js b/src/stores/Airticket.js index e73711a..9ec94a8 100644 --- a/src/stores/Airticket.js +++ b/src/stores/Airticket.js @@ -1,5 +1,5 @@ import { create } from "zustand"; -import { fetchJSON } from "@/utils/request"; +import { fetchJSON, postForm } from "@/utils/request"; import { prepareUrl, isNotEmpty } from "@/utils/commons"; import { HT_HOST, DATE_FORMAT } from "@/config"; import dayjs from "dayjs"; @@ -15,7 +15,7 @@ const airTicketStore = create((set, get) => ({ const { setLoading, setPlanList } = get(); setLoading(true); const searchParams = { - vei_sn: 4272, //vei_sn, + vei_sn: vei_sn, FlightDate1: TimeStart, FlightDate2: TimeEnd, GRI_Name: GRI_Name, @@ -30,23 +30,53 @@ const airTicketStore = create((set, get) => ({ async getPlanDetail(vei_sn, gri_sn) { const { setPlanDetail } = get(); const searchParams = { - vei_sn: 4272, //vei_sn, - gri_sn: 372928, //gri_sn + vei_sn: vei_sn, + gri_sn: gri_sn, }; const { errcode, result } = await fetchJSON(`${HT_HOST}/Service_BaseInfoWeb/GetFlightPlanDetail`, searchParams); const _result = errcode !== 0 ? [] : result; setPlanDetail(_result); }, + + async postFlightDetail(CLF_SN, GRI_SN, VEI_SN, original_values, info_object) { + const formData = new FormData(); + formData.append("CLF_SN", CLF_SN ? CLF_SN : ""); + formData.append("GRI_SN", GRI_SN); + formData.append("VEI_SN", VEI_SN); + for (const [key, value] of Object.entries(original_values)) { + formData.append(key, value); //先用原始数据填充一遍,确保复制了全部数据到新表 + } + for (const [key, value] of Object.entries(info_object)) { + formData.set(key, value); //再用新值覆盖 + } + const postUrl = HT_HOST + "/Service_BaseInfoWeb/edit_or_new_flight_info"; + return postForm(postUrl, formData).then(json => { + if (json.errcode == 0) { + return json; + } else { + throw new Error(json.errmsg + ": " + json.errcode); + } + }); + }, + async getGuestList(coli_sn) { const { setGuestList } = get(); const searchParams = { - COLI_SN: 1097829, //coli_sn, + COLI_SN: coli_sn, }; const { errcode, result } = await fetchJSON(`${HT_HOST}/Service_BaseInfoWeb/GetFlightGuestInfo`, searchParams); const _result = errcode !== 0 ? [] : result; setGuestList(_result); }, - + // async getFlightCostList(CLF_SN) { + // const searchParams = { + // CLF_SN: CLF_SN, + // }; + // const { errcode, result } = await fetchJSON(`${HT_HOST}/Service_BaseInfoWeb/Get_flight_cost`, searchParams); + // const _result = errcode !== 0 ? [] : result; + // console.log(_result); + // return _result; + // }, })); export default airTicketStore; diff --git a/src/stores/Auth.js b/src/stores/Auth.js index 83da003..0c48ce6 100644 --- a/src/stores/Auth.js +++ b/src/stores/Auth.js @@ -43,7 +43,7 @@ async function fetchLastRequet() { const initialState = { tokenInterval: null, - tokenTimeout: true, + tokenTimeout: false,// 开发时候用false,正式环境true, loginStatus: 0, defaltRoute: '', currentUser: { diff --git a/src/views/account/Management.jsx b/src/views/account/Management.jsx index f495de5..4740326 100644 --- a/src/views/account/Management.jsx +++ b/src/views/account/Management.jsx @@ -356,7 +356,6 @@ function Management() { showSizeChanger: true, showTotal: (total) => { return t('Total') + `:${total}` } }} - onChange={(pagination) => { onSearchClick(pagination.current) }} columns={accountListColumns} dataSource={accountList} /> diff --git a/src/views/airticket/Index.jsx b/src/views/airticket/Index.jsx index 32a84a5..09b0d87 100644 --- a/src/views/airticket/Index.jsx +++ b/src/views/airticket/Index.jsx @@ -46,33 +46,33 @@ const planListColumns = [ dataIndex: "ToCity", }, { - title: "航空", + title: "航班", key: "FlightNo", dataIndex: "FlightNo", }, { title: "起飞时间", - key: "FlightTimeStart", - dataIndex: "FlightTimeStart", + key: "FlightStart", + dataIndex: "FlightStart", render: text => formatColonTime(text), }, { title: "落地时间", - key: "FlightTimeEnd", - dataIndex: "FlightTimeEnd", + key: "FlightEnd", + dataIndex: "FlightEnd", render: text => formatColonTime(text), }, { title: "是否出票", - key: "COLD_PlanVEI_SN", - dataIndex: "COLD_PlanVEI_SN", + key: "CLF_SN", + dataIndex: "CLF_SN", render: (text, record) => "否", }, { title: "操作", key: "FlightInfo", dataIndex: "FlightInfo", - render: (text, record) => {"编辑"}, + render: (text, record) => {"编辑"}, }, ]; diff --git a/src/views/airticket/Plan.jsx b/src/views/airticket/Plan.jsx index ea193fa..3799ab0 100644 --- a/src/views/airticket/Plan.jsx +++ b/src/views/airticket/Plan.jsx @@ -1,6 +1,6 @@ import { useState, useEffect } from "react"; -import { Grid, Divider, Layout, Modal, Form, Input, Col, Row, Space, Collapse, Table, Button, Select, InputNumber, Typography } from "antd"; -import { PhoneOutlined, CustomerServiceOutlined, AudioOutlined, ArrowUpOutlined, ArrowDownOutlined } from "@ant-design/icons"; +import { Grid, Divider, Layout, Modal, Form, Input, Col, Row, Space, Collapse, Table, Button, Select, App, Typography } from "antd"; +import { PhoneOutlined, FrownTwoTone, LikeTwoTone, ArrowUpOutlined, ArrowDownOutlined } from "@ant-design/icons"; import { useParams, useHref, useNavigate, NavLink } from "react-router-dom"; import { isEmpty, formatColonTime } from "@/utils/commons"; import { OFFICEWEBVIEWERURL } from "@/config"; @@ -9,13 +9,22 @@ import airTicketStore from "@/stores/Airticket"; import { usingStorage } from "@/hooks/usingStorage"; const AirticketPlan = props => { - const { coli_sn } = useParams(); + const { coli_sn, gri_sn } = useParams(); const { travelAgencyId, loginToken } = usingStorage(); - const [getPlanDetail, planDetail, getGuestList, guestList, loading] = airTicketStore(state => [state.getPlanDetail, state.planDetail, state.getGuestList, state.guestList, state.loading]); + const [getPlanDetail, planDetail, getGuestList, guestList, loading, postFlightDetail, getFlightCostList] = airTicketStore(state => [ + state.getPlanDetail, + state.planDetail, + state.getGuestList, + state.guestList, + state.loading, + state.postFlightDetail, + state.getFlightCostList, + ]); const reservationUrl = `https://p9axztuwd7x8a7.mycht.cn/Service_BaseInfoWeb/FlightPlanDocx?GRI_SN=${coli_sn}&VEI_SN=${travelAgencyId}`; const reservationPreviewUrl = OFFICEWEBVIEWERURL + encodeURIComponent(reservationUrl); - - // console.log(reservationPreviewUrl); + const [form] = Form.useForm(); + const { notification } = App.useApp(); + //console.log(reservationPreviewUrl); //乘客列表 const guestListColumns = [ @@ -98,79 +107,185 @@ const AirticketPlan = props => { }, ]; + //费用列表 + const costListColumns = [ + { + title: "费用类型", + key: "CostType", + dataIndex: "CostType", + }, + { + title: "金额", + key: "Cost", + dataIndex: "Cost", + }, + { + title: "PNR", + key: "PNR", + dataIndex: "PNR", + }, + { + title: "FlightCost", + key: "FlightCost", + dataIndex: "FlightCost", + }, + { + title: "Discount", + key: "Discount", + dataIndex: "Discount", + }, + { + title: "ServiceFee", + key: "ServiceFee", + dataIndex: "ServiceFee", + }, + { + title: "DateTime", + key: "DateTime", + dataIndex: "DateTime", + }, + { + title: "FlightType", + key: "FlightType", + dataIndex: "FlightType", + }, + { + title: "Memo", + key: "Memo", + dataIndex: "Memo", + }, + { + title: "编辑", + key: "CLF_SN", + dataIndex: "CLF_SN", //GRI_SN VEI_SN + }, + ]; + const Airticket_form = props => { - const aitInfo = props.airInfo; + const airInfo = props.airInfo; return ( <> -
- - - } value={aitInfo.FromCity} /> - } value={aitInfo.ToCity} /> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + { + postFlightDetail(airInfo.CLF_SN, airInfo.GRI_SN, airInfo.VEI_SN, airInfo, values) + .then(() => { + notification.success({ + message: `成功`, + description: "机票信息保存成功!", + placement: "top", + duration: 4, + icon: , + }); + }) + .catch(() => { + notification.error({ + message: `错误`, + description: "保存失败", + placement: "top", + duration: 4, + icon: , + }); + }); + }} + autoComplete="off"> + + + + } /> + + + } /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - 费用列表 - - + + + + + + + + + + + + + 费用列表 +
+ + ); }; @@ -180,7 +295,7 @@ const AirticketPlan = props => { ? planDetail.map(item => { return { key: item.id, - label: `${item.StartDate} 计划: ${item.FlightInfo}`, + label: `${item.StartDate}`, children: , }; }) @@ -222,7 +337,7 @@ const AirticketPlan = props => { const TicketModal = () => { return ( <> - +
{ // 机票信息编辑表单 end useEffect(() => { - getPlanDetail(travelAgencyId, coli_sn); + getPlanDetail(travelAgencyId, gri_sn); getGuestList(travelAgencyId, coli_sn); - console.log(detail_items()); }, []); return ( diff --git a/src/views/products/Detail.jsx b/src/views/products/Detail.jsx index 2aa7a7e..9b05614 100644 --- a/src/views/products/Detail.jsx +++ b/src/views/products/Detail.jsx @@ -1182,7 +1182,6 @@ function Detail() { } { - !isCanEditable && } @@ -1229,11 +1228,11 @@ function Detail() { setBatchImportPriceVisible(false)} - width="80%" + width={'90%'} > diff --git a/src/views/products/Detail/BatchImportPrice.jsx b/src/views/products/Detail/BatchImportPrice.jsx index 0b35796..ab56f58 100644 --- a/src/views/products/Detail/BatchImportPrice.jsx +++ b/src/views/products/Detail/BatchImportPrice.jsx @@ -1,371 +1,366 @@ -import React, { useState } from 'react'; -import { Button, Card, Checkbox, Col, DatePicker, Form, Input, Row, Select, Space, Tag, Table, InputNumber } from 'antd'; -import { CloseOutlined } from '@ant-design/icons'; -import dayjs from 'dayjs'; +import { useState } from 'react'; +import { Button, Card, Checkbox, Table, Col, Flex, DatePicker, Typography, Form, Input, Row, Select, Space } from 'antd'; +import dayjs from "dayjs"; +import { useTranslation } from 'react-i18next'; +import { CloseOutlined, StarOutlined } from '@ant-design/icons'; import { useDatePresets } from '@/hooks/useDatePresets'; const { Option } = Select; const { RangePicker } = DatePicker; const BatchImportPrice = ({ onBatchImportData }) => { - const [form] = Form.useForm(); - const [tags, setTags] = useState([]); - const [minPeople, setMinPeople] = useState(''); - const [maxPeople, setMaxPeople] = useState(''); - const [checkedDays, setCheckedDays] = useState([]); - const [tableData, setTableData] = useState([]); - const [sendData, setSendData] = useState(null); - const presets = useDatePresets(); + const { t } = useTranslation() - const handleTagClose = (removedTag) => { - setTags(tags.filter(tag => tag !== removedTag)); - }; - - const handleInputConfirm = () => { - if (minPeople && maxPeople) { - const tag = `${minPeople}-${maxPeople}`; - if (tags.indexOf(tag) === -1) { - setTags([...tags, tag]); - } - } - setMinPeople(''); - setMaxPeople(''); - }; - - const handleCheckboxChange = (checkedValues) => { - setCheckedDays(checkedValues); - }; - - const generateTableData = () => { - const values = form.getFieldsValue(); - const weekdays = checkedDays.join(','); - let tempSendData = []; - console.log("values",values) - // 遍历 items - values.items.forEach((item, index) => { - // 遍历 validPeriods - let tempValidPeriods = [] - item.validPeriods?.forEach((period) => { - console.log("period",period) - const validPeriod = period.validPeriod.map(date => date.format('YYYY-MM-DD')).join('~'); - tempValidPeriods.push(validPeriod) - // 更新 tempSendData 中每一个 tag 的值 - }); - const priceType = `批量设置价格 ${index + 1} ${item.currency}/${item.type}` - let tempData = [] - const unit_name = item.type - const currency = item.currency - tags.forEach((tag) => { - tempValidPeriods.forEach(validPeriod => { - const group_size_min = tag.split('-')[0] - const group_size_max = tag.split('-')[1] - let unit_id = null - const use_dates_start = validPeriod.split('~')[0] - const use_dates_end = validPeriod.split('~')[1] - if (unit_name === "每人") { - unit_id = 0 - } else { - unit_id = 1 - } - tempData.push({ group_size_min, group_size_max, validPeriod, unit_id, unit_name, use_dates_start, use_dates_end, currency, weekdays, tag, priceType }) - }); - }) - console.log("tempData", tempData) - tempSendData.push(...tempData) + const previewTableColumns = [ + { title: t('products:adultPrice'), dataIndex: 'adult_cost', width: '10%' }, + { title: t('products:childrenPrice'), dataIndex: 'child_cost', width: '10%' }, + { title: t('products:currency'), dataIndex: 'currency', width: '10%' }, + { + title: t('products:Types'), + dataIndex: 'unit', + width: '10%', + editable: true, + render: (text) => (text === '0' ? '每人' : text === '1' ? '每团' : text), + }, + { + title: t('products:number'), + dataIndex: 'group_size', + width: '10%', + editable: true, + render: (_, record) => `${record.group_size_min}-${record.group_size_max}` + }, + { + title: t('products:validityPeriod'), + dataIndex: 'validityPeriod', + width: '20%', + editable: true, + render: (_, record) => dayjs(record.use_dates_start).format('YYYY-MM-DD') + '~' + dayjs(record.use_dates_end).format('YYYY-MM-DD') + }, + { title: t('products:Weekdays'), dataIndex: 'weekdays', width: '10%' }, + ] - }); - - // 设置最终的发送数据 - setSendData([...tempSendData]); // 使用展开操作符确保传递给 setSendData 的是一个新对象 - const data = []; - values.items.forEach((item, index) => { - item.validPeriods?.forEach((period, idx) => { - const row = { - key: `${index}-${idx}`, - priceType: `批量设置价格 ${index + 1} ${item.currency}/${item.type}`, - validPeriod: period.validPeriod.map(date => date.format('YYYY-MM-DD')).join('~'), - currency: item.currency, - type: item.type, - }; - tags.forEach((tag, tagIndex) => { - row[`adultPrice${tagIndex + 1}`] = 0; // Initialize with 0 - row[`childrenPrice${tagIndex + 1}`] = 0; // Initialize with 0 - }); - data.push(row); - }); - }); - // setSendData([...tempSendData,data]); - setTableData(data); - // onBatchImportData(data); // 将生成的初始表格数据传递回父组件 - }; + const [priceForm] = Form.useForm() + const [previewData, setPreviewData] = useState([]) + const presets = useDatePresets() + const previewSetupPrice = () => { + let previewList = [] + const defList = priceForm.getFieldsValue().defList + defList.forEach(definition => { + const previewPrice = definition?.priceList.map(price => { + return { + adult_cost: price.priceInput.audultPrice, + child_cost: price.priceInput.childrenPrice, + group_size_min: price.priceInput.numberStart, + group_size_max: price.priceInput.numberEnd, - const handleTableChange = (age_type, value, tag, priceType) => { - if (age_type === 'adult_cost') { - console.log("sendData", sendData) - const updatedSendData = sendData.map((item) => { - console.log("item.priceType === priceType", item.priceType === priceType) - console.log("item.priceType", item.priceType) - console.log("priceType", priceType) - if (item.priceType === priceType && item.tag === tag) { - return { - ...item, - adult_cost: value, // 更新对应的 adult_cost 属性 - }; - } - return item; // 对于不匹配的项,保持不变 - }); - // 更新 sendData - console.log("updatedSendData", updatedSendData) - onBatchImportData(updatedSendData); - setSendData(updatedSendData); - } else { - const updatedSendData = sendData.map((item) => { - if (item.priceType === priceType && item.tag === tag) { - return { - ...item, - child_cost: value, // 更新对应的 child_cost 属性 - }; - } - return item; // 对于不匹配的项,保持不变 - }); - // 更新 sendData - onBatchImportData(updatedSendData); - setSendData(updatedSendData); + currency: definition.currency, + unit: definition.unitName, + use_dates_start: definition.useDate[0], + use_dates_end: definition.useDate[1], + weekdays: definition.weekend.join(','), } - }; - + }) + previewList.push(...previewPrice) + }) + setPreviewData(previewList) + } - const generatePeopleColumns = () => { - const columns = []; - tags.forEach((tag, index) => { - columns.push({ - title: tag, - children: [ - { - title: '成人价', - dataIndex: `adultPrice${index + 1}`, - key: `adultPrice${index + 1}`, - render: (text, record, rowIndex) => { - const sameTagRecords = tableData.filter(item => item.priceType === record.priceType); - const firstTagIndex = tableData.findIndex(item => item.priceType === record.priceType && item.validPeriod === sameTagRecords[0].validPeriod); - - if (rowIndex === firstTagIndex) { - return { - children: ( - `${value}`} - parser={value => value.replace(/[^\d]/g, '')} - onChange={(value) => handleTableChange('adult_cost', value, tag, record.priceType)} - /> - ), - props: { - rowSpan: sameTagRecords.length, - }, - }; - } else { - return { - props: { - rowSpan: 0, - }, - }; - } - }, - }, - { - title: '儿童价', - dataIndex: `childrenPrice${index + 1}`, - key: `childrenPrice${index + 1}`, - render: (text, record, rowIndex) => { - const sameTagRecords = tableData.filter(item => item.priceType === record.priceType); - const firstTagIndex = tableData.findIndex(item => item.priceType === record.priceType && item.validPeriod === sameTagRecords[0].validPeriod); - - if (rowIndex === firstTagIndex) { - return { - children: ( - `${value}`} - parser={value => value.replace(/[^\d]/g, '')} - onChange={(value) => handleTableChange('child_cost', value, tag, record.priceType)} - /> - ), - props: { - rowSpan: sameTagRecords.length, - }, - }; - } else { - return { - props: { - rowSpan: 0, - }, - }; - } - }, - } - ] - }); - }); - return columns; + const PriceInput = (props) => { + const { id, value = {}, onChange } = props + const [numberStart, setNumberStart] = useState(0) + const [numberEnd, setNumberEnd] = useState(0) + const [audultPrice, setAudultPrice] = useState(0) + const [childrenPrice, setChildrenPrice] = useState(0) + const triggerChange = (changedValue) => { + onChange?.({ + numberStart, + numberEnd, + audultPrice, + childrenPrice, + ...value, + ...changedValue, + }) + } + const onNumberStartChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(numberStart)) { + return + } + if (!('numberStart' in value)) { + setNumberStart(newNumber); + } + triggerChange({ + numberStart: newNumber, + }) + } + const onNumberEndChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(numberEnd)) { + return + } + if (!('numberEnd' in value)) { + setNumberEnd(newNumber) + } + triggerChange({ + numberEnd: newNumber, + }); + }; + const onAudultPriceChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(audultPrice)) { + return + } + if (!('audultPrice' in value)) { + setAudultPrice(newNumber) + } + triggerChange({ + audultPrice: newNumber, + }) + } + const onChildrenPriceChange = (e) => { + const newNumber = parseInt(e.target.value || '0', 10) + if (Number.isNaN(childrenPrice)) { + return + } + if (!('childrenPrice' in value)) { + setChildrenPrice(newNumber) + } + triggerChange({ + childrenPrice: newNumber, + }) }; - - - const columns = [ - { - title: ' ', - dataIndex: 'priceType', - key: 'priceType', - width: "10%", - render: (text, record, index) => { - const obj = { - children: text, - props: {}, - }; - if (index > 0 && text === tableData[index - 1].priceType) { - obj.props.rowSpan = 0; - } else { - obj.props.rowSpan = tableData.filter(item => item.priceType === text).length; - } - return obj; - }, - }, - { - title: '有效期\\人等', - dataIndex: 'validPeriod', - key: 'validPeriod', - width: "15%" - }, - ...generatePeopleColumns(), - ]; - return ( -
- - -
- - setMinPeople(e.target.value)} - /> - - setMaxPeople(e.target.value)} - /> - - - - - - - -
- {tags.map((tag) => ( - handleTagClose(tag)}> - {tag} - - ))} -
- - - + + + + + + + ) + } - - - {(fields, { add, remove }) => ( -
- {fields.map((field, index) => ( - remove(field.name)} />} - > - - - + const priceInitialValues = { + "defList": [ + // 旺季 + { + "useDate": [ + dayjs().add(1, 'year').startOf("y"), dayjs().add(1, 'year').endOf("y") + ], + "unitName": "每人", + "currency": "CNY", + "weekend": [ + "5", + "6" + ], + "priceList": [ + { + "priceInput": { + "numberStart": 1, + "numberEnd": 2, + "audultPrice": 0, + "childrenPrice": 0 + } + }, + { + "priceInput": { + "numberStart": 3, + "numberEnd": 4, + "audultPrice": 0, + "childrenPrice": 0 + } + }, + { + "priceInput": { + "numberStart": 5, + "numberEnd": 6, + "audultPrice": 0, + "childrenPrice": 0 + } + }, + { + "priceInput": { + "numberStart": 7, + "numberEnd": 9, + "audultPrice": 0, + "childrenPrice": 0 + } + } + ] + }, + // 淡季 + { + "useDate": [ + dayjs().add(1, 'year').subtract(2, "M").startOf("M"), dayjs().add(1, 'year').endOf("M") + ], + "unitName": "每人", + "currency": "CNY", + "weekend": [ + "5", + "6" + ], + "priceList": [ + { + "priceInput": { + "numberStart": 1, + "numberEnd": 2, + "audultPrice": 0, + "childrenPrice": 0 + } + }, + { + "priceInput": { + "numberStart": 3, + "numberEnd": 4, + "audultPrice": 0, + "childrenPrice": 0 + } + }, + { + "priceInput": { + "numberStart": 5, + "numberEnd": 6, + "audultPrice": 0, + "childrenPrice": 0 + } + }, + { + "priceInput": { + "numberStart": 7, + "numberEnd": 9, + "audultPrice": 0, + "childrenPrice": 0 + } + } + ] + } + ] + } - - - + return ( + +
+ + + {(fields, { add, remove }) => ( + + {fields.map((field, index) => ( + { + remove(field.name) + }} />} + > + + + - - - {(periodFields, periodOpt) => ( -
- {periodFields.map((periodField, idx) => ( - - - - - periodOpt.remove(periodField.name)} /> - - ))} - -
- )} -
-
-
+ + + + + + + + + + + + {(priceFieldList, priceOptList) => ( + + {priceFieldList.map((priceField, index) => ( + + + + + {index==0?: priceOptList.remove(priceField.name)} />} + ))} - - - )} - - - - - - {tableData.length > 0 && ( -
-
- + + )} + + + + ))} + + + )} + + + {() => ( + +
{JSON.stringify(priceForm.getFieldsValue(), null, 2)}
+
)} - - ); +
+ + + + +
+ + + ); }; export default BatchImportPrice;