update
This commit is contained in:
parent
70a3b9e4ec
commit
31a0a71e48
@ -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
BIN
src/assets/refreshIcon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.9 KiB |
@ -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 = []
|
||||
|
||||
@ -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="备注"
|
||||
|
||||
@ -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"
|
||||
|
||||
@ -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)
|
||||
}} />
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -1,13 +1,22 @@
|
||||
.pageTable-leftnav{
|
||||
.leftSelectBox{
|
||||
.pageTable-leftnav {
|
||||
.leftSelectBox {
|
||||
position: relative;
|
||||
.searchIcon{
|
||||
|
||||
.searchIcon {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
cursor: pointer;
|
||||
margin-right: 15px;
|
||||
}
|
||||
.fixedBox{
|
||||
|
||||
.refreshIcon {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
cursor: pointer;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.fixedBox {
|
||||
position: absolute;
|
||||
width: 275px;
|
||||
background: #fff;
|
||||
@ -19,11 +28,12 @@
|
||||
z-index: 2;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
.noBottom{
|
||||
.ant-form-item{
|
||||
margin-bottom: 0!important;
|
||||
}
|
||||
|
||||
.noBottom {
|
||||
.ant-form-item {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -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,6 +2101,9 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
|
||||
disabled={currentUser?.SupplierID || currentUser?.UserPattern === 4000 ? true : false}
|
||||
/>
|
||||
</Col>
|
||||
{
|
||||
currentUser?.UserPattern === 4000 ?
|
||||
'' :
|
||||
<Col span={6}>
|
||||
<ProFormSelect
|
||||
name="DATAFORMAT"
|
||||
@ -1963,6 +2121,8 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
|
||||
]}
|
||||
/>
|
||||
</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);
|
||||
|
||||
@ -349,7 +349,7 @@ const TradingLedger: React.FC<{ currentUser: CurrentUser }> = (props) => {
|
||||
{
|
||||
title: "商品条码",
|
||||
width: 150,
|
||||
dataIndex: "商品条码",
|
||||
dataIndex: "CommodityBarcode",
|
||||
},
|
||||
{
|
||||
title: "供货商",
|
||||
|
||||
@ -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, {
|
||||
|
||||
@ -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";
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user