From 483952d50243e1c03be2ccb0904680cc0f6278c7 Mon Sep 17 00:00:00 2001
From: lct123456 <lucht>
Date: 星期二, 26 四月 2022 23:59:29 +0800
Subject: [PATCH] 四色图、校验规则

---
 config/dev.env.js                                                                             |    8 
 src/views/doublePreventAction/riskLevelManage/fourColorMap/components/oneHundredAndThirty.vue |  288 ++++++++++++++++++++++++++
 src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue                           |   29 ++
 src/views/doublePreventAction/riskLevelManage/fourColorMap/components/sixty.vue               |  288 ++++++++++++++++++++++++++
 src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue                          |   15 
 5 files changed, 613 insertions(+), 15 deletions(-)

diff --git a/config/dev.env.js b/config/dev.env.js
index d88e0d0..1f32149 100644
--- a/config/dev.env.js
+++ b/config/dev.env.js
@@ -5,8 +5,8 @@
     // BASE_API: '"http://10.142.119.232:8100"',
     // IMG_API: '"http://10.142.119.232:8100/upload/"',
 
-  // BASE_API: '"http://222.92.213.22:8006/zhongtai"',
-  // IMG_API: '"http://222.92.213.22:8006/zhongtai/upload/"',
+  BASE_API: '"http://222.92.213.22:8006/zhongtai"',
+  IMG_API: '"http://222.92.213.22:8006/zhongtai/upload/"',
   //
   // BASE_API: '"https://sinanoaq.cn:8100"',
   //  BASE_API: '"http://127.0.0.1:8100"',
@@ -23,6 +23,6 @@
     NANO_API: '"http://127.0.0.1:8081/zhongtaiexam"',
     // BASE_API: '"http://220.171.99.118:4101/api"',
     // IMG_API: '"http://220.171.99.118:4101/api/upload/"',
-        BASE_API: '"http://112.86.23.31:8006"',
-    IMG_API: '"http://112.86.23.31:8006/upload/"',
+    //     BASE_API: '"http://112.86.23.31:8006"',
+    // IMG_API: '"http://112.86.23.31:8006/upload/"',
 };
diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue
index 73c496e..ccebb06 100644
--- a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue
+++ b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue
@@ -343,10 +343,14 @@
                 execDepartment:'',
                 inspectionTaskVisible:false,
                 inspectionTaskFormRules:{
-                    hazardDep: [{ required: true, message: '责任部门不能为空', trigger: 'change' }],
-                    hazardLiablePerson: [{ required: true, message: '责任人不能为空', trigger: 'blur' }],
-                    hazardCode: [{ required: true, message: '安全风险分析对象编码不能为空', trigger: 'blur' }],
-                    riskUnitName: [{ required: true, message: '安全风险分析单元名称不能为空', trigger: 'blur' }],
+                    title: [{ required: true, message: '任务名称不能为空', trigger: 'blur' }],
+                    type: [{ required: true, message: '检查类型不能为空', trigger: 'change' }],
+                    intervalSeconds: [{ required: true, message: '检查频次不能为空', trigger: 'change' }],
+                    noticeSeconds: [{ required: true, message: '提前通知时间不能为空', trigger: 'change' }],
+                    startTime: [{ required: true, message: '周期开始时间不能为空', trigger: 'change' }],
+                    effectSeconds: [{ required: true, message: '任务有效时间不能为空', trigger: 'change' }],
+                    noticeUid: [{ required: true, message: '异常通知人员不能为空', trigger: 'change' }],
+                    execUid: [{ required: true, message: '执行巡检人员不能为空', trigger: 'change' }],
                 },
                 inspectionTaskForm:{
                     type:null,
@@ -500,6 +504,11 @@
                                 type:'warning',
                                  message:'任务持续时间不能大于检查频次'
                             })
+                        }else if(this.justifyTime(this.inspectionTaskForm.startTime,this.inspectionTaskForm.noticeSeconds)){
+                                this.$message({
+                                type:'warning',
+                                message:'周期开始时间减去当前时间和提前通知时间要大于等于半小时'
+                            })
                         }else{
                             if(this.title === '新建巡检计划设定'){
                                 addInspectionTask(this.inspectionTaskForm).then((res)=>{
@@ -558,6 +567,18 @@
                 })
 
             },
+            justifyTime(time,interval) {
+                debugger
+                let timeStr = new Date(time.replace(/-/g,'/'))
+                let date = parseInt(timeStr.getTime()/1000)
+                let newTimeStr = new Date()
+                let newDate = parseInt(newTimeStr.getTime()/1000)
+                if(date - newDate - interval - 1800 >= 0){
+                    return false
+                }else{
+                    return true
+                }
+            },
             deleteById(val){
                 this.$confirm('删除此条信息,是否继续','提示',{
                     confirmButtonText:'确定',
diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/components/oneHundredAndThirty.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/components/oneHundredAndThirty.vue
new file mode 100644
index 0000000..9752b27
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/components/oneHundredAndThirty.vue
@@ -0,0 +1,288 @@
+<template>
+    
+    <div class="map-layout">
+        <Map @init="init" :option="option" v-if="option" />
+        <Tab v-if="loaded" />
+    </div>
+
+
+</template>
+
+<script>
+    import Map from '../../../../../components/Map';
+    import Tab from '../../../../../components/Tab';
+    import { global } from '../../../../../global';
+    import {
+        getCatesian3FromPX,
+        Cartesian3_to_WGS84,
+    } from '../../../../../components/Map/libs/Point';
+
+    export default {
+        name: 'App',
+        components: {
+            Map,
+            Tab,
+        },
+        data() {
+            return {
+                activeName:'first',
+                loaded: false,
+                map: null,
+                option: null,
+                heatLayer: null,
+                shineishiwai: true,
+            };
+        },
+        mounted() {
+            // 地图配置初始化
+            this.option = {
+                // 初始化视图中心点
+                viewpoint: {
+                    y: 31.254992,
+                    x: 120.727592,
+                    z: 289.24,
+                    heading: 13.8,
+                    pitch: -37.3,
+                    roll: 360,
+                },
+
+                // 显示位置初始化按钮
+                homeButton: true,
+
+                // 当前时间
+                currentTime: '08:30:00',
+
+                // 影像底图
+                imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
+                    url:
+                        'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
+                    layer: '',
+                    style: 'default',
+                    tileMatrixSetID: 'w',
+                    format: 'tiles',
+                    maximumLevel: 18,
+                }),
+            };
+            window.sss = this;
+        },
+        methods: {
+            init(map) {
+                this.loaded = true;
+
+                map.addModel({
+                    link: 'http://222.92.213.22:8006/b3dm130/tileset.json',
+                    name: '商业园区',
+                    callback: tileset => {
+                        var boundingSphere = tileset.boundingSphere;
+                        var cartographic = Cesium.Cartographic.fromCartesian(
+                            boundingSphere.center
+                        );
+                        var surface = Cesium.Cartesian3.fromRadians(
+                            cartographic.longitude,
+                            cartographic.latitude,
+                            0.0
+                        );
+                        var offset = Cesium.Cartesian3.fromRadians(
+                            cartographic.longitude,
+                            cartographic.latitude,
+                            102
+                        );
+                        var translation = Cesium.Cartesian3.subtract(
+                            offset,
+                            surface,
+                            new Cesium.Cartesian3()
+                        );
+                        tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+                    },
+                });
+
+                map.viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString(
+                    '#050F1F'
+                );
+                map.viewer.scene.logarithmicDepthBuffer = false;
+                map.viewer.scene.globe.enableLighting = true;
+                map.viewer.scene.sun.show = false;
+                map.viewer.scene.moon.show = false;
+                map.viewer.scene.fog.enabled = false;
+                map.viewer.scene.skyBox = null;
+
+                // 初始化事件
+                this.initEvent(map);
+
+                this.testLoadedData();
+            },
+            // 加载测试数据
+            testLoadedData() {
+                const map = global.map;
+                if (!map) return;
+                $.get('./public/data/plots_namisuo.geojson', res => {
+                    map.loadGeoJSON(res);
+                });
+            },
+            initEvent(map) {
+                let popup = null;
+                const _this = this;
+                map.on(
+                    'click',
+                    ({
+                         position,
+                         cartesian3,
+                         latLngPositionGlobe,
+                         latLngPosition,
+                         entity,
+                         attr,
+                     }) => {
+                        if (popup) {
+                            popup.destroy();
+                            popup = null;
+                        }
+                        let type = entity && entity.attribute && entity.attribute.type;
+                        if (type) {
+                            popup = new wutu3d.DivPoint(map.viewer, {
+                                html:
+                                    "<div class='popup-wrapper'>" +
+                                    attr.name +
+                                    '<br/><br/>XXXXXXXX</div>',
+                                position: cartesian3,
+                                anchor: [-170, -80],
+                            });
+                            popup.visible = true;
+                        }
+                        if (attr.name && attr.name === '含内景大楼') {
+                            _this.changeModel(!_this.shineishiwai);
+                            _this.shineishiwai = !_this.shineishiwai;
+                        }
+
+                        const pos = getCatesian3FromPX(position, map.viewer);
+                        const pos1 = Cartesian3_to_WGS84(pos);
+                        console.log(pos1);
+
+                        var pt = turf.point([Number(pos1.lng), Number(pos1.lat)]);
+                        var poly = turf.polygon([
+                            [
+                                [120.159277, 30.227512],
+                                [120.158919, 30.227569],
+                                [120.158777, 30.227431],
+                                [120.158904, 30.227151],
+                                [120.15911, 30.227119],
+                                [120.159339, 30.227347],
+                                [120.159277, 30.227512],
+                            ],
+                        ]);
+
+                        const inPoly = turf.booleanPointInPolygon(pt, poly);
+
+                        if (
+                            //自己测量对应建筑的空间范围
+                            inPoly &&
+                            pos1.alt > 0 && //20.562718744748462
+                            pos1.alt < 121.7
+                        ) {
+                            _this.changeModel(!_this.shineishiwai);
+                            _this.shineishiwai = !_this.shineishiwai;
+                        }
+                    }
+                );
+                // map.on(
+                //   'mousemove',
+                //   ({ cartesian3, latLngPositionGlobe, latLngPosition, entity, attr }) => {
+                //     if (popup) {
+                //       popup.destroy();
+                //       popup = null;
+                //     }
+                //     let type = entity && entity.attribute && entity.attribute.type;
+                //     if (type) {
+                //       popup = new wutu3d.DivPoint(map.viewer, {
+                //         html:
+                //           "<div class='popup-wrapper'>信息内容<br/><br/>XXXXXXXX</div>",
+                //         position: cartesian3,
+                //         anchor: [-170, -80],
+                //       });
+                //       popup.visible = true;
+                //     }
+                //   }
+                // );
+            },
+            changeModel(val) {
+                console.log(val);
+                if (!val) {
+                    global.map.models.map(model => {
+                        if (model.name === '室内') {
+                            global.map.setModelVisible(model.id, true);
+                            global.map.flyToModel(model.id);
+                        } else {
+                            global.map.setModelVisible(model.id, false);
+                        }
+                    });
+
+                    let viewer = global.map.viewer;
+                    viewer.scene.skyBox = null;
+                    viewer.scene.sun.show = false;
+                    viewer.scene.moon.show = false;
+                    viewer.scene.globe.show = false;
+                    viewer.scene.logarithmicDepthBuffer = false;
+                    viewer.scene.skyAtmosphere.show = false;
+                    viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+                        'rgba(0,0,0, 1)'
+                    );
+                } else {
+                    global.map.models.map(model => {
+                        if (model.name === '室内') {
+                            global.map.setModelVisible(model.id, false);
+                        } else {
+                            global.map.setModelVisible(model.id, true);
+                        }
+                    });
+
+                    global.map.setViewpoint(
+                        {
+                            y: 30.231104,
+                            x: 120.157372,
+                            z: 298.45,
+                            heading: 173,
+                            pitch: -28.8,
+                            roll: 6.2,
+                        },
+                        { duration: 1.5 }
+                    );
+
+                    let viewer = global.map.viewer;
+                    viewer.scene.skyBox = null;
+                    viewer.scene.sun.show = true;
+                    viewer.scene.moon.show = true;
+                    viewer.scene.globe.show = true;
+                    viewer.scene.logarithmicDepthBuffer = true;
+                    viewer.scene.skyAtmosphere.show = true;
+                    viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+                        'rgba(0,0,0, 1)'
+                    );
+                }
+            },
+        },
+    };
+</script>
+
+<style scoped>
+    .map-layout {
+        height: 920px;;
+        position: relative;
+    }
+
+    .tool-btns {
+        position: absolute;
+        z-index: 999;
+        top: 10px;
+        left: 500px;
+    }
+    .sn-tool {
+        position: absolute;
+        bottom: 10px;
+        right: 10px;
+        z-index: 1;
+        padding: 3px;
+        background: #fff;
+    }
+    .left-switch {
+        margin-right: 10px;
+    }
+</style>
diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/components/sixty.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/components/sixty.vue
new file mode 100644
index 0000000..16af71b
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/components/sixty.vue
@@ -0,0 +1,288 @@
+<template>
+    
+    <div class="map-layout">
+        <Map @init="init" :option="option" v-if="option" />
+        <Tab v-if="loaded" />
+    </div>
+
+
+</template>
+
+<script>
+    import Map from '../../../../../components/Map';
+    import Tab from '../../../../../components/Tab';
+    import { global } from '../../../../../global';
+    import {
+        getCatesian3FromPX,
+        Cartesian3_to_WGS84,
+    } from '../../../../../components/Map/libs/Point';
+
+    export default {
+        name: 'App',
+        components: {
+            Map,
+            Tab,
+        },
+        data() {
+            return {
+                activeName:'first',
+                loaded: false,
+                map: null,
+                option: null,
+                heatLayer: null,
+                shineishiwai: true,
+            };
+        },
+        mounted() {
+            // 地图配置初始化
+            this.option = {
+                // 初始化视图中心点
+                viewpoint: {
+                    y: 31.254992,
+                    x: 120.727592,
+                    z: 289.24,
+                    heading: 13.8,
+                    pitch: -37.3,
+                    roll: 360,
+                },
+
+                // 显示位置初始化按钮
+                homeButton: true,
+
+                // 当前时间
+                currentTime: '08:30:00',
+
+                // 影像底图
+                imageryProvider: new Cesium.WebMapTileServiceImageryProvider({
+                    url:
+                        'https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer',
+                    layer: '',
+                    style: 'default',
+                    tileMatrixSetID: 'w',
+                    format: 'tiles',
+                    maximumLevel: 18,
+                }),
+            };
+            window.sss = this;
+        },
+        methods: {
+            init(map) {
+                this.loaded = true;
+
+                map.addModel({
+                    link: 'http://222.92.213.22:8006/b3dm60/tileset.json',
+                    name: '商业园区',
+                    callback: tileset => {
+                        var boundingSphere = tileset.boundingSphere;
+                        var cartographic = Cesium.Cartographic.fromCartesian(
+                            boundingSphere.center
+                        );
+                        var surface = Cesium.Cartesian3.fromRadians(
+                            cartographic.longitude,
+                            cartographic.latitude,
+                            0.0
+                        );
+                        var offset = Cesium.Cartesian3.fromRadians(
+                            cartographic.longitude,
+                            cartographic.latitude,
+                            102
+                        );
+                        var translation = Cesium.Cartesian3.subtract(
+                            offset,
+                            surface,
+                            new Cesium.Cartesian3()
+                        );
+                        tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
+                    },
+                });
+
+                map.viewer.scene.globe.baseColor = Cesium.Color.fromCssColorString(
+                    '#050F1F'
+                );
+                map.viewer.scene.logarithmicDepthBuffer = false;
+                map.viewer.scene.globe.enableLighting = true;
+                map.viewer.scene.sun.show = false;
+                map.viewer.scene.moon.show = false;
+                map.viewer.scene.fog.enabled = false;
+                map.viewer.scene.skyBox = null;
+
+                // 初始化事件
+                this.initEvent(map);
+
+                this.testLoadedData();
+            },
+            // 加载测试数据
+            testLoadedData() {
+                const map = global.map;
+                if (!map) return;
+                $.get('./public/data/plots_namisuo.geojson', res => {
+                    map.loadGeoJSON(res);
+                });
+            },
+            initEvent(map) {
+                let popup = null;
+                const _this = this;
+                map.on(
+                    'click',
+                    ({
+                         position,
+                         cartesian3,
+                         latLngPositionGlobe,
+                         latLngPosition,
+                         entity,
+                         attr,
+                     }) => {
+                        if (popup) {
+                            popup.destroy();
+                            popup = null;
+                        }
+                        let type = entity && entity.attribute && entity.attribute.type;
+                        if (type) {
+                            popup = new wutu3d.DivPoint(map.viewer, {
+                                html:
+                                    "<div class='popup-wrapper'>" +
+                                    attr.name +
+                                    '<br/><br/>XXXXXXXX</div>',
+                                position: cartesian3,
+                                anchor: [-170, -80],
+                            });
+                            popup.visible = true;
+                        }
+                        if (attr.name && attr.name === '含内景大楼') {
+                            _this.changeModel(!_this.shineishiwai);
+                            _this.shineishiwai = !_this.shineishiwai;
+                        }
+
+                        const pos = getCatesian3FromPX(position, map.viewer);
+                        const pos1 = Cartesian3_to_WGS84(pos);
+                        console.log(pos1);
+
+                        var pt = turf.point([Number(pos1.lng), Number(pos1.lat)]);
+                        var poly = turf.polygon([
+                            [
+                                [120.159277, 30.227512],
+                                [120.158919, 30.227569],
+                                [120.158777, 30.227431],
+                                [120.158904, 30.227151],
+                                [120.15911, 30.227119],
+                                [120.159339, 30.227347],
+                                [120.159277, 30.227512],
+                            ],
+                        ]);
+
+                        const inPoly = turf.booleanPointInPolygon(pt, poly);
+
+                        if (
+                            //自己测量对应建筑的空间范围
+                            inPoly &&
+                            pos1.alt > 0 && //20.562718744748462
+                            pos1.alt < 121.7
+                        ) {
+                            _this.changeModel(!_this.shineishiwai);
+                            _this.shineishiwai = !_this.shineishiwai;
+                        }
+                    }
+                );
+                // map.on(
+                //   'mousemove',
+                //   ({ cartesian3, latLngPositionGlobe, latLngPosition, entity, attr }) => {
+                //     if (popup) {
+                //       popup.destroy();
+                //       popup = null;
+                //     }
+                //     let type = entity && entity.attribute && entity.attribute.type;
+                //     if (type) {
+                //       popup = new wutu3d.DivPoint(map.viewer, {
+                //         html:
+                //           "<div class='popup-wrapper'>信息内容<br/><br/>XXXXXXXX</div>",
+                //         position: cartesian3,
+                //         anchor: [-170, -80],
+                //       });
+                //       popup.visible = true;
+                //     }
+                //   }
+                // );
+            },
+            changeModel(val) {
+                console.log(val);
+                if (!val) {
+                    global.map.models.map(model => {
+                        if (model.name === '室内') {
+                            global.map.setModelVisible(model.id, true);
+                            global.map.flyToModel(model.id);
+                        } else {
+                            global.map.setModelVisible(model.id, false);
+                        }
+                    });
+
+                    let viewer = global.map.viewer;
+                    viewer.scene.skyBox = null;
+                    viewer.scene.sun.show = false;
+                    viewer.scene.moon.show = false;
+                    viewer.scene.globe.show = false;
+                    viewer.scene.logarithmicDepthBuffer = false;
+                    viewer.scene.skyAtmosphere.show = false;
+                    viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+                        'rgba(0,0,0, 1)'
+                    );
+                } else {
+                    global.map.models.map(model => {
+                        if (model.name === '室内') {
+                            global.map.setModelVisible(model.id, false);
+                        } else {
+                            global.map.setModelVisible(model.id, true);
+                        }
+                    });
+
+                    global.map.setViewpoint(
+                        {
+                            y: 30.231104,
+                            x: 120.157372,
+                            z: 298.45,
+                            heading: 173,
+                            pitch: -28.8,
+                            roll: 6.2,
+                        },
+                        { duration: 1.5 }
+                    );
+
+                    let viewer = global.map.viewer;
+                    viewer.scene.skyBox = null;
+                    viewer.scene.sun.show = true;
+                    viewer.scene.moon.show = true;
+                    viewer.scene.globe.show = true;
+                    viewer.scene.logarithmicDepthBuffer = true;
+                    viewer.scene.skyAtmosphere.show = true;
+                    viewer.scene.backgroundColor = Cesium.Color.fromCssColorString(
+                        'rgba(0,0,0, 1)'
+                    );
+                }
+            },
+        },
+    };
+</script>
+
+<style scoped>
+    .map-layout {
+        height: 920px;;
+        position: relative;
+    }
+
+    .tool-btns {
+        position: absolute;
+        z-index: 999;
+        top: 10px;
+        left: 500px;
+    }
+    .sn-tool {
+        position: absolute;
+        bottom: 10px;
+        right: 10px;
+        z-index: 1;
+        padding: 3px;
+        background: #fff;
+    }
+    .left-switch {
+        margin-right: 10px;
+    }
+</style>
diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
index 274bc3e..0383b97 100644
--- a/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
@@ -1,13 +1,11 @@
 <template>
 <div style="height:1000px;width:100%;background:#FFFFFF;padding:20px">
     <el-tabs v-model="activeName">
-        <el-tab-pane label="60万吨" name="first">    
-            <div class="map-layout">
-                <Map @init="init" :option="option" v-if="option" />
-                <Tab v-if="loaded" />
-            </div></el-tab-pane>
+        <el-tab-pane label="60万吨" name="first"> 
+            <sixty></sixty>
+        </el-tab-pane>
         <el-tab-pane label="130万吨" name="second">
-            
+            <oneHundredAndThirty></oneHundredAndThirty>
         </el-tab-pane>
     </el-tabs>
 </div>
@@ -16,7 +14,8 @@
 </template>
 
 <script>
-    import tileset from '../../../../assets/tileset.json'   
+    import sixty from './components/sixty.vue'
+    import oneHundredAndThirty from './components/oneHundredAndThirty.vue'
     import Map from '../../../../components/Map';
     import Tab from '../../../../components/Tab';
     import { global } from '../../../../global';
@@ -30,6 +29,8 @@
         components: {
             Map,
             Tab,
+            oneHundredAndThirty,
+            sixty
         },
         data() {
             return {

--
Gitblit v1.9.2