chenglb 1 year ago
parent
commit
2fc81a960f
  1. 2
      src/components/Export/ExportBtnNew/index.jsx
  2. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/CarTypeAly/loadable.jsx
  3. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx
  4. 7
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkBerthAly/loadable.jsx
  5. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkTurnoverAly/loadable.jsx
  6. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/loadable.jsx
  7. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyDuration/loadable.jsx
  8. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyOverview/loadable.jsx
  9. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx
  10. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyReport/loadable.jsx
  11. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingLiveData/loadable.jsx
  12. 4
      src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx
  13. 27
      src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx
  14. 25
      src/pages/DataAnalysisPrediction/ParkingOverview/index.scss
  15. 84
      src/pages/DataAnalysisPrediction/ParkingOverview/loadable.jsx
  16. 1
      src/pages/FinancialMgm/SettleBill/GeneralBusiness/loadable.jsx
  17. 2
      src/pages/InRoadMgm/EquipmentMgm/BarMgm/loadable.jsx
  18. 17
      src/pages/InRoadMgm/EquipmentMgm/EquipmentBrand/loadable.jsx
  19. 6
      src/pages/InRoadMgm/EquipmentMgm/EquipmentStatus/Device/index.jsx
  20. 16
      src/pages/InRoadMgm/EquipmentMgm/MonitorEquipment/loadable.jsx
  21. 7
      src/pages/MerchantMgm/FunctionMgm/index.scss
  22. 1168
      src/pages/MerchantMgm/FunctionMgm/loadable.jsx
  23. 2
      src/pages/MerchantMgm/MerchantInfo/loadable.jsx
  24. 4
      src/pages/OperationCenter/ArrearsRecover/ArrearsCar/loadable.jsx
  25. 2
      src/pages/OperationCenter/CarMgm/CarInfo/loadable.jsx
  26. 3
      src/pages/OperationCenter/UserMgm/UserInfo/index.scss
  27. 4
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/AddModal.jsx
  28. 13
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/EffectiveDate.jsx
  29. 121
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/TimePart.jsx
  30. 5
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/index.scss
  31. 126
      src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/loadable.jsx
  32. 2
      src/pages/SystemMgm/AdminMgm/loadable.jsx
  33. 6
      src/pages/SystemMgm/AreaManage/loadable.jsx
  34. 11
      src/pages/SystemMgm/OrgnizationMgm/loadable.jsx
  35. 16
      src/services/ParkingOverview/index.js

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

