update
This commit is contained in:
parent
55eacd99f8
commit
1ce314d533
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "ant-design-pro",
|
"name": "ant-design-pro",
|
||||||
"version": "4.5.31",
|
"version": "4.5.32",
|
||||||
"private": true,
|
"private": true,
|
||||||
"description": "An out-of-box UI solution for enterprise applications",
|
"description": "An out-of-box UI solution for enterprise applications",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -27,10 +27,11 @@ import numeral from 'numeral';
|
|||||||
|
|
||||||
import { exportExcel } from '@/utils/utils';
|
import { exportExcel } from '@/utils/utils';
|
||||||
import { getYSSellMasterList } from './service';
|
import { getYSSellMasterList } from './service';
|
||||||
import { getUserShopTree } from '@/services/options';
|
import { getMoney, getUserShopTree } from '@/services/options';
|
||||||
|
|
||||||
import '../../style.less';
|
import '../../style.less';
|
||||||
import './salesFlow.less'
|
import './salesFlow.less'
|
||||||
|
import { getYSSellMasterListAllData } from '@/pages/reports/BusinessAnalysis/saleFlow/service';
|
||||||
|
|
||||||
const { Text } = Typography;
|
const { Text } = Typography;
|
||||||
|
|
||||||
@ -52,6 +53,7 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = (
|
|||||||
const { loading: shopLoading, data: shopTree } = useRequest(() => { return getUserShopTree(currentUser?.ID) })
|
const { loading: shopLoading, data: shopTree } = useRequest(() => { return getUserShopTree(currentUser?.ID) })
|
||||||
const defaultShops = currentUser?.ServerpartShopIds ? currentUser?.ServerpartShopIds.split(',').map(Number) : []
|
const defaultShops = currentUser?.ServerpartShopIds ? currentUser?.ServerpartShopIds.split(',').map(Number) : []
|
||||||
const [shopId, setShopId] = useState<[]>(); // 选择的门店 根据选择的门店筛选数据结果
|
const [shopId, setShopId] = useState<[]>(); // 选择的门店 根据选择的门店筛选数据结果
|
||||||
|
const [otherData, setOtherData] = useState<any>()
|
||||||
|
|
||||||
const columns: ProColumns<YSSELLMASTERModel>[] = [
|
const columns: ProColumns<YSSELLMASTERModel>[] = [
|
||||||
|
|
||||||
@ -200,21 +202,22 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = (
|
|||||||
search={{ span: 6 }}
|
search={{ span: 6 }}
|
||||||
request={async (params) => {
|
request={async (params) => {
|
||||||
if (shopId && shopId.length > 0) {
|
if (shopId && shopId.length > 0) {
|
||||||
const data = await getYSSellMasterList({
|
const data = await getYSSellMasterListAllData({
|
||||||
...params,
|
...params,
|
||||||
SERVERPARTSHOP_ID: shopId && shopId.length > 0 ? shopId.toString() : currentUser?.ServerpartShopIds,
|
SERVERPARTSHOP_ID: shopId && shopId.length > 0 ? shopId.toString() : currentUser?.ServerpartShopIds,
|
||||||
});
|
});
|
||||||
setReqDetailList(data.data);
|
setReqDetailList(data.data);
|
||||||
console.log('data', data.data);
|
console.log('data', data);
|
||||||
const list: any = JSON.parse(JSON.stringify(data.data))
|
const list: any = JSON.parse(JSON.stringify(data.List))
|
||||||
if (list && list.length > 0) {
|
if (list && list.length > 0) {
|
||||||
list.forEach((item: any, index: number) => {
|
list.forEach((item: any, index: number) => {
|
||||||
item.index = index + 1
|
item.index = index + 1
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
console.log('list', list);
|
console.log('list', list);
|
||||||
data.data = list
|
data.List = list
|
||||||
return data;
|
setOtherData(data.OtherData)
|
||||||
|
return { data: data.List, success: true };
|
||||||
}
|
}
|
||||||
return { data: [], success: true }
|
return { data: [], success: true }
|
||||||
}}
|
}}
|
||||||
@ -243,16 +246,28 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = (
|
|||||||
}}
|
}}
|
||||||
tableExtraRender={
|
tableExtraRender={
|
||||||
(_, data) => {
|
(_, data) => {
|
||||||
|
|
||||||
if (data) {
|
if (data) {
|
||||||
|
const devicesList: any = []
|
||||||
const reduceData = data.reduce((
|
const reduceData = data.reduce((
|
||||||
p: { SELLMASTER_OFFPRICE: number, SELLMASTER_COUNT: number, SELLMASTER_AMOUNT: number, MACHINECODE: string[], payway: {}, mobilePay: {} },
|
p: {
|
||||||
|
SELLMASTER_OFFPRICE: number,
|
||||||
|
SELLMASTER_COUNT: number,
|
||||||
|
SELLMASTER_AMOUNT: number,
|
||||||
|
MACHINECODE: string[],
|
||||||
|
payway: {},
|
||||||
|
mobilePay: {}
|
||||||
|
},
|
||||||
|
|
||||||
currentValue: YSSELLMASTERModel) => {
|
currentValue: YSSELLMASTERModel) => {
|
||||||
const previousValue = { ...p }
|
const previousValue = { ...p }
|
||||||
previousValue.SELLMASTER_COUNT += currentValue.SELLMASTER_COUNT || 0; // 销售数量
|
previousValue.SELLMASTER_COUNT += currentValue.SELLMASTER_COUNT || 0; // 销售数量
|
||||||
previousValue.SELLMASTER_OFFPRICE += currentValue.SELLMASTER_OFFPRICE || 0; // 优惠金额
|
previousValue.SELLMASTER_OFFPRICE += currentValue.SELLMASTER_OFFPRICE || 0; // 优惠金额
|
||||||
previousValue.SELLMASTER_AMOUNT += currentValue.SELLMASTER_AMOUNT || 0; // 实收金额
|
previousValue.SELLMASTER_AMOUNT += currentValue.SELLMASTER_AMOUNT || 0; // 实收金额
|
||||||
|
|
||||||
|
if (devicesList.indexOf(currentValue.MACHINECODE) === -1) {
|
||||||
|
devicesList.push(currentValue.MACHINECODE)
|
||||||
|
}
|
||||||
|
|
||||||
if (currentValue.PAYMENT_TYPE === 1010 || currentValue.PAYMENT_TYPE === 1020) {
|
if (currentValue.PAYMENT_TYPE === 1010 || currentValue.PAYMENT_TYPE === 1020) {
|
||||||
previousValue.payway['移动'] += currentValue.SELLMASTER_AMOUNT
|
previousValue.payway['移动'] += currentValue.SELLMASTER_AMOUNT
|
||||||
if (!previousValue.mobilePay[currentValue.PAYMENT_TYPE_TEXT]) { // 移动支付方式
|
if (!previousValue.mobilePay[currentValue.PAYMENT_TYPE_TEXT]) { // 移动支付方式
|
||||||
@ -270,60 +285,61 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = (
|
|||||||
previousValue.MACHINECODE.push(currentValue.MACHINECODE); // 收银机号
|
previousValue.MACHINECODE.push(currentValue.MACHINECODE); // 收银机号
|
||||||
}
|
}
|
||||||
return previousValue
|
return previousValue
|
||||||
}, { SELLMASTER_OFFPRICE: 0, SELLMASTER_COUNT: 0, SELLMASTER_AMOUNT: 0, MACHINECODE: [], payway: { '移动': 0, '现金': 0, }, mobilePay: {} });
|
}, {
|
||||||
console.log('reduceData', reduceData);
|
SELLMASTER_OFFPRICE: 0,
|
||||||
|
SELLMASTER_COUNT: 0,
|
||||||
|
SELLMASTER_AMOUNT: 0,
|
||||||
|
MACHINECODE: [],
|
||||||
|
payway: { '移动': 0, '现金': 0, },
|
||||||
|
mobilePay: {}
|
||||||
|
});
|
||||||
return <div style={{ paddingLeft: 24 }}>
|
return <div style={{ paddingLeft: 24 }}>
|
||||||
<Descriptions
|
<Descriptions
|
||||||
title={<Text type="success" style={{ color: "#1890ff", fontSize: 14 }}>销售流水汇总</Text>}
|
title={<Text type="success" style={{ color: "#1890ff", fontSize: 14 }}>合计信息</Text>}
|
||||||
size="small" column={5}
|
size="small" column={7}
|
||||||
className="commity-sale-description"
|
className="commity-sale-description"
|
||||||
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
|
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
|
||||||
>
|
>
|
||||||
<Descriptions.Item className='mobileMoney' label="移动支付">
|
<Descriptions.Item label="客单数量">{numeral(data.length).format('0,0')}<Text
|
||||||
¥<span className='mobileMoneyText'>{numeral(reduceData.payway['移动']).format('0,0.00')}</span>
|
type="secondary"> 笔</Text></Descriptions.Item>
|
||||||
</Descriptions.Item>
|
<Descriptions.Item
|
||||||
<Descriptions.Item label="现金支付">¥{numeral(reduceData.payway['现金']).format('0,0.00')}</Descriptions.Item>
|
label="实收金额">¥{numeral(reduceData.SELLMASTER_AMOUNT).format('0,0.00')}</Descriptions.Item>
|
||||||
<Descriptions.Item label="实收金额">¥{numeral(reduceData.SELLMASTER_AMOUNT).format('0,0.00')}</Descriptions.Item>
|
<Descriptions.Item
|
||||||
</Descriptions>
|
label="优惠金额">¥{numeral(reduceData.SELLMASTER_OFFPRICE).format('0,0.00')}</Descriptions.Item>
|
||||||
<Descriptions size="small" className="commity-sale-description" column={5} contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}>
|
<Descriptions.Item
|
||||||
<Descriptions.Item label="客单数量">{numeral(data.length).format('0,0')}<Text type="secondary"> 笔</Text></Descriptions.Item>
|
label="客单均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')}</Descriptions.Item>
|
||||||
<Descriptions.Item label="优惠金额">¥{numeral(reduceData.SELLMASTER_OFFPRICE).format('0,0.00')}</Descriptions.Item>
|
<Descriptions.Item label="销售数量">{numeral(reduceData.SELLMASTER_COUNT).format('0,0')}<Text
|
||||||
<Descriptions.Item label="收银机">{numeral(reduceData.MACHINECODE.length).format('0,0')}<Text type="secondary"> 台</Text></Descriptions.Item>
|
type="secondary"> 件</Text></Descriptions.Item>
|
||||||
</Descriptions>
|
<Descriptions.Item label="设备数量">{devicesList && devicesList.length > 0 ? devicesList.length : '-'}台</Descriptions.Item>
|
||||||
<Descriptions size="small" className="commity-sale-description" column={5} contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}>
|
<Descriptions.Item label="统计时间">{moment().format('YYYY-MM-DD')}</Descriptions.Item>
|
||||||
<Descriptions.Item label="销售数量">{numeral(reduceData.SELLMASTER_COUNT).format('0,0')}<Text type="secondary"> 件</Text></Descriptions.Item>
|
|
||||||
<Descriptions.Item label="客单均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')}</Descriptions.Item>
|
|
||||||
<Descriptions.Item label="商品均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / reduceData.SELLMASTER_COUNT).format('0,0.00')}</Descriptions.Item>
|
|
||||||
</Descriptions>
|
</Descriptions>
|
||||||
|
|
||||||
{/* <Descriptions
|
<Descriptions
|
||||||
size="small"
|
title={<Text type="success" style={{ color: "#1890ff", fontSize: 14 }}>支付明细</Text>}
|
||||||
column={5}
|
size="small" column={7}
|
||||||
className="commity-sale-description"
|
className="commity-sale-description"
|
||||||
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
|
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
|
||||||
>
|
>
|
||||||
{
|
<Descriptions.Item
|
||||||
Object.keys(reduceData.payway).reverse().map((n, index) => {
|
label="现金支付">{otherData?.CASH ? `¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
if (n === '移动') {
|
<Descriptions.Item
|
||||||
return <Descriptions.Item span={index === 1 ? 4 : 3} label={`${n}支付`}>¥
|
label="微信支付">{otherData?.TICKETBILL ? `¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Space>{numeral(reduceData.payway[n]).format('0,0.00')}{() => {
|
<Descriptions.Item label="支付宝支付">{otherData?.OTHERPAY ? `¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
return (reduceData.payway[n] > 0 && <><Text type="secondary">(</Text>{
|
<Descriptions.Item label="云闪付">{otherData?.CREDITCARD ? `¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
Object.keys(reduceData.mobilePay).map(m =>
|
<Descriptions.Item label="银联记账">{otherData?.YUNSHANFU ? `¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Text type="secondary">{m}: ¥{numeral(reduceData.mobilePay[m]).format('0,0.00')}</Text>)
|
<Descriptions.Item label="企业会员">{otherData?.COUPONTYPE_2010 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
}<Text type="secondary">)</Text></>)
|
<Descriptions.Item label="电子优惠券">{otherData?.COUPONTYPE_2020 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
}}
|
</Descriptions>
|
||||||
</Space>
|
<Descriptions size="small" className="commity-sale-description" column={7}
|
||||||
</Descriptions.Item>
|
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}>
|
||||||
}
|
<Descriptions.Item label="大巴优惠券">{otherData?.COUPONTYPE_2030 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2030)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
return <Descriptions.Item label={`${n}支付`} span={1} >¥{numeral(reduceData.payway[n]).format('0,0.00')}</Descriptions.Item>
|
<Descriptions.Item label="团购餐券">{otherData?.COUPONTYPE_2040 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2040)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
})
|
<Descriptions.Item label="促销流水">{otherData?.SELLMASTERTYPE_1010 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1010)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
}
|
<Descriptions.Item label="香烟销售">{otherData?.SELLMASTERTYPE_1020 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1020)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
|
<Descriptions.Item label="在线订单">{otherData?.SELLMASTERTYPE_1030 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1030)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
</Descriptions> */}
|
<Descriptions.Item label="稽核补录">{otherData?.SELLMASTERTYPE_1040 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
|
</Descriptions>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
}
|
}
|
||||||
return <></>
|
return <></>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,7 @@ import useRequest from '@ahooksjs/use-request';
|
|||||||
import ProTable from '@ant-design/pro-table';
|
import ProTable from '@ant-design/pro-table';
|
||||||
import ProCard from '@ant-design/pro-card';
|
import ProCard from '@ant-design/pro-card';
|
||||||
import { MenuFoldOutlined } from '@ant-design/icons';
|
import { MenuFoldOutlined } from '@ant-design/icons';
|
||||||
import {Avatar, Button, Descriptions, Menu, message, Modal, Space, Tree, Typography} from 'antd';
|
import { Avatar, Button, Descriptions, Menu, message, Modal, Space, Tree, Typography } from 'antd';
|
||||||
import React, { useRef, useState } from 'react';
|
import React, { useRef, useState } from 'react';
|
||||||
|
|
||||||
import type { ConnectState } from '@/models/connect';
|
import type { ConnectState } from '@/models/connect';
|
||||||
@ -24,8 +24,8 @@ import moment from 'moment';
|
|||||||
import numeral from 'numeral';
|
import numeral from 'numeral';
|
||||||
|
|
||||||
import { exportExcel } from '@/utils/utils';
|
import { exportExcel } from '@/utils/utils';
|
||||||
import {getYSSellMasterList, getYSSellMasterListAllData} from './service';
|
import { getYSSellMasterList, getYSSellMasterListAllData } from './service';
|
||||||
import {getMoney, handleCallLogs, handleGetServiceShopTreeList} from '@/services/options';
|
import { getMoney, handleCallLogs, handleGetServiceShopTreeList } from '@/services/options';
|
||||||
|
|
||||||
import './style.less';
|
import './style.less';
|
||||||
import './salesFlow.less'
|
import './salesFlow.less'
|
||||||
@ -48,15 +48,15 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
const [currentRow, setCurrentRow] = useState<YSSELLMASTERModel | undefined>(); // 选中的流水
|
const [currentRow, setCurrentRow] = useState<YSSELLMASTERModel | undefined>(); // 选中的流水
|
||||||
const [visible, setVisible] = useState<boolean>(); // 流水明显弹出框
|
const [visible, setVisible] = useState<boolean>(); // 流水明显弹出框
|
||||||
const [reqDetailList, setReqDetailList] = useState<YSSELLMASTERModel[]>();
|
const [reqDetailList, setReqDetailList] = useState<YSSELLMASTERModel[]>();
|
||||||
const [otherData,setOtherData] = useState<any>()
|
const [otherData, setOtherData] = useState<any>()
|
||||||
|
|
||||||
const [collapsible, setCollapsible] = useState<boolean>(false) // 是否隐藏门店服务区筛选
|
const [collapsible, setCollapsible] = useState<boolean>(false) // 是否隐藏门店服务区筛选
|
||||||
const { loading: shopLoading, data: shopTree } = useRequest(async () => {
|
const { loading: shopLoading, data: shopTree } = useRequest(async () => {
|
||||||
const data = await handleGetServiceShopTreeList({
|
const data = await handleGetServiceShopTreeList({
|
||||||
ProvinceCode:currentUser?.ProvinceCode,
|
ProvinceCode: currentUser?.ProvinceCode,
|
||||||
BusinessState:"1000,2000,3000",
|
BusinessState: "1000,2000,3000",
|
||||||
ShowState: true,
|
ShowState: true,
|
||||||
SortStr:'BUSINESS_STATE,SHOPSHORTNAME'
|
SortStr: 'BUSINESS_STATE,SHOPSHORTNAME'
|
||||||
});
|
});
|
||||||
return data
|
return data
|
||||||
})
|
})
|
||||||
@ -65,7 +65,7 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
const [currenMenu, setCurrenMenu] = useState<any>(); // 当前选中左侧菜单的服务区节点
|
const [currenMenu, setCurrenMenu] = useState<any>(); // 当前选中左侧菜单的服务区节点
|
||||||
const [selectedId, setSelectedId] = useState<any>(); // 当前选中左侧菜单的门店节点
|
const [selectedId, setSelectedId] = useState<any>(); // 当前选中左侧菜单的门店节点
|
||||||
const [currenType, setCurrenType] = useState<any>(); // 当前选中左侧菜单的门店节点
|
const [currenType, setCurrenType] = useState<any>(); // 当前选中左侧菜单的门店节点
|
||||||
const [searchParams,setSearchParams] = useState<any>()
|
const [searchParams, setSearchParams] = useState<any>()
|
||||||
|
|
||||||
const columns: ProColumns<YSSELLMASTERModel>[] = [
|
const columns: ProColumns<YSSELLMASTERModel>[] = [
|
||||||
|
|
||||||
@ -159,14 +159,14 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
];
|
];
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{backgroundColor: '#fff', display: 'flex'}}>
|
<div style={{ backgroundColor: '#fff', display: 'flex' }}>
|
||||||
<ProCard
|
<ProCard
|
||||||
className="pageTable-leftnav"
|
className="pageTable-leftnav"
|
||||||
style={{width:!collapsible ? "300px" : "60px"}}
|
style={{ width: !collapsible ? "300px" : "60px" }}
|
||||||
bodyStyle={{padding: 0, paddingTop: 20, paddingLeft: 20,width:!collapsible ? "300px" : "60px"}}
|
bodyStyle={{ padding: 0, paddingTop: 20, paddingLeft: 20, width: !collapsible ? "300px" : "60px" }}
|
||||||
extra={<MenuFoldOutlined onClick={() => {
|
extra={<MenuFoldOutlined onClick={() => {
|
||||||
setCollapsible(!collapsible)
|
setCollapsible(!collapsible)
|
||||||
}}/>}
|
}} />}
|
||||||
colSpan={!collapsible ? "300px" : "60px"}
|
colSpan={!collapsible ? "300px" : "60px"}
|
||||||
title={!collapsible ? "可筛选门店" : ""}
|
title={!collapsible ? "可筛选门店" : ""}
|
||||||
headerBordered
|
headerBordered
|
||||||
@ -189,7 +189,7 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
onCheck={(checkedKeys: React.Key[] | any, info) => {
|
onCheck={(checkedKeys: React.Key[] | any, info) => {
|
||||||
const selectedIds = info.checkedNodes.filter(n => n?.type === 2)
|
const selectedIds = info.checkedNodes.filter(n => n?.type === 2)
|
||||||
setSelectedId(selectedIds.map(n => n?.value)?.toString() || '')
|
setSelectedId(selectedIds.map(n => n?.value)?.toString() || '')
|
||||||
console.log('1111',selectedIds.map(n => n?.value)?.toString() || '')
|
console.log('1111', selectedIds.map(n => n?.value)?.toString() || '')
|
||||||
// actionRef?.current?.reload()
|
// actionRef?.current?.reload()
|
||||||
// getData(selectedIds.map(n => n?.value)?.toString() || '')
|
// getData(selectedIds.map(n => n?.value)?.toString() || '')
|
||||||
}}
|
}}
|
||||||
@ -206,9 +206,9 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
headerTitle={<PageTitleBox props={props} />}
|
headerTitle={<PageTitleBox props={props} />}
|
||||||
formRef={formRef}
|
formRef={formRef}
|
||||||
actionRef={actionRef}
|
actionRef={actionRef}
|
||||||
search={{span: 6}}
|
search={{ span: 6 }}
|
||||||
pagination={{pageSize: 20}}
|
pagination={{ pageSize: 20 }}
|
||||||
scroll={{y: 'calc(100vh - 470px)'}}
|
scroll={{ y: 'calc(100vh - 470px)' }}
|
||||||
request={async (params) => {
|
request={async (params) => {
|
||||||
if (selectedId || currenMenu) {
|
if (selectedId || currenMenu) {
|
||||||
handleCallLogs()
|
handleCallLogs()
|
||||||
@ -220,14 +220,14 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
setSearchParams(req)
|
setSearchParams(req)
|
||||||
const data = await getYSSellMasterListAllData(req);
|
const data = await getYSSellMasterListAllData(req);
|
||||||
console.log('data1', data);
|
console.log('data1', data);
|
||||||
if(data.List && data.List.length>0){
|
if (data.List && data.List.length > 0) {
|
||||||
const list: any = JSON.parse(JSON.stringify(data.List))
|
const list: any = JSON.parse(JSON.stringify(data.List))
|
||||||
setReqDetailList(list);
|
setReqDetailList(list);
|
||||||
console.log('data.otherData',data.otherData)
|
console.log('data.otherData', data.otherData)
|
||||||
setOtherData(data.OtherData)
|
setOtherData(data.OtherData)
|
||||||
return {data: list, success: true}
|
return { data: list, success: true }
|
||||||
}
|
}
|
||||||
return {data: [], success: true}
|
return { data: [], success: true }
|
||||||
|
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
@ -246,7 +246,7 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
`销售流水统计_${moment(searchParams?.SELLMASTER_DATE).format('YYYY/MM/DD')}`,
|
`销售流水统计_${moment(searchParams?.SELLMASTER_DATE).format('YYYY/MM/DD')}`,
|
||||||
);
|
);
|
||||||
if (success.message !== 'ok') {
|
if (success.message !== 'ok') {
|
||||||
message.info({content: success.message});
|
message.info({ content: success.message });
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
@ -269,12 +269,12 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
},
|
},
|
||||||
|
|
||||||
currentValue: YSSELLMASTERModel) => {
|
currentValue: YSSELLMASTERModel) => {
|
||||||
const previousValue = {...p}
|
const previousValue = { ...p }
|
||||||
previousValue.SELLMASTER_COUNT += currentValue.SELLMASTER_COUNT || 0; // 销售数量
|
previousValue.SELLMASTER_COUNT += currentValue.SELLMASTER_COUNT || 0; // 销售数量
|
||||||
previousValue.SELLMASTER_OFFPRICE += currentValue.SELLMASTER_OFFPRICE || 0; // 优惠金额
|
previousValue.SELLMASTER_OFFPRICE += currentValue.SELLMASTER_OFFPRICE || 0; // 优惠金额
|
||||||
previousValue.SELLMASTER_AMOUNT += currentValue.SELLMASTER_AMOUNT || 0; // 实收金额
|
previousValue.SELLMASTER_AMOUNT += currentValue.SELLMASTER_AMOUNT || 0; // 实收金额
|
||||||
|
|
||||||
if (devicesList.indexOf(currentValue.MACHINECODE)===-1){
|
if (devicesList.indexOf(currentValue.MACHINECODE) === -1) {
|
||||||
devicesList.push(currentValue.MACHINECODE)
|
devicesList.push(currentValue.MACHINECODE)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -300,15 +300,15 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
SELLMASTER_COUNT: 0,
|
SELLMASTER_COUNT: 0,
|
||||||
SELLMASTER_AMOUNT: 0,
|
SELLMASTER_AMOUNT: 0,
|
||||||
MACHINECODE: [],
|
MACHINECODE: [],
|
||||||
payway: {'移动': 0, '现金': 0,},
|
payway: { '移动': 0, '现金': 0, },
|
||||||
mobilePay: {}
|
mobilePay: {}
|
||||||
});
|
});
|
||||||
return <div style={{paddingLeft: 24}}>
|
return <div style={{ paddingLeft: 24 }}>
|
||||||
<Descriptions
|
<Descriptions
|
||||||
title={<Text type="success" style={{color: "#1890ff", fontSize: 14}}>合计信息</Text>}
|
title={<Text type="success" style={{ color: "#1890ff", fontSize: 14 }}>合计信息</Text>}
|
||||||
size="small" column={7}
|
size="small" column={7}
|
||||||
className="commity-sale-description"
|
className="commity-sale-description"
|
||||||
contentStyle={{fontWeight: "bolder"}} labelStyle={{color: "#00000073"}}
|
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
|
||||||
>
|
>
|
||||||
<Descriptions.Item label="客单数量">{numeral(data.length).format('0,0')}<Text
|
<Descriptions.Item label="客单数量">{numeral(data.length).format('0,0')}<Text
|
||||||
type="secondary"> 笔</Text></Descriptions.Item>
|
type="secondary"> 笔</Text></Descriptions.Item>
|
||||||
@ -320,34 +320,34 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
|
|||||||
label="客单均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')}</Descriptions.Item>
|
label="客单均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')}</Descriptions.Item>
|
||||||
<Descriptions.Item label="销售数量">{numeral(reduceData.SELLMASTER_COUNT).format('0,0')}<Text
|
<Descriptions.Item label="销售数量">{numeral(reduceData.SELLMASTER_COUNT).format('0,0')}<Text
|
||||||
type="secondary"> 件</Text></Descriptions.Item>
|
type="secondary"> 件</Text></Descriptions.Item>
|
||||||
<Descriptions.Item label="设备数量">{devicesList && devicesList.length>0?devicesList.length:'-'}台</Descriptions.Item>
|
<Descriptions.Item label="设备数量">{devicesList && devicesList.length > 0 ? devicesList.length : '-'}台</Descriptions.Item>
|
||||||
<Descriptions.Item label="统计时间">{moment().format('YYYY-MM-DD')}</Descriptions.Item>
|
<Descriptions.Item label="统计时间">{moment().format('YYYY-MM-DD')}</Descriptions.Item>
|
||||||
</Descriptions>
|
</Descriptions>
|
||||||
|
|
||||||
<Descriptions
|
<Descriptions
|
||||||
title={<Text type="success" style={{color: "#1890ff", fontSize: 14}}>支付明细</Text>}
|
title={<Text type="success" style={{ color: "#1890ff", fontSize: 14 }}>支付明细</Text>}
|
||||||
size="small" column={7}
|
size="small" column={7}
|
||||||
className="commity-sale-description"
|
className="commity-sale-description"
|
||||||
contentStyle={{fontWeight: "bolder"}} labelStyle={{color: "#00000073"}}
|
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
|
||||||
>
|
>
|
||||||
<Descriptions.Item
|
<Descriptions.Item
|
||||||
label="现金支付">{otherData?.CASH?`¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
label="现金支付">{otherData?.CASH ? `¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item
|
<Descriptions.Item
|
||||||
label="微信支付">{otherData?.TICKETBILL?`¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
label="微信支付">{otherData?.TICKETBILL ? `¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="支付宝支付">{otherData?.OTHERPAY?`¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="支付宝支付">{otherData?.OTHERPAY ? `¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="云闪付">{otherData?.CREDITCARD?`¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="云闪付">{otherData?.CREDITCARD ? `¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="银联记账">{otherData?.YUNSHANFU?`¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="银联记账">{otherData?.YUNSHANFU ? `¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="企业会员">{otherData?.COUPONTYPE_2010?`¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="企业会员">{otherData?.COUPONTYPE_2010 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="电子优惠券">{otherData?.COUPONTYPE_2020?`¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="电子优惠券">{otherData?.COUPONTYPE_2020 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
</Descriptions>
|
</Descriptions>
|
||||||
<Descriptions size="small" className="commity-sale-description" column={7}
|
<Descriptions size="small" className="commity-sale-description" column={7}
|
||||||
contentStyle={{fontWeight: "bolder"}} labelStyle={{color: "#00000073"}}>
|
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}>
|
||||||
<Descriptions.Item label="大巴优惠券">{otherData?.COUPONTYPE_2030?`¥${numeral(getMoney(otherData?.COUPONTYPE_2030)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="大巴优惠券">{otherData?.COUPONTYPE_2030 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2030)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="团购餐券">{otherData?.COUPONTYPE_2040?`¥${numeral(getMoney(otherData?.COUPONTYPE_2040)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="团购餐券">{otherData?.COUPONTYPE_2040 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2040)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="促销流水">{otherData?.SELLMASTERTYPE_1010?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1010)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="促销流水">{otherData?.SELLMASTERTYPE_1010 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1010)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="香烟销售">{otherData?.SELLMASTERTYPE_1020?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1020)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="香烟销售">{otherData?.SELLMASTERTYPE_1020 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1020)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="在线订单">{otherData?.SELLMASTERTYPE_1030?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1030)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="在线订单">{otherData?.SELLMASTERTYPE_1030 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1030)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
<Descriptions.Item label="稽核补录">{otherData?.SELLMASTERTYPE_1040?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}`:'¥0.00'}</Descriptions.Item>
|
<Descriptions.Item label="稽核补录">{otherData?.SELLMASTERTYPE_1040 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item>
|
||||||
</Descriptions>
|
</Descriptions>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// 由 scripts/writeVersion.js 自动生成
|
// 由 scripts/writeVersion.js 自动生成
|
||||||
export const VERSION = "4.5.31";
|
export const VERSION = "4.5.32";
|
||||||
export const GIT_HASH = "cb0823b";
|
export const GIT_HASH = "55eacd9";
|
||||||
export const BUILD_TIME = "2025-08-18T02:35:36.007Z";
|
export const BUILD_TIME = "2025-08-19T10:31:57.380Z";
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user