Browse Source

feat(): 营收分析,时间选择器加入限制

tags/PMS_Frontend_v1.0.6-develop
wanghx 1 year ago
parent
commit
877a9854c4
  1. 6
      src/components/Export/ExportBtnNew/index.jsx
  2. 16
      src/config/utils.js
  3. 4
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx
  4. 3
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/ParkArrear/index.jsx
  5. 3
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx
  6. 31
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx
  7. 55
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageRecoverAly/loadable.jsx
  8. 56
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityArrearageAly/loadable.jsx
  9. 52
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeAly/loadable.jsx
  10. 66
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeStat/loadable.jsx
  11. 65
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/OrderArrearageAly/loadable.jsx
  12. 67
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/PriceAly/loadable.jsx

6
src/components/Export/ExportBtnNew/index.jsx

@ -183,6 +183,9 @@ function ExportBtn(props) {
// setInProcess("2");
// setProcess(res.data?.task_url)
// onExportProcess(res.data?.task_url)
} else if (res.status == 0) {
message.error('导出失败,查询数据为空')
handleCancel()
} else {
setInProcess("4");
message.error(res.message);
@ -197,6 +200,9 @@ function ExportBtn(props) {
// setInProcess("2");
// setProcess(res.data?.task_url)
// onExportProcess(res.data?.task_url)
} else if (res.status == 0) {
message.error('导出失败,查询数据为空')
handleCancel()
} else {
setInProcess("4");
message.error(res.message);

16
src/config/utils.js

@ -36,15 +36,27 @@ const utils = {
console.log("当前localStorage已存容量为" + (size / 1024).toFixed(2) + "KB")
},
// parseFormatNum: (number) => {
// if (!number) return
// const a = number.toString().split("")
// let v = a.reverse()
// let vn = ""
// for (let i = 0; i < v.length; i++) {
// vn += v[i] + ((i + 1) % 3 == 0 && i + 1 != v.length ? "," : "")
// }
// return vn.split("").reverse().join("")
// },
parseFormatNum: (number) => {
if (!number) return
const a = number.toString().split("")
let arr = number.toString().split(".")
let hasXiaoShu = arr.length > 1 // 有小数
const a = arr[0].split("")
let v = a.reverse()
let vn = ""
for (let i = 0; i < v.length; i++) {
vn += v[i] + ((i + 1) % 3 == 0 && i + 1 != v.length ? "," : "")
}
return vn.split("").reverse().join("")
return vn.split("").reverse().join("") + (hasXiaoShu ? `.${arr[1]}` : '')
},
idCardTest: (value) => {
let re = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/

4
src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx

@ -32,7 +32,7 @@ const Overview = forwardRef((props, ref) => {
const initMoneyPieChart = (data, unit) => {
let total = 0
data.map((item) => {
total += item.value
total += Number(item.value || 0)
})
setMoneyPieChartOption({
...moneyPieChartOption,
@ -66,7 +66,7 @@ const Overview = forwardRef((props, ref) => {
const initItemPieChart = (data, unit) => {
let total = 0
data.map((item) => {
total += item.value
total += Number(item.value || 0)
})
setItemPieChartOption({
...itemPieChartOption,

3
src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/ParkArrear/index.jsx

@ -139,7 +139,8 @@ const ParkArrear = forwardRef((props, ref) => {
modalType="noImg"
totalRecords={resultData.totalRecords}
// exportUrl="/api/dataAnalysis/arrearsPark/export"
exportUrl="/api/dataAnalysis/arrearsPark"
// exportUrl="/api/dataAnalysis/arrearsPark"
exportUrl="/api/ana/arrearage/arrears_park"
postdata={{
formData: {...formData, ...pageInfo, ...{is_excel: 1}}
}}

3
src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx

@ -132,7 +132,8 @@ const PlateArrear = forwardRef((props, ref) => {
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
totalRecords={resultData.totalRecords}
exportUrl="/api/dataAnalysis/arrearsPlate"
// exportUrl="/api/dataAnalysis/arrearsPlate"
exportUrl="/api/ana/arrearage/arrears_plate"
postdata={{
formData: {...formData, ...pageInfo, ...{is_excel: 1}}
}}

31
src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx

@ -109,6 +109,28 @@ function ArrearageAly(props) {
}
}
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const handleReset = () => {
if (activeTab == 3) {
setFormDataNew(defaultNewData)
@ -178,10 +200,11 @@ function ArrearageAly(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">

55
src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageRecoverAly/loadable.jsx

@ -21,8 +21,8 @@ function ArrearageRecoverAly(props) {
park_type: 0,
date_type: "day",
park_bussiness_type: 0,
start_time: moment().startOf("day").format('YYYY-MM-DD HH:mm:ss'),
end_time: moment().format('YYYY-MM-DD HH:mm:ss')
start_time: moment().startOf("day").format('YYYY-MM-DD'),
end_time: moment().format('YYYY-MM-DD')
}
const [formData, setFormData] = useState({
...defaultFormData
@ -147,10 +147,32 @@ function ArrearageRecoverAly(props) {
})
}
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD HH:mm:ss";
let mat = "YYYY-MM-DD";
if (e == "year") {
str = "year";
mat = "YYYY";
@ -177,8 +199,8 @@ function ArrearageRecoverAly(props) {
start = moment().day(1).format("YYYY-MM-DD");
end = moment().day(7).format("YYYY-MM-DD");
} else {
start = moment().startOf("day").format("YYYY-MM-DD HH:mm:ss");
end = moment().endOf("day").format("YYYY-MM-DD HH:mm:ss");
start = moment().startOf("day").format("YYYY-MM-DD");
end = moment().endOf("day").format("YYYY-MM-DD");
}
setFormData({
...formData,
@ -195,6 +217,17 @@ function ArrearageRecoverAly(props) {
}
const handleSearch = () => {
let days = moment(formData.end_time).diff(moment(formData.start_time), 'days')
if (formData.date_type == 'day' && days > 31) {
message.error('日统计查询,请勿超过1个月,请重新选择时间范围')
return
} else if (formData.date_type == 'week' && days > 105) {
message.error('周统计查询,请勿超过15周,请重新选择时间范围')
return
} else if (formData.date_type == 'month' && days > 180) {
message.error('月统计查询,请勿超过6个月,请重新选择时间范围')
return
}
ajaxGetListData()
}
@ -224,10 +257,11 @@ function ArrearageRecoverAly(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">
@ -398,7 +432,8 @@ function ArrearageRecoverAly(props) {
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
totalRecords={resultData.totalRecords}
exportUrl="/api/dataAnalysis/arrearsOrder"
// exportUrl="/api/dataAnalysis/arrearsOrder"
exportUrl="/api/ana/arrearage/arrears_catch"
postdata={{
formData: {...formData, ...{is_excel: 1}}
}}

56
src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityArrearageAly/loadable.jsx

@ -21,8 +21,8 @@ function CityArrearageAly(props) {
park_type: 0,
date_type: "day",
park_bussiness_type: 0,
start_time: moment().startOf("day").format('YYYY-MM-DD HH:mm:ss'),
end_time: moment().format('YYYY-MM-DD HH:mm:ss')
start_time: moment().startOf("day").format('YYYY-MM-DD'),
end_time: moment().format('YYYY-MM-DD')
}
const [formData, setFormData] = useState({
...defaultFormData
@ -150,7 +150,7 @@ function CityArrearageAly(props) {
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD HH:mm:ss";
let mat = "YYYY-MM-DD";
if (e == "year") {
str = "year";
mat = "YYYY";
@ -177,8 +177,8 @@ function CityArrearageAly(props) {
start = moment().day(1).format("YYYY-MM-DD");
end = moment().day(7).format("YYYY-MM-DD");
} else {
start = moment().startOf("day").format("YYYY-MM-DD HH:mm:ss");
end = moment().endOf("day").format("YYYY-MM-DD HH:mm:ss");
start = moment().startOf("day").format("YYYY-MM-DD");
end = moment().endOf("day").format("YYYY-MM-DD");
}
setFormData({
...formData,
@ -188,6 +188,29 @@ function CityArrearageAly(props) {
});
}
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const handleReset = () => {
setFormData({
...defaultFormData
@ -195,6 +218,17 @@ function CityArrearageAly(props) {
}
const handleSearch = () => {
let days = moment(formData.end_time).diff(moment(formData.start_time), 'days')
if (formData.date_type == 'day' && days > 31) {
message.error('日统计查询,请勿超过1个月,请重新选择时间范围')
return
} else if (formData.date_type == 'week' && days > 105) {
message.error('周统计查询,请勿超过15周,请重新选择时间范围')
return
} else if (formData.date_type == 'month' && days > 180) {
message.error('月统计查询,请勿超过6个月,请重新选择时间范围')
return
}
ajaxGetListData()
}
@ -224,10 +258,11 @@ function CityArrearageAly(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">
@ -398,7 +433,8 @@ function CityArrearageAly(props) {
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
totalRecords={resultData.totalRecords}
exportUrl="/api/dataAnalysis/arrearsOrder"
// exportUrl="/api/dataAnalysis/arrearsOrder"
exportUrl="/api/ana/arrearage/arrears_city"
postdata={{
formData: {...formData, ...{is_excel: 1}}
}}

52
src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeAly/loadable.jsx

@ -21,8 +21,8 @@ function CityIncomeAly(props) {
park_type: 0,
date_type: "day",
park_bussiness_type: 0,
start_time: moment().startOf("day").format('YYYY-MM-DD HH:mm:ss'),
end_time: moment().format('YYYY-MM-DD HH:mm:ss')
start_time: moment().startOf("day").format('YYYY-MM-DD'),
end_time: moment().format('YYYY-MM-DD')
}
const [formData, setFormData] = useState({
...defaultFormData
@ -167,10 +167,32 @@ function CityIncomeAly(props) {
}
}
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD HH:mm:ss";
let mat = "YYYY-MM-DD";
if (e == "year") {
str = "year";
mat = "YYYY";
@ -197,8 +219,8 @@ function CityIncomeAly(props) {
start = moment().day(1).format("YYYY-MM-DD");
end = moment().day(7).format("YYYY-MM-DD");
} else {
start = moment().startOf("day").format("YYYY-MM-DD HH:mm:ss");
end = moment().endOf("day").format("YYYY-MM-DD HH:mm:ss");
start = moment().startOf("day").format("YYYY-MM-DD");
end = moment().endOf("day").format("YYYY-MM-DD");
}
setFormData({
...formData,
@ -215,6 +237,17 @@ function CityIncomeAly(props) {
}
const handleSearch = () => {
let days = moment(formData.end_time).diff(moment(formData.start_time), 'days')
if (formData.date_type == 'day' && days > 31) {
message.error('日统计查询,请勿超过1个月,请重新选择时间范围')
return
} else if (formData.date_type == 'week' && days > 105) {
message.error('周统计查询,请勿超过15周,请重新选择时间范围')
return
} else if (formData.date_type == 'month' && days > 180) {
message.error('月统计查询,请勿超过6个月,请重新选择时间范围')
return
}
ajaxGetListData()
}
@ -244,10 +277,11 @@ function CityIncomeAly(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">

66
src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeStat/loadable.jsx

@ -1,7 +1,7 @@
import React, { useState, useRef, useEffect } from "react"
import { Select, Input, Button, Table, message, Pagination, DatePicker, Cascader, Tooltip } from "antd"
import { QuestionCircleFilled } from '@ant-design/icons'
import { ResultFlowResult } from '@/components'
import { ResultFlowResult, ExportBtnNew } from '@/components'
import { dictionary } from "@/config/common"
import ReactEcharts from "echarts-for-react"
import { lineChartOption, stackBarChartOption } from "@/config/character.config"
@ -21,8 +21,8 @@ function CityIncomeStat(props) {
park_type: 0,
date_type: "day",
park_bussiness_type: 0,
start_time: moment().startOf("day").format('YYYY-MM-DD HH:mm:ss'),
end_time: moment().format('YYYY-MM-DD HH:mm:ss')
start_time: moment().startOf("day").format('YYYY-MM-DD'),
end_time: moment().format('YYYY-MM-DD')
}
const [formData, setFormData] = useState({
...defaultFormData
@ -144,7 +144,7 @@ function CityIncomeStat(props) {
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD HH:mm:ss";
let mat = "YYYY-MM-DD";
if (e == "year") {
str = "year";
mat = "YYYY";
@ -171,8 +171,8 @@ function CityIncomeStat(props) {
start = moment().day(1).format("YYYY-MM-DD");
end = moment().day(7).format("YYYY-MM-DD");
} else {
start = moment().startOf("day").format("YYYY-MM-DD HH:mm:ss");
end = moment().endOf("day").format("YYYY-MM-DD HH:mm:ss");
start = moment().startOf("day").format("YYYY-MM-DD");
end = moment().endOf("day").format("YYYY-MM-DD");
}
setFormData({
...formData,
@ -182,6 +182,28 @@ function CityIncomeStat(props) {
});
}
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const handleReset = () => {
setFormData({
...defaultFormData
@ -189,6 +211,17 @@ function CityIncomeStat(props) {
}
const handleSearch = () => {
let days = moment(formData.end_time).diff(moment(formData.start_time), 'days')
if (formData.date_type == 'day' && days > 31) {
message.error('日统计查询,请勿超过1个月,请重新选择时间范围')
return
} else if (formData.date_type == 'week' && days > 105) {
message.error('周统计查询,请勿超过15周,请重新选择时间范围')
return
} else if (formData.date_type == 'month' && days > 180) {
message.error('月统计查询,请勿超过6个月,请重新选择时间范围')
return
}
ajaxGetListData()
}
@ -218,10 +251,11 @@ function CityIncomeStat(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">
@ -387,6 +421,18 @@ function CityIncomeStat(props) {
</div>
</div>
<div className="parking-container-right">
<div className="export-container">
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
totalRecords={resultData.totalRecords}
exportUrl="/api/ana/arrearage/city_revenue"
postdata={{
formData: {...formData, ...{is_excel: 1}}
}}
imgno={false}
/>
</div>
<div className="parking-item">
<div className="parking-item-title">
订单收入对比

65
src/pages/DataAnalysisPrediction/ParkingIncomeAly/OrderArrearageAly/loadable.jsx

@ -26,8 +26,8 @@ function OrderArrearageAly(props) {
pay_merchant_id: 0,
park_text: "",
date_type: "day",
start_time: moment().startOf("day").format('YYYY-MM-DD HH:mm:ss'),
end_time: moment().format('YYYY-MM-DD HH:mm:ss')
start_time: moment().startOf("day").format('YYYY-MM-DD'),
end_time: moment().format('YYYY-MM-DD')
}
const [formData, setFormData] = useState({
...defaultFormData
@ -120,15 +120,15 @@ function OrderArrearageAly(props) {
setLoading(true)
ajax.getArrearOrderTrendData(Object.assign({...formData, ...newPageInfo}, isLine ? {} : {...pageInfo})).then(res => {
if (res.status == 20000) {
if (isLine) {
// if (isLine) {
initTrendLineChart([...res.data])
setStaticsTime(moment().format("YYYY-MM-DD HH:mm:ss"))
} else {
// } else {
setResultDate({
list: res.data,
totalRecords: res.totalRecords
})
}
// }
}
setLoading(false)
})
@ -165,7 +165,7 @@ function OrderArrearageAly(props) {
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD HH:mm:ss";
let mat = "YYYY-MM-DD";
if (e == "year") {
str = "year";
mat = "YYYY";
@ -192,8 +192,8 @@ function OrderArrearageAly(props) {
start = moment().day(1).format("YYYY-MM-DD");
end = moment().day(7).format("YYYY-MM-DD");
} else {
start = moment().startOf("day").format("YYYY-MM-DD HH:mm:ss");
end = moment().endOf("day").format("YYYY-MM-DD HH:mm:ss");
start = moment().startOf("day").format("YYYY-MM-DD");
end = moment().endOf("day").format("YYYY-MM-DD");
}
setFormData({
...formData,
@ -233,16 +233,49 @@ function OrderArrearageAly(props) {
timeout = setTimeout(fake, 1000);
};
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const handleSearchPark = (newValue) => {
fetchSearch(newValue)
};
const handleSearch = () => {
let days = moment(formData.end_time).diff(moment(formData.start_time), 'days')
if (formData.date_type == 'day' && days > 31) {
message.error('日统计查询,请勿超过1个月,请重新选择时间范围')
return
} else if (formData.date_type == 'week' && days > 105) {
message.error('周统计查询,请勿超过15周,请重新选择时间范围')
return
} else if (formData.date_type == 'month' && days > 180) {
message.error('月统计查询,请勿超过6个月,请重新选择时间范围')
return
}
setPageInfo({
...pageInfo,
pn: 1
})
ajaxGetListData(false, {pn: 1})
// ajaxGetListData(false, {pn: 1})
ajaxGetListData(true)
}
@ -254,7 +287,7 @@ function OrderArrearageAly(props) {
handleSearchPark()
ajaxGetAreaData()
ajaxGetOperatorData()
ajaxGetListData(true)
// ajaxGetListData(true)
ajaxGetListData()
}, [])
@ -278,10 +311,11 @@ function OrderArrearageAly(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">
@ -470,7 +504,8 @@ function OrderArrearageAly(props) {
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
totalRecords={resultData.totalRecords}
exportUrl="/api/dataAnalysis/arrearsCity"
// exportUrl="/api/dataAnalysis/arrearsCity"
exportUrl="/api/ana/arrearage/arrears_order"
postdata={{
formData: {...formData, ...{is_excel: 1}}
}}

67
src/pages/DataAnalysisPrediction/ParkingIncomeAly/PriceAly/loadable.jsx

@ -1,7 +1,7 @@
import React, { useState, useRef, useEffect } from "react"
import { Select, Input, Button, Table, message, Pagination, DatePicker, Cascader, Tooltip } from "antd"
import { QuestionCircleFilled } from '@ant-design/icons'
import { ResultFlowResult } from '@/components'
import { ResultFlowResult, ExportBtnNew } from '@/components'
import { dictionary } from "@/config/common"
import ReactEcharts from "echarts-for-react"
import { lineChartOption } from "@/config/character.config"
@ -24,8 +24,8 @@ function PriceAly(props) {
park_type: 0,
date_type: "day",
park_text: "",
start_time: moment().startOf("day").format('YYYY-MM-DD HH:mm:ss'),
end_time: moment().format('YYYY-MM-DD HH:mm:ss')
start_time: moment().startOf("day").format('YYYY-MM-DD'),
end_time: moment().format('YYYY-MM-DD')
}
const [formData, setFormData] = useState({
...defaultFormData
@ -141,7 +141,7 @@ function PriceAly(props) {
const TimeChange = () => {
let e = formData.date_type;
let str = "day";
let mat = "YYYY-MM-DD HH:mm:ss";
let mat = "YYYY-MM-DD";
if (e == "year") {
str = "year";
mat = "YYYY";
@ -155,6 +155,29 @@ function PriceAly(props) {
return { str, mat };
}
function cascaderChange(value, options) {
let last = options[options.length - 1];
let res = [];
if (last.children) {
addChild(last, res);
}
res.push(last.id);
setFormData({
...formData,
region: [...res]
})
}
const addChild = (child, res) => {
if (child.children) {
child.children.forEach((item) => {
addChild(item, res);
})
} else {
res.push(child.id);
}
}
const SetTimeNow = (e) => {
let start = "";
let end = "";
@ -168,8 +191,8 @@ function PriceAly(props) {
start = moment().day(1).format("YYYY-MM-DD");
end = moment().day(7).format("YYYY-MM-DD");
} else {
start = moment().startOf("day").format("YYYY-MM-DD HH:mm:ss");
end = moment().endOf("day").format("YYYY-MM-DD HH:mm:ss");
start = moment().startOf("day").format("YYYY-MM-DD");
end = moment().endOf("day").format("YYYY-MM-DD");
}
setFormData({
...formData,
@ -214,6 +237,17 @@ function PriceAly(props) {
};
const handleSearch = () => {
let days = moment(formData.end_time).diff(moment(formData.start_time), 'days')
if (formData.date_type == 'day' && days > 31) {
message.error('日统计查询,请勿超过1个月,请重新选择时间范围')
return
} else if (formData.date_type == 'week' && days > 105) {
message.error('周统计查询,请勿超过15周,请重新选择时间范围')
return
} else if (formData.date_type == 'month' && days > 180) {
message.error('月统计查询,请勿超过6个月,请重新选择时间范围')
return
}
ajaxGetListData()
}
@ -244,10 +278,11 @@ function PriceAly(props) {
value: "id",
children: "children",
}}
value={formData.region}
onChange={(v, option) => {
setFormData({ ...formData, region: v ? v : null });
}}
// value={formData.region}
// onChange={(v, option) => {
// setFormData({ ...formData, region: v ? v : null });
// }}
onChange={cascaderChange}
/>
</div>
<div className="yisa-search">
@ -422,6 +457,18 @@ function PriceAly(props) {
</div>
</div>
<div className="parking-container-right">
<div className="export-container">
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
totalRecords={resultData.totalRecords}
exportUrl="/api/ana/arrearage/price_analysis"
postdata={{
formData: {...formData, ...{is_excel: 1}}
}}
imgno={false}
/>
</div>
<div className="parking-item">
<div className="parking-item-title">
客单价分析

Loading…
Cancel
Save