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