Browse Source

fix():修复路内bug

tags/PMS_Frontend_v1.0.6-develop
guoxin 1 year ago
parent
commit
e7eda5a567
  1. 1
      package.json
  2. 182
      src/components/Map/Apimap/index.jsx
  3. 1
      src/components/MapComponets/Marker/index.jsx
  4. 4
      src/components/SelectLngLat/index.jsx
  5. 12
      src/pages/InRoadMgm/PersonMgm/Attendance/Fence/index.scss
  6. 129
      src/pages/InRoadMgm/PersonMgm/Attendance/Fence/loadable.jsx
  7. 12
      src/pages/InRoadMgm/PersonMgm/Attendance/ScheduleMgm/index.scss
  8. 82
      src/pages/InRoadMgm/PersonMgm/Attendance/ScheduleMgm/loadable.jsx
  9. 2
      src/pages/InRoadMgm/PersonMgm/Attendance/WorkerAttendance/loadable.jsx
  10. 1
      src/pages/InRoadMgm/PersonMgm/MesNotification/loadable.jsx
  11. 10
      src/pages/InRoadMgm/PersonMgm/PersonInfo/index.scss
  12. 7
      src/pages/InRoadMgm/PersonMgm/PersonInfo/loadable.jsx
  13. 2
      src/pages/InRoadMgm/RoadMgm/AddRoad/loadable.jsx
  14. 13
      src/pages/InRoadMgm/RoadMgm/ConfigRoad/loadable.jsx
  15. 12
      src/pages/InRoadMgm/RoadMgm/ParkList/loadable.jsx
  16. 9
      src/pages/InRoadMgm/Stuff/CategroyConf/loadable.jsx
  17. 9
      src/pages/InRoadMgm/Stuff/ModelConf/loadable.jsx
  18. 7
      src/pages/InRoadMgm/Stuff/StuffMgm/index.scss
  19. 84
      src/pages/InRoadMgm/Stuff/StuffMgm/loadable.jsx
  20. 26
      src/pages/InRoadMgm/Stuff/StuffStat/loadable.jsx
  21. 14
      src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreAudit/index.scss
  22. 61
      src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreAudit/loadable.jsx
  23. 2
      src/pages/SystemMgm/OrgnizationMgm/loadable.jsx

1
package.json

