Compare commits

..

No commits in common. "e03ffe490200166fa8a17f3133a0f22a3a7d907c" and "cb0823bbcb99b0c63f38e9b3feaae32ffbf64cdf" have entirely different histories.

29 changed files with 936 additions and 1098 deletions

BIN
dist.zip

Binary file not shown.

View File

@ -1,6 +1,6 @@
{ {
"name": "ant-design-pro", "name": "ant-design-pro",
"version": "4.5.35", "version": "4.5.26",
"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": {

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.9 KiB

View File

@ -21,14 +21,14 @@ import Authorized from '@/utils/Authorized';
import RightContent from '@/components/GlobalHeader/RightContent'; import RightContent from '@/components/GlobalHeader/RightContent';
import type { ConnectState } from '@/models/connect'; import type { ConnectState } from '@/models/connect';
import { getMatchMenu } from '@umijs/route-utils'; import { getMatchMenu } from '@umijs/route-utils';
import logo from '../assets/logo.png'; import logo from '../assets/logo.svg';
import './BasicLayout.less' import './BasicLayout.less'
import { DoubleRightOutlined } from '@ant-design/icons'; import { DoubleRightOutlined } from '@ant-design/icons';
import * as Icon from '@ant-design/icons' import * as Icon from '@ant-design/icons'
import IconFont from '@/components/IconFont'; import IconFont from '@/components/IconFont';
import type { CurrentUser } from '@/models/user' import type { CurrentUser } from '@/models/user'
import session from '@/utils/session'; import session from '@/utils/session';
import upMenu from '../assets/tab/upMenu.png' import upMenu from '@/assets/tab/upMenu.svg'
import { getFieldEnum, getFieldEnumTravel, getFieldEnumTree, getFieldGetFieEnumList, getTravelFieldEnumTree, handleGetFieldEnumTreeTravel, handleGetNestingFIELDENUMList } from "@/services/options"; import { getFieldEnum, getFieldEnumTravel, getFieldEnumTree, getFieldGetFieEnumList, getTravelFieldEnumTree, handleGetFieldEnumTreeTravel, handleGetNestingFIELDENUMList } from "@/services/options";
import { handleGetServerpartTree } from '@/pages/basicManage/serverpartAssets/service'; import { handleGetServerpartTree } from '@/pages/basicManage/serverpartAssets/service';
import { handeGetFieldEnumByFieldYN, handeGetNestingFIELDENUMList } from '@/pages/travelMember/service'; import { handeGetFieldEnumByFieldYN, handeGetNestingFIELDENUMList } from '@/pages/travelMember/service';

View File

@ -38,7 +38,7 @@ import interfaceImg from '@/assets/DataVerification/interface.png'
import defaultIcon from '@/assets/brand/defaultIcon.png' import defaultIcon from '@/assets/brand/defaultIcon.png'
import ItemDetail from './components/ItemDetail' import ItemDetail from './components/ItemDetail'
import { dailyVerifyEndaccount, handleGetAccountList, handleGetServiceShopList, submitEndaccountState } from "@/pages/DataVerification/service"; import { dailyVerifyEndaccount, handleGetAccountList, handleGetServiceShopList, submitEndaccountState } from "@/pages/DataVerification/service";
import changeIcon from '../../../assets/versionChange.png' import changeIcon from '@/assets/versionChange.svg'
import ProForm, { ProFormInstance, ProFormSelect } from "@ant-design/pro-form"; import ProForm, { ProFormInstance, ProFormSelect } from "@ant-design/pro-form";
import UnUploadDetail from "./components/unUploadDetail"; import UnUploadDetail from "./components/unUploadDetail";
import data from "@/pages/newDataAnalysis/areaVehicle/data"; import data from "@/pages/newDataAnalysis/areaVehicle/data";

View File

@ -557,7 +557,7 @@ const RoleList: React.FC<{ currentUser: CurrentUser | undefined }> = (props) =>
onClick={() => { onClick={() => {
getRoleMenu(currentUser?.TopSystemRoleId) getRoleMenu(currentUser?.TopSystemRoleId)
// 新增角色时,若账号为内部账号则默认角色父级为-1 ,否则则为账号所属角色的父级角色 // 新增角色时,若账号为内部账号则默认角色父级为-1 ,否则则为账号所属角色的父级角色
setCurrentRow({ SYSTEMROLE_PID: bigTabSelect === '1' ? currentUser?.TopSystemRoleId : '-1', SYSTEMROLE_STATUS: 1 }) setCurrentRow({ SYSTEMROLE_PID: currentUser?.TopSystemRoleId, SYSTEMROLE_STATUS: 1 })
handleModalVisible(true) handleModalVisible(true)
}} }}
></Button>, ></Button>,

View File

@ -238,7 +238,6 @@ const ChosePlayers = ({ onRef, defaultPerson, showChosePlayer, currentUser, moda
pageSize: 999999 pageSize: 999999
} }
const list = await getRoleList(req) const list = await getRoleList(req)
console.log('listlistlistlistlist', list);
setTreeView(list) setTreeView(list)
// 请求供应商的左边那棵树的数据 // 请求供应商的左边那棵树的数据

View File

@ -376,7 +376,6 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser }> = (props) => {
} }
const req: any = { const req: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser.ProvinceCode,
OPERATION_TYPES: selectedId || '11', OPERATION_TYPES: selectedId || '11',
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
APPROVALROUTE_STATES: params?.APPROVALROUTE_STATE || '', APPROVALROUTE_STATES: params?.APPROVALROUTE_STATE || '',
@ -516,7 +515,6 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser }> = (props) => {
USER_PATTERN: res?.USER_PATTERN, USER_PATTERN: res?.USER_PATTERN,
APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null, APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null,
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
PROVINCE_CODE: currentUser.ProvinceCode,
// RECORD_DATE:moment().format('YYYY-MM-DD'), // RECORD_DATE:moment().format('YYYY-MM-DD'),
NEXT_STATE: res?.NEXT_STATE NEXT_STATE: res?.NEXT_STATE
} }
@ -528,7 +526,6 @@ const ServiceConfig: React.FC<{ currentUser: CurrentUser }> = (props) => {
USER_PATTERN: res?.USER_PATTERN, USER_PATTERN: res?.USER_PATTERN,
APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null, APPROVALSTAFF_ID: res?.APPROVALSTAFF_ID ? res?.APPROVALSTAFF_ID.toString() : null,
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
PROVINCE_CODE: currentUser.ProvinceCode,
// RECORD_DATE:moment().format('YYYY-MM-DD'), // RECORD_DATE:moment().format('YYYY-MM-DD'),
NEXT_STATE: res?.NEXT_STATE NEXT_STATE: res?.NEXT_STATE
} }

