Merge branch 'lsf-dev'
commit
9a42c45df7
Binary file not shown.
|
After Width: | Height: | Size: 28 KiB |
|
|
@ -323,7 +323,7 @@ const map = {
|
|||
};
|
||||
dispatch.runtime.setCameraTarget({
|
||||
center: [114.88069, 31.171967],
|
||||
zoom: 12,
|
||||
zoom: 13,
|
||||
pitch: 60,
|
||||
bearing: 0
|
||||
});
|
||||
|
|
@ -582,189 +582,189 @@ const map = {
|
|||
dispatch.map.setLayerSetting({ dom: false });
|
||||
// map.setLayoutProperty('卫星图', 'visibility', 'none');
|
||||
}
|
||||
if (id == 203) {
|
||||
const skdata = [
|
||||
{
|
||||
"stcd": "61614200",
|
||||
"type": "sk",
|
||||
"hasRz": true,
|
||||
"stnm": "浮桥河水库",
|
||||
"adcd": "421181100000",
|
||||
"wscd": null,
|
||||
"importancy": 0,
|
||||
"lgtd": 114.875,
|
||||
"lttd": 31.166667,
|
||||
"elev": 0,
|
||||
"damel": 71.33,
|
||||
"dsflz": 68.04,
|
||||
"fsltdz": 64.89,
|
||||
"ddz": 51.78,
|
||||
"zcxsw": 64.89,
|
||||
"drpTm": "2025-06-03T02:00:00.000Z",
|
||||
"today": 0,
|
||||
"h1": 5,
|
||||
"h3": 6,
|
||||
"h6": 7.5,
|
||||
"h12": 8,
|
||||
"h24": 9,
|
||||
"h48": 26,
|
||||
"drpState": 1,
|
||||
"rz": 60.71,
|
||||
"w": 162.8,
|
||||
"a_fsltdz": -4.18,
|
||||
"rzTm": "2025-06-03T02:00:00.000Z",
|
||||
"rzWarning": 0,
|
||||
"rzState": 1,
|
||||
"aRz": -4.18
|
||||
},
|
||||
{
|
||||
"stcd": "61613010",
|
||||
"type": "sk",
|
||||
"hasRz": true,
|
||||
"stnm": "明山水库",
|
||||
"adcd": "421181103000",
|
||||
"wscd": null,
|
||||
"importancy": 0,
|
||||
"lgtd": 115.066667,
|
||||
"lttd": 31.016667,
|
||||
"elev": 0,
|
||||
"damel": 98.7,
|
||||
"dsflz": 96.07,
|
||||
"fsltdz": 93,
|
||||
"ddz": 78.02,
|
||||
"zcxsw": 93,
|
||||
"drpTm": "2025-06-03T02:00:00.000Z",
|
||||
"today": 0,
|
||||
"h1": 7,
|
||||
"h3": 8.4,
|
||||
"h6": 10.5,
|
||||
"h12": 11.200000000000001,
|
||||
"h24": 12.6,
|
||||
"h48": 25.799999999999997,
|
||||
"drpState": 1,
|
||||
"rz": 84.43,
|
||||
"w": 49.5,
|
||||
"a_fsltdz": -8.569999999999993,
|
||||
"rzTm": "2025-06-03T02:00:00.000Z",
|
||||
"rzWarning": 0,
|
||||
"rzState": 1,
|
||||
"aRz": -8.57
|
||||
},
|
||||
{
|
||||
"stcd": "61612610",
|
||||
"type": "sk",
|
||||
"hasRz": true,
|
||||
"stnm": "三河口水库",
|
||||
"adcd": "421181109000",
|
||||
"wscd": null,
|
||||
"importancy": 0,
|
||||
"lgtd": 115.166667,
|
||||
"lttd": 31.333333,
|
||||
"elev": 0,
|
||||
"damel": 156.8,
|
||||
"dsflz": 154.99,
|
||||
"fsltdz": 149,
|
||||
"ddz": 124,
|
||||
"zcxsw": 149,
|
||||
"drpTm": "2025-06-03T02:00:00.000Z",
|
||||
"today": 0,
|
||||
"h1": 7,
|
||||
"h3": 8.4,
|
||||
"h6": 10.5,
|
||||
"h12": 11.200000000000001,
|
||||
"h24": 12.6,
|
||||
"h48": 25.799999999999997,
|
||||
"drpState": 1,
|
||||
"rz": 141.45,
|
||||
"w": 77.8,
|
||||
"a_fsltdz": -7.550000000000011,
|
||||
"rzTm": "2025-06-03T01:00:00.000Z",
|
||||
"rzWarning": 0,
|
||||
"rzState": 1,
|
||||
"aRz": -7.55
|
||||
},
|
||||
{
|
||||
"stcd": "61612700",
|
||||
"type": "sk",
|
||||
"hasRz": true,
|
||||
"stnm": "碧绿河水库",
|
||||
"adcd": "421181109000",
|
||||
"wscd": null,
|
||||
"importancy": 0,
|
||||
"lgtd": 115.214444,
|
||||
"lttd": 31.299722,
|
||||
"elev": 0,
|
||||
"damel": 142.9,
|
||||
"dsflz": 139.08,
|
||||
"fsltdz": 137,
|
||||
"ddz": 105,
|
||||
"zcxsw": 137,
|
||||
"drpTm": "2025-06-03T02:00:00.000Z",
|
||||
"today": 0,
|
||||
"h1": 4,
|
||||
"h3": 4.8,
|
||||
"h6": 6,
|
||||
"h12": 6.4,
|
||||
"h24": 7.2,
|
||||
"h48": 22.6,
|
||||
"drpState": 1,
|
||||
"rz": 119.6,
|
||||
"w": 13.15,
|
||||
"a_fsltdz": -17.400000000000006,
|
||||
"rzTm": "2025-06-03T00:00:00.000Z",
|
||||
"rzWarning": 0,
|
||||
"rzState": 2,
|
||||
"aRz": -17.4
|
||||
}
|
||||
]
|
||||
const layer = map.getLayer('关联站点')
|
||||
if (layer) {
|
||||
map.removeLayer('关联站点');
|
||||
map.removeSource('关联站点');
|
||||
}
|
||||
map.addLayer({
|
||||
'id': '关联站点',//+new Date().getTime(),
|
||||
'type': 'symbol',
|
||||
'source': {
|
||||
'type': 'geojson',
|
||||
'data': {
|
||||
'type': 'FeatureCollection',
|
||||
'features': [],
|
||||
},
|
||||
},
|
||||
'layout': {
|
||||
'icon-allow-overlap': true,
|
||||
'text-allow-overlap': true,
|
||||
'icon-image': '水库-离线',
|
||||
'icon-size': [
|
||||
'interpolate', ['linear'], ['zoom'],
|
||||
10, 0.4,
|
||||
14, 0.8,
|
||||
],
|
||||
'text-allow-overlap': true,
|
||||
'text-size': [
|
||||
'interpolate', ['linear'], ['zoom'],
|
||||
10, 10,
|
||||
14, 14,
|
||||
],
|
||||
'text-font': ['Roboto Black'],
|
||||
'text-field': [
|
||||
'step',
|
||||
['zoom'],
|
||||
'',
|
||||
12, ['get', 'stnm']
|
||||
],
|
||||
'text-anchor': 'top',
|
||||
'text-offset': [0, 1],
|
||||
// if (id == 203) {
|
||||
// const skdata = [
|
||||
// {
|
||||
// "stcd": "61614200",
|
||||
// "type": "sk",
|
||||
// "hasRz": true,
|
||||
// "stnm": "浮桥河水库",
|
||||
// "adcd": "421181100000",
|
||||
// "wscd": null,
|
||||
// "importancy": 0,
|
||||
// "lgtd": 114.875,
|
||||
// "lttd": 31.166667,
|
||||
// "elev": 0,
|
||||
// "damel": 71.33,
|
||||
// "dsflz": 68.04,
|
||||
// "fsltdz": 64.89,
|
||||
// "ddz": 51.78,
|
||||
// "zcxsw": 64.89,
|
||||
// "drpTm": "2025-06-03T02:00:00.000Z",
|
||||
// "today": 0,
|
||||
// "h1": 5,
|
||||
// "h3": 6,
|
||||
// "h6": 7.5,
|
||||
// "h12": 8,
|
||||
// "h24": 9,
|
||||
// "h48": 26,
|
||||
// "drpState": 1,
|
||||
// "rz": 60.71,
|
||||
// "w": 162.8,
|
||||
// "a_fsltdz": -4.18,
|
||||
// "rzTm": "2025-06-03T02:00:00.000Z",
|
||||
// "rzWarning": 0,
|
||||
// "rzState": 1,
|
||||
// "aRz": -4.18
|
||||
// },
|
||||
// {
|
||||
// "stcd": "61613010",
|
||||
// "type": "sk",
|
||||
// "hasRz": true,
|
||||
// "stnm": "明山水库",
|
||||
// "adcd": "421181103000",
|
||||
// "wscd": null,
|
||||
// "importancy": 0,
|
||||
// "lgtd": 115.066667,
|
||||
// "lttd": 31.016667,
|
||||
// "elev": 0,
|
||||
// "damel": 98.7,
|
||||
// "dsflz": 96.07,
|
||||
// "fsltdz": 93,
|
||||
// "ddz": 78.02,
|
||||
// "zcxsw": 93,
|
||||
// "drpTm": "2025-06-03T02:00:00.000Z",
|
||||
// "today": 0,
|
||||
// "h1": 7,
|
||||
// "h3": 8.4,
|
||||
// "h6": 10.5,
|
||||
// "h12": 11.200000000000001,
|
||||
// "h24": 12.6,
|
||||
// "h48": 25.799999999999997,
|
||||
// "drpState": 1,
|
||||
// "rz": 84.43,
|
||||
// "w": 49.5,
|
||||
// "a_fsltdz": -8.569999999999993,
|
||||
// "rzTm": "2025-06-03T02:00:00.000Z",
|
||||
// "rzWarning": 0,
|
||||
// "rzState": 1,
|
||||
// "aRz": -8.57
|
||||
// },
|
||||
// {
|
||||
// "stcd": "61612610",
|
||||
// "type": "sk",
|
||||
// "hasRz": true,
|
||||
// "stnm": "三河口水库",
|
||||
// "adcd": "421181109000",
|
||||
// "wscd": null,
|
||||
// "importancy": 0,
|
||||
// "lgtd": 115.166667,
|
||||
// "lttd": 31.333333,
|
||||
// "elev": 0,
|
||||
// "damel": 156.8,
|
||||
// "dsflz": 154.99,
|
||||
// "fsltdz": 149,
|
||||
// "ddz": 124,
|
||||
// "zcxsw": 149,
|
||||
// "drpTm": "2025-06-03T02:00:00.000Z",
|
||||
// "today": 0,
|
||||
// "h1": 7,
|
||||
// "h3": 8.4,
|
||||
// "h6": 10.5,
|
||||
// "h12": 11.200000000000001,
|
||||
// "h24": 12.6,
|
||||
// "h48": 25.799999999999997,
|
||||
// "drpState": 1,
|
||||
// "rz": 141.45,
|
||||
// "w": 77.8,
|
||||
// "a_fsltdz": -7.550000000000011,
|
||||
// "rzTm": "2025-06-03T01:00:00.000Z",
|
||||
// "rzWarning": 0,
|
||||
// "rzState": 1,
|
||||
// "aRz": -7.55
|
||||
// },
|
||||
// {
|
||||
// "stcd": "61612700",
|
||||
// "type": "sk",
|
||||
// "hasRz": true,
|
||||
// "stnm": "碧绿河水库",
|
||||
// "adcd": "421181109000",
|
||||
// "wscd": null,
|
||||
// "importancy": 0,
|
||||
// "lgtd": 115.214444,
|
||||
// "lttd": 31.299722,
|
||||
// "elev": 0,
|
||||
// "damel": 142.9,
|
||||
// "dsflz": 139.08,
|
||||
// "fsltdz": 137,
|
||||
// "ddz": 105,
|
||||
// "zcxsw": 137,
|
||||
// "drpTm": "2025-06-03T02:00:00.000Z",
|
||||
// "today": 0,
|
||||
// "h1": 4,
|
||||
// "h3": 4.8,
|
||||
// "h6": 6,
|
||||
// "h12": 6.4,
|
||||
// "h24": 7.2,
|
||||
// "h48": 22.6,
|
||||
// "drpState": 1,
|
||||
// "rz": 119.6,
|
||||
// "w": 13.15,
|
||||
// "a_fsltdz": -17.400000000000006,
|
||||
// "rzTm": "2025-06-03T00:00:00.000Z",
|
||||
// "rzWarning": 0,
|
||||
// "rzState": 2,
|
||||
// "aRz": -17.4
|
||||
// }
|
||||
// ]
|
||||
// const layer = map.getLayer('关联站点')
|
||||
// if (layer) {
|
||||
// map.removeLayer('关联站点');
|
||||
// map.removeSource('关联站点');
|
||||
// }
|
||||
// map.addLayer({
|
||||
// 'id': '关联站点',//+new Date().getTime(),
|
||||
// 'type': 'symbol',
|
||||
// 'source': {
|
||||
// 'type': 'geojson',
|
||||
// 'data': {
|
||||
// 'type': 'FeatureCollection',
|
||||
// 'features': [],
|
||||
// },
|
||||
// },
|
||||
// 'layout': {
|
||||
// 'icon-allow-overlap': true,
|
||||
// 'text-allow-overlap': true,
|
||||
// 'icon-image': '水库-离线',
|
||||
// 'icon-size': [
|
||||
// 'interpolate', ['linear'], ['zoom'],
|
||||
// 10, 0.4,
|
||||
// 14, 0.8,
|
||||
// ],
|
||||
// 'text-allow-overlap': true,
|
||||
// 'text-size': [
|
||||
// 'interpolate', ['linear'], ['zoom'],
|
||||
// 10, 10,
|
||||
// 14, 14,
|
||||
// ],
|
||||
// 'text-font': ['Roboto Black'],
|
||||
// 'text-field': [
|
||||
// 'step',
|
||||
// ['zoom'],
|
||||
// '',
|
||||
// 12, ['get', 'stnm']
|
||||
// ],
|
||||
// 'text-anchor': 'top',
|
||||
// 'text-offset': [0, 1],
|
||||
|
||||
},
|
||||
'paint': {
|
||||
'text-color': '#fff'
|
||||
},
|
||||
'visibility': 'visible',
|
||||
});
|
||||
map.getSource('关联站点').setData(parseGeoJSON(skdata))
|
||||
}
|
||||
// },
|
||||
// 'paint': {
|
||||
// 'text-color': '#fff'
|
||||
// },
|
||||
// 'visibility': 'visible',
|
||||
// });
|
||||
// map.getSource('关联站点').setData(parseGeoJSON(skdata))
|
||||
// }
|
||||
|
||||
if(id!==200&&id!==203&&id!==205&&id!==206){
|
||||
const layer = map.getLayer('临时水库tz')
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ const shyjview = {
|
|||
}
|
||||
|
||||
|
||||
dispatch.runtime.setHome();
|
||||
// dispatch.runtime.setHome();
|
||||
},
|
||||
async showWeatherRadar(_, state) {
|
||||
dispatch.map.setCalculating(true);
|
||||
|
|
@ -49,7 +49,7 @@ const shyjview = {
|
|||
}
|
||||
|
||||
|
||||
dispatch.runtime.setHome();
|
||||
// dispatch.runtime.setHome();
|
||||
},
|
||||
|
||||
async showYj24hContour(latest) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,239 @@
|
|||
import React, { useState } from 'react';
|
||||
import { Card, Row, Col, Table, Tag, Form, Input, DatePicker, Tabs } from 'antd';
|
||||
import './index.less';
|
||||
import moment from 'moment';
|
||||
import ModalView from './view'
|
||||
const TaskInspectionDetail = () => {
|
||||
const [form] = Form.useForm();
|
||||
const [activeTab, setActiveTab] = useState('dam');
|
||||
const [visible, setVisible] = useState(false)
|
||||
|
||||
// 表单初始值
|
||||
const initialValues = {
|
||||
taskTitle: '06-02浮桥河日常巡查',
|
||||
taskType: '日常巡查',
|
||||
taskContent: '20250602每日巡检任务',
|
||||
startTime: moment('2025-06-02 00:00:00'),
|
||||
endTime: moment('2025-06-08 23:59:59'),
|
||||
receiveTime: moment('2025-06-02 09:07:31'),
|
||||
completeTime: moment('2025-06-02 09:08:05'),
|
||||
inspector: '姜兴军',
|
||||
taskStatus: '已完成'
|
||||
};
|
||||
|
||||
// 巡查类别数据
|
||||
const categories = [
|
||||
{ key: 'dam', label: '大坝', count: 0 },
|
||||
{ key: 'spillway', label: '溢洪道', count: 0 },
|
||||
{ key: 'waterPipe', label: '输水管', count: 0 },
|
||||
{ key: 'facilities', label: '管理设施', count: 0 },
|
||||
{ key: 'valve', label: '阀门与启闭机', count: 0 },
|
||||
{ key: 'others', label: '其他情况', count: 0 }
|
||||
];
|
||||
|
||||
const detailModal = (row) => {
|
||||
setVisible(true)
|
||||
}
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: 'index',
|
||||
key: 'index',
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
title: '巡查项',
|
||||
dataIndex: 'item',
|
||||
key: 'item'
|
||||
},
|
||||
{
|
||||
title: '巡查状态',
|
||||
dataIndex: 'status',
|
||||
key: 'status',
|
||||
render: (status) => (
|
||||
<Tag color={status === '正常' ? 'success' : 'error'}>{status}</Tag>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: '问题描述',
|
||||
dataIndex: 'description',
|
||||
key: 'description'
|
||||
},
|
||||
{
|
||||
title: '巡查图片',
|
||||
dataIndex: 'images',
|
||||
key: 'images'
|
||||
},
|
||||
{
|
||||
title: '巡查视频',
|
||||
dataIndex: 'videos',
|
||||
key: 'videos'
|
||||
},
|
||||
{
|
||||
title: '是否处理',
|
||||
dataIndex: 'handled',
|
||||
key: 'handled'
|
||||
},
|
||||
{
|
||||
title: '处理人',
|
||||
dataIndex: 'handler',
|
||||
key: 'handler'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
render: (v,r) => (
|
||||
<span style={{background:'#1890ff',padding:'8px 15px',color:'#fff'}} onClick={()=>detailModal(r)}>详情</span>
|
||||
)
|
||||
}
|
||||
];
|
||||
|
||||
// 表格数据
|
||||
const tableData = [
|
||||
{
|
||||
key: '1',
|
||||
index: 1,
|
||||
item: '上游坝',
|
||||
status: '正常',
|
||||
handler: '姜兴军'
|
||||
},
|
||||
{
|
||||
key: '2',
|
||||
index: 2,
|
||||
item: '下游坝',
|
||||
status: '正常',
|
||||
handler: '姜兴军'
|
||||
}
|
||||
];
|
||||
|
||||
const handleTabChange = (key) => {
|
||||
setActiveTab(key);
|
||||
// 这里可以根据选中的tab加载对应的数据
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="task-inspection-detail" >
|
||||
{/* 任务基本信息 */}
|
||||
<Card className="info-card" title={<span style={{color:"#fff"}}>基本信息</span>}>
|
||||
<Form
|
||||
form={form}
|
||||
initialValues={initialValues}
|
||||
layout="horizontal"
|
||||
labelCol={{ span: 6 }}
|
||||
wrapperCol={{ span: 18 }}
|
||||
>
|
||||
<Row gutter={[24, 16]}>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="任务标题"
|
||||
name="taskTitle"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="任务类型"
|
||||
name="taskType"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24}>
|
||||
<Form.Item
|
||||
label="任务内容"
|
||||
name="taskContent"
|
||||
labelCol={{ span: 3 }}
|
||||
wrapperCol={{ span: 21 }}
|
||||
>
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="开始时间"
|
||||
name="startTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="结束时间"
|
||||
name="endTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="接收时间"
|
||||
name="receiveTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="完成时间"
|
||||
name="completeTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="巡查人"
|
||||
name="inspector"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="任务状态"
|
||||
name="taskStatus"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
</Card>
|
||||
|
||||
{/* 巡查信息 */}
|
||||
<Card className="inspection-card" title={<span style={{color:"#fff"}}>巡查信息</span>}>
|
||||
<div className="category-tabs">
|
||||
{categories.map(category => (
|
||||
<div
|
||||
key={category.key}
|
||||
className={`category-tab ${activeTab === category.key ? 'active' : ''}`}
|
||||
onClick={() => handleTabChange(category.key)}
|
||||
>
|
||||
<span className="category-label">{category.label}</span>
|
||||
<span className="category-count" style={{color:activeTab === category.key?'#1890ff':''}}>({category.count})</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div className="table-info">
|
||||
<span className="total-info">
|
||||
(异常项:0,正常项:13)
|
||||
</span>
|
||||
</div>
|
||||
<Table
|
||||
columns={columns}
|
||||
dataSource={tableData}
|
||||
pagination={false}
|
||||
className="inspection-table"
|
||||
/>
|
||||
</Card>
|
||||
<ModalView
|
||||
open={visible}
|
||||
onClose={() => setVisible(false)}
|
||||
></ModalView>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default TaskInspectionDetail;
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
.task-inspection-detail {
|
||||
padding: 5px;
|
||||
background-color: transparent;
|
||||
min-height: 100vh;
|
||||
|
||||
.info-card {
|
||||
margin-bottom: 24px;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
|
||||
.ant-card-body {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ant-form-item-label > label {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.ant-input,
|
||||
.ant-picker {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
border-color: rgba(255, 255, 255, 0.1);
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: #1890ff;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-picker {
|
||||
.ant-picker-input > input {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.ant-picker-suffix,
|
||||
.ant-picker-separator {
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
.ant-picker-clear {
|
||||
background: #1a1a27;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
}
|
||||
|
||||
.ant-input-textarea {
|
||||
.ant-input {
|
||||
min-height: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-picker-suffix {
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.inspection-card {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
|
||||
.category-tabs {
|
||||
display: flex;
|
||||
margin-bottom: 16px;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
padding-bottom: 16px;
|
||||
|
||||
.category-tab {
|
||||
padding: 8px 16px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
transition: all 0.3s;
|
||||
|
||||
&:hover {
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: #1890ff;
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -16px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background-color: #1890ff;
|
||||
}
|
||||
}
|
||||
|
||||
.category-label {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.category-count {
|
||||
margin-left: 4px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
&:hover .category-label,
|
||||
&.active .category-label {
|
||||
color: #1890ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-info {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.total-info {
|
||||
color: rgba(255, 255, 255, 0.65);
|
||||
}
|
||||
}
|
||||
|
||||
.inspection-table {
|
||||
.ant-table {
|
||||
background-color: transparent;
|
||||
color: #fff;
|
||||
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr > td {
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
color: rgba(255, 255, 255, 0.65);
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr:hover > td {
|
||||
background-color: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
import React from 'react';
|
||||
import DpTab from '../../../../../layouts/mui/DpTab';
|
||||
import Dialog from '@material-ui/core/Dialog';
|
||||
import DialogContent from '@material-ui/core/DialogContent';
|
||||
import DpPaperComponent from '../../../../../layouts/mui/DpPaperCompanent';
|
||||
import DpTabs from '../../../../../layouts/mui/DpTabs';
|
||||
import DpAppBar from '../../../../../layouts/mui/DpAppBar';
|
||||
import DpBackgroundDrop from '../../../../../layouts/mui/DpBackdrop';
|
||||
import DpCloseButton from '../../../../../layouts/mui/DpCloseButton';
|
||||
import { Grid } from '@material-ui/core';
|
||||
import DescriptionItem from '../../../components/DescrptionItem'
|
||||
function HDStDlg({ record, onClose,open }) {
|
||||
const [value, setValue] = React.useState(0);
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
onClose={onClose}
|
||||
maxWidth="xl"
|
||||
style={{ borderRadius: 0 }}
|
||||
PaperComponent={DpPaperComponent}
|
||||
BackdropComponent={DpBackgroundDrop}
|
||||
>
|
||||
<div className="boxhead"></div>
|
||||
<DialogContent style={{ padding: 0, width: '60rem', overflowX: 'hidden',height:'40rem' }}>
|
||||
<DpAppBar position="sticky">
|
||||
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||
<DpTab label="处理详情" />
|
||||
</DpTabs>
|
||||
<DpCloseButton onClick={onClose} />
|
||||
</DpAppBar>
|
||||
<div style={{padding:10}}>
|
||||
{/* <img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img> */}
|
||||
<Grid container size="small">
|
||||
<DescriptionItem label="处理图片" span={2}></DescriptionItem>
|
||||
<DescriptionItem label="处理视频" span={2}></DescriptionItem>
|
||||
<DescriptionItem label="处理描述" span={2}></DescriptionItem>
|
||||
</Grid>
|
||||
</div>
|
||||
</DialogContent>
|
||||
<div className="boxfoot"></div>
|
||||
</Dialog>
|
||||
)
|
||||
}
|
||||
|
||||
export default React.memo(HDStDlg);
|
||||
|
|
@ -7,7 +7,7 @@ import DpTabs from '../../../../layouts/mui/DpTabs';
|
|||
import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||
|
||||
import TaskInspectionDetail from './TaskInspectionDetail'
|
||||
function HDStDlg({ record, onClose }) {
|
||||
const [value, setValue] = React.useState(0);
|
||||
|
||||
|
|
@ -21,15 +21,16 @@ function HDStDlg({ record, onClose }) {
|
|||
BackdropComponent={DpBackgroundDrop}
|
||||
>
|
||||
<div className="boxhead"></div>
|
||||
<DialogContent style={{ padding: 0, width: '60rem', overflowX: 'hidden',height:'80rem' }}>
|
||||
<DialogContent style={{ padding: 0, width: '80rem', overflowX: 'hidden',height:'80rem' }}>
|
||||
<DpAppBar position="sticky">
|
||||
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||
<DpTab label="任务信息" />
|
||||
</DpTabs>
|
||||
<DpCloseButton onClick={onClose} />
|
||||
</DpAppBar>
|
||||
<div style={{padding:10}}>
|
||||
<img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img>
|
||||
<div >
|
||||
{/* <img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img> */}
|
||||
<TaskInspectionDetail />
|
||||
</div>
|
||||
</DialogContent>
|
||||
<div className="boxfoot"></div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,239 @@
|
|||
import React, { useState } from 'react';
|
||||
import { Card, Row, Col, Table, Tag, Form, Input, DatePicker, Tabs } from 'antd';
|
||||
import './index.less';
|
||||
import moment from 'moment';
|
||||
import ModalView from './view'
|
||||
const TaskInspectionDetail = () => {
|
||||
const [form] = Form.useForm();
|
||||
const [activeTab, setActiveTab] = useState('dam');
|
||||
const [visible, setVisible] = useState(false)
|
||||
|
||||
// 表单初始值
|
||||
const initialValues = {
|
||||
taskTitle: '06-02浮桥河日常巡查',
|
||||
taskType: '日常巡查',
|
||||
taskContent: '20250602每日巡检任务',
|
||||
startTime: moment('2025-06-02 00:00:00'),
|
||||
endTime: moment('2025-06-08 23:59:59'),
|
||||
receiveTime: moment('2025-06-02 09:07:31'),
|
||||
completeTime: moment('2025-06-02 09:08:05'),
|
||||
inspector: '姜兴军',
|
||||
taskStatus: '已完成'
|
||||
};
|
||||
|
||||
// 巡查类别数据
|
||||
const categories = [
|
||||
{ key: 'dam', label: '大坝', count: 0 },
|
||||
{ key: 'spillway', label: '溢洪道', count: 0 },
|
||||
{ key: 'waterPipe', label: '输水管', count: 0 },
|
||||
{ key: 'facilities', label: '管理设施', count: 0 },
|
||||
{ key: 'valve', label: '阀门与启闭机', count: 0 },
|
||||
{ key: 'others', label: '其他情况', count: 0 }
|
||||
];
|
||||
|
||||
const detailModal = (row) => {
|
||||
setVisible(true)
|
||||
}
|
||||
// 表格列定义
|
||||
const columns = [
|
||||
{
|
||||
title: '序号',
|
||||
dataIndex: 'index',
|
||||
key: 'index',
|
||||
width: 80
|
||||
},
|
||||
{
|
||||
title: '巡查项',
|
||||
dataIndex: 'item',
|
||||
key: 'item'
|
||||
},
|
||||
{
|
||||
title: '巡查状态',
|
||||
dataIndex: 'status',
|
||||
key: 'status',
|
||||
render: (status) => (
|
||||
<Tag color={status === '正常' ? 'success' : 'error'}>{status}</Tag>
|
||||
)
|
||||
},
|
||||
{
|
||||
title: '问题描述',
|
||||
dataIndex: 'description',
|
||||
key: 'description'
|
||||
},
|
||||
{
|
||||
title: '巡查图片',
|
||||
dataIndex: 'images',
|
||||
key: 'images'
|
||||
},
|
||||
{
|
||||
title: '巡查视频',
|
||||
dataIndex: 'videos',
|
||||
key: 'videos'
|
||||
},
|
||||
{
|
||||
title: '是否处理',
|
||||
dataIndex: 'handled',
|
||||
key: 'handled'
|
||||
},
|
||||
{
|
||||
title: '处理人',
|
||||
dataIndex: 'handler',
|
||||
key: 'handler'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
render: (v,r) => (
|
||||
<span style={{background:'#1890ff',padding:'8px 15px',color:'#fff'}} onClick={()=>detailModal(r)}>详情</span>
|
||||
)
|
||||
}
|
||||
];
|
||||
|
||||
// 表格数据
|
||||
const tableData = [
|
||||
{
|
||||
key: '1',
|
||||
index: 1,
|
||||
item: '上游坝',
|
||||
status: '正常',
|
||||
handler: '姜兴军'
|
||||
},
|
||||
{
|
||||
key: '2',
|
||||
index: 2,
|
||||
item: '下游坝',
|
||||
status: '正常',
|
||||
handler: '姜兴军'
|
||||
}
|
||||
];
|
||||
|
||||
const handleTabChange = (key) => {
|
||||
setActiveTab(key);
|
||||
// 这里可以根据选中的tab加载对应的数据
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="task-inspection-detail" >
|
||||
{/* 任务基本信息 */}
|
||||
<Card className="info-card" title={<span style={{color:"#fff"}}>基本信息</span>}>
|
||||
<Form
|
||||
form={form}
|
||||
initialValues={initialValues}
|
||||
layout="horizontal"
|
||||
labelCol={{ span: 6 }}
|
||||
wrapperCol={{ span: 18 }}
|
||||
>
|
||||
<Row gutter={[24, 16]}>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="任务标题"
|
||||
name="taskTitle"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="任务类型"
|
||||
name="taskType"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={24}>
|
||||
<Form.Item
|
||||
label="任务内容"
|
||||
name="taskContent"
|
||||
labelCol={{ span: 3 }}
|
||||
wrapperCol={{ span: 21 }}
|
||||
>
|
||||
<Input.TextArea />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="开始时间"
|
||||
name="startTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="结束时间"
|
||||
name="endTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="接收时间"
|
||||
name="receiveTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="完成时间"
|
||||
name="completeTime"
|
||||
>
|
||||
<DatePicker showTime style={{ width: '100%' }} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="巡查人"
|
||||
name="inspector"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="任务状态"
|
||||
name="taskStatus"
|
||||
>
|
||||
<Input />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
</Row>
|
||||
</Form>
|
||||
</Card>
|
||||
|
||||
{/* 巡查信息 */}
|
||||
<Card className="inspection-card" title={<span style={{color:"#fff"}}>巡查信息</span>}>
|
||||
<div className="category-tabs">
|
||||
{categories.map(category => (
|
||||
<div
|
||||
key={category.key}
|
||||
className={`category-tab ${activeTab === category.key ? 'active' : ''}`}
|
||||
onClick={() => handleTabChange(category.key)}
|
||||
>
|
||||
<span className="category-label">{category.label}</span>
|
||||
<span className="category-count" style={{color:activeTab === category.key?'#1890ff':''}}>({category.count})</span>
|
||||
</div>
|
||||
))}
|
||||
</div>
|
||||
<div className="table-info">
|
||||
<span className="total-info">
|
||||
(异常项:0,正常项:13)
|
||||
</span>
|
||||
</div>
|
||||
<Table
|
||||
columns={columns}
|
||||
dataSource={tableData}
|
||||
pagination={false}
|
||||
className="inspection-table"
|
||||
/>
|
||||
</Card>
|
||||
<ModalView
|
||||
open={visible}
|
||||
onClose={() => setVisible(false)}
|
||||
></ModalView>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default TaskInspectionDetail;
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
.task-inspection-detail {
|
||||
padding: 5px;
|
||||
background-color: transparent;
|
||||
min-height: 100vh;
|
||||
|
||||
.info-card {
|
||||
margin-bottom: 24px;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
|
||||
.ant-card-body {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.ant-form-item-label > label {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.ant-input,
|
||||
.ant-picker {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
border-color: rgba(255, 255, 255, 0.1);
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
border-color: #1890ff;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-picker {
|
||||
.ant-picker-input > input {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.ant-picker-suffix,
|
||||
.ant-picker-separator {
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
.ant-picker-clear {
|
||||
background: #1a1a27;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
}
|
||||
|
||||
.ant-input-textarea {
|
||||
.ant-input {
|
||||
min-height: 80px;
|
||||
}
|
||||
}
|
||||
|
||||
.ant-picker-suffix {
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
.inspection-card {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
|
||||
.category-tabs {
|
||||
display: flex;
|
||||
margin-bottom: 16px;
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
padding-bottom: 16px;
|
||||
|
||||
.category-tab {
|
||||
padding: 8px 16px;
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
transition: all 0.3s;
|
||||
|
||||
&:hover {
|
||||
color: #1890ff;
|
||||
}
|
||||
|
||||
&.active {
|
||||
color: #1890ff;
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: -16px;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 2px;
|
||||
background-color: #1890ff;
|
||||
}
|
||||
}
|
||||
|
||||
.category-label {
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
}
|
||||
|
||||
.category-count {
|
||||
margin-left: 4px;
|
||||
color: rgba(255, 255, 255, 0.45);
|
||||
}
|
||||
|
||||
&:hover .category-label,
|
||||
&.active .category-label {
|
||||
color: #1890ff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.table-info {
|
||||
margin-bottom: 16px;
|
||||
|
||||
.total-info {
|
||||
color: rgba(255, 255, 255, 0.65);
|
||||
}
|
||||
}
|
||||
|
||||
.inspection-table {
|
||||
.ant-table {
|
||||
background-color: transparent;
|
||||
color: #fff;
|
||||
|
||||
.ant-table-thead > tr > th {
|
||||
background-color: rgba(255, 255, 255, 0.04);
|
||||
color: rgba(255, 255, 255, 0.85);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr > td {
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
||||
color: rgba(255, 255, 255, 0.65);
|
||||
}
|
||||
|
||||
.ant-table-tbody > tr:hover > td {
|
||||
background-color: rgba(255, 255, 255, 0.08);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
import React from 'react';
|
||||
import DpTab from '../../../../../layouts/mui/DpTab';
|
||||
import Dialog from '@material-ui/core/Dialog';
|
||||
import DialogContent from '@material-ui/core/DialogContent';
|
||||
import DpPaperComponent from '../../../../../layouts/mui/DpPaperCompanent';
|
||||
import DpTabs from '../../../../../layouts/mui/DpTabs';
|
||||
import DpAppBar from '../../../../../layouts/mui/DpAppBar';
|
||||
import DpBackgroundDrop from '../../../../../layouts/mui/DpBackdrop';
|
||||
import DpCloseButton from '../../../../../layouts/mui/DpCloseButton';
|
||||
import { Grid } from '@material-ui/core';
|
||||
import DescriptionItem from '../../../components/DescrptionItem'
|
||||
function HDStDlg({ record, onClose,open }) {
|
||||
const [value, setValue] = React.useState(0);
|
||||
|
||||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
onClose={onClose}
|
||||
maxWidth="xl"
|
||||
style={{ borderRadius: 0 }}
|
||||
PaperComponent={DpPaperComponent}
|
||||
BackdropComponent={DpBackgroundDrop}
|
||||
>
|
||||
<div className="boxhead"></div>
|
||||
<DialogContent style={{ padding: 0, width: '60rem', overflowX: 'hidden',height:'40rem' }}>
|
||||
<DpAppBar position="sticky">
|
||||
<DpTabs value={value} indicatorColor="primary" onChange={(_, v) => setValue(v)}>
|
||||
<DpTab label="处理详情" />
|
||||
</DpTabs>
|
||||
<DpCloseButton onClick={onClose} />
|
||||
</DpAppBar>
|
||||
<div style={{padding:10}}>
|
||||
{/* <img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img> */}
|
||||
<Grid container size="small">
|
||||
<DescriptionItem label="处理图片" span={2}></DescriptionItem>
|
||||
<DescriptionItem label="处理视频" span={2}></DescriptionItem>
|
||||
<DescriptionItem label="处理描述" span={2}></DescriptionItem>
|
||||
</Grid>
|
||||
</div>
|
||||
</DialogContent>
|
||||
<div className="boxfoot"></div>
|
||||
</Dialog>
|
||||
)
|
||||
}
|
||||
|
||||
export default React.memo(HDStDlg);
|
||||
|
|
@ -138,7 +138,7 @@ const TaskList = () => {
|
|||
city: '黄冈市',
|
||||
district: '麻城市',
|
||||
location: '',
|
||||
taskType: '06-02明山水库日常巡查',
|
||||
taskType: '06-02浮桥河水库日常巡查',
|
||||
taskContent: '20250602每日巡检',
|
||||
status: '未完成',
|
||||
person: '姜兴军',
|
||||
|
|
@ -170,7 +170,7 @@ const TaskList = () => {
|
|||
city: '黄冈市',
|
||||
district: '麻城市',
|
||||
location: '',
|
||||
taskType: '06-02永丰水库特别检查',
|
||||
taskType: '06-02浮桥河水库特别检查',
|
||||
taskContent: '20250602每日巡检',
|
||||
status: '未完成',
|
||||
person: '白斌',
|
||||
|
|
@ -186,7 +186,7 @@ const TaskList = () => {
|
|||
city: '黄冈市',
|
||||
district: '麻城市',
|
||||
location: '',
|
||||
taskType: '06-02永红水库日常巡查',
|
||||
taskType: '06-02浮桥河水库日常巡查',
|
||||
taskContent: '20250602每日巡检',
|
||||
status: '未完成',
|
||||
person: '于静',
|
||||
|
|
@ -201,7 +201,7 @@ const TaskList = () => {
|
|||
city: '黄冈市',
|
||||
district: '麻城市',
|
||||
location: '',
|
||||
taskType: '06-02四新水库日常巡查',
|
||||
taskType: '06-02浮桥河水库日常巡查',
|
||||
taskContent: '20250602每日巡检',
|
||||
status: '未完成',
|
||||
person: '何义红',
|
||||
|
|
@ -213,9 +213,12 @@ const TaskList = () => {
|
|||
creator: ''
|
||||
},
|
||||
];
|
||||
const flyTo = () => {
|
||||
const flyTo = (row) => {
|
||||
// dispatch?.runtime.setInfoDlg({ layerId: 'ChaoshiDetailLayer', properties: {} })
|
||||
setVisible(true)
|
||||
if (row.sequence == 1) {
|
||||
setVisible(true)
|
||||
|
||||
}
|
||||
}
|
||||
const [params, setParams] = useState({ tm: [] })
|
||||
|
||||
|
|
@ -227,20 +230,7 @@ const TaskList = () => {
|
|||
tm: e,
|
||||
})
|
||||
};
|
||||
useEffect(() => {
|
||||
let options = "";
|
||||
options = {
|
||||
etm: moment().add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||
stm: moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }).format("YYYY-MM-DD HH:mm"),
|
||||
tm: [
|
||||
moment().subtract(7, 'days').add(1, 'hour').set({ minute: 0, second: 0 }),
|
||||
moment().add(1, 'hour').set({ minute: 0, second: 0 }),
|
||||
],
|
||||
}
|
||||
|
||||
setParams(options)
|
||||
|
||||
}, [])
|
||||
|
||||
|
||||
return (
|
||||
<Paper className={classes.root}>
|
||||
|
|
@ -304,7 +294,7 @@ const TaskList = () => {
|
|||
showTime={{
|
||||
format: 'HH:mm',
|
||||
}}
|
||||
value={params.tm}
|
||||
value={[moment('2025-06-02 00:00'),moment('2025-06-02 23:00')]}
|
||||
getPopupContainer={trigger => trigger.parentElement}
|
||||
/>
|
||||
</div>
|
||||
|
|
@ -357,7 +347,7 @@ const TaskList = () => {
|
|||
<TableCell>{row.problems}</TableCell>
|
||||
<TableCell>{row.processed}</TableCell>
|
||||
<TableCell>
|
||||
<IconButton className={classes.actionButton} size="small" onClick={flyTo}>
|
||||
<IconButton className={classes.actionButton} size="small" onClick={()=>flyTo(row)}>
|
||||
查看
|
||||
</IconButton>
|
||||
</TableCell>
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ import DpTabs from '../../../../layouts/mui/DpTabs';
|
|||
import DpAppBar from '../../../../layouts/mui/DpAppBar';
|
||||
import DpBackgroundDrop from '../../../../layouts/mui/DpBackdrop';
|
||||
import DpCloseButton from '../../../../layouts/mui/DpCloseButton';
|
||||
|
||||
import TaskInspectionDetail from './TaskInspectionDetail'
|
||||
function HDStDlg({ record, onClose,open }) {
|
||||
const [value, setValue] = React.useState(0);
|
||||
|
||||
|
|
@ -28,8 +28,9 @@ function HDStDlg({ record, onClose,open }) {
|
|||
</DpTabs>
|
||||
<DpCloseButton onClick={onClose} />
|
||||
</DpAppBar>
|
||||
<div style={{padding:10}}>
|
||||
<img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img>
|
||||
<div style={{ padding: 10 }}>
|
||||
<TaskInspectionDetail />
|
||||
{/* <img src={`${process.env.PUBLIC_URL}/assets/xcxq.png`} style={{width:'100%'}}></img> */}
|
||||
</div>
|
||||
</DialogContent>
|
||||
<div className="boxfoot"></div>
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1366,7 +1366,7 @@ useEffect(() => {
|
|||
}
|
||||
|
||||
</TableContainer>
|
||||
<div style={{ height: '30px', overflow: 'hidden',position:'absolute',top:40,right:1224 }}>
|
||||
{/* <div style={{ height: '30px', overflow: 'hidden',position:'absolute',top:40,right:1224 }}>
|
||||
<Select
|
||||
labelId="analysis-select-label"
|
||||
value={dimension}
|
||||
|
|
@ -1375,9 +1375,9 @@ useEffect(() => {
|
|||
>
|
||||
<MenuItem value="浮桥河水库">浮桥河水库</MenuItem>
|
||||
<MenuItem value="明山水库">明山水库</MenuItem>
|
||||
<MenuItem value="永丰水库">永丰水库</MenuItem>
|
||||
<MenuItem value="永丰水库">三河口水库</MenuItem>
|
||||
</Select>
|
||||
</div>
|
||||
</div> */}
|
||||
</PanelBox>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ import {
|
|||
} from '@material-ui/core';
|
||||
const reservoirData = [
|
||||
{
|
||||
name: '明山水库',
|
||||
name: '浮桥河水库',
|
||||
maxInflow: {
|
||||
value: 12.32,
|
||||
time: '03-23 14:32'
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ function HDReal({ style }) {
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "明山水库",
|
||||
"name": "浮桥河水库",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
@ -92,7 +92,7 @@ function HDReal({ style }) {
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "永红水库",
|
||||
"name": "浮桥河水库",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
@ -107,7 +107,7 @@ function HDReal({ style }) {
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "永丰水库",
|
||||
"name": "浮桥河水库",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
|
|||
|
|
@ -14,26 +14,26 @@ function DrpReal({ style }) {
|
|||
style={style}
|
||||
title="水库预报"
|
||||
color="green"
|
||||
extra={
|
||||
<>
|
||||
{/* <img src='/assets/年下拉3.jpg' style={{width:'100px', height:'30px',marginRight:'10px'}}/> */}
|
||||
<div style={{height:'30px',overflow:'hidden'}}>
|
||||
<Select
|
||||
labelId="analysis-select-label"
|
||||
value={dimension}
|
||||
label=""
|
||||
onChange={(event) => {
|
||||
const value = event.target.value;
|
||||
setDimension(value);
|
||||
}}
|
||||
>
|
||||
<MenuItem value="ft">浮桥河水库</MenuItem>
|
||||
</Select>
|
||||
</div>
|
||||
</>
|
||||
}
|
||||
// extra={
|
||||
// <>
|
||||
// {/* <img src='/assets/年下拉3.jpg' style={{width:'100px', height:'30px',marginRight:'10px'}}/> */}
|
||||
// <div style={{height:'30px',overflow:'hidden'}}>
|
||||
// <Select
|
||||
// labelId="analysis-select-label"
|
||||
// value={dimension}
|
||||
// label=""
|
||||
// onChange={(event) => {
|
||||
// const value = event.target.value;
|
||||
// setDimension(value);
|
||||
// }}
|
||||
// >
|
||||
// <MenuItem value="ft">浮桥河水库</MenuItem>
|
||||
// </Select>
|
||||
// </div>
|
||||
// </>
|
||||
// }
|
||||
>
|
||||
<div className='skyb-box'>
|
||||
{/* <div className='skyb-box'>
|
||||
<div className='rain-yb'>
|
||||
<div className='title-yb'>水库雨量预报</div>
|
||||
<TableYb />
|
||||
|
|
@ -45,7 +45,9 @@ function DrpReal({ style }) {
|
|||
style={{ width: '100%',height:200 }}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div> */}
|
||||
<img src={`${process.env.PUBLIC_URL}/assets/skyb.png`} />
|
||||
|
||||
</PanelBox>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1701,14 +1701,14 @@ const data4 = [
|
|||
const data = [
|
||||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "明山水库-日常管理",
|
||||
"code": "1",
|
||||
"name": "浮桥河水库-日常管理",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||
"lgtd": "115.066667",
|
||||
"lttd": "31.016667",
|
||||
"lgtd": "114.88169",
|
||||
"lttd": "31.171967",
|
||||
'username': '余静',
|
||||
taskType: '混凝土护坡开裂',
|
||||
tm: '2025-06-02 00:10:00',
|
||||
|
|
@ -1717,7 +1717,7 @@ const data = [
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "永红水库-日常管理",
|
||||
"name": "浮桥河水库-日常管理",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
@ -1732,7 +1732,7 @@ const data = [
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "永丰水库-汛前检查",
|
||||
"name": "浮桥河水库-汛前检查",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
@ -1750,22 +1750,24 @@ const data = [
|
|||
function DrpReal({ style }) {
|
||||
const [tab, setTab] = useState('1')
|
||||
const dispatch = useDispatch();
|
||||
const [dimension, setDimension] = useState('ft');
|
||||
const [dimension, setDimension] = useState('浮桥河水库');
|
||||
const onChange = (event) => {
|
||||
const value = event.target.value;
|
||||
setDimension(value);
|
||||
}
|
||||
const jumpTo = (record) => {
|
||||
const { lgtd, lttd } = record;
|
||||
const lgtdNum = Number(lgtd) + 0.0019;
|
||||
const lttdNum = Number(lttd)
|
||||
if (lgtdNum && lttdNum) {
|
||||
dispatch.runtime.setCameraTarget({
|
||||
center: [lgtdNum, lttdNum + config.poiPositionOffsetY.hd],
|
||||
zoom: config.poiPositionZoom.hd,
|
||||
pitch: config.poiPitch,
|
||||
});
|
||||
}
|
||||
const lgtdNum = Number(lgtd);
|
||||
const lttdNum = Number(lttd)
|
||||
if (record.code == 1) {
|
||||
if (lgtdNum && lttdNum) {
|
||||
dispatch.runtime.setCameraTarget({
|
||||
center: [lgtdNum, lttdNum],
|
||||
zoom: 17,
|
||||
pitch: config.poiPitch,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return (
|
||||
<PanelBox
|
||||
|
|
@ -1821,19 +1823,18 @@ function DrpReal({ style }) {
|
|||
<img src={`${process.env.PUBLIC_URL}/assets/sjyf.jpg`} alt="" style={{ width: 420 }} />
|
||||
|
||||
</div>
|
||||
<div style={{ height: '30px', overflow: 'hidden',position:'absolute',top:80,right:520 }}>
|
||||
{/* <div style={{ height: '30px', overflow: 'hidden',position:'absolute',top:40,right:1224 }}>
|
||||
<Select
|
||||
labelId="analysis-select-label"
|
||||
value={dimension}
|
||||
label="请选择水库"
|
||||
onChange={onChange}
|
||||
>
|
||||
<MenuItem value="ft">请选择水库</MenuItem>
|
||||
<MenuItem value="浮桥河水库">浮桥河水库</MenuItem>
|
||||
<MenuItem value="明山水库">明山水库</MenuItem>
|
||||
<MenuItem value="永丰水库">永丰水库</MenuItem>
|
||||
<MenuItem value="永丰水库">三河口水库</MenuItem>
|
||||
</Select>
|
||||
</div>
|
||||
</div> */}
|
||||
</PanelBox>
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,31 +16,16 @@ import XcCard from './xcCard'
|
|||
import config from '../../../../config';
|
||||
|
||||
const data = [
|
||||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "明山水库-日常管理",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||
"lgtd": "115.066667",
|
||||
"lttd": "31.016667",
|
||||
'username': '余静',
|
||||
taskType: '特别巡查',
|
||||
tm: '2025-06-02 00:10:00',
|
||||
status: '未完成'
|
||||
},
|
||||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"code": "1",
|
||||
"name": "浮桥河水库-汛前检查",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
"place": "湖北省-黄冈市-麻城市-白果镇",
|
||||
"lgtd": "114.875",
|
||||
"lttd": "31.166667",
|
||||
"lgtd": "114.88169",
|
||||
"lttd": "31.171967",
|
||||
'username': '熊杰',
|
||||
taskType: '日常巡查',
|
||||
tm: '2025-06-02 00:08:00',
|
||||
|
|
@ -65,7 +50,7 @@ const data = [
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "永红水库-日常管理",
|
||||
"name": "浮桥河水库-日常管理",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
@ -80,7 +65,7 @@ const data = [
|
|||
{
|
||||
"guid": "42118120003",
|
||||
"code": "",
|
||||
"name": "永丰水库-汛前检查",
|
||||
"name": "浮桥河水库-汛前检查",
|
||||
"resRegCode": "42000020030-A4",
|
||||
"adName": "白果镇",
|
||||
"engScal": "大(2)型",
|
||||
|
|
@ -102,14 +87,16 @@ function DrpReal({ style }) {
|
|||
}
|
||||
const jumpTo = (record) => {
|
||||
const { lgtd, lttd } = record;
|
||||
const lgtdNum = Number(lgtd) + 0.0019;
|
||||
const lgtdNum = Number(lgtd);
|
||||
const lttdNum = Number(lttd)
|
||||
if (lgtdNum && lttdNum) {
|
||||
dispatch.runtime.setCameraTarget({
|
||||
center: [lgtdNum, lttdNum + config.poiPositionOffsetY.hd],
|
||||
zoom: config.poiPositionZoom.hd,
|
||||
pitch: config.poiPitch,
|
||||
});
|
||||
if (record.code == 1) {
|
||||
if (lgtdNum && lttdNum) {
|
||||
dispatch.runtime.setCameraTarget({
|
||||
center: [lgtdNum, lttdNum],
|
||||
zoom: 17,
|
||||
pitch: config.poiPitch,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
return (
|
||||
|
|
|
|||
Loading…
Reference in New Issue