From 2e09a502c01e702a1d63a20c47b7e0a220e0c796 Mon Sep 17 00:00:00 2001 From: Your Name <123456> Date: 星期二, 17 五月 2022 17:42:21 +0800 Subject: [PATCH] '安全风险空间分布图' --- src/components/Tab/index.vue | 6 src/views/doublePreventAction/riskLevelManage/safetyRiskSpace/index.vue | 353 +++++++++++++++++++++++++++++++++++++++ src/components/Tab/Plot.vue | 10 src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue | 7 src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue | 41 ++++ src/views/login/index.vue | 3 src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue | 34 +++ src/api/safetyRiskSpace.js | 35 +++ src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue | 4 src/api/fourColorMap.js | 12 + 10 files changed, 480 insertions(+), 25 deletions(-) diff --git a/src/api/fourColorMap.js b/src/api/fourColorMap.js index fc57bfa..ee59164 100644 --- a/src/api/fourColorMap.js +++ b/src/api/fourColorMap.js @@ -32,4 +32,14 @@ method: 'post', data }); -} \ No newline at end of file +} + +export function getLabel(time) { + return request({ + headers:{ + 'Authorization': getToken() + }, + url: process.env.BASE_API+'/task/get/active?time=' + time, + method: 'get', + }); +} diff --git a/src/api/safetyRiskSpace.js b/src/api/safetyRiskSpace.js new file mode 100644 index 0000000..94aadb7 --- /dev/null +++ b/src/api/safetyRiskSpace.js @@ -0,0 +1,35 @@ +import {getToken} from "../utils/auth"; +import request from '@/utils/request' + +export function getSafetyRiskSpaceList(params) { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + '/riskMap/list', + method: 'get', + params:params?params:{} + }) +} + +export function addSafetyRiskSpace(data) { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + '/riskMap/add', + method: 'post', + data:data + }) +} + + +export function deleteSafetyRiskSpace(id) { + return request({ + headers: { + 'Authorization': getToken() + }, + url: process.env.BASE_API + '/riskMap/del?id=' + id, + method: 'get', + }) +} diff --git a/src/components/Tab/Plot.vue b/src/components/Tab/Plot.vue index b9322b5..f50ff87 100644 --- a/src/components/Tab/Plot.vue +++ b/src/components/Tab/Plot.vue @@ -193,7 +193,7 @@ }) } } - + }, closeCreateHandle() { @@ -233,21 +233,21 @@ }, }, (entity) => { - debugger + console.log(wutu3d.draw.attr.getCoordinates(entity)); this._initLabel(); this.$store.dispatch('map/updateTimestamp'); this.form = { id:'', etype:this.type, "type": "Feature", - "properties": + "properties": JSON.stringify(entity.attribute), "geometry": JSON.stringify({ "type": "Polygon", "coordinates": [ - + wutu3d.draw.attr.getCoordinates(entity) - + ] }) } diff --git a/src/components/Tab/index.vue b/src/components/Tab/index.vue index 4198424..797d6b4 100644 --- a/src/components/Tab/index.vue +++ b/src/components/Tab/index.vue @@ -22,9 +22,9 @@ <el-tab-pane label="电子围栏" name="plot"> <plot-panel :type='type' :colorMapList='colorMapList'/> </el-tab-pane> - <!-- <el-tab-pane label="图标" name="marker"> + <el-tab-pane label="图标" name="marker"> <marker-panel /> - </el-tab-pane> --> + </el-tab-pane> <!-- <el-tab-pane label="波动圈" name="wave"> <wave-panel /> </el-tab-pane> @@ -68,7 +68,7 @@ showTab: true, }; }, - methods : { + methods : { } }; </script> diff --git a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue index ccebb06..4928904 100644 --- a/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue +++ b/src/views/doublePreventAction/hiddenDanger/inspectionTask/index.vue @@ -123,7 +123,7 @@ style="float:right;" @size-change="handleSizeChange" @current-change="handleCurrentChange" - /> + /> <br> </div> @@ -375,7 +375,7 @@ type: "", page: 1, pageSize: 10, - + }, } }, @@ -478,7 +478,7 @@ setTimeout(() => { this.$refs.inspectionPoint.inspectionPointData = this.inspectionTaskForm.checkContents this.$refs.inspectionPoint.ifEdit = true - }); + }); } }, handleDepartment(value){ @@ -568,7 +568,6 @@ }, justifyTime(time,interval) { - debugger let timeStr = new Date(time.replace(/-/g,'/')) let date = parseInt(timeStr.getTime()/1000) let newTimeStr = new Date() diff --git a/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue b/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue index 4c6825c..a0c4b61 100644 --- a/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue +++ b/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue @@ -3,13 +3,25 @@ <div class="filter-container"> <div class="basic_search"> <span>责任部门:</span> - <el-input v-model="listQuery.filter.riskUnitName" style="width:200px"> - </el-input> + <el-select v-model="listQuery.filter.hazardDep" clearable filterable style="width:200px"> + <el-option + v-for="item in departmentList" + :key="item.id" + :label="item.department" + :value="item.department" + ></el-option> + </el-select> </div> <div class="basic_search"> <span>责任人:</span> - <el-input v-model="listQuery.filter.hazardLiablePerson" style="width:200px"> - </el-input> + <el-select v-model="listQuery.filter.hazardLiablePerson" clearable filterable style="width:200px"> + <el-option + v-for="item in userList" + :key="item.id" + :label="item.realname" + :value="item.realname" + ></el-option> + </el-select> </div> <div class="basic_search"> <span>单元名称:</span> @@ -102,6 +114,7 @@ import { computePageCount } from '@/utils' import { addAnalyseUnit, deleteAnalyseUnit, getAnalyseUnitList, updateAnalyseUnit } from '@/api/riskLevelManage' import {getAllDepartment, getDepartmentList} from "../../../../api/departmentManage"; + import {safetyInspectionItemName} from "../../../../api/safetySelfInspection"; export default { name: 'index', filters: { @@ -123,6 +136,7 @@ tableKey: 0, analyseUnitData: [], departmentList:[], + userList:[], listLoading: false, pageSize: 10, recordTotal: 0, @@ -166,6 +180,7 @@ created() { this.getAnalyseUnitData() this.getDepartment() + this.getUser() }, methods: { async getAnalyseUnitData(){ @@ -196,6 +211,17 @@ }) } }, + async getUser(){ + let res = await safetyInspectionItemName() + if(res.data.code === '200'){ + this.userList = res.data.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, showAnalyseUnitForm(value,type){ this.analyseUnitVisible = true this.$nextTick(() =>{ diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue index 4a1b871..503dffc 100644 --- a/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue +++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/oneHundredAndThirty/index.vue @@ -1,5 +1,5 @@ <template> - + <div class="map-layout"> <Map @init="init" :option="option" v-if="option" /> <Tab v-if="loaded" :type='type' :colorMapList='colorMapList'/> @@ -73,7 +73,7 @@ map.addModel({ link: 'http://222.92.213.22:8006/b3dm130/tileset.json', - name: '130吨模型图', + name: '130万吨模型图', callback: tileset => { var boundingSphere = tileset.boundingSphere; var cartographic = Cesium.Cartographic.fromCartesian( diff --git a/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue index 3cf2945..a7c583d 100644 --- a/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue +++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/sixty/index.vue @@ -1,5 +1,5 @@ <template> - + <div class="map-layout"> <Map @init="init" :option="option" v-if="option" /> <Tab v-if="loaded" :type='type' :colorMapList='colorMapList'/> @@ -17,6 +17,7 @@ Cartesian3_to_WGS84, } from '../../../../../components/Map/libs/Point'; import { getMap } from '@/api/fourColorMap' + import {getLabel} from "../../../../../api/fourColorMap"; export default { name: 'App', components: { @@ -73,7 +74,7 @@ map.addModel({ link: 'http://222.92.213.22:8006/b3dm60/tileset.json', - name: '60吨模型图', + name: '60万吨模型图', callback: tileset => { var boundingSphere = tileset.boundingSphere; var cartographic = Cesium.Cartographic.fromCartesian( @@ -112,17 +113,47 @@ this.initEvent(map); this.testLoadedData(); + this.loadLabel() + }, + loadLabel(){ + const map = global.map; + if (!map) return; + let date = new Date() + let list = [] + let fourMapList = { + type: "FeatureCollection", + features: [{ + type: "Feature", + properties: { + "type": "billboard", + "style": { "image": "../../../../../../public/images/wet.png", "scale": 0.25 }, + "attr": { + "name": "垃圾车", + "id": "1a9c592a-8290-49ad-a23c-6ff92f841f78" + } + }, + geometry: { + "type": "Point", + "coordinates": [81.78196, 41.835623, 118.26] + } + }] + } + let time = date.getFullYear()+ '-' + (date.getMonth() + 1) + '-' + date.getDate() + ' ' + (date.getHours()-2) + ':' + date.getMinutes() + ':' + date.getSeconds() + getLabel(time).then(res=> { + fourMapList.features[0].geometry.coordinates = [] + }) + map.loadGeoJSON(fourMapList) }, // 加载测试数据 testLoadedData() { const map = global.map; if (!map) return; const params = {} - + params['eType'] = 1 getMap(params).then(res =>{ let list = [] - let fourMapList = [] + let fourMapList = {} this.colorMapList = res.data.result list = res.data.result.map(item =>{ return{ @@ -158,7 +189,7 @@ popup.destroy(); popup = null; } - + let type = entity && entity.attribute && entity.attribute.type; if (type) { popup = new wutu3d.DivPoint(map.viewer, { diff --git a/src/views/doublePreventAction/riskLevelManage/safetyRiskSpace/index.vue b/src/views/doublePreventAction/riskLevelManage/safetyRiskSpace/index.vue new file mode 100644 index 0000000..8be7351 --- /dev/null +++ b/src/views/doublePreventAction/riskLevelManage/safetyRiskSpace/index.vue @@ -0,0 +1,353 @@ +<template> + <div class="app-container"> + <div class="filter-container"> + <div class="basic_search"> + <span>企业名称:</span> + <el-select v-model="listQuery.eid" class="analyseUnit_input"> + <el-option + v-for="item in companyList" + :key="item.id" + :label="item.company" + :value="item.id" + ></el-option> + </el-select> + </div> + <div class="basic_search"> + <span>状态:</span> + <el-select v-model="listQuery.status" class="analyseUnit_input"> + <el-option + v-for="item in statusList" + :key="item.id" + :label="item.name" + :value="item.id" + ></el-option> + </el-select> + </div> + <el-button class="filter-item" style="margin-left: 10px;margin-top: 10px" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button> + <el-button class="filter-item" style="margin-left: 10px;margin-top: 10px" type="primary" icon="el-icon-plus" @click="showSafetyRiskSpace('','新增')">新增</el-button> + </div> + <div class="table_content"> + <el-table + v-loading="listLoading" + :key="tableKey" + :data="safetyRiskSpaceData" + border + fit + highlight-current-row + style="width: 100%;" + > + <el-table-column label="描述信息" prop="descInfo" align="center"> + </el-table-column> + <el-table-column label="安全风险空间分布图" prop="img" align="center"> + <template slot-scope="scope"> + <el-popover placement="top-start" trigger="click"> + <!-- <a href="http://192.168.0.7:8100/upload/enterprise/20210327184751998.png" target="_blank" title="查看最大化图片"><img src="http://192.168.0.7:8100/upload/enterprise/20210327184751998.png" style="width: 300px;height: 300px" /></a>--> + <!-- <img slot="reference" src="http://192.168.0.7:8100/upload/enterprise/20210327184751998.png" style="width:40px;height:40px;margin-left:10px;cursor:pointer" ></img>--> + <!-- <a :href="scope.row.enterpriseResources.url" target="_blank" title="查看最大化图片"><img v-for="(item,index) in scope.row.enterpriseResources" :src="item.url" style="width: 300px;height: 300px" /></a>--> + <img slot="reference" :src="scope.row.img" style="width:40px;height:40px;margin-left:10px;cursor:pointer" @click="showImg(scope.row.img)"></img> + </el-popover> + </template> + </el-table-column> + <el-table-column label="创建人" prop="createUname" align="center"> + </el-table-column> + <el-table-column label="创建时间" prop="createTime" align="center"> + </el-table-column> + <el-table-column label="最后修改人" prop="editUname" align="center"> + </el-table-column> + <el-table-column label="最后修改时间" prop="editTime" align="center"> + </el-table-column> + <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width"> + <template slot-scope="scope"> + <el-button type="text" @click="showSafetyRiskSpace(scope.row,'查看')">查看</el-button> + <el-button type="text" style="color: red" @click="deleteById(scope.row)">删除</el-button> + </template> + </el-table-column> + </el-table> + <br> + </div> + <el-dialog :title="title" :visible.sync="safetyRiskSpaceVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="600px"> + <el-form ref="safetyRiskSpaceForm" :rules="safetyRiskSpaceFormRules" :model="safetyRiskSpaceForm" label-position="right" label-width="165px"> + <el-form-item label="风险分布图" prop="img"> + <el-upload + accept=".pdf,.jpg,.png" + :action="fileRoad" + class="upload-demo" + ref="upload" + :headers="header" + :data="uploadForm" + list-type="picture-card" + :file-list="fileList" + v-model="safetyRiskSpaceForm.img" + :on-change="handleChangeFile" + :on-success="onFileSuccess" + :multiple="false" + :auto-upload="true"> + <i slot="default" class="el-icon-plus"></i> + <div slot="file" slot-scope="{file}"> + <img + class="el-upload-list__item-thumbnail" + :src="file.url" alt="" + > + <span class="el-upload-list__item-actions"> + <span + class="el-upload-list__item-preview" + @click="handleFile(file)" + > + <i class="el-icon-zoom-in"></i> + </span> + <span + v-if="!disabled" + class="el-upload-list__item-delete" + @click="handleRemove(file,'one')" + > + <i class="el-icon-delete"></i> + </span> + </span> + </div> + </el-upload> + </el-form-item> + <el-form-item label="描述信息" prop="descInfo"> + <el-input v-model="safetyRiskSpaceForm.descInfo" class="analyseUnit_input"></el-input> + </el-form-item> + </el-form> + <div align="right"> + <el-button @click="safetyRiskSpaceVisible = false">取消</el-button> + <el-button type="primary" @click="submitSafetyRiskSpace()">确认</el-button> + </div> + <el-dialog :visible.sync="dialogVisible" :append-to-body="true"> + <img width="100%" :src="dialogImageUrl" alt=""> + </el-dialog> + </el-dialog> + </div> +</template> + +<script> + import { mapGetters } from 'vuex' + import { addSafetyRiskSpace , getSafetyRiskSpaceList , deleteSafetyRiskSpace } from '@/api/safetyRiskSpace' + import { getAllCompany } from "../../../../api/unitManage"; + import {getAnalyseUnitList} from "../../../../api/riskLevelManage"; + import Cookies from "js-cookie"; + export default { + name: 'index', + filters: { + parseMain(type){ + if(type === 1){ + return "是" + }else if(type === 0){ + return "否" + } + }, + }, + computed: { + ...mapGetters([ + 'userType' + ]) + }, + data() { + const validateImg = (rule, value, callback) => { + if (!this.safetyRiskSpaceForm.img) { + callback(new Error('请上传风险空间分布图')) + } else { + callback() + } + } + return { + fileRoad:process.env.BASE_API + '/task/web/upload', + uploadForm:{ + }, + header:{Authorization:''}, + tableKey: 0, + safetyRiskSpaceData: [], + fileList:[], + companyList:[], + statusList:[{id:0,name:'有效'},{id:1,name:'删除'}], + listLoading: false, + title:'', + dialogImageUrl:false, + dialogVisible:false, + disabled: false, + safetyRiskSpaceVisible:false, + safetyRiskSpaceFormRules:{ + img: [{ required: true, validator: validateImg, trigger: 'blur' }], + descInfo: [{ required: true, message: '描述信息不能为空', trigger: 'blur' }], + }, + safetyRiskSpaceForm:{ + createTime: null, + createUid: null, + createUname: null, + descInfo: null, + editTime: null, + editUid: null, + editUname: null, + eid: null, + id: null, + img: null, + status: null + }, + listQuery:{ + eid:'', + status:0, + }, + } + }, + created() { + this.getSafetyRiskSpaceData() + this.getCompany() + }, + methods: { + async getSafetyRiskSpaceData(){ + this.listLoading = true + let params = {} + params["eid"] = (this.listQuery.eid === '' ? Cookies.get('companyid') : this.listQuery.eid) + params["status"] = this.listQuery.status + let res = await getSafetyRiskSpaceList(params) + if(res.data.code === '200'){ + if(res.data.message === '未找到数据'){ + this.safetyRiskSpaceData = [] + this.$message({ + type:'success', + message:'未找到数据', + }) + }else{ + this.safetyRiskSpaceData = res.data.result.map( item => { + item.img = process.env.IMG_API + item.img + return item + }) + } + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + this.listLoading = false + }, + async getCompany(){ + let res = await getAllCompany() + if(res.data.code === '200'){ + this.companyList = res.data.result + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + showSafetyRiskSpace(value,type){ + this.safetyRiskSpaceVisible = true + this.$nextTick(() =>{ + this.$refs["safetyRiskSpaceForm"].clearValidate() + }) + if(type === '新增'){ + this.title = '新增' + this.safetyRiskSpaceForm = { + createUid: Cookies.get('userId'), + descInfo: null, + img: null, + } + }else{ + this.title = '查看' + this.safetyRiskSpaceForm = value + this.fileList.push({url:value.img}) + } + }, + submitSafetyRiskSpace(){ + this.$refs["safetyRiskSpaceForm"].validate((valid) =>{ + if(valid){ + debugger + addSafetyRiskSpace(this.safetyRiskSpaceForm).then((res)=>{ + if(res.data.code === '200'){ + this.safetyRiskSpaceVisible = false + this.getSafetyRiskSpaceData() + this.$notify({ + type:'success', + duration:2000, + message:'新增成功', + title:'成功' + }) + }else{ + this.$message({ + type:'warning', + message:res.data.message + }) + } + }) + }else{ + this.$message({ + message:'请完善基本信息', + type:'warning' + }) + } + }) + }, + deleteById(val){ + this.$confirm('删除此条信息,是否继续','提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + deleteSafetyRiskSpace(val.id).then( ()=>{ + this.getSafetyRiskSpaceData() + this.$notify({ + title:'成功', + message:'删除成功', + type:'success', + duration:2000, + }) + }) + }) + }, + refreshHandle(){ + this.getSafetyRiskSpaceData() + }, + handleChangeFile(){ + this.header.Authorization = Cookies.get('token') + }, + onFileSuccess(response){ + if(response.code === '200'){ + debugger + this.safetyRiskSpaceForm.img = response.result.path + this.fileList.push({url:process.env.IMG_API + response.result.path}) + this.$notify({ + type:'success', + duration:2000, + message:'上传成功', + title:'成功', + }) + }else{ + this.$message({ + message:res.data.message, + type:'warning' + }) + } + }, + handleFile(file){ + debugger + this.dialogImageUrl = file.url; + this.dialogVisible = true; + }, + showImg(file){ + window.open(file, '_blank') + }, + handleRemove(file){ + return this.$confirm(`确定移除 ${ file.name }?`,'提示',{ + confirmButtonText:'确定', + cancelButtonText:'取消', + type:'warning', + }).then(()=> { + this.safetyRiskSpaceForm.img = null + this.fileList = [] + }) + }, + } + } +</script> +<style scoped> + .basic_search{ + display:inline-block; + padding-bottom: 10px; + } + .analyseUnit_input{ + width:200px; + } +</style> diff --git a/src/views/login/index.vue b/src/views/login/index.vue index e36df7c..f5dff7e 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -114,7 +114,7 @@ // return } } - + Cookies.set('token',data.token) _this.$store.commit('SET_ROLES', data.roles) Cookies.set('roles', JSON.stringify(data.roles)) setToken(data.token) @@ -123,6 +123,7 @@ Cookies.set('name', data.username) Cookies.set('userId', data.id) Cookies.set('company', data.company) + Cookies.set('companyid', data.companyid) let address = ''; if (data.city != null && data.city != 'null'){ address = data.city -- Gitblit v1.9.2