View File

@ -19,7 +19,7 @@ import type { Dispatch } from 'umi';
import type { StateType } from '@/models/login'; import type { StateType } from '@/models/login';
import type { LoginParamsType } from '@/services/login'; import type { LoginParamsType } from '@/services/login';
import type { ConnectState } from '@/models/connect'; import type { ConnectState } from '@/models/connect';
import loginBg from '../../../assets/login-bg.png'; import loginBg from '@/assets/login-bg.png';
import styles from './index.less'; import styles from './index.less';
import { line } from '@antv/g2plot'; import { line } from '@antv/g2plot';
import session from '@/utils/session'; import session from '@/utils/session';
@ -73,9 +73,9 @@ const Login: React.FC<LoginProps> = (props) => {
function findIP(onNewIP) { function findIP(onNewIP) {
const peerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection; const peerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
const pc = new peerConnection({ iceServers: [] }); const pc = new peerConnection({ iceServers: [] });
const noop = function () { }; const noop = function () { };
const IPRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/; const IPRegex = /([0-9]{1,3}(\.[0-9]{1,3}){3})/;
const ipCandidates = []; const ipCandidates = [];
pc.createDataChannel(""); pc.createDataChannel("");
pc.createOffer().then(function (sdp) { pc.createOffer().then(function (sdp) {
sdp.sdp.split('\n').forEach(function (line) { sdp.sdp.split('\n').forEach(function (line) {

View File

@ -156,7 +156,7 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
const [tabList, setTabList] = useState<any>([]);// 选项卡列表 const [tabList, setTabList] = useState<any>([]);// 选项卡列表
const [showLoading, setShowLoading] = useState<boolean>(false)// 是否显示加载蒙层 const [showLoading, setShowLoading] = useState<boolean>(false)// 是否显示加载蒙层
const [showLoading1, setShowLoading1] = useState<boolean>(false)// 是否显示加载蒙层 const [showLoading1, setShowLoading1] = useState<boolean>(false)// 是否显示加载蒙层
const [showList, setShowList] = useState<boolean>(false)// 传给在营项目 是否显示列表 const [showList,setShowList] = useState<boolean>(false)// 传给在营项目 是否显示列表
const [detailMessage, setDetailMessage] = useState<any>()// 每个品牌的默认值 const [detailMessage, setDetailMessage] = useState<any>()// 每个品牌的默认值
const [serviceCar, setServiceCar] = useState<boolean>(false)// 月度车流分析 const [serviceCar, setServiceCar] = useState<boolean>(false)// 月度车流分析
const [serviceCarList, setServiceCarList] = useState<any>([])// 车流分析的数据 const [serviceCarList, setServiceCarList] = useState<any>([])// 车流分析的数据
@ -246,7 +246,7 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
const planType = useRef()// 判断打开的是年度计划还是月份计划 const planType = useRef()// 判断打开的是年度计划还是月份计划
const planRevenueData = useRef()// 自营计划的数据 const planRevenueData = useRef()// 自营计划的数据
const planRevenueDetailList = useRef()// 自营计划的月度明细 const planRevenueDetailList = useRef()// 自营计划的月度明细
const [contentLoading, setContentLoading] = useState<boolean>(false)// 显示抽屉加载效果的判断条件 const [contentLoading,setContentLoading] = useState<boolean>(false)// 显示抽屉加载效果的判断条件
// 设置页面右侧上面昨日数据里面的时间选择器里的禁用时间用的方法 // 设置页面右侧上面昨日数据里面的时间选择器里的禁用时间用的方法
const disabledDate = (current: any) => { const disabledDate = (current: any) => {
return current && current < moment().subtract(10, 'day') || current > moment().subtract(1, 'day'); return current && current < moment().subtract(10, 'day') || current > moment().subtract(1, 'day');
@ -478,12 +478,12 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
req = { req = {
ServerpartId: id, ServerpartId: id,
StartDate: `${y}-01-01`, StartDate: `${y}-01-01`,
ShowProjectSplit: false ShowProjectSplit:false
} }
} else { } else {
req = { req = {
ServerpartId: id, ServerpartId: id,
ShowProjectSplit: false ShowProjectSplit:false
} }
} }
const data = await getBrandReceivablesList(req) const data = await getBrandReceivablesList(req)
@ -656,8 +656,8 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
sectionMaxRef.current = Number((sectionMax / 10000).toFixed(2)) sectionMaxRef.current = Number((sectionMax / 10000).toFixed(2))
entryMaxRef.current = entryMax entryMaxRef.current = entryMax
console.log('pieLine', pieLine) console.log('pieLine',pieLine)
console.log('pieList', pieList) console.log('pieList',pieList)
// setServiceCarList(data.data) // setServiceCarList(data.data)
if (showDrawer) { if (showDrawer) {
@ -717,7 +717,7 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
// 改变归属地右边城市列表的方法 // 改变归属地右边城市列表的方法
const getCityList = async (ProvinceName: string, allCount: number, type: number, time: any) => { const getCityList = async (ProvinceName: string, allCount: number, type: number, time: any) => {
const req = { const req = {
StatisticsMonth: time ? moment(time).format('YYYYMM') : moment(moment().subtract(1, 'day').format('YYYY-MM-DD')).format('YYYYMM'), StatisticsMonth: time?moment(time).format('YYYYMM') :moment(moment().subtract(1, 'day').format('YYYY-MM-DD')).format('YYYYMM'),
Serverpart_ID: serverpartId.current, Serverpart_ID: serverpartId.current,
ProvinceName, ProvinceName,
isExclude: ProvinceName.indexOf(',') !== -1, isExclude: ProvinceName.indexOf(',') !== -1,
@ -914,8 +914,6 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
} }
const data = await getServiceDetail(req) const data = await getServiceDetail(req)
setServiceName(data.SERVERPART_NAME) setServiceName(data.SERVERPART_NAME)
console.log('datadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadatavv', data);
setServiceDetail(data) setServiceDetail(data)
} }
const typeObj = { const typeObj = {
@ -1196,15 +1194,15 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
<div className={'onSaleProjectTitle'}></div> <div className={'onSaleProjectTitle'}></div>
<div className={'projectContent'}> <div className={'projectContent'}>
<Radio.Group className={'tab'} value={selectTab} onChange={(val) => { <Radio.Group className={'tab'} value={selectTab} onChange={(val) => {
console.log('val', val) console.log('val',val)
setSelectTab(val.target.value) setSelectTab(val.target.value)
setTableList(allList[val.target.value]) setTableList(allList[val.target.value])
console.log('tabs', tabs) console.log('tabs',tabs)
}}> }}>
{ {
tabs && tabs.length > 0 ? tabs.map((item: any) => { tabs && tabs.length>0?tabs.map((item: any) => {
return <Radio.Button className={'tabItem'} value={item.key}>{item.label}<span style={{ marginLeft: '4px' }}>{`(${item.value})`}</span></Radio.Button> return <Radio.Button className={'tabItem'} value={item.key}>{item.label}<span style={{ marginLeft: '4px' }}>{`(${item.value})`}</span></Radio.Button>
}) : '' }):''
} }
</Radio.Group> </Radio.Group>
<div className={'brandList'}> <div className={'brandList'}>
@ -1255,323 +1253,323 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
</> </>
: :
// 平面图不显示的时候 左侧显示的内容 // 平面图不显示的时候 左侧显示的内容
<> <>
<div className={'serviceImg'}> <div className={'serviceImg'}>
{ {
serviceDetail?.ImageLits && serviceDetail?.ImageLits.length > 0 && serviceDetail?.ImageLits[0] ? serviceDetail?.ImageLits && serviceDetail?.ImageLits.length > 0 && serviceDetail?.ImageLits[0] ?
<img className={'img'} src={serviceDetail?.ImageLits[0]} /> : <img className={'img'} src={serviceDetail?.ImageLits[0]} /> :
<img className={'defaultImg'} src={defaultIcon} /> <img className={'defaultImg'} src={defaultIcon} />
} }
</div>
<div className={'desc'}>
<img className={'descIcon'} src={descIcon} />
<span className={'descText'}>{serviceDetail?.ServerpartInfo?.SERVERPART_INFO}</span>
<span className={'notice'}>{serviceDetail?.ServerpartInfo?.SERVERPART_INFO}</span>
</div>
<div className={'serviceTypeTabs'}>
<div className={'serviceTypeItem'}>
<img className={'itemIcon'} src={carService} />
<span className={'itemText'}></span>
</div> </div>
<div className={'desc'}>
<div className={'serviceTypeItem'}> <img className={'descIcon'} src={descIcon} />
<img className={'itemIcon'} src={hotal} /> <span className={'descText'}>{serviceDetail?.ServerpartInfo?.SERVERPART_INFO}</span>
<span className={'itemText'}></span> <span className={'notice'}>{serviceDetail?.ServerpartInfo?.SERVERPART_INFO}</span>
</div> </div>
<div className={'serviceTypeTabs'}>
<div className={'serviceTypeItem'}> <div className={'serviceTypeItem'}>
<img className={'itemIcon'} src={charge} /> <img className={'itemIcon'} src={carService} />
<span className={'itemText'}></span> <span className={'itemText'}></span>
</div>
<div className={'serviceTypeItem'}>
<img className={'itemIcon'} src={baby} />
<span className={'itemText'}></span>
</div>
</div>
{
serviceDetail ?
<div className={'detailList'}>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={area} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.FLOORAREA ? fmoney(serviceDetail.ServerpartInfo.FLOORAREA, 2) : '-'}m²</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={stopArea} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SHAREAREA ? fmoney(serviceDetail.ServerpartInfo.SHAREAREA, 2) : '-'}m²</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={buildArea} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SERVERPART_AREA ? fmoney(serviceDetail.ServerpartInfo.SERVERPART_AREA, 2) : '-'}m²</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={water} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.WATERINTAKE_TYPE === 1 ? '自来水' : serviceDetail.ServerpartInfo.WATERINTAKE_TYPE === 2 ? '井水' : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={badWater} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SEWAGEDISPOSAL_TYPE === 1 ? '市政' : serviceDetail.ServerpartInfo?.SEWAGEDISPOSAL_TYPE === 2 ? '污水处理设备' : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={fixed} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SERVERPART_ADDRESS ? serviceDetail.ServerpartInfo.SERVERPART_ADDRESS : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={managerUnit} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.MANAGERCOMPANY ? serviceDetail.ServerpartInfo.MANAGERCOMPANY : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'} >
<img className={'itemLeftIcon'} src={propryRight} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.OWNEDCOMPANY ? serviceDetail.ServerpartInfo.OWNEDCOMPANY : ''}</div>
</div>
</div> </div>
: ''
} <div className={'serviceTypeItem'}>
<div className={'areaList'}> <img className={'itemIcon'} src={hotal} />
<span className={'itemText'}></span>
</div>
<div className={'serviceTypeItem'}>
<img className={'itemIcon'} src={charge} />
<span className={'itemText'}></span>
</div>
<div className={'serviceTypeItem'}>
<img className={'itemIcon'} src={baby} />
<span className={'itemText'}></span>
</div>
</div>
{ {
serviceDetail && serviceDetail.RegionInfo ? serviceDetail ?
serviceDetail.RegionInfo.map((item: any) => { <div className={'detailList'}>
return <div className={'areaItem'}> <div className={'detailItem'}>
<div className={'areaItemTop'}> <div className={'detailItemLeft'}>
<img className={'itemTopIcon'} src={ES} style={{ transform: `rotate(${item.SERVERPART_REGIONNAME === '东区' || item.SERVERPART_REGIONNAME === '西区' ? '90deg' : '0deg'})` }} /> <img className={'itemLeftIcon'} src={area} />
<span className={'itemTitle'}>{`${item.SERVERPART_REGIONNAME || ''}`}</span> <span className={'itemLeftLabel'}></span>
<span className={'typeItem'}></span>
</div>
<div className={'itemList'}>
<div className={'contentItem'}>
<div className={item.HASPANTRY ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={manWC} />
<span className={'contentItemText'}>
{
item.HASPANTRY ?
<span className={'number'}>{`(${item.HASPANTRY || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASWIFI ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={womenWC} />
<span className={'contentItemText'}>
{
item.HASWIFI ?
<span className={'number'}>{`(${item.HASWIFI || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASTHIRDTOILETS ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={thirdToilets} />
<span className={'contentItemText'}>
{
item.HASTHIRDTOILETS ?
<span className={'number'}>{`(${item.HASTHIRDTOILETS || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.TOILETCOUNT ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={tidalSpace} />
<span className={'contentItemText'}>
{
item.TOILETCOUNT ?
<span className={'number'}>{`(${item.TOILETCOUNT || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASWATERROOM ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={waterBoiler} />
<span className={'contentItemText'}>
{
item.HASWATERROOM ?
<span className={'number'}>{`(${item.HASWATERROOM || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASSHOWERROOM ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={vehicleRefueling} />
<span className={'contentItemText'}>
{
item.HASSHOWERROOM ?
<span className={'number'}>{`(${item.HASSHOWERROOM || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASCHILD ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={maintenance} />
<span className={'contentItemText'}>
{
item.HASCHILD ?
<span className={'number'}>{`(${item.HASCHILD || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.SMALLPARKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={car} />
<span className={'contentItemText'}>
轿
{
item.SMALLPARKING ?
<span className={'number'}>{`(${item.SMALLPARKING || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.PACKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={bus} />
<span className={'contentItemText'}>
{
item.PACKING ?
<span className={'number'}>{`(${item.PACKING || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.TRUCKPACKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={trainCar} />
<span className={'contentItemText'}>
{
item.TRUCKPACKING ?
<span className={'number'}>{`(${item.TRUCKPACKING || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.DININGROOMCOUNT ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={food} />
<span className={'contentItemText'}>
{
item.DININGROOMCOUNT ?
<span className={'number'}>{`(${item.DININGROOMCOUNT || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASBACKGROUNDRADIO ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={minimart} />
<span className={'contentItemText'}>
便
{
item.HASBACKGROUNDRADIO ?
<span className={'number'}>{`(${item.HASBACKGROUNDRADIO || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASMESSAGESEARCH ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={room} />
<span className={'contentItemText'}>
宿
{
item.HASMESSAGESEARCH ?
<span className={'number'}>{`(${item.HASMESSAGESEARCH || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.DININGBXCOUNT ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={shop} />
<span className={'contentItemText'}>
{
item.DININGBXCOUNT ?
<span className={'number'}>{`(${item.DININGBXCOUNT || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.DANPACKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={chemicals} />
<span className={'contentItemText'}>
{
item.DANPACKING ?
<span className={'number'}>{`(${item.DANPACKING || ""})`}</span> : ''
}
</span>
</div>
</div>
</div> </div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.FLOORAREA ? fmoney(serviceDetail.ServerpartInfo.FLOORAREA, 2) : '-'}m²</div>
</div> </div>
}) : <NoData />
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={stopArea} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SHAREAREA ? fmoney(serviceDetail.ServerpartInfo.SHAREAREA, 2) : '-'}m²</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={buildArea} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SERVERPART_AREA ? fmoney(serviceDetail.ServerpartInfo.SERVERPART_AREA, 2) : '-'}m²</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={water} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.WATERINTAKE_TYPE === 1 ? '自来水' : serviceDetail.ServerpartInfo.WATERINTAKE_TYPE === 2 ? '井水' : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={badWater} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SEWAGEDISPOSAL_TYPE === 1 ? '市政' : serviceDetail.ServerpartInfo?.SEWAGEDISPOSAL_TYPE === 2 ? '污水处理设备' : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={fixed} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.SERVERPART_ADDRESS ? serviceDetail.ServerpartInfo.SERVERPART_ADDRESS : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'}>
<img className={'itemLeftIcon'} src={managerUnit} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.MANAGERCOMPANY ? serviceDetail.ServerpartInfo.MANAGERCOMPANY : ''}</div>
</div>
<div className={'detailItem'}>
<div className={'detailItemLeft'} >
<img className={'itemLeftIcon'} src={propryRight} />
<span className={'itemLeftLabel'}></span>
</div>
<div className={'detailItemRight'}>{serviceDetail?.ServerpartInfo?.OWNEDCOMPANY ? serviceDetail.ServerpartInfo.OWNEDCOMPANY : ''}</div>
</div>
</div>
: ''
} }
</div> <div className={'areaList'}>
</> {
serviceDetail && serviceDetail.RegionInfo ?
serviceDetail.RegionInfo.map((item: any) => {
return <div className={'areaItem'}>
<div className={'areaItemTop'}>
<img className={'itemTopIcon'} src={ES} style={{ transform: `rotate(${item.SERVERPART_REGIONNAME === '东区' || item.SERVERPART_REGIONNAME === '西区' ? '90deg' : '0deg'})` }} />
<span className={'itemTitle'}>{`${item.SERVERPART_REGIONNAME || ''}`}</span>
<span className={'typeItem'}></span>
</div>
<div className={'itemList'}>
<div className={'contentItem'}>
<div className={item.HASPANTRY ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={manWC} />
<span className={'contentItemText'}>
{
item.HASPANTRY ?
<span className={'number'}>{`(${item.HASPANTRY || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASWIFI ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={womenWC} />
<span className={'contentItemText'}>
{
item.HASWIFI ?
<span className={'number'}>{`(${item.HASWIFI || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASTHIRDTOILETS ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={thirdToilets} />
<span className={'contentItemText'}>
{
item.HASTHIRDTOILETS ?
<span className={'number'}>{`(${item.HASTHIRDTOILETS || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.TOILETCOUNT ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={tidalSpace} />
<span className={'contentItemText'}>
{
item.TOILETCOUNT ?
<span className={'number'}>{`(${item.TOILETCOUNT || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASWATERROOM ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={waterBoiler} />
<span className={'contentItemText'}>
{
item.HASWATERROOM ?
<span className={'number'}>{`(${item.HASWATERROOM || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASSHOWERROOM ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={vehicleRefueling} />
<span className={'contentItemText'}>
{
item.HASSHOWERROOM ?
<span className={'number'}>{`(${item.HASSHOWERROOM || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASCHILD ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={maintenance} />
<span className={'contentItemText'}>
{
item.HASCHILD ?
<span className={'number'}>{`(${item.HASCHILD || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.SMALLPARKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={car} />
<span className={'contentItemText'}>
轿
{
item.SMALLPARKING ?
<span className={'number'}>{`(${item.SMALLPARKING || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.PACKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={bus} />
<span className={'contentItemText'}>
{
item.PACKING ?
<span className={'number'}>{`(${item.PACKING || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.TRUCKPACKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={trainCar} />
<span className={'contentItemText'}>
{
item.TRUCKPACKING ?
<span className={'number'}>{`(${item.TRUCKPACKING || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.DININGROOMCOUNT ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={food} />
<span className={'contentItemText'}>
{
item.DININGROOMCOUNT ?
<span className={'number'}>{`(${item.DININGROOMCOUNT || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASBACKGROUNDRADIO ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={minimart} />
<span className={'contentItemText'}>
便
{
item.HASBACKGROUNDRADIO ?
<span className={'number'}>{`(${item.HASBACKGROUNDRADIO || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.HASMESSAGESEARCH ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={room} />
<span className={'contentItemText'}>
宿
{
item.HASMESSAGESEARCH ?
<span className={'number'}>{`(${item.HASMESSAGESEARCH || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.DININGBXCOUNT ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={shop} />
<span className={'contentItemText'}>
{
item.DININGBXCOUNT ?
<span className={'number'}>{`(${item.DININGBXCOUNT || ""})`}</span> : ''
}
</span>
</div>
</div>
<div className={'contentItem'}>
<div className={item.DANPACKING ? 'contentItemBox' : 'contentItemBox noContentItemBox'}>
<img className={'contentItemIcon'} src={chemicals} />
<span className={'contentItemText'}>
{
item.DANPACKING ?
<span className={'number'}>{`(${item.DANPACKING || ""})`}</span> : ''
}
</span>
</div>
</div>
</div>
</div>
}) : <NoData />
}
</div>
</>
} }
</> </>
} }
@ -1969,7 +1967,7 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
{/* giveProjectServiceInfo 拿到商家id和商家名称 handleGetTableList拿到在营项目列表中的列表数据 平面图出现的时候 左侧显示的内容 */} {/* giveProjectServiceInfo 拿到商家id和商家名称 handleGetTableList拿到在营项目列表中的列表数据 平面图出现的时候 左侧显示的内容 */}
<OnlineProjectItem onRef={OnlineProjectItemRef} getModeLabel={getModeLabel} fmoney={fmoney} openProject={openProject} serverpartId={serverpartId} <OnlineProjectItem onRef={OnlineProjectItemRef} getModeLabel={getModeLabel} fmoney={fmoney} openProject={openProject} serverpartId={serverpartId}
giveProjectServiceInfo={giveProjectServiceInfo} handleGetTableList={handleGetTableList} showList={showList} setShowList={setShowList} giveProjectServiceInfo={giveProjectServiceInfo} handleGetTableList={handleGetTableList} showList={showList} setShowList={setShowList}
tableShowBottom={true} /> tableShowBottom={true}/>
{/* <div className={'onSaleProject'}> */} {/* <div className={'onSaleProject'}> */}
{/* <div className={'onSaleProjectTitle'}>在营项目</div> */} {/* <div className={'onSaleProjectTitle'}>在营项目</div> */}
@ -2669,23 +2667,23 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
</div> </div>
<div className={'drawerContent'}> <div className={'drawerContent'}>
{ {
contentLoading ? contentLoading?
<div className={'contentLoading'}> <div className={'contentLoading'}>
<div className={'loading'}> <div className={'loading'}>
<Spin /> <Spin />
<span style={{ marginLeft: '5px' }}>{'加载中.....'}</span> <span style={{ marginLeft: '5px' }}>{'加载中.....'}</span>
</div> </div>
</div> : '' </div>:''
} }
{ {
selectFun === 1 ? selectFun === 1 ?
<> <>
<div style={{ marginBottom: '12px', width: '100%', display: 'flex', justifyContent: 'space-between' }}> <div style={{ marginBottom: '12px', width: '100%', display: 'flex', justifyContent: 'space-between' }}>
<RangePicker value={funTimeDate1} format={'YYYY-MM-DD'} onChange={(val: any) => { <RangePicker value={funTimeDate1} format={'YYYY-MM-DD'} onChange={(val: any) => {
if (val) { if (val){
setFunTimeDate1([moment(val[0]._d), moment(val[1]._d)]) setFunTimeDate1([moment(val[0]._d), moment(val[1]._d)])
handleMeetingDetail(serverpartId.current, [moment(val[0]._d), moment(val[1]._d)]) handleMeetingDetail(serverpartId.current, [moment(val[0]._d), moment(val[1]._d)])
} else { }else{
setFunTimeDate1([]) setFunTimeDate1([])
setMeetDetail([]) setMeetDetail([])
} }
@ -2776,10 +2774,10 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
<> <>
<div style={{ marginBottom: '12px', width: '100%', display: 'flex', justifyContent: 'space-between' }}> <div style={{ marginBottom: '12px', width: '100%', display: 'flex', justifyContent: 'space-between' }}>
<RangePicker value={funTimeDate3} disabledDate={dailyDisableDate} format={'YYYY-MM-DD'} onChange={(val: any) => { <RangePicker value={funTimeDate3} disabledDate={dailyDisableDate} format={'YYYY-MM-DD'} onChange={(val: any) => {
if (val) { if (val){
setFunTimeDate3([moment(val[0]._d), moment(val[1]._d)]) setFunTimeDate3([moment(val[0]._d), moment(val[1]._d)])
getDailySerach(serverpartId.current, [moment(val[0]._d), moment(val[1]._d)]) getDailySerach(serverpartId.current, [moment(val[0]._d), moment(val[1]._d)])
} else { }else{
setFunTimeDate3([]) setFunTimeDate3([])
setDailyData([]) setDailyData([])
} }
@ -2925,7 +2923,7 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
<> <>
<div style={{ display: selectFun === 4 ? 'block' : 'none' }}> <div style={{ display: selectFun === 4 ? 'block' : 'none' }}>
<Card bordered={false} bodyStyle={{ padding: 0, margin: 0 }}> <Card bordered={false} bodyStyle={{ padding: 0, margin: 0 }}>
<RevenueSummary serverpartId={serverpartId.current} type={true} /> <RevenueSummary serverpartId={serverpartId.current} type={true}/>
</Card> </Card>
</div> </div>
</> </>
@ -2937,7 +2935,7 @@ const BrandTable: React.FC<{ currentUser: CurrentUser }> = ({ currentUser }) =>
</div> </div>
<> <>
<div style={{ display: selectFun === 6 ? 'block' : 'none', width: '100%' }}> <div style={{ display: selectFun === 6 ? 'block' : 'none',width:'100%' }}>
<ShareBenefit isComponents={true} ServerpartId={serverpartId.current} /> <ShareBenefit isComponents={true} ServerpartId={serverpartId.current} />
</div> </div>
</> </>

View File

@ -27,11 +27,10 @@ import numeral from 'numeral';
import { exportExcel } from '@/utils/utils'; import { exportExcel } from '@/utils/utils';
import { getYSSellMasterList } from './service'; import { getYSSellMasterList } from './service';
import { getMoney, getUserShopTree } from '@/services/options'; import { 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;
@ -53,7 +52,6 @@ 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>[] = [
@ -202,22 +200,21 @@ 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 getYSSellMasterListAllData({ const data = await getYSSellMasterList({
...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); console.log('data', data.data);
const list: any = JSON.parse(JSON.stringify(data.List)) const list: any = JSON.parse(JSON.stringify(data.data))
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.List = list data.data = list
setOtherData(data.OtherData) return data;
return { data: data.List, success: true };
} }
return { data: [], success: true } return { data: [], success: true }
}} }}
@ -246,28 +243,16 @@ const CommoditysaleTable: React.FC<{ currentUser: CurrentUser | undefined }> = (
}} }}
tableExtraRender={ tableExtraRender={
(_, data) => { (_, data) => {
if (data) {
const devicesList: any = []
const reduceData = data.reduce((
p: {
SELLMASTER_OFFPRICE: number,
SELLMASTER_COUNT: number,
SELLMASTER_AMOUNT: number,
MACHINECODE: string[],
payway: {},
mobilePay: {}
},
if (data) {
const reduceData = data.reduce((
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]) { // 移动支付方式
@ -285,61 +270,60 @@ 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: {} });
SELLMASTER_OFFPRICE: 0, console.log('reduceData', reduceData);
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={7} size="small" column={5}
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 className='mobileMoney' label="移动支付">
type="secondary"> </Text></Descriptions.Item> ¥<span className='mobileMoneyText'>{numeral(reduceData.payway['移动']).format('0,0.00')}</span>
<Descriptions.Item </Descriptions.Item>
label="实收金额">¥{numeral(reduceData.SELLMASTER_AMOUNT).format('0,0.00')}</Descriptions.Item> <Descriptions.Item label="现金支付">¥{numeral(reduceData.payway['现金']).format('0,0.00')}</Descriptions.Item>
<Descriptions.Item <Descriptions.Item label="实收金额">¥{numeral(reduceData.SELLMASTER_AMOUNT).format('0,0.00')}</Descriptions.Item>
label="优惠金额">¥{numeral(reduceData.SELLMASTER_OFFPRICE).format('0,0.00')}</Descriptions.Item> </Descriptions>
<Descriptions.Item <Descriptions size="small" className="commity-sale-description" column={5} contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}>
label="客单均价">¥{numeral(reduceData.SELLMASTER_AMOUNT / data.length).format('0,0.00')}</Descriptions.Item> <Descriptions.Item label="客单数量">{numeral(data.length).format('0,0')}<Text type="secondary"> </Text></Descriptions.Item>
<Descriptions.Item label="销售数量">{numeral(reduceData.SELLMASTER_COUNT).format('0,0')}<Text <Descriptions.Item label="优惠金额">¥{numeral(reduceData.SELLMASTER_OFFPRICE).format('0,0.00')}</Descriptions.Item>
type="secondary"> </Text></Descriptions.Item> <Descriptions.Item label="收银机">{numeral(reduceData.MACHINECODE.length).format('0,0')}<Text type="secondary"> </Text></Descriptions.Item>
<Descriptions.Item label="设备数量">{devicesList && devicesList.length > 0 ? devicesList.length : '-'}</Descriptions.Item> </Descriptions>
<Descriptions.Item label="统计时间">{moment().format('YYYY-MM-DD')}</Descriptions.Item> <Descriptions size="small" className="commity-sale-description" column={5} contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}>
<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
title={<Text type="success" style={{ color: "#1890ff", fontSize: 14 }}></Text>} size="small"
size="small" column={7} column={5}
className="commity-sale-description" className="commity-sale-description"
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }} contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}
> >
<Descriptions.Item {
label="现金支付">{otherData?.CASH ? `¥${numeral(getMoney(otherData?.CASH)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> Object.keys(reduceData.payway).reverse().map((n, index) => {
<Descriptions.Item if (n === '移动') {
label="微信支付">{otherData?.TICKETBILL ? `¥${numeral(getMoney(otherData?.TICKETBILL)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> return <Descriptions.Item span={index === 1 ? 4 : 3} label={`${n}支付`}>¥
<Descriptions.Item label="支付宝支付">{otherData?.OTHERPAY ? `¥${numeral(getMoney(otherData?.OTHERPAY)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> <Space>{numeral(reduceData.payway[n]).format('0,0.00')}{() => {
<Descriptions.Item label="云闪付">{otherData?.CREDITCARD ? `¥${numeral(getMoney(otherData?.CREDITCARD)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> return (reduceData.payway[n] > 0 && <><Text type="secondary">(</Text>{
<Descriptions.Item label="银联记账">{otherData?.YUNSHANFU ? `¥${numeral(getMoney(otherData?.YUNSHANFU)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> Object.keys(reduceData.mobilePay).map(m =>
<Descriptions.Item label="企业会员">{otherData?.COUPONTYPE_2010 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2010)).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_2020 ? `¥${numeral(getMoney(otherData?.COUPONTYPE_2020)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> }<Text type="secondary">)</Text></>)
</Descriptions> }}
<Descriptions size="small" className="commity-sale-description" column={7} </Space>
contentStyle={{ fontWeight: "bolder" }} labelStyle={{ color: "#00000073" }}> </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> return <Descriptions.Item label={`${n}支付`} span={1} >¥{numeral(reduceData.payway[n]).format('0,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.Item label="稽核补录">{otherData?.SELLMASTERTYPE_1040 ? `¥${numeral(getMoney(otherData?.SELLMASTERTYPE_1040)).format('0,0.00')}` : '¥0.00'}</Descriptions.Item> </Descriptions> */}
</Descriptions>
</div> </div>
} }
return <></> return <></>
} }

View File

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

View File

@ -416,7 +416,6 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
useEffect(async () => { useEffect(async () => {
const req: any = { const req: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100100", OPERATION_TYPES: "100100",
@ -435,7 +434,7 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
} }
// 判断当前用户 是否有新增权限 // 判断当前用户 是否有新增权限
let have: boolean = false let have: boolean = false
let idList: any = firstSetp && firstSetp.APPROVALSTAFF_ID ? firstSetp.APPROVALSTAFF_ID.split(',') : "" let idList: any = firstSetp.APPROVALSTAFF_ID.split(',')
console.log('idList', idList); console.log('idList', idList);
if (idList.indexOf(currentUser?.ID.toString()) !== -1) { if (idList.indexOf(currentUser?.ID.toString()) !== -1) {
@ -868,8 +867,6 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
}]} }]}
request={async () => { request={async () => {
const data = await getServerpartTree(currentUser?.ProvinceCode, currentUser?.CityAuthority, true, true, true) const data = await getServerpartTree(currentUser?.ProvinceCode, currentUser?.CityAuthority, true, true, true)
console.log('data321312', data);
const list: any = [] const list: any = []
if (data && data.length > 0) { if (data && data.length > 0) {
data.forEach((item: any) => { data.forEach((item: any) => {
@ -879,9 +876,9 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
}) })
} }
}) })
// data.forEach((item: any) => { data.forEach((item: any) => {
// list.push({ label: item.label, value: item.value }) list.push({ label: item.label, value: item.value })
// }) })
} }
return list return list
}} }}
@ -907,7 +904,6 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
request={async () => { request={async () => {
const reqState: any = { const reqState: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100100", OPERATION_TYPES: "100100",

View File

@ -576,7 +576,6 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
useEffect(async () => { useEffect(async () => {
const req: any = { const req: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100200", OPERATION_TYPES: "100200",
@ -595,7 +594,7 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
} }
// 判断当前用户 是否有新增权限 // 判断当前用户 是否有新增权限
let have: boolean = false let have: boolean = false
let idList: any = firstSetp && firstSetp.APPROVALSTAFF_ID ? firstSetp.APPROVALSTAFF_ID.split(',') : [] let idList: any = firstSetp.APPROVALSTAFF_ID.split(',')
console.log('idList', idList); console.log('idList', idList);
if (idList.indexOf(currentUser?.ID.toString()) !== -1) { if (idList.indexOf(currentUser?.ID.toString()) !== -1) {
@ -1038,9 +1037,9 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
}) })
} }
}) })
// data.forEach((item: any) => { data.forEach((item: any) => {
// list.push({ label: item.label, value: item.value }) list.push({ label: item.label, value: item.value })
// }) })
} }
return list return list
}} }}
@ -1065,7 +1064,6 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
request={async () => { request={async () => {
const reqState: any = { const reqState: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100210", OPERATION_TYPES: "100210",
@ -1125,7 +1123,6 @@ const ProductChangeInfoApproval: React.FC<{ currentUser: CurrentUser }> = (props
console.log('approveCurrentRowapproveCurrentRowapproveCurrentRow', currentRow); console.log('approveCurrentRowapproveCurrentRowapproveCurrentRow', currentRow);
const reqState: any = { const reqState: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100210", OPERATION_TYPES: "100210",

View File

@ -546,7 +546,6 @@ const ProductChangePriceApproval: React.FC<{ currentUser: CurrentUser }> = (prop
useEffect(async () => { useEffect(async () => {
const req: any = { const req: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100200", OPERATION_TYPES: "100200",
@ -565,7 +564,7 @@ const ProductChangePriceApproval: React.FC<{ currentUser: CurrentUser }> = (prop
} }
// 判断当前用户 是否有新增权限 // 判断当前用户 是否有新增权限
let have: boolean = false let have: boolean = false
let idList: any = firstSetp && firstSetp.APPROVALSTAFF_ID ? firstSetp.APPROVALSTAFF_ID.split(',') : [] let idList: any = firstSetp.APPROVALSTAFF_ID.split(',')
console.log('idList', idList); console.log('idList', idList);
if (idList.indexOf(currentUser?.ID.toString()) !== -1) { if (idList.indexOf(currentUser?.ID.toString()) !== -1) {
@ -1085,9 +1084,9 @@ const ProductChangePriceApproval: React.FC<{ currentUser: CurrentUser }> = (prop
}) })
} }
}) })
// data.forEach((item: any) => { data.forEach((item: any) => {
// list.push({ label: item.label, value: item.value }) list.push({ label: item.label, value: item.value })
// }) })
} }
return list return list
}} }}
@ -1112,7 +1111,6 @@ const ProductChangePriceApproval: React.FC<{ currentUser: CurrentUser }> = (prop
request={async () => { request={async () => {
const reqState: any = { const reqState: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100200", OPERATION_TYPES: "100200",
@ -1168,7 +1166,6 @@ const ProductChangePriceApproval: React.FC<{ currentUser: CurrentUser }> = (prop
request={async () => { request={async () => {
const reqState: any = { const reqState: any = {
SearchParameter: { SearchParameter: {
PROVINCE_CODE: currentUser?.ProvinceCode,
APPROVALROUTE_STATES: "", APPROVALROUTE_STATES: "",
APPROVALROUTE_VALID: 1, APPROVALROUTE_VALID: 1,
OPERATION_TYPES: "100200", OPERATION_TYPES: "100200",

View File

@ -140,10 +140,10 @@ const commodityInfo: React.FC<{ currentUser: CurrentUser }> = (props) => {
}) })
} }
// serverpartList.unshift({ serverpartList.unshift({
// label: "全部", label: "全部",
// value: '' value: serverpartId
// }) })
return serverpartList return serverpartList
}, },
fieldProps: { fieldProps: {
@ -237,7 +237,7 @@ const commodityInfo: React.FC<{ currentUser: CurrentUser }> = (props) => {
title: <div style={{ textAlign: 'center' }}></div>, title: <div style={{ textAlign: 'center' }}></div>,
width: 80, width: 80,
dataIndex: 'COMMODITY_UNIT', dataIndex: 'COMMODITY_UNIT',
align: 'center', align: 'right',
hideInSearch: true, hideInSearch: true,
}, },
{ {
@ -349,7 +349,7 @@ const commodityInfo: React.FC<{ currentUser: CurrentUser }> = (props) => {
} }
}) })
} }
// formRef.current?.setFieldsValue({ ServerpartID: serverpartId }) formRef.current?.setFieldsValue({ ServerpartID: serverpartId })
} }
if (type === '1') { if (type === '1') {

File diff suppressed because it is too large Load Diff

View File

@ -550,14 +550,6 @@ const LostandFoundAPPliance: React.FC<{ currentUser: CurrentUser }> = (props) =>
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
// fileList: fileList, // 绑定 fileList // fileList: fileList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
console.log('info', info); console.log('info', info);
console.log('fileList', fileList); console.log('fileList', fileList);

View File

@ -345,14 +345,6 @@ const LostandFoundReview: React.FC<{ currentUser: CurrentUser | undefined }> = (
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
// fileList: fileList, // 绑定 fileList // fileList: fileList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
console.log('info', info); console.log('info', info);
console.log('fileList', fileList); console.log('fileList', fileList);

View File

@ -559,14 +559,6 @@ const MallBrandManage: React.FC<{ currentUser: CurrentUser }> = (props) => {
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
fileList: fileList, // 绑定 fileList fileList: fileList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = fileList.findIndex(n => n.uid === info.file.uid); const index = fileList.findIndex(n => n.uid === info.file.uid);

View File

@ -514,17 +514,8 @@ const MerchantEvaluationManage: React.FC<{ currentUser: CurrentUser, isComponent
listType="picture-card" listType="picture-card"
accept="image/*" accept="image/*"
fieldProps={{ fieldProps={{
onPreview: handlePreview, onPreview: handlePreview
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
}} }}
/> />
</Col> </Col>

View File

@ -842,14 +842,6 @@ const OrderProductManage: React.FC<{ currentUser: CurrentUser | undefined }> = (
maxCount: 1, maxCount: 1,
onPreview: handlePreview, onPreview: handlePreview,
fileList: fileList, // 绑定 fileList fileList: fileList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = fileList.findIndex(n => n.uid === info.file.uid); const index = fileList.findIndex(n => n.uid === info.file.uid);

View File

@ -1410,14 +1410,6 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
handlePreview(1) handlePreview(1)
}, },
fileList: mainImgList, // 绑定 fileList fileList: mainImgList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = mainImgList.findIndex(n => n.uid === info.file.uid); const index = mainImgList.findIndex(n => n.uid === info.file.uid);
@ -1469,14 +1461,6 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
handlePreview(2) handlePreview(2)
}, },
fileList: headerImgList, // 绑定 fileList fileList: headerImgList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = headerImgList.findIndex(n => n.uid === info.file.uid); const index = headerImgList.findIndex(n => n.uid === info.file.uid);
@ -1528,14 +1512,6 @@ const COMMODITYTable: React.FC<{ currentUser: CurrentUser | undefined }> = (prop
handlePreview(3) handlePreview(3)
}, },
fileList: detailImgList, // 绑定 fileList fileList: detailImgList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = detailImgList.findIndex(n => n.uid === info.file.uid); const index = detailImgList.findIndex(n => n.uid === info.file.uid);

View File

@ -1316,14 +1316,6 @@ const ShoppingMallProductSearch: React.FC<{ currentUser: CurrentUser | undefined
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
fileList: mainImgList, // 绑定 fileList fileList: mainImgList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = mainImgList.findIndex(n => n.uid === info.file.uid); const index = mainImgList.findIndex(n => n.uid === info.file.uid);
@ -1373,14 +1365,6 @@ const ShoppingMallProductSearch: React.FC<{ currentUser: CurrentUser | undefined
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
fileList: headerImgList, // 绑定 fileList fileList: headerImgList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = headerImgList.findIndex(n => n.uid === info.file.uid); const index = headerImgList.findIndex(n => n.uid === info.file.uid);
@ -1432,14 +1416,6 @@ const ShoppingMallProductSearch: React.FC<{ currentUser: CurrentUser | undefined
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
fileList: detailImgList, // 绑定 fileList fileList: detailImgList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
if (info.file.status === 'removed') { if (info.file.status === 'removed') {
const index = detailImgList.findIndex(n => n.uid === info.file.uid); const index = detailImgList.findIndex(n => n.uid === info.file.uid);

View File

@ -488,14 +488,6 @@ const SummaryofMerchantReviews: React.FC<{ currentUser: CurrentUser, isComponent
accept="image/*" accept="image/*"
fieldProps={{ fieldProps={{
onPreview: handlePreview, onPreview: handlePreview,
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
}} }}
/> />
</Col> </Col>

View File

@ -107,8 +107,6 @@ const scenicSpotConfig: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
fixed: "left", fixed: "left",
render: (_, record) => { render: (_, record) => {
return <a onClick={() => { return <a onClick={() => {
console.log('recordrecord', record);
let imgList: any = [] let imgList: any = []
if (record?.ImageList && record?.ImageList.length > 0) { if (record?.ImageList && record?.ImageList.length > 0) {
record?.ImageList.forEach((item: any) => { record?.ImageList.forEach((item: any) => {
@ -347,20 +345,16 @@ const scenicSpotConfig: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'), OPERATE_DATE: moment().format('YYYY-MM-DD HH:mm:ss'),
} }
} }
handleConfirmLoading(true)
const data = await handeSynchroSCENICAREA(req) const data = await handeSynchroSCENICAREA(req)
console.log('datadatadatadata', data); console.log('datadatadatadata', data);
handleConfirmLoading(false)
if (data.Result_Code === 100) { if (data.Result_Code === 100) {
console.log('res.SCENICAREA_Imageres.SCENICAREA_Imageres.SCENICAREA_Image', res.SCENICAREA_Image);
if (res.SCENICAREA_Image && res.SCENICAREA_Image.length > 0) { if (res.SCENICAREA_Image && res.SCENICAREA_Image.length > 0) {
const formData = new FormData(); const formData = new FormData();
res.SCENICAREA_Image.forEach((file: any) => { res.SCENICAREA_Image.forEach((file: any) => {
if (!file.ImageUrl) { formData.append('files[]', file.originFileObj);
formData.append('files[]', file.originFileObj); formData.append('ImageName', typeof file !== 'string' ? file?.name : '');
formData.append('ImageName', typeof file !== 'string' ? file?.name : '');
}
}); });
formData.append('TableId', data.Result_Data.SCENICAREA_ID); formData.append('TableId', data.Result_Data.SCENICAREA_ID);
formData.append('TableType', '1305'); formData.append('TableType', '1305');
@ -371,8 +365,6 @@ const scenicSpotConfig: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
handleSetlogSave(`${currentRow?.SCENICAREA_ID ? `更新${currentRow?.SCENICAREA_NAME}景区` : `新增${data.Result_Data.SCENICAREA_NAME}`}信息`) handleSetlogSave(`${currentRow?.SCENICAREA_ID ? `更新${currentRow?.SCENICAREA_NAME}景区` : `新增${data.Result_Data.SCENICAREA_NAME}`}信息`)
handleConfirmLoading(false)
message.success("更新成功!") message.success("更新成功!")
setCurrentRow(undefined) setCurrentRow(undefined)
formRef?.current?.resetFields() formRef?.current?.resetFields()
@ -380,7 +372,6 @@ const scenicSpotConfig: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
actionRef.current?.reload() actionRef.current?.reload()
setFileList([]) setFileList([])
} else { } else {
handleConfirmLoading(false)
message.error(data.Result_Desc) message.error(data.Result_Desc)
} }
}; };
@ -691,17 +682,9 @@ const scenicSpotConfig: React.FC<{ currentUser: CurrentUser | undefined }> = (pr
listType="picture-card" listType="picture-card"
accept="image/*" accept="image/*"
fieldProps={{ fieldProps={{
beforeUpload: beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
fileList: fileList, // 绑定 fileList fileList: fileList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
console.log('info', info); console.log('info', info);
console.log('fileList', fileList); console.log('fileList', fileList);

View File

@ -892,14 +892,6 @@ const serverpartInfo: React.FC<{ currentUser: CurrentUser }> = (props) => {
beforeUpload, beforeUpload,
onPreview: handlePreview, onPreview: handlePreview,
fileList: fileList, // 绑定 fileList fileList: fileList, // 绑定 fileList
customRequest: ({ file, onSuccess }) => {
// 自定义上传,不实际发送请求
setTimeout(() => {
if (onSuccess) {
onSuccess({});
}
}, 0);
},
onChange: async (info: any) => { onChange: async (info: any) => {
console.log('info', info); console.log('info', info);
console.log('fileList', fileList); console.log('fileList', fileList);

View File

@ -1,4 +1,4 @@
// 由 scripts/writeVersion.js 自动生成 // 由 scripts/writeVersion.js 自动生成
export const VERSION = "4.5.35"; export const VERSION = "4.5.26";
export const GIT_HASH = "1ce314d"; export const GIT_HASH = "c145b6c";
export const BUILD_TIME = "2025-08-21T11:03:22.048Z"; export const BUILD_TIME = "2025-08-15T08:20:30.752Z";