Browse Source

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

tags/PMS_Frontend_v1.0.6-develop
wanghx 1 year ago
parent
commit
7b93536888
  1. 69
      src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx
  2. 218
      src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.jsx
  3. 328
      src/pages/InRoadMgm/BusinessMgm/FreeRule/index.scss
  4. 404
      src/pages/InRoadMgm/BusinessMgm/FreeRule/loadable.jsx
  5. 2
      src/pages/InRoadMgm/PersonMgm/ReportMsg/loadable.jsx
  6. 7
      src/pages/OperationCenter/CarMgm/CarInfo/loadable.jsx
  7. 4
      src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardOrder/loadable.jsx
  8. 12
      src/pages/SystemMgm/BusinessConfig/HotCbdConf/loadable.jsx
  9. 10
      src/pages/SystemMgm/BusinessConfig/VacationConf/loadable.jsx
  10. 39
      src/pages/SystemMgm/RoleMgm/loadable.jsx
  11. 11
      src/services/search.js

69
src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx

@ -430,7 +430,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const [CarRoad, setCarRoad] = useState([
{
label: "西海岸新区",
value: "1",
value: "0",
type: 1,
},
]);
@ -578,12 +578,12 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const SelectDay = (str, val) => {
if (str == 1) {
setDaySel(val);
if (CarRoad[CarShow].type == 1) {
if (CarRoad[CarShow]?.type == 1) {
GetComplaintType(RoadSelect, val);
}
} else if (str == 2) {
setDaySet(val);
if (CarRoad[CarShow].type == 2) {
if (CarRoad[CarShow]?.type == 2) {
GetincomeType(RoadSelect, val);
} else {
GetParkingEvaluate(RoadSelect, val);
@ -1374,8 +1374,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const GetOverviewData = (val) => {
ajax.ParkingOverview.GetOverviewData({
type: val,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1394,8 +1394,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
//
const GetParkinfo = () => {
ajax.ParkingOverview.GetParkinfo({
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1415,8 +1415,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const GetUseInfo = (val) => {
ajax.ParkingOverview.GetUseInfo({
type: val,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1464,8 +1464,17 @@ const ParkingOverview = connect(function mapStateToProps(state) {
ajax.ParkingOverview.GetAreaShop().then(
(res) => {
if (parseInt(res?.status) === 20000) {
setCarRoad(res?.data || []);
setCarRoad(
res?.data || [
{
label: "西海岸新区",
value: "0",
type: 1,
},
]
);
} else {
message.error(res?.message);
}
setLoading(true);
@ -1498,8 +1507,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const getMapData = (val) => {
ajax.ParkingOverview.getMapData({
type: val,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1555,8 +1564,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const GetDataStatic = (val) => {
ajax.ParkingOverview.GetDataStatic({
type: val,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1576,8 +1585,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
//top5
const GetrateRank = () => {
ajax.ParkingOverview.GetrateRank({
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1599,8 +1608,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
ajax.ParkingOverview.GetincomeType({
type: val,
dateType: item,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1622,8 +1631,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
ajax.ParkingOverview.GetRevenueAnalysis({
type: val,
dateType: item,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1645,8 +1654,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
ajax.ParkingOverview.GetParkingEvaluate({
type: val,
dateType: item,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1668,8 +1677,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
ajax.ParkingOverview.GetComplaintType({
type: val,
dateType: item,
areaType: CarRoad[CarShow].type,
value: CarRoad[CarShow].value,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
@ -1778,7 +1787,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
// GetDataStatic(RoadSelect);
GetUseInfo(RoadSelect);
GetRevenueAnalysis(RoadSelect, "1");
if (CarRoad[CarShow].type == 2) {
if (CarRoad[CarShow]?.type == 2) {
GetrateRank();
GetincomeType(RoadSelect, "1");
GetOverviewData(RoadSelect);
@ -1812,7 +1821,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
<div className="left_home">
<div className="pkh_title">停车业务概览</div>
<div className="dlex_f">
{CarRoad[CarShow].type == 2
{CarRoad[CarShow]?.type == 2
? LeftShow.map((ele) => {
return (
<div
@ -2051,7 +2060,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
{HoShow ? <i></i> : ""}
</div>
<div className="right_home">
{CarRoad[CarShow].type == 2 ? (
{CarRoad[CarShow]?.type == 2 ? (
<div>
<div className="pkh_title">收费员排行Top5</div>
<div className="tfff">
@ -2113,8 +2122,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
)}
<div>
<div className="pkh_title">
{CarRoad[CarShow].type == 2 ? "营业收入分析" : "车场服务评价"}
{CarRoad[CarShow].type == 1 && (
{CarRoad[CarShow]?.type == 2 ? "营业收入分析" : "车场服务评价"}
{CarRoad[CarShow]?.type == 1 && (
<Tooltip
placement="bottom"
title={<span>统计范围内用户对车场进行评价的不同分值占比</span>}
@ -2138,7 +2147,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
);
})}
</div>
{CarRoad[CarShow].type == 1 ? (
{CarRoad[CarShow]?.type == 1 ? (
<div id="ecsdf" style={{ height: "180px", width: "100%" }}></div>
) : (
<ReactEcharts

218
src/pages/FinancialMgm/OrderInquiry/ProductOrderInquiry/index.jsx

@ -115,76 +115,20 @@ function ProductOrderInquiry() {
return arr
}
//
const ash = [
{//1
name: "region",
type: "TreeSelect",
label: "区域",
},
{//2
name: "operator",
type: "Select",
label: "商户名称",
options: dictionary.MerchantName,
},
{//3
name: "road",
const carash = [
{
name: "plate_number",
type: "Input",
label: "停车场名称",
placeholder: "请输入停车场名称",
},
{//4
name: "road_type",
type: "Select",
label: "车场类型",
options: [
{
label: "全部",
value: 0,
},
{
label: "路侧平行",
value: 1,
},
{
label: "路侧垂停",
value: 2,
},
{
label: "封闭车场",
value: 3,
},
{
label: "半封闭车场",
value: 4,
},
],
label: "车牌号",
placeholder: "请输入车牌号",
},
{//5
{
name: "phone",
type: "Input",
label: "手机号",
placeholder: "请输入手机号",
},
{//6
name: "type",
type: "Select",
label: "出入场类型",
placeholder: "请选择出入场类型",
defaultValue: 1,
options: [
{
label: "入场",
value: 1,
},
{
label: "出场",
value: 2,
},
],
},
{//7
{
name: "goods_name",
type: "Input",
label: "商品名称",
@ -248,52 +192,32 @@ function ProductOrderInquiry() {
placeholder: "请选择支付设备",
options: sysConfig.Equipment
},
{//12
name: "pay_type",
type: "Select",
label: "支付方式",
placeholder: "请选择支付方式",
options: dictionary.PaydMethod,
},
{//13
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['支付时间', '至'],
defaultValue: [moment().startOf("day"), moment()],
},
{//14
name: "b",
type: "Select",
label: "退款方式",
placeholder: "请选择退款方式",
options: dictionary.PaydMethod,
},
{//15
{
name: "channel_serial_number",
type: "Input",
label: "渠道流水号",
placeholder: "请输入渠道流水号",
},
{//16
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['支付时间', '至'],
defaultValue: [moment().startOf("day"), moment()],
},
{//17
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['订购时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
];
const cfkash = [
{
name: "parking_name",
type: "Input",
label: "停车场名称",
placeholder: "请输入停车场名称",
},
{//18
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['预约到场时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
{
name: "phone",
type: "Input",
label: "手机号",
placeholder: "请输入手机号",
},
{//19
name: "plate_number",
@ -301,89 +225,25 @@ function ProductOrderInquiry() {
label: "车牌号",
placeholder: "请输入车牌号",
},
{//20
name: "order_id",
type: "Input",
label: "支付订单ID",
placeholder: "请输入支付订单ID",
},
{//21
name: "berth_id",
type: "Input",
label: "泊位号",
placeholder: "请输入泊位号",
},
{//22
name: "t",
{
name: "pay_channel",
type: "Select",
label: "所属商户",
placeholder: "请选择所属商户",
options: dictionary.MerchantName,
},
{//23
name: "t",
type: "Input",
label: "预付订单ID",
placeholder: "请输入订单ID",
},
{//24
name: "t",
type: "Input",
label: "停车记录ID",
placeholder: "停车记录ID",
},
{//25
name: "dealer",
type: "Input",
label: "操作人",
placeholder: "请输入操作人",
},
{//26
name: "t",
type: "Input",
label: "停车订单ID",
placeholder: "停车订单ID",
},
{//27
name: "t",
type: "Input",
label: "欠费区间",
placeholder: "",
label: "支付方式",
placeholder: "请选择支付方式",
options: dictionary.PaydMethod,
},
{//28
{
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultTitle: ['订单修改时间', '至'],
defaultValue: [moment().startOf("day"), moment()],
defaultTitle: ['订购时间', '至']
// defaultValue: [moment().startOf("day"), moment()],
},
{//29
name: "b",
type: "Select",
label: "修改原因",
placeholder: "请选择修改原因",
options: [
{
label: "全部",
value: 0,
},
{
label: "重复支付退款",
value: 2,
},
{
label: "异常支付退款",
value: 7,
},
{
label: "异常订单处理",
value: 11,
},
{
label: "自动平单退款",
value: 12,
},
],
{
name: "channel_serial_number",
type: "Input",
label: "渠道流水号",
placeholder: "请输入渠道流水号",
},
];
const [resultData, setResultData] = useState([])
@ -536,8 +396,6 @@ function ProductOrderInquiry() {
pay_channel: '',
order_status: '',
pay_device: '',
//start_time: '',
//end_time: '',
channel_serial_number: '',
export: '0',
export_file_name: ''
@ -548,8 +406,6 @@ function ProductOrderInquiry() {
phone: '',
parking_name: '',
pay_channel: '',
//start_time: '',
//end_time: '',
channel_serial_number: '',
export: '0',
export_file_name: '',
@ -816,7 +672,7 @@ function ProductOrderInquiry() {
{tabKey == 1 ? renderTable(
createCol(['车牌号', '车牌颜色', '手机号', '商品名称', '实付金额', '支付渠道', '支付设备', '购买渠道', '支付时间', '订单状态', '渠道流水号'],
['plate_number', 'plate_type', 'phone', 'goods_name', 'pay_amount', 'pay_channel', 'pay_device', 'buy_channel', 'pay_time', 'order_status_text', 'channel_serial_number'], 1),
[ash[18], ash[4], ash[6], ash[7], ash[8], ash[9], ash[10], ash[15], ash[14]],
carash,
resultData, '停车卡', "/api/fin/order_search/parking_card_order_list"//
) : null}
@ -825,7 +681,7 @@ function ProductOrderInquiry() {
{tabKey == 2 ? renderTable(
createCol(['序号', '停车场名称', '车牌号', '手机号', '订单金额', '支付方式', '渠道流水号', '同步MS状态', '订购时间'],
['id', 'parking_name', 'plate_number', 'phone', 'pay_amount', 'pay_method', 'channel_serial_number', 'status', 'pay_time'], 2),
[ash[2], ash[4], ash[18], ash[11], ash[16], ash[14]],
cfkash,
resultData, '错峰卡', "/api/fin/order_search/staggered_parking_order_list"//
) : null}
</Tabs.TabPane>

328
src/pages/InRoadMgm/BusinessMgm/FreeRule/index.scss

@ -1,136 +1,146 @@
@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);
$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);
.paid-FreeRule{
display: flex;
padding: 15px;
width: 100%;
.paid-search{
.search{
font-size: 16px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
text-align: left;
color: #eeeff1;
}
label{
margin:0 10px;
}
.yisa-search{
margin-top: 10px;
display: flex;
label{
line-height: 31px;
.paid-FreeRule {
.tabchange{
width: 400px;
}
.searchResult {
display: flex;
padding: 15px;
width: 100%;
.paid-search {
.search {
font-size: 16px;
font-family:
Microsoft YaHei,
Microsoft YaHei-Bold;
font-weight: 700;
text-align: left;
color: #eeeff1;
}
}
.ant-select:not(.ant-select-customize-input) .ant-select-selector{
background-color: #50586c !important;
}
.ant-select-arrow .anticon{
background-color: #50586c !important;
}
.ant-input:placeholder-shown{
background-color: #50586c !important;
}
.timePicker{
width: 350px;
margin-top: 22px;
.btnBox{
display:flex ;
label {
margin: 0 10px;
}
.yisa-search {
margin-top: 10px;
display: flex;
label {
line-height: 31px;
}
}
.ant-select:not(.ant-select-customize-input) .ant-select-selector {
background-color: #50586c !important;
}
.ant-select-arrow .anticon {
background-color: #50586c !important;
}
.ant-input:placeholder-shown {
background-color: #50586c !important;
}
.timePicker {
width: 350px;
margin-top: 22px;
.btnBox {
display: flex;
margin-top: 20px;
.yisa-btn{
.yisa-btn {
margin-left: 20px;
height: 36px;
border: none;
width: 150px;
}
.root_gfkk{
.root_gfkk {
margin-left: 20px;
.export-content{
width: 130px;
height: 33px;
display: flex;
align-items: center;
justify-content: center;
background: #3b97ff;
border-radius: 3px;
cursor: pointer;
color: #fff;
margin-right: 10px;
}
.export-content {
width: 130px;
height: 33px;
display: flex;
align-items: center;
justify-content: center;
background: #3b97ff;
border-radius: 3px;
cursor: pointer;
color: #fff;
margin-right: 10px;
}
}
}
}
}
}
.paid-result{
.paid-result {
width: 100%;
height: 800px;
background: #505a6f;
border-radius: 20px;
margin-left: 17px;
.result{
.result {
padding: 25px;
.font{
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
.font {
font-family:
Microsoft YaHei,
Microsoft YaHei-Regular;
font-weight: 400;
text-align: left;
color: #eeeff1;
margin-bottom: 10px;
display: inline-block;
em{
em {
color: #3aa8fe;
margin: 0 5px;
}
}
.yisa-table .ant-table-thead .ant-table-cell{
.yisa-table .ant-table-thead .ant-table-cell {
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-weight: 700;
color: #ffffff !important;
font-size: 14px;
font-family:
Microsoft YaHei,
Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
border-top-color: #888f9d !important;
border-color: #888f9d !important;
}
.ant-table.ant-table-bordered>.ant-table-container>.ant-table-content>table, .ant-table.ant-table-bordered>.ant-table-container>.ant-table-header>table{
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-content > table,
.ant-table.ant-table-bordered > .ant-table-container > .ant-table-header > table {
border-top: none !important;
border-left: none !important;
}
.ant-table-tbody .ant-table-row .ant-table-cell{
.ant-table-tbody .ant-table-row .ant-table-cell {
background-color: #3e4557 !important;
color: #ffffff !important;
text-align: center;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-family:
Microsoft YaHei,
Microsoft YaHei-Regular;
font-weight: 400;
border-right: none !important;
border-left: none !important;
border-bottom-color: #626b7e !important;
}
}
}
}
.revenue{
.tab-title{
.revenue {
.tab-title {
text-align: center;
font-size: 18px;
font-weight: 400;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
font-family:
Microsoft YaHei,
Microsoft YaHei-Regular;
}
width: 700px !important;
.tab-index{
.tab-top{
.tab-index {
.tab-top {
display: flex;
margin-top: 10px;
height: 30px;
@ -138,25 +148,27 @@ $color-primary : var(--color-primary);
white-space: nowrap;
overflow: hidden;
border-bottom: 1px solid #e4e7ed;
.tab-li{
.tab-li {
margin-left: 20px;
cursor: pointer;
}
.active{
color:#409eff ;
.active {
color: #409eff;
cursor: pointer;
margin-left: 20px;
border-bottom: 1px solid #409eff !important;
margin-bottom: -1px !important;
}
}
.tab-bottom{
.yisa-tab{
.ant-table-cell{
.tab-bottom {
.yisa-tab {
.ant-table-cell {
background-color: #616b83 !important;
color: #ffffff !important;
font-size: 14px;
font-family: Microsoft YaHei, Microsoft YaHei-Bold;
font-family:
Microsoft YaHei,
Microsoft YaHei-Bold;
font-weight: 700;
text-align: center;
border-right: none !important;
@ -167,33 +179,33 @@ $color-primary : var(--color-primary);
}
}
}
.freeModal{
.freeModal {
width: 810px !important;
.yisa-search{
.yisa-search {
margin-top: 10px;
display: flex;
label{
label {
line-height: 31px;
}
.pdaPic{
.pdaPic {
margin-left: 34px;
label{
label {
color: #5a99ff;
cursor: pointer;
}
}
.add{
.add {
width: 80px;
color: black;
margin-left: 30px;
color: black;
margin-left: 30px;
}
.redLogo{
.redLogo {
line-height: 37px;
}
}
.yisa-delete{
.yisa-delete {
margin-left: 27%;
.addDelete{
.addDelete {
margin-top: 15px;
display: flex;
width: 300px;
@ -203,105 +215,105 @@ $color-primary : var(--color-primary);
justify-content: space-between;
line-height: 30px;
border: 1px solid gray;
.delete{
.delete {
color: #5a99ff;
cursor: pointer;
}
}
}
.submitBtn{
.submitBtn {
text-align: center;
margin-top: 20px;
.submit{
.submit {
width: 80px;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
}
.cancel{
width: 80px;
height: 35px;
background: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
.cancel {
width: 80px;
height: 35px;
background: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
}
}
}
.freeModalData{
.name{
.freeModalData {
.name {
margin: 10px;
}
.type{
.type {
margin: 10px;
}
.submitBtn{
.submitBtn {
text-align: center;
margin-top: 20px;
.submit{
.submit {
width: 80px;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
}
.cancel{
width: 80px;
height: 35px;
background: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
.cancel {
width: 80px;
height: 35px;
background: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
}
}
}
.apyPicModal{
.apyPicModal {
width: 390px !important;
}
.blackRecordBtn{
.blackRecordBtn {
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
border: none;
border-radius: 4px;
cursor: pointer;
}
.black{
div{
.black {
div {
cursor: pointer;
margin-top: 5px;
}
}
.deleteModal{
.font{
.deleteModal {
.font {
font-size: 18px;
text-align: center;
}
.submitBtn{
.submitBtn {
text-align: center;
margin-top: 20px;
.submit{
.submit {
width: 80px;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
height: 35px;
background: #409eff;
border: none;
border-radius: 4px;
cursor: pointer;
color: #fff;
}
.cancel{
width: 80px;
height: 35px;
background: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
.cancel {
width: 80px;
height: 35px;
background: #fff;
border: none;
border-radius: 4px;
cursor: pointer;
margin-left: 20px;
}
}
}
}

404
src/pages/InRoadMgm/BusinessMgm/FreeRule/loadable.jsx

@ -1,6 +1,6 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult } from "@/components"
import { Select, Input, Button, Table, message, Pagination, Popover, Modal, Checkbox, Radio } from 'antd'
import { ResultFlowResult ,FormSliderPicker } from "@/components"
import { Select, Input, Button, Tabs, Table, message, Pagination, Popover, Modal, DatePicker, Radio } from 'antd'
import {
pageSizeOptions
} from '@/config/character.config.js'
@ -8,6 +8,9 @@ import "./index.scss";
import { SearchOutlined } from '@ant-design/icons';
import ajax from '@/services'
import { useSessionStorageState } from "ahooks"
import moment from "moment";
const { RangePicker } = DatePicker;
const { TabPane } = Tabs;
const { TextArea } = Input;
function FreeRule(props) {
const [ajaxLoading, setAjaxLoading] = useState(false)
@ -20,11 +23,19 @@ function FreeRule(props) {
const parameter = {
operate_name: '0',//
pn: 1,
road: '',//
berth: '',//
plate: '',//
start_time: moment().format('YYYY-MM-DD 00:00:00'),
end_time: moment().format("YYYY-MM-DD 23:59:59"),
tab: '1',
page_size: Number(pageSizeOptions[0]), //
}
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const [parkFormData, setParkFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const parkFormDataRef = useRef(formData)
const [addVisible, setAddVisible] = useState(false)
const [picVisible, setPicVisible] = useState(false)
const [checkVisible, setCheckVisible] = useState(false)
@ -34,6 +45,26 @@ function FreeRule(props) {
const handleOperator = (v) => {
setFormData({ ...formData, operate_name: v })
}
//
const handlePlate = (v) => {
setFormData({ ...formData, plate: v.target.value })
}
//
const handleRoad = (v) => {
setFormData({ ...formData, road: v.target.value })
}
//
const handleBreth = (v) => {
setFormData({ ...formData, berth: v.target.value })
}
//
const onHandleDateChange = (v) => {
setFormData({
...formData,
start_time: v.startDateTime,
end_time: v.endDateTime
})
}
//
const handleColumns = (tab) => {
let result = [...deployListColumns];
@ -78,6 +109,77 @@ function FreeRule(props) {
</>
},
},]
// Tab
const changeTab = (key) => {
let obj = Object.assign({}, parameter, {
tab: key,
})
setFormData(JSON.parse(JSON.stringify(obj)))
lastFormDataRef.current = obj
if (key === '1') {
getData(obj)
}
if (key === '2') {
getParkDataList(obj)
}
}
const handleApplyColumns = (tab) => {
let result = [...applyColumns];
return result;
}
const applyColumns = [
{
title: "序号",
render: (text, record, index) => index + 1,
},
{
title: "车牌号",
dataIndex: 'plate',
key: 'plate',
}, {
title: "车牌颜色",
dataIndex: 'plate_color',
key: 'plate_color',
}, {
title: "车辆类型",
dataIndex: 'car_type',
key: 'car_type',
}, {
title: "路段",
dataIndex: 'road',
key: 'road',
}, {
title: "泊位",
dataIndex: 'berth',
key: 'berth',
}, {
title: "进场时间",
dataIndex: 'come_time',
key: 'come_time',
}, {
title: "离场时间",
dataIndex: 'leave_time',
key: 'leave_time',
},
{
title: "停车时长",
dataIndex: 'park_time',
key: 'park_time',
},
{
title: "进场收费员",
dataIndex: 'come_person',
key: 'come_person',
},
{
title: "离场收费员",
dataIndex: 'leave_person',
key: 'leave_person',
}
]
console.log(formData);
const [getCheckList, setGetCheckList] = useState({})
const checkBtn = (record) => {
let data = {
@ -94,8 +196,8 @@ function FreeRule(props) {
setCheckVisible(false)
}
const [getEditList, setGetEditList] = useState({
operate_name:'',
free_name:''
operate_name: '',
free_name: ''
})
const [getEditId, setGetEditId] = useState({})
const deleteApplyBtn = (record) => {
@ -159,6 +261,33 @@ function FreeRule(props) {
console.log(err)
})
}
const getParkDataList = (data = formData) => {
setAjaxLoading(true)
ajax.getAddFreePartList(data).then(res => {
setAjaxLoading(false)
if (res.status === 20000) {
let resDataArr = res.data.list.map((item) => {
item.key = item.id
return item
})
setResultData({
...resultData,
data: resDataArr,
total_records: res.data.total_records
})
} else {
setResultData({
data: [],
total_records: 0,
export_url: '',
process_url: ""
})
message.error(res.message)
}
}, err => {
console.log(err)
})
}
//
const changePn = (pn, length) => {
if (lastFormData.page_size === length) {
@ -168,6 +297,14 @@ function FreeRule(props) {
getData(Object.assign({}, formData, { pn: pn, page_size: length }))
}
}
const changeParkPn = (pn, length) => {
if (parkFormData.page_size === length) {
setFormData(Object.assign({}, formData, { pn: pn, page_size: length }))
setParkFormData(Object.assign({}, parkFormData, { pn: pn, page_size: length }))
parkFormDataRef.current = Object.assign({}, parkFormData, { pn: pn, page_size: length })
getParkDataList(Object.assign({}, formData, { pn: pn, page_size: length }))
}
}
//
const changeLength = (pn, length) => {
setFormData(Object.assign({}, formData, { pn: 1, page_size: length }))
@ -175,10 +312,27 @@ function FreeRule(props) {
lastFormDataRef.current = Object.assign({}, lastFormData, { pn: 1, page_size: length })
getData(Object.assign({}, formData, { pn: 1, page_size: length }))
}
const changeParkLength = (pn, length) => {
setFormData(Object.assign({}, formData, { pn: 1, page_size: length }))
setParkFormData(Object.assign({}, parkFormData, { pn: 1, page_size: length }))
parkFormDataRef.current = Object.assign({}, parkFormData, { pn: 1, page_size: length })
getParkDataList(Object.assign({}, formData, { pn: 1, page_size: length }))
}
//
const getSearchData = (data = formData) => {
getData(data)
}
const getParkData = (data = formData) => {
getParkDataList(data)
}
//
const resetData = () => {
setFormData({
...parameter,
tab: '2'
})
getParkDataList({ ...parameter })
}
const [getPicList, setGetPicList] = useState({})
//
const configuration = () => {
@ -227,14 +381,9 @@ function FreeRule(props) {
}
const handleDelete = (index) => {
getFreeList.splice(index)
console.log(index);
let arr = getFreeList
setGetFreeList([...arr])
}
useEffect(() => {
console.log(getFreeList);
}, [getFreeList])
const addSubmit = () => {
let data = {
operate_name: getCheckData.operate_name,
@ -276,7 +425,15 @@ function FreeRule(props) {
useEffect(() => {
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
operate_name: sessionTabList?.operate_name
operate_name: sessionTabList?.operate_name,
pn: sessionTabList?.pn,
road: sessionTabList?.road,
berth: sessionTabList?.berth,
plate: sessionTabList?.plate,
start_time: sessionTabList?.start_time,
end_time: sessionTabList?.end_time,
tab: sessionTabList?.tab,
page_size: sessionTabList?.page_size,
})
}
}, [])
@ -294,26 +451,26 @@ function FreeRule(props) {
message.error('请选择所属商户')
} else if (getEditList.free_name === '') {
message.error('请输入免费类型')
} else{
} else {
ajax.getAddEditFree(data).then(res => {
if (res.status === 20000) {
setEditVisible(false)
getData(formData)
setGetFreeList([])
}else{
} else {
message.error(res.message)
}
})
}
}
const editcancel=()=>{
const editcancel = () => {
setEditVisible(false)
setGetFreeList([])
}
const cancel = () => {
setCheckVisible(false)
setDeleteVisible(false)
}
const picCheckModal = () => {
@ -335,59 +492,178 @@ function FreeRule(props) {
}, [])
return <>
<div className="paid-FreeRule">
<div className="paid-search">
<label className="search">查询条件</label>
<div className="yisa-search">
<label>商户名称</label>
<Select
style={{ width: 256 }}
value={formData.operate_name}
options={getOperationName}
onChange={handleOperator}
/>
</div>
<div className="timePicker ">
<div className="btnBox">
<Button type="primary" className="yisa-btn colorBtn" icon={<SearchOutlined />} onClick={() => { getSearchData() }}>
搜索
</Button>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { configuration() }}>
新增
</Button>
<div className='tabchange'>
<Tabs
className="yisa-tabs"
defaultActiveKey={formData.tab}
onChange={(v) => {
changeTab(v);
}}
activeKey={formData.tab}
>
<TabPane tab="免费规则" key="1" ></TabPane>
<TabPane tab="公车停车记录" key="2"></TabPane>
</Tabs>
</div>
<div className="searchResult">
<div className="paid-search">
<label className="search">查询条件</label>
{
formData.tab === '1' ?
<div className="yisa-search">
<label>商户名称</label>
<Select
style={{ width: 256 }}
value={formData.operate_name}
options={getOperationName}
onChange={handleOperator}
/>
</div> : ''
}
{
formData.tab === '2' ?
<div className="yisa-search" style={{ marginLeft: 13 }}>
<label>车牌号</label>
<Input
placeholder="请输入车牌号"
value={formData.plate}
style={{ width: 256, marginLeft: 13 }}
onChange={handlePlate}
/>
</div> : ''
}
{
formData.tab === '2' ?
<div className="yisa-search" style={{ marginLeft: 26 }}>
<label>路段</label>
<Input
placeholder="请输入路段"
value={formData.road}
style={{ width: 256, marginLeft: 13 }}
onChange={handleRoad}
/>
</div> : ''
}
{
formData.tab === '2' ?
<div className="yisa-search" style={{ marginLeft: 26 }}>
<label>泊位</label>
<Input
placeholder="请输入泊位"
value={formData.berth}
style={{ width: 256, marginLeft: 13 }}
onChange={handleBreth}
/>
</div> : ''
}
{
formData.tab === '2' ?
<div style={{marginTop:10}}>
{/* <RangePicker showNow={false} allowClear={false} value={moment(formData.start_time)} showTime style={{ width: 256, marginLeft: 13 }} onChange={handleTime} /> */}
<FormSliderPicker
yisaLabel='进场时间'
defaultStartDateTime={moment(formData.start_time)}
defaultEndDateTime={moment(formData.end_time)}
yisaOnChange={onHandleDateChange}
limit={730}
showQuickMenu={false}
/>
</div> : ''
}
<div className="timePicker ">
{
formData.tab === '1' ?
<div className="btnBox">
<Button type="primary" className="yisa-btn colorBtn" icon={<SearchOutlined />} onClick={() => { getSearchData() }}>
搜索
</Button>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { configuration() }}>
新增
</Button>
</div> : ''
}
{
formData.tab === '2' ?
<div className="btnBox">
<Button type="primary" className="yisa-btn colorBtn" icon={<SearchOutlined />} onClick={() => { getParkData() }}>
搜索
</Button>
<Button type="primary" className="yisa-btn colorBtn" onClick={() => { resetData() }}>
重置
</Button>
</div> : ''
}
</div>
</div>
</div>
<div className="paid-result">
<div className="result">
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
<Table
bordered
// className='yisa-table'
dataSource={resultData.data}
columns={
handleColumns()
<div className="paid-result">
<div className="result">
<ResultFlowResult ajaxLoad={ajaxLoading} resultData={resultData.data ? resultData.data : []}>
{formData.tab === '1' ?
<>
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Table
bordered
// className='yisa-table'
dataSource={resultData.data}
columns={
handleColumns()
}
// rowKey={record => record.cap_id + "_" + record.bk_id}
pagination={false}
loading={ajaxLoading}
/>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => `${resultData.total_records}`}
total={resultData.total_records}
current={lastFormData.pn}
pageSize={lastFormData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changePn}
onShowSizeChange={changeLength}
/>
</> : ''
}
{formData.tab === '2' ?
<>
<span className="font">共检索到<em>{resultData.total_records}</em>条结果</span>
<Table
bordered
// className='yisa-table'
dataSource={resultData.data}
columns={
handleApplyColumns()
}
// rowKey={record => record.cap_id + "_" + record.bk_id}
pagination={false}
loading={ajaxLoading}
/>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => `${resultData.total_records}`}
total={resultData.total_records}
current={parkFormData.pn}
pageSize={parkFormData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changeParkPn}
onShowSizeChange={changeParkLength}
/>
</> : ''
}
// rowKey={record => record.cap_id + "_" + record.bk_id}
pagination={false}
loading={ajaxLoading}
/>
<Pagination
className="pagination-common"
showSizeChanger
showQuickJumper
showTotal={() => `${resultData.total_records}`}
total={resultData.total_records}
current={lastFormData.pn}
pageSize={lastFormData.page_size}
pageSizeOptions={pageSizeOptions}
onChange={changePn}
onShowSizeChange={changeLength}
/>
</ResultFlowResult>
</ResultFlowResult>
</div>
</div>
</div>
</div>
<Modal
visible={addVisible}
@ -457,7 +733,7 @@ function FreeRule(props) {
className="freeModal"
>
<div className="yisa-search">
<div className="redLogo">*</div>
<div className="redLogo">*</div>
<label>所属商户</label>
<Select
style={{ width: 256, marginLeft: 20 }}
@ -471,7 +747,7 @@ function FreeRule(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<div className="redLogo">*</div>
<label>免费类型</label>
<Input
style={{ width: 200, marginLeft: 20 }}

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

@ -60,7 +60,7 @@ function ReportMsg(props) {
...formData
}
ajax.getReportExport(data).then(res => {
window.open(res.export_url)
window.open(res.url)
})
}
//

7
src/pages/OperationCenter/CarMgm/CarInfo/loadable.jsx

@ -58,6 +58,13 @@ function CarInfo() {
align: "center",
},
{
title: "PDA录入号码",
dataIndex: "pda_mobile",
key: "pda_mobile",
fixed: "right",
align: "center",
},
{
title: "行驶本认证",
dataIndex: "authStateName",
key: "authStateName",

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

@ -903,10 +903,6 @@ function ParkingCardOrder() {
{
value: '4',
label: '黑'
},
{
value: '5',
label: '黑'
}
]}
onChange={(e) => {setAddOrderData({plate_type:e})}}

12
src/pages/SystemMgm/BusinessConfig/HotCbdConf/loadable.jsx

@ -33,7 +33,7 @@ function HotCbdConf() {
defaultValue:{}
})
const [formData, setFormData] = useSetState({
area: defaultParams.formParams?.area ? defaultParams.formParams.area : '0',
area: defaultParams.formParams?.area ? defaultParams.formParams.area : '',
name: defaultParams.formParams?.name ? defaultParams.formParams.name : '',
})
@ -159,7 +159,7 @@ function HotCbdConf() {
setDetailVisible(false)
setModalFormData({
name: '',
area: '0',
area: '',
center_name: ''
})
message.success('编辑商圈成功')
@ -174,7 +174,7 @@ function HotCbdConf() {
setDetailVisible(false)
setModalFormData({
name: '',
area: '0',
area: '',
center_name: ''
})
search(Object.assign({},formData, pageData))
@ -191,7 +191,7 @@ function HotCbdConf() {
setCurrentRecord(record)
setModalFormData({
name: record.name,
area: parseInt(record.area_id) ? record.area_id : '0' ,
area: parseInt(record.area_id) ? record.area_id : '' ,
center_name: record.center_name
})
setDetailVisible(true)
@ -227,10 +227,10 @@ function HotCbdConf() {
const reset = ()=>{
setFormData({
name: '',
area: '0'
area: ''
})
setPageData({...pageData, pn: 1})
search({name: '', area: '0', pn: 1, size: pageData.size})
search({name: '', area: '', pn: 1, size: pageData.size})
}
const addConfig = ()=>{

10
src/pages/SystemMgm/BusinessConfig/VacationConf/loadable.jsx

@ -85,6 +85,8 @@ function VacationConf() {
message.success('新增成功')
setModalVisible(false)
getVacationData()
}else{
message.error(res.message)
}
}).catch(err=>{
@ -102,6 +104,8 @@ function VacationConf() {
message.success('修改成功')
setModalVisible(false)
getVacationData()
}else{
message.error(res.message)
}
}).catch(err=>{
@ -118,7 +122,7 @@ function VacationConf() {
}
const onChange = (value, mode) => {
let temp = value.format('MM-DD')
let temp = value.format('YYYY-MM-DD')
if(vacationData.length){
let one = vacationData.find(item=> item.day == temp)
if(one){
@ -130,7 +134,7 @@ function VacationConf() {
};
const onPanelChange = (e,a)=>{
console.log(e,a , 'aaaa',e.years(), e.months())
// console.log(e,a , 'aaaa',e.years(), e.months())
let tempdate = {
year: e.years() + '',
month: e.months() + 1 + ''
@ -140,7 +144,7 @@ function VacationConf() {
}
const dateFullCellRender = (date)=>{
let temp = date.format('MM-DD'),highlight = false,temp_vc_name = '';
let temp = date.format('YYYY-MM-DD'),highlight = false,temp_vc_name = '';
if(vacationData.length){
let one = vacationData.find(item=> item.day == temp)
if(one){

39
src/pages/SystemMgm/RoleMgm/loadable.jsx

@ -68,7 +68,7 @@ function RoleMgm(props) {
let arr = e
let lastElement = arr[arr.length - 1];
setGetGovernment(lastElement)
setAddManage({ ...addManage, depart_id: lastElement })
setAddManage({ ...addManage, depart_id: e })
};
const [getGovernmentArea, setGetGovernmentArea] = useState([])
@ -176,8 +176,11 @@ function RoleMgm(props) {
}, [checkedKeys])
//
const placeSaveBtn = () => {
let arr = addManage.depart_id
let lastElement = arr[arr.length - 1];
let data = {
...addManage
...addManage,
depart_id:lastElement
}
let reg = /^ [\s]*$/;
@ -361,7 +364,14 @@ function RoleMgm(props) {
const delcancelImg = () => {
setEditVisible(false)
setCheckedKeys([])
setGetAuthId({})
setGetGovernment(0)
setAddManage({
remark: '',
name: '',
depart_id: '',
auth: ''
})
}
//
const getData = (data = formData) => {
@ -415,6 +425,13 @@ function RoleMgm(props) {
const editModal = () => {
setEditVisible(false)
setCheckedKeys([])
setGetAuthId({})
setAddManage({
remark: '',
name: '',
depart_id: '',
auth: ''
})
setGetGovernment(0)
}
//
@ -435,12 +452,19 @@ function RoleMgm(props) {
setEditVisible(false)
getData(formData)
setGetGovernment(0)
setGetAuthId({})
setGetImg({
remark: '',
name: '',
depart_id: '',
auth: ''
})
setAddManage({
remark: '',
name: '',
depart_id: '',
auth: ''
})
} else {
message.error(res.message)
setGetGovernment(0)
@ -459,12 +483,12 @@ function RoleMgm(props) {
}
// const [getKey,setGetKey]=useState([])
useEffect(() => {
// let arrStr = addManage.depart_id
// let lastElement = addManage[arrStr.length - 1];
let arrStr = addManage.depart_id
let lastElement = addManage[arrStr.length - 1];
// console.log(addManage);
if (getGovernment != 0) {
let data = {
id: addManage.depart_id,
id: getGovernment,
auth:getAuthId
}
ajax.getDepartId(data).then(res => {
@ -587,7 +611,7 @@ function RoleMgm(props) {
<Cascader
style={{ width: 260, marginLeft: 50 }}
placeholder="请选择"
// value={addManage.depart_id}
value={addManage.depart_id}
options={getPlateColor}
changeOnSelect
onChange={handleDeptName}
@ -669,13 +693,12 @@ function RoleMgm(props) {
options={getPlateColor}
changeOnSelect
onChange={(v) => {
setGetGovernment(v)
setGetImg(
Object.assign({}, getImg, { depart_id: v })
);
let arrStr = v
let lastElement = arrStr[arrStr.length - 1];
setAddManage({ ...addManage, depart_id: lastElement})
setGetGovernment(lastElement)
}}
fieldNames={{
label: 'name',

11
src/services/search.js

@ -1017,6 +1017,14 @@ const getAddFreeList = (params) => {
data: params,
});
};
//业务管理-免费规则-公车停车记录
const getAddFreePartList = (params) => {
return ajax({
url: "/api/bpm/freeparkingrule/free_parking_record",
type: "post",
data: params,
});
};
//业务管理-异常停车数据
const getPartList = (params) => {
return ajax({
@ -1130,7 +1138,7 @@ const getBerthWarningListExport = (params) => {
//设备运维-预警上报列表
const getReportList = (params) => {
return ajax({
url: "/api/bpm/berthoperation/get_report_list",
url: "/api/bpm/user/get_report_list",
type: "post",
data: params,
});
@ -1242,6 +1250,7 @@ export default {
getAddCheckFree,
getAddDetailFree,
getAddFreeList,
getAddFreePartList,
getPartList,
getPartSearchList,
getAbnormalList,

Loading…
Cancel
Save