Browse Source

fix(): 路内,统一导出功能

tags/PMS_V1.0.0_Alpha5
wanghx 1 year ago
parent
commit
11d187089b
  1. 39
      src/components/Export/ExportBtnNew/index.jsx
  2. 185
      src/components/TableModule/index.jsx
  3. 56
      src/pages/InRoadMgm/BusinessMgm/SpecialRecord/loadable.jsx
  4. 24
      src/pages/InRoadMgm/EquipmentMgm/EquipmentStatus/Device/index.jsx
  5. 47
      src/pages/InRoadMgm/EquipmentOpe/faultReport/loadable.jsx
  6. 45
      src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/loadable.jsx
  7. 43
      src/pages/InRoadMgm/PersonMgm/Attendance/WorkerAttendance/loadable.jsx
  8. 42
      src/pages/InRoadMgm/PersonMgm/Attendance/WorkerSchedule/loadable.jsx
  9. 39
      src/pages/InRoadMgm/PersonMgm/Performance/SalesStat/loadable.jsx
  10. 45
      src/pages/InRoadMgm/PersonMgm/Performance/WorkerStat/loadable.jsx
  11. 47
      src/pages/InRoadMgm/PersonMgm/ReportMsg/loadable.jsx
  12. 1
      src/pages/InRoadMgm/RoadMgm/RoadConf/index.scss
  13. 61
      src/pages/InRoadMgm/RoadMgm/RoadConf/loadable.jsx

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