@ -60,7 +60,6 @@
"webpack-merge": "^5.8.0"
},
"dependencies": {
"@amap/amap-jsapi-loader": "^1.0.1",
"@loadable/component": "^5.15.2",
"ahooks": "^3.7.2",
"axios": "^0.26.0",

182
src/components/Map/Apimap/index.jsx

@ -1,95 +1,95 @@
import React, { useState, useEffect, useRef, useLayoutEffect } from "react";import L from "leaflet";
import "leaflet/dist/leaflet.css";
import "leaflet.chinatmsproviders";
import ajax from "@/services";
// import React, { useState, useEffect, useRef, useLayoutEffect } from "react";import L from "leaflet";
// import "leaflet/dist/leaflet.css";
// import "leaflet.chinatmsproviders";
// import ajax from "@/services";
function ModalMap(props) {
const {
setLnglat = () => {},
getLntLat = () => {},
searchLnglatValue = [],
} = props;
const mapConfig = {
center: sysConfig.map.center,
zoom: sysConfig.map.zoom,
zooms: sysConfig.map.zooms,
maxZoom: sysConfig.map.zooms[1],
minZoom: sysConfig.map.zooms[0],
mapTileHost: sysConfig.map.mapTileHost,
zoomOffset: sysConfig.map.zoomOffset,
mapTileType: sysConfig.map.mapTileType,
};
const [map, setMap] = useState(null);
const mapRef = useRef(null);
const initMap = () => {
// console.log(mapConfig);
// const _map = L.map("mapid", {
// scrollWheelZoom: true,
// zoomSnap: 1,
// crs: L.CRS.EPSG3857,
// }).setView([mapConfig.center[0], mapConfig.center[1]], mapConfig.zoom);
// L.tileLayer("{mapTileHost}/v3/tile?z={z}&x={x}&y={y}", {
// maxZoom: mapConfig.zooms[1],
// minZoom: mapConfig.zooms[0],
// zoomOffset: 0,
// mapTileHost: mapConfig.mapTileHost,
// }).addTo(_map);
// _map.on("click", function (e) {
// clearMarkers(_map);
// L.marker(e.latlng).addTo(_map);
// setLnglat([e.latlng.lng.toFixed(4), e.latlng.lat.toFixed(4)]);
// getLntLat([e.latlng.lng.toFixed(4), e.latlng.lat.toFixed(4)]);
// function ModalMap(props) {
// const {
// setLnglat = () => {},
// getLntLat = () => {},
// searchLnglatValue = [],
// } = props;
// const mapConfig = {
// center: sysConfig.map.center,
// zoom: sysConfig.map.zoom,
// zooms: sysConfig.map.zooms,
// maxZoom: sysConfig.map.zooms[1],
// minZoom: sysConfig.map.zooms[0],
// mapTileHost: sysConfig.map.mapTileHost,
// zoomOffset: sysConfig.map.zoomOffset,
// mapTileType: sysConfig.map.mapTileType,
// };
// const [map, setMap] = useState(null);
// const mapRef = useRef(null);
// const initMap = () => {
// // console.log(mapConfig);
// // const _map = L.map("mapid", {
// // scrollWheelZoom: true,
// // zoomSnap: 1,
// // crs: L.CRS.EPSG3857,
// // }).setView([mapConfig.center[0], mapConfig.center[1]], mapConfig.zoom);
// // L.tileLayer("{mapTileHost}/v3/tile?z={z}&x={x}&y={y}", {
// // maxZoom: mapConfig.zooms[1],
// // minZoom: mapConfig.zooms[0],
// // zoomOffset: 0,
// // mapTileHost: mapConfig.mapTileHost,
// // }).addTo(_map);
// // _map.on("click", function (e) {
// // clearMarkers(_map);
// // L.marker(e.latlng).addTo(_map);
// // setLnglat([e.latlng.lng.toFixed(4), e.latlng.lat.toFixed(4)]);
// // getLntLat([e.latlng.lng.toFixed(4), e.latlng.lat.toFixed(4)]);
// // });
// // _map.invalidateSize();
// // setMap(_map);
// // mapRef.current = _map;
// let _map = new AMap.Map("mapid", {
// resizeEnable: true,
// layers: [
// new AMap.TileLayer.Satellite(),
// new AMap.TileLayer.RoadNet()
// ]
// });
// _map.invalidateSize();
// setMap(_map);
// mapRef.current = _map;
let _map = new AMap.Map("mapid", {
resizeEnable: true,
layers: [
new AMap.TileLayer.Satellite(),
new AMap.TileLayer.RoadNet()
]
});
_map.setCenter([mapConfig.center[1], mapConfig.center[0]], mapConfig.zoom);
// _map.setCenter([mapConfig.center[1], mapConfig.center[0]], mapConfig.zoom);
setMap(_map)
_map.on('click', function(e) {
console.log(e)
// onClick(info)
setLnglat([e.lnglat.lng.toFixed(4), e.lnglat.lat.toFixed(4)]);
getLntLat([e.lnglat.lng.toFixed(4), e.lnglat.lat.toFixed(4)]);
})
mapRef.current = map
};
function clearMarkers(map) {
map.eachLayer(function (layer) {
if (layer instanceof L.Marker) {
map.removeLayer(layer);
}
});
}
useEffect(() => {
initMap();
return () => {
if (mapRef.current) {
mapRef.current.remove();
}
};
}, []);
useEffect(() => {
if (searchLnglatValue.length === 0) return;
mapRef.current.setView(searchLnglatValue, 13);
}, [searchLnglatValue]);
// setMap(_map)
// _map.on('click', function(e) {
// console.log(e)
// // onClick(info)
// setLnglat([e.lnglat.lng.toFixed(4), e.lnglat.lat.toFixed(4)]);
// getLntLat([e.lnglat.lng.toFixed(4), e.lnglat.lat.toFixed(4)]);
// })
// mapRef.current = map
// };
// function clearMarkers(map) {
// map.eachLayer(function (layer) {
// if (layer instanceof L.Marker) {
// map.removeLayer(layer);
// }
// });
// }
// useEffect(() => {
// initMap();
// return () => {
// if (mapRef.current) {
// mapRef.current.remove();
// }
// };
// }, []);
// useEffect(() => {
// if (searchLnglatValue.length === 0) return;
// mapRef.current.setView(searchLnglatValue, 13);
// }, [searchLnglatValue]);
return (
<div
id="mapid"
className="map"
style={{
height: "100%",
width: "100%",
}}
></div>
);
}
export default ModalMap;
// return (
// <div
// id="mapid"
// className="map"
// style={{
// height: "100%",
// width: "100%",
// }}
// ></div>
// );
// }
// export default ModalMap;

1
src/components/MapComponets/Marker/index.jsx

@ -185,6 +185,7 @@ function Marker(props, refs) {
useEffect(()=>{
if(getMapValue){
console.log(getMarker);
let lng = getMarker.lng
let lat = getMarker.lat
circlesRef.current && map.removeLayer(circlesRef.current)

4
src/components/SelectLngLat/index.jsx

@ -1,7 +1,7 @@
import React, { useState, useEffect, useRef, useLayoutEffect } from "react";
import { Button, Input, Modal, message } from "antd";
import { BaseMap } from "../MapComponets";
// import { Apimap } from "../Map";
import { Apimap } from "../Map";
import L from "leaflet";
import "leaflet/dist/leaflet.css";
import "leaflet.chinatmsproviders";
@ -62,7 +62,7 @@ function SelectLngLat(props) {
height: "500px",
}}
>
<BaseMap
<Apimap
// setLnglat={setLnglat}
// getLntLat={getLntLat}
// searchLnglatValue={searchLnglatValue}

12
src/pages/InRoadMgm/PersonMgm/Attendance/Fence/index.scss

@ -148,6 +148,10 @@ $color-primary : var(--color-primary);
}
.fence{
width: 660px !important;
.yisa-search{
display: flex;
line-height: 50px;
}
.fenceModal{
.selectSearch{
@ -179,8 +183,16 @@ $color-primary : var(--color-primary);
.attend{
display: flex;
.yisaSearch{
display: flex;
margin-left: 20px;
margin-top: 8px;
label{
line-height: 32px;
}
input{
height: 32px;
}
}
}
}

129
src/pages/InRoadMgm/PersonMgm/Attendance/Fence/loadable.jsx

@ -1,6 +1,6 @@
import React, { useState, useRef, useEffect } from "react";
import { ResultFlowResult, BaseMap, Marker } from "@/components"
import { Select, Input, Button, Table, message, Pagination, Cascader, Modal, TreeSelect } from 'antd'
import { Select, Input, Button, Table, message, Pagination, Cascader, Modal, TreeSelect, Transfer } from 'antd'
import {
pageSizeOptions
} from '@/config/character.config.js'
@ -13,17 +13,16 @@ function Fence(props) {
// const configData = props.sysConfig["lib-deploy"] || {};
const [ajaxLoading, setAjaxLoading] = useState(false)
const [getModalData, setGetModalData] = useState({
attendDistance: '',
effective: ''
attendDistance: '1',
effective: '1'
})
const [getEditModal, setGetEditModal] = useState({
attendDistance: '',
attend: '',
attendDistance: '1',
attendmin: '',
attendName: ''
})
const [getCanCaDer, setGetCanCaDer] = useState([])
const [getStatus, setGetStatus] = useState(0)
const [getMap, setGetMap] = useState(2)
const [getScope, setGetScope] = useState(2)
const [getPark, setGetPark] = useState([])
@ -44,6 +43,7 @@ function Fence(props) {
const [attendanceVisible, setAttendanceVisible] = useState(false)
const [placeVisible, setPlaceVisible] = useState(false)
const [markers, setMarkers] = useState([])
console.log(markers);
//
const handleLoginName = (v) => {
setFormData({ ...formData, parkName: v.target.value })
@ -74,12 +74,32 @@ function Fence(props) {
setFormData({ ...formData, enable: value })
}
//
const [targetKeys, setTargetKeys] = useState([]);
const [selectedKeys, setSelectedKeys] = useState([]);
// const filterOption = (inputValue, option) => option.description.indexOf(inputValue) > -1;
const handleChange = (newTargetKeys) => {
console.log(newTargetKeys);
if (getScope == '1') {
setValuePark(newTargetKeys);
}
setTargetKeys(newTargetKeys);
};
const onSelectChange = (sourceSelectedKeys, targetSelectedKeys) => {
setSelectedKeys([...sourceSelectedKeys, ...targetSelectedKeys]);
};
const [treeData, setTreeData] = useState([])
const getParkList = () => {
ajax.getParkData().then(res => {
if (res.status === 20000) {
console.log(res);
setTreeData(res.data)
// const data=res.data.map((item)=>item.value)
const allData = [...res.data].map(
(item) => {
item.key = item.value;
return item;
}
);
// setTargetKeys(data)
setTreeData(allData)
}
})
@ -211,8 +231,8 @@ function Fence(props) {
const creatModal = () => {
setCreatVisible(false)
setGetModalData({
attendDistance: '',
effective: ''
attendDistance: '1',
effective: '1'
})
}
const getCascaderList = () => {
@ -225,55 +245,47 @@ function Fence(props) {
}
})
}
//
const [getStatus, setGetStatus] = useState('1')
const handleAttendDistance = (v) => {
setGetModalData({ attendDistance: v })
setGetModalData({ ...getModalData, attendDistance: v })
setGetStatus(v)
}
const handleDistance = (v) => {
setGetEditModal({ attendDistance: v })
setGetEditModal({ ...getEditModal, attendDistance: v })
setGetMap(v)
}
//
const handleType = (v) => {
setGetModalData({ attendmin: v.target.value })
setGetModalData({ ...getModalData, attendmin: v.target.value })
}
const handleMapType = (v) => {
setGetEditModal({ attend: v.target.value })
setGetEditModal({ ...getEditModal, attend: v.target.value })
}
const [getScopeValue, setGetScopeValue] = useState('1')
const handleScope = (value) => {
setGetModalData({
...getModalData,
effective: value
})
if (value == 1) {
setGetScope(2)
}
if (value == 2) {
setGetScope(1)
setGetScopeValue(value)
}
useEffect(() => {
if (getScopeValue == '1') {
setGetScope('2')
}
const [value, setValue] = useState([]);
const onChange = (newValue) => {
if (getScope === 1) {
setValue(newValue);
if (getScopeValue == '2') {
setGetScope('1')
}
};
const tProps = {
treeData,
value,
onChange,
treeCheckable: true,
showCheckedStrategy: SHOW_PARENT,
placeholder: 'Please select',
style: {
width: '170px',
marginLeft: '10px',
marginTop: '10px'
},
};
}, [getScopeValue])
const [valuePark, setValuePark] = useState([]);
//
const saveBtn = () => {
let getValue = value
if (getScopeValue === '2' && targetKeys.length === 0) {
message.error('请选择停车场')
}else{
let getValue = valuePark
let result = getValue.join(",")
if (getScope === 2) {
let data = {
@ -284,9 +296,11 @@ function Fence(props) {
setCreatVisible(false)
getData(formData)
setGetModalData({
attendDistance: '',
effective: ''
attendDistance: '1',
effective: '1',
})
setGetScopeValue(1)
setTargetKeys([])
}
})
} else {
@ -299,22 +313,28 @@ function Fence(props) {
setCreatVisible(false)
getData(formData)
setGetModalData({
attendDistance: '',
effective: ''
attendDistance: '1',
effective: '1'
})
setGetScopeValue(1)
setTargetKeys([])
}
})
}
}
}
//
const cancelBtn = () => {
setCreatVisible(false)
setGetModalData({
attendDistance: '',
effective: ''
attendDistance: '1',
effective: '1'
})
setGetScopeValue(1)
setTargetKeys([])
}
//
const attendanceModal = () => {
@ -461,12 +481,13 @@ function Fence(props) {
title='批量设置'
>
<div className="fenceModal">
<div className="yisa-search">
<div className="yisa-logo">
<label>停车场</label>
<label className="selectSearch">以所在停车场为准</label>
</div>
<div className="attend">
<div className="yisa-search">
<div className="redLogo">*</div>
<label>有效范围</label>
<Select
style={{ width: 170, marginLeft: 22 }}
@ -487,6 +508,7 @@ function Fence(props) {
{
getStatus == '2' ?
<div className="yisaSearch ">
<div className="redLogo">*</div>
<label>有效范围</label>
<Input
placeholder="请输入内容"
@ -508,6 +530,7 @@ function Fence(props) {
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>生效范围</label>
<Select
style={{ width: 170, marginLeft: 22 }}
@ -528,8 +551,19 @@ function Fence(props) {
{
getScope == '1' ?
<div className="yisa-search">
<div className="redLogo">*</div>
<label>选择停车场</label>
<TreeSelect {...tProps} />
<Transfer
dataSource={treeData}
showSearch
titles={["未选择", "已选择"]}
// filterOption={filterOption}
targetKeys={targetKeys}
onChange={handleChange}
selectedKeys={selectedKeys}
onSelectChange={onSelectChange}
render={(item) => item.title}
/>
</div> : ''
}
@ -577,7 +611,6 @@ function Fence(props) {
value={getEditModal.attendmin}
style={{ width: 170, marginLeft: 15 }}
type="number"
οninput="if(value>2000)value=2000"
onChange={handleMapType}
/>
<label></label>

12
src/pages/InRoadMgm/PersonMgm/Attendance/ScheduleMgm/index.scss

@ -149,13 +149,23 @@ $color-primary : var(--color-primary);
}
.revenue{
.yisa-search{
margin-top: 10px;
display: flex;
label{
line-height: 31px;
}
.redLogo{
line-height: 35px;
}
}
.tab-title{
text-align: center;
font-size: 18px;
font-weight: 400;
font-family: Microsoft YaHei, Microsoft YaHei-Regular;
}
width: 700px !important;
width: 730px !important;
.tab-index{
.tab-top{
display: flex;

82
src/pages/InRoadMgm/PersonMgm/Attendance/ScheduleMgm/loadable.jsx

@ -26,7 +26,7 @@ function ScheduleMgm(props) {
const [formData, setFormData] = useState({
scheduleName: '',//
operationName: '',//
state: '',//
state: 0,//
pn: 1,
page_size: Number(pageSizeOptions[0]), //
})
@ -148,12 +148,28 @@ function ScheduleMgm(props) {
//
const cancel = () => {
setCreatVisible(false)
setModalData({
scheduleName: '',//
operationId: '',//
beforeTime: '',//
onTime: null,//
offTime: null,//
afterTime: ''//
})
}
const DetailCancel = () => {
setDetailVisible(false)
}
const translateCancel = () => {
setTranslateVisible(false)
setEditModal({
scheduleName: '',//
operationId: '',//
beforeTime: '',//
onTime: null,//
offTime: null,//
afterTime: ''//
})
}
//
const addClasses = () => {
@ -190,6 +206,14 @@ function ScheduleMgm(props) {
if (res.status === 20000) {
setCreatVisible(false)
getData(formData)
setModalData({
scheduleName: '',//
operationId: '',//
beforeTime: '',//
onTime: null,//
offTime: null,//
afterTime: ''//
})
}
})
}
@ -218,6 +242,14 @@ function ScheduleMgm(props) {
if (res.status === 20000) {
setTranslateVisible(false)
getData(formData)
setEditModal({
scheduleName: '',//
operationId: '',//
beforeTime: '',//
onTime: null,//
offTime: null,//
afterTime: ''//
})
}
})
}
@ -312,7 +344,10 @@ function ScheduleMgm(props) {
const [getOperationName, setGetOperationName] = useState([])
const operationName = () => {
ajax.getAllOperator().then(res => {
setGetOperationName(res.data)
let arr = res.data
let newArr = arr.slice(1)
console.log(newArr);
setGetOperationName(newArr)
})
}
useEffect(() => {
@ -352,14 +387,14 @@ function ScheduleMgm(props) {
value={formData.state}
options={[
{
value: '0',
value: 0,
label: '全部'
},
{
value: '1',
value: 1,
label: '有效'
}, {
value: '2',
value: 2,
label: '无效'
}
]}
@ -417,6 +452,7 @@ function ScheduleMgm(props) {
>
<div className="selectChance">
<div className="yisa-search">
<div className="redLogo">*</div>
<label>班次名称</label>
<Input
placeholder="请输入班次名称"
@ -432,12 +468,13 @@ function ScheduleMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>所属运营商</label>
<Select
style={{ width: 256, marginLeft: 20 }}
// allowClear
value={modalData.operationId}
options={operator}
options={getOperationName}
onChange={(v, option) => {
setModalData(
Object.assign({}, modalData, { operationId: v, operationName: option.label })
@ -447,9 +484,11 @@ function ScheduleMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>上班时间前</label>
<Input
value={modalData.beforeTime}
type="number"
style={{ width: 256, marginLeft: 17 }}
onChange={(v) => {
setModalData(
@ -461,19 +500,23 @@ function ScheduleMgm(props) {
<label className="timeChance">分钟可打卡<span>(不能早于上班时间的180分钟)</span></label>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>上班时间</label>
<TimePicker onChange={goingWork} format={format} style={{ marginLeft: 30 }} />
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>下班时间</label>
<TimePicker onChange={leavingWork} format={format} style={{ marginLeft: 30 }} />
</div>
<div className="yisa-search">
<label>上班时间后</label>
<div className="redLogo">*</div>
<label>下班时间后</label>
<Input
value={modalData.afterTime}
style={{ width: 256, marginLeft: 17 }}
// allowClear
type="number"
onChange={(v) => {
setModalData(
Object.assign({}, modalData, { afterTime: v.target.value })
@ -497,6 +540,7 @@ function ScheduleMgm(props) {
>
<div className="selectChance">
<div className="yisa-search">
<div className="redLogo">*</div>
<label>班次名称</label>
<Input
placeholder="请输入班次名称"
@ -513,12 +557,13 @@ function ScheduleMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>所属运营商</label>
<Select
style={{ width: 256, marginLeft: 20 }}
// allowClear
value={getDetail.operationName}
options={operator}
options={getOperationName}
onChange={(v, option) => {
setModalData(
Object.assign({}, modalData, { operationId: v, operationName: option.label })
@ -529,11 +574,13 @@ function ScheduleMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>上班时间前</label>
<Input
value={getDetail.beforeTime}
style={{ width: 256, marginLeft: 17 }}
disabled={true}
type="number"
onChange={(v) => {
setModalData(
Object.assign({}, modalData, { beforeTime: v.target.value })
@ -544,19 +591,24 @@ function ScheduleMgm(props) {
<label className="timeChance">分钟可打卡<span>(不能早于上班时间的180分钟)</span></label>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>上班时间</label>
<TimePicker onChange={goingWork} disabled format={format} value={moment(getDetail.onTime, 'HH:mm')} style={{ marginLeft: 30 }} />
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>下班时间</label>
<TimePicker onChange={leavingWork} disabled format={format} value={moment(getDetail.offTime, 'HH:mm')} style={{ marginLeft: 30 }} />
</div>
<div className="yisa-search">
<label>上班时间后</label>
<div className="redLogo">*</div>
<label>下班时间后</label>
<Input
value={getDetail.afterTime}
style={{ width: 256, marginLeft: 17 }}
disabled={true}
type="number"
onChange={(v) => {
setModalData(
Object.assign({}, modalData, { afterTime: v.target.value })
@ -579,6 +631,7 @@ function ScheduleMgm(props) {
>
<div className="selectChance">
<div className="yisa-search">
<div className="redLogo">*</div>
<label>班次名称</label>
<Input
placeholder="请输入班次名称"
@ -592,12 +645,13 @@ function ScheduleMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>所属运营商</label>
<Select
style={{ width: 256, marginLeft: 20 }}
// allowClear
value={editModal.operationName}
options={operator}
options={getOperationName}
onChange={(v, option) => {
let data = JSON.stringify(option)
if (data != '{}') {
@ -614,10 +668,12 @@ function ScheduleMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>上班时间前</label>
<Input
value={editModal.beforeTime}
style={{ width: 256, marginLeft: 17 }}
type="number"
onChange={(v) => {
setEditModal(
Object.assign({}, editModal, { beforeTime: v.target.value })
@ -628,18 +684,22 @@ function ScheduleMgm(props) {
<label className="timeChance">分钟可打卡<span>(不能早于上班时间的180分钟)</span></label>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>上班时间</label>
<TimePicker onChange={goingEditWork} format={format} value={moment(editModal.onTime, 'HH:mm')} style={{ marginLeft: 30, width: 100 }} />
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>下班时间</label>
<TimePicker onChange={leavingEditWork} format={format} value={moment(editModal.offTime, 'HH:mm')} style={{ marginLeft: 30, width: 100 }} />
</div>
<div className="yisa-search">
<label>上班时间后</label>
<div className="redLogo">*</div>
<label>下班时间后</label>
<Input
value={editModal.afterTime}
style={{ width: 256, marginLeft: 17 }}
type="number"
onChange={(v) => {
setEditModal(
Object.assign({}, editModal, { afterTime: v.target.value })

2
src/pages/InRoadMgm/PersonMgm/Attendance/WorkerAttendance/loadable.jsx

@ -400,6 +400,7 @@ function WorkerAttendance(props) {
type === 'day' ?
<RangePicker
value={[moment(formData.start_time), moment(formData.end_time)]}
allowClear={false}
onChange={(value, dateString) => {
setFormData({
...formData,
@ -410,6 +411,7 @@ function WorkerAttendance(props) {
}} /> :
<RangePicker picker="month"
value={[moment(formData.start_time), moment(formData.end_time)]}
allowClear={false}
onChange={(value, dateString) => {
setFormData({
...formData,

1
src/pages/InRoadMgm/PersonMgm/MesNotification/loadable.jsx

@ -360,6 +360,7 @@ function loadable() {
tableData={resultData}
formSearch={formSearch}
total={total}
isExport={false}
search={search}
pageName={'mesNotification'}
//exportUrl={exportUrl}

10
src/pages/InRoadMgm/PersonMgm/PersonInfo/index.scss

@ -132,6 +132,14 @@
.cc-form-select {
margin-bottom: 12px;
}
.yisa-search {
position: relative;
.redLogo {
position: absolute;
left: 50px;
top: 7px;
}
}
}
.transfer-wrapper {
display: flex;
@ -144,7 +152,7 @@
.redLogo {
position: absolute;
left: 52px;
top:1px
top: 1px;
}
}
.btn-wrapper {

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

@ -374,7 +374,7 @@ function PersonInfo() {
message.error('请输入员工编号')
} else if (currentPersonInfo.road_ids === '') {
message.error('请选择路段')
} else if (currentPersonInfo) {
} else if (!showEdit) {
ajax.editUserPersonInfo({ ...currentPersonInfo, id: currentPersonId }).then(res => {
if (res.status == 20000) {
message.success(res.message)
@ -640,12 +640,15 @@ function PersonInfo() {
showClose={true}
onChange={e => { setCurrentPersonInfo({ ...currentPersonInfo, name: e.target.value }) }}
/>
<div className="yisa-search">
<div className="redLogo">*</div>
<FormDatePicker
yisaLabel="出生年份"
onChange={(e) => { setCurrentPersonInfo({ ...currentPersonInfo, birth_year: e.format('YYYY') }) }}
value={currentPersonInfo.birth_year ? moment(currentPersonInfo.birth_year + '') : ''}
picker="year"
/>
</div>
<FormInput
isRequired={true}
yisaLabel="员工编号"
@ -710,7 +713,7 @@ function PersonInfo() {
onChange={e => { setCurrentPersonInfo({ ...currentPersonInfo, depart_id: e }) }}
/>
<FormSelect
required={true}
// required={true}
yisaLabel="资产名称"
yisaData={assetEditOptions}
mode="multiple"

2
src/pages/InRoadMgm/RoadMgm/AddRoad/loadable.jsx

@ -19,7 +19,7 @@ import {
import { PlusOutlined } from "@ant-design/icons";
import { useLocation, useNavigate } from "react-router-dom";
import { ImgUpload, TreeSelectGroup, SelectLntLat, SelectGaodeLngLat } from "@/components";
import { ImgUpload, TreeSelectGroup, SelectLntLat} from "@/components";
import moment from "moment";
import "./index.scss";
import ajax from "@/services";

13
src/pages/InRoadMgm/RoadMgm/ConfigRoad/loadable.jsx

@ -1778,6 +1778,15 @@ function ConfigRoad() {
setEditBerthModal(false);
}}
onOk={() => {
if(berthForm.getFieldsValue().berth_code === null){
message.error('请填写泊位号')
}else if (berthForm.getFieldsValue().etc_status === null) {
message.error('请选择ETC是开开启')
}else if (berthForm.getFieldsValue().service_type === null) {
message.error('请选择服务属性')
}else if (berthForm.getFieldsValue().berth_type === null) {
message.error('请选择泊位类型')
}else {
let arr = berthForm.getFieldsValue().etc_status
let str = arr.toString()
const params = {
@ -1829,6 +1838,9 @@ function ConfigRoad() {
addBerth(params)
break;
}
}
}}
>
<div
@ -1878,6 +1890,7 @@ function ConfigRoad() {
</Form.Item>
<Form.Item label="ETC是否开启" name="etc_status" required>
<Radio.Group
placeholder="请选择ETC是否开启"
options={[
{
label: "否",

12
src/pages/InRoadMgm/RoadMgm/ParkList/loadable.jsx

@ -212,7 +212,13 @@ function ParkList() {
setPageData({ pn, page_size });
}
function search() {
function search(params) {
if(params){
setPageData({
pn: 1,
page_size: 15
})
}else{
const params = { ...searchForm.getFieldsValue(), ...pageData };
ajax.getBerthList(params).then((res) => {
@ -224,6 +230,7 @@ function ParkList() {
}
});
}
}
//
function renderSearch(params) {
@ -284,6 +291,7 @@ function ParkList() {
}
const reastBtn=()=>{
searchForm.resetFields();
search();
}
useEffect(() => {
search();
@ -296,7 +304,7 @@ const reastBtn=()=>{
{renderSearch()}
<div className="bottomBox">
<Button className="reset" onClick={reastBtn}>清空</Button>
<Button type="primary" className="submit" onClick={search}>
<Button type="primary" className="submit" onClick={() => search(pageData.pn)}>
查询
</Button>
</div>

9
src/pages/InRoadMgm/Stuff/CategroyConf/loadable.jsx

@ -17,12 +17,13 @@ function CategroyConf(props) {
export_url: '',
process_url: ""
})
const [formData, setFormData] = useState({
const parameter={
brand_id: '',//
operatorid: '',//
pn: 1,
page_size: Number(pageSizeOptions[0]), //
})
}
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const [checkVisible, setCheckVisible] = useState(false)
const [editVisible, setEditVisible] = useState(false)
@ -292,7 +293,9 @@ function CategroyConf(props) {
if (sessionTabList && Object.values(sessionTabList).length > 0) {
setFormData({
brand_id: sessionTabList?.brand_id,
operatorid: sessionTabList?.operatorid
operatorid: sessionTabList?.operatorid,
pn: sessionTabList?.pn,
page_size: sessionTabList?.page_size,
})
}
}, [])

9
src/pages/InRoadMgm/Stuff/ModelConf/loadable.jsx

@ -17,13 +17,14 @@ function ModelConf(props) {
export_url: '',
process_url: ""
})
const [formData, setFormData] = useState({
const parameter={
model_id: '',//
operator_id: '',//
model_name:'',
pn: 1,
page_size: Number(pageSizeOptions[0]), //
})
}
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
const lastFormDataRef = useRef(formData)
const [checkVisible, setCheckVisible] = useState(false)
@ -316,7 +317,9 @@ function ModelConf(props) {
setFormData({
model_id: sessionTabList?.model_id,
operator_id: sessionTabList?.operator_id,
model_name: sessionTabList?.model_name
model_name: sessionTabList?.model_name,
pn: sessionTabList?.pn,
page_size: sessionTabList?.page_size,
})
}
}, [])

7
src/pages/InRoadMgm/Stuff/StuffMgm/index.scss

@ -244,7 +244,8 @@ $color-primary : var(--color-primary);
.add{
margin-left: 100px;
.yisa-search{
margin-top: 20px;
margin-top: 10px;
display: flex;
}
.submitBtn{
margin-left: 54px;
@ -261,10 +262,10 @@ $color-primary : var(--color-primary);
.cancel{
width: 80px;
height: 35px;
background: #fff;
background: #3e4557;
border: none;
border-radius: 4px;
color: #3e4557;
color: #fff;
cursor: pointer;
margin-left: 20px;
}

84
src/pages/InRoadMgm/Stuff/StuffMgm/loadable.jsx

@ -21,18 +21,19 @@ function StuffMgm(props) {
export_url: '',
process_url: ""
})
const [formData, setFormData] = useState({
region_id: '',//
const parameter={
region_id: [],//
code: '',//
brand_id: '',//
model_id: '',//
operatorid: '',//
operatorid: '0',//
name: '',//
status: '',//
uid: '',//
pn: 1,
page_size: Number(pageSizeOptions[0]), //
})
}
const [formData, setFormData] = useState(parameter )
const [lastFormData, setLastFormData] = useState(formData)
const [checkVisible, setCheckVisible] = useState(false)
const [editVisible, setEditVisible] = useState(false)
@ -176,7 +177,7 @@ function StuffMgm(props) {
}
//
const [getEditData, setGetEditData] = useState({
region_id: '',//
region_id: null,//
operatorid: '',
code: '',
name: '',
@ -239,7 +240,7 @@ function StuffMgm(props) {
//
const getResetData = () => {
setFormData({
...parameter
...parameter,
})
getData({ ...parameter })
}
@ -365,7 +366,7 @@ function StuffMgm(props) {
setAddVisible(false)
}
let param = {
region_id: '',//
region_id:null,//
operatorid: '',
code: '',
name: '',
@ -413,6 +414,9 @@ function StuffMgm(props) {
}
if (v == 1) {
setGetSelectStatus(true)
setCheckData({
uid:''
})
}
}
//
@ -435,11 +439,23 @@ function StuffMgm(props) {
message.error('请选择物品类型')
} else if (checkData.model_id == '') {
message.error('请选择物品型号')
} else if (checkData.status == '') {
message.error('请输入状态')
} else {
ajax.saveData(data).then((res) => {
if (res.status === 20000) {
setAddVisible(false)
getData(formData)
setCheckData({
region_id: null,//
operatorid: '',
code: '',
name: '',
brand_id: '',
model_id: '',
status: '',
uid: ''
})
}
})
}
@ -467,6 +483,8 @@ function StuffMgm(props) {
message.error('请选择物品类型')
} else if (getEditData.model_id == '') {
message.error('请选择物品型号')
} else if (getEditData.status == '') {
message.error('请输入状态')
}else {
ajax.saveEditData(data).then((res) => {
if (res.status === 20000) {
@ -477,8 +495,30 @@ function StuffMgm(props) {
}
}
const placeBtn = () => {
setAddVisible(false)
setEditVisible(false)
setGetEditData({
region_id: null,//
operatorid: '',
code: '',
name: '',
brand_id: '',
model_id: '',
status: '',
uid: ''
})
}
const addplaceBtn=()=>{
setAddVisible(false)
setCheckData({
region_id: null,//
operatorid: '',
code: '',
name: '',
brand_id: '',
model_id: '',
status: '',
uid: ''
})
}
useEffect(() => {
assetsModelName()
@ -499,6 +539,8 @@ function StuffMgm(props) {
name: sessionTabList?.name,//
status: sessionTabList?.status,//
uid: sessionTabList?.uid,//
pn: sessionTabList?.pn,
page_size: sessionTabList?.page_size,
})
}
}, [])
@ -686,6 +728,7 @@ function StuffMgm(props) {
>
<div className="add">
<div className="yisa-search">
<div className="redLogo">*</div>
<label>区域</label>
<Cascader options={getCanCaDer}
onChange={onChange}
@ -699,6 +742,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>商户名称</label>
<Select
style={{ width: 180, marginLeft: 20 }}
@ -708,6 +752,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品编号</label>
<Input
placeholder="请输入"
@ -717,6 +762,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品名称</label>
<Input
placeholder="请输入"
@ -726,8 +772,10 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品类型</label>
<Select
placeholder="请选择"
value={checkData.brand_id}
style={{ width: 180, marginLeft: 20 }}
options={getOperationName}
@ -735,6 +783,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品型号</label>
<Select
placeholder="请选择"
@ -745,6 +794,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>状态</label>
<Select
style={{ width: 180, marginLeft: 47 }}
@ -764,7 +814,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<label>领用人</label>
<label style={{marginLeft:17}}>领用人</label>
<Select
style={{ width: 180, marginLeft: 33 }}
placeholder="请选择"
@ -778,7 +828,7 @@ function StuffMgm(props) {
<button type="primary" className="submit colorBtn" onClick={() => { placeSaveBtn() }}>
提交
</button>
<button type="primary" className="cancel colorReset" onClick={() => { placeBtn() }}>
<button type="primary" className="cancel colorReset" onClick={() => { addplaceBtn() }}>
取消
</button>
</div>
@ -792,6 +842,7 @@ function StuffMgm(props) {
>
<div className="add">
<div className="yisa-search">
<div className="redLogo">*</div>
<label>区域</label>
<Cascader
options={getCanCaDer}
@ -810,10 +861,12 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>商户名称</label>
<Select
style={{ width: 180, marginLeft: 20 }}
value={getEditData.operatorid}
disabled={true}
options={getMerchantDataName}
onChange={(value) => {
setGetEditData(
@ -823,6 +876,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品编号</label>
<Input
placeholder="请输入"
@ -836,6 +890,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品名称</label>
<Input
placeholder="请输入"
@ -849,6 +904,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品类型</label>
<Select
value={getEditData.brand_id}
@ -862,6 +918,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>物品型号</label>
<Select
placeholder="请选择"
@ -876,6 +933,7 @@ function StuffMgm(props) {
/>
</div>
<div className="yisa-search">
<div className="redLogo">*</div>
<label>状态</label>
<Select
style={{ width: 180, marginLeft: 47 }}
@ -894,12 +952,16 @@ function StuffMgm(props) {
{
value: '1',
label: '空闲'
},
{
value: '2',
label: '废弃'
}
]}
/>
</div>
<div className="yisa-search">
<label>领用人</label>
<label style={{marginLeft:17}}>领用人</label>
<Select
style={{ width: 180, marginLeft: 33 }}
placeholder="请选择"

26
src/pages/InRoadMgm/Stuff/StuffStat/loadable.jsx

@ -16,13 +16,14 @@ function StuffStat(props) {
export_url: '',
process_url: ""
})
const [formData, setFormData] = useState({
const parameter={
operatorid: '',
brand_id: '',
model_id: '',
pn: 1,
page_size: Number(pageSizeOptions[0]), //
})
}
const [formData, setFormData] = useState(parameter)
const [lastFormData, setLastFormData] = useState(formData)
//
const handleJobStatus = (value) => {
@ -49,6 +50,13 @@ function StuffStat(props) {
}
return result;
}
//
const getResetData = () => {
setFormData({
...parameter
})
getData({ ...parameter })
}
//
const deployListColumns = [
{
@ -139,13 +147,7 @@ function StuffStat(props) {
const getSearchData = (data = formData) => {
getData(data)
}
//
const getResetData = () => {
setFormData({
...parameter
})
getData({ ...parameter })
}
const [getOperationName, setGetOperationName] = useState([])
const operationName = () => {
ajax.assetsType().then(res => {
@ -182,10 +184,13 @@ function StuffStat(props) {
setFormData({
brand_id: sessionTabList?.brand_id,
model_id: sessionTabList?.model_id,
operatorid: sessionTabList?.operatorid
operatorid: sessionTabList?.operatorid,
pn: sessionTabList?.pn,
page_size: sessionTabList?.page_size,
})
}
}, [])
console.log(formData);
useEffect(() => {
setSessionTabList({
...formData
@ -195,7 +200,6 @@ function StuffStat(props) {
getData()
merchantDataName()
operationName()
}, [])
return <>
<div className="paid-StuffStat">

14
src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreAudit/index.scss

@ -204,6 +204,16 @@ $color-primary : var(--color-primary);
cursor: pointer;
border-radius: 7px;
}
.rejectBtn{
width: 79px;
height: 34px;
background: white;
cursor: pointer;
border: none;
color: black;
border-radius: 7px;
margin-left: 10px;
}
}
}
.rejectModal{
@ -214,6 +224,10 @@ $color-primary : var(--color-primary);
line-height: 31px;
}
}
.font{
text-align: center;
font-size: 16;
}
.btn{
text-align: end;
margin-top: 20px;

61
src/pages/OperationCenter/GeoSignalIgnore/GeoSignalIgnoreAudit/loadable.jsx

@ -28,6 +28,7 @@ function GeoSignalIgnoreAudit(props) {
const [imgVisible, setImgVisible] = useState(false)
const [passVisible, setPassVisible] = useState(false)
const [rejectVisible, setRejectVisible] = useState(false)
const [reject, setReject] = useState(false)
//
const handleJobStatus = (value) => {
setFormData({ ...formData, auditType: value })
@ -152,19 +153,23 @@ function GeoSignalIgnoreAudit(props) {
setPassVisible(false)
}
const [getMessage, setGetMessage] = useState({})
const [getPassValue, setGetPassValue] = useState({})
const passBtn = (record) => {
setGetPassValue(record)
setPassVisible(true)
}
const passModalBtn = () => {
let data = {
id: record.id
id: getPassValue.id
}
ajax.getPassData(data).then(res => {
if (res.status === 20000) {
setGetMessage(res.message)
setPassVisible(true)
getData(formData)
setPassVisible(false)
}
})
}
const passModalBtn = () => {
const passModalCancel = () => {
setPassVisible(false)
}
//
@ -172,24 +177,35 @@ function GeoSignalIgnoreAudit(props) {
note: ''
})
const handleNote = (v) => {
setGetNote(v.target.value)
setGetNote({ ...getNote, note: v.target.value })
}
const [getRejectId, setGetRejectId] = useState({})
const rejectBtn = (record) => {
setGetRejectId(record.id)
setRejectVisible(true)
}
const reModal = () => {
setReject(false)
}
const rejectModalBtn = () => {
if (getNote.note === '') {
message.error('请输入驳回原因')
} else {
setReject(true)
setRejectVisible(false)
}
}
const reBtn = () => {
let data = {
id: getRejectId,
note: getNote
note: getNote.note
}
if (getNote === '') {
message.error('请输入驳回原因')
} else {
ajax.getRejectData(data).then(res => {
if (res.status === 20000) {
setRejectVisible(false)
setReject(false)
setGetNote({
note: ''
})
@ -198,12 +214,16 @@ function GeoSignalIgnoreAudit(props) {
})
}
}
const rejectModal = () => {
const rejectCancel = () => {
setRejectVisible(false)
}
const rejectCancel = () => {
const reCancel = () => {
setReject(false)
}
const rejectModal = () => {
setRejectVisible(false)
}
//
const getData = (data = formData) => {
setAjaxLoading(true)
@ -394,8 +414,11 @@ function GeoSignalIgnoreAudit(props) {
className="passModal"
title='提示'
>
<div className="font">{getMessage}</div>
<div className="btn"><button className="passBtn" onClick={passModalBtn}>确定</button></div>
<div className="font">确定要通过该请求吗</div>
<div className="btn">
<button className="passBtn" onClick={passModalBtn}>确定</button>
<button className="rejectBtn" onClick={passModalCancel}>取消</button>
</div>
</Modal>
<Modal
visible={rejectVisible}
@ -407,6 +430,7 @@ function GeoSignalIgnoreAudit(props) {
<div className="yisa-search">
<label>驳回原因</label>
<TextArea
value={getNote.note}
placeholder='请输入驳回原因'
style={{ width: 400, height: 100, marginLeft: 19 }}
onChange={handleNote}
@ -417,6 +441,21 @@ function GeoSignalIgnoreAudit(props) {
<button className="rejectBtn" onClick={rejectCancel}>取消</button>
</div>
</Modal>
<Modal
visible={reject}
onCancel={reModal}
footer={null}
className="rejectModal"
title='提示'
>
<div className="font">
确定要驳回该请求吗
</div>
<div className="btn">
<button className="passBtn" onClick={reBtn}>确定</button>
<button className="rejectBtn" onClick={reCancel}>取消</button>
</div>
</Modal>
</>
}

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

@ -463,13 +463,13 @@ function OrgnizationMgm() {
</>
}
return <>
<div className="orgnization-container">
<div className="org-tree-container">
<Tree
defaultSelectedKeys={defaultTreeActiveKey}
treeData={orgTree}
autoExpandParent={true}
titleRender={treeTitleRender}
onSelect={handleTreeClick}
fieldNames={{

Loading…
Cancel
Save