diff --git a/dist.zip b/dist.zip index bebda2f..cc0de03 100644 Binary files a/dist.zip and b/dist.zip differ diff --git a/package.json b/package.json index 13693c8..3f9f7b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ant-design-pro", - "version": "4.5.92", + "version": "4.5.95", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { diff --git a/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx b/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx index 9cb96f7..3e870bc 100644 --- a/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx +++ b/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx @@ -2,8 +2,9 @@ import { connect } from "umi"; import type { ConnectState } from "@/models/connect"; import { useImperativeHandle, useState } from "react"; import ProTable from '@ant-design/pro-table'; -import { Button, Input, InputNumber, TreeSelect } from 'antd'; +import { Button, Input, InputNumber, Select, TreeSelect } from 'antd'; import type { ProColumns } from '@ant-design/pro-table'; +import session from "@/utils/session"; @@ -24,7 +25,18 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai // 判断用户是否点击了 添加套餐商品的按钮 const [isClickAdd, setIsClickAdd] = useState(comboCommodityDetail && comboCommodityDetail.length > 0 ? true : false); // 表格数据 - const [tableData, setTableData] = useState(comboCommodityDetail && comboCommodityDetail.length > 0 ? comboCommodityDetail : []); + const [tableData, setTableData] = useState(comboCommodityDetail && comboCommodityDetail.length > 0 ? [ + ...comboCommodityDetail, + { + id: "addRow", + } + ] : [ + { + id: "addRow", + } + ]); + + const DUTYPARAGRAPHList = session.get('DUTYPARAGRAPHList') // 表格列定义 const columns: any = [ @@ -33,14 +45,44 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai width: 250, align: 'center', dataIndex: 'COMMODITY_NAME', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children:
{ + const newData = { + id: Date.now(), + }; + if (tableData && tableData.length > 0) { + let oldList: any = JSON.parse(JSON.stringify(tableData)) + let newList: any = [] + let addRowObj: any = [] + oldList.forEach((item: any) => { + if (item.id === 'addRow') { + addRowObj = item + } else { + newList.push(item) + } + }) + newList = [...newList, newData] + newList.push(addRowObj) + setTableData(newList) + } + }} style={{ + width: '100%', fontSize: '14px', textAlign: 'center', boxSizing: 'border-box', lineHeight: '14px', cursor: 'pointer', + border: '1px dashed #d9d9d9', padding: '8px 0' + }}>+ 新增一行
, + props: { + colSpan: 10, // 合并所有列(包括操作列) + }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { return { ...item, COMMODITY_NAME: e.target.value }; } return item; @@ -48,21 +90,30 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai setTableData(newData); }} /> - ), + }, }, { title: '条码', width: 150, align: 'center', dataIndex: 'COMMODITY_BARCODE', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { + console.log('tableDatatableDatatableData', tableData); + console.log('recordrecordrecordrecord', record); + const newData = tableData.map((item: any) => { - if (item.id === record.id) { + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { return { ...item, COMMODITY_BARCODE: e.target.value }; } return item; @@ -70,7 +121,7 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai setTableData(newData); }} /> - ), + }, }, // { // title:
分类
, @@ -111,14 +162,20 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai width: 120, align: 'center', dataIndex: 'COMMODITY_UNIT', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { return { ...item, COMMODITY_UNIT: e.target.value }; } return item; @@ -126,21 +183,27 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai setTableData(newData); }} /> - ), + }, }, { title: '规格', width: 120, align: 'center', dataIndex: 'COMMODITY_RULE', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { return { ...item, COMMODITY_RULE: e.target.value }; } return item; @@ -148,73 +211,91 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai setTableData(newData); }} /> - ), + }, }, { title: '市场价', width: 120, align: 'center', dataIndex: 'COMMODITY_RETAILPRICE', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { - return { ...item, COMMODITY_RETAILPRICE: value as number }; + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + return { ...item, COMMODITY_RETAILPRICE: e.target.value }; } return item; }); setTableData(newData); }} /> - ), + }, }, { title: '零售价格', width: 120, align: 'center', dataIndex: 'COMMODITY_MEMBERPRICE', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { - return { ...item, COMMODITY_MEMBERPRICE: value as number }; + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + return { ...item, COMMODITY_MEMBERPRICE: e.target.value }; } return item; }); setTableData(newData); }} /> - ), + }, }, { title: '商品成本', width: 120, align: 'center', dataIndex: 'COMMODITY_PURCHASEPRICE', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { - return { ...item, COMMODITY_PURCHASEPRICE: value as number }; + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + return { ...item, COMMODITY_PURCHASEPRICE: e.target.value }; } return item; }); setTableData(newData); }} /> - ), + }, }, { @@ -222,36 +303,65 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai width: 120, align: 'center', dataIndex: 'DUTY_PARAGRAPH', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return + + // { + // const newData = tableData.map((item: any) => { + // if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + // return { ...item, DUTY_PARAGRAPH: e.target.value }; + // } + // return item; + // }); + // setTableData(newData); + // }} + // /> + }, }, { title: '税务代码', width: 120, align: 'center', dataIndex: 'TAX_CODE', - render: (_, record: any) => ( - { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return { + onBlur={(e) => { const newData = tableData.map((item: any) => { - if (item.id === record.id) { + if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { return { ...item, TAX_CODE: e.target.value }; } return item; @@ -259,30 +369,43 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai setTableData(newData); }} /> - ), + }, }, { title: '操作', align: 'center', valueType: 'option', width: 60, - render: (_, record: any) => [ - { - const newData = tableData.filter((item: any) => item.id !== record.id); - setTableData(newData); - }} - > - 删除 - , - ], + render: (_, record: any) => { + if (record?.id === "addRow") { + return { + children: '', + props: { colSpan: 0 }, + }; + } + return [ + { + console.log('tableDatatableDatatableData', tableData); + const newData = tableData.filter((item: any) => item.COMMODITY_BARCODE !== record.COMMODITY_BARCODE && item.id !== 'addRow'); + console.log('newDatanewDatanewData', newData); + setTableData([...newData, { + id: "addRow", + }]); + }} + > + 删除 + , + ]; + }, }, ]; // 暴露表格数据 useImperativeHandle(onRef, () => ({ - tableData + tableData, + setIsClickAdd })); return (
@@ -290,8 +413,11 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai isClickAdd ?
{ + return `${record?.id}-${record?.COMMODITY_BARCODE}` + }} + headerTitle={
套餐商品*商品名称、商品条码、商品单位、商品规格、零售价格、商品成本、税率、税务代码需必填
} columns={columns} dataSource={tableData} pagination={false} @@ -299,31 +425,31 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai options={false} bordered toolBarRender={() => [ - , - + // , + // ]} /> -
: -
- -
+
: '' + //
+ // + //
} ) diff --git a/src/pages/travelMember/ProductListingManagement/index.tsx b/src/pages/travelMember/ProductListingManagement/index.tsx index c531341..5621b31 100644 --- a/src/pages/travelMember/ProductListingManagement/index.tsx +++ b/src/pages/travelMember/ProductListingManagement/index.tsx @@ -741,10 +741,11 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop }; const handleAddUpdate = async (res: any, type?: string) => { - console.log('setSelectSetMealItemsRef', setSelectSetMealItemsRef.current) - console.log('resresresresresresresres', res) let itemList = setSelectSetMealItemsRef.current.tableData if (itemList && itemList.length > 0) { + itemList = itemList.filter((item: any) => item.id !== 'addRow') + // 判断条码 是否都填了 + let isCodeAllOK: boolean = true itemList.forEach((item: any) => { // item.USERDEFINEDTYPE_ID = item.USERDEFINEDTYPE_ID && item.USERDEFINEDTYPE_ID.length > 0 ? item.USERDEFINEDTYPE_ID.toString() : item.USERDEFINEDTYPE_ID item.COMMODITY_TYPE = 4000 @@ -753,9 +754,17 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop item.COMMODITY_STATE = 1 item.OWNERUNIT_ID = currentUser?.OwnerUnitId item.OWNERUNIT_NAME = currentUser?.OwnerUnitName + if (!item.COMMODITY_NAME || !item.COMMODITY_BARCODE || !item.COMMODITY_UNIT || !item.COMMODITY_RULE || + !item.COMMODITY_MEMBERPRICE || !item.COMMODITY_PURCHASEPRICE || !item.DUTY_PARAGRAPH || !item.TAX_CODE) { + isCodeAllOK = false + } }) + if (!isCodeAllOK) { + message.error('请填写完整的套餐内单品信息!'); + handleConfirmLoading(false) + return + } } - let req: any = {} if (currentRow?.USERDEFINEDTYPE_ID && type !== 'saveAs') { req = { @@ -889,9 +898,11 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop } } handleConfirmLoading(false) + handleModalVisible(false); } else { message.error(data.Result_Desc) handleConfirmLoading(false) + handleModalVisible(false); } }; @@ -1296,6 +1307,10 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop }} footer={
+