From f13afcb61276061871b30bce17a7877287df0b67 Mon Sep 17 00:00:00 2001
From: guanqb <18720758508@163.com>
Date: Sat, 20 Jan 2024 09:56:43 +0800
Subject: [PATCH] 1
---
src/views/activity/components/polygonPlot.vue | 299 ++++++++++++++++++++++++++++++++++++++++++++++++-----------
1 files changed, 241 insertions(+), 58 deletions(-)
diff --git a/src/views/activity/components/polygonPlot.vue b/src/views/activity/components/polygonPlot.vue
index d9c94d4..21445f7 100644
--- a/src/views/activity/components/polygonPlot.vue
+++ b/src/views/activity/components/polygonPlot.vue
@@ -1,58 +1,140 @@
<template>
<div>
- <el-dialog title="修改标绘" :modal="false" :visible.sync="editPlotVisible" :close-on-click-modal="true"
- class="edit-plot-box">
+ <el-dialog title="修改标绘" :visible.sync="editPlotVisible" :modal="true" :close-on-click-modal="false"
+ :modal-append-to-body="true" :append-to-body="true" class="edit-plot-box">
<div>
- <div class="value-name-box">选择标绘颜色:</div>
- <div class="pick-color-box">
- <el-color-picker v-model="choosePlotColor" :predefine="predefineColors" size="small">
- </el-color-picker>
+ <div class="line">
+ <div class="value-name-box">描述:</div>
+ <div class="input-width-box" style="flex: 1;">
+ <input style="width: 100%;" type="text" v-model="polygonRemark" placeholder="请输入..." />
+ </div>
</div>
- </div>
- <div v-show="!polygonName" class="placeholder"></div>
- <div>
- <div class="value-name-box">设置透明度:</div>
- <div class="alpha">
- <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+
+ <div class="line" v-show="restSelectBox">
+ <div class="value-name-box">选择类型:</div>
+ <div class="select-type" style="flex: 1;">
+ <el-select size="small" v-model="restPlotType" placeholder="请选择类型">
+ <el-option v-for="item in restPlotSelectArray" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </div>
</div>
- </div>
- <div v-show="!polygonName" class="placeholder"></div>
- <div class="edit-plot-btn-box">
- <el-button @click="savePlot">保存</el-button>
- <el-button @click="editPlot">编辑</el-button>
- <el-button @click="deletePlot">删除</el-button>
- <el-button @click="editPlotVisible = false">取消</el-button>
+
+ <div class="line" v-show="customImageShow">
+ <div class="value-name-box">选择图片:</div>
+ <div class="select-image" style="position: relative; display: flex; align-items: center;">
+ <el-button style="margin-top: 0; position: relative; background: transparent; border-color: #fff;"
+ @click="imagesListShow = !imagesListShow">
+ <img :src="curImgUrl" alt
+ style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; z-index: 999; width: 20px; height: 20px;" />
+ </el-button>
+
+ <images-select v-show="imagesListShow" @curClick="curClick"></images-select>
+ </div>
+ </div>
+
+ <div class="line">
+ <div class="value-name-box">选择标绘颜色:</div>
+ <div class="pick-color-box">
+ <el-color-picker v-model="choosePlotColor" :predefine="predefineColors"
+ size="small"></el-color-picker>
+ </div>
+ </div>
+
+ <div class="line">
+ <div class="value-name-box">设置透明度:</div>
+ <div class="alpha">
+ <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+ </div>
+ </div>
+
+ <div class="btn-box">
+ <el-button @click="savePlot">保存</el-button>
+ <el-button @click="editPlot">编辑</el-button>
+ <el-button @click="deletePlot">删除</el-button>
+ <el-button @click="editPlotVisible = false">取消</el-button>
+ </div>
</div>
</el-dialog>
- <el-dialog title="新增标绘" :modal="false" :visible.sync="polygonAddVisible" :close-on-click-modal="true"
- class="add-polygon-box" :before-close="cancelSavePolygon">
- <div class="line" v-show="isNeedPolygonType">
- <div class="value-name-box">选择类型:</div>
- <div class="select-type">
- <el-select size="small" v-model="polygonAreaType" placeholder="请选择区域类型">
- <el-option v-for="item in polygonAreaOption" :key="item.value" :label="item.label"
- :value="item.value"></el-option>
- </el-select>
+ <el-dialog title="新增标绘" :visible.sync="polygonAddVisible" :modal="true" :close-on-click-modal="false"
+ :modal-append-to-body="true" :append-to-body="true" class="add-polygon-box" :before-close="cancelSavePolygon">
+ <div>
+ <div class="line">
+ <div class="value-name-box">描述:</div>
+ <div class="input-width-box" style="flex: 1;">
+ <input style="width: 100%;" type="text" v-model="polygonRemark" placeholder="请输入..." />
+ </div>
</div>
- </div>
- <div class="line">
- <div class="value-name-box">选择标绘颜色:</div>
- <div class="pick-color-box">
- <el-color-picker v-model="choosePlotColor" :predefine="predefineColors" size="small">
- </el-color-picker>
+
+ <div class="line" v-show="restSelectBox">
+ <div class="value-name-box">选择类型:</div>
+ <div class="select-type" style="flex: 1;">
+ <el-select size="small" v-model="restPlotType" placeholder="请选择类型">
+ <el-option v-for="item in restPlotSelectArray" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </div>
</div>
- </div>
- <div class="line">
- <div class="value-name-box">设置透明度:</div>
- <div class="alpha">
- <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+
+ <div class="line" v-show="isNeedPolygonType">
+ <div class="value-name-box">选择类型:</div>
+ <div class="select-type" style="flex: 1;">
+ <el-select size="small" v-model="polygonAreaType" placeholder="请选择区域类型"
+ @change="polygonAreaTypeChange">
+ <el-option v-for="item in polygonAreaOption" :key="item.value" :label="item.label"
+ :value="item.value"></el-option>
+ </el-select>
+ </div>
</div>
- </div>
- <div class="placeholder" v-show="!isNeedPolygonType"></div>
- <div class="add-polygon-btn-box">
- <el-button @click="savePolygonInfo">保存</el-button>
- <el-button @click="cancelSavePolygon">取消</el-button>
+
+ <div class="line" v-show="customImageShow">
+ <div class="value-name-box">选择图片:</div>
+ <div class="select-image" style="position: relative; display: flex; align-items: center;">
+ <el-button style="margin-top: 0; position: relative; background: transparent; border-color: #fff;"
+ @click="imagesListShow = !imagesListShow">
+ <img :src="curImgUrl" alt
+ style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; z-index: 999; width: 20px; height: 20px;" />
+ </el-button>
+ <images-select v-show="imagesListShow" @curClick="curClick"></images-select>
+ </div>
+ </div>
+
+ <div class="line" v-show="warningImageShow">
+ <div class="value-name-box">警戒线样式:</div>
+ <div class="select-image" style="position: relative; display: flex; align-items: center;">
+ <el-button style="margin-top: 0; position: relative; background: transparent; border-color: #fff;"
+ @click="imagesListShow = !imagesListShow">
+ <img :src="warningImgUrl" alt
+ style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; margin: auto; z-index: 999; width: 20px; height: 20px;" />
+ </el-button>
+ <Warning-select v-show="imagesListShow" @curClick="curClick"></Warning-select>
+ </div>
+ </div>
+
+ <div class="line">
+ <div class="value-name-box">选择标绘颜色:</div>
+ <div class="pick-color-box">
+ <el-color-picker v-model="choosePlotColor" :predefine="predefineColors"
+ size="small"></el-color-picker>
+ </div>
+ </div>
+
+ <div class="line">
+ <div class="value-name-box">设置透明度:</div>
+ <div class="alpha">
+ <el-slider :min="1" v-model="choosePlotColorAlpha" :format-tooltip="formatTooltip"></el-slider>
+ </div>
+ </div>
+
+ <div v-show="customImageShow" style="font-size: 12px;">
+ <span>建议图像格式:png、尺寸:32x32、大小:10kb以内</span>
+ </div>
+
+ <div class="btn-box">
+ <el-button @click="savePolygonInfo">保存</el-button>
+ <el-button @click="cancelSavePolygon">取消</el-button>
+ </div>
</div>
</el-dialog>
</div>
@@ -71,7 +153,7 @@
export default {
inject: ['userInfo'],
- props: ['showingSecurityId'],
+ props: ['showingSecurityId', 'activityDeptId'],
data () {
return {
@@ -94,6 +176,7 @@
'#c7158577'
],
choosePlotColor: '#409EFF',
+ polygonRemark: '',
choosePlotColorAlpha: 48,
polygonAreaType: 1,
isNeedPolygonType: false,
@@ -102,20 +185,60 @@
polygonAreaOption: [{
value: 1,
- label: '核心区'
+ label: '多边形'
}, {
value: 2,
- label: '缓冲区'
+ label: '跑马灯'
+ }, {
+ value: 3,
+ label: '瀑布墙'
}],
+
+ warningImageShow: false,
+
+ restPlotSelectArray: [
+ {
+ value: 6,
+ label: '群众',
+ },
+ {
+ value: 7,
+ label: '关注对象',
+ },
+ {
+ value: 8,
+ label: '其他对象',
+ },
+ ],
+
plotId: '',
+ customImageShow: false,
+ imagesListShow: false,
+ restPlotType: 6,
+ restSelectBox: false,
+ curImgUrl: '/img/icon/custom.png',
+ warningImgUrl: '/images/jjx3.png'
}
},
methods: {
+ curClick (item, type) {
+ if (type == 1) {
+ this.curImgUrl = item
+ } else {
+ this.warningImgUrl = item
+ }
+
+ this.imagesListShow = false
+ },
+
addPointPopupShow (type, positions) {
polygonAltArray = `${positions.alt},${positions.alt}`
polygonPlotData = `${positions.lng} ${positions.lat}`
-
+ this.customImageShow = false
+ this.restSelectBox = false
+ this.warningImageShow = false
+ this.restPlotType = 6
let color = ''
if (type == 'icon1') {
@@ -127,12 +250,20 @@
} else if (type == 'icon3') {
this.plotSaveType = 8
color = '#ff0000'
+ } else if (type == 'icon4') {
+ this.customImageShow = true
+ this.plotSaveType = 11
+ color = '#ff0000'
+ } else if (type == 'icon5') {
+ this.restSelectBox = true
+ color = '#ff0000'
} else {
color = '#1e32e6'
}
this.isNeedPolygonType = false
this.choosePlotColor = color
+ this.polygonRemark = ''
this.choosePlotColorAlpha = 100
this.polygonAddVisible = true
},
@@ -142,11 +273,15 @@
polygonPlotData = positions
this.plotSaveType = type
this.choosePlotColor = '#409EFF'
+ this.polygonRemark = ''
this.choosePlotColorAlpha = 48
+ this.customImageShow = false
+ this.warningImageShow = false
+ this.restSelectBox = false
if (type == 5) {
this.polygonAreaType = 1
- this.isNeedPolygonType = false
+ this.isNeedPolygonType = true
} else {
this.isNeedPolygonType = false
}
@@ -156,7 +291,22 @@
},
setCurOver (e) {
+ this.restSelectBox = false
+ this.customImageShow = false
+ this.warningImageShow = false
+
plotOverlayData = e
+
+ this.polygonRemark = e.overlay.attrParams.item.remark
+
+ this.curImgUrl = e.overlay.icon
+
+ if (e.overlay.attrParams.item.type == 6 || e.overlay.attrParams.item.type == 7 || e.overlay.attrParams.item.type == 8) {
+ this.restPlotType = e.overlay.attrParams.item.type
+ this.restSelectBox = true
+ }
+
+ if (e.overlay.attrParams.item.type == 11) this.customImageShow = true
this.choosePlotColor = e.overlay.attrParams.color != '' ? e.overlay.attrParams.color.slice(0, 7) : '#409EFF'
this.choosePlotColorAlpha = e.overlay.attrParams.color != '' ? Number(e.overlay.attrParams.color.split(',')[1]) : 100
@@ -183,6 +333,7 @@
// 删除标绘
deletePlot () {
this.$confirm('确定要删除吗?', '提示', {
+ cancelButtonClass: "btn-custom-cancel",
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning',
@@ -201,6 +352,7 @@
if (plotOverlayData != null && plotOverlayData.overlay != null && 'pointOverlayData' in plotOverlayData.overlay.attrParams) {
plotOverlayData.overlay.attrParams.pointOverlayData.remove()
}
+ this.$EventBus.$emit('activeDeletePolygon')
this.$message({
message: '删除成功',
type: 'success'
@@ -223,7 +375,17 @@
// 保存标绘修改
savePlot () {
- this.$parent.updateSecurityPlot({ id: plotOverlayData.overlay.attrParams.id, color: this.choosePlotColor + ',' + this.choosePlotColorAlpha }, plotOverlayData.overlay)
+ let obj = {}
+ if (this.restSelectBox == true) {
+ obj.type = this.restPlotType
+ }
+ this.$parent.updateSecurityPlot({
+ id: plotOverlayData.overlay.attrParams.id,
+ color: this.choosePlotColor + ',' + this.choosePlotColorAlpha,
+ remark: this.polygonRemark,
+ icon: this.curImgUrl,
+ ...obj
+ }, plotOverlayData.overlay)
this.editPlotVisible = false
},
@@ -241,20 +403,37 @@
// 保存绘制区域
savePolygonInfo () {
let positionStr = ''
- if (this.plotSaveType >= 1 && this.plotSaveType <= 4) {
- positionStr = polygonPlotData
- } else if (this.plotSaveType == 5) {
- positionStr = polygonPlotData
- } else if (this.plotSaveType == 6 || this.plotSaveType == 7 || this.plotSaveType == 8) {
+ let iconUrl = {}
+
+ if (this.restSelectBox) {
positionStr = polygonPlotData + ',' + polygonPlotData
+ } else {
+ if (this.plotSaveType >= 1 && this.plotSaveType <= 4) {
+ positionStr = polygonPlotData
+ } else if (this.plotSaveType == 5) {
+ positionStr = polygonPlotData
+ if (this.polygonAreaType == 2) {
+ iconUrl = { iconUrl: this.warningImgUrl }
+ }
+ } else if (this.plotSaveType == 6 || this.plotSaveType == 7 || this.plotSaveType == 8) {
+ positionStr = polygonPlotData + ',' + polygonPlotData
+ } else if (this.plotSaveType == 10) {
+ positionStr = polygonPlotData
+ } else if (this.plotSaveType == 11) {
+ positionStr = polygonPlotData + ',' + polygonPlotData
+ iconUrl = { iconUrl: this.curImgUrl }
+ }
}
+
this.addSecurityPlot({
securityId: this.showingSecurityId,
position: positionStr,
- type: this.plotSaveType,
+ type: this.restSelectBox ? this.restPlotType : this.plotSaveType,
color: this.choosePlotColor + ',' + this.choosePlotColorAlpha,
+ remark: this.polygonRemark,
areaType: this.polygonAreaType,
- altitude: polygonAltArray
+ altitude: polygonAltArray,
+ ...iconUrl
})
this.polygonAddVisible = false
},
@@ -265,6 +444,7 @@
addSecurityPlot(params).then(res => {
if (res.data.success) {
this.$parent.addNewPlot(res.data.data)
+ this.$EventBus.$emit('activeDeletePolygon')
polygonAltArray = []
@@ -279,8 +459,11 @@
})
}
})
- }
+ },
+ polygonAreaTypeChange (e) {
+ e == 2 ? this.warningImageShow = true : this.warningImageShow = false
+ }
},
}
</script>
--
Gitblit v1.9.3