This commit is contained in:
ylj20011123 2026-01-08 18:15:18 +08:00
parent 70a3b9e4ec
commit 31a0a71e48
13 changed files with 374 additions and 99 deletions

BIN
dist.zip

Binary file not shown.

View File

@ -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": {

BIN
src/assets/refreshIcon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -461,7 +461,7 @@ const BasicLayout: React.FC<BasicLayoutProps> = (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 = []

View File

@ -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,
<Form.Item
name="BUSINESSMAN_ID"
label="所属供应商"
rules={[
{
required: true,
@ -844,7 +842,10 @@ const Edit = ({ tableTab, openType, detail, reloadTable, currentUser, selectTab,
showSearch
treeNodeFilterProp="label"
onSelect={(value: any, options: any) => {
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,
</Form.Item>
</Col> : ''
}
<Col span={6} style={{ display: 'none' }}>
<ProFormText
label="所属供应商"
name="BUSINESSMAN_NAME"
/>
</Col>
<Col span={16}>
<ProFormText
label="备注"

View File

@ -28,7 +28,7 @@ import defaultIcon from '../../../assets/brand/defaultIcon.png'
import ModalFooter from '../scenicSpotConfig/component/modalFooter';
import { handleSetlogSave } from '@/utils/format';
import { highlightText } from '@/utils/highlightText';
import { handlesyncWeChatGetMallGoodsType } from '@/pages/operatingMerchants/service';
import { handlecsyncWeChatGetMallGoodsInfo, handlesyncWeChatGetMallGoodsType } from '@/pages/operatingMerchants/service';
const beforeUpload = (file: any) => {
@ -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
<ProForm
layout={'horizontal'}
formRef={formRef}
labelCol={{ style: { width: 80 } }}
labelCol={{ style: { width: 100 } }}
autoFocusFirstInput
submitter={false}
preserve={false}
@ -697,6 +705,18 @@ const MallClassificationManage: React.FC<{ currentUser: CurrentUser | undefined
disabled
/>
</Col>
<Col span={12}>
<ProFormSelect
name="SERVERPARTSHOP_ID"
label="小程序显示"
options={[
{ label: '精选商城', value: '1' },
{ label: '工会商城', value: '2' },
{ label: '不显示', value: '0' },
]}
initialValue={0}
/>
</Col>
<Col span={24}>
<ProFormTextArea
name="USERDEFINEDTYPE_DESC"

View File

@ -2,6 +2,7 @@ import { connect } from "umi";
import type { ConnectState } from "@/models/connect";
import ProCard from "@ant-design/pro-card";
import searchIcon from '@/assets/ai/searchIcon.png'
import refreshIcon from '@/assets/refreshIcon.png'
import { useRef, useState } from "react";
import { MenuFoldOutlined } from "@ant-design/icons";
import ProForm, { ProFormText } from "@ant-design/pro-form";
@ -130,7 +131,6 @@ const LeftSelectMallType = ({ setSelectedId, reload, actionRef, currentUser, wid
console.log('res', res);
return res
}
// 仅支持单选一个服务区的时候 调用的方法
const convertTreeForSelectOnly = (treeData: any[]): any[] => {
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 (
<div>
@ -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={<div className="leftSelectBox">
<img className="refreshIcon" src={refreshIcon} onClick={() => {
handleRefreshData()
}} />
<img className="searchIcon" src={searchIcon} onClick={() => {
setShowServiceSearchBox(true)
}} />

View File

@ -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<boolean>(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
<a
key="delete"
onClick={() => {
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 (
<div>

View File

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

View File

@ -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 (
<div>
<div style={{ backgroundColor: '#fff', display: 'flex' }}>
@ -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={<div style={{ width: '100%', display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
@ -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
<ProFormSelect
name="COMMODITY_NATURE"
label="商品性质"
options={COMMODITYNATUREList}
// options={COMMODITYNATUREList}
request={async () => {
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
<ProFormText
name="COMMODITY_BARCODE"
label="商品条码"
rules={[
{
required: true,
message: "请输入商品条码!"
}
]}
/>
</Col>
<Col span={6}>
@ -1777,7 +1892,27 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
<ProFormSelect
name="PAY_METHOD"
label="消费模式"
options={PAYMETHODList}
// options={PAYMETHODList}
request={async () => {
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
<ProFormSelect
name="DUTY_PARAGRAPH"
label="商品税率"
options={DUTYPARAGRAPHList}
// options={DUTYPARAGRAPHList}
request={async () => {
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
{/* 若是一个套餐商品 那么这里就要有一个录入套餐商品的地方 */}
<Col span={24}>
<SelectSetMealItems onRef={setSelectSetMealItemsRef} leftTreeData={leftTreeData} comboCommodityDetail={comboCommodityDetail} />
<SelectSetMealItems onRef={setSelectSetMealItemsRef} leftTreeData={leftTreeData} comboCommodityDetail={comboCommodityDetail} parentFormRef={formRef} />
</Col>
<Divider orientation="left"></Divider>
@ -1890,7 +2045,7 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
<Divider orientation="left"></Divider>
<Col span={12}>
<ProFormDateRangePicker
width={'lg'}
width={'100%'}
name="UPPER_DATE"
label="上架时间"
// rules={[{
@ -1917,7 +2072,7 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (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}
/>
</Col>
<Col span={6}>
<ProFormSelect
name="DATAFORMAT"
label="数据形式"
options={[
{ label: "正式数据", value: 1 },
{ label: "测试数据", value: 0 },
{ label: "品诺数据", value: 2 },
]}
rules={[
{
required: true,
message: "请选择数据形式!"
}
]}
/>
</Col>
{
currentUser?.UserPattern === 4000 ?
'' :
<Col span={6}>
<ProFormSelect
name="DATAFORMAT"
label="数据形式"
options={[
{ label: "正式数据", value: 1 },
{ label: "测试数据", value: 0 },
{ label: "品诺数据", value: 2 },
]}
rules={[
{
required: true,
message: "请选择数据形式!"
}
]}
/>
</Col>
}
<Col span={6}>
<ProFormText
name="OPERATE_PERSON"
@ -2014,6 +2174,14 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (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);

View File

@ -349,7 +349,7 @@ const TradingLedger: React.FC<{ currentUser: CurrentUser }> = (props) => {
{
title: "商品条码",
width: 150,
dataIndex: "商品条码",
dataIndex: "CommodityBarcode",
},
{
title: "供货商",

View File

@ -9,7 +9,7 @@ export interface ResizeHalfOptions {
/**
*
* @param file
* @param file
* @param options (0-10.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,

View File

@ -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";