diff --git a/src/pages/FinancialMgm/FinancialReport/BookReport/loadable.jsx b/src/pages/FinancialMgm/FinancialReport/BookReport/loadable.jsx
index 22997df..056d45c 100644
--- a/src/pages/FinancialMgm/FinancialReport/BookReport/loadable.jsx
+++ b/src/pages/FinancialMgm/FinancialReport/BookReport/loadable.jsx
@@ -740,14 +740,14 @@ function BookReport() {
共查询到 {Data?.total || 0}条数据
- {
// Data?.total && setFormDatas({ ...FormData });
}}
>
导出
-
+ */}
{
+ 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() {
共查询到 {Data?.total || 0}条数据
- {
Data?.total && ReportPaySummaryReport();
@@ -1022,7 +1028,19 @@ function OperationReport() {
}}
>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={Data?.total}
+ imgno={false}
+ postdata={{
+ formData: FormData
+ }}
+ isTableModule={true}
+ onOk={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() {
共查询到 {Data?.total || 0}条数据
- {
Data?.total && ReportPaySummaryReport();
@@ -938,7 +945,19 @@ function ParkingIncomeReport() {
}}
>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={Data?.total}
+ imgno={false}
+ postdata={{
+ formData: FormData
+ }}
+ isTableModule={true}
+ onOk={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() {
共查询到 {Data?.total || 0}条数据
- {
Data?.total && ReportPaySummaryReport();
@@ -695,7 +700,19 @@ function PaySummaryReport() {
}}
>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={Data?.total}
+ imgno={false}
+ postdata={{
+ formData: FormData
+ }}
+ isTableModule={true}
+ onOk={ReportPaySummaryReport}
+ />
diff --git a/src/pages/FinancialMgm/PayRecordTotal/loadable.jsx b/src/pages/FinancialMgm/PayRecordTotal/loadable.jsx
index 6525450..7d47f49 100644
--- a/src/pages/FinancialMgm/PayRecordTotal/loadable.jsx
+++ b/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) {
条结果
- */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={handleExport}
+ />
{
+ 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() {
共查询到 {Data?.total || 0}条数据
{FormData.type == 1 ? (
- {
- Data?.total && ReportPaySummaryReport();
+ // {
+ // Data?.total && ReportPaySummaryReport();
+ // }}
+ // >
+ // 导出
+ //
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={Data?.total}
+ imgno={false}
+ postdata={{
+ formData: FormData
}}
- >
- 导出
-
+ isTableModule={true}
+ onOk={ReportPaySummaryReport}
+ />
) : (
""
)}
diff --git a/src/pages/NewEnergy/ChargingMgm/BillingRule/dataSource.js b/src/pages/NewEnergy/ChargingMgm/BillingRule/dataSource.js
new file mode 100644
index 0000000..99b73a3
--- /dev/null
+++ b/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",
+ },
+];
diff --git a/src/pages/NewEnergy/ChargingMgm/BillingRule/index.jsx b/src/pages/NewEnergy/ChargingMgm/BillingRule/index.jsx
new file mode 100644
index 0000000..7fbec04
--- /dev/null
+++ b/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) => } />
\ No newline at end of file
diff --git a/src/pages/NewEnergy/ChargingMgm/BillingRule/index.scss b/src/pages/NewEnergy/ChargingMgm/BillingRule/index.scss
new file mode 100644
index 0000000..9a8202a
--- /dev/null
+++ b/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;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/NewEnergy/ChargingMgm/BillingRule/loadable.jsx b/src/pages/NewEnergy/ChargingMgm/BillingRule/loadable.jsx
new file mode 100644
index 0000000..cecb221
--- /dev/null
+++ b/src/pages/NewEnergy/ChargingMgm/BillingRule/loadable.jsx
@@ -0,0 +1,1126 @@
+import React, { useState, useRef, useEffect } from "react";
+import {
+ message,
+ Pagination,
+ Table,
+ Space,
+ Modal,
+ Button,
+ Tabs,
+ Descriptions,
+ Input,
+ Steps,
+ Select,
+ Image,
+ Timeline,
+ Popover
+} from "antd";
+import { dictionary, utils } from "@/config/common";
+// import moment from 'moment'
+// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
+import ajax from "@/services";
+import errorImg from '@/assets/images/error-img-new.png'
+import { QuestionCircleOutlined } from '@ant-design/icons';
+import { TableModule } from "@/components";
+import "./index.scss";
+import {
+ payRecordColumns,
+ refundRecordColumns,
+ operatorRecordColumns,
+} from "./dataSource";
+// import errorImg from "@/assets/images/layout/error.png"
+// import { useLocation } from "react-router-dom";
+const { TextArea } = Input;
+
+let array = [];
+
+function BillingRule() {
+ const roadContent = (
+
+ )
+ const receivableContent = (
+
+ )
+ const discountContent = (
+
+ )
+ const preferentialContent = (
+
+ )
+ const refundContent = (
+
+ )
+ const columns = [
+ {
+ title: "序号",
+ dataIndex: "index",
+ key: "index",
+ align: "center",
+ fixed: "left",
+ render: (text, record, index) => index + 1,
+ width: 100,
+ },
+
+ {
+ title: "路段名称",
+ dataIndex: "road",
+ align: "center",
+ render: (text, record, index) => (
+ {record.road}
+ )
+ },
+ {
+ title: "车牌号",
+ dataIndex: "plate",
+ align: "center",
+ render: (text, record, index) => (
+ {record.plate}
+ )
+ },
+ {
+ title: "车牌颜色",
+ dataIndex: "plate_color",
+ key: "plate_color",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "泊位号",
+ dataIndex: "berth_id",
+ key: "berth_id",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "入场时间",
+ dataIndex: "in_time",
+ align: "center",
+ render: (text, record, index) => (
+ {record.in_time}
+ )
+ },
+ {
+ title: "离场时间",
+ dataIndex: "out_time",
+ align: "center",
+ render: (text, record, index) => (
+ {record.out_time}
+ )
+ },
+ {
+ title: "停车时长",
+ dataIndex: "admission_time",
+ key: "admission_time",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "入场收费员",
+ dataIndex: "in_person",
+ key: "in_person",
+ width: 100,
+ align: "center",
+
+ },
+ {
+ title: "出场收费员",
+ dataIndex: "out_person",
+ key: "out_person",
+ width: 100,
+ align: "center",
+ },
+ {
+ title:
+ 订单金额
+
+ ,
+ dataIndex: "order_amount",
+ key: "order_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title:
+ 应收金额
+
+ ,
+ dataIndex: "receivable_amount",
+ key: "receivable_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title:
+ 折扣金额
+
+ ,
+ dataIndex: "discount_amount",
+ key: "discount_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title:
+ 优惠金额
+
+ ,
+ dataIndex: "preferential_amount",
+ key: "preferential_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title: "实付金额",
+ dataIndex: "actual_amount",
+ key: "actual_amount",
+ width: 100,
+ align: "center",
+ },
+ {
+ title:
+ 退款总计
+
+ ,
+ dataIndex: "refund_total",
+ key: "refund_total",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title: "停车记录ID",
+ dataIndex: "park_id",
+ align: "center",
+ render: (text, record, index) => (
+
+ ),
+ },
+ {
+ title: "区域",
+ dataIndex: "region",
+ align: "center",
+ render: (text, record, index) => (
+ {record.region}
+ )
+ },
+ {
+ title: "商户名称",
+ dataIndex: "operator",
+ align: "center",
+ render: (text, record, index) => (
+ {record.operator}
+ )
+ },
+ {
+ title: "路段类型",
+ dataIndex: "road_type",
+ key: "road_type",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "操作",
+ dataIndex: "operation",
+ key: "operation",
+ align: "center",
+ fixed: "right",
+ width: 100,
+ render: (text, record, index) => {
+ setDataDetail(record)
+ return (
+ <>
+ openModal(index, record)}>
+ 详情
+
+ >
+ )
+
+ },
+ },
+ ];
+
+ const formSearch = [
+ {
+ name: "region",
+ type: "TreeSelect",
+ label: "区域",
+ },
+ {
+ name: "operator",
+ type: "Select",
+ label: "商户名称",
+ defaultValue: "0",
+ placeholder: "请选择商户名称",
+ },
+ {
+ name: "road",
+ type: "SearchSelect",
+ label: "路段名称",
+ placeholder: "请输入路段名称",
+ },
+ {
+ name: "road_type",
+ type: "Select",
+ label: "路段类型",
+ defaultValue: 0,
+ options: sysConfig.roadType,
+ },
+ {
+ name: "phone",
+ type: "Input",
+ label: "手机号",
+ placeholder: "请输入手机号",
+ },
+ {
+ name: "plate",
+ type: "Input",
+ label: "车牌号",
+ placeholder: "请输入车牌号",
+ },
+ {
+ name: "berth_id",
+ type: "Input",
+ label: "泊位号",
+ placeholder: "请输入泊位号",
+ },
+ {
+ name: "type",
+ type: "Select",
+ label: "出入场类型",
+ defaultValue: 1,
+ options: [
+ {
+ label: "入场",
+ value: 1,
+ },
+ {
+ label: "出场",
+ value: 2,
+ },
+ ],
+ },
+ {
+ name: "park_id",
+ type: "Input",
+ label: "停车记录ID",
+ placeholder: "请输入停车记录ID",
+ },
+ {
+ name: "plate_color",
+ type: "Select",
+ label: "车牌颜色",
+ placeholder: "请输入车牌颜色",
+ options: sysConfig.plateColor,
+ },
+ {
+ name: "order_type",
+ type: "Select",
+ label: "订单类型",
+ defaultValue: 0,
+ options: [
+ {
+ label: "全部",
+ value: 0,
+ },
+ {
+ label: "进行中",
+ value: 1,
+ },
+ {
+ label: "待支付",
+ value: 2,
+ },
+ {
+ label: "已支付",
+ value: 3,
+ }
+ ],
+ },
+ {
+ name: "in_person",
+ type: "Input",
+ label: "入场收费员",
+ placeholder: "请输入入场收费员",
+ },
+ {
+ name: "out_person",
+ type: "Input",
+ label: "出场收费员",
+ placeholder: "请输入出场收费员",
+ },
+ {
+ name: "timePeriod",
+ type: "RangePicker",
+ label: "时间段",
+ },
+ ];
+ const initFormData = {
+ region: ["0"],
+ operator: "0",
+ road: "0",
+ road_type: 0,
+ phone: "",
+ plate: "",
+ berth_id: "",
+ type: 1,
+ park_id: "",
+ order_type: 0,
+ plate_color: -1,
+ in_person: "",
+ out_person: "",
+ };
+ //历史处理的表头
+ const historyProgressColumns = [
+ {
+ title: "序号",
+ dataIndex: "id",
+ key: "id",
+ align: "center",
+ render: (text, record, index) => index + 1,
+ },
+ {
+ title: "状态",
+ dataIndex: "status",
+ key: "status",
+ align: "center",
+ },
+ {
+ title: "处理记录ID",
+ dataIndex: "deal_record_id",
+ key: "deal_record_id",
+ align: "center",
+ },
+ {
+ title: "处理时间",
+ dataIndex: "deal_time",
+ key: "deal_time",
+ align: "center",
+ },
+ {
+ title: "处理人",
+ dataIndex: "dealer",
+ key: "dealer",
+ align: "center",
+ },
+ {
+ title: "业务订单类型",
+ dataIndex: "business_type",
+ key: "business_type",
+ align: "center",
+ },
+ {
+ title: "更改项",
+ dataIndex: "change_content",
+ key: "change_content",
+ align: "center",
+ render: (text) => {
+ return text == 1
+ ? "调整出场时间"
+ : text == 2
+ ? "变更车牌号"
+ : text == 3
+ ? "更改订单金额"
+ : text == 4
+ ? "免费该订单"
+ : "作废该订单"
+ }
+ },
+ {
+ title: "更改初始值",
+ dataIndex: "initial_value",
+ key: "initial_value",
+ align: "center",
+ },
+ {
+ title: "更改更新值",
+ dataIndex: "update_value",
+ key: "update_value",
+ align: "center",
+ },
+ {
+ title: "操作",
+ dataIndex: "operation",
+ key: "operation",
+ align: "center",
+ fixed: "right",
+ render: (_, record) => {
+ return (
+ {
+ checkHistoryDetail(record);
+ }}
+ >
+ 操作
+
+ );
+ },
+ },
+ ];
+
+
+ const h_columns = [
+ {
+ title: "停车订单ID",
+ dataIndex: "park_id",
+ key: "park_id",
+ width: 200,
+ align: "center",
+ render: (text) => (
+ <>
+ {
+ navigator.clipboard.writeText(`${text}`).then(() => {
+ message.success("已复制到剪切板");
+ });
+ }}
+ >
+ {text}
+
+ >
+ ),
+ },
+ {
+ title: "车牌号",
+ dataIndex: "plate",
+ key: "plate",
+ align: "center",
+ },
+ {
+ title: "停车场名称",
+ dataIndex: "park_name",
+ key: "park_name",
+ align: "center",
+ width: 200,
+ },
+ {
+ title: "入场时间",
+ dataIndex: "in_time",
+ key: "in_time",
+ align: "center",
+ },
+ {
+ title: "计费时间",
+ dataIndex: "admission_time",
+ key: "admission_time",
+ align: "center",
+ },
+ ];
+
+
+ const [detailVisible, setDetailVisible] = useState(false);
+ const [tableData, setTableData] = useState([]);
+ const [total, setTotal] = useState(0);
+ const [tabKey, setTabKey] = useState("1");
+ // 车场id
+ const [parkId, setParkId] = useState("");
+ //支付记录数据
+ const [payRecord, setPayRecord] = useState([]);
+ //退款订单数据
+ const [refundRecord, setRefundRecord] = useState([]);
+ //操作记录数据
+ const [operationRecord, setOperatorRecord] = useState([]);
+ //历史处理数据
+ const [historyProgressRecord, setHistoryProgressRecord] = useState([]);
+ //停车记录信息数据
+ const [parkingRecordDetail, setParkingRecordDetail] = useState({});
+ //当前的所选择的停车信息索引
+ const [recordIndex, setRecordIndex] = useState(-1);
+ //当前所选择的订单ID
+ const [currentRecordID, setCurrentRecordID] = useState("");
+ //历史记录详情Modal
+ const [historyVisible, setHistoryVisible] = useState(false);
+ //历史记录详情的弹窗查看全部
+ const [isShowAll, setIsShowAll] = useState(false);
+ //历史记录车辆图片弹窗
+ const [platePhototModal, setPlatePhotoModal] = useState(false);
+ //历史记录详情数据
+ const [historyDataDetail, setHistoryDataDetail] = useState({});
+ const [DataDetail, setDataDetail] = useState({});
+ function openModal(index, record) {
+ setDetailVisible(true);
+ setParkingRecordDetail(record);
+ setHistoryDataDetail(record)
+ setRecordIndex(index);
+ }
+
+ const handleImgError = (e) => {
+ let evn = e || event
+ let img = evn.srcElement ? evn.srcElement : evn.target
+ img.src = errorImg
+ }
+
+ function changeKey(key) {
+ setTabKey(key);
+ switch (key) {
+ case "2":
+ getPaymentRecord(currentRecordID);
+ break;
+ case "3":
+ getRefundRecord(currentRecordID);
+ break;
+ case "4":
+ getOperateRecord(currentRecordID);
+ break;
+ case "5":
+ getHistoryRecord(currentRecordID);
+ break;
+ default:
+ break;
+ }
+ }
+ function renderParkRecord(item) {
+ return (
+ item && (
+
+
+ {item.road}
+ {item.berth_id}
+ {item.region}
+ {item.operator}
+ {item.road_type}
+
+
+ {item.plate}
+ {item.phone}
+ {item.in_time}
+ {item.out_time}
+ {item.admission_time}
+ {item.order_amount}
+ {item.parking_card_discount}
+
+ {item.road_discount}
+
+
+ {item.receivable_amount}
+
+ {item.coupon }
+
+ {item.preferential_amount}
+
+
+ {item.actual_amount}
+
+
+ {item.refund_discount}
+
+
+ {item.actual_refund}
+
+
+ {item.refund_total}
+
+
+ {item.in_person}
+
+
+ {item.out_person}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ );
+ }
+ //查看历史详情
+ const [getHistoryData,setGetHistoryData]=useState({})
+ function checkHistoryDetail(record) {
+ setGetHistoryData(record);
+ setHistoryVisible(true);
+ }
+ function renderModalTable(columns, dataSource) {
+ return (
+
+ );
+ }
+ //获取订单的支付记录
+ function getPaymentRecord(park_id) {
+ ajax.getPaymentRecord({ park_record_id: park_id }).then((res) => {
+ if (res.status === 20000) {
+ setPayRecord(res.data.list);
+ }
+ });
+ }
+ //获取退款订单的接口
+ function getRefundRecord(park_id) {
+ ajax.getRefundRecord({ park_id }).then((res) => {
+ if (res.status === 20000) {
+ setRefundRecord(res.data.list);
+ }
+ });
+ }
+ //获取操作处理的接口
+ function getOperateRecord(park_id) {
+ ajax.getOperateRecord({ park_record_id: park_id }).then((res) => {
+ if (res.status === 20000) {
+ setOperatorRecord(res.data.list);
+ }
+ });
+ }
+ //获取历史处理记录的接口
+ function getHistoryRecord(park_id) {
+ ajax.getHistoryRecord({ park_record_id: park_id }).then((res) => {
+ if (res.status === 20000) {
+ // res.data.list.map(res=>{
+ setHistoryProgressRecord(res.data.list);
+ // })
+ }
+ });
+ }
+
+ //获取函数
+ function search(params) {
+ utils.tableScrollTop("parent-table-scroll")
+ ajax.getParkingList(params).then((res) => {
+ if (res.status === 20000) {
+ setTableData(res.data.list);
+ setTotal(res.data.total);
+ }else{
+ message.error(res.message)
+ }
+ });
+ }
+ useEffect(() => {
+ // setParkingRecordDetail(tableData[recordIndex]);
+ setCurrentRecordID(tableData[recordIndex]?.park_id || "");
+ }, [recordIndex]);
+
+ return (
+ <>
+
+ {
+ setDetailVisible(false);
+ setTabKey("1");
+ }}
+ destroyOnClose
+ >
+
+
+ {renderParkRecord(parkingRecordDetail)}
+
+
+ {renderModalTable(payRecordColumns, payRecord)}
+
+
+ {renderModalTable(refundRecordColumns, refundRecord)}
+
+
+ {renderModalTable(operatorRecordColumns, operationRecord)}
+
+
+ {renderModalTable(historyProgressColumns, historyProgressRecord)}
+
+
+ {
+ setHistoryVisible(false);
+ }}
+ className="hanleHistoyModal"
+ footer={null}
+ width={1000}
+ >
+
+
+
+ {historyDataDetail?.road}
+
+
+ {historyDataDetail.region}
+
+
+ {historyDataDetail.operator}
+
+
+ {historyDataDetail.berth_id}
+
+
+ {historyDataDetail.road_type}
+
+
+
+
+ {historyDataDetail.plate}
+
+
+ {historyDataDetail.admission_time}
+
+
+ {historyDataDetail.in_time}
+
+
+ {historyDataDetail.out_time}
+
+
+ {historyDataDetail.in_source}
+
+
+ {historyDataDetail.out_source}
+
+
+ {
+ setPlatePhotoModal(true);
+ }}
+ >
+ 查看
+
+
+
+
+
+ {historyDataDetail.order_amount}
+
+
+ {historyDataDetail.preferential_total}
+
+
+ {historyDataDetail.actual_amount}
+
+
+ {historyDataDetail.arrears_mount}
+
+
+ {
+ setIsShowAll(false);
+ }}
+ >
+ 返回
+
+ ) : (
+ {
+ setIsShowAll(true);
+ }}
+ >
+ 查看全部
+
+ )
+ }
+ >
+
+
+
+
+ {isShowAll ? (
+
+
+
+
+
+
+
+
申诉处理审核: 已完成
+
+
{getHistoryData.examine_time}
+
来源:平台
+
操作人:{getHistoryData.dealer}
+
+
+
+
+
+
申诉处理提审
+
+
+
操作项
+
+ {getHistoryData?.change_content == 1
+ ? "调整出场时间"
+ : getHistoryData?.change_content == 2
+ ? "变更车牌号"
+ : getHistoryData?.change_content == 3
+ ? "更改订单金额"
+ : getHistoryData?.change_content == 4
+ ? "免费该订单"
+ : "作废该订单"}
+
+
{getHistoryData.deal_time}
+
+
+
初始值
+
{getHistoryData.initial_value || "--"}
+
来源:平台
+
+
+
变更值
+
{getHistoryData.update_value || "--"}
+
{getHistoryData.dealer}
+
+
+
+
+
+
+
+
+ ) : (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {getHistoryData.change_content == 1 ? (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ ) : getHistoryData.change_content == 2 ? (
+
+
+
+
+
+
+
+
+ ) : getHistoryData.change_content == 3 ? (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ ) : null}
+
+
+
+ )}
+ {
+ setPlatePhotoModal(false);
+ }}
+ footer={false}
+ className="modal-img"
+ >
+
+
+
+
+ >
+ );
+}
+
+export default BillingRule;
diff --git a/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/dataSource.js b/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/dataSource.js
new file mode 100644
index 0000000..99b73a3
--- /dev/null
+++ b/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",
+ },
+];
diff --git a/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.jsx b/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.jsx
new file mode 100644
index 0000000..3109bde
--- /dev/null
+++ b/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) => } />
\ No newline at end of file
diff --git a/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.scss b/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/index.scss
new file mode 100644
index 0000000..9a8202a
--- /dev/null
+++ b/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;
+ }
+}
\ No newline at end of file
diff --git a/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/loadable.jsx b/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/loadable.jsx
new file mode 100644
index 0000000..dceeb12
--- /dev/null
+++ b/src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/loadable.jsx
@@ -0,0 +1,1126 @@
+import React, { useState, useRef, useEffect } from "react";
+import {
+ message,
+ Pagination,
+ Table,
+ Space,
+ Modal,
+ Button,
+ Tabs,
+ Descriptions,
+ Input,
+ Steps,
+ Select,
+ Image,
+ Timeline,
+ Popover
+} from "antd";
+import { dictionary, utils } from "@/config/common";
+// import moment from 'moment'
+// import { useSessionStorageState, useUpdateEffect, useSize, useUpdate } from 'ahooks';
+import ajax from "@/services";
+import errorImg from '@/assets/images/error-img-new.png'
+import { QuestionCircleOutlined } from '@ant-design/icons';
+import { TableModule } from "@/components";
+import "./index.scss";
+import {
+ payRecordColumns,
+ refundRecordColumns,
+ operatorRecordColumns,
+} from "./dataSource";
+// import errorImg from "@/assets/images/layout/error.png"
+// import { useLocation } from "react-router-dom";
+const { TextArea } = Input;
+
+let array = [];
+
+function OrderRuleMgm() {
+ const roadContent = (
+
+ )
+ const receivableContent = (
+
+ )
+ const discountContent = (
+
+ )
+ const preferentialContent = (
+
+ )
+ const refundContent = (
+
+ )
+ const columns = [
+ {
+ title: "序号",
+ dataIndex: "index",
+ key: "index",
+ align: "center",
+ fixed: "left",
+ render: (text, record, index) => index + 1,
+ width: 100,
+ },
+
+ {
+ title: "路段名称",
+ dataIndex: "road",
+ align: "center",
+ render: (text, record, index) => (
+ {record.road}
+ )
+ },
+ {
+ title: "车牌号",
+ dataIndex: "plate",
+ align: "center",
+ render: (text, record, index) => (
+ {record.plate}
+ )
+ },
+ {
+ title: "车牌颜色",
+ dataIndex: "plate_color",
+ key: "plate_color",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "泊位号",
+ dataIndex: "berth_id",
+ key: "berth_id",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "入场时间",
+ dataIndex: "in_time",
+ align: "center",
+ render: (text, record, index) => (
+ {record.in_time}
+ )
+ },
+ {
+ title: "离场时间",
+ dataIndex: "out_time",
+ align: "center",
+ render: (text, record, index) => (
+ {record.out_time}
+ )
+ },
+ {
+ title: "停车时长",
+ dataIndex: "admission_time",
+ key: "admission_time",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "入场收费员",
+ dataIndex: "in_person",
+ key: "in_person",
+ width: 100,
+ align: "center",
+
+ },
+ {
+ title: "出场收费员",
+ dataIndex: "out_person",
+ key: "out_person",
+ width: 100,
+ align: "center",
+ },
+ {
+ title:
+ 订单金额
+
+ ,
+ dataIndex: "order_amount",
+ key: "order_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title:
+ 应收金额
+
+ ,
+ dataIndex: "receivable_amount",
+ key: "receivable_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title:
+ 折扣金额
+
+ ,
+ dataIndex: "discount_amount",
+ key: "discount_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title:
+ 优惠金额
+
+ ,
+ dataIndex: "preferential_amount",
+ key: "preferential_amount",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title: "实付金额",
+ dataIndex: "actual_amount",
+ key: "actual_amount",
+ width: 100,
+ align: "center",
+ },
+ {
+ title:
+ 退款总计
+
+ ,
+ dataIndex: "refund_total",
+ key: "refund_total",
+ width: 100,
+ align: "center",
+ // filterDropdown: true,
+ // filterIcon:
+ //
+ //
+ //
+ },
+ {
+ title: "停车记录ID",
+ dataIndex: "park_id",
+ align: "center",
+ render: (text, record, index) => (
+
+ ),
+ },
+ {
+ title: "区域",
+ dataIndex: "region",
+ align: "center",
+ render: (text, record, index) => (
+ {record.region}
+ )
+ },
+ {
+ title: "商户名称",
+ dataIndex: "operator",
+ align: "center",
+ render: (text, record, index) => (
+ {record.operator}
+ )
+ },
+ {
+ title: "路段类型",
+ dataIndex: "road_type",
+ key: "road_type",
+ width: 100,
+ align: "center",
+ },
+ {
+ title: "操作",
+ dataIndex: "operation",
+ key: "operation",
+ align: "center",
+ fixed: "right",
+ width: 100,
+ render: (text, record, index) => {
+ setDataDetail(record)
+ return (
+ <>
+ openModal(index, record)}>
+ 详情
+
+ >
+ )
+
+ },
+ },
+ ];
+
+ const formSearch = [
+ {
+ name: "region",
+ type: "TreeSelect",
+ label: "区域",
+ },
+ {
+ name: "operator",
+ type: "Select",
+ label: "商户名称",
+ defaultValue: "0",
+ placeholder: "请选择商户名称",
+ },
+ {
+ name: "road",
+ type: "SearchSelect",
+ label: "路段名称",
+ placeholder: "请输入路段名称",
+ },
+ {
+ name: "road_type",
+ type: "Select",
+ label: "路段类型",
+ defaultValue: 0,
+ options: sysConfig.roadType,
+ },
+ {
+ name: "phone",
+ type: "Input",
+ label: "手机号",
+ placeholder: "请输入手机号",
+ },
+ {
+ name: "plate",
+ type: "Input",
+ label: "车牌号",
+ placeholder: "请输入车牌号",
+ },
+ {
+ name: "berth_id",
+ type: "Input",
+ label: "泊位号",
+ placeholder: "请输入泊位号",
+ },
+ {
+ name: "type",
+ type: "Select",
+ label: "出入场类型",
+ defaultValue: 1,
+ options: [
+ {
+ label: "入场",
+ value: 1,
+ },
+ {
+ label: "出场",
+ value: 2,
+ },
+ ],
+ },
+ {
+ name: "park_id",
+ type: "Input",
+ label: "停车记录ID",
+ placeholder: "请输入停车记录ID",
+ },
+ {
+ name: "plate_color",
+ type: "Select",
+ label: "车牌颜色",
+ placeholder: "请输入车牌颜色",
+ options: sysConfig.plateColor,
+ },
+ {
+ name: "order_type",
+ type: "Select",
+ label: "订单类型",
+ defaultValue: 0,
+ options: [
+ {
+ label: "全部",
+ value: 0,
+ },
+ {
+ label: "进行中",
+ value: 1,
+ },
+ {
+ label: "待支付",
+ value: 2,
+ },
+ {
+ label: "已支付",
+ value: 3,
+ }
+ ],
+ },
+ {
+ name: "in_person",
+ type: "Input",
+ label: "入场收费员",
+ placeholder: "请输入入场收费员",
+ },
+ {
+ name: "out_person",
+ type: "Input",
+ label: "出场收费员",
+ placeholder: "请输入出场收费员",
+ },
+ {
+ name: "timePeriod",
+ type: "RangePicker",
+ label: "时间段",
+ },
+ ];
+ const initFormData = {
+ region: ["0"],
+ operator: "0",
+ road: "0",
+ road_type: 0,
+ phone: "",
+ plate: "",
+ berth_id: "",
+ type: 1,
+ park_id: "",
+ order_type: 0,
+ plate_color: -1,
+ in_person: "",
+ out_person: "",
+ };
+ //历史处理的表头
+ const historyProgressColumns = [
+ {
+ title: "序号",
+ dataIndex: "id",
+ key: "id",
+ align: "center",
+ render: (text, record, index) => index + 1,
+ },
+ {
+ title: "状态",
+ dataIndex: "status",
+ key: "status",
+ align: "center",
+ },
+ {
+ title: "处理记录ID",
+ dataIndex: "deal_record_id",
+ key: "deal_record_id",
+ align: "center",
+ },
+ {
+ title: "处理时间",
+ dataIndex: "deal_time",
+ key: "deal_time",
+ align: "center",
+ },
+ {
+ title: "处理人",
+ dataIndex: "dealer",
+ key: "dealer",
+ align: "center",
+ },
+ {
+ title: "业务订单类型",
+ dataIndex: "business_type",
+ key: "business_type",
+ align: "center",
+ },
+ {
+ title: "更改项",
+ dataIndex: "change_content",
+ key: "change_content",
+ align: "center",
+ render: (text) => {
+ return text == 1
+ ? "调整出场时间"
+ : text == 2
+ ? "变更车牌号"
+ : text == 3
+ ? "更改订单金额"
+ : text == 4
+ ? "免费该订单"
+ : "作废该订单"
+ }
+ },
+ {
+ title: "更改初始值",
+ dataIndex: "initial_value",
+ key: "initial_value",
+ align: "center",
+ },
+ {
+ title: "更改更新值",
+ dataIndex: "update_value",
+ key: "update_value",
+ align: "center",
+ },
+ {
+ title: "操作",
+ dataIndex: "operation",
+ key: "operation",
+ align: "center",
+ fixed: "right",
+ render: (_, record) => {
+ return (
+ {
+ checkHistoryDetail(record);
+ }}
+ >
+ 操作
+
+ );
+ },
+ },
+ ];
+
+
+ const h_columns = [
+ {
+ title: "停车订单ID",
+ dataIndex: "park_id",
+ key: "park_id",
+ width: 200,
+ align: "center",
+ render: (text) => (
+ <>
+ {
+ navigator.clipboard.writeText(`${text}`).then(() => {
+ message.success("已复制到剪切板");
+ });
+ }}
+ >
+ {text}
+
+ >
+ ),
+ },
+ {
+ title: "车牌号",
+ dataIndex: "plate",
+ key: "plate",
+ align: "center",
+ },
+ {
+ title: "停车场名称",
+ dataIndex: "park_name",
+ key: "park_name",
+ align: "center",
+ width: 200,
+ },
+ {
+ title: "入场时间",
+ dataIndex: "in_time",
+ key: "in_time",
+ align: "center",
+ },
+ {
+ title: "计费时间",
+ dataIndex: "admission_time",
+ key: "admission_time",
+ align: "center",
+ },
+ ];
+
+
+ const [detailVisible, setDetailVisible] = useState(false);
+ const [tableData, setTableData] = useState([]);
+ const [total, setTotal] = useState(0);
+ const [tabKey, setTabKey] = useState("1");
+ // 车场id
+ const [parkId, setParkId] = useState("");
+ //支付记录数据
+ const [payRecord, setPayRecord] = useState([]);
+ //退款订单数据
+ const [refundRecord, setRefundRecord] = useState([]);
+ //操作记录数据
+ const [operationRecord, setOperatorRecord] = useState([]);
+ //历史处理数据
+ const [historyProgressRecord, setHistoryProgressRecord] = useState([]);
+ //停车记录信息数据
+ const [parkingRecordDetail, setParkingRecordDetail] = useState({});
+ //当前的所选择的停车信息索引
+ const [recordIndex, setRecordIndex] = useState(-1);
+ //当前所选择的订单ID
+ const [currentRecordID, setCurrentRecordID] = useState("");
+ //历史记录详情Modal
+ const [historyVisible, setHistoryVisible] = useState(false);
+ //历史记录详情的弹窗查看全部
+ const [isShowAll, setIsShowAll] = useState(false);
+ //历史记录车辆图片弹窗
+ const [platePhototModal, setPlatePhotoModal] = useState(false);
+ //历史记录详情数据
+ const [historyDataDetail, setHistoryDataDetail] = useState({});
+ const [DataDetail, setDataDetail] = useState({});
+ function openModal(index, record) {
+ setDetailVisible(true);
+ setParkingRecordDetail(record);
+ setHistoryDataDetail(record)
+ setRecordIndex(index);
+ }
+
+ const handleImgError = (e) => {
+ let evn = e || event
+ let img = evn.srcElement ? evn.srcElement : evn.target
+ img.src = errorImg
+ }
+
+ function changeKey(key) {
+ setTabKey(key);
+ switch (key) {
+ case "2":
+ getPaymentRecord(currentRecordID);
+ break;
+ case "3":
+ getRefundRecord(currentRecordID);
+ break;
+ case "4":
+ getOperateRecord(currentRecordID);
+ break;
+ case "5":
+ getHistoryRecord(currentRecordID);
+ break;
+ default:
+ break;
+ }
+ }
+ function renderParkRecord(item) {
+ return (
+ item && (
+
+
+ {item.road}
+ {item.berth_id}
+ {item.region}
+ {item.operator}
+ {item.road_type}
+
+
+ {item.plate}
+ {item.phone}
+ {item.in_time}
+ {item.out_time}
+ {item.admission_time}
+ {item.order_amount}
+ {item.parking_card_discount}
+
+ {item.road_discount}
+
+
+ {item.receivable_amount}
+
+ {item.coupon }
+
+ {item.preferential_amount}
+
+
+ {item.actual_amount}
+
+
+ {item.refund_discount}
+
+
+ {item.actual_refund}
+
+
+ {item.refund_total}
+
+
+ {item.in_person}
+
+
+ {item.out_person}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
+ );
+ }
+ //查看历史详情
+ const [getHistoryData,setGetHistoryData]=useState({})
+ function checkHistoryDetail(record) {
+ setGetHistoryData(record);
+ setHistoryVisible(true);
+ }
+ function renderModalTable(columns, dataSource) {
+ return (
+
+ );
+ }
+ //获取订单的支付记录
+ function getPaymentRecord(park_id) {
+ ajax.getPaymentRecord({ park_record_id: park_id }).then((res) => {
+ if (res.status === 20000) {
+ setPayRecord(res.data.list);
+ }
+ });
+ }
+ //获取退款订单的接口
+ function getRefundRecord(park_id) {
+ ajax.getRefundRecord({ park_id }).then((res) => {
+ if (res.status === 20000) {
+ setRefundRecord(res.data.list);
+ }
+ });
+ }
+ //获取操作处理的接口
+ function getOperateRecord(park_id) {
+ ajax.getOperateRecord({ park_record_id: park_id }).then((res) => {
+ if (res.status === 20000) {
+ setOperatorRecord(res.data.list);
+ }
+ });
+ }
+ //获取历史处理记录的接口
+ function getHistoryRecord(park_id) {
+ ajax.getHistoryRecord({ park_record_id: park_id }).then((res) => {
+ if (res.status === 20000) {
+ // res.data.list.map(res=>{
+ setHistoryProgressRecord(res.data.list);
+ // })
+ }
+ });
+ }
+
+ //获取函数
+ function search(params) {
+ utils.tableScrollTop("parent-table-scroll")
+ ajax.getParkingList(params).then((res) => {
+ if (res.status === 20000) {
+ setTableData(res.data.list);
+ setTotal(res.data.total);
+ }else{
+ message.error(res.message)
+ }
+ });
+ }
+ useEffect(() => {
+ // setParkingRecordDetail(tableData[recordIndex]);
+ setCurrentRecordID(tableData[recordIndex]?.park_id || "");
+ }, [recordIndex]);
+
+ return (
+ <>
+
+ {
+ setDetailVisible(false);
+ setTabKey("1");
+ }}
+ destroyOnClose
+ >
+
+
+ {renderParkRecord(parkingRecordDetail)}
+
+
+ {renderModalTable(payRecordColumns, payRecord)}
+
+
+ {renderModalTable(refundRecordColumns, refundRecord)}
+
+
+ {renderModalTable(operatorRecordColumns, operationRecord)}
+
+
+ {renderModalTable(historyProgressColumns, historyProgressRecord)}
+
+
+ {
+ setHistoryVisible(false);
+ }}
+ className="hanleHistoyModal"
+ footer={null}
+ width={1000}
+ >
+
+
+
+ {historyDataDetail?.road}
+
+
+ {historyDataDetail.region}
+
+
+ {historyDataDetail.operator}
+
+
+ {historyDataDetail.berth_id}
+
+
+ {historyDataDetail.road_type}
+
+
+
+
+ {historyDataDetail.plate}
+
+
+ {historyDataDetail.admission_time}
+
+
+ {historyDataDetail.in_time}
+
+
+ {historyDataDetail.out_time}
+
+
+ {historyDataDetail.in_source}
+
+
+ {historyDataDetail.out_source}
+
+
+ {
+ setPlatePhotoModal(true);
+ }}
+ >
+ 查看
+
+
+
+
+
+ {historyDataDetail.order_amount}
+
+
+ {historyDataDetail.preferential_total}
+
+
+ {historyDataDetail.actual_amount}
+
+
+ {historyDataDetail.arrears_mount}
+
+
+ {
+ setIsShowAll(false);
+ }}
+ >
+ 返回
+
+ ) : (
+ {
+ setIsShowAll(true);
+ }}
+ >
+ 查看全部
+
+ )
+ }
+ >
+
+
+
+
+ {isShowAll ? (
+
+
+
+
+
+
+
+
申诉处理审核: 已完成
+
+
{getHistoryData.examine_time}
+
来源:平台
+
操作人:{getHistoryData.dealer}
+
+
+
+
+
+
申诉处理提审
+
+
+
操作项
+
+ {getHistoryData?.change_content == 1
+ ? "调整出场时间"
+ : getHistoryData?.change_content == 2
+ ? "变更车牌号"
+ : getHistoryData?.change_content == 3
+ ? "更改订单金额"
+ : getHistoryData?.change_content == 4
+ ? "免费该订单"
+ : "作废该订单"}
+
+
{getHistoryData.deal_time}
+
+
+
初始值
+
{getHistoryData.initial_value || "--"}
+
来源:平台
+
+
+
变更值
+
{getHistoryData.update_value || "--"}
+
{getHistoryData.dealer}
+
+
+
+
+
+
+
+
+ ) : (
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {getHistoryData.change_content == 1 ? (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ ) : getHistoryData.change_content == 2 ? (
+
+
+
+
+
+
+
+
+ ) : getHistoryData.change_content == 3 ? (
+ <>
+
+
+
+
+
+
+
+
+
+ >
+ ) : null}
+
+
+
+ )}
+ {
+ setPlatePhotoModal(false);
+ }}
+ footer={false}
+ className="modal-img"
+ >
+
+
+
+
+ >
+ );
+}
+
+export default OrderRuleMgm;
diff --git a/src/pages/NewEnergy/ChargingMgm/index.jsx b/src/pages/NewEnergy/ChargingMgm/index.jsx
new file mode 100644
index 0000000..67bddb3
--- /dev/null
+++ b/src/pages/NewEnergy/ChargingMgm/index.jsx
@@ -0,0 +1,8 @@
+import BillingRule from './BillingRule'
+import OrderRuleMgm from './OrderRuleMgm'
+
+
+export default {
+ BillingRule,
+ OrderRuleMgm
+}
\ No newline at end of file
diff --git a/src/pages/NewEnergy/index.jsx b/src/pages/NewEnergy/index.jsx
index e69de29..b3d4da8 100644
--- a/src/pages/NewEnergy/index.jsx
+++ b/src/pages/NewEnergy/index.jsx
@@ -0,0 +1,5 @@
+import ChargingMgm from './ChargingMgm'
+
+export default {
+ ...ChargingMgm
+}
\ No newline at end of file
diff --git a/src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/loadable.jsx b/src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/loadable.jsx
index 24a5e7b..fac1251 100644
--- a/src/pages/OperationCenter/CustomerServieMgm/CallbackSuggestion/loadable.jsx
+++ b/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) {
共检索到{resultData.total_records}条结果
- { exportData() }}>
+ {/* { exportData() }}>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total_records}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={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) {
>
设置
- {
exportData();
}}
>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={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() {
{resultData.total}
条结果
- 导出
+ {/* 导出 */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={handleExport}
+ />
{
+ 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) {
共检索到{resultData.total}条结果
- { exportData() }}>
+ {/* { exportData() }}>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={handleExport}
+ />
diff --git a/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardOrder/loadable.jsx b/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardOrder/loadable.jsx
index 56154a1..997e48b 100644
--- a/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardOrder/loadable.jsx
+++ b/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}}>
添加
- { ReportPaySummaryReport()}}
// style={{background:"#fff",color:'#59b7ff',height:'100%'}}
>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={ReportPaySummaryReport}
+ />
diff --git a/src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredOrder/loadable.jsx b/src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredOrder/loadable.jsx
index bafa9d2..cc9bf43 100644
--- a/src/pages/OperationCenter/OtherBusiness/Staggered/StaggeredOrder/loadable.jsx
+++ b/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) {
共检索到{resultData.total_records}条结果
- { exportData() }}>
+ {/* { exportData() }}>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total_records}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={exportData}
+ />
{
@@ -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) {
共检索到{resultData.total_records}条结果
- { exportData() }}>
+ {/* { exportData() }}>
导出
-
+ */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={resultData.total_records}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={exportData}
+ />
>
diff --git a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss
index 5936f86..226d76f 100644
--- a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/index.scss
+++ b/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;
}
diff --git a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx b/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx
index a7cb763..bb1c50a 100644
--- a/src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx
+++ b/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() {
>
评价批量配置
- 导出
+ {/* 导出 */}
+ 导出}
+ modalType="noImg"
+ ref={exportRef}
+ totalRecords={total}
+ imgno={false}
+ postdata={{
+ formData: formData
+ }}
+ isTableModule={true}
+ onOk={handleExport}
+ />
{
+ return ajax({
+ url: "/api/ope/app_manage/get_menu_list",
+ type: "post",
+ data: params,
+ });
+};
+
+export default{
+ getWechatMenuList
+}
\ No newline at end of file
diff --git a/src/services/NewEnergy/index.js b/src/services/NewEnergy/index.js
new file mode 100644
index 0000000..d1a45b4
--- /dev/null
+++ b/src/services/NewEnergy/index.js
@@ -0,0 +1,5 @@
+import chargingMgm from './chargingMgm'
+
+export default {
+ ...chargingMgm
+}
\ No newline at end of file