diff --git a/package.json b/package.json index efce271..ecb88fb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ant-design-pro", - "version": "4.5.31", + "version": "4.5.32", "private": true, "description": "An out-of-box UI solution for enterprise applications", "scripts": { diff --git a/src/pages/merchantManagement/reports/SalesFlow/index.tsx b/src/pages/merchantManagement/reports/SalesFlow/index.tsx index 01b4b0a..aa54d97 100644 --- a/src/pages/merchantManagement/reports/SalesFlow/index.tsx +++ b/src/pages/merchantManagement/reports/SalesFlow/index.tsx @@ -27,10 +27,11 @@ import numeral from 'numeral'; import { exportExcel } from '@/utils/utils'; import { getYSSellMasterList } from './service'; -import { getUserShopTree } from '@/services/options'; +import { getMoney, getUserShopTree } from '@/services/options'; import '../../style.less'; import './salesFlow.less' +import { getYSSellMasterListAllData } from '@/pages/reports/BusinessAnalysis/saleFlow/service'; 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 defaultShops = currentUser?.ServerpartShopIds ? currentUser?.ServerpartShopIds.split(',').map(Number) : [] const [shopId, setShopId] = useState<[]>(); // 选择的门店 根据选择的门店筛选数据结果 + const [otherData, setOtherData] = useState() const columns: ProColumns[] = [ @@ -200,21 +202,22 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = ( search={{ span: 6 }} request={async (params) => { if (shopId && shopId.length > 0) { - const data = await getYSSellMasterList({ + const data = await getYSSellMasterListAllData({ ...params, SERVERPARTSHOP_ID: shopId && shopId.length > 0 ? shopId.toString() : currentUser?.ServerpartShopIds, }); setReqDetailList(data.data); - console.log('data', data.data); - const list: any = JSON.parse(JSON.stringify(data.data)) + console.log('data', data); + const list: any = JSON.parse(JSON.stringify(data.List)) if (list && list.length > 0) { list.forEach((item: any, index: number) => { item.index = index + 1 }) } console.log('list', list); - data.data = list - return data; + data.List = list + setOtherData(data.OtherData) + return { data: data.List, success: true }; } return { data: [], success: true } }} @@ -243,16 +246,28 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = ( }} tableExtraRender={ (_, data) => { - if (data) { + const devicesList: any = [] 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) => { const previousValue = { ...p } previousValue.SELLMASTER_COUNT += currentValue.SELLMASTER_COUNT || 0; // 销售数量 previousValue.SELLMASTER_OFFPRICE += currentValue.SELLMASTER_OFFPRICE || 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) { previousValue.payway['移动'] += currentValue.SELLMASTER_AMOUNT if (!previousValue.mobilePay[currentValue.PAYMENT_TYPE_TEXT]) { // 移动支付方式 @@ -270,60 +285,61 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = ( previousValue.MACHINECODE.push(currentValue.MACHINECODE); // 收银机号 } 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
销售流水汇总} - size="small" column={5} + title={合计信息} + size="small" column={7} className="commity-sale-description" contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }} > - - ¥{numeral(reduceData.payway['移动']).format('0,0.00')} - - ¥{numeral(reduceData.payway['现金']).format('0,0.00')} - ¥{numeral(reduceData.SELLMASTER_AMOUNT).format('0,0.00')} - - - {numeral(data.length).format('0,0')} - ¥{numeral(reduceData.SELLMASTER_OFFPRICE).format('0,0.00')} - {numeral(reduceData.MACHINECODE.length).format('0,0')} - - - {numeral(reduceData.SELLMASTER_COUNT).format('0,0')} - ¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')} - ¥{numeral(reduceData.SELLMASTER_AMOUNT / reduceData.SELLMASTER_COUNT).format('0,0.00')} + {numeral(data.length).format('0,0')} + ¥{numeral(reduceData.SELLMASTER_AMOUNT).format('0,0.00')} + ¥{numeral(reduceData.SELLMASTER_OFFPRICE).format('0,0.00')} + ¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')} + {numeral(reduceData.SELLMASTER_COUNT).format('0,0')} + {devicesList && devicesList.length > 0 ? devicesList.length : '-'}台 + {moment().format('YYYY-MM-DD')} - {/* 支付明细} + size="small" column={7} className="commity-sale-description" contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }} > - { - Object.keys(reduceData.payway).reverse().map((n, index) => { - if (n === '移动') { - return ¥ - {numeral(reduceData.payway[n]).format('0,0.00')}{() => { - return (reduceData.payway[n] > 0 && <>({ - Object.keys(reduceData.mobilePay).map(m => - {m}: ¥{numeral(reduceData.mobilePay[m]).format('0,0.00')}) - })) - }} - - - } - return ¥{numeral(reduceData.payway[n]).format('0,0.00')} - }) - } - - */} - + {otherData?.CASH ? `¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}` : '¥0.00'} + {otherData?.TICKETBILL ? `¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}` : '¥0.00'} + {otherData?.OTHERPAY ? `¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}` : '¥0.00'} + {otherData?.CREDITCARD ? `¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}` : '¥0.00'} + {otherData?.YUNSHANFU ? `¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}` : '¥0.00'} + {otherData?.COUPONTYPE_2010 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).format('0,0.00')}` : '¥0.00'} + {otherData?.COUPONTYPE_2020 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}` : '¥0.00'} + + + {otherData?.COUPONTYPE_2030 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2030)).format('0,0.00')}` : '¥0.00'} + {otherData?.COUPONTYPE_2040 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2040)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1010 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1010)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1020 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1020)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1030 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1030)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1040 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}` : '¥0.00'} +
- } return <> } diff --git a/src/pages/reports/BusinessAnalysis/saleFlow/index.tsx b/src/pages/reports/BusinessAnalysis/saleFlow/index.tsx index b1fee86..ee705a9 100644 --- a/src/pages/reports/BusinessAnalysis/saleFlow/index.tsx +++ b/src/pages/reports/BusinessAnalysis/saleFlow/index.tsx @@ -11,7 +11,7 @@ import useRequest from '@ahooksjs/use-request'; import ProTable from '@ant-design/pro-table'; import ProCard from '@ant-design/pro-card'; 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 type { ConnectState } from '@/models/connect'; @@ -24,8 +24,8 @@ import moment from 'moment'; import numeral from 'numeral'; import { exportExcel } from '@/utils/utils'; -import {getYSSellMasterList, getYSSellMasterListAllData} from './service'; -import {getMoney, handleCallLogs, handleGetServiceShopTreeList} from '@/services/options'; +import { getYSSellMasterList, getYSSellMasterListAllData } from './service'; +import { getMoney, handleCallLogs, handleGetServiceShopTreeList } from '@/services/options'; import './style.less'; import './salesFlow.less' @@ -48,15 +48,15 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => const [currentRow, setCurrentRow] = useState(); // 选中的流水 const [visible, setVisible] = useState(); // 流水明显弹出框 const [reqDetailList, setReqDetailList] = useState(); - const [otherData,setOtherData] = useState() + const [otherData, setOtherData] = useState() const [collapsible, setCollapsible] = useState(false) // 是否隐藏门店服务区筛选 const { loading: shopLoading, data: shopTree } = useRequest(async () => { const data = await handleGetServiceShopTreeList({ - ProvinceCode:currentUser?.ProvinceCode, - BusinessState:"1000,2000,3000", + ProvinceCode: currentUser?.ProvinceCode, + BusinessState: "1000,2000,3000", ShowState: true, - SortStr:'BUSINESS_STATE,SHOPSHORTNAME' + SortStr: 'BUSINESS_STATE,SHOPSHORTNAME' }); return data }) @@ -65,7 +65,7 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => const [currenMenu, setCurrenMenu] = useState(); // 当前选中左侧菜单的服务区节点 const [selectedId, setSelectedId] = useState(); // 当前选中左侧菜单的门店节点 const [currenType, setCurrenType] = useState(); // 当前选中左侧菜单的门店节点 - const [searchParams,setSearchParams] = useState() + const [searchParams, setSearchParams] = useState() const columns: ProColumns[] = [ @@ -159,14 +159,14 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => ]; return ( -
+
{ setCollapsible(!collapsible) - }}/>} + }} />} colSpan={!collapsible ? "300px" : "60px"} title={!collapsible ? "可筛选门店" : ""} headerBordered @@ -189,7 +189,7 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => onCheck={(checkedKeys: React.Key[] | any, info) => { const selectedIds = info.checkedNodes.filter(n => n?.type === 2) 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() // getData(selectedIds.map(n => n?.value)?.toString() || '') }} @@ -206,9 +206,9 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => headerTitle={} formRef={formRef} actionRef={actionRef} - search={{span: 6}} - pagination={{pageSize: 20}} - scroll={{y: 'calc(100vh - 470px)'}} + search={{ span: 6 }} + pagination={{ pageSize: 20 }} + scroll={{ y: 'calc(100vh - 470px)' }} request={async (params) => { if (selectedId || currenMenu) { handleCallLogs() @@ -220,14 +220,14 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => setSearchParams(req) const data = await getYSSellMasterListAllData(req); 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)) setReqDetailList(list); - console.log('data.otherData',data.otherData) + console.log('data.otherData', 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')}`, ); 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) => { - const previousValue = {...p} + const previousValue = { ...p } previousValue.SELLMASTER_COUNT += currentValue.SELLMASTER_COUNT || 0; // 销售数量 previousValue.SELLMASTER_OFFPRICE += currentValue.SELLMASTER_OFFPRICE || 0; // 优惠金额 previousValue.SELLMASTER_AMOUNT += currentValue.SELLMASTER_AMOUNT || 0; // 实收金额 - if (devicesList.indexOf(currentValue.MACHINECODE)===-1){ + if (devicesList.indexOf(currentValue.MACHINECODE) === -1) { devicesList.push(currentValue.MACHINECODE) } @@ -300,15 +300,15 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => SELLMASTER_COUNT: 0, SELLMASTER_AMOUNT: 0, MACHINECODE: [], - payway: {'移动': 0, '现金': 0,}, + payway: { '移动': 0, '现金': 0, }, mobilePay: {} }); - return
+ return
合计信息} + title={合计信息} size="small" column={7} className="commity-sale-description" - contentStyle={{fontWeight: "bolder"}} labelStyle={{color: "#00000073"}} + contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }} > {numeral(data.length).format('0,0')} @@ -320,34 +320,34 @@ const saleFlow: React.FC<{ currentUser: CurrentUser | undefined }> = (props) => label="客单均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')} {numeral(reduceData.SELLMASTER_COUNT).format('0,0')} - {devicesList && devicesList.length>0?devicesList.length:'-'}台 + {devicesList && devicesList.length > 0 ? devicesList.length : '-'}台 {moment().format('YYYY-MM-DD')} 支付明细} + title={支付明细} size="small" column={7} className="commity-sale-description" - contentStyle={{fontWeight: "bolder"}} labelStyle={{color: "#00000073"}} + contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }} > {otherData?.CASH?`¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}`:'¥0.00'} + label="现金支付">{otherData?.CASH ? `¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}` : '¥0.00'} {otherData?.TICKETBILL?`¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}`:'¥0.00'} - {otherData?.OTHERPAY?`¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}`:'¥0.00'} - {otherData?.CREDITCARD?`¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}`:'¥0.00'} - {otherData?.YUNSHANFU?`¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}`:'¥0.00'} - {otherData?.COUPONTYPE_2010?`¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).format('0,0.00')}`:'¥0.00'} - {otherData?.COUPONTYPE_2020?`¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}`:'¥0.00'} + label="微信支付">{otherData?.TICKETBILL ? `¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}` : '¥0.00'} + {otherData?.OTHERPAY ? `¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}` : '¥0.00'} + {otherData?.CREDITCARD ? `¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}` : '¥0.00'} + {otherData?.YUNSHANFU ? `¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}` : '¥0.00'} + {otherData?.COUPONTYPE_2010 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).format('0,0.00')}` : '¥0.00'} + {otherData?.COUPONTYPE_2020 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}` : '¥0.00'} - {otherData?.COUPONTYPE_2030?`¥${numeral(getMoney(otherData?.COUPONTYPE_2030)).format('0,0.00')}`:'¥0.00'} - {otherData?.COUPONTYPE_2040?`¥${numeral(getMoney(otherData?.COUPONTYPE_2040)).format('0,0.00')}`:'¥0.00'} - {otherData?.SELLMASTERTYPE_1010?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1010)).format('0,0.00')}`:'¥0.00'} - {otherData?.SELLMASTERTYPE_1020?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1020)).format('0,0.00')}`:'¥0.00'} - {otherData?.SELLMASTERTYPE_1030?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1030)).format('0,0.00')}`:'¥0.00'} - {otherData?.SELLMASTERTYPE_1040?`¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}`:'¥0.00'} + contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}> + {otherData?.COUPONTYPE_2030 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2030)).format('0,0.00')}` : '¥0.00'} + {otherData?.COUPONTYPE_2040 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2040)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1010 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1010)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1020 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1020)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1030 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1030)).format('0,0.00')}` : '¥0.00'} + {otherData?.SELLMASTERTYPE_1040 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}` : '¥0.00'}
} diff --git a/src/versionEnv.ts b/src/versionEnv.ts index c9515b1..97e6014 100644 --- a/src/versionEnv.ts +++ b/src/versionEnv.ts @@ -1,4 +1,4 @@ // 由 scripts/writeVersion.js 自动生成 -export const VERSION = "4.5.31"; -export const GIT_HASH = "cb0823b"; -export const BUILD_TIME = "2025-08-18T02:35:36.007Z"; +export const VERSION = "4.5.32"; +export const GIT_HASH = "55eacd9"; +export const BUILD_TIME = "2025-08-19T10:31:57.380Z";