@ -1,4 +1,4 @@
import React, { useState, useMemo, useEffect } from "react";
import React, { useState, useMemo, useEffect, forwardRef, useImperativeHandle } from "react";
import { Modal, Progress, Radio, Space, InputNumber, message, Button } from "antd";
import {
ExclamationCircleFilled,
@ -13,7 +13,7 @@ import "./index.scss";
//
function ExportBtn(props) {
const ExportBtn = forwardRef((props, ref) => {
const {
children,
@ -25,6 +25,8 @@ function ExportBtn(props) {
postdata = {}, // post : {formData:(pn,page_size),other:{}}
timeDelay = 300,
pageName,
onOk = ()=>{},
isTableModule=false,
imgno = true // true false
} = props;
@ -157,17 +159,28 @@ function ExportBtn(props) {
message.error("分段范围超出限制");
return false;
}
startExport(min, max, exportType == "hasImg" ? 1 : 0)
if (isTableModule) {
onOk(min, max)
} else {
startExport(min, max, exportType == "hasImg" ? 1 : 0)
}
}
//
else if (checkedType == 1) {
const { pn, length, page_size } = postdata.formData
console.log(postdata.formData)
startExport((pn - 1) * (length || page_size) + 1, pn * (length || page_size) , exportType == "hasImg" ? 1 : 0)
if (isTableModule) {
onOk((pn - 1) * (length || page_size) + 1, pn * (length || page_size))
} else {
startExport((pn - 1) * (length || page_size) + 1, pn * (length || page_size) , exportType == "hasImg" ? 1 : 0)
}
}
//
else {
startExport(1, 1000000, exportType == "hasImg" ? 1 : 0)
if (isTableModule) {
onOk(1, totalRecords)
} else {
startExport(1, totalRecords, exportType == "hasImg" ? 1 : 0)
}
}
setBtnLoading(true);
};
@ -248,10 +261,15 @@ function ExportBtn(props) {
//
const handleCancel = () => {
setBtnLoading(false)
setIsExportOpen(false);
handleReset();
};
const handleError = () => {
setInProcess("4")
}
//
const handleReset = () => {
setExportType(modalType);
@ -310,6 +328,13 @@ function ExportBtn(props) {
</Space>
</div>
);
useImperativeHandle(ref, () => ({
handleCancel,
handleError
}));
return (
<div className='root_gfkk'>
<div onClick={() => {
@ -458,6 +483,6 @@ function ExportBtn(props) {
</Modal>
</div>
);
}
})
export default ExportBtn;

185
src/components/TableModule/index.jsx

@ -27,7 +27,7 @@ import ajax from "@/services";
import exportAjax from "@/config/ajax";
import moment from "moment";
import { useSetState } from "ahooks";
import { ResultFlow, ExportBtn, QuickMenu } from "@/components";
import { ResultFlow, ExportBtnNew, QuickMenu } from "@/components";
import "./index.scss";
import { useSessionStorageState } from 'ahooks';
import qs from 'qs';
@ -71,6 +71,8 @@ const TableModule = forwardRef((props, ref) => {
value: {}
})
const exportRef = useRef(null)
//console.log(locale);
const [formData, setFormData] = useState()
const [inputSelectGroup, setInputSelectGroup] = useState([])
@ -843,81 +845,89 @@ const TableModule = forwardRef((props, ref) => {
});
}
const exportBtn = (filename) => {
let form = {
...searchForm.getFieldsValue(),
...pageData,
...otherData,
export: filename,
};
if (timeFlag) {
form = {
...form,
timeType: timeGroup.timeType,
start_time: moment(timeGroup.timeRanges.start_time).format(
"YYYY-MM-DD HH:mm:ss"
),
end_time: moment(timeGroup.timeRanges.end_time).format(
"YYYY-MM-DD HH:mm:ss"
),
const exportBtn = (filename, start, end) => {
return new Promise((resolved, rejected) => {
let form = {
...searchForm.getFieldsValue(),
...pageData,
...otherData,
export: filename,
start: start,
end: end
};
}
if (form.time) {
form = {
...form,
time: moment(form.time).format('YYYY-MM-DD')
if (timeFlag) {
form = {
...form,
timeType: timeGroup.timeType,
start_time: moment(timeGroup.timeRanges.start_time).format(
"YYYY-MM-DD HH:mm:ss"
),
end_time: moment(timeGroup.timeRanges.end_time).format(
"YYYY-MM-DD HH:mm:ss"
),
};
}
}
if (areaName !== null) form[areaName] = areaSelectedList;
if (form.start_time !== void 0 && form.end_time !== void 0) {
form.start_time = moment(form.start_time).format("YYYY-MM-DD HH:mm:ss");
form.end_time = moment(form.end_time).format("YYYY-MM-DD HH:mm:ss");
if (exportUrl == "/api/ope/record/recharge_export") { //
form.startTime = moment(form.start_time).format("YYYY-MM-DD HH:mm:ss");
form.endTime = moment(form.end_time).format("YYYY-MM-DD HH:mm:ss");
if (form.time) {
form = {
...form,
time: moment(form.time).format('YYYY-MM-DD')
}
}
if (exportUrl == "/api/fin/order_search/arrears_order_update_list_export") { //--
form.deal_time_end = moment(form.deal_time_end).format("YYYY-MM-DD HH:mm:ss");
form.deal_time_start = moment(form.deal_time_start).format("YYYY-MM-DD HH:mm:ss");
if (areaName !== null) form[areaName] = areaSelectedList;
if (form.start_time !== void 0 && form.end_time !== void 0) {
form.start_time = moment(form.start_time).format("YYYY-MM-DD HH:mm:ss");
form.end_time = moment(form.end_time).format("YYYY-MM-DD HH:mm:ss");
if (exportUrl == "/api/ope/record/recharge_export") { //
form.startTime = moment(form.start_time).format("YYYY-MM-DD HH:mm:ss");
form.endTime = moment(form.end_time).format("YYYY-MM-DD HH:mm:ss");
}
if (exportUrl == "/api/fin/order_search/arrears_order_update_list_export") { //--
form.deal_time_end = moment(form.deal_time_end).format("YYYY-MM-DD HH:mm:ss");
form.deal_time_start = moment(form.deal_time_start).format("YYYY-MM-DD HH:mm:ss");
}
}
}
if (exportUrl == "/api/fin/order_search/parking_card_order_list" || exportUrl == "/api/fin/order_search/staggered_parking_order_list") { //
form = {
...form,
export: 1,
export_file_name: filename,
if (exportUrl == "/api/fin/order_search/parking_card_order_list" || exportUrl == "/api/fin/order_search/staggered_parking_order_list") { //
form = {
...form,
export: 1,
export_file_name: filename,
}
}
}
if (tableData.length != 0) {
exportAjax({
url: exportUrl,
type: "post",
data: { ...form, ...export_other },
})
.then((res) => {
if (res.status === 20000) {
const link = document.createElement("a");
link.href = res.data.url || res.data.export_url;
link.target = "_blank"; //
link.click();
setTipModal({
...tipModal, visible: false,
filename:
pagename +
(new Date().getMonth() + 1).toString().padStart(2, "0") +
new Date().getDate(),
});
tipForm.setFieldsValue({ filename: pagename + (new Date().getMonth() + 1).toString().padStart(2, "0") + new Date().getDate(), })
} else {
message.error(res.message);
}
if (tableData.length != 0) {
exportAjax({
url: exportUrl,
type: "post",
data: { ...form, ...export_other },
})
.catch((err) => {
console.error(err);
});
} else {
message.error('该页面无数据,无法导出')
}
.then((res) => {
if (res.status === 20000) {
const link = document.createElement("a");
link.href = res.data.url || res.data.export_url;
link.target = "_blank"; //
link.click();
setTipModal({
...tipModal, visible: false,
filename:
pagename +
(new Date().getMonth() + 1).toString().padStart(2, "0") +
new Date().getDate(),
});
tipForm.setFieldsValue({ filename: pagename + (new Date().getMonth() + 1).toString().padStart(2, "0") + new Date().getDate(), })
resolved()
} else {
message.error(res.message);
rejected(res.message)
}
})
.catch((err) => {
console.error(err);
rejected(err)
});
} else {
message.error('该页面无数据,无法导出')
rejected('该页面无数据,无法导出')
}
})
};
function handleOk() {
@ -932,6 +942,14 @@ const TableModule = forwardRef((props, ref) => {
fetch,
}));
const handleExport = (start, end) => {
exportBtn(pagename + (new Date().getMonth() + 1).toString().padStart(2, "0") + new Date().getDate(), start, end).then(() => {
exportRef.current.handleCancel()
}).catch(msg => {
exportRef.current.handleError()
})
}
useEffect(() => {
fetch();
@ -1002,12 +1020,27 @@ const TableModule = forwardRef((props, ref) => {
{rightButtonGroup.map((item) => item)}
{diyButton ? diyButton : null}
{isExport && (
<Button
type="primary"
onClick={() => setTipModal({ ...tipModal, visible: true })}
>
导出
</Button>
// <Button
// type="primary"
// onClick={() => setTipModal({ ...tipModal, visible: true })}
// >
//
// </Button>
total ? (
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={total}
exportUrl={exportUrl}
imgno={false}
postdata={{
formData: pageData
}}
isTableModule={true}
onOk={handleExport}
/>
) : <></>
)}
</div>
</div>

56
src/pages/InRoadMgm/BusinessMgm/SpecialRecord/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ExportBtn, ResultFlowResult } from "@/components"
import { ExportBtnNew, ResultFlowResult } from "@/components"
import { Select, Input, Button, Table, message, Pagination, Popover, Modal, Upload, Tabs, Image } from 'antd'
import {
pageSizeOptions
@ -38,6 +38,7 @@ function CollectorWorkStat(props) {
const [lastFormData, setLastFormData] = useState(formData)
const [approveFormData, setApproveFormData] = useState(formData)
const [deployFormData, setDeployFormData] = useState(formData)
const exportRef = useRef(null)
const smallParameter = {
pn: 1,
size: Number(pageSizeOptions[0]),
@ -917,13 +918,20 @@ function CollectorWorkStat(props) {
})
}
//
const exportData = () => {
let data = {
...formData,
export_name: '白名单导出'
}
ajax.specialExport(data).then(res => {
window.open(res.data.url)
const exportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
export_name: '白名单导出',
start: start,
end: end
}
ajax.specialExport(data).then(res => {
window.open(res.data.url)
resolved()
}).catch(err => {
rejected(err)
})
})
}
// console.log(getImage);
@ -1050,6 +1058,15 @@ function CollectorWorkStat(props) {
})
}
}
const handleExport = (start, end) => {
exportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(() => {
exportRef.current.handleError()
})
}
useEffect(() => {
if (getSearchPlate) {
setGetCreatDataList({
@ -1300,11 +1317,24 @@ function CollectorWorkStat(props) {
<>
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
{formData.tab === '1' ?
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
导出
</Button> : ''
}
{formData.tab === '1' ? (
// <Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
//
// </Button>
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
)
: '' }
</div>
<Table

24
src/pages/InRoadMgm/EquipmentMgm/EquipmentStatus/Device/index.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult } from "@/components"
import { ResultFlowResult, ExportBtnNew } from "@/components"
import { Select, Input, Button, Table, message, Pagination, Popover, Modal, Col, Row, Form, Tabs } from 'antd'
import {
pageSizeOptions
@ -36,6 +36,7 @@ function Road(props) {
pn: 1,
length: Number(pageSizeOptions[0]), //
}
const exportRef = useRef(null)
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
@ -248,10 +249,13 @@ function Road(props) {
getData({...parameter})
}
const handleExport = () => {
ajax.deviceDimensionExport(formData).then(e => {
const handleExport = (start, end) => {
ajax.deviceDimensionExport({...form, start: start, end: end}).then(e => {
if (e.status == 20000) {
window.open(e.data.url)
exportRef.current.handleCancel()
} else {
exportRef.current.handleError()
}
})
}
@ -442,7 +446,19 @@ useEffect(() => {
<div className="result">
<div className="result-title">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<div className="export-btn" onClick={handleExport}>导出</div>
{/* <div className="export-btn" onClick={handleExport}>导出</div> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

47
src/pages/InRoadMgm/EquipmentOpe/faultReport/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, FormSliderPicker } from "@/components"
import { ResultFlowResult, FormSliderPicker, ExportBtnNew } from "@/components"
import { Select, Button, Input, Table, message, Pagination } from 'antd'
import {
pageSizeOptions
@ -30,6 +30,7 @@ function faultReport(props) {
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
const exportRef = useRef(null)
const [formData, setFormData] = useState(parameter)
const lastFormDataRef = useRef(formData)
const [lastFormData, setLastFormData] = useState(formData)
@ -61,14 +62,30 @@ function faultReport(props) {
})
}
//
const getExportData = () => {
let data = {
...formData
}
ajax.getFaultReportExport(data).then(res => {
window.open(res.data.export_url)
const getExportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
start: start,
end: end
}
ajax.getFaultReportExport(data).then(res => {
window.open(res.data.export_url)
resolved()
}).catch(err => {
rejected(err)
})
})
}
const handleExport = (start, end) => {
getExportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
//
const handleColumns = (tab) => {
let result = [...deployListColumns];
@ -301,9 +318,21 @@ function faultReport(props) {
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

45
src/pages/InRoadMgm/EquipmentOpe/patrolStatistics/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, FormSliderPicker } from "@/components"
import { ResultFlowResult, FormSliderPicker, ExportBtnNew } from "@/components"
import { Select, Button, Input, Table, message, Pagination, Modal, Radio } from 'antd'
import {
pageSizeOptions
@ -37,6 +37,7 @@ function patrolStatistics(props) {
const lastFormDataRef = useRef(formData)
const [lastFormData, setLastFormData] = useState(formData)
const [deleteVisible, setDeleteVisible] = useState(false)
const exportRef = useRef(null)
//
const handleRoadName = (v) => {
setFormData({ ...formData, road_name: v.target.value })
@ -61,12 +62,26 @@ function patrolStatistics(props) {
})
}
//
const getExportData = () => {
let data = {
...formData
}
ajax.getBerthWarningListExport(data).then(res => {
window.open(res.data.export_url)
const getExportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
start: start,
end: end
}
ajax.getBerthWarningListExport(data).then(res => {
window.open(res.data.export_url)
resolved()
}).catch(err => {
rejected(err)
})
})
}
const handleExport = (start, end) => {
getExportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
//
@ -323,9 +338,21 @@ function patrolStatistics(props) {
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

43
src/pages/InRoadMgm/PersonMgm/Attendance/WorkerAttendance/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { Apimap, Marker, ExportBtn, ResultFlowResult } from "@/components"
import { Apimap, Marker, ExportBtn, ResultFlowResult, ExportBtnNew } from "@/components"
import { Select, Input, Button, Table, message, Pagination, DatePicker, Space, Modal, Switch } from 'antd'
import {
operator,
@ -41,6 +41,7 @@ function WorkerAttendance (props) {
})
const [lastFormData, setLastFormData] = useState(formData)
const [attendanceVisible, setAttendanceVisible] = useState(false)
const exportRef = useRef(null)
//
const handleLoginName = (v) => {
setFormData({ ...formData, pdaManagerName: v.target.value })
@ -323,12 +324,19 @@ function WorkerAttendance (props) {
getData({...data, pn: 1})
}
//
const exportData = () => {
let data = {
...formData
}
ajax.attendanceExport(data).then(res => {
window.open(res.data.url)
const exportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
start: start,
end: end
}
ajax.attendanceExport(data).then(res => {
window.open(res.data.url)
resolved()
}).catch(err => {
rejected()
})
})
}
const setType = (v) => {
@ -360,6 +368,14 @@ function WorkerAttendance (props) {
const tooEarly = current.isAfter(moment(), 'day'); //
return tooEarly || tooLate;
};
const handleExport = (start, end) => {
exportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(() => {
exportRef.current.handleError()
})
}
useEffect(() => {
getData()
operationName()
@ -465,9 +481,18 @@ function WorkerAttendance (props) {
<div className="result">
<div className="totalExport">
<div className="font">共检索到<em>{resultData.total_records}</em>条结果</div>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="yisa-btn colorBtn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records || 0}
imgno={false}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

42
src/pages/InRoadMgm/PersonMgm/Attendance/WorkerSchedule/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ExportBtn, ResultFlowResult } from "@/components"
import { ExportBtn, ResultFlowResult, ExportBtnNew } from "@/components"
import { Select, Input, Button, Table, message, Pagination, Popover, Modal, Calendar } from 'antd'
import {
pageSizeOptions
@ -12,6 +12,7 @@ import moment from 'moment';
function WorkerSchedule(props) {
const [ajaxLoading, setAjaxLoading] = useState(false)
const exportRef = useRef(null)
const [resultData, setResultData] = useState({
data: [],
total_records: 0,
@ -283,12 +284,19 @@ function WorkerSchedule(props) {
return { editData, status };
};
//
const exportData = () => {
let data = {
...formData
}
ajax.scheduleExport(data).then(res => {
window.open(res.data.url)
const exportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
start: start,
end: end
}
ajax.scheduleExport(data).then(res => {
window.open(res.data.url)
resolved()
}).catch(err => {
rejected()
})
})
}
const changeEditTime = (value) => {
@ -380,6 +388,13 @@ function WorkerSchedule(props) {
const changeDate = (v) => {
setGetDateTime(moment(v).format('YYYY-MM-DD'));
}
const handleExport = (start, end) => {
exportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(() => {
exportRef.current.handleError()
})
}
useEffect(() => {
getData()
@ -447,9 +462,18 @@ function WorkerSchedule(props) {
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="yisa-btn colorBtn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records || 0}
imgno={false}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>

39
src/pages/InRoadMgm/PersonMgm/Performance/SalesStat/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { FormSliderPicker, ExportBtn, ResultFlowResult } from "@/components"
import { FormSliderPicker, ExportBtnNew, ResultFlowResult } from "@/components"
import { Input, Button, Table, message, Pagination, Modal } from 'antd'
import {
pageSizeOptions
@ -35,6 +35,7 @@ function SalesStat(props) {
start: '',
end: ''
})
const exportRef = useRef(null)
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
@ -284,10 +285,12 @@ function SalesStat(props) {
const salesData = () => {
setExportVisible(true)
}
const exportNow = () => {
const exportNow = (start, end) => {
let data = {
...formData,
export_type: ""
export_type: "",
start: start,
end: end
}
ajax.salesExport(data).then(res => {
window.open(res.data.url)
@ -305,6 +308,20 @@ function SalesStat(props) {
setExportVisible(false)
})
}
const handleExport = (start, end, type) => {
if (type == 1) { //
exportNow()
exportRef.current.handleCancel()
} else if (type == 2) { //
exportAll()
exportRef.current.handleCancel()
} else {
exportNow(start, end)
exportRef.current.handleCancel()
}
}
//
const revenueModal = () => {
setRevenueVisible(false)
@ -362,9 +379,21 @@ const [getTextValue,setGetTextValue]=useState({})
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { salesData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { salesData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="yisa-btn colorBtn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records || 0}
imgno={false}
isTableModule={true}
postdata={{
formData: formData
}}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

45
src/pages/InRoadMgm/PersonMgm/Performance/WorkerStat/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { FormSliderPicker, ExportBtn, ResultFlowResult } from "@/components"
import { FormSliderPicker, ExportBtn, ResultFlowResult, ExportBtnNew } from "@/components"
import { Select, Input, Button, Table, message, Pagination } from 'antd'
import {
pageSizeOptions
@ -32,6 +32,7 @@ function WorkerStat(props) {
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
const exportRef = useRef(null)
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
@ -140,12 +141,26 @@ function WorkerStat(props) {
})
}
//
const exportData = () => {
let data = {
...formData
}
ajax.statExport(data).then(res => {
window.open(res.data.url)
const exportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
start: start,
end: end
}
ajax.statExport(data).then(res => {
window.open(res.data.url)
resolved()
}).catch(err => {
rejected()
})
})
}
const handleExport = (start, end) => {
exportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(() => {
exportRef.current.handleError()
})
}
useEffect(() => {
@ -250,9 +265,21 @@ function WorkerStat(props) {
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { exportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="yisa-btn colorBtn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records || 0}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table dataSource={resultData.data} pagination={false} loading={ajaxLoading} className="yisa-table-scroll" scroll={{ y: "calc(100% - 109px)" }} >

47
src/pages/InRoadMgm/PersonMgm/ReportMsg/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, FormSliderPicker } from "@/components"
import { ResultFlowResult, FormSliderPicker, ExportBtnNew } from "@/components"
import { Select, Button, Input, Table, message, Pagination,Image } from 'antd'
import {
pageSizeOptions
@ -29,6 +29,7 @@ function ReportMsg(props) {
pn: 1,
page_size: Number(pageSizeOptions[0]), //
}
const exportRef = useRef(null)
const [formData, setFormData] = useState(parameter)
const lastFormDataRef = useRef(formData)
const [lastFormData, setLastFormData] = useState(formData)
@ -56,14 +57,30 @@ function ReportMsg(props) {
})
}
//
const getExportData = () => {
let data = {
...formData
}
ajax.getReportExport(data).then(res => {
window.open(res.data.url)
const getExportData = (start, end) => {
return new Promise((resolved, rejected) => {
let data = {
...formData,
start: start,
end: end
}
ajax.getReportExport(data).then(res => {
window.open(res.data.url)
resolved()
}).catch(err => {
rejected(err)
})
})
}
const handleExport = (start, end) => {
getExportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
//
const handleColumns = (tab) => {
let result = [...deployListColumns];
@ -296,9 +313,21 @@ function ReportMsg(props) {
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
{/* <Button type="primary" className="yisa-btn colorBtn" onClick={() => { getExportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records || 0}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

1
src/pages/InRoadMgm/RoadMgm/RoadConf/index.scss

@ -71,6 +71,7 @@ $color-primary: var(--color-primary);
flex-direction: row;
}
.operator-part {
display: flex;
button {
margin: 0 5px;
}

61
src/pages/InRoadMgm/RoadMgm/RoadConf/loadable.jsx

@ -19,7 +19,7 @@ import { dictionary, utils } from "@/config/common";
import moment from "moment";
import { useSetState, useSessionStorageState, useUpdateEffect } from "ahooks";
import ajax from "@/services";
import { ResultFlow } from "@/components";
import { ResultFlow, ExportBtnNew } from "@/components";
import "./index.scss";
import ConfigRoad from "../ConfigRoad"
import AuditModifyModal from "./AuditModifyModal";
@ -29,6 +29,7 @@ import AuditModifyModal from "./AuditModifyModal";
function RoadConf() {
const navigate = useNavigate();
const [searchForm] = Form.useForm();
const exportRef = useRef(null)
const columns = [
{
@ -436,22 +437,26 @@ function RoadConf() {
}
}
//
function exportData() {
let result = searchForm.getFieldsValue();
result.area = area;
ajax
.exportRoadList(result)
.then((res) => {
if (res.status === 20000) {
const link = document.createElement("a");
link.href = res.data.export_url;
link.target = "_blank"; //
link.click();
}
})
.catch((err) => {
console.warn(err);
});
function exportData(start, end) {
return new Promise((resolved, rejected) => {
let result = searchForm.getFieldsValue();
result.area = area;
ajax
.exportRoadList({...result, start: start, end: end})
.then((res) => {
if (res.status === 20000) {
const link = document.createElement("a");
link.href = res.data.export_url;
link.target = "_blank"; //
link.click();
resolved()
}
})
.catch((err) => {
console.warn(err);
rejected()
});
})
}
const reastBtn = () => {
searchForm.resetFields();
@ -467,6 +472,14 @@ function RoadConf() {
}
})
}
const handleExport = (start, end) => {
exportData(start, end).then(() => {
exportRef.current.handleCancel()
}).catch(() => {
exportRef.current.handleError()
})
}
useEffect(() => {
search();
}, [pageData]);
@ -499,9 +512,19 @@ function RoadConf() {
<Button type="primary" onClick={addRoad}>
添加
</Button>
<Button type="primary" onClick={exportData}>
{/* <Button type="primary" onClick={exportData}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records || 0}
exportUrl={"/api/bpm/road/export"}
imgno={false}
isTableModule={true}
onOk={handleExport}
/>
<Button
style={{ width: 116 }}
type="primary"

Loading…
Cancel
Save