From 877a9854c4a284c54b26a5b3340b890446bf8980 Mon Sep 17 00:00:00 2001 From: wanghx Date: Thu, 30 Nov 2023 17:47:29 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E8=90=A5=E6=94=B6=E5=88=86=E6=9E=90?= =?UTF-8?q?=EF=BC=8C=E6=97=B6=E9=97=B4=E9=80=89=E6=8B=A9=E5=99=A8=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Export/ExportBtnNew/index.jsx | 6 ++ src/config/utils.js | 16 +++++- .../ArrearageAly/Overview/index.jsx | 4 +- .../ArrearageAly/ParkArrear/index.jsx | 3 +- .../ArrearageAly/PlateArrear/index.jsx | 3 +- .../ParkingIncomeAly/ArrearageAly/loadable.jsx | 31 ++++++++-- .../ArrearageRecoverAly/loadable.jsx | 55 ++++++++++++++---- .../ParkingIncomeAly/CityArrearageAly/loadable.jsx | 56 ++++++++++++++---- .../ParkingIncomeAly/CityIncomeAly/loadable.jsx | 52 ++++++++++++++--- .../ParkingIncomeAly/CityIncomeStat/loadable.jsx | 66 +++++++++++++++++---- .../OrderArrearageAly/loadable.jsx | 65 ++++++++++++++++----- .../ParkingIncomeAly/PriceAly/loadable.jsx | 67 ++++++++++++++++++---- 12 files changed, 350 insertions(+), 74 deletions(-) diff --git a/src/components/Export/ExportBtnNew/index.jsx b/src/components/Export/ExportBtnNew/index.jsx index b73aca2..048b657 100644 --- a/src/components/Export/ExportBtnNew/index.jsx +++ b/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); diff --git a/src/config/utils.js b/src/config/utils.js index d637a35..0f2da65 100644 --- a/src/config/utils.js +++ b/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)$)/ diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx index 8634db6..1a3aceb 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/Overview/index.jsx +++ b/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, diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/ParkArrear/index.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/ParkArrear/index.jsx index cd616b5..9174210 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/ParkArrear/index.jsx +++ b/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}} }} diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx index 6bf2c66..6335f51 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx +++ b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx @@ -132,7 +132,8 @@ const PlateArrear = forwardRef((props, ref) => { children={} 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}} }} diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx index 166a0cf..2dbf53b 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/loadable.jsx +++ b/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} />
diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageRecoverAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageRecoverAly/loadable.jsx index 8026624..26c96b8 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageRecoverAly/loadable.jsx +++ b/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} />
@@ -398,7 +432,8 @@ function ArrearageRecoverAly(props) { children={} 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}} }} diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityArrearageAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityArrearageAly/loadable.jsx index e5c743c..79e419a 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityArrearageAly/loadable.jsx +++ b/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} />
@@ -398,7 +433,8 @@ function CityArrearageAly(props) { children={} 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}} }} diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeAly/loadable.jsx index 9d7a26e..ec3e2a9 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeAly/loadable.jsx +++ b/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} />
diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeStat/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeStat/loadable.jsx index 635a23f..86d904e 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/CityIncomeStat/loadable.jsx +++ b/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} />
@@ -387,6 +421,18 @@ function CityIncomeStat(props) {
+
+ 导出} + modalType="noImg" + totalRecords={resultData.totalRecords} + exportUrl="/api/ana/arrearage/city_revenue" + postdata={{ + formData: {...formData, ...{is_excel: 1}} + }} + imgno={false} + /> +
订单收入对比 diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/OrderArrearageAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/OrderArrearageAly/loadable.jsx index 1a2c00e..d044d34 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/OrderArrearageAly/loadable.jsx +++ b/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} />
@@ -470,7 +504,8 @@ function OrderArrearageAly(props) { children={} 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}} }} diff --git a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/PriceAly/loadable.jsx b/src/pages/DataAnalysisPrediction/ParkingIncomeAly/PriceAly/loadable.jsx index 99d0fb7..af5f028 100644 --- a/src/pages/DataAnalysisPrediction/ParkingIncomeAly/PriceAly/loadable.jsx +++ b/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} />
@@ -422,6 +457,18 @@ function PriceAly(props) {
+
+ 导出} + modalType="noImg" + totalRecords={resultData.totalRecords} + exportUrl="/api/ana/arrearage/price_analysis" + postdata={{ + formData: {...formData, ...{is_excel: 1}} + }} + imgno={false} + /> +
客单价分析