@ -171,7 +171,7 @@ function ExportBtn(props) {
} else {
ajax({ url, type: ajaxType, data: { export_type: checkedType, start, end, isimg:0, ...formData, ...other } }).then((res) => {
if (res.status === 20000) {
downloadFile(res.data.url)
downloadFile(res.data.url || res.data.export_url)
handleCancel()
// setInProcess("2");
// setProcess(res.data?.task_url)

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/CarTypeAly/loadable.jsx

@ -23,8 +23,8 @@ function CarTypeAly() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
date_type: '1',
type: 'region',
operator_id: '0',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/NightParkStat/loadable.jsx

@ -23,8 +23,8 @@ function NightParkStat() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
car_parking_type: '3',
operator_id: '0',
area_id: '0',

7
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkBerthAly/loadable.jsx

@ -184,6 +184,10 @@ function ParkBerthAly() {
acr.push(item.date)
acc.push(acr)
})
console.log(data, acc)
// acc.map((item)=>{
// })
// X
const xAxisData = dates.map((date) => {
return {
@ -270,6 +274,7 @@ function ParkBerthAly() {
trigger: 'item',
//formatter: '{b0}: {c0} '
formatter: (params) => {
//console.log(params)
return `<div class="tooltip-box">
${moment(params.data[2]).format('YYYY年MM月DD日')}(${getWeek(params.data[2])})<br/>
全市日均泊位周转次数${totalData.all_turnover + '(次)'}<br/>
@ -536,7 +541,7 @@ function ParkBerthAly() {
<div style={{ height: "300px", width: "100%", zoom: 1 / document.body.style.zoom }}>
<ReactEcharts
option={revenueData}
style={{ height: "300px", width: "100%", overflow: "hidden" }}
style={{ height: "300px", width: "100%" }}
/>
</div>
</>

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkTurnoverAly/loadable.jsx

@ -23,8 +23,8 @@ function ParkTurnoverAly() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
date_type: '1', //
operator_id: '0',
area_id: '0',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkUsageAly/loadable.jsx

@ -24,8 +24,8 @@ function ParkUsageAly() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
car_parking_type: '3',
operator_id: '0',
area_id: '0',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyDuration/loadable.jsx

@ -23,8 +23,8 @@ function ParkingAlyDuration() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
car_parking_type: '3',
operator_id: '0',
area_id: '0',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyOverview/loadable.jsx

@ -24,8 +24,8 @@ function ParkingAlyOverview() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
operator_id: '0',
area_id: '0',
date_type: '1',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyPeriod/loadable.jsx

@ -19,8 +19,8 @@ function ParkingAlyPeriod() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
operator_id: '0',
area_id: '0',
car_parking_type: '3',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingAlyReport/loadable.jsx

@ -23,8 +23,8 @@ function ParkingAlyReport() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
date_type: '1',
car_parking_type: '3',
operator_id: '0',

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/ParkingLiveData/loadable.jsx

@ -24,8 +24,8 @@ function ParkingLiveData() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
operator_id: '0',
area_id: '0',
};

4
src/pages/DataAnalysisPrediction/ParkingBusinessAly/TemporaryParkStat/loadable.jsx

@ -23,8 +23,8 @@ function TemporaryParkStat() {
const [areaList, setAreaList] = useState([]);
//
const defaultData = {
start_time: moment().subtract('days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().endOf("day").format("YYYY-MM-DD"),
start_time: moment().subtract(1, 'days').startOf('day').format("YYYY-MM-DD"),
end_time: moment().subtract(1, 'days').endOf("day").format("YYYY-MM-DD"),
car_parking_type: '3',
operator_id: '0',
area_id: '0',

27
src/pages/DataAnalysisPrediction/ParkingIncomeAly/ArrearageAly/PlateArrear/index.jsx

@ -194,7 +194,7 @@ const ModalDetail = (props) => {
})
const [pageInfo, setPageInfo] = useState({
pn: 1,
length: 10
length: 15
})
const tableColumns = [
@ -232,19 +232,28 @@ const ModalDetail = (props) => {
const paginationProps = {
className: "pagination-common",
showQuickJumper: true,
// showQuickJumper: true,
showSizeChanger: true,
current: pageInfo.pn,
showTotal: (total) => `${total} 条数据`,
total: resultData?.totalRecords,
pageSize: pageInfo.length,
pageSizeOptions: Array.from(
new Set([...[15], ...(dictionary?.pageSizeOptions || [])])
),
onChange: (current, size) => {
setPageInfo({
...pageInfo,
...{ pn: current, length: size }
});
//
if (size != pageInfo.length) {
setPageInfo({
...pageInfo,
...{ pn: 1, length: size }
});
} else { //
setPageInfo({
...pageInfo,
...{ pn: current, length: size }
});
}
}
}
@ -255,7 +264,7 @@ const ModalDetail = (props) => {
setTableLoading(false)
setResultData({
list: res.data,
totalRecords: res.totalRecords
totalRecords: Number(res.totalRecords || 0)
})
}
})
@ -279,7 +288,7 @@ const ModalDetail = (props) => {
className="yisa-modal detail-modal"
title={"弹窗详情"}
open={visible}
width={700}
width={1100}
onCancel={onCancel}
onOk={onOk}
>
@ -295,7 +304,7 @@ const ModalDetail = (props) => {
dataSource={resultData?.list || []}
columns={tableColumns}
pagination={false}
scroll={{y: 200}}
scroll={{y: 500}}
loading={tableLoading}
/>
<Pagination {...paginationProps} className="pagination-common" />

25
src/pages/DataAnalysisPrediction/ParkingOverview/index.scss

@ -464,6 +464,31 @@ $color-primary : var(--color-primary);
.bsdsj {
background: rgba(1, 5, 14, 0.64);
padding-bottom: 4px;
position: relative;
.pos_zs {
position: absolute;
top: 5px;
right: 0;
border: 1px solid rgba(117,
221,
255, .5);
;
border-radius: 4px;
display: flex;
overflow: hidden;
span {
padding: 2px 3px;
cursor: pointer;
}
.qse {
background-color: rgba(117,
221,
255, .3);
}
}
}
.day_select {

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

@ -394,6 +394,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
const [BoOpen, setBoOpen] = useState(false);
//
const [BoOpenDetail, setBoOpenDetail] = useState(false);
//
const [Roadturn, setRoadturn] = useState(true);
//
const [Yunying, setYunying] = useState([]);
@ -773,7 +775,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
show: false,
boxHeight: boxHeight, //
left: 0,
top: 0, //3d
top: 24, //3d
viewControl: {
//3d
alpha: 30, //
@ -1049,11 +1051,13 @@ const ParkingOverview = connect(function mapStateToProps(state) {
{
key: "",
value: 0,
value_t: 0,
},
]
) => {
//
let data = datas.sort((a, b) => a.key - b.key);
let data = datas;
// .sort((a, b) => a.key - b.key);
setRightThree({
title: {
text: "",
@ -1173,7 +1177,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
itemStyle: {
color: "rgba(13,225,250, 1)", // 线
},
data: data.map((ele) => ele.value),
data: data.map((ele) => ele.value_t),
},
{
name: "实收",
@ -1190,7 +1194,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
itemStyle: {
color: "rgba(235, 39, 39,1)", // 线
},
data: data.map((ele) => ele.value + 100),
data: data.map((ele) => ele.value),
},
],
grid: {
@ -1448,7 +1452,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
}
);
};
//top5
//--
const GetrateRank = (val) => {
ajax.ParkingOverview.GetrateRank({
dateType: val,
@ -1470,6 +1474,29 @@ const ParkingOverview = connect(function mapStateToProps(state) {
}
);
};
//--
const GetParkoverview = (val) => {
ajax.ParkingOverview.GetParkoverview({
dateType: val,
areaType: CarRoad[CarShow]?.type,
value: CarRoad[CarShow]?.value,
}).then(
(res) => {
if (parseInt(res?.status) === 20000) {
setDataTop(res?.data);
// getRevenueOption(res.data || []);
} else {
message.error(res?.message);
}
setLoading(true);
},
(err) => {
console.log(err);
setLoading(true);
}
);
};
//-
const GetincomeType = (val, item) => {
ajax.ParkingOverview.GetincomeType({
@ -1516,7 +1543,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
}
);
};
//-
//-
const GetParkparkIncomeRank = (val, item) => {
ajax.ParkingOverview.GetParkparkIncomeRank({
type: val,
@ -1655,6 +1682,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
GetUseInfo(RoadSelect);
GetRevenueAnalysis(RoadSelect, "1");
if (CarRoad[CarShow]?.type == 2) {
setRoadturn(true);
GetrateRank("1");
GetincomeType(RoadSelect, "1");
GetOverviewData(RoadSelect);
@ -1935,11 +1963,30 @@ const ParkingOverview = connect(function mapStateToProps(state) {
<div className="bsdsj">
<div className="pkh_title">
{CarRoad[CarShow]?.type == 2
? "收费员排行Top5"
? "周转率收费率排行榜"
: "路段周转次数排行榜"}
</div>
{CarRoad[CarShow]?.type == 2 ? (
""
<div className="pos_zs">
<span
className={Roadturn ? "qse" : ""}
onClick={() => {
setRoadturn(true);
GetrateRank("1");
}}
>
周转率
</span>
<span
className={Roadturn ? "" : "qse"}
onClick={() => {
setRoadturn(false);
GetParkoverview("1");
}}
>
收费率
</span>
</div>
) : (
<div className="day_select">
{Dayfour.map((ele) => {
@ -1978,7 +2025,7 @@ const ParkingOverview = connect(function mapStateToProps(state) {
<span>
{CarRoad[CarShow]?.type == 2
? ele.rate || 0
: `${ele.paid_amount || 0}`}
: `${ele.total || 0}`}
</span>
</div>
<Progress
@ -1987,11 +2034,8 @@ const ParkingOverview = connect(function mapStateToProps(state) {
strokeWidth={6}
percent={
CarRoad[CarShow]?.type == 2
? ele?.rate?.slice(0, ele.rate.length - 1) || 0
: getPercentage(
ele.paid_amount || 0,
DataTop[0].paid_amount
)
? getPercentage(ele.rate || 0, DataTop[0].rate) || 0
: getPercentage(ele.total || 0, DataTop[0].total)
}
/>
</div>
@ -2030,25 +2074,19 @@ const ParkingOverview = connect(function mapStateToProps(state) {
<div className="tpph topt">
{/* <img src={TOP2} alt="" /> */}
<span>TOP2</span>
<p>
{Cartop[1]?.rate || 0}/{Cartop[1]?.rate || 0}
</p>
<p>收费率{Cartop[1]?.rate || 0}</p>
<div title={Cartop[1]?.name || ""}>{Cartop[1]?.name || ""}</div>
</div>
<div className="tpph topo">
{/* <img src={TOP1} alt="" /> */}
<span>TOP1</span>
<p>
{Cartop[0]?.rate || 0}/{Cartop[0]?.rate || 0}
</p>
<p>收费率{Cartop[0]?.rate || 0}</p>
<div title={Cartop[0]?.name || ""}>{Cartop[0]?.name || ""}</div>
</div>
<div className="tpph tops">
{/* <img src={TOP3} alt="" /> */}
<span>TOP3</span>
<p>
{Cartop[2]?.rate || 0}/{Cartop[2]?.rate || 0}
</p>
<p>收费率{Cartop[2]?.rate || 0}</p>
<div title={Cartop[2]?.name || ""}>{Cartop[2]?.name || ""}</div>
</div>
</div>

1
src/pages/FinancialMgm/SettleBill/GeneralBusiness/loadable.jsx

@ -90,6 +90,7 @@ function GeneralBusiness() {
{
title: "支付商户",
dataIndex: "tenantName",
width: 120,
key: "tenantName",
align: "center",
},

2
src/pages/InRoadMgm/EquipmentMgm/BarMgm/loadable.jsx

@ -413,7 +413,7 @@ function Fence(props) {
imgno={false}
/>
<ImportBtn
url="/api/bpm/device/import_pole_position"
url="/PMS/api/bpm/device/import_pole_position"
templateName="导入杆位模板.csv"
templateLink={importTemplateLink}
onOk={() => handleUploaded()}

17
src/pages/InRoadMgm/EquipmentMgm/EquipmentBrand/loadable.jsx

@ -430,7 +430,10 @@ function Fence(props) {
<Form.Item
label={"品牌编码"}
name={"code"}
rules={[{ required: true, message: '品牌编码不能为空' }]}
rules={[
{ required: true, message: '品牌编码不能为空' },
{ pattern: /^[^\u4e00-\u9fa5]+$/, message: '编码为英文或数字组合' }
]}
>
<Input/>
</Form.Item>
@ -462,7 +465,11 @@ function Fence(props) {
<Form.Item
label={"电话"}
name={"tel"}
rules={[{ required: true, message: '电话不能为空' }]}
validateTrigger="onBlur"
rules={[
{ required: true, message: '电话不能为空' },
{ pattern: /^1[3456789]\d{9}$/, message: "电话格式有误" }
]}
>
<Input/>
</Form.Item>
@ -471,7 +478,11 @@ function Fence(props) {
<Form.Item
label={"邮箱"}
name={"email"}
rules={[{ required: true, message: '邮箱不能为空' }]}
validateTrigger="onBlur"
rules={[
{ required: true, message: '邮箱不能为空' },
{ type: 'email', message: '邮箱地址有误' },
]}
>
<Input/>
</Form.Item>

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

@ -27,7 +27,7 @@ function Road(props) {
device_name: '',
device_code: '',
pole_position_code: '',
type_id: "0", //
type_id: -1, //
road_name: '',
operator: "0", //
operate_status: -1, //
@ -139,6 +139,10 @@ function Road(props) {
},
{
title: '设备厂商',
dataIndex: 'brand_name',
},
{
title: '商户名称',
dataIndex: 'operqator',
},
{

16
src/pages/InRoadMgm/EquipmentMgm/MonitorEquipment/loadable.jsx

@ -85,10 +85,13 @@ function Fence(props) {
})
}
const getBerthDataByNvr = (nvr) => {
ajax.getBerthByNvr(Object.assign({}, {nvr_id: nvr}, editStatus ? {} :{is_bind_monitor_device: 1})).then((e) => {
if (e.status == 20000) {
setBerthData(e.data.map((item) => ({key: item.value, title: item.label})))
}
return new Promise((resolved, rejected) => {
ajax.getBerthByNvr(Object.assign({}, {nvr_id: nvr}, editStatus ? {} :{is_bind_monitor_device: 1})).then((e) => {
if (e.status == 20000) {
setBerthData(e.data.map((item) => ({key: item.value, title: item.label})))
resolved()
}
})
})
}
const handleDelToServer = (id) => {
@ -108,8 +111,9 @@ function Fence(props) {
...item
})
setEditId(item.id)
getBerthDataByNvr(item.nvr_id)
setBerthSelectData(item.berth_ids ? item.berth_ids.split(',').map((v) => v) : [])
getBerthDataByNvr(item.nvr_id).then(() => {
setBerthSelectData(item.berth_ids ? item.berth_ids.split(',').map((v) => v) : [])
})
setEditModalVisible(true)
}
const editModalCancel = () => {

7
src/pages/MerchantMgm/FunctionMgm/index.scss

@ -350,5 +350,12 @@ $color-primary : var(--color-primary);
.rest {
margin-left: 10px;
}
.bind-tree {
.ant-tree-list {
max-height: 200px;
overflow-y: auto;
@include scrollBar("", "");
}
}
}
}

1168
src/pages/MerchantMgm/FunctionMgm/loadable.jsx
File diff suppressed because it is too large
View File

2
src/pages/MerchantMgm/MerchantInfo/loadable.jsx

@ -897,7 +897,7 @@ const MerchantInfo = (props) => {
>
<Cascader
className="yisa-cascader"
placeholder="商户名称"
placeholder="请选择"
options={tenantNamePull}
/></Form.Item>
}

4
src/pages/OperationCenter/ArrearsRecover/ArrearsCar/loadable.jsx

@ -203,8 +203,8 @@ function ArrearsCar() {
];
const formSearch = [
{
name: "plate",
type: "Input",
name: "carId",
type: "PlateSelect",
label: "车牌号",
placeholder: "请输入车牌号",
},

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

@ -247,7 +247,7 @@ function CarInfo() {
name: "timePeriod",
type: "RangePicker",
label: "时间段",
defaultValue: [moment().subtract(90, "day"), moment()],
defaultValue: [moment().subtract(89, "day"), moment()],
},
];
//退

3
src/pages/OperationCenter/UserMgm/UserInfo/index.scss

@ -5,6 +5,7 @@ $color-text: var(--color-text);
$color-primary: var(--color-primary);
.userinfo-box {
position: relative;
.ant-tabs-tabpane-hidden {
display: none;
}
@ -419,5 +420,5 @@ $color-primary: var(--color-primary);
background: #ffffff;
color: #000;
cursor: pointer;
z-index: 9999;
z-index: 99;
}

4
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/AddModal.jsx

@ -98,12 +98,14 @@ function AddModal(props) {
}
//
function submit() {
console.log(effectiveDateList)
return
form
.validateFields()
.then((res) => {
const params = {
...res,
property: effectiveDateList,// effectiveDateList[0]
property: effectiveDateList,// property: {rules:effectiveDateList},
};
fetch(params);
})

13
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/EffectiveDate.jsx

@ -103,6 +103,7 @@ function EffectiveDate(props) {
return false;
}
function submit() {
console.log(106,form.getFieldsValue())
form
.validateFields()
.then((values) => {
@ -119,12 +120,12 @@ function EffectiveDate(props) {
}
return (
<div>
<div className="effectivedate-box">
<Form
form={form}
initialValues={{
...record,
effective_date: moment(record.effective_date),
date: moment(record.date),
}}
disabled={disable}
>
@ -132,7 +133,7 @@ function EffectiveDate(props) {
<Col span={12}>
<Form.Item
label="生效日期"
name="effective_date"
name="date"
rules={[{ required: true }]}
>
<DatePicker />
@ -202,10 +203,10 @@ function EffectiveDate(props) {
});
const obj = {
...form.getFieldsValue(),
time_part_arr: _timePartList,
details: _timePartList,
};
if (obj.effective_date !== void 0) {
obj.effective_date = obj.effective_date.format("YYYY-MM-DD");
if (obj.date !== void 0) {
obj.date = obj.date.format("YYYY-MM-DD");
}
onChange(obj, itemKey);
setTimePartList(_timePartList);

121
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/TimePart.jsx

@ -23,7 +23,7 @@ function TimePart(props) {
} = props;
const record1 = {
"start": "00:00:00",
"end": "00:00:00",
"end": "13:00:00",
"limit": 0,
"items": [
{
@ -40,12 +40,97 @@ function TimePart(props) {
console.log(disable);
const valueChange = (value, all) => {
all.key = itemKey;
if (all.time_part) {
all.start = moment(all.time_part[0]).format('HH:mm:ss')
all.end = moment(all.time_part[1]).format('HH:mm:ss')
delete all.time_part
}
if (all.type == 0) {
all.items = [
{
"type": all.type,
"threshold": 0,
"period": all.time_before_minute,
"unit": all.time_before_money,
"segment": all.time_before,
},
{
"type": 2,
"threshold": 0,
"period": all.time_after_minute,
"unit": all.time_after_money,
"segment": all.time_before,
},
]
delete all.type
delete all.time_before_minute
delete all.time_before_money
delete all.time_before
delete all.time_after_minute
delete all.time_after_money
} else if (all.type == 1) {
all.items = [
{
"type": all.type,
"threshold": 0,
"unit": all.unit,
},
]
delete all.type
delete all.unit
} else {
all.items = [
{
"type": all.type,
"threshold": 0,
"period": all.period,
"unit": all.unit,
"segment": all.segment
},
]
delete all.type
delete all.period
delete all.unit
delete all.segment
}
console.log(66, all)
onChange(all);
};
useEffect(() => {
if (!record.items) return
if (record.items[0]?.type == 0) {
form.setFieldsValue({
...record,
type: record.items[0].type,
"time_before": record.items[0].segment,
"time_before_money": record.items[0].unit,
"time_before_minute": record.items[0].period,
"time_after_money": record.items[1].unit,
"time_after_minute": record.items[1].period,
"limit": record.limit,
time_part: [
moment(record.start, "HH:mm:ss"),
moment(record.end, "HH:mm:ss"),
],
})
} else {
form.setFieldsValue({
...record,
type: record.items[0]?.type,
"unit": record.items[0]?.unit,
"period": record.items[0]?.period,
//segment:record.items[0].segment,
"limit": record.limit,
time_part: [
moment(record.start, "HH:mm:ss"),
moment(record.end, "HH:mm:ss"),
],
})
}
}, [])
console.log(30, record)
return (
<div>
<div className="timepart-box">
<Form
form={form}
onValuesChange={valueChange}
@ -65,7 +150,7 @@ function TimePart(props) {
<Row gutter={[30]}>
<Col span={16}>
<Form.Item label={`时段${index}`} name="time_part">
<TimePicker.RangePicker style={{ width: "50%" }} order={false} />
<TimePicker.RangePicker style={{ width: "50%" }} order={false} secondStep={60} />
</Form.Item>
</Col>
<Col span={8}>
@ -77,13 +162,13 @@ function TimePart(props) {
</Col>
<Col span={24}>
<Form.Item label={`区间${index}`} name="interval" initialValue={1}>
<Form.Item label={`区间${index}`} name="type" initialValue={1}>
<Select
style={{ width: "20%" }}
options={[
{
label: "基础时段",
value: 1,
value: 0,
},
{
label: "周期计价",
@ -91,7 +176,7 @@ function TimePart(props) {
},
{
label: "按次计价",
value: 3,
value: 1,
},
]}
/>
@ -99,12 +184,12 @@ function TimePart(props) {
</Col>
<Col span={24}>
<Form.Item
shouldUpdate={(prev, next) => prev.interval !== next.interval}
shouldUpdate={(prev, next) => prev.type !== next.type}
>
{({ getFieldValue }) => {
const type = getFieldValue("interval");
const type = getFieldValue("type");
switch (type) {
case 1:
case 0:
return (
<>
<Input.Group compact>
@ -150,18 +235,18 @@ function TimePart(props) {
case 2:
return (
<Input.Group compact>
<Form.Item name="time_money" noStyle>
<Form.Item name="unit" noStyle>
<Input addonAfter={"元"} style={{ width: "20%" }} />
</Form.Item>
<div className="wenzi">/</div>
<Form.Item name="time_minute" noStyle>
<Form.Item name="period" noStyle>
<Input addonAfter={"分钟"} style={{ width: "20%" }} />
</Form.Item>
</Input.Group>
);
case 3:
case 1:
return (
<Form.Item name="money_per_time">
<Form.Item name="unit">
<Input addonAfter={"元/次"} style={{ width: "20%" }} />
</Form.Item>
);
@ -170,16 +255,16 @@ function TimePart(props) {
</Form.Item>
</Col>
<Form.Item
shouldUpdate={(prev, next) => prev.interval !== next.interval}
shouldUpdate={(prev, next) => prev.type !== next.type}
>
{({ getFieldValue }) => {
return (
(getFieldValue("interval") === 1 ||
getFieldValue("interval") === 2) && (
(getFieldValue("type") === 0 ||
getFieldValue("type") === 2) && (
<Col span={24}>
<Form.Item
label="时段最高收费金额"
name="time_max_money"
name="limit"
rules={[{ required: true }]}
>
<Input />

5
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/index.scss

@ -89,3 +89,8 @@ $color-primary: var(--color-primary);
margin: -5px 13px 0 5px !important;
font-size: 25px;
}
.effectivedate-box {
border: 1px solid #8d8d8d;
padding: 12px;
margin-bottom: 24px;
}

126
src/pages/OutRoadMgm/OutSegmentMgm/ChargeRulesMgm/loadable.jsx

@ -71,61 +71,77 @@ function ChargeRulesMgm() {
<a
onClick={() => {
ajax.getChargeRuleInfo({ id: record.id }).then((res) => {
// res = {
// "status": 20000,
// "message": "success",
// "data": {
// "feeName": "",
// "creatorName": "",
// "createdTime": "2022-12-13 11:51:23",
// "feeCode": "202212131150",
// "operationId": "1777347430730653926",
// "operationName": "",
// "description": "15420-1010 \n5/8/10/\n",
// "limit24hour": 0,
// "freeTime": 15,
// "freeTimeAbleF": [
// 1
// ],
// "freeTimeAbleFName": "",
// "typeF": 0,
// "typeFName": "",
// "evFreeTime": 0,
// "evFreeTimeAble": 0,
// "evFreeTimeAbleName": "",
// "property": {
// "id": 120,
// "freeTime": 15,
// "freeTimeAble": 1,
// "evFreeTime": 0,
// "evFreeTimeAble": 0,
// "limit24hour": "",
// "rules": [
// {
// "unitDelay": 1,
// "unitUp": 1,
// "date": "2022-12-13",
// "details": [
// {
// "start": "00:00:00",
// "end": "00:00:00",
// "limit": 0,
// "items": [
// {
// "type": 2,
// "threshold": 0,
// "period": 60,
// "unit": 8,
// "segment": 1440
// }
// ]
// }
// ]
// }
// ]
// }
// }
// }
res = {
"status": 20000,
"message": "success",
"data": {
"feeName": "凤凰山公园停车场旺季中型车",
"creatorName": "耿亮",
"createdTime": "2022-12-13 11:51:23",
"feeCode": "202212131150",
"operationId": "1777347430730653926",
"operationName": "公用事业集团",
"description": "免费15分钟4月20日-10月10日, \n小型车5元/小时,中型车8元/小时,大型车10元/小时\n",
"limit24hour": 0,
"freeTime": 15,
"freeTimeAbleF": [
1
],
"freeTimeAbleFName": "是",
"typeF": 0,
"typeFName": "否",
"evFreeTime": 0,
"evFreeTimeAble": 0,
"evFreeTimeAbleName": "否",
"property": {
"id": 120,
"freeTime": 15,
"freeTimeAble": 1,
"evFreeTime": 0,
"evFreeTimeAble": 0,
"limit24hour": "",
"rules": [
{
"unitDelay": 1,
"unitUp": 1,
"date": "2022-12-13",
"details": [
{
"start": "07:00:00",
"end": "13:00:00",
"limit": 0,
// "items": [
// {
// "type": 1,
// "threshold": 0,
// "period": 60,
// "unit": 8,
// "segment": 1440
// },
// {
// "type": 1,
// "threshold": 0,
// "period": 60,
// "unit": 8,
// "segment": 1440
// }
// ]
"items": [
{
"type": 1,
"threshold": 0,
"period": 60,
"unit": 2,
"segment": 120
},
]
}
]
}
]
}
}
}
if (res.status === 20000) {
console.log(res.data);
setAddModal({

2
src/pages/SystemMgm/AdminMgm/loadable.jsx

@ -566,6 +566,8 @@ function AdminMgm(props) {
getData(formData)
setGetRoleStatus(true)
setGetAreaStatus(false)
} else {
message.error(res.message)
}
})
}

6
src/pages/SystemMgm/AreaManage/loadable.jsx

@ -226,9 +226,11 @@ function AreaManage() {
areaTree.length ? (
<Tree
treeData={areaTree}
height={770}
titleRender={treeTitleRender}
autoExpandParent={true}
defaultExpandAll={true}
// autoExpandParent={true}
defaultExpandedKeys={["0-0"]}
// defaultExpandAll={true}
fieldNames={{
title: 'name'
}}

11
src/pages/SystemMgm/OrgnizationMgm/loadable.jsx

@ -543,13 +543,13 @@ function OrgnizationMgm() {
{ 'label': '添加', 'key': 'add' },
{ 'label': '编辑', 'key': 'edit' },
],
onClick: ({key}, _) => {
onClick: ({key, domEvent}, _) => {
if (key == 'add') {
handleOrgAdd(undefined, { level, pid, isTop: false, id, name })
handleOrgAdd(domEvent, { level, pid, isTop: false, id, name })
} else if (key == 'edit') {
handleOrgEdit(undefined, { level, pid, isTop: true, id, name })
handleOrgEdit(domEvent, { level, pid, isTop: true, id, name })
} else if (key == 'del') {
handleOrgDel(undefined, { name, id })
handleOrgDel(domEvent, { name, id })
}
}
}}
@ -583,7 +583,8 @@ function OrgnizationMgm() {
<Tree
defaultSelectedKeys={defaultTreeActiveKey}
treeData={orgTree}
defaultExpandAll={true}
// defaultExpandAll={true}
defaultExpandedKeys={["0-0"]}
titleRender={treeTitleRender}
onSelect={handleTreeClick}
fieldNames={{

16
src/services/ParkingOverview/index.js

@ -106,10 +106,10 @@ export default {
data: params,
});
},
//概览-收费top5
//泊车公司-概览-周转率
GetrateRank: (params) => {
return ajax({
url: "/api/ana/overview/rateRank",
url: "/api/ana/overview/roadTurnoverRate",
type: "get",
data: params,
});
@ -130,10 +130,10 @@ export default {
data: params,
});
},
//概览-车场收入排行榜
//区大屏-路段周转次数排行榜
GetParkparkIncomeRank: (params) => {
return ajax({
url: "/api/ana/overview/parkIncomeRank",
url: "/api/ana/overview/parkTurnoverRank",
type: "get",
data: params,
});
@ -146,4 +146,12 @@ export default {
data: params,
});
},
//泊车公司-概览-路段收费率排行榜
GetParkoverview: (params) => {
return ajax({
url: "/api/ana/overview/roadChargeRateRank",
type: "get",
data: params,
});
},
};
Loading…
Cancel
Save