Browse Source

Merge branch 'develop' of http://120.27.195.166:3000/chenglb/PMS_Frontend_v1.0.0.git into develop

# Conflicts:
#	src/router/router.config.js
tags/PMS_V1.0.0_Alpha5
chenglb 1 year ago
parent
commit
f4ff98d316
  1. 4
      src/pages/FinancialMgm/FinancialReport/BookReport/loadable.jsx
  2. 26
      src/pages/FinancialMgm/FinancialReport/OperationReport/loadable.jsx
  3. 27
      src/pages/FinancialMgm/FinancialReport/ParkingIncomeReport/loadable.jsx
  4. 25
      src/pages/FinancialMgm/FinancialReport/PaySummaryReport/loadable.jsx
  5. 1
      src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx
  6. 25
      src/pages/FinancialMgm/PayRecordTotal/loadable.jsx
  7. 35
      src/pages/FinancialMgm/SettleBill/PayRepeat/loadable.jsx
  8. 183
      src/pages/NewEnergy/ChargingMgm/BillingRule/dataSource.js
  9. 6
      src/pages/NewEnergy/ChargingMgm/BillingRule/index.jsx
  10. 238
      src/pages/NewEnergy/ChargingMgm/BillingRule/index.scss
  11. 1126
      src/pages/NewEnergy/ChargingMgm/BillingRule/loadable.jsx
  12. 183
      src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/dataSource.js
  13. 6
      src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.jsx
  14. 238
      src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.scss
  15. 1126
      src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/loadable.jsx
  16. 8
      src/pages/NewEnergy/ChargingMgm/index.jsx
  17. 5
      src/pages/NewEnergy/index.jsx
  18. 28
      src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/loadable.jsx
  19. 5
      src/pages/OperationCenter/CustomerServieMgm/ComplainManage/index.scss
  20. 26
      src/pages/OperationCenter/CustomerServieMgm/ComplainManage/loadable.jsx
  21. 30
      src/pages/OperationCenter/OperationSales/CouponMgm/WriteOffDetail/loadable.jsx
  22. 33
      src/pages/OperationCenter/OperationSales/CouponMgm/WriteOffStat/loadable.jsx
  23. 25
      src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardOrder/loadable.jsx
  24. 28
      src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredOrder/loadable.jsx
  25. 28
      src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredStat/loadable.jsx
  26. 1
      src/pages/OutRoadMgm/OutBusinessRecord/OutParkingArrearsOrders/loadable.jsx
  27. 1
      src/pages/OutRoadMgm/OutBusinessRecord/OutPayOrders/loadable.jsx
  28. 1
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss
  29. 24
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx
  30. 4
      src/pages/index.jsx
  31. 14
      src/router/router.config.js
  32. 14
      src/services/NewEnergy/chargingMgm.js
  33. 5
      src/services/NewEnergy/index.js

4
src/pages/FinancialMgm/FinancialReport/BookReport/loadable.jsx

@ -740,14 +740,14 @@ function BookReport() {
<p>
共查询到<span> {Data?.total || 0}</span>条数据
</p>
<span
{/* <span
className={"sear_ser"}
onClick={() => {
// Data?.total && setFormDatas({ ...FormData });
}}
>
导出
</span>
</span> */}
</div>
<ResultFlow
hasLoad={true}

26
src/pages/FinancialMgm/FinancialReport/OperationReport/loadable.jsx

@ -12,6 +12,7 @@ import {
Checkbox,
Form,
DatePicker,
Button
} from "antd";
import { dictionary, utils } from "@/config/common";
import moment from "moment";
@ -24,7 +25,7 @@ import {
} from "@ant-design/icons";
import ajax from "@/services";
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
import { ResultFlow } from "@/components";
import { ResultFlow, ExportBtnNew } from "@/components";
import "./index.scss";
import Finddje from "@/assets/images/fin_ddjehz.png";
import Finxgh from "@/assets/images/fin_xghdd.png";
@ -37,6 +38,7 @@ const { RangePicker } = DatePicker;
const { TextArea } = Input;
function OperationReport() {
const [form] = Form.useForm();
const exportRef = useRef(null)
//-
const formdata = {
operator_id: "0", //
@ -593,9 +595,11 @@ function OperationReport() {
document.body.removeChild(link);
};
//
const ReportPaySummaryReport = () => {
const ReportPaySummaryReport = (start, end) => {
ajax.ElectInvoice.getOperationReport({
...FormDatas,
start: start,
end: end,
area: FormDatas?.area?.length
? FormDatas?.area[FormDatas.area.length - 1]
: "",
@ -604,8 +608,10 @@ function OperationReport() {
(res) => {
if (parseInt(res?.status) === 20000) {
Daownload(res?.data?.url);
exportRef.current.handleCancel()
} else {
message.error(res?.message);
exportRef.current.handleError()
}
},
(err) => {
@ -1014,7 +1020,7 @@ function OperationReport() {
<p>
共查询到<span> {Data?.total || 0}</span>条数据
</p>
<span
{/* <span
className={"sear_ser"}
onClick={() => {
Data?.total && ReportPaySummaryReport();
@ -1022,7 +1028,19 @@ function OperationReport() {
}}
>
导出
</span>
</span> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={Data?.total}
imgno={false}
postdata={{
formData: FormData
}}
isTableModule={true}
onOk={ReportPaySummaryReport}
/>
</div>
<ResultFlow
hasLoad={true}

27
src/pages/FinancialMgm/FinancialReport/ParkingIncomeReport/loadable.jsx

@ -13,6 +13,7 @@ import {
Form,
Cascader,
DatePicker,
Button
} from "antd";
import { dictionary, utils } from "@/config/common";
import moment from "moment";
@ -25,7 +26,7 @@ import {
} from "@ant-design/icons";
import ajax from "@/services";
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
import { ResultFlow } from "@/components";
import { ResultFlow, ExportBtnNew } from "@/components";
import "./index.scss";
import FinSr from "@/assets/images/fin_sr.png";
import Finyh from "@/assets/images/fin_yh.png";
@ -53,6 +54,8 @@ function ParkingIncomeReport() {
page_size: dictionary?.pageSizeOptions1[0],
};
const exportRef = useRef(null)
//
const tabt = [
{
@ -535,9 +538,11 @@ function ParkingIncomeReport() {
document.body.removeChild(link);
};
//
const ReportPaySummaryReport = () => {
const ReportPaySummaryReport = (start, end) => {
ajax.ElectInvoice.getParkingIncomeReport({
...FormDatas,
start: start,
end: end,
area: FormDatas?.area?.length
? FormDatas?.area[FormDatas.area.length - 1]
: "",
@ -546,8 +551,10 @@ function ParkingIncomeReport() {
(res) => {
if (parseInt(res?.status) === 20000) {
Daownload(res?.data?.url);
exportRef.current.handleCancel()
} else {
message.error(res?.message);
exportRef.current.handleError()
}
},
(err) => {
@ -930,7 +937,7 @@ function ParkingIncomeReport() {
<p>
共查询到<span> {Data?.total || 0}</span>条数据
</p>
<span
{/* <span
className={"sear_ser"}
onClick={() => {
Data?.total && ReportPaySummaryReport();
@ -938,7 +945,19 @@ function ParkingIncomeReport() {
}}
>
导出
</span>
</span> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={Data?.total}
imgno={false}
postdata={{
formData: FormData
}}
isTableModule={true}
onOk={ReportPaySummaryReport}
/>
</div>
<ResultFlow
hasLoad={true}

25
src/pages/FinancialMgm/FinancialReport/PaySummaryReport/loadable.jsx

@ -22,7 +22,7 @@ import {
} from "@ant-design/icons";
import ajax from "@/services";
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
import { ResultFlow } from "@/components";
import { ResultFlow, ExportBtnNew } from "@/components";
import "./index.scss";
import FinSr from "@/assets/images/fin_sr.png";
import Fintchz from "@/assets/images/fin_tchz.png";
@ -171,6 +171,7 @@ function PaySummaryReport() {
},
];
let form_data = sessionStorage.getItem("FormData_PaySummaryReport");
const exportRef = useRef(null)
//
const [FormData, setFormData] = useState(
form_data ? JSON.parse(form_data) : formdata
@ -373,17 +374,21 @@ function PaySummaryReport() {
);
};
//
const ReportPaySummaryReport = () => {
const ReportPaySummaryReport = (start, end) => {
ajax.ElectInvoice.ReportPaySummaryReport({
...FormDatas,
start: start,
end: end,
...DateFormt(FormDatas.type),
type: TimeChange().str,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
Daownload(res?.data?.url);
exportRef.current.handleCancel()
} else {
message.error(res?.message);
exportRef.current.handleError()
}
},
(err) => {
@ -687,7 +692,7 @@ function PaySummaryReport() {
<p>
共查询到<span> {Data?.total || 0}</span>条数据
</p>
<span
{/* <span
className={"sear_ser"}
onClick={() => {
Data?.total && ReportPaySummaryReport();
@ -695,7 +700,19 @@ function PaySummaryReport() {
}}
>
导出
</span>
</span> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={Data?.total}
imgno={false}
postdata={{
formData: FormData
}}
isTableModule={true}
onOk={ReportPaySummaryReport}
/>
</div>
<ResultFlow
hasLoad={true}

1
src/pages/FinancialMgm/OrderInquiry/ParkingOrderInquiry/index.jsx

@ -780,6 +780,7 @@ function ParkingOrderInquiry(props) {
rowKey={'order_id'}
initFormData={initFormData}
exportUrl={exportUrl}
isExport={true}
limitCon={limit ? limitCon : null}
search={searchOther}
/>

25
src/pages/FinancialMgm/PayRecordTotal/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useEffect } from "react";
import { ResultFlowResult } from "@/components";
import React, { useState, useEffect, useRef } from "react";
import { ResultFlowResult, ExportBtnNew } from "@/components";
import { Select, Input, Button, Table, message, Pagination, DatePicker, Tooltip } from "antd";
import { useSessionStorageState } from "ahooks";
import { dictionary } from "@/config/common";
@ -62,6 +62,7 @@ function PayRecordTotal(props) {
value: {
}
})
const exportRef = useRef(null)
useEffect(() => {
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
@ -280,7 +281,7 @@ function PayRecordTotal(props) {
};
//
const handleExport = () => {
const handleExport = (start, end) => {
if (resultData.list?.length > 0) {
let { pn, page_size, ...params } = defaultParams;
ajax.getPayRecordTotalListExport(params).then(
@ -289,8 +290,10 @@ function PayRecordTotal(props) {
//window.location.href = res.data?.url
window.open(res.data?.url)
message.success(res?.message);
exportRef.current.handleCancel()
} else {
message.error(res?.message);
exportRef.current.handleError()
}
},
(err) => {
@ -439,9 +442,21 @@ function PayRecordTotal(props) {
<span className="letter">条结果</span>
</span>
<div>
<Button type="primary" onClick={handleExport}>
{/* <Button type="primary" onClick={handleExport}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
</div>
<ResultFlowResult

35
src/pages/FinancialMgm/SettleBill/PayRepeat/loadable.jsx

@ -14,7 +14,7 @@ import { dictionary, utils } from "@/config/common";
import moment from "moment";
import ajax from "@/services";
// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
import { ResultFlow } from "@/components";
import { ResultFlow, ExportBtnNew } from "@/components";
import "./index.scss";
// import errorImg from "@/assets/images/layout/error.png"
// import { useLocation } from "react-router-dom";
@ -32,6 +32,7 @@ function PayRepeat() {
pn: 1,
page_size: dictionary?.pageSizeOptions1[0],
};
const exportRef = useRef(null)
//-退
const formdatb = {
type: 2,
@ -413,15 +414,19 @@ function PayRepeat() {
document.body.removeChild(link);
};
//
const ReportPaySummaryReport = () => {
const ReportPaySummaryReport = (start, end) => {
ajax.ElectInvoice.ReportPayRepeat({
...FormDatas,
start: start,
end: end
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
Daownload(res?.data?.url);
exportRef.current.handleCancel()
} else {
message.error(res?.message);
exportRef.current.handleError()
}
},
(err) => {
@ -872,14 +877,26 @@ function PayRepeat() {
共查询到<span> {Data?.total || 0}</span>条数据
</p>
{FormData.type == 1 ? (
<span
className="sear_ser"
onClick={() => {
Data?.total && ReportPaySummaryReport();
// <span
// className="sear_ser"
// onClick={() => {
// Data?.total && ReportPaySummaryReport();
// }}
// >
//
// </span>
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={Data?.total}
imgno={false}
postdata={{
formData: FormData
}}
>
导出
</span>
isTableModule={true}
onOk={ReportPaySummaryReport}
/>
) : (
""
)}

183
src/pages/NewEnergy/ChargingMgm/BillingRule/dataSource.js

@ -0,0 +1,183 @@
//用来存储表头的js文件
import React from "react";
import { Button } from "antd";
//支付记录的表头
export const payRecordColumns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "订单ID",
dataIndex: "order_id",
key: "order_id",
align: "center",
},
{
title: "入场时间",
dataIndex: "admission_time",
key: "admission_time",
align: "center",
},
{
title: "计费时间",
dataIndex: "charging_time",
key: "charging_time",
align: "center",
},
{
title: "支付时间",
dataIndex: "pay_time",
key: "pay_time",
align: "center",
},
{
title: "应收金额",
dataIndex: "receivable_amount",
key: "receivable_amount",
align: "center",
},
{
title: "优惠金额",
dataIndex: "discount_amount",
key: "discount_amount",
align: "center",
},
{
title: "实付金额",
dataIndex: "paid_in_money",
key: "paid_in_money",
align: "center",
},
{
title: "支付类型",
dataIndex: "pay_type_name",
key: "pay_type_name",
align: "center",
},
{
title: "支付渠道",
dataIndex: "payment_channels",
key: "payment_channels",
align: "center",
},
{
title: "支付设备",
dataIndex: "payment_equipment",
key: "payment_equipment",
align: "center",
},
{
title: "支付人",
dataIndex: "pay_person",
key: "pay_person",
align: "center",
},
{
title: "付款路段",
dataIndex: "pay_road",
key: "pay_road",
align: "center",
},
{
title: "第三方流水ID",
dataIndex: "third_party_flow_id",
key: "third_party_flow_id",
align: "center",
},
];
//退款订单的表头
export const refundRecordColumns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "退款方式",
dataIndex: "refund_type",
key: "refund_type",
align: "center",
},
{
title: "支付渠道",
dataIndex: "pay_road",
key: "pay_road",
align: "center",
},
{
title: "支付设备",
dataIndex: "paymentDevice",
key: "paymentDevice",
align: "center",
},
{
title: "退款原因",
dataIndex: "reason",
key: "reason",
align: "center",
},
{
title: "退款金额",
dataIndex: "refund_amount",
key: "refund_amount",
align: "center",
},
{
title: "申请人",
dataIndex: "application_person",
key: "application_person",
align: "center",
},
{
title: "申请时间",
dataIndex: "application_time",
key: "application_time",
align: "center",
},
{
title: "退款时间",
dataIndex: "refund_time",
key: "refund_time",
align: "center",
},
];
//操作记录
export const operatorRecordColumns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "操作类型",
dataIndex: "type",
key: "type",
align: "center",
},
{
title: "操作来源",
dataIndex: "source",
key: "source",
align: "center",
},
{
title: "操作人/设备",
dataIndex: "object",
key: "object",
align: "center",
},
{
title: "操作时间",
dataIndex: "time",
key: "time",
align: "center",
},
];

6
src/pages/NewEnergy/ChargingMgm/BillingRule/index.jsx

@ -0,0 +1,6 @@
import React from "react"
import loadable from "@loadable/component"
import { LoadingImg } from "@/components"
const BillingRule = loadable(() => import("./loadable"))
export default (pros) => <BillingRule {...pros} fallback={<LoadingImg />} />

238
src/pages/NewEnergy/ChargingMgm/BillingRule/index.scss

@ -0,0 +1,238 @@
@import "@/assets/css/mixin.scss";
$color-container-bg: var(--color-container-bg);
$color-user-list-bg: var(--color-user-list-bg);
$color-text: var(--color-text);
$color-primary: var(--color-primary);
.ant-tabs {
margin-bottom: 16px;
.ant-tabs-nav {
margin-bottom: 0 !important;
&::before {
border-bottom: 1px solid var(--color-card-line) !important;
}
}
.ant-tabs-nav-wrap {
width: 100%;
box-sizing: content-box;
.ant-tabs-nav-list {
width: 340px;
.ant-tabs-ink-bar {
height: 3px;
background-color: #00ccff;
}
.ant-tabs-tab {
flex: 1;
width: 100%;
display: flex;
justify-content: center;
padding-bottom: 10px;
text-align: center;
cursor: pointer;
font-size: 14px !important;
font-family: MicrosoftYaHei;
text-align: center;
letter-spacing: 0.7px;
}
.ant-tabs-tab-active {
div {
color: #00ccff;
}
}
}
}
}
.ant-input::-webkit-input-placeholder {
color: var(--color-placeholder);
}
.ant-input::-moz-placeholder {
color: var(--color-placeholder);
}
.right-list .ant-btn-primary {
width: 68px;
height: 30px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
}
.ant-input:-ms-input-placeholder {
color: var(--color-placeholder);
}
.right-list .cc-result-flow .table-wrap .yisa-table .ant-table-thead th {
background-color: #616b83 !important;
}
.right-list .cc-result-flow .table-wrap .yisa-table .ant-table-tbody td {
background-color: #3e4557 !important;
}
.right-list .cc-result-flow .table-wrap .yisa-table .ant-table-tbody tr:nth-child(even) td {
background-color: #3e4557 !important;
}
.ant-input::placeholder {
color: var(--color-placeholder);
}
.ant-select-selection-placeholder {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
background: var(--color-input-disabled-bg);
color: var(--color-placeholder);
}
.ant-select-disabled .ant-select-arrow {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {
background-color: var(--color-input-disabled-bg);
color: var(--color-input-disabled-color);
cursor: not-allowed;
}
.ant-select-multiple {
.ant-select-selector {
.ant-select-selection-item {
background-color: var(--color-bg-body);
border-color: var(--color-border);
.ant-select-selection-item-remove {
color: var(--color-text);
}
}
}
}
.ant-select-arrow {
color: var(--color-text);
}
.ant-select-clear {
border-radius: 50%;
}
.ant-select-dropdown-menu {
background-color: var(--color-input-bg);
.ant-select-dropdown-menu-item {
color: var(--color-text);
&.ant-select-dropdown-menu-item-active {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&.ant-select-dropdown-menu-item-selected {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&:hover {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
}
}
.ant-select-selector {
background-color: var(--color-search-list-item-bg) !important;
box-shadow: none !important;
border-radius: 4px;
color: var(--color-search-list-item-value);
border-color: var(--color-search-list-item-bd) !important;
}
.ant-select-selection {
background-color: var(--color-input-bg);
box-shadow: none;
color: var(--color-text);
// border-color:var(--checkable-tag-border);
}
.ant-form-horizontal .ant-form-item-label {
label {
display: inline-block;
word-wrap: break-word;
white-space: normal;
}
}
.ant-picker {
width: 100%;
background-color: var(--color-search-list-item-bg);
border-color: var(--color-border);
}
// .yisa-table {
// width: 100%;
// .ant-table-thead {
// th {
// background: var(--color-table-header-bg) !important;
// }
// }
// .ant-table-tbody {
// td {
// background: var(--color-table-body-bg) !important;
// border-bottom-color: var(--color-table-border-bottom-color);
// }
// tr:nth-child(even) {
// td {
// background: var(--color-table-body-bg-nth-child-even) !important;
// }
// }
// tr:nth-child(odd) {
// td {
// background: var(--color-table-body-bg-nth-child-even) !important;
// }
// }
// }
// }
.totalModal{
.ant-modal-footer{
display: none;
}
position: absolute;
top: 40px;
right: 174px;
}
.ltc-item-img {
width: 390px;
height: 300px;
border: 1px solid;
background: #6565656b;
margin-right: 20px !important;
img {
height: 295px;
width: 387px;
// object-fit: contain;
}
}
.hanleHistoyModal{
max-height: 700px;
overflow: auto;
}
.hanleHistoyModal::-webkit-scrollbar {
width: 5px;
}
.hanleHistoyModal::-webkit-scrollbar-thumb {
background-color: #9da2ab;
border-radius: 10px;
}
.modal-img{
img{
width: 200px;
height: 200px;
}
}

1126
src/pages/NewEnergy/ChargingMgm/BillingRule/loadable.jsx
File diff suppressed because it is too large
View File

183
src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/dataSource.js

@ -0,0 +1,183 @@
//用来存储表头的js文件
import React from "react";
import { Button } from "antd";
//支付记录的表头
export const payRecordColumns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "订单ID",
dataIndex: "order_id",
key: "order_id",
align: "center",
},
{
title: "入场时间",
dataIndex: "admission_time",
key: "admission_time",
align: "center",
},
{
title: "计费时间",
dataIndex: "charging_time",
key: "charging_time",
align: "center",
},
{
title: "支付时间",
dataIndex: "pay_time",
key: "pay_time",
align: "center",
},
{
title: "应收金额",
dataIndex: "receivable_amount",
key: "receivable_amount",
align: "center",
},
{
title: "优惠金额",
dataIndex: "discount_amount",
key: "discount_amount",
align: "center",
},
{
title: "实付金额",
dataIndex: "paid_in_money",
key: "paid_in_money",
align: "center",
},
{
title: "支付类型",
dataIndex: "pay_type_name",
key: "pay_type_name",
align: "center",
},
{
title: "支付渠道",
dataIndex: "payment_channels",
key: "payment_channels",
align: "center",
},
{
title: "支付设备",
dataIndex: "payment_equipment",
key: "payment_equipment",
align: "center",
},
{
title: "支付人",
dataIndex: "pay_person",
key: "pay_person",
align: "center",
},
{
title: "付款路段",
dataIndex: "pay_road",
key: "pay_road",
align: "center",
},
{
title: "第三方流水ID",
dataIndex: "third_party_flow_id",
key: "third_party_flow_id",
align: "center",
},
];
//退款订单的表头
export const refundRecordColumns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "退款方式",
dataIndex: "refund_type",
key: "refund_type",
align: "center",
},
{
title: "支付渠道",
dataIndex: "pay_road",
key: "pay_road",
align: "center",
},
{
title: "支付设备",
dataIndex: "paymentDevice",
key: "paymentDevice",
align: "center",
},
{
title: "退款原因",
dataIndex: "reason",
key: "reason",
align: "center",
},
{
title: "退款金额",
dataIndex: "refund_amount",
key: "refund_amount",
align: "center",
},
{
title: "申请人",
dataIndex: "application_person",
key: "application_person",
align: "center",
},
{
title: "申请时间",
dataIndex: "application_time",
key: "application_time",
align: "center",
},
{
title: "退款时间",
dataIndex: "refund_time",
key: "refund_time",
align: "center",
},
];
//操作记录
export const operatorRecordColumns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "操作类型",
dataIndex: "type",
key: "type",
align: "center",
},
{
title: "操作来源",
dataIndex: "source",
key: "source",
align: "center",
},
{
title: "操作人/设备",
dataIndex: "object",
key: "object",
align: "center",
},
{
title: "操作时间",
dataIndex: "time",
key: "time",
align: "center",
},
];

6
src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.jsx

@ -0,0 +1,6 @@
import React from "react"
import loadable from "@loadable/component"
import { LoadingImg } from "@/components"
const OrderRuleMgm = loadable(() => import("./loadable"))
export default (pros) => <OrderRuleMgm {...pros} fallback={<LoadingImg />} />

238
src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.scss

@ -0,0 +1,238 @@
@import "@/assets/css/mixin.scss";
$color-container-bg: var(--color-container-bg);
$color-user-list-bg: var(--color-user-list-bg);
$color-text: var(--color-text);
$color-primary: var(--color-primary);
.ant-tabs {
margin-bottom: 16px;
.ant-tabs-nav {
margin-bottom: 0 !important;
&::before {
border-bottom: 1px solid var(--color-card-line) !important;
}
}
.ant-tabs-nav-wrap {
width: 100%;
box-sizing: content-box;
.ant-tabs-nav-list {
width: 340px;
.ant-tabs-ink-bar {
height: 3px;
background-color: #00ccff;
}
.ant-tabs-tab {
flex: 1;
width: 100%;
display: flex;
justify-content: center;
padding-bottom: 10px;
text-align: center;
cursor: pointer;
font-size: 14px !important;
font-family: MicrosoftYaHei;
text-align: center;
letter-spacing: 0.7px;
}
.ant-tabs-tab-active {
div {
color: #00ccff;
}
}
}
}
}
.ant-input::-webkit-input-placeholder {
color: var(--color-placeholder);
}
.ant-input::-moz-placeholder {
color: var(--color-placeholder);
}
.right-list .ant-btn-primary {
width: 68px;
height: 30px;
background: linear-gradient(180deg, #3aa9ff, #59b7ff);
border-radius: 4px;
}
.ant-input:-ms-input-placeholder {
color: var(--color-placeholder);
}
.right-list .cc-result-flow .table-wrap .yisa-table .ant-table-thead th {
background-color: #616b83 !important;
}
.right-list .cc-result-flow .table-wrap .yisa-table .ant-table-tbody td {
background-color: #3e4557 !important;
}
.right-list .cc-result-flow .table-wrap .yisa-table .ant-table-tbody tr:nth-child(even) td {
background-color: #3e4557 !important;
}
.ant-input::placeholder {
color: var(--color-placeholder);
}
.ant-select-selection-placeholder {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select-single:not(.ant-select-customize-input) .ant-select-selector {
background: var(--color-input-disabled-bg);
color: var(--color-placeholder);
}
.ant-select-disabled .ant-select-arrow {
color: var(--color-placeholder);
}
.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {
background-color: var(--color-input-disabled-bg);
color: var(--color-input-disabled-color);
cursor: not-allowed;
}
.ant-select-multiple {
.ant-select-selector {
.ant-select-selection-item {
background-color: var(--color-bg-body);
border-color: var(--color-border);
.ant-select-selection-item-remove {
color: var(--color-text);
}
}
}
}
.ant-select-arrow {
color: var(--color-text);
}
.ant-select-clear {
border-radius: 50%;
}
.ant-select-dropdown-menu {
background-color: var(--color-input-bg);
.ant-select-dropdown-menu-item {
color: var(--color-text);
&.ant-select-dropdown-menu-item-active {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&.ant-select-dropdown-menu-item-selected {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
&:hover {
color: #fff;
// background-color: var(--radio-button-bg-checked);
}
}
}
.ant-select-selector {
background-color: var(--color-search-list-item-bg) !important;
box-shadow: none !important;
border-radius: 4px;
color: var(--color-search-list-item-value);
border-color: var(--color-search-list-item-bd) !important;
}
.ant-select-selection {
background-color: var(--color-input-bg);
box-shadow: none;
color: var(--color-text);
// border-color:var(--checkable-tag-border);
}
.ant-form-horizontal .ant-form-item-label {
label {
display: inline-block;
word-wrap: break-word;
white-space: normal;
}
}
.ant-picker {
width: 100%;
background-color: var(--color-search-list-item-bg);
border-color: var(--color-border);
}
// .yisa-table {
// width: 100%;
// .ant-table-thead {
// th {
// background: var(--color-table-header-bg) !important;
// }
// }
// .ant-table-tbody {
// td {
// background: var(--color-table-body-bg) !important;
// border-bottom-color: var(--color-table-border-bottom-color);
// }
// tr:nth-child(even) {
// td {
// background: var(--color-table-body-bg-nth-child-even) !important;
// }
// }
// tr:nth-child(odd) {
// td {
// background: var(--color-table-body-bg-nth-child-even) !important;
// }
// }
// }
// }
.totalModal{
.ant-modal-footer{
display: none;
}
position: absolute;
top: 40px;
right: 174px;
}
.ltc-item-img {
width: 390px;
height: 300px;
border: 1px solid;
background: #6565656b;
margin-right: 20px !important;
img {
height: 295px;
width: 387px;
// object-fit: contain;
}
}
.hanleHistoyModal{
max-height: 700px;
overflow: auto;
}
.hanleHistoyModal::-webkit-scrollbar {
width: 5px;
}
.hanleHistoyModal::-webkit-scrollbar-thumb {
background-color: #9da2ab;
border-radius: 10px;
}
.modal-img{
img{
width: 200px;
height: 200px;
}
}

1126
src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/loadable.jsx
File diff suppressed because it is too large
View File

8
src/pages/NewEnergy/ChargingMgm/index.jsx

@ -0,0 +1,8 @@
import BillingRule from './BillingRule'
import OrderRuleMgm from './OrderRuleMgm'
export default {
BillingRule,
OrderRuleMgm
}

5
src/pages/NewEnergy/index.jsx

@ -0,0 +1,5 @@
import ChargingMgm from './ChargingMgm'
export default {
...ChargingMgm
}

28
src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, QuickMenu } from "@/components"
import { ResultFlowResult, QuickMenu, ExportBtnNew } from "@/components"
import { Select, Button, Table, message, Pagination, Input, Modal, Image, DatePicker, Space, Upload } from 'antd'
import {
pageSizeOptions
@ -36,6 +36,7 @@ function CallbackSuggestion(props) {
const [imgVisible, setImgVisible] = useState(false)
const [orderVisible, setOrderVisible] = useState(false)
const [evidenceVisible, setEvidenceVisible] = useState(false)
const exportRef = useRef(null)
//
const handleAdviseType = (value) => {
@ -515,12 +516,17 @@ function CallbackSuggestion(props) {
}
}
const exportData = () => {
const exportData = (start, end) => {
let data = {
...formData
...formData,
start: start,
end: end
}
ajax.exportDataList(data).then(res => {
window.open(res.data.export_url)
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
const checkPic = () => {
@ -644,9 +650,21 @@ function CallbackSuggestion(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="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={exportData}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

5
src/pages/OperationCenter/CustomerServieMgm/ComplainManage/index.scss

@ -141,6 +141,11 @@ $color-primary: var(--color-primary);
cursor: pointer;
}
.root_gfkk {
display: inline-block;
margin-left: 10px;
}
.paid-result {
width: calc(100% - 375px);
padding-bottom: 15px;

26
src/pages/OperationCenter/CustomerServieMgm/ComplainManage/loadable.jsx

@ -1,5 +1,5 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult } from "@/components";
import { ResultFlowResult, ExportBtnNew } from "@/components";
import {
Select,
Input,
@ -124,6 +124,8 @@ function ComplainManage(props) {
specific_content: "", //
};
const exportRef = useRef(null)
//
const [visible1, setVisible1] = useState(false);
// -key
@ -239,13 +241,15 @@ function ComplainManage(props) {
const [rowData, setRowData] = useState({});
//
const exportData = () => {
let data = { ...holdData, ...pageInfo };
const exportData = (start, end) => {
let data = { ...holdData, ...pageInfo, start: start, end: end };
ajax.getComplainExport(data).then((res) => {
if (res?.data?.url) {
window.open(res.data.url);
exportRef.current.handleCancel()
} else {
message.error("导出异常");
exportRef.current.handleError()
}
});
};
@ -1548,14 +1552,26 @@ function ComplainManage(props) {
>
设置
</Button>
<Button
{/* <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}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={exportData}
/>
</div>
</div>
<ResultFlowResult

30
src/pages/OperationCenter/OperationSales/CouponMgm/WriteOffDetail/loadable.jsx

@ -5,7 +5,7 @@ import { dictionary, utils } from "@/config/common";
import { useSetState , useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
import moment from "moment";
import ajax from '@/services/OperationCenter/OperationSales/index'
import { FormInput, FormSelect, ResultFlow ,FormSliderPicker} from "@/components"
import { FormInput, FormSelect, ResultFlow ,FormSliderPicker, ExportBtnNew} from "@/components"
import "./index.scss";
import searchAjax from '@/services/search'
// import errorImg from "@/assets/images/layout/error.png"
@ -18,6 +18,7 @@ function WriteOffDetail() {
defaultValue:{}
})
const params = useRef()
const exportRef = useRef(null)
const [typeOptions,setTypeOptions] = useState([])
const [operatorAllData, setOperatorAllData] = useState([]) //
const [pageData, setPageData] = useSetState({ //
@ -243,15 +244,24 @@ function WriteOffDetail() {
}
//
const exportData=()=>{
const exportData=(start, end)=>{
let data={
...formData
...formData,
start: start,
end: end
}
ajax.handleOffExport(data).then(res => {
window.open(res.data.url)
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
const handleExport = (start, end) => {
exportData(start, end)
}
useEffect(()=>{
// getOffList()
getCouponOptions()
@ -357,7 +367,19 @@ function WriteOffDetail() {
<span className="total-number"> {resultData.total} </span>
<span className="letter">条结果</span>
</span>
<Button type="primary" onClick={exportData} >导出</Button>
{/* <Button type="primary" onClick={exportData} >导出</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<div className="table-wrap">
<Table

33
src/pages/OperationCenter/OperationSales/CouponMgm/WriteOffStat/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
@ -31,6 +31,7 @@ function WriteOffStat(props) {
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const exportRef = useRef(null)
const [couponNameOptions, setCouponNameOptions] = useState([])
//
@ -110,6 +111,11 @@ function WriteOffStat(props) {
}
})
}
const handleExport = (start, end) => {
exportData(start, end)
}
//
const changePn = (pn, length) => {
if (lastFormData.size === length) {
@ -141,12 +147,17 @@ function WriteOffStat(props) {
}
//
const exportData=()=>{
const exportData=(start, end)=>{
let data={
...formData
...formData,
start: start,
end: end
}
ajax.handleCountExport(data).then(res => {
window.open(res.data.url)
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
@ -225,9 +236,21 @@ function WriteOffStat(props) {
<div className="result">
<div className="result-info-row">
<span className="font">共检索到<em>{resultData.total}</em>条结果</span>
<Button type="primary" className="yisa-btn" onClick={() => { exportData() }}>
{/* <Button type="primary" className="yisa-btn" onClick={() => { exportData() }}>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.list ? resultData.list : []}>

25
src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardOrder/loadable.jsx

@ -3,7 +3,7 @@ import { Select, Input, Popconfirm,Button, Table, message, DatePicker, Paginatio
import {
pageSizeOptions
} from '@/config/character.config.js'
import { ResultFlowResult } from "@/components"
import { ResultFlowResult, ExportBtnNew } from "@/components"
import { SearchOutlined, PlusOutlined,VerticalAlignBottomOutlined } from '@ant-design/icons';
import moment from 'moment'
import { useSetState,} from 'ahooks';
@ -156,6 +156,7 @@ function ParkingCardOrder() {
})
const [lastFormData, setLastFormData] = useState(formData)
const exportRef = useRef(null)
const lastFormDataRef = useRef(formData)
@ -292,17 +293,19 @@ function ParkingCardOrder() {
};
//
const ReportPaySummaryReport = () => {
const ReportPaySummaryReport = (start, end) => {
if(!resultData.total){
message.warning("暂无数据")
return
}
ajax.exportOrder(formData).then(res => {
ajax.exportOrder({...formData, start: start, end: end}).then(res => {
if (parseInt(res?.status) === 20000){
Donwload(res.data?.url)
exportRef.current.handleCancel()
}
else {
message.error(res?.message);
exportRef.current.handleError()
}
}).catch(e =>
console.log(e))
@ -675,14 +678,26 @@ function ParkingCardOrder() {
style={{width:110}}>
添加
</Button>&emsp;
<Button
{/* <Button
type="primary"
className="yisa-btn colorBtn "
onClick={() => { ReportPaySummaryReport()}}
// style={{background:"#fff",color:'#59b7ff',height:'100%'}}
>
导出
</Button>
</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={ReportPaySummaryReport}
/>
</div>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>

28
src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredOrder/loadable.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, TreeSelect, Pagination, DatePicker, Cascader, Popover, Modal } from 'antd'
import {
pageSizeOptions
@ -37,6 +37,7 @@ function StaggeredOrder(props) {
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const [editVisible, setEditVisible] = useState(false)
const exportRef = useRef(null)
//
@ -69,12 +70,17 @@ function StaggeredOrder(props) {
}
//
const exportData = () => {
const exportData = (start, end) => {
let data = {
...formData
...formData,
start: start,
end: end
}
ajax.getExportOrder(data).then(res => {
window.open(res.data.url)
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
//
@ -355,9 +361,21 @@ function StaggeredOrder(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="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={exportData}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

28
src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredStat/loadable.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, TreeSelect, Pagination, DatePicker, Space } from 'antd'
import {
pageSizeOptions
@ -34,6 +34,7 @@ function StaggeredStat(props) {
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const exportRef = useRef(null)
//
const handlePartName = (value) => {
@ -50,12 +51,17 @@ function StaggeredStat(props) {
};
//
const exportData = () => {
const exportData = (start, end) => {
let data = {
...formData
...formData,
start: start,
end: end
}
ajax.getStaggeredStatExport(data).then(res => {
window.open(res.data.url)
exportRef.current.handleCancel()
}).catch(err => {
exportRef.current.handleError()
})
}
//
@ -233,9 +239,21 @@ function StaggeredStat(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="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={resultData.total_records}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={exportData}
/>
</div>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table

1
src/pages/OutRoadMgm/OutBusinessRecord/OutParkingArrearsOrders/loadable.jsx

@ -209,6 +209,7 @@ function OutParkingArrearsOrders() {
pageName={"outParkingArrearsOrders"}
initFormData={initFormData}
exportUrl="/api/orp/business/get_parking_arrears_export"
isExport={true}
isQuickMenu={[
{ text: "昨天", value: 1 },
{ text: "近30天", value: 30 },

1
src/pages/OutRoadMgm/OutBusinessRecord/OutPayOrders/loadable.jsx

@ -215,6 +215,7 @@ function OutPayOrders() {
search={fetch}
limitCon={limitCon}
initFormData={initFormData}
isExport={true}
exportUrl="/api/orp/business/get_payment_export"
/>
</>

1
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss

@ -20,6 +20,7 @@ $color-primary: var(--color-primary);
height: 100%;
.header-button {
display: flex;
button {
margin: 0 3px;
}

24
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx

@ -26,7 +26,7 @@ import {
useUpdate,
} from "ahooks";
import ajax from "@/services";
import { TableModule, ResultFlow } from "@/components";
import { TableModule, ResultFlow, ExportBtnNew } from "@/components";
import Detail from "./Detail";
import AddParking from "./AddParking";
import "./index.scss";
@ -216,6 +216,7 @@ function OutSegment() {
pn: 1,
page_size: 15,
});
const exportRef = useRef(null);
const tableRef = useRef(null);
const [appraise, setAppraise] = useState({})
const [loading, setLoading] = useState(false);
@ -394,12 +395,14 @@ function OutSegment() {
}
}, [formData])
//
const handleExport = () => {
const handleExport = (start, end) => {
if (tableData.length > 0) {
let values = searchForm.getFieldsValue();
let end = values.area?.length > 0 ? values.area.slice(-1) : null;
let params = {
...values,
start: start,
end: end,
//area_id: values.area?.length > 0 ? end : areaId,
area_id: sessionTabList?.area,
};
@ -410,12 +413,15 @@ function OutSegment() {
(res) => {
if (res) {
window.open(res.data.export_url)
tableRef.current.handleCancel()
} else {
message.error(res?.message);
tableRef.current.handleError()
}
},
(err) => {
console.log(err);
tableRef.current.handleError()
}
);
} else {
@ -614,7 +620,19 @@ function OutSegment() {
>
评价批量配置
</Button>
<Button type="primary" onClick={handleExport}>导出</Button>
{/* <Button type="primary" onClick={handleExport}>导出</Button> */}
<ExportBtnNew
children={<Button className="export-btn" size='medium' type="primary">导出</Button>}
modalType="noImg"
ref={exportRef}
totalRecords={total}
imgno={false}
postdata={{
formData: formData
}}
isTableModule={true}
onOk={handleExport}
/>
</div>
</div>
<ResultFlow

4
src/pages/index.jsx

@ -14,6 +14,7 @@ import OperationCenter from "./OperationCenter"
import FinancialMgm from "./FinancialMgm"
import SystemMgm from "./SystemMgm"
import OffPeak from "./OffPeak"
import NewEnergy from "./NewEnergy"
export default {
_404,
_403,
@ -26,5 +27,6 @@ export default {
...OperationCenter,
...FinancialMgm,
...SystemMgm,
...OffPeak
...OffPeak,
...NewEnergy
}

14
src/router/router.config.js

@ -1303,12 +1303,26 @@ let routes = [
name: "timeRule",
component: pages.TimeRule,
},
// -------------------------------新能源充电系统
{
path: "/newEnergy/newEnergyOverview",
text: "数据概览",
name: "newEnergyOverview",
component: pages.NewEnergyOverview,
},
{
path: "/newEnergy/billingRule",
text: "计费规则",
name: "billingRule",
component: pages.BillingRule,
},
{
path: "/newEnergy/orderRuleMgm",
text: "预约规则管理",
name: "orderRuleMgm",
component: pages.OrderRuleMgm,
},
],
},
];

14
src/services/NewEnergy/chargingMgm.js

@ -0,0 +1,14 @@
import ajax from "@/config/ajax"
//公众号菜单配置-获取菜单
const getWechatMenuList = (params) => {
return ajax({
url: "/api/ope/app_manage/get_menu_list",
type: "post",
data: params,
});
};
export default{
getWechatMenuList
}

5
src/services/NewEnergy/index.js

@ -0,0 +1,5 @@
import chargingMgm from './chargingMgm'
export default {
...chargingMgm
}
Loading…
Cancel
Save