diff --git a/dist.zip b/dist.zip index cc0de03..81c4453 100644 Binary files a/dist.zip and b/dist.zip differ diff --git a/package.json b/package.json index 3f9f7b6..7a268b2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ant-design-pro", - "version": "4.5.95", + "version": "4.5.111", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { diff --git a/src/assets/refreshIcon.png b/src/assets/refreshIcon.png new file mode 100644 index 0000000..951f884 Binary files /dev/null and b/src/assets/refreshIcon.png differ diff --git a/src/layouts/BasicLayout.tsx b/src/layouts/BasicLayout.tsx index 4773ee1..23b4131 100644 --- a/src/layouts/BasicLayout.tsx +++ b/src/layouts/BasicLayout.tsx @@ -461,7 +461,7 @@ const BasicLayout: React.FC = (props) => { // 商品属性 - getFieldEnumTree({ FieldExplainField: 'COMMODITY_NATURE' }).then((COMMODITYNATURE: any) => { + getFieldEnumTree({ FieldExplainField: 'COMMODITY_NATURE', FieldEnumStatus: true }).then((COMMODITYNATURE: any) => { if (COMMODITYNATURE && COMMODITYNATURE.length > 0) { const obj: any = {} const list: any = [] diff --git a/src/pages/Setting/Users/components/edit.tsx b/src/pages/Setting/Users/components/edit.tsx index dd1986f..7864586 100644 --- a/src/pages/Setting/Users/components/edit.tsx +++ b/src/pages/Setting/Users/components/edit.tsx @@ -20,7 +20,6 @@ import { handeGetMERCHANTSList } from "@/pages/travelMember/service"; // 提交账号数据 const handleAddUpdate = async (item: any, type: boolean) => { console.log('handleAddUpdate', item); - const loading = message.loading("正在提交...") const result = await updataUser(item) @@ -382,7 +381,6 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, // setShowServiceList(initDetail.PushList[0].type) setShowWeChatFlag(initDetail.PushPermission) - // 请求获取该账户绑定的角色拥有的模块权限 if (initDetail.SystemRoleList.length > 0) { getRoleMenu(initDetail.SystemRoleList.toString()) @@ -393,7 +391,7 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, handleGetMerchantTree() - + setSelectDetail('530000') // , USER_PATTERN: currentUser?.UserPattern setInitialDetail({ USER_STATUS: 1, USER_REPEATLOGON: 1, SUPER_ADMIN: 0 }) // , USER_PATTERN: currentUser?.UserPattern @@ -407,6 +405,7 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, setCheckedServerpart([]) // 清空选择的服务区/门店 getShopTree(BUSINESSMAN_ID?.value) } + console.log('没有'); return { USER_STATUS: 1, USER_REPEATLOGON: 1, SUPER_ADMIN: 0, USER_PROVINCE: 911 } @@ -830,7 +829,6 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, { - + detailForm.current?.setFieldsValue({ USERTYPE_ID: '' }) + setInitialDetail({ ...initialDetail, BUSINESSMAN_NAME: options.label }) + setCheckedServerpart([]) // 清空选择的服务区/门店 + getShopTree(value) }} placeholder="请选择所属供应商" allowClear @@ -852,6 +853,12 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab, : '' } + + + { @@ -284,6 +284,9 @@ const MallClassificationManage: React.FC<{ currentUser: CurrentUser | undefined STAFF_ID: currentUser?.ID, STAFF_NAME: currentUser?.Name, OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + WECHATAPP_APPID: "wxee018fb96955552a", + WECHATAPPSIGN_NAME: "彩云驿出行", + WECHATAPPSIGN_ID: 38 } } else { req = { @@ -299,6 +302,9 @@ const MallClassificationManage: React.FC<{ currentUser: CurrentUser | undefined STAFF_NAME: currentUser?.Name, OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), USERDEFINEDTYPE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), + WECHATAPP_APPID: "wxee018fb96955552a", + WECHATAPPSIGN_NAME: "彩云驿出行", + WECHATAPPSIGN_ID: 38 } } const data = await handlSynchroUSERDEFINEDTYPE(req) @@ -314,6 +320,8 @@ const MallClassificationManage: React.FC<{ currentUser: CurrentUser | undefined actionRef.current?.reload() handlesyncWeChatGetMallGoodsType({ appId: 'wxee018fb96955552a' }) + handlecsyncWeChatGetMallGoodsInfo({ appId: 'wxee018fb96955552a', userdefinedTypeId: data.Result_Data.USERDEFINEDTYPE_PID === -1 ? data.Result_Data.USERDEFINEDTYPE_ID : data.Result_Data.USERDEFINEDTYPE_PID }) + } else { message.error(data.Result_Desc) } @@ -473,7 +481,7 @@ const MallClassificationManage: React.FC<{ currentUser: CurrentUser | undefined + + + { return treeData.map(item => { @@ -144,6 +144,23 @@ const LeftSelectMallType = ({ setSelectedId, reload, actionRef, currentUser, wid return newItem; }); }; + // 因为现在要添加一个刷新 所以将获取左侧列数据的方法 包成一个方法 可以去调用 + const handleRefreshData = async () => { + const req = { + OWNERUNIT_ID: '911', + PROVINCE_CODE: "", + GOODSTYPE: 4000, + USERDEFINEDTYPE_STATE: 1, + SCANCODE_ORDER: 1 + } + const data = await handlGetUSERDEFINEDTYPEList(req); + setTreeView(data) + setData(data) + + session.set("USERDEFINEDTYPEList", data) + setAllTreeViews(data) + return data + } return (
@@ -152,6 +169,9 @@ const LeftSelectMallType = ({ setSelectedId, reload, actionRef, currentUser, wid className="pageTable-leftnav" bodyStyle={{ padding: 0, paddingTop: 20, paddingLeft: 20, width: !collapsible ? width ? `${width}px` : "300px" : "60px" }} extra={
+ { + handleRefreshData() + }} /> { setShowServiceSearchBox(true) }} /> diff --git a/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx b/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx index 3e870bc..eb837ed 100644 --- a/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx +++ b/src/pages/travelMember/ProductListingManagement/component/SelectSetMealItems.tsx @@ -19,9 +19,10 @@ type DetailProps = { leftTreeData?: TreeDataType[] onRef?: any comboCommodityDetail?: any // 查询到的套餐数据 + parentFormRef?: any // 父级的表单实例 }; -const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: DetailProps) => { +const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail, parentFormRef }: DetailProps) => { // 判断用户是否点击了 添加套餐商品的按钮 const [isClickAdd, setIsClickAdd] = useState(comboCommodityDetail && comboCommodityDetail.length > 0 ? true : false); // 表格数据 @@ -82,7 +83,7 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入商品名称" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, COMMODITY_NAME: e.target.value }; } return item; @@ -111,11 +112,11 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai onBlur={(e) => { console.log('tableDatatableDatatableData', tableData); console.log('recordrecordrecordrecord', record); - const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, COMMODITY_BARCODE: e.target.value }; } + return item; }); setTableData(newData); @@ -175,7 +176,7 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入商品单位" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, COMMODITY_UNIT: e.target.value }; } return item; @@ -203,7 +204,7 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入商品规格" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, COMMODITY_RULE: e.target.value }; } return item; @@ -231,12 +232,25 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入市场价" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { - return { ...item, COMMODITY_RETAILPRICE: e.target.value }; + if (item.id !== 'addRow' && item.id === record?.id) { + return { ...item, COMMODITY_RETAILPRICE: Number(e.target.value) }; } return item; }); + console.log('newDatanewDatanewDatanewData', JSON.parse(JSON.stringify(newData))); setTableData(newData); + // 重新算合计 + if (parentFormRef) { + console.log('newDatanewDatanewDatanewData', newData); + + let COMMODITY_RETAILPRICESUM: number = 0 + newData.forEach((item: any) => { + if (item.id !== 'addRow') { + COMMODITY_RETAILPRICESUM += item.COMMODITY_RETAILPRICE ? Number(item.COMMODITY_RETAILPRICE) : 0 + } + }) + parentFormRef.current.setFieldsValue({ COMMODITY_RETAILPRICE: Number(COMMODITY_RETAILPRICESUM.toFixed(2)) }) + } }} /> }, @@ -259,12 +273,23 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入零售价格" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, COMMODITY_MEMBERPRICE: e.target.value }; } return item; }); setTableData(newData); + + // 重新算合计 + if (parentFormRef) { + let COMMODITY_MEMBERPRICESUM: number = 0 + newData.forEach((item: any) => { + if (item.id !== 'addRow') { + COMMODITY_MEMBERPRICESUM += item.COMMODITY_MEMBERPRICE ? Number(item.COMMODITY_MEMBERPRICE) : 0 + } + }) + parentFormRef.current.setFieldsValue({ COMMODITY_MEMBERPRICE: Number(COMMODITY_MEMBERPRICESUM.toFixed(2)) }) + } }} /> }, @@ -287,12 +312,23 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入商品成本" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, COMMODITY_PURCHASEPRICE: e.target.value }; } return item; }); setTableData(newData); + + // 重新算合计 + if (parentFormRef) { + let COMMODITY_PURCHASEPRICESUM: number = 0 + newData.forEach((item: any) => { + if (item.id !== 'addRow') { + COMMODITY_PURCHASEPRICESUM += item.COMMODITY_PURCHASEPRICE ? Number(item.COMMODITY_PURCHASEPRICE) : 0 + } + }) + parentFormRef.current.setFieldsValue({ COMMODITY_PURCHASEPRICE: Number(COMMODITY_PURCHASEPRICESUM.toFixed(2)) }) + } }} /> }, @@ -317,7 +353,7 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入商品税率" onChange={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, DUTY_PARAGRAPH: e }; } return item; @@ -361,7 +397,7 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai placeholder="请输入商品税务代码" onBlur={(e) => { const newData = tableData.map((item: any) => { - if ((item.id && record.id && item.id === record.id) || item.COMMODITY_BARCODE === record.COMMODITY_BARCODE) { + if (item.id !== 'addRow' && item.id === record?.id) { return { ...item, TAX_CODE: e.target.value }; } return item; @@ -387,9 +423,26 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai { - console.log('tableDatatableDatatableData', tableData); - const newData = tableData.filter((item: any) => item.COMMODITY_BARCODE !== record.COMMODITY_BARCODE && item.id !== 'addRow'); - console.log('newDatanewDatanewData', newData); + console.log('22222', JSON.parse(JSON.stringify(record))); + console.log('tableData', JSON.parse(JSON.stringify(tableData))); + const newData = tableData.filter((item: any) => item.id !== record.id && item?.id !== 'addRow'); + + + if (parentFormRef) { + let COMMODITY_RETAILPRICESUM: number = 0 + let COMMODITY_MEMBERPRICESUM: number = 0 + let COMMODITY_PURCHASEPRICESUM: number = 0 + + newData.forEach((item: any) => { + if (item.id !== 'addRow') { + COMMODITY_RETAILPRICESUM += item.COMMODITY_RETAILPRICE ? Number(item.COMMODITY_RETAILPRICE) : 0 + COMMODITY_MEMBERPRICESUM += item.COMMODITY_MEMBERPRICE ? Number(item.COMMODITY_MEMBERPRICE) : 0 + COMMODITY_PURCHASEPRICESUM += item.COMMODITY_PURCHASEPRICE ? Number(item.COMMODITY_PURCHASEPRICE) : 0 + } + }) + parentFormRef.current.setFieldsValue({ COMMODITY_RETAILPRICE: Number(COMMODITY_RETAILPRICESUM.toFixed(2)), COMMODITY_MEMBERPRICE: Number(COMMODITY_MEMBERPRICESUM.toFixed(2)), COMMODITY_PURCHASEPRICE: Number(COMMODITY_PURCHASEPRICESUM.toFixed(2)) }) + } + setTableData([...newData, { id: "addRow", }]); @@ -405,7 +458,8 @@ const SelectSetMealItems = ({ leftTreeData, onRef, comboCommodityDetail }: Detai // 暴露表格数据 useImperativeHandle(onRef, () => ({ tableData, - setIsClickAdd + setIsClickAdd, + isClickAdd })); return (
diff --git a/src/pages/travelMember/ProductListingManagement/component/style.less b/src/pages/travelMember/ProductListingManagement/component/style.less index 2b979a6..725a6a1 100644 --- a/src/pages/travelMember/ProductListingManagement/component/style.less +++ b/src/pages/travelMember/ProductListingManagement/component/style.less @@ -1,29 +1,39 @@ -.pageTable-leftnav{ - .leftSelectBox{ - position: relative; - .searchIcon{ - width: 20px; - height: 20px; - cursor: pointer; - margin-right: 15px; - } - .fixedBox{ - position: absolute; - width: 275px; - background: #fff; - right: -10px; - box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); - border-radius: 8px; - box-sizing: border-box; - padding: 12px; - z-index: 2; - display: flex; - align-items: center; - .noBottom{ - .ant-form-item{ - margin-bottom: 0!important; - } +.pageTable-leftnav { + .leftSelectBox { + position: relative; + + .searchIcon { + width: 20px; + height: 20px; + cursor: pointer; + margin-right: 15px; + } + + .refreshIcon { + width: 18px; + height: 18px; + cursor: pointer; + margin-right: 15px; + } + + .fixedBox { + position: absolute; + width: 275px; + background: #fff; + right: -10px; + box-shadow: 0 3px 6px -4px rgba(0, 0, 0, 0.12), 0 6px 16px 0 rgba(0, 0, 0, 0.08), 0 9px 28px 8px rgba(0, 0, 0, 0.05); + border-radius: 8px; + box-sizing: border-box; + padding: 12px; + z-index: 2; + display: flex; + align-items: center; + + .noBottom { + .ant-form-item { + margin-bottom: 0 !important; } } } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/src/pages/travelMember/ProductListingManagement/index.tsx b/src/pages/travelMember/ProductListingManagement/index.tsx index 5621b31..6ec5c94 100644 --- a/src/pages/travelMember/ProductListingManagement/index.tsx +++ b/src/pages/travelMember/ProductListingManagement/index.tsx @@ -742,13 +742,35 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop const handleAddUpdate = async (res: any, type?: string) => { let itemList = setSelectSetMealItemsRef.current.tableData - if (itemList && itemList.length > 0) { + let isClickAdd = setSelectSetMealItemsRef.current.isClickAdd + + console.log('itemListitemList', itemList); + // 判断一下是不是套餐商品 即itemList 长度为1时 id是否为addRow + let isCombo: boolean = false + if (itemList && itemList.length > 1) { + isCombo = true + } else if (itemList && itemList.length === 1) { + if (itemList[0].id !== 'addRow') { + isCombo = true + } + } + + if (isCombo && isClickAdd) { + // 拿到市场价、零售价格、商品成本的 合计值 + let COMMODITY_RETAILPRICESUM: number = 0 + let COMMODITY_MEMBERPRICESUM: number = 0 + let COMMODITY_PURCHASEPRICESUM: number = 0 + + itemList = itemList.filter((item: any) => item.id !== 'addRow') // 判断条码 是否都填了 let isCodeAllOK: boolean = true itemList.forEach((item: any) => { + COMMODITY_RETAILPRICESUM += Number(item.COMMODITY_RETAILPRICE) + COMMODITY_MEMBERPRICESUM += Number(item.COMMODITY_MEMBERPRICE) + COMMODITY_PURCHASEPRICESUM += Number(item.COMMODITY_PURCHASEPRICE) // item.USERDEFINEDTYPE_ID = item.USERDEFINEDTYPE_ID && item.USERDEFINEDTYPE_ID.length > 0 ? item.USERDEFINEDTYPE_ID.toString() : item.USERDEFINEDTYPE_ID - item.COMMODITY_TYPE = 4000 + item.COMMODITY_TYPE = 5000 item.UPPER_STATE = 1 item.PROVINCE_CODE = currentUser?.ProvinceCode item.COMMODITY_STATE = 1 @@ -759,12 +781,33 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop isCodeAllOK = false } }) + if (!isCodeAllOK) { message.error('请填写完整的套餐内单品信息!'); handleConfirmLoading(false) return } + if (Number(COMMODITY_RETAILPRICESUM.toFixed(2)) !== Number(res.COMMODITY_RETAILPRICE.toFixed(2))) { + message.error('套餐内单品市场价合计值与套餐市场价不一致'); + handleConfirmLoading(false) + return + } + + if (Number(COMMODITY_MEMBERPRICESUM.toFixed(2)) !== Number(res.COMMODITY_MEMBERPRICE.toFixed(2))) { + message.error('套餐内单品零售价合计值与套餐零售价不一致'); + handleConfirmLoading(false) + return + } + + if (Number(COMMODITY_PURCHASEPRICESUM.toFixed(2)) !== Number(res.COMMODITY_PURCHASEPRICE.toFixed(2))) { + message.error('套餐内单品成本价合计值与套餐成本价不一致'); + handleConfirmLoading(false) + return + } + + } + let req: any = {} if (currentRow?.USERDEFINEDTYPE_ID && type !== 'saveAs') { req = { @@ -784,11 +827,18 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop COMMODITY_TYPE: 4000, COMMODITY_STATE: 1, USERDEFINEDTYPE_ID: "", + DATAFORMAT: currentUser?.UserPattern === 4000 ? 1 : res?.DATAFORMAT, OPERATE_TIME: moment().format('YYYY-MM-DD HH:mm:ss'), UPPER_DATE: res.UPPER_DATE && res.UPPER_DATE.length > 0 ? moment(res.UPPER_DATE[0]).format('YYYY-MM-DD HH:mm:ss') : "", OFF_DATE: res.UPPER_DATE && res.UPPER_DATE.length > 0 ? moment(res.UPPER_DATE[1]).format('YYYY-MM-DD HH:mm:ss') : "", WECHATAPP_APPID: "wxee018fb96955552a", - WECHATAPPSIGN_NAME: "彩云驿出行" + WECHATAPPSIGN_NAME: "彩云驿出行", + COMMODITY_EN: res.COMMODITY_EN || "", + COMMODITY_INDEX: res.COMMODITY_INDEX || "", + COMMODITY_POINT: res.COMMODITY_POINT || "", + REMINDER_DAY: res.REMINDER_DAY || "", + LIMIT_TOTALCOUNT: res.LIMIT_TOTALCOUNT || "", + LIMIT_DAILYCOUNT: res.LIMIT_DAILYCOUNT || "", } } else { req = { @@ -805,20 +855,26 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop OPERATE_PERSON: currentUser?.Name, SELLER_ID: currentUser?.ID, COMMODITY_TYPE: 4000, + DATAFORMAT: currentUser?.UserPattern === 4000 ? 1 : res?.DATAFORMAT, COMMODITY_STATE: 1, USERDEFINEDTYPE_ID: "", OPERATE_TIME: moment().format('YYYY-MM-DD HH:mm:ss'), UPPER_DATE: res.UPPER_DATE && res.UPPER_DATE.length > 0 ? moment(res.UPPER_DATE[0]).format('YYYY-MM-DD HH:mm:ss') : "", OFF_DATE: res.UPPER_DATE && res.UPPER_DATE.length > 0 ? moment(res.UPPER_DATE[1]).format('YYYY-MM-DD HH:mm:ss') : "", WECHATAPP_APPID: "wxee018fb96955552a", - WECHATAPPSIGN_NAME: "彩云驿出行" + WECHATAPPSIGN_NAME: "彩云驿出行", + COMMODITY_EN: res.COMMODITY_EN || "", + COMMODITY_INDEX: res.COMMODITY_INDEX || "", + COMMODITY_POINT: res.COMMODITY_POINT || "", + REMINDER_DAY: res.REMINDER_DAY || "", + LIMIT_TOTALCOUNT: res.LIMIT_TOTALCOUNT || "", + LIMIT_DAILYCOUNT: res.LIMIT_DAILYCOUNT || "", } } - // 同步商品数据 因为添加了套餐数据 最方便的方法 就是在当前基础上 换接口 所以换入参 const newReq: any = { commodityModel: req, - singleCommodityList: itemList && itemList.length > 0 ? itemList : '' + singleCommodityList: isCombo && isClickAdd ? itemList && itemList.length > 0 ? itemList : '' : '' } console.log('newReqnewReq', newReq); @@ -1087,6 +1143,18 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop return result; } + const addDisabledForParent = (list: any[]): any[] => { + return list.map(item => { + const hasChildren = Array.isArray(item.children) && item.children.length > 0; + + return { + ...item, + disabled: hasChildren, // ⭐ 只新增这一行 + children: hasChildren ? addDisabledForParent(item.children) : item.children, + }; + }); + }; + return (
@@ -1156,6 +1224,11 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop ] res = formatTreeData(JSON.parse(JSON.stringify(data.List)), [], enumList, [COMMODITYNATUREList, PAY_METHODList, UPPER_STATEList, COMMODITY_STATEList], []) console.log('resresresres', res); + let nameList: any = [] + res.forEach((item: any) => { + nameList.push(item.COMMODITY_NAME) + }) + console.log('nameListnameList', nameList); setReqDetailList(res) return { data: data.List, success: true, total: data.TotalCount } } @@ -1303,6 +1376,7 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop setDetailImgList([]) setRelevanceCouponList([]) setSelectRelevanceId([]) + setComboCommodityDetail([]) // setBRAND_NAMEList([]) }} footer={
@@ -1457,7 +1531,12 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop let data: any = res.commodityModel setCurrentRowDetail(data) - setComboCommodityDetail(res.singleCommodityList || []) + // 处理一下 多个id字段 让商品条码等于id字段 这样就可以有唯一行号了 + let list: any = res.singleCommodityList && res.singleCommodityList.length > 0 ? JSON.parse(JSON.stringify(res.singleCommodityList)) : [] + list.forEach((item: any) => { + item.id = item.COMMODITY_BARCODE + }) + setComboCommodityDetail(list || []) let mainImgList: any = [] let headerImgList: any = [] @@ -1518,7 +1597,8 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop } else { return { OPERATE_PERSON: currentUser?.Name, - UPPER_STATE: currentUser?.SupplierID ? 0 : "" + UPPER_STATE: currentUser?.SupplierID ? 0 : "", + MERCHANTS_ID: currentUser?.UserPattern === 4000 ? `${currentUser?.SupplierName}-${currentUser?.SupplierID}` : "", } } } @@ -1561,7 +1641,27 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop { + if (COMMODITYNATUREList && COMMODITYNATUREList.length > 0) { + return COMMODITYNATUREList + } else { + const COMMODITYNATURE = await getFieldEnumTree({ FieldExplainField: 'COMMODITY_NATURE', FieldEnumStatus: true }) + if (COMMODITYNATURE && COMMODITYNATURE.length > 0) { + const obj: any = {} + const list: any = [] + COMMODITYNATURE.forEach((item: any) => { + list.push({ label: item.label, value: item.value }) + obj[item.value] = item.label + }) + session.set('COMMODITYNATUREList', list); + session.set('COMMODITYNATUREObj', obj); + session.set('COMMODITYNATURETree', COMMODITYNATURE); + return list + } + return [] + } + }} rules={[ { required: true, @@ -1625,7 +1725,15 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop name="USERDEFINEDTYPE_ID" label="商品分类" request={async () => { - return leftTreeData + if (leftTreeData && leftTreeData.length > 0) { + let list: any = JSON.parse(JSON.stringify(leftTreeData)) + list = addDisabledForParent(list) + console.log('listlist', list); + + return list + } else { + return [] + } }} fieldProps={{ fieldNames: { @@ -1635,6 +1743,7 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop showSearch: true, multiple: true, // 支持多选 allowClear: true, // 允许清除和删除 + treeDefaultExpandAll: true, filterTreeNode: (input, node) => (node.USERDEFINEDTYPE_NAME || '').toLowerCase().includes(input.toLowerCase()) }} @@ -1701,6 +1810,12 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop @@ -1777,7 +1892,27 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop { + if (PAYMETHODList && PAYMETHODList.length > 0) { + return PAYMETHODList + } else { + const PAYMETHOD = await getFieldEnumTree({ FieldExplainField: 'PAY_METHOD' }) + if (PAYMETHOD && PAYMETHOD.length > 0) { + const obj: any = {} + const list: any = [] + PAYMETHOD.forEach((item: any) => { + list.push({ label: item.label, value: item.value }) + obj[item.value] = item.label + }) + session.set('PAYMETHODList', list); + session.set('PAYMETHODObj', obj); + session.set('PAYMETHODTree', PAYMETHOD); + return list + } + return [] + } + }} rules={[ { required: true, @@ -1790,7 +1925,27 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop { + if (DUTYPARAGRAPHList && DUTYPARAGRAPHList.length > 0) { + return DUTYPARAGRAPHList + } else { + const DUTYPARAGRAPH = await getFieldEnumTree({ FieldExplainField: 'DUTY_PARAGRAPH' }) + if (DUTYPARAGRAPH && DUTYPARAGRAPH.length > 0) { + const obj: any = {} + const list: any = [] + DUTYPARAGRAPH.forEach((item: any) => { + list.push({ label: item.label, value: item.value }) + obj[item.value] = item.label + }) + session.set('DUTYPARAGRAPHList', list); + session.set('DUTYPARAGRAPHObj', obj); + session.set('DUTYPARAGRAPHTree', DUTYPARAGRAPH); + return list + } + return [] + } + }} rules={[ { required: true, @@ -1857,7 +2012,7 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop {/* 若是一个套餐商品 那么这里就要有一个录入套餐商品的地方 */} - + 配送信息 @@ -1890,7 +2045,7 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop 上架信息 = (prop label="小程序" options={[ { label: "彩云驿", value: 37 }, - { label: "彩云驿商城", value: 38 }, + { label: "彩云驿出行", value: 38 }, ]} rules={[ { @@ -1946,23 +2101,28 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop disabled={currentUser?.SupplierID || currentUser?.UserPattern === 4000 ? true : false} /> - - - + { + currentUser?.UserPattern === 4000 ? + '' : + + + + } + = (prop handlePreview(1) }, fileList: mainImgList, // 绑定 fileList + customRequest: ({ file, onSuccess }) => { + // 自定义上传,不实际发送请求 + setTimeout(() => { + if (onSuccess) { + onSuccess({}); + } + }, 0); + }, onChange: async (info: any) => { if (info.file.status === 'removed') { const index = mainImgList.findIndex(n => n.uid === info.file.uid); diff --git a/src/pages/travelMember/TradingLedger/index.tsx b/src/pages/travelMember/TradingLedger/index.tsx index 6c2e925..286723a 100644 --- a/src/pages/travelMember/TradingLedger/index.tsx +++ b/src/pages/travelMember/TradingLedger/index.tsx @@ -349,7 +349,7 @@ const TradingLedger: React.FC<{ currentUser: CurrentUser }> = (props) => { { title: "商品条码", width: 150, - dataIndex: "商品条码", + dataIndex: "CommodityBarcode", }, { title: "供货商", diff --git a/src/utils/resizeImageHalf.ts b/src/utils/resizeImageHalf.ts index 04ed738..42aadd1 100644 --- a/src/utils/resizeImageHalf.ts +++ b/src/utils/resizeImageHalf.ts @@ -9,7 +9,7 @@ export interface ResizeHalfOptions { /** * 将图片的长宽分辨率精确减半 - * @param file 原始图片文件 + * @param file 原始图片文件 * @param options 压缩选项,包括质量参数(0-1,默认0.8) * @returns 压缩后的图片文件 */ @@ -51,13 +51,6 @@ function resizeToHalfDimensions( resolve: (file: File) => void, reject: (error: Error) => void ) { - // 判断是否需要压缩:只有当长或宽任意一边大于500px时才压缩 - if (img.width <= 500 && img.height <= 500) { - console.log(`图片尺寸 ${img.width}x${img.height} 不大于500px,无需压缩,返回原图`); - resolve(originalFile); - return; - } - const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); @@ -91,8 +84,11 @@ function resizeToHalfDimensions( return; } - // 保持原始文件名不变,避免服务器端根据文件名做特殊处理 - const newFileName = originalFile.name; + // 创建新的文件名,添加_resize_half后缀 + const fileNameParts = originalFile.name.split('.'); + const extension = fileNameParts.pop(); + const fileNameWithoutExtension = fileNameParts.join('.'); + const newFileName = `${fileNameWithoutExtension}_half.${extension}`; // 创建压缩后的文件对象 const resizedFile = new File([blob], newFileName, { @@ -102,7 +98,7 @@ function resizeToHalfDimensions( console.log(`✅ 图片尺寸减半完成: ${img.width}x${img.height} → ${halfWidth}x${halfHeight}`); console.log(`文件大小: ${(originalFile.size / 1024).toFixed(1)}KB → ${(resizedFile.size / 1024).toFixed(1)}KB`); - + resolve(resizedFile); }, originalFile.type, diff --git a/src/versionEnv.ts b/src/versionEnv.ts index cd3328a..bed407f 100644 --- a/src/versionEnv.ts +++ b/src/versionEnv.ts @@ -1,4 +1,4 @@ // 由 scripts/writeVersion.js 自动生成 -export const VERSION = "4.5.95"; -export const GIT_HASH = "1f17ff8"; -export const BUILD_TIME = "2025-12-22T03:06:07.263Z"; +export const VERSION = "4.5.111"; +export const GIT_HASH = "70a3b9e"; +export const BUILD_TIME = "2026-01-08T08:04:25.225Z";