@ -1,56 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const Department = sequelize.define("department", { |
|
||||
id: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: true, |
|
||||
field: "id", |
|
||||
autoIncrement: true, |
|
||||
unique: "department_id_uindex" |
|
||||
}, |
|
||||
name: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "name", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
dependence: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: "上级部门/从属", |
|
||||
primaryKey: false, |
|
||||
field: "dependence", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
type: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: "", |
|
||||
primaryKey: false, |
|
||||
field: "type", |
|
||||
autoIncrement: false |
|
||||
} |
|
||||
}, { |
|
||||
tableName: "department", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
|
|
||||
dc.models.Department = Department; |
|
||||
|
|
||||
|
|
||||
|
|
||||
return Department; |
|
||||
}; |
|
@ -1,105 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const PatrolPlan = sequelize.define("PatrolPlan", { |
|
||||
id: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: true, |
|
||||
field: "id", |
|
||||
autoIncrement: true, |
|
||||
unique: "patrol_plan_id_uindex" |
|
||||
}, |
|
||||
name: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "name", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
way: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "way", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
structureId: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "structure_id", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
startTime: { |
|
||||
type: DataTypes.DATE, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "start_time", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
endTime: { |
|
||||
type: DataTypes.DATE, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "end_time", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
frequency: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "frequency", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
points: { |
|
||||
type: DataTypes.JSONB, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "points", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
userId: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: true, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "user_id", |
|
||||
autoIncrement: false, |
|
||||
}, |
|
||||
patrolCount: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: 0, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "patrol_count", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
}, { |
|
||||
tableName: "patrol_plan", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
dc.models.PatrolPlan = PatrolPlan; |
|
||||
return PatrolPlan; |
|
||||
}; |
|
@ -1,55 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const PatrolRecord = sequelize.define("PatrolRecord", { |
|
||||
id: { |
|
||||
field: "id", |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
primaryKey: true, |
|
||||
autoIncrement: true, |
|
||||
}, |
|
||||
patrolPlanId: { |
|
||||
field: "patrol_plan_id", |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
primaryKey: false, |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
lastInspectionTime: { |
|
||||
field: "last_inspection_time", |
|
||||
type: DataTypes.DATE, |
|
||||
allowNull: true, |
|
||||
}, |
|
||||
inspectionTime: { |
|
||||
field: "inspection_time", |
|
||||
type: DataTypes.DATE, |
|
||||
allowNull: true, |
|
||||
}, |
|
||||
points: { |
|
||||
field: "points", |
|
||||
type: DataTypes.JSONB, |
|
||||
allowNull: true, |
|
||||
}, |
|
||||
alarm: { |
|
||||
field: "alarm", |
|
||||
type: DataTypes.BOOLEAN, |
|
||||
allowNull: false, |
|
||||
defaultValue: false, |
|
||||
}, |
|
||||
pointId: { |
|
||||
field: "point_id", |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
}, |
|
||||
}, { |
|
||||
tableName: "patrol_record", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
dc.models.PatrolRecord = PatrolRecord; |
|
||||
return PatrolRecord; |
|
||||
}; |
|
@ -1,79 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const Point = sequelize.define("point", { |
|
||||
id: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: true, |
|
||||
field: "id", |
|
||||
autoIncrement: true, |
|
||||
unique: "point_id_uindex" |
|
||||
}, |
|
||||
projectId: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "project_id", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
name: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "name", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
longitude: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "longitude", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
latitude: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "latitude", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
describe: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "describe", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
qrCode: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "qr_code", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
}, { |
|
||||
tableName: "point", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
dc.models.Point = Point; |
|
||||
return Point; |
|
||||
}; |
|
@ -1,97 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const Project = sequelize.define("project", { |
|
||||
id: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: true, |
|
||||
field: "id", |
|
||||
autoIncrement: true, |
|
||||
unique: "project_id_uindex" |
|
||||
}, |
|
||||
img: { |
|
||||
type: DataTypes.ARRAY(DataTypes.STRING), |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "img", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
userId: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "user_id", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
name: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "name", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
type: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "type", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
longitude: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "longitude", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
latitude: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "latitude", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
describe: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "describe", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
qrCode: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "qr_code", |
|
||||
autoIncrement: false |
|
||||
}, |
|
||||
}, { |
|
||||
tableName: "project", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
dc.models.Project = Project; |
|
||||
return Project; |
|
||||
}; |
|
@ -1,44 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const Resource = sequelize.define("resource", { |
|
||||
code: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: true, |
|
||||
field: "code", |
|
||||
autoIncrement: false, |
|
||||
unique: "resource_code_uindex" |
|
||||
}, |
|
||||
name: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "name", |
|
||||
autoIncrement: false, |
|
||||
unique: "resource_name_uindex" |
|
||||
}, |
|
||||
parentResource: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: true, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "parent_resource", |
|
||||
autoIncrement: false |
|
||||
} |
|
||||
}, { |
|
||||
tableName: "resource", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
dc.models.Resource = Resource; |
|
||||
return Resource; |
|
||||
}; |
|
@ -1,52 +0,0 @@ |
|||||
/* eslint-disable*/ |
|
||||
'use strict'; |
|
||||
|
|
||||
module.exports = dc => { |
|
||||
const DataTypes = dc.ORM; |
|
||||
const sequelize = dc.orm; |
|
||||
const UserResource = sequelize.define("userResource", { |
|
||||
id: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: true, |
|
||||
field: "id", |
|
||||
autoIncrement: true, |
|
||||
unique: "post_resource_id_uindex" |
|
||||
}, |
|
||||
userId: { |
|
||||
type: DataTypes.INTEGER, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "user_id", |
|
||||
autoIncrement: false, |
|
||||
references: { |
|
||||
key: "id", |
|
||||
model: "post" |
|
||||
} |
|
||||
}, |
|
||||
resourceId: { |
|
||||
type: DataTypes.STRING, |
|
||||
allowNull: false, |
|
||||
defaultValue: null, |
|
||||
comment: null, |
|
||||
primaryKey: false, |
|
||||
field: "resource", |
|
||||
autoIncrement: false, |
|
||||
references: { |
|
||||
key: "code", |
|
||||
model: "resource" |
|
||||
} |
|
||||
} |
|
||||
}, { |
|
||||
tableName: "user_resource", |
|
||||
comment: "", |
|
||||
indexes: [] |
|
||||
}); |
|
||||
|
|
||||
dc.models.UserResource = UserResource; |
|
||||
return UserResource; |
|
||||
}; |
|
@ -0,0 +1,26 @@ |
|||||
|
create table t_user |
||||
|
( |
||||
|
id serial not null |
||||
|
constraint t_user_pk |
||||
|
primary key, |
||||
|
name varchar(255), |
||||
|
username varchar(255) not null, |
||||
|
password varchar(255) not null |
||||
|
); |
||||
|
|
||||
|
comment on table t_user is '用户表'; |
||||
|
|
||||
|
comment on column t_user.id is '唯一标识'; |
||||
|
|
||||
|
comment on column t_user.name is '姓名'; |
||||
|
|
||||
|
comment on column t_user.username is '用户名'; |
||||
|
|
||||
|
comment on column t_user.password is '密码'; |
||||
|
|
||||
|
|
||||
|
create unique index t_user_id_uindex |
||||
|
on t_user (id); |
||||
|
|
||||
|
|
||||
|
INSERT INTO public.t_user (id, name, username, password) VALUES (DEFAULT, '超级管理员', 'SuperAdmin', 'e10adc3949ba59abbe56e057f20f883e') |
After Width: | Height: | Size: 5.7 KiB |
After Width: | Height: | Size: 10 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 4.5 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.1 KiB |
After Width: | Height: | Size: 4.4 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 3.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.7 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.5 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 3.4 KiB |
@ -1,2 +1,3 @@ |
|||||
@import '~perfect-scrollbar/css/perfect-scrollbar.css'; |
@import '~perfect-scrollbar/css/perfect-scrollbar.css'; |
||||
@import '~nprogress/nprogress.css'; |
@import '~nprogress/nprogress.css'; |
||||
|
@import '~simplebar-react/dist/simplebar.min.css'; |
@ -1,48 +1,114 @@ |
|||||
import React, { useEffect, useState } from 'react'; |
import React, { useEffect, useState } from 'react'; |
||||
|
|
||||
let map = ''; |
let map = ''; |
||||
const Amap = (props) => { |
const Amap = ({ showData }) => { |
||||
const [mapComplete, setMapComplete] = useState(false); |
const [mapComplete, setMapComplete] = useState(false); |
||||
|
|
||||
useEffect(() => { |
useEffect(() => { |
||||
drawMap(); |
drawMap(); |
||||
}, []); |
}, []); |
||||
const drawMap = () => { |
|
||||
try { |
useEffect(() => { |
||||
if (AMap) loadMap(); |
if (AMap && showData?.length) { |
||||
} catch (e) { |
renderMarkers(showData) |
||||
var script = document.createElement("script"); |
} |
||||
script.src = "https://webapi.amap.com/maps?v=2.0&key=00f9a29dedcdbd8befec3dfe0cef5003&plugin=AMap.AutoComplete,AMap.PlaceSearch"; |
}, [showData, AMap]); |
||||
document.body.appendChild(script); |
|
||||
loadMap(); |
const drawMap = () => { |
||||
} |
try { |
||||
} |
if (AMap) loadMap(); |
||||
|
} catch (e) { |
||||
const loadMap = () => { |
var script = document.createElement("script"); |
||||
map = new AMap.Map("amapId", { |
script.src = "https://webapi.amap.com/maps?v=2.0&key=00f9a29dedcdbd8befec3dfe0cef5003&plugin=AMap.AutoComplete,AMap.PlaceSearch,AMap.Marker"; |
||||
resizeEnable: true, |
document.body.appendChild(script); |
||||
center: [115.99255, 28.503617], // 地图中心点,初始定位加载显示楼块
|
loadMap(); |
||||
zoom: 14, // 地图显示的缩放级别
|
} |
||||
zooms: [5, 20], |
} |
||||
pitch: 0, // 地图俯仰角度,有效范围 0 度- 83 度
|
|
||||
viewMode: '3D', // 地图模式
|
const loadMap = () => { |
||||
mapStyle: 'amap://styles/fb26776387242721c2fc32e2cb1daccc', // 主题样式
|
// 图片图层 实现瓦片地图中国地图样式 bounds 第一个点为左下角 第二个点为右上角
|
||||
// rotation: 60
|
const imageLayer = new AMap.ImageLayer({ |
||||
// showLabel: false
|
url: '/assets/images/map.svg', |
||||
}); |
bounds: new AMap.Bounds( |
||||
|
[115.800221, 28.265659], |
||||
map.on('complete', function () { |
[116.334849, 28.973298], |
||||
console.log("map-complete") |
), |
||||
setMapComplete(true); |
zooms: [3, 14], |
||||
}); |
}); |
||||
window.onload = function () { |
|
||||
console.log("window.onload") |
map = new AMap.Map("amapId", { |
||||
} |
resizeEnable: true, |
||||
}; |
center: [115.99255, 28.503617], // 地图中心点,初始定位加载显示楼块
|
||||
|
zoom: 10.3, // 地图显示的缩放级别
|
||||
return <div style={{ width: '100%', height: '100%', }}> |
zooms: [5, 20], |
||||
<div id='amapId' style={{ width: '100%', height: '100%', background: "#101824" }} /> |
pitch: 0, // 地图俯仰角度,有效范围 0 度- 83 度
|
||||
</div> |
viewMode: '3D', // 地图模式
|
||||
|
mapStyle: 'amap://styles/fb26776387242721c2fc32e2cb1daccc', // 主题样式
|
||||
|
// rotation: 60
|
||||
|
// showLabel: false
|
||||
|
layers: [ |
||||
|
AMap.createDefaultLayer(), |
||||
|
imageLayer, |
||||
|
], |
||||
|
}); |
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
map.on('complete', function () { |
||||
|
console.log("map-complete") |
||||
|
setMapComplete(true); |
||||
|
}); |
||||
|
window.onload = function () { |
||||
|
console.log("window.onload") |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}; |
||||
|
|
||||
|
const renderMarkers = (data) => { |
||||
|
|
||||
|
|
||||
|
|
||||
|
// 初始层级 zoom14以下显示聚合点
|
||||
|
// const data = [
|
||||
|
// { lng: 116.117906, lat: 28.678096, name: 'ndjsa d dwqa', },
|
||||
|
|
||||
|
// ]
|
||||
|
|
||||
|
|
||||
|
if (data?.length > 0) { |
||||
|
// map.clearMap();
|
||||
|
map.setZoom(10.3) |
||||
|
map.setCenter([116.054664, 28.538966]) |
||||
|
map.setPitch(22.9) |
||||
|
map.setRotation(1.7000) |
||||
|
data?.map((x, index) => { |
||||
|
let marker = new AMap.Marker({ |
||||
|
position: new AMap.LngLat(x.lng, x.lat), |
||||
|
// 将一张图片的地址设置为 icon
|
||||
|
icon: '/assets/images/monitor/point.png', |
||||
|
// 设置了 icon 以后,设置 icon 的偏移量,以 icon 的 [center bottom] 为原点
|
||||
|
offset: new AMap.Pixel(-13, -30), |
||||
|
zooms: [5, 20], |
||||
|
title: x.name, |
||||
|
content: `<div style="position: relative;">
|
||||
|
<img src="/assets/images/monitor/point.png" style="width:40px;height:60px;" /> |
||||
|
<div style="background-image: url(/assets/images/monitor/pump-p.png);height:28px; white-space: nowrap;padding-right: 8px; |
||||
|
background-size: 100% 100%;background-position: center;background-repeat: no-repeat;color:#FFF;position: absolute; |
||||
|
top: 14px; left: 25px;line-height: 28px; text-indent: 14px">${x.name}</div> |
||||
|
</div>` |
||||
|
}); |
||||
|
map.add(marker); |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
|
||||
|
return <div style={{ width: '100%', height: '100%', }}> |
||||
|
<div id='amapId' style={{ width: '100%', height: '100%', background: "#101824" }} /> |
||||
|
</div> |
||||
} |
} |
||||
|
|
||||
export default Amap; |
export default Amap; |
@ -1,47 +1,232 @@ |
|||||
import React, { useEffect, useState } from 'react'; |
import React, { useEffect, useState, useRef } from 'react'; |
||||
import { connect } from 'react-redux'; |
import { connect } from 'react-redux'; |
||||
import { Spin, Card, Modal, TreeSelect, message } from 'antd'; |
import { Spin, Card, Modal, TreeSelect, message } from 'antd'; |
||||
import ProForm, { ProFormText, ModalForm, ProFormSwitch, ProFormTreeSelect } from '@ant-design/pro-form'; |
import ProForm, { ProFormText, ModalForm, ProFormSwitch, ProFormTreeSelect } from '@ant-design/pro-form'; |
||||
|
import moment from 'moment' |
||||
|
import CardTitle from './public/cardTitle' |
||||
|
import SimpleBar from 'simplebar-react'; |
||||
import Left_1 from './basis/left_1'; |
import Left_1 from './basis/left_1'; |
||||
import Left_2 from './basis/left_2'; |
|
||||
import Right_1 from './basis/right_1'; |
import Right_1 from './basis/right_1'; |
||||
import Right_2 from './basis/right_2'; |
import Right_2 from './basis/right_2'; |
||||
|
import { POWER_STATIONS } from './shuizhan_detail'; |
||||
import './basis.less' |
import './basis.less' |
||||
|
|
||||
const Basis = ({ user, module, setModule }) => { |
const Basis = ({ actions, dispatch, user, setshowData }) => { |
||||
|
|
||||
useEffect(() => { |
const { bigScreen } = actions |
||||
|
const [siteList, setSiteList] = useState([]) //站点列表
|
||||
|
const [strucId, setStrucId] = useState() //站点ID
|
||||
|
const [pageRefresh1, setPageRefresh1] = useState(false) |
||||
|
const [pageRefresh2, setPageRefresh2] = useState(false) |
||||
|
const [pageRefresh3, setPageRefresh3] = useState(false) |
||||
|
const [left2List, setleft2List] = useState([]) |
||||
|
const [depthWater, setDepthWater] = useState([]) |
||||
|
const [information, setInformation] = useState({}) |
||||
|
|
||||
|
const left1Data = useRef([]) |
||||
|
const left2Data = useRef([]) |
||||
|
const pumpNumber = useRef(0) |
||||
|
|
||||
|
useEffect(async () => { |
||||
|
await dispatch(bigScreen.axyData({ type: 'get', url: `organizations/{orgId}/structures` })).then(async res => { |
||||
|
if (res.success) { |
||||
|
setSiteList(res.payload.data?.map(v => ({ value: v.id, label: v.name, latitude: v.latitude, longitude: v.longitude })) || []) |
||||
|
setshowData(res.payload.data?.map(v => ({ name: v.name, lat: v.latitude, lng: v.longitude })) || []) |
||||
|
setStrucId(res.payload.data[0]?.id) |
||||
|
for (let key in POWER_STATIONS) { |
||||
|
if (POWER_STATIONS[key]?.name == res.payload.data[0]?.name) { |
||||
|
setInformation(POWER_STATIONS[key]) |
||||
|
} |
||||
|
} |
||||
|
//获取所有泵站的集水池液位
|
||||
|
res.payload.data?.map(async v => { |
||||
|
await dispatch(bigScreen.axyData({ type: 'get', url: `structures/${v.id}/factors` })).then(async r => { |
||||
|
//泵站信息
|
||||
|
let informationId = r.payload.data?.find(v => v.name == '泵站信息')?.id |
||||
|
if (informationId) { |
||||
|
await dispatch(bigScreen.axyData({ |
||||
|
type: 'get', url: `structures/${v.id}/stations`, |
||||
|
params: { query: { factorId: informationId } } |
||||
|
})).then(async p => { |
||||
|
if (p.success) { |
||||
|
await dispatch(bigScreen.axyData({ |
||||
|
type: 'get', url: `stations/theme/data`, params: { |
||||
|
query: { |
||||
|
stations: p.payload.data[0]?.groups[0]?.stations[0]?.id, |
||||
|
startTime: moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'), |
||||
|
endTime: moment().endOf('day').format('YYYY-MM-DD HH:mm:ss'), |
||||
|
limit: 1 |
||||
|
} |
||||
|
} |
||||
|
})).then(async d => { |
||||
|
if (d.success) { |
||||
|
left1Data.current?.push({ name: v.name, level: d.payload.data?.stations[0]?.data[0]?.sLiquid_level || 0 }) |
||||
|
setPageRefresh1(!pageRefresh1) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
//水泵信息
|
||||
|
let waterId = r.payload.data?.find(v => v.name == '泵站水泵')?.id |
||||
|
if (waterId) { |
||||
|
await dispatch(bigScreen.axyData({ |
||||
|
type: 'get', url: `structures/${v.id}/stations`, |
||||
|
params: { query: { factorId: waterId } } |
||||
|
})).then(async p => { |
||||
|
if (p.success) { |
||||
|
pumpNumber.current += p.payload.data[0]?.groups[0]?.stations.length || 0 |
||||
|
setPageRefresh3(!pageRefresh3) |
||||
|
let dataId = [] |
||||
|
p.payload.data?.map(v => { |
||||
|
v.groups?.map(s => { |
||||
|
s.stations?.map(f => { |
||||
|
dataId.push(f.id) |
||||
|
}) |
||||
|
}) |
||||
|
}) |
||||
|
if (dataId.length) { |
||||
|
// 当前时间
|
||||
|
await dispatch(bigScreen.axyData({ |
||||
|
type: 'get', url: `stations/theme/data`, params: { |
||||
|
query: { |
||||
|
stations: dataId.join(), |
||||
|
startTime: moment().startOf('day').format('YYYY:MM:DD HH:mm:ss'), |
||||
|
endTime: moment().endOf('day').format('YYYY:MM:DD HH:mm:ss'), |
||||
|
limit: 1 |
||||
|
} |
||||
|
} |
||||
|
})).then(d => { |
||||
|
if (d.success) { |
||||
|
left2Data.current?.push({ name: v.name, data: d.payload.data?.stations }) |
||||
|
setPageRefresh2(!pageRefresh2) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
|
||||
}, []) |
}, []) |
||||
const left1Data = [ |
|
||||
{ name: '雄溪站站站站', level: 3 }, |
useEffect(async () => { |
||||
{ name: '雄溪站', level: 3 }, |
if (strucId) { |
||||
{ name: '雄溪站', level: 3 }, |
await dispatch(bigScreen.axyData({ type: 'get', url: `structures/${strucId}/factors` })).then(async r => { |
||||
{ name: '雄溪站', level: 3 }, |
//泵站信息
|
||||
{ name: '雄溪站', level: 3 }, |
let informationId = r.payload.data?.find(v => v.name == '泵站信息')?.id |
||||
{ name: '雄溪站', level: 3 }, |
if (informationId) { |
||||
{ name: '雄溪站', level: 3 }, |
await dispatch(bigScreen.axyData({ |
||||
{ name: '雄溪站', level: 3 }, |
type: 'get', url: `structures/${strucId}/stations`, |
||||
{ name: '雄溪站', level: 3 }, |
params: { query: { factorId: informationId } } |
||||
{ name: '雄溪站', level: 3 }, |
})).then(async p => { |
||||
] |
if (p.success) { |
||||
|
await dispatch(bigScreen.axyData({ |
||||
|
type: 'get', url: `stations/theme/data`, params: { |
||||
|
query: { |
||||
|
stations: p.payload.data[0]?.groups[0]?.stations[0]?.id, |
||||
|
startTime: moment().add(-24, 'hours').format('YYYY-MM-DD HH:mm:ss'), |
||||
|
endTime: moment().format('YYYY-MM-DD HH:mm:ss'), |
||||
|
limit: 1440 |
||||
|
} |
||||
|
} |
||||
|
})).then(async d => { |
||||
|
if (d.success) { |
||||
|
setDepthWater(d.payload.data?.stations[0]?.data) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
}) |
||||
|
} |
||||
|
}) |
||||
|
} |
||||
|
|
||||
|
|
||||
|
}, [strucId]) |
||||
|
|
||||
|
|
||||
return <div className='super-screen-body'> |
return <div className='super-screen-body'> |
||||
<div className='super-screen-card left'> |
<div className='super-screen-card left'> |
||||
<Left_1 data={left1Data} /> |
<Left_1 data={left1Data.current} /> |
||||
<Left_2 /> |
<div className='card-item' style={{ height: '55%', minWidth: 350 }}> |
||||
</div> |
<CardTitle title='水泵状态' /> |
||||
|
<div className='card-content'> |
||||
|
<div style={{ |
||||
|
width: '100%', height: 40, |
||||
|
backgroundImage: 'url(/assets/images/monitor/end.png)', backgroundSize: '100% 100%', backgroundPosition: 'center', backgroundRepeat: 'no-repeat', |
||||
|
display: 'flex', alignItems: 'flex-end', |
||||
|
}}> |
||||
|
<div style={{ width: 80 }}>地点</div> |
||||
|
<div>编号</div> |
||||
|
</div> |
||||
|
<SimpleBar |
||||
|
style={{ |
||||
|
// 容器高度
|
||||
|
maxHeight: 'calc(100% - 50px)', |
||||
|
}} |
||||
|
// 允许的滚动方向
|
||||
|
forceVisible="y" |
||||
|
> |
||||
|
{left2Data.current.map(v => <div style={{ |
||||
|
display: 'flex', alignItems: 'center', marginTop: 6, width: '100%', height: 36, |
||||
|
backgroundImage: 'linear-gradient(180deg, #000e28e6 1%, #021f48cc 100%)' |
||||
|
}}> |
||||
|
<div style={{ width: 76, overflow: 'hidden', whiteSpace: 'nowrap', textOverflow: 'ellipsis', }}>{v.name}</div> |
||||
|
<div > |
||||
|
{v.data?.map((s, i) => <img style={{ width: 20, height: 20, marginLeft: 3 }} src={`/assets/images/number/${[2, 4, 6].includes(s.data[0]?.sMotor_State) ? 'good' : 'problem'}${i + 1}.png`} />) |
||||
|
|
||||
|
} |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
|
||||
|
</div>)} |
||||
|
</SimpleBar> |
||||
|
|
||||
|
|
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div> |
||||
|
|
||||
|
</div > |
||||
<div className='super-screen-card right'> |
<div className='super-screen-card right'> |
||||
<Right_1 /> |
<Right_1 data={information} /> |
||||
<Right_2 /> |
<Right_2 depthWater={depthWater} /> |
||||
|
</div> |
||||
|
<div style={{ width: '40%', height: 30, display: 'flex', justifyContent: 'space-around', position: 'absolute', left: 'calc(30%)', bottom: 30, zIndex: 7 }}> |
||||
|
<div style={{ |
||||
|
width: 170, height: 30, position: 'relative', textIndent: 50, lineHeight: '30px', color: 'white', |
||||
|
backgroundImage: 'url(/assets/images/monitor/lower-left.png)', |
||||
|
backgroundSize: '100% 100%', backgroundPosition: 'center', backgroundRepeat: 'no-repeat', |
||||
|
}}> |
||||
|
<img style={{ width: 40, height: 40, position: 'absolute', left: 12, top: -18, }} src='/assets/images/monitor/pumpPO.png' /> |
||||
|
泵站数量:{siteList?.length || 0} |
||||
|
</div> |
||||
|
<div style={{ |
||||
|
width: 170, height: 30, position: 'relative', textIndent: 50, lineHeight: '30px', color: 'white', |
||||
|
backgroundImage: 'url(/assets/images/monitor/lower-right.png)', |
||||
|
backgroundSize: '100% 100%', backgroundPosition: 'center', backgroundRepeat: 'no-repeat', |
||||
|
}}> |
||||
|
<img style={{ width: 40, height: 40, position: 'absolute', left: 12, top: -18, }} src='/assets/images/monitor/pumpPP.png' /> |
||||
|
提升泵数量:{pumpNumber.current} |
||||
|
</div> |
||||
</div> |
</div> |
||||
</div > |
</div > |
||||
} |
} |
||||
|
|
||||
function mapStateToProps(state) { |
function mapStateToProps (state) { |
||||
const { auth, global } = state; |
const { auth, global } = state; |
||||
return { |
return { |
||||
user: auth.user, |
user: auth.user, |
||||
clientHeight: global.clientHeight, |
clientHeight: global.clientHeight, |
||||
|
actions: global.actions, |
||||
}; |
}; |
||||
} |
} |
||||
|
|
||||
|
@ -1,47 +1,54 @@ |
|||||
.liquid-level-content { |
.liquid-level-content { |
||||
display: flex; |
display: inline-block; |
||||
flex-wrap: wrap; |
overflow-y: auto; |
||||
justify-content: flex-start; |
|
||||
overflow-y: auto; |
|
||||
|
|
||||
.liquid-level { |
|
||||
width: 46%; |
|
||||
display: flex; |
|
||||
justify-content: space-evenly; |
|
||||
align-items: center; |
|
||||
|
|
||||
.img { |
|
||||
width: 84px; |
|
||||
height: 76px; |
|
||||
} |
|
||||
|
|
||||
.info { |
.liquid-level { |
||||
width: 101px; |
width: 100%; |
||||
height: 80%; |
height: 80px; |
||||
display: flex; |
display: flex; |
||||
flex-direction: column; |
align-items: center; |
||||
justify-content: flex-end; |
.img { |
||||
align-items: center; |
width: 84px; |
||||
font-size: 1rem; |
height: 76px; |
||||
text-align: center; |
} |
||||
font-family: D-DIN-Italic; |
|
||||
|
|
||||
.name { |
.info { |
||||
background-image: url(/assets/images/monitor/gradation-bg.svg); |
width: 100px; |
||||
width: 100%; |
height: 80%; |
||||
} |
display: flex; |
||||
|
flex-direction: column; |
||||
|
align-items: center; |
||||
|
font-size: 1rem; |
||||
|
text-align: center; |
||||
|
font-family: D-DIN-Italic; |
||||
|
justify-content: space-around; |
||||
|
.name { |
||||
|
background-image: url(/assets/images/monitor/gradation-bg.svg); |
||||
|
width: 100%; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
} |
||||
|
|
||||
.level { |
.level { |
||||
background-image: linear-gradient(90deg, #24396e00 2%, #24396e70 51%, #24396e00 100%); |
background-image: linear-gradient( |
||||
width: 100%; |
90deg, |
||||
margin-top: 5px; |
#24396e00 2%, |
||||
|
#24396e70 51%, |
||||
|
#24396e00 100% |
||||
|
); |
||||
|
width: 100%; |
||||
|
margin-top: 5px; |
||||
|
overflow: hidden; |
||||
|
white-space: nowrap; |
||||
|
text-overflow: ellipsis; |
||||
|
|
||||
.num { |
.num { |
||||
font-size: 1.25rem; |
font-size: 1.25rem; |
||||
line-height: 1.25rem; |
line-height: 1.25rem; |
||||
letter-spacing: 2.08px; |
letter-spacing: 2.08px; |
||||
} |
|
||||
} |
|
||||
} |
} |
||||
|
} |
||||
} |
} |
||||
} |
} |
||||
|
} |
||||
|
@ -1,13 +0,0 @@ |
|||||
import React from 'react'; |
|
||||
import CardTitle from '../public/cardTitle'; |
|
||||
import '../basis.less'; |
|
||||
|
|
||||
export default function Left_2(props) { |
|
||||
return ( |
|
||||
<div className='card-item' style={{ height: '55%' }}> |
|
||||
<CardTitle title='水泵状态' /> |
|
||||
<div className='card-content'></div> |
|
||||
|
|
||||
</div> |
|
||||
) |
|
||||
} |
|
@ -1,14 +1,92 @@ |
|||||
import React from 'react'; |
import React from 'react'; |
||||
import CardTitle from '../public/cardTitle'; |
import CardTitle from '../public/cardTitle'; |
||||
import '../basis.less'; |
import '../basis.less'; |
||||
|
import ReactECharts from 'echarts-for-react'; |
||||
|
import moment from 'moment' |
||||
|
|
||||
export default function Right_2(props) { |
|
||||
return ( |
|
||||
<div className='card-item' style={{ height: '55%' }}> |
|
||||
<CardTitle title='泵站水位' /> |
|
||||
<div className='card-content'> |
|
||||
|
|
||||
|
export default function Right_2 ({ depthWater }) { |
||||
|
return ( |
||||
|
<div className='card-item' style={{ height: '55%' }}> |
||||
|
<CardTitle title='泵站水位' /> |
||||
|
<div className='card-content'> |
||||
|
<div style={{ height: 30, }}> |
||||
|
</div> |
||||
|
<ReactECharts |
||||
|
option={{ |
||||
|
title: { |
||||
|
// text: v.name,
|
||||
|
}, |
||||
|
grid: { |
||||
|
left: '10%', |
||||
|
// right: '4%',
|
||||
|
// bottom: '3%',
|
||||
|
// containLabel: true
|
||||
|
}, |
||||
|
dataZoom: [ |
||||
|
{ |
||||
|
type: 'slider', |
||||
|
// startValue: depthWater?.map(v=>v.time)
|
||||
|
}, |
||||
|
{ |
||||
|
type: 'inside', |
||||
|
}, |
||||
|
], |
||||
|
tooltip: { |
||||
|
trigger: 'axis' |
||||
|
}, |
||||
|
legend: { |
||||
|
data: ['集水池液位', '池前(上游)液位'], |
||||
|
right: '10%', |
||||
|
textStyle: { |
||||
|
color: '#FFF', |
||||
|
}, |
||||
|
}, |
||||
|
xAxis: { |
||||
|
type: 'category', |
||||
|
name: "时间", |
||||
|
boundaryGap: false, |
||||
|
data: depthWater?.map(v => moment(v.time).format('MM-DD HH:mm')) |
||||
|
}, |
||||
|
yAxis: { |
||||
|
type: 'value', |
||||
|
name: "单位:M", |
||||
|
areaStyle: { |
||||
|
color: '#FFF', |
||||
|
}, |
||||
|
}, |
||||
|
series: [ |
||||
|
{ |
||||
|
type: 'line', |
||||
|
name: '集水池液位', |
||||
|
smooth: true, |
||||
|
areaStyle: { |
||||
|
color: '#0e9cff26', |
||||
|
}, |
||||
|
data: depthWater?.map(v => v.sLiquid_level) |
||||
|
}, |
||||
|
{ |
||||
|
type: 'line', |
||||
|
name: '池前(上游)液位', |
||||
|
smooth: true, |
||||
|
areaStyle: { |
||||
|
color: '#0e9cff26', |
||||
|
}, |
||||
|
data: depthWater?.map(v => v.sGrille_level) |
||||
|
}, |
||||
|
|
||||
|
] |
||||
|
}} |
||||
|
notMerge={true} |
||||
|
lazyUpdate={true} |
||||
|
theme={'ReactEChart'} |
||||
|
// onChartReady={this.onChartReadyCallback}
|
||||
|
// onEvents={EventsDict}
|
||||
|
// opts={}
|
||||
|
/> |
||||
|
|
||||
|
|
||||
|
</div> |
||||
</div> |
</div> |
||||
</div> |
) |
||||
) |
|
||||
} |
} |
||||
|
@ -0,0 +1,28 @@ |
|||||
|
const POWER_STATIONS = { |
||||
|
'象湖站': { area: '象湖站', name: '象湖电排站', func: '排涝', power: 1050, num: 5, elc_type: 'JsL10—12(210KW)', water_type: '1200ZLB—160轴流泵', by_type: 's9—M500KVA、s9—M800KVA', year: ' 2008年, 空', rightTo: '县城管局', managerUnit: '南昌县象湖联圩管理站', managers: '胡铁根、陈江、陈亮', costFrom: '南昌县象湖联圩管理站', remark: '空' }, |
||||
|
'沥山站': { area: '象湖站', name: '沥山电排站', func: '排涝', power: 1680, num: 8, elc_type: 'JsL10—12(210KW)', water_type: '1200ZLB—160轴流泵', by_type: 's9—M1000KVA/2', year: ' 2004年, 空', rightTo: '县城管局', managerUnit: '南昌县象湖联圩管理站', managers: '宗磊、李文章、熊大方', costFrom: '南昌县象湖联圩管理站', remark: '空' }, |
||||
|
'雄溪站': { area: '象湖站', name: '雄溪电排站', func: '排涝', power: 630, num: 3, elc_type: 'JsL10—12(210KW)', water_type: '1200ZLB—160轴流泵', by_type: 's9—M315KVA、s9—M500KVA', year: ' 2004年, 空', rightTo: '县城管局', managerUnit: '南昌县象湖联圩管理站', managers: '涂三毛、刘文红彭伟红、童珊玲、李跃兰(县聘泵站值守人员)', costFrom: '南昌县象湖联圩管理站', remark: '空' }, |
||||
|
'张坊站': { area: '象湖站', name: '张坊电排站', func: '排涝', power: 2500, num: 5, elc_type: 'YL630-16/1430(500KW)', water_type: '1400ZLB-5立式半调节轴流泵', by_type: 'SCB11-160/10/0.4', year: ' 2020年, 空', rightTo: '县城管局', managerUnit: '还未明确管理单位,由水利局代管', managers: '康玉明、赵先福、殷长和、肖玉平', costFrom: '水利局垫付', remark: '工资发放至2021年12月止' }, |
||||
|
'万寿湖站': { area: '象湖站', name: '万寿湖电排站', func: '排涝', power: 660, num: 3, elc_type: 'JsL14—12(220KW)', water_type: '1000ZLB-5立式半调节轴流泵', by_type: 'SCB11-1000/10/0.4、SCB11-80/10/0.4', year: ' 2020年, 空', rightTo: '县城管局', managerUnit: '还未明确管理单位,由水利局代管', managers: '夏小生、王刚', costFrom: '水利局垫付', remark: '工资发放至2021年12月止' }, |
||||
|
'八月湖站': { area: '东新乡', name: '八月湖一站', func: '排灌结合', power: 840, num: 4, elc_type: 'JSL12—14', water_type: '1000ZLB—4轴流泵', by_type: 'S91000KVA', year: ' 1974年, 2009年', rightTo: '县城管局', managerUnit: '东新乡', managers: '邓重志、熊春华、邓仁凯、邓小玉、邓必华', costFrom: '由排灌站直接在乡财务办理缴费', remark: '空' }, |
||||
|
'新八月湖站': { area: '东新乡', name: '八月湖二站', func: '纯排', power: 1050, num: 5, elc_type: 'JSL12—14', water_type: '1000ZLB—4轴流泵', by_type: 'S9800KVA2', year: ' 1985.4年, 2009年', rightTo: '县城管局', managerUnit: '东新乡', managers: '邓重志、熊春华、邓仁凯、邓小玉、邓必华', costFrom: '由排灌站直接在乡财务办理缴费', remark: '空' }, |
||||
|
'河下站': { area: '东新乡', name: '河下电排站', func: '排灌结合', power: 320, num: 4, elc_type: 'Y—200T—4', water_type: 'ZLB28—70轴流泵', by_type: 'S9315KVA', year: ' 1972年, 1987年', rightTo: '县城管局', managerUnit: '河下村', managers: '万增福', costFrom: '由河下村排灌站直接缴费', remark: '空' }, |
||||
|
'石岐站': { area: '东新乡', name: '石岐电排站', func: '排灌结合', power: 340, num: 3, elc_type: 'Y—200T—4', water_type: 'ZLB28—70轴流泵', by_type: 'S9315KVA', year: ' 1974年, 1988年', rightTo: '县城管局', managerUnit: '石岐村', managers: '万象保', costFrom: '由石岐村排灌站直接缴费', remark: '空' }, |
||||
|
'东新乡': { area: '东新乡', name: '利用姚家塘电排站', func: '排灌结合', power: 240, num: 3, elc_type: 'Y—200T—4', water_type: 'ZLB28—70轴流泵', by_type: 'S9315KVA', year: ' 1974年, 1992年', rightTo: '县城管局', managerUnit: '利用村', managers: '蒋淑仁', costFrom: '由利用村排灌站直接缴费', remark: '空' }, |
||||
|
'东新乡': { area: '东新乡', name: '汇仁大道排水泵站', func: '纯排', power: 260, num: 2, elc_type: 'Y67—130kw', water_type: '20ZLB—70轴流泵', by_type: '315KVA箱式变压器', year: ' 2014年, 空', rightTo: '县城管局', managerUnit: '东新乡', managers: '蒋国冬', costFrom: '由乡水管站直接垂管缴费', remark: '空' }, |
||||
|
'东新乡': { area: '东新乡', name: '小洲杨家湾电排站', func: '纯排', power: 60, num: 2, elc_type: 'Y—200T—4', water_type: 'ZLB28—70轴流泵', by_type: '80KVA箱式变压器', year: ' 2013年, 空', rightTo: '县城管局', managerUnit: '东新乡', managers: '胡又莲', costFrom: '由乡水管站直接垂管缴费', remark: '空' }, |
||||
|
'东新乡': { area: '东新乡', name: '石岐补水站', func: '灌溉', power: 260, num: 2, elc_type: 'Y67—130kw', water_type: '20ZLB—70轴流泵', by_type: 'S9_315KVA变压器', year: ' 2014年, 空', rightTo: '县城管局', managerUnit: '东新乡', managers: '万和全', costFrom: '由乡水管站直接垂管缴费', remark: '空' }, |
||||
|
'象湖一号闸': { area: '东新乡', name: '象湖南电排站', func: '纯排', power: 60, num: 2, elc_type: 'Y—200T—4', water_type: 'ZLB28—70轴流泵', by_type: '80KVA箱式变压器', year: ' 2013年, 空', rightTo: '县城管局', managerUnit: '东新乡', managers: '陶小弟', costFrom: '由乡水管站直接垂管缴费', remark: '空' }, |
||||
|
'东新乡': { area: '东新乡', name: '东莲路节制闸', func: '排涝', power: '空', num: '空', elc_type: '空', water_type: '空', by_type: '空', year: ' 2009年, 空', rightTo: '县城管局', managerUnit: '东新乡', managers: '蒋永新', costFrom: '由乡水管站直接垂管缴费', remark: '调节东莲路景观明渠水位' }, |
||||
|
'三山站': { area: '富山乡', name: '三山电排站', func: '排涝', power: 390, num: 3, elc_type: '空', water_type: '空', by_type: '空', year: ' 1973年, 2008年', rightTo: '县城管局', managerUnit: '三山村村委会', managers: '空', costFrom: '富山乡', remark: '空' }, |
||||
|
'河外泵站': { area: '富山乡', name: '河外电排站站', func: '排涝', power: 90, num: 2, elc_type: '空', water_type: '空', by_type: '空', year: ' 1984年, 2021年', rightTo: '县城管局', managerUnit: '三山村村委会', managers: '空', costFrom: '富山乡', remark: '空' }, |
||||
|
'东山站': { area: '富山乡', name: '东山电排站', func: '排涝', power: 2010, num: 12, elc_type: '6台180、6台155', water_type: '空', by_type: '1250、1650', year: ' 1983年, 2008年', rightTo: '富山乡', managerUnit: '富山乡', managers: '空', costFrom: '富山乡', remark: '排涝能力偏小' }, |
||||
|
'河口电排站': { area: '县城投', name: '河口电排站', func: '排涝', power: 6250, num: 5, elc_type: 'TL1250-30/2600(12500KW)', water_type: '2050ZLQ轴流泵', by_type: 'SCB11-630/10/0.4(2台)', year: ' 2021年, 空', rightTo: '县城管局', managerUnit: '县城投公司', managers: '空', costFrom: '县城投公司', remark: '空' }, |
||||
|
'县城投': { area: '县城投', name: '芳湖路提升泵站', func: '排涝', power: 225, num: 3, elc_type: 'Y2-315M-8(75KW)', water_type: 'ZLDB-立式单基础轴流泵', by_type: 'ZGS13-200KVA、ZGS13-400KVA', year: ' 2019年, 空', rightTo: '县城管局', managerUnit: '还未明确管理单位,由工人代管', managers: '廖良斌', costFrom: '县城投公司', remark: '空' }, |
||||
|
'县城投': { area: '县城投', name: '三干渠富山大道闸', func: '控制闸', power: '空', num: 2, elc_type: '空', water_type: '空', by_type: '空', year: ' 2018年, 空', rightTo: '县城管局', managerUnit: '县城投公司(水投公司)', managers: '葛江波', costFrom: '县城投公司(水投公司)', remark: '空' }, |
||||
|
'县城投': { area: '县城投', name: '三干渠银湖二路明渠闸', func: '控制闸', power: '空', num: 2, elc_type: '空', water_type: '空', by_type: '空', year: ' 2018年, 空', rightTo: '县城管局', managerUnit: '县城投公司(水投公司)', managers: '葛江波', costFrom: '县城投公司(水投公司)', remark: '空' }, |
||||
|
'县城投': { area: '县城投', name: '三干渠汇仁大道明渠闸', func: '控制闸', power: '空', num: 2, elc_type: '空', water_type: '空', by_type: '空', year: ' 2018年, 空', rightTo: '县城管局', managerUnit: '县城投公司(水投公司)', managers: '葛江波', costFrom: '县城投公司(水投公司)', remark: '空' }, |
||||
|
} |
||||
|
|
||||
|
|
||||
|
export { POWER_STATIONS } |