Browse Source

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

tags/PMS_V1.0.0_Alpha5
陈宇航 1 year ago
parent
commit
aa24c5095b
  1. 6
      src/pages/InRoadMgm/PersonMgm/PersonInfo/loadable.jsx
  2. 2
      src/pages/Nav/index.scss
  3. 0
      src/pages/NewEnergy/ChargeBusinessMgm/index.jsx
  4. 0
      src/pages/NewEnergy/ChargeDeviceMgm/index.jsx
  5. 0
      src/pages/NewEnergy/ChargeStationMgm/index.jsx
  6. 1051
      src/pages/NewEnergy/ChargingMgm/BillingRule/loadable.jsx
  7. 1051
      src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/loadable.jsx
  8. 0
      src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/dataSource.js
  9. 6
      src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/index.jsx
  10. 238
      src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/index.scss
  11. 1126
      src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/loadable.jsx
  12. 0
      src/pages/NewEnergy/RealtimeMonitor/LockMonitor/dataSource.js
  13. 6
      src/pages/NewEnergy/RealtimeMonitor/LockMonitor/index.jsx
  14. 238
      src/pages/NewEnergy/RealtimeMonitor/LockMonitor/index.scss
  15. 177
      src/pages/NewEnergy/RealtimeMonitor/LockMonitor/loadable.jsx
  16. 183
      src/pages/NewEnergy/RealtimeMonitor/PileMonitor/dataSource.js
  17. 6
      src/pages/NewEnergy/RealtimeMonitor/PileMonitor/index.jsx
  18. 238
      src/pages/NewEnergy/RealtimeMonitor/PileMonitor/index.scss
  19. 177
      src/pages/NewEnergy/RealtimeMonitor/PileMonitor/loadable.jsx
  20. 10
      src/pages/NewEnergy/RealtimeMonitor/index.jsx
  21. 6
      src/pages/NewEnergy/RecordsInquiry/Appointment/index.jsx
  22. 238
      src/pages/NewEnergy/RecordsInquiry/Appointment/index.scss
  23. 231
      src/pages/NewEnergy/RecordsInquiry/Appointment/loadable.jsx
  24. 6
      src/pages/NewEnergy/RecordsInquiry/Charge/index.jsx
  25. 238
      src/pages/NewEnergy/RecordsInquiry/Charge/index.scss
  26. 231
      src/pages/NewEnergy/RecordsInquiry/Charge/loadable.jsx
  27. 6
      src/pages/NewEnergy/RecordsInquiry/Unlocking/index.jsx
  28. 238
      src/pages/NewEnergy/RecordsInquiry/Unlocking/index.scss
  29. 181
      src/pages/NewEnergy/RecordsInquiry/Unlocking/loadable.jsx
  30. 6
      src/pages/NewEnergy/RecordsInquiry/Violation/index.jsx
  31. 238
      src/pages/NewEnergy/RecordsInquiry/Violation/index.scss
  32. 231
      src/pages/NewEnergy/RecordsInquiry/Violation/loadable.jsx
  33. 13
      src/pages/NewEnergy/RecordsInquiry/index.jsx
  34. 6
      src/pages/NewEnergy/index.jsx
  35. 8
      src/pages/OutRoadMgm/OutDeviceMgm/OutMonitorMgm/loadable.jsx
  36. 177
      src/pages/OutRoadMgm/OutExceptionMgm/PlateChangeMgm/index.jsx
  37. 185
      src/pages/OutRoadMgm/OutExceptionMgm/PlateChangeMgm/index.scss
  38. 193
      src/pages/OutRoadMgm/OutExceptionMgm/SpecialReleaseMgm/index.jsx
  39. 4
      src/pages/OutRoadMgm/OutExceptionMgm/ZombieCarCleanRecord/loadable.jsx
  40. 2
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx
  41. 4
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarManagement.jsx
  42. 6
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/Detail.jsx
  43. 2
      src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/loadable.jsx
  44. 42
      src/router/router.config.js
  45. 9
      src/services/InroadMgm/PersonMgm/index.js
  46. 4
      src/services/NewEnergy/index.js
  47. 14
      src/services/NewEnergy/realtimeMonitor.js
  48. 33
      src/services/OutRoadMgm/OutExceptionMgm/index.js
  49. 2
      src/services/OutRoadMgm/index.js
  50. 4
      src/services/index.js
  51. 27
      src/services/search.js

6
src/pages/InRoadMgm/PersonMgm/PersonInfo/loadable.jsx

@ -238,7 +238,11 @@ function PersonInfo() {
const getAssets = (id, editFlag) => {
if (id) {
ajax.getAssets({ id: id }).then(res => {
let temp_params = {id: id}
if(showEdit || editFlag){
temp_params.user_id = currentPersonId
}
ajax.getUserGoods(temp_params).then(res => {
if (res.status == 20000) {
if (showEdit || editFlag) {
let temparr = [];

2
src/pages/Nav/index.scss

@ -16,7 +16,7 @@
align-items: center;
}
.nav-contanier{
width: 1600px;
width: 1510px;
height: 710px;
display: flex;
flex-direction: row;

0
src/pages/NewEnergy/ChargeBusinessMgm/index.jsx

0
src/pages/NewEnergy/ChargeDeviceMgm/index.jsx

0
src/pages/NewEnergy/ChargeStationMgm/index.jsx

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

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

0
src/pages/NewEnergy/ChargingMgm/BillingRule/dataSource.js → src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/dataSource.js

6
src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/index.jsx

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

238
src/pages/NewEnergy/RealtimeMonitor/ChargerMonitor/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/RealtimeMonitor/ChargerMonitor/loadable.jsx
File diff suppressed because it is too large
View File

0
src/pages/NewEnergy/ChargingMgm/OrderRuleMgm/dataSource.js → src/pages/NewEnergy/RealtimeMonitor/LockMonitor/dataSource.js

6
src/pages/NewEnergy/RealtimeMonitor/LockMonitor/index.jsx

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

238
src/pages/NewEnergy/RealtimeMonitor/LockMonitor/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;
}
}

177
src/pages/NewEnergy/RealtimeMonitor/LockMonitor/loadable.jsx

@ -0,0 +1,177 @@
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 errorImg from "@/assets/images/layout/error.png"
// import { useLocation } from "react-router-dom";
const { TextArea } = Input;
let array = [];
function PileMonitor() {
const formSearch = [
{
name: "device_name",
type: "Input",
label: "设备名称",
placeholder:"请输入"
},
{
name: "device_num",
type: "Input",
label: "设备编码",
placeholder:"请输入"
},
{
name: "device_state",
type: "Select",
label: "设备状态",
defaultValue: 0,
options: sysConfig.energyDeviceType,
},
{
name: "lock_state",
type: "Select",
label: "车位锁状态",
defaultValue: 0,
options: sysConfig.energyLockState,
},
];
const initFormData = {
device_name:"",
device_num:""
};
//
const columns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "设备名称",
dataIndex: "device_name",
key: "device_name",
align: "center",
},
{
title: "设备编码",
dataIndex: "device_num",
key: "device_num",
align: "center",
},
{
title: "设备类型",
dataIndex: "device_type",
key: "device_type",
align: "center",
},
{
title: "设备供应商",
dataIndex: "device_vendor",
key: "device_vendor",
align: "center",
},
{
title: "对接平台",
dataIndex: "platform",
key: "platform",
align: "center",
},
{
title: "车位锁状态",
dataIndex: "lock_state_name",
key: "lock_state_name",
align: "center",
},
{
title: "设备状态",
dataIndex: "device_state_name",
key: "device_state_name",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
render: (_, record) => {
return (
<Button
type="primary"
>
操作
</Button>
);
},
},
];
const [tableData, setTableData] = useState([]);
const [total, setTotal] = useState(0);
//
function search(params) {
utils.tableScrollTop("parent-table-scroll")
ajax.getPileMonitor(params).then((res) => {
if (res.status === 20000) {
setTableData(res.data.list);
setTotal(res.data.total);
}else{
message.error(res.message)
}
});
}
return (
<>
<TableModule
columns={columns}
tableData={tableData}
formSearch={formSearch}
pagename="电桩监控"
// mandatory={['plate','berth_id']}
// mandatory_name={['']}
pageName={'pileMonitor'}
initFormData={initFormData}
total={total}
search={search}
// exportUrl="/api/bpm/record/get_record_export"
/>
</>
);
}
export default PileMonitor;

183
src/pages/NewEnergy/RealtimeMonitor/PileMonitor/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/RealtimeMonitor/PileMonitor/index.jsx

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

238
src/pages/NewEnergy/RealtimeMonitor/PileMonitor/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;
}
}

177
src/pages/NewEnergy/RealtimeMonitor/PileMonitor/loadable.jsx

@ -0,0 +1,177 @@
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 errorImg from "@/assets/images/layout/error.png"
// import { useLocation } from "react-router-dom";
const { TextArea } = Input;
let array = [];
function PileMonitor() {
const formSearch = [
{
name: "device_name",
type: "Input",
label: "设备名称",
placeholder:"请输入"
},
{
name: "device_num",
type: "Input",
label: "设备编码",
placeholder:"请输入"
},
{
name: "device_state",
type: "Select",
label: "设备状态",
defaultValue: 0,
options: sysConfig.energyDeviceType,
},
{
name: "lock_state",
type: "Select",
label: "车位锁状态",
defaultValue: 0,
options: sysConfig.energyLockState,
},
];
const initFormData = {
device_name:"",
device_num:""
};
//
const columns = [
{
title: "序号",
dataIndex: "id",
key: "id",
align: "center",
render: (text, record, index) => index + 1,
},
{
title: "设备名称",
dataIndex: "device_name",
key: "device_name",
align: "center",
},
{
title: "设备编码",
dataIndex: "device_num",
key: "device_num",
align: "center",
},
{
title: "设备类型",
dataIndex: "device_type",
key: "device_type",
align: "center",
},
{
title: "设备供应商",
dataIndex: "device_vendor",
key: "device_vendor",
align: "center",
},
{
title: "对接平台",
dataIndex: "platform",
key: "platform",
align: "center",
},
{
title: "车位锁状态",
dataIndex: "lock_state_name",
key: "lock_state_name",
align: "center",
},
{
title: "设备状态",
dataIndex: "device_state_name",
key: "device_state_name",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
render: (_, record) => {
return (
<Button
type="primary"
>
操作
</Button>
);
},
},
];
const [tableData, setTableData] = useState([]);
const [total, setTotal] = useState(0);
//
function search(params) {
utils.tableScrollTop("parent-table-scroll")
ajax.getPileMonitor(params).then((res) => {
if (res.status === 20000) {
setTableData(res.data.list);
setTotal(res.data.total);
}else{
message.error(res.message)
}
});
}
return (
<>
<TableModule
columns={columns}
tableData={tableData}
formSearch={formSearch}
pagename="电桩监控"
// mandatory={['plate','berth_id']}
// mandatory_name={['']}
pageName={'pileMonitor'}
initFormData={initFormData}
total={total}
search={search}
// exportUrl="/api/bpm/record/get_record_export"
/>
</>
);
}
export default PileMonitor;

10
src/pages/NewEnergy/RealtimeMonitor/index.jsx

@ -0,0 +1,10 @@
import ChargerMonitor from "./ChargerMonitor"
import LockMonitor from "./LockMonitor"
import PileMonitor from "./PileMonitor"
export default {
ChargerMonitor,
LockMonitor,
PileMonitor
}

6
src/pages/NewEnergy/RecordsInquiry/Appointment/index.jsx

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

238
src/pages/NewEnergy/RecordsInquiry/Appointment/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;
}
}

231
src/pages/NewEnergy/RecordsInquiry/Appointment/loadable.jsx

@ -0,0 +1,231 @@
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 } from "@/config/common";
import ajax from "@/services";
import { TableModule } from "@/components";
import "./index.scss";
const { TextArea } = Input;
function Appointment() {
//
const [detailVisible, setDetailVisible] = useState(false);
//
const [tableData, setTableData] = useState([]);
//
const [total, setTotal] = useState(0);
//
const [detailData, setDetailData] = useState({});
//
const initFormData = {
operator: "0",
rule_name: "",
};
const columns = [
{
title: "用户手机号",
dataIndex: "operator",
key: "operator",
align: "center",
},
{
title: "车牌号",
dataIndex: "plate",
key: "plate",
align: "center",
},
{
title: "充电站",
dataIndex: "plate_color",
key: "plate_color",
align: "center",
},
{
title: "商户名称",
dataIndex: "berth_id",
key: "berth_id",
align: "center",
},
{
title: "降预约开始时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "预约截至时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "缴纳预约费用金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "缴费时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "订单状态",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "订单完结时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "预约费用退款金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "顶动感实收金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
width: 100,
render: (text, record, index) => {
return (
<>
<Button type="primary" onClick={() => openModal(index, record)}>
详情
</Button>
</>
)
},
},
];
const formSearch = [
{
name: "phone",
type: "Input",
label: "用户手机号",
placeholder: "请输入用户手机号",
},
{
name: "plate",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "charging",
type: "Input",
label: "充电站",
placeholder: "请输入充电站",
},
{
name: "operator",
type: "Select",
label: "商户名称",
defaultValue: "0",
placeholder: "请选择商户名称",
},
{
name: "timeStart",
type: "DateRangePicker",
label: "预约开始时间",
},
{
name: "timeEnd",
type: "DateRangePicker",
label: "订单完结时间",
},
];
//
const openModal = (index, record) => {
setDetailData(record)
setDetailVisible(true);
}
//
const search = (params) => {
ajax.getParkingList(params).then((res) => {
if (res.status === 20000) {
setTableData(res.data.list);
setTotal(res.data.total);
} else {
message.error(res.message)
}
});
}
const handelAdd = () => {
setDetailVisible(true)
}
return (
<>
<TableModule
showSerial={true}
isExport={false}
diyButton={
<Button
type="primary"
onClick={handelAdd}
>
新增
</Button>
}
columns={columns}
tableData={tableData}
formSearch={formSearch}
pagename="预约订单"
pageName={'Appointment'}
initFormData={initFormData}
total={total}
search={search}
exportUrl="/api/bpm/record/get_record_export"
/>
<Modal
open={detailVisible}
width={800}
className="totalModal"
onCancel={() => {
setDetailVisible(false);
}}
destroyOnClose
>
</Modal>
</>
);
}
export default Appointment;

6
src/pages/NewEnergy/RecordsInquiry/Charge/index.jsx

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

238
src/pages/NewEnergy/RecordsInquiry/Charge/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;
}
}

231
src/pages/NewEnergy/RecordsInquiry/Charge/loadable.jsx

@ -0,0 +1,231 @@
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 } from "@/config/common";
import ajax from "@/services";
import { TableModule } from "@/components";
import "./index.scss";
const { TextArea } = Input;
function Charge() {
//
const [detailVisible, setDetailVisible] = useState(false);
//
const [tableData, setTableData] = useState([]);
//
const [total, setTotal] = useState(0);
//
const [detailData, setDetailData] = useState({});
//
const initFormData = {
operator: "0",
rule_name: "",
};
const columns = [
{
title: "用户手机号",
dataIndex: "operator",
key: "operator",
align: "center",
},
{
title: "车牌号",
dataIndex: "plate",
key: "plate",
align: "center",
},
{
title: "充电站",
dataIndex: "plate_color",
key: "plate_color",
align: "center",
},
{
title: "商户名称",
dataIndex: "berth_id",
key: "berth_id",
align: "center",
},
{
title: "降预约开始时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "预约截至时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "缴纳预约费用金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "缴费时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "订单状态",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "订单完结时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "预约费用退款金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "顶动感实收金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
width: 100,
render: (text, record, index) => {
return (
<>
<Button type="primary" onClick={() => openModal(index, record)}>
详情
</Button>
</>
)
},
},
];
const formSearch = [
{
name: "phone",
type: "Input",
label: "用户手机号",
placeholder: "请输入用户手机号",
},
{
name: "plate",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "charging",
type: "Input",
label: "充电站",
placeholder: "请输入充电站",
},
{
name: "operator",
type: "Select",
label: "商户名称",
defaultValue: "0",
placeholder: "请选择商户名称",
},
{
name: "timeStart",
type: "DateRangePicker",
label: "预约开始时间",
},
{
name: "timeEnd",
type: "DateRangePicker",
label: "订单完结时间",
},
];
//
const openModal = (index, record) => {
setDetailData(record)
setDetailVisible(true);
}
//
const search = (params) => {
ajax.getParkingList(params).then((res) => {
if (res.status === 20000) {
setTableData(res.data.list);
setTotal(res.data.total);
} else {
message.error(res.message)
}
});
}
const handelAdd = () => {
setDetailVisible(true)
}
return (
<>
<TableModule
showSerial={true}
isExport={false}
diyButton={
<Button
type="primary"
onClick={handelAdd}
>
新增
</Button>
}
columns={columns}
tableData={tableData}
formSearch={formSearch}
pagename="预约订单"
pageName={'Appointment'}
initFormData={initFormData}
total={total}
search={search}
exportUrl="/api/bpm/record/get_record_export"
/>
<Modal
open={detailVisible}
width={800}
className="totalModal"
onCancel={() => {
setDetailVisible(false);
}}
destroyOnClose
>
</Modal>
</>
);
}
export default Charge;

6
src/pages/NewEnergy/RecordsInquiry/Unlocking/index.jsx

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

238
src/pages/NewEnergy/RecordsInquiry/Unlocking/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;
}
}

181
src/pages/NewEnergy/RecordsInquiry/Unlocking/loadable.jsx

@ -0,0 +1,181 @@
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 } from "@/config/common";
import ajax from "@/services";
import { TableModule } from "@/components";
import "./index.scss";
const { TextArea } = Input;
function UnlockingRecord() {
//
const [detailVisible, setDetailVisible] = useState(false);
//
const [tableData, setTableData] = useState([]);
//
const [total, setTotal] = useState(0);
//
const [detailData, setDetailData] = useState({});
//
const initFormData = {
operator: "0",
rule_name: "",
};
const formSearch = [
{
name: "tel_number",
type: "Input",
label: "手机号",
placeholder: "请输入手机号",
},
{
name: "tel_number",
type: "Input",
label: "充电站",
placeholder: "请输入充电站",
},
{
name: "tel_number",
type: "Input",
label: "地锁名称",
placeholder: "请输入地锁名称",
},
{
name: "timePeriod",
type: "RangePicker",
label: "开锁时间范围",
},
]; //
const columns = [
{
title: "运营商名称",
dataIndex: "operator",
key: "operator",
align: "center",
},
{
title: "规则名称",
dataIndex: "plate",
key: "plate",
align: "center",
},
{
title: "规则编码",
dataIndex: "plate_color",
key: "plate_color",
align: "center",
},
{
title: "创建人",
dataIndex: "berth_id",
key: "berth_id",
width: 100,
align: "center",
},
{
title: "创建时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
width: 100,
render: (text, record, index) => {
return (
<>
<Button type="primary" onClick={() => openModal(index, record)}>
详情
</Button>
</>
)
},
},
]; //
//
const openModal = (index, record) => {
setDetailData(record)
setDetailVisible(true);
}
//
const search = (params) => {
ajax.getParkingList(params).then((res) => {
if (res.status === 20000) {
setTableData(res.data.list);
setTotal(res.data.total);
} else {
message.error(res.message)
}
});
}
const handelAdd = () => {
setDetailVisible(true)
}
return (
<>
<TableModule
showSerial={true}
isExport={false}
diyButton={
<Button
type="primary"
onClick={handelAdd}
>
新增
</Button>
}
columns={columns}
tableData={tableData}
formSearch={formSearch}
pagename="停车记录查询"
pageName={'AppointmentRecord'}
initFormData={initFormData}
total={total}
search={search}
exportUrl="/api/bpm/record/get_record_export"
/>
<Modal
open={detailVisible}
width={1500}
className="totalModal"
onCancel={() => {
setDetailVisible(false);
}}
destroyOnClose
>
</Modal>
</>
);
}
export default UnlockingRecord;

6
src/pages/NewEnergy/RecordsInquiry/Violation/index.jsx

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

238
src/pages/NewEnergy/RecordsInquiry/Violation/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;
}
}

231
src/pages/NewEnergy/RecordsInquiry/Violation/loadable.jsx

@ -0,0 +1,231 @@
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 } from "@/config/common";
import ajax from "@/services";
import { TableModule } from "@/components";
import "./index.scss";
const { TextArea } = Input;
function Violation() {
//
const [detailVisible, setDetailVisible] = useState(false);
//
const [tableData, setTableData] = useState([]);
//
const [total, setTotal] = useState(0);
//
const [detailData, setDetailData] = useState({});
//
const initFormData = {
operator: "0",
rule_name: "",
};
const columns = [
{
title: "用户手机号",
dataIndex: "operator",
key: "operator",
align: "center",
},
{
title: "车牌号",
dataIndex: "plate",
key: "plate",
align: "center",
},
{
title: "充电站",
dataIndex: "plate_color",
key: "plate_color",
align: "center",
},
{
title: "商户名称",
dataIndex: "berth_id",
key: "berth_id",
align: "center",
},
{
title: "降预约开始时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "预约截至时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "缴纳预约费用金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "缴费时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "订单状态",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "订单完结时间",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "预约费用退款金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "顶动感实收金额",
dataIndex: "in_time",
key: "in_time",
align: "center",
},
{
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
width: 100,
render: (text, record, index) => {
return (
<>
<Button type="primary" onClick={() => openModal(index, record)}>
详情
</Button>
</>
)
},
},
];
const formSearch = [
{
name: "phone",
type: "Input",
label: "用户手机号",
placeholder: "请输入用户手机号",
},
{
name: "plate",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "charging",
type: "Input",
label: "充电站",
placeholder: "请输入充电站",
},
{
name: "operator",
type: "Select",
label: "商户名称",
defaultValue: "0",
placeholder: "请选择商户名称",
},
{
name: "timeStart",
type: "DateRangePicker",
label: "预约开始时间",
},
{
name: "timeEnd",
type: "DateRangePicker",
label: "订单完结时间",
},
];
//
const openModal = (index, record) => {
setDetailData(record)
setDetailVisible(true);
}
//
const search = (params) => {
ajax.getParkingList(params).then((res) => {
if (res.status === 20000) {
setTableData(res.data.list);
setTotal(res.data.total);
} else {
message.error(res.message)
}
});
}
const handelAdd = () => {
setDetailVisible(true)
}
return (
<>
<TableModule
showSerial={true}
isExport={false}
diyButton={
<Button
type="primary"
onClick={handelAdd}
>
新增
</Button>
}
columns={columns}
tableData={tableData}
formSearch={formSearch}
pagename="预约订单"
pageName={'Appointment'}
initFormData={initFormData}
total={total}
search={search}
exportUrl="/api/bpm/record/get_record_export"
/>
<Modal
open={detailVisible}
width={800}
className="totalModal"
onCancel={() => {
setDetailVisible(false);
}}
destroyOnClose
>
</Modal>
</>
);
}
export default Violation;

13
src/pages/NewEnergy/RecordsInquiry/index.jsx

@ -0,0 +1,13 @@
import Appointment from './Appointment'
import Charge from './Charge'
import Violation from './Violation'
import Unlocking from './Unlocking'
export default {
Appointment,
Charge,
Violation,
Unlocking
}

6
src/pages/NewEnergy/index.jsx

@ -1,7 +1,11 @@
import ChargingMgm from './ChargingMgm'
import NewEnergyOverview from './NewEnergyOverview'
import RecordsInquiry from './RecordsInquiry'
import RealtimeMonitor from './RealtimeMonitor'
export default {
NewEnergyOverview,
...ChargingMgm
...RealtimeMonitor,
...ChargingMgm,
...RecordsInquiry,
}

8
src/pages/OutRoadMgm/OutDeviceMgm/OutMonitorMgm/loadable.jsx

@ -139,7 +139,7 @@ function OutMonitorMgm(props) {
setDefaultParams({ ...postData, ...pageInfo });
// console.log(postData);
setTabLoading(true);
ajax.getMonitorList({ ...postData, ...v, ...pageInfo , data_source:2}).then( // data_source
ajax.getOutMonitorList({ ...postData, ...v, ...pageInfo , data_source:2}).then( // data_source
(res) => {
if (parseInt(res?.status) === 20000) {
setResultData(res?.data || {});
@ -403,7 +403,7 @@ function OutMonitorMgm(props) {
message.error("请选择泊位");
return;
}
ajax[values?.id ? "monitorEdit" : "monitorAdd"]({
ajax[values?.id ? "monitorOutEdit" : "monitorOutAdd"]({
...values,
berth_ids: rowData?.berth_ids,
}).then(
@ -436,7 +436,7 @@ function OutMonitorMgm(props) {
//
const downloadTemplate = (e) => {
//
ajax.monitorAdd().then(
ajax.monitorOutAdd().then(
(res) => {
if (res.status === 20000 && res?.data) {
window.location.href = res?.data;
@ -515,7 +515,7 @@ function OutMonitorMgm(props) {
message.error("请上传文件");
return;
}
ajax.monitorAdd({ files: fileList }).then(
ajax.monitorOutAdd({ files: fileList }).then(
(res) => {
if (res?.status == 20000) {
message.success(res?.message);

177
src/pages/OutRoadMgm/OutExceptionMgm/PlateChangeMgm/index.jsx

@ -13,111 +13,137 @@ import {
Timeline
} from "antd";
import moment from "moment";
import ajax from '@/services'
import ajax from "@/services";
import { TableModule } from "@/components";
import { dictionary } from "@/config/common.js";
import "./index.scss";
//plateChangeMgm
function PlateChangeMgm() {
const [resultData, setResultData] = useState([])
const [detailData, setDetailData] = useState({})
const [visible, setVisible] = useState(false)
const [total, setTotal] = useState(0);
const [searchSelectList, setSearchSelectList] = useState([]); //
const columns = [
{
title: "停车场名称",
title: "序号",
dataIndex: "index",
key: "index",
align: "center",
fixed: "right",
render: (text, record, index) => index + 1,
},
{
title: "车场名称",
dataIndex: "road_name",
key: "road_name",
align: "center",
fixed: "right",
},
{
title: "泊位总数",
dataIndex: "total_berths",
key: "total_berths",
title: "修正前车牌",
dataIndex: "plate_old",
key: "plate_old",
align: "center",
fixed: "right",
},
{
title: "停车记录数(次)",
dataIndex: "record_count",
key: "record_count",
title: "修正后车牌",
dataIndex: "plate_new",
key: "plate_new",
align: "center",
fixed: "right",
},
{
title: "订单应收金额(元)",
dataIndex: "receivable_amount",
key: "receivable_amount",
title: "修正时间",
dataIndex: "create_time",
key: "create_time",
align: "center",
fixed: "right",
},
{
title: "日均泊位周转次数(次)",
dataIndex: "average_turn_times",
key: "average_turn_times",
title: "修正类型",
dataIndex: "correct_type_name",
key: "correct_type_name",
align: "center",
fixed: "right",
},
{
title: "平均泊位利用率",
dataIndex: "average_use_rate",
key: "average_use_rate",
title: "操作人",
dataIndex: "operatename",
key: "operatename",
align: "center",
fixed: "right",
},
{
title: "平均停车时长",
dataIndex: "average_park_time",
key: "average_park_time",
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
render: (_, record) => {
return (
<Button
type="primary"
onClick={() => {
getDetailData(record.id)
}}
>
详情
</Button>
);
},
},
];
//
const formSearch = [
{
name: "operator_id",
type: "Select",
label: "修正类型",
options: [],
name: "road_name",
type: "Input",
label: "车场名称",
placeholder: "请输入车场名称",
},
{
name: "car_parking_type",
name: "plate",
type: "Input",
label: "车牌号",
placeholder: "请输入车牌号",
},
{
name: "correct_type",
type: "Select",
label: "车场类型",
label: "修正类型",
defaultValue: "0",
options: [
{
label: '全部',
value: '3',
value: '0',
},
{
label: '路内车场',
label: '入场修正',
value: '1',
},
{
label: '路外车场',
label: '场中修正',
value: '2',
},
{
label: '出场修改',
value: '3',
},
],
},
{
name: "road_name",
type: "Input",
label: "停车场",
placeholder: "请输入停车场名称",
},
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ["修正时间", "至"],
defaultValue: [moment().startOf("day"), moment()],
},
];
//
function search(e) {
ajax.getParkingAlyReportList(e).then((res) => {
ajax.getPlateChangeList(e).then((res) => {
let { status, data, total } = res
if (status == 20000) {
if (data.list) {
@ -134,22 +160,51 @@ function PlateChangeMgm() {
})
}
//
const getSelectList = () => {
ajax.getOperator().then((e) => {
setSearchSelectList([
...searchSelectList,
...e.data
])
//
function getDetailData(e) {
ajax.getPlateChangeDetail(e).then((res) => {
let { status, data, total } = res
if (status == 20000) {
if (data.list) {
setVisible(true)
setDetailData(data.list[0])
} else {
setDetailData(data)
}
} else {
setResultData([])
message.error(res.message)
}
})
};
}
useEffect(() => {
getSelectList();
}, []);
//
const tkddModal = <div className="ltc-box">
<div className="ltc-box-title"><div className="text"></div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">车场名称</div><div className="new-value">{detailData?.road_name || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">修正前车牌</div><div className="new-value">{detailData.plate_old || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">修正后车牌</div><div className="new-value">{detailData.plate_new || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">操作人</div><div className="new-value">{detailData.operatename || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">操作类型</div><div className="new-value">{detailData.correct_type_name || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">修正时间</div><div className="new-value">{detailData.create_time || "--"}</div>
</div>
</div>
</div>
return (
<>
<div className="plate-change-mgm">
<TableModule
columns={columns}
tableData={resultData}
@ -157,11 +212,27 @@ function PlateChangeMgm() {
search={search}
total={total}
rowKey={"road_name"}
exportUrl={'/api/ana/dataanalysis/parking_total_analysis_export'}
exportUrl={'/api/bpm/correct/export_lift'}
initFormData={{}}
pageName={'parkingAlyReport'}
pagename={'plateChangeMgm'}
/>
</>
<Modal
open={visible}
width={1500}
title={'订单详情'}
onCancel={() => {
setVisible(false);
}}
footer={[<>
<Button key="back" onClick={() => {
setVisible(false);
}}>
关闭窗口
</Button></>]}
>
{tkddModal}
</Modal>
</div>
);
}

185
src/pages/OutRoadMgm/OutExceptionMgm/PlateChangeMgm/index.scss

@ -233,8 +233,10 @@ $color-primary : var(--color-primary);
background: #3e4557;
}
}
.result-title {
display: inline-block;
p {
display: inline;
margin: 0 5px;
@ -242,6 +244,7 @@ $color-primary : var(--color-primary);
font-size: 18px;
}
}
.export-btn {
display: inline-block;
text-align: center;
@ -255,9 +258,11 @@ $color-primary : var(--color-primary);
margin-bottom: 10px;
cursor: pointer;
}
.root_gfkk {
float: right;
}
.row-head {
height: 32px;
display: flex;
@ -320,6 +325,151 @@ $color-primary : var(--color-primary);
}
.ltc-box {
width: 100%;
.ltc-box-title {
font-size: 18px;
font-weight: bolder;
width: 100%;
white-space: nowrap;
overflow: hidden;
.text {
display: inline-block;
}
.line {
display: inline-block;
border: 1px dotted #607092;
width: inherit;
margin-bottom: 6px;
}
.ltc-icon {
width: 5px;
background: #0080db;
height: 19px;
display: inline-block;
margin-right: 10px;
}
.ltc-btn {
display: inline-block;
border: 1px solid;
border-radius: 5px;
margin: 0 10px;
width: 60px;
height: 35px;
line-height: 35px;
text-align: center;
background: #409eff;
color: #fff;
font-weight: 100;
cursor: pointer;
}
.ltc-cancel {
background: #fff;
color: #000;
}
}
.ltc-box-line {
border: 1px solid #e7e7e7;
margin: 8px 0;
}
.ltc-box-in {
margin-left: 20px;
.ant-descriptions {
margin-left: 20px;
}
}
.ltc-title {
margin: auto;
width: 50%;
text-align: center;
font-size: 18px;
font-weight: 600;
}
.ltc-content {
margin: auto;
padding: 20px;
.ltc-item {
font-size: 14px;
margin: 6px 12px 6px 0;
display: inline-flex;
//width: 470px;
.new-item {
display: inline-block;
width: 120px;
height: 32px;
line-height: 32px;
background: rgba(150, 161, 192, 0.24);
text-align: center;
}
.new-value {
display: inline-block;
width: 320px;
height: 32px;
line-height: 32px;
text-align: center;
background: #3E4557;
box-shadow: 0px 3px 8px 0px rgba(0, 0, 0, 0.12);
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.ltc-item-input {
display: inline-block;
width: 200px;
}
div {
width: 150px;
}
}
}
.ltc-liuc {
display: flex;
margin-left: 200px;
.ltc-item {
display: flex;
.ltc-item-name {
margin: 6px 10px 0 10px;
color: #3f94df;
}
}
.ltc-work {
text-align: center;
.ltc-tips {
border: 3px solid #000;
text-align: center;
line-height: 27px;
height: 35px;
width: 35px;
border-radius: 28px;
margin: auto;
}
}
}
}
.modal-pay-configuration {
.submitBtn {
@ -363,27 +513,28 @@ $color-primary : var(--color-primary);
}
.edit-order-inquiry {
/*定义滚动条高宽及背景
高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar {
width: 6px;
height: 16px;
background-color: #5c5c5c;
}
::-webkit-scrollbar {
width: 6px;
height: 16px;
background-color: #5c5c5c;
}
/*定义滚动条轨道
/*定义滚动条轨道
内阴影+圆角*/
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 10px;
background-color: #9da2ab;
}
::-webkit-scrollbar-track {
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);
border-radius: 10px;
background-color: #9da2ab;
}
/*定义滑块
/*定义滑块
内阴影+圆角*/
::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
background-color: #3b97ff;
}
::-webkit-scrollbar-thumb {
border-radius: 10px;
-webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
background-color: #3b97ff;
}
}

193
src/pages/OutRoadMgm/OutExceptionMgm/SpecialReleaseMgm/index.jsx

@ -20,104 +20,128 @@ import "./index.scss";
//specialReleaseMgm
function SpecialReleaseMgm() {
const [resultData, setResultData] = useState([])
const [detailData, setDetailData] = useState({})
const [visible, setVisible] = useState(false)
const [total, setTotal] = useState(0);
const [searchSelectList, setSearchSelectList] = useState([]); //
const columns = [
{
title: "停车场名称",
title: "序号",
dataIndex: "index",
key: "index",
align: "center",
fixed: "right",
render: (text, record, index) => index + 1,
},
{
title: "车场名称",
dataIndex: "road_name",
key: "road_name",
align: "center",
fixed: "right",
},
{
title: "泊位总数",
dataIndex: "total_berths",
key: "total_berths",
title: "车牌号",
dataIndex: "plate",
key: "plate_old",
align: "center",
fixed: "right",
},
{
title: "入场时间",
dataIndex: "plate",
key: "plate_new",
align: "center",
fixed: "right",
},
{
title: "出场时间",
dataIndex: "cr",
key: "cr",
align: "center",
fixed: "right",
},
{
title: "应收金额",
dataIndex: "co",
key: "co",
align: "center",
fixed: "right",
},
{
title: "停车记录数(次)",
dataIndex: "record_count",
key: "record_count",
title: "通道名称",
dataIndex: "op",
key: "oe",
align: "center",
fixed: "right",
},
{
title: "订单应收金额(元)",
dataIndex: "receivable_amount",
key: "receivable_amount",
title: "开闸时间",
dataIndex: "o",
key: "o",
align: "center",
fixed: "right",
},
{
title: "日均泊位周转次数(次)",
dataIndex: "average_turn_times",
key: "average_turn_times",
title: "开闸原因",
dataIndex: "",
key: "o",
align: "center",
fixed: "right",
},
{
title: "平均泊位利用率",
dataIndex: "average_use_rate",
key: "average_use_rate",
title: "操作人",
dataIndex: "o",
key: "o",
align: "center",
fixed: "right",
},
{
title: "平均停车时长",
dataIndex: "average_park_time",
key: "average_park_time",
title: "操作",
dataIndex: "operation",
key: "operation",
align: "center",
fixed: "right",
render: (_, record) => {
return (
<Button
type="primary"
onClick={() => {
getDetailData(record.id)
}}
>
详情
</Button>
);
},
},
];
//
const formSearch = [
{
name: "operator_id",
type: "Select",
label: "修正类型",
options: [],
},
{
name: "car_parking_type",
type: "Select",
label: "车场类型",
options: [
{
label: '全部',
value: '3',
},
{
label: '路内车场',
value: '1',
},
{
label: '路外车场',
value: '2',
},
],
name: "road_name",
type: "Input",
label: "车场名称",
placeholder: "请输入车场名称",
},
{
name: "road_name",
name: "c",
type: "Input",
label: "停车场",
placeholder: "请输入停车场名称",
label: "操作人",
placeholder: "请输入操作人",
},
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ["开闸时间", "至"],
defaultValue: [moment().startOf("day"), moment()],
},
];
//
function search(e) {
ajax.getParkingAlyReportList(e).then((res) => {
ajax.getPlateChangeList(e).then((res) => {
let { status, data, total } = res
if (status == 20000) {
if (data.list) {
@ -134,22 +158,51 @@ function SpecialReleaseMgm() {
})
}
//
const getSelectList = () => {
ajax.getOperator().then((e) => {
setSearchSelectList([
...searchSelectList,
...e.data
])
//
function getDetailData(e) {
ajax.getPlateChangeDetail(e).then((res) => {
let { status, data, total } = res
if (status == 20000) {
if (data.list) {
setVisible(true)
setDetailData(data.list[0])
} else {
setDetailData(data)
}
} else {
setResultData([])
message.error(res.message)
}
})
};
}
useEffect(() => {
getSelectList();
}, []);
//
const tkddModal = <div className="ltc-box">
<div className="ltc-box-title"><div className="text"></div><div className="line"></div></div>
<div className="ltc-content">
<div className="ltc-item">
<div className="new-item">车场名称</div><div className="new-value">{detailData?.road_name || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">修正前车牌</div><div className="new-value">{detailData.plate_old || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">修正后车牌</div><div className="new-value">{detailData.plate_new || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">操作人</div><div className="new-value">{detailData.operatename || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">操作类型</div><div className="new-value">{detailData.correct_type_name || "--"}</div>
</div>
<div className="ltc-item">
<div className="new-item">修正时间</div><div className="new-value">{detailData.create_time || "--"}</div>
</div>
</div>
</div>
return (
<>
<div className="plate-change-mgm">
<TableModule
columns={columns}
tableData={resultData}
@ -157,11 +210,27 @@ function SpecialReleaseMgm() {
search={search}
total={total}
rowKey={"road_name"}
exportUrl={'/api/ana/dataanalysis/parking_total_analysis_export'}
exportUrl={'/api/bpm/correct/export_lift'}
initFormData={{}}
pageName={'parkingAlyReport'}
pagename={'plateChangeMgm'}
/>
</>
<Modal
open={visible}
width={1500}
title={'订单详情'}
onCancel={() => {
setVisible(false);
}}
footer={[<>
<Button key="back" onClick={() => {
setVisible(false);
}}>
关闭窗口
</Button></>]}
>
{tkddModal}
</Modal>
</div>
);
}

4
src/pages/OutRoadMgm/OutExceptionMgm/ZombieCarCleanRecord/loadable.jsx

@ -143,8 +143,8 @@ function ZombieCarCleanRecord(props) {
//
const deployListColumns = [
{
title: '序号id',
dataIndex: 'id',
title: '序号',
dataIndex: 'info_id',
render: (text, record, index) => <div>{text}</div>
},
{

2
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/AddParking.jsx

@ -588,7 +588,7 @@ function AddParking(props) {
<Select
getPopupContainer={(e) => e.parentNode}
options={getOperationName.slice(1)}
//disabled={status === "edit" || disabled}
disabled={form.getFieldsValue().pid || disabled}
/>
</Form.Item>
</Col>

4
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/ConfigParking/CarMgm/CarManagement.jsx

@ -137,11 +137,9 @@ function CarManagement({ id }) {
onClick={() => {
if (record.status == "1") {
disableVehicle(record.id);
submit(form.getFieldValue());
return;
}
enableVehicle(record.id);
submit(form.getFieldValue());
}}
>
{record.status == '1' ? "禁用" : "启用"}
@ -281,6 +279,7 @@ function CarManagement({ id }) {
ajax.enableVehicle({ id }).then((res) => {
if (res.status === 20000) {
message.success(res.message);
submit(form.getFieldValue());
}
});
};
@ -289,6 +288,7 @@ function CarManagement({ id }) {
ajax.disableVehicle({ id }).then((res) => {
if (res.status === 20000) {
message.success(res.message);
submit(form.getFieldValue());
}
});
};

6
src/pages/OutRoadMgm/OutSegmentMgm/OutSegment/Detail.jsx

@ -137,10 +137,10 @@ function ParkingContent(props) {
<Descriptions.Item label="高德POI">{roadInfo.poi}</Descriptions.Item>
<Descriptions.Item label="地址">{roadInfo.address}</Descriptions.Item>
<Descriptions.Item label="是否商业车场">
{roadInfo.is_business}
{roadInfo.is_business_name}
</Descriptions.Item>
<Descriptions.Item label="合作模式">
{roadInfo.cooperate_type}
{roadInfo.cooperate_type_name}
</Descriptions.Item>
<Descriptions.Item label="停车场开放时间">
{roadInfo.open_time_range}
@ -155,7 +155,7 @@ function ParkingContent(props) {
{roadInfo.recharge}
</Descriptions.Item>
<Descriptions.Item label="接入方式">
{roadInfo.access_type}
{roadInfo.access_type_name}
</Descriptions.Item>
<Descriptions.Item label="备案时间">
{roadInfo.filings_time}

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

@ -475,6 +475,8 @@ function OutSegment() {
if (res.status === 20000) {
message.success("配置成功");
setAppraiseModal({ ...appraiseModal, visible: false });
} else {
message.error(res.message)
}
});
} else {

42
src/router/router.config.js

@ -1336,6 +1336,48 @@ let routes = [
name: "orderRuleMgm",
component: pages.OrderRuleMgm,
},
{
path: "/newEnergy/charge",
text: "充电订单",
name: "charge",
component: pages.Charge,
},
{
path: "/newEnergy/appointment",
text: "预约记录",
name: "appointment",
component: pages.Appointment,
},
{
path: "/newEnergy/violation",
text: "违规记录",
name: "violation",
component: pages.Violation,
},
{
path: "/newEnergy/unlocking",
text: "开锁记录",
name: "unlocking",
component: pages.Unlocking,
},
{
path: "/newEnergy/chargerMonitor",
text: "充电监控",
name: "chargerMonitor",
component: pages.ChargerMonitor,
},
{
path: "/newEnergy/lockMonitor",
text: "地锁监控",
name: "lockMonitor",
component: pages.LockMonitor,
},
{
path: "/newEnergy/pileMonitor",
text: "电桩监控",
name: "pileMonitor",
component: pages.PileMonitor,
},
],
},
];

9
src/services/InroadMgm/PersonMgm/index.js

@ -47,6 +47,14 @@ const getAssets = (p)=>{
data: p
})
}
//获取所有已经领用的物品列表
const getUserGoods = (p)=>{
return ajax({
url: "/api/bpm/user/get_user_goods",
type: 'get',
data: p
})
}
// 获取所有路段列表
const getPersonAllRoad = (p)=>{
return ajax({
@ -79,6 +87,7 @@ export default {
getCurrentPersonInfo,
getDeparts,
getAssets,
getUserGoods,
getPersonAllRoad,
addUserPersonInfo,
editUserPersonInfo

4
src/services/NewEnergy/index.js

@ -1,5 +1,7 @@
import chargingMgm from './chargingMgm'
import realtimeMonitor from './realtimeMonitor'
export default {
...chargingMgm
...chargingMgm,
...realtimeMonitor
}

14
src/services/NewEnergy/realtimeMonitor.js

@ -0,0 +1,14 @@
import ajax from "@/config/ajax"
//获取电桩监控接口
const getPileMonitor = (params) => {
return ajax({
url: "/api/new_power/realtime_monitor/pile_monitor/get_record_list",
type: "post",
data: params,
});
};
export default{
getPileMonitor,
}

33
src/services/OutRoadMgm/OutExceptionMgm/index.js

@ -0,0 +1,33 @@
import ajax from "@/config/ajax"
//异常管理-车牌修正记录-列表
const getPlateChangeList = (params) => {
return ajax({
url: "/api/bpm/correct/get_correct_res",
type: "post",
data: params,
});
};
//异常管理-车牌修正记录-详情
const getPlateChangeDetail = (params) => {
return ajax({
url: "/api/bpm/correct/show_correct_detail",
type: "post",
data: params,
});
};
//异常管理-车牌修正记录-导出
const getPlateChangeExport = (params) => {
return ajax({
url: "/api/bpm/clearzom/export_zomcar",
type: "post",
data: params,
});
};
export default {
getPlateChangeList,
getPlateChangeDetail,
getPlateChangeExport,
}

2
src/services/OutRoadMgm/index.js

@ -9,6 +9,7 @@ import ChargeRulesMgm from "./ChargeRulesMgm";
import OutRoadOverview from "./OutRoadOverview";
import OutParkingArrearsOrders from "./OutParkingArrearsOrders";
import OutPersonMgm from "./OutPersonMgm";
import OutExceptionMgm from "./OutExceptionMgm";
export default {
...OutSegment,
...ZombieCarMgm,
@ -21,4 +22,5 @@ export default {
...OutRoadOverview,
...OutParkingArrearsOrders,
...OutPersonMgm,
...OutExceptionMgm,
};

4
src/services/index.js

@ -23,6 +23,7 @@ import FinancialMgm from "./FinancialMgm";
import DataAnalysisPrediction from "./DataAnalysisPrediction";
import ParkingOverview from "./ParkingOverview";
import OffPeak from "./OffPeak";
import NewEnergy from "./NewEnergy";
const api = {};
export default {
...api,
@ -50,5 +51,6 @@ export default {
...FinancialMgm,
...DataAnalysisPrediction,
ParkingOverview,
...OffPeak
...OffPeak,
...NewEnergy
};

27
src/services/search.js

@ -326,6 +326,13 @@ const getMonitorList = (params) => {
data: params,
});
};
const getOutMonitorList = (params) => {
return ajax({
url: "/api/orp/nvr/get_monitor_device_list",
type: "get",
data: params,
});
};
const monitorAdd = (params) => {
return ajax({
url: "/api/bpm/device/add_monitor_device",
@ -333,6 +340,13 @@ const monitorAdd = (params) => {
data: params,
});
};
const monitorOutAdd = (params) => {
return ajax({
url: "/api/orp/nvr/add_monitor_device ",
type: "post",
data: params,
});
};
const monitorEdit = (params) => {
return ajax({
url: "/api/bpm/device/edit_monitor_device",
@ -340,6 +354,13 @@ const monitorEdit = (params) => {
data: params,
});
};
const monitorOutEdit = (params) => {
return ajax({
url: "/api/orp/nvr/edit_monitor_device",
type: "post",
data: params,
});
};
const monitorDel = (params) => {
return ajax({
url: "/api/bpm/device/del_monitor_device",
@ -1342,5 +1363,9 @@ export default {
deleteChangeRules,
getDetailData,
getRoadListData,
getBind
getBind,
getOutMonitorList,
monitorOutAdd,
monitorOutEdit,
getChannelByNvr
}
Loading…
Cancel
Save