diff --git a/src/assets/scss/modules/visual/heart.scss b/src/assets/scss/modules/visual/heart.scss index 0e12e1b7..f0c964cb 100644 --- a/src/assets/scss/modules/visual/heart.scss +++ b/src/assets/scss/modules/visual/heart.scss @@ -8,6 +8,42 @@ justify-content: space-between; margin-top: 5px; } + +.m-sizer { + width: 195px; + margin: 10px 0; + margin-left: auto; + + > span { + font-size: 16px; + font-family: PingFang SC; + font-weight: 400; + color: #ffffff; + } + + ::v-deep .el-input { + width: 140px; + height: 36px; + .el-input__inner { + height: 100%; + padding: 0 10px; + color: #fff; + line-height: 36px; + background: #06186d; + border: 1px solid #1a64cc; + } + .el-icon-arrow-up:before { + content: "\e78f"; + } + } + ::v-deep .el-date-editor { + .el-input__prefix { + left: unset; + right: 5px; + } + } +} + .m-tb { width: 33%; .title { @@ -28,7 +64,7 @@ } } .tb { - height: calc(100vh - 180px); + height: calc(100vh - 230px); overflow-y: auto; @include scrollBar; } diff --git a/src/assets/scss/modules/visual/incident-info.scss b/src/assets/scss/modules/visual/incident-info.scss index a8fa9ff2..1ca5a43a 100644 --- a/src/assets/scss/modules/visual/incident-info.scss +++ b/src/assets/scss/modules/visual/incident-info.scss @@ -120,6 +120,11 @@ margin: 10px 0; display: flex; padding-left: 15px; + .info-title-2 { + width: 70px; + flex: 0 0 1; + font-size: 14px; + } > span, > div { diff --git a/src/assets/scss/modules/visual/issue-info.scss b/src/assets/scss/modules/visual/issue-info.scss index da6031fb..43f77201 100644 --- a/src/assets/scss/modules/visual/issue-info.scss +++ b/src/assets/scss/modules/visual/issue-info.scss @@ -73,10 +73,14 @@ margin: 10px 0; display: flex; padding-left: 15px; - + .info-title-2 { + width: 90px; + flex: 0 0 1; + font-size: 14px; + } .info-pics { display: flex; - margin: 20px 0; + margin: 10px 0; img { display: block; width: 32%; diff --git a/src/assets/scss/modules/visual/processAnalyze.scss b/src/assets/scss/modules/visual/processAnalyze.scss index 07c430f5..098753e0 100644 --- a/src/assets/scss/modules/visual/processAnalyze.scss +++ b/src/assets/scss/modules/visual/processAnalyze.scss @@ -122,6 +122,7 @@ } .echart-line { margin-top: 10px; + height: 100%; } } .g-count { @@ -244,7 +245,7 @@ text-align: center; position: relative; width: 500px; - // height: 100%; + height: 100%; box-sizing: border-box; } diff --git a/src/views/modules/visual/communityGovern/cpt/issue-info.vue b/src/views/modules/visual/communityGovern/cpt/issue-info.vue index 61df9568..0cc0f2fb 100644 --- a/src/views/modules/visual/communityGovern/cpt/issue-info.vue +++ b/src/views/modules/visual/communityGovern/cpt/issue-info.vue @@ -15,46 +15,48 @@
- 议题标题: + 议题标题: {{ info.issueTitle }}
- 议题建议: + 议题建议: {{ info.issueSuggestion }}
- 话题内容: -
{{ info.topicInfo.topicContent }}
-
- + 话题内容: +
+
{{ info.topicInfo.topicContent }}
+
+ +
- 转议题时间: + 转议题时间: {{ info.shiftIssueTime}}
- 所属网格: + 所属网格: {{ info.belongsGridName}}
- 话题发表人: + 话题发表人: {{ info.topicInfo.publishedUser}}
- 议题发起人: + 议题发起人: {{ info.issueInitiator}}
- 话题来源: + 话题来源: {{ info.topicInfo.groupName}}
- 话题发表时间: + 话题发表时间: {{ info.topicInfo.publishedTimeShow}}
diff --git a/src/views/modules/visual/communityGovern/cpt/project-info.vue b/src/views/modules/visual/communityGovern/cpt/project-info.vue index 30e768c6..2810747b 100644 --- a/src/views/modules/visual/communityGovern/cpt/project-info.vue +++ b/src/views/modules/visual/communityGovern/cpt/project-info.vue @@ -193,20 +193,25 @@ @click="watchImg(src)" />
- 提交时间: + 提交时间: {{ info.eventTime }}
- 报事人: + 报事人: {{ info.eventPeopleName }}
- 所属网格: + 所属网格: {{ info.gridName }}
- 提报给: - {{ info.eventPerson.join("、") || "--" }} + 提报给: +
+
{{ info.eventPersonShow}}
+
{{ info.eventOrgShow}}
+
+ +
@@ -530,7 +535,15 @@ export default { }); if (code === 0) { - this.info = data; + + if (data.eventOrg && data.eventOrg.length > 0) { + data.eventOrgShow = data.eventOrg.join('、') + } + if (data.eventPerson && data.eventPerson.length > 0) { + data.eventPersonShow = data.eventPerson.join('、') + } + this.info = { ...data }; + } else { this.$message.error(msg); } @@ -581,7 +594,7 @@ export default { const { data, code, msg } = await requestPost(url, { categoryCodeList: this.categoryCodes, userId: this.userId, - + projectId: this.projectIdCopy }); if (code === 0) { @@ -592,7 +605,7 @@ export default { let array1 = [] let array2 = [] - // debugger + //楼院小组、居民上报都存在是,研判分析显示两个分支 if (data.groupProjectList && data.groupProjectList.length > 0 && data.eventProjectList && data.eventProjectList.length > 0) { this.yanPan.hasEvent = true diff --git a/src/views/modules/visual/communityGovern/processAnalyze.vue b/src/views/modules/visual/communityGovern/processAnalyze.vue index c20b4ece..8ed41ee2 100644 --- a/src/views/modules/visual/communityGovern/processAnalyze.vue +++ b/src/views/modules/visual/communityGovern/processAnalyze.vue @@ -163,14 +163,14 @@ export default { legendArray: [ { name: '未结案', - count: 120, - percent: '25.0%', + count: 0, + percent: '0%', url: require('../../../../assets/img/shuju/measure/huang@2x.png') }, { name: '已结案', - count: 351, - percent: '50.0%', + count: 0, + percent: '0%', url: require('../../../../assets/img/shuju/measure/lv@2x.png') } ], @@ -249,6 +249,8 @@ export default { await this.getLineChart() await this.loadProjectlist() + this.assignData() + }, assignData () { @@ -319,17 +321,29 @@ export default { this.projectTotal = data.projectTotal this.dateIncr = data.dateIncr this.monthIncr = data.monthIncr + this.legendArray = [ + { + name: '未结案', + count: data.pendingTotal, + percent: data.pendingRatio, + url: require('../../../../assets/img/shuju/measure/huang@2x.png') + }, + { + name: '已结案', + count: data.closedTotal, + percent: data.closedRatio, + url: require('../../../../assets/img/shuju/measure/lv@2x.png') + } + ] this.pieData = [ { name: "未结案", value: data.pendingTotal, - selected: true, - }, { name: "已结案", - value: data.pendingTotal + value: data.closedTotal, } ] @@ -485,6 +499,7 @@ export default { }, assignLineChart () { + this.lineOption = lineOption() this.$refs.lineChart.setOption(this.lineOption, true) this.$refs.lineChart.setOption({ @@ -509,19 +524,27 @@ export default { async assignPieChart () { this.pieTotal = 0 + let maxIndex = 0 + let maxValue = this.pieData[0].value const _that = this // 获取pieChart配置 this.pieOption = pieOption(this.pieChartS) - this.pieData.forEach(item => { + this.pieData.forEach((item, index) => { this.pieTotal = this.pieTotal + item.value - + if (item.value > maxValue) { + maxValue = item.value + maxIndex = index + item.selected = true + } else if (index !== 0) { + item.selected = false + } }); this.pieOption.title.text = this.pieTotal - this.clickPie(0) + this.clickPie(maxIndex) let fun = function (params) { _that.clickPie(params.dataIndex) diff --git a/src/views/modules/visual/communityGovern/resibuzz.vue b/src/views/modules/visual/communityGovern/resibuzz.vue index 73918a26..85b78d24 100644 --- a/src/views/modules/visual/communityGovern/resibuzz.vue +++ b/src/views/modules/visual/communityGovern/resibuzz.vue @@ -31,12 +31,11 @@
- - +
加载中 @@ -92,7 +91,6 @@ export default { data () { return { dataLoading: true, - pieNoData: false, pieChartS: null, pieChart: '', @@ -365,7 +363,7 @@ export default { this.pieTotal = 0 if (this.pieData.length > 0) { - this.pieNoData = false + this.$refs.pieChart.setNoData(false) const _that = this let maxIndex = 0 let maxValue = this.pieData[0].count @@ -402,7 +400,7 @@ export default { } this.$refs.pieChart.handleClick(fun) } else { - this.pieNoData = true + this.$refs.pieChart.setNoData(true) } }, diff --git a/src/views/modules/visual/communityGovern/typeAnalyze.vue b/src/views/modules/visual/communityGovern/typeAnalyze.vue index c807e563..a1b3f1b0 100644 --- a/src/views/modules/visual/communityGovern/typeAnalyze.vue +++ b/src/views/modules/visual/communityGovern/typeAnalyze.vue @@ -247,8 +247,9 @@ export default { }, - handleChangeDate (value) { + async handleChangeDate (value) { this.dateIdShow = value + await this.getPieChart() this.getPie() }, @@ -267,7 +268,6 @@ export default { } - const url = "/data/aggregator/project/projectcategorylist"; // const url = "http://yapi.elinkservice.cn/mock/245/data/aggregator/project/projectcategorylist"; let params = { @@ -340,7 +340,6 @@ export default { } } - let fun = function (params) { _that.clickPie(params.dataIndex) @@ -392,10 +391,11 @@ export default { this.getTable() }, - handleChangeAgency (value) { + async handleChangeAgency (value) { this.agencyName = this.$refs["myCascader"].getCheckedNodes()[0].label this.agencyId = this.agencyIdArray.length > 0 ? this.agencyIdArray[this.agencyIdArray.length - 1] : '' + await this.getPieChart() this.getPie() console.log(this.agencyIdArray) }, @@ -419,7 +419,7 @@ export default { if (code === 0) { this.demand.total = data.total; this.tableList = data.list - if (data.list.length > 0) { + if (data.list && data.list.length > 0) { this.demand.list = data.list.map((item) => { //楼院小组:issue; 项目立项:agency 事件上报:resi_event【也可控制点击查看时里边三个按钮的显示】 item.originShow = item.origin === 'issue' ? '楼院小组' : item.origin === 'agency' ? '项目立项' : '事件上报' diff --git a/src/views/modules/visual/components/screen-echarts-frame/index.vue b/src/views/modules/visual/components/screen-echarts-frame/index.vue index e34d34df..9d97c8fb 100644 --- a/src/views/modules/visual/components/screen-echarts-frame/index.vue +++ b/src/views/modules/visual/components/screen-echarts-frame/index.vue @@ -3,7 +3,7 @@
-
@@ -56,6 +56,7 @@ export default { }, //没有数据 setNoData (nodata) { + this.noData = nodata }, diff --git a/src/views/modules/visual/components/screen-map/index.vue b/src/views/modules/visual/components/screen-map/index.vue index 3e593ed5..eba9be98 100644 --- a/src/views/modules/visual/components/screen-map/index.vue +++ b/src/views/modules/visual/components/screen-map/index.vue @@ -3,8 +3,15 @@
- +
+
@@ -28,6 +35,7 @@ import { getDistance } from 'ol/sphere'; import { mapGetters } from "vuex"; import { Loading } from 'element-ui'; //引入Loading服务 + import { requestPost } from "@/js/dai/request"; @@ -81,7 +89,8 @@ const vueGis = { centerPoint: [],//中心点位置 zoom: 14,//缩放范围:区14 minZoom: 1,//最小缩放 - + overlay: null, + showPopup: false, mapInfo: { }, @@ -172,6 +181,13 @@ const vueGis = { this.loadIcon() } + if (this.isAddOpenlay) { + //初始化icon图层 + this.addOverlay() + } + + + this.addMapClick() }, @@ -365,8 +381,6 @@ const vueGis = { return (distance < max || distance === max) - - // debugger // return // var wgs84Sphere = new ol.Sphere(6378137); @@ -405,21 +419,8 @@ const vueGis = { //目标加载到map中 }) - let that = this - map.on('singleclick', function (e) { - const feature = map.forEachFeatureAtPixel(e.pixel, function (feature) { - return feature; - }); - if (feature) { - console.log(feature) - that.$emit('clickFeature', feature) - - } - - }) - //去除双击放大效果 const dblClickInteraction = map .getInteractions() @@ -454,7 +455,6 @@ const vueGis = { }, - //初始化多边形标注图层 initPolygonLayer () { polygonSource = new VectorSource({ @@ -542,6 +542,83 @@ const vueGis = { // }); }, + //添加覆盖层 + addOverlay () { + // 使用变量存储弹窗所需的 DOM 对象 + var container = document.getElementById("popup"); + var closer = document.getElementById("popup-closer"); + var content = document.getElementById("popup-content"); + + // 创建一个弹窗 Overlay 对象 + this.overlay = new Overlay({ + element: container, //绑定 Overlay 对象和 DOM 对象的 + autoPan: true, // 定义弹出窗口在边缘点击时候可能不完整 设置自动平移效果 + autoPanAnimation: { + duration: 250 //自动平移效果的动画时间 9毫秒 + }, + zIndex: 100 + }); + // 将弹窗添加到 map 地图中 + map.addOverlay(this.overlay); + let _that = this; + + /** + * 为弹窗添加一个响应关闭的函数 + */ + closer.onclick = function () { + _that.overlay.setPosition(undefined); + closer.blur(); + return false; + }; + }, + + //注册地图点击事件 + addMapClick () { + let _that = this + + + map.on("click", function (evt) { + const feature = map.forEachFeatureAtPixel(evt.pixel, function (feature) { + return feature; + }); + if (feature) { + console.log(feature) + if (_that.clickType === 'back') { + + _that.$emit('clickFeature', feature) + + + } else if (_that.clickType === 'popup') { + _that.$emit('clickFeature', feature) + // _that.overlay.getElement().parentNode.style.display = 'block' + // _that.overlay.getElement().parentNode.parentNode.style.display = 'block' + + // content.innerHTML = ` + //

你点击了这里:

+ //

经纬度:

+ //

坐标:

X:   Y: `; + // _that.overlay.setPosition(evt.coordinate); //把 overlay 显示到指定的 x,y坐标 + + + } else { + console.log('此处没有标注') + } + + } + + }); + }, + + handleShowPopup (showData, coordinate) { + console.log(this.overlay.getElement()) + this.overlay.getElement().style.display = 'block' + this.overlay.getElement().parentNode.style.display = 'block' + this.overlay.getElement().parentNode.parentNode.style.display = 'block' + var content = document.getElementById("popup-content"); + + content.innerHTML = showData; + this.overlay.setPosition(coordinate); //把 overlay 显示到指定的 x,y坐标 + }, //取随机数 getRndBetween (lowerLimit, upperLimit) { @@ -582,6 +659,17 @@ const vueGis = { showIconLayer: { type: Boolean, default: false + }, + //是否添加弹出框图层 + isAddOpenlay: { + type: Boolean, + default: false + }, + + //点击地图事件类型,back:返回,popup:弹出层 + clickType: { + type: String, + default: 'back' } }, @@ -623,4 +711,51 @@ export default vueGis; .ol-overlaycontainer-stopevent { display: none; } +.ol-popup { + position: absolute; + background-color: #1257c9; + -webkit-filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2)); + filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.2)); + padding: 15px; + border-radius: 10px; + border: 1px solid #1257c9; + bottom: 12px; + left: -50px; + text-align: left; +} +.ol-popup:after, +.ol-popup:before { + top: 100%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; +} +.ol-popup:after { + border-top-color: 1257c9; + border-width: 10px; + left: 48px; + margin-left: -10px; +} +.ol-popup:before { + border-top-color: #1257c9; + border-width: 11px; + left: 48px; + margin-left: -11px; +} +.ol-popup-closer { + text-decoration: none; + position: absolute; + top: 2px; + right: 8px; +} +.popup-content { + width: 300px; +} +.ol-popup-closer:after { + content: "✖"; + color: rgba(1, 17, 104, 1); +} \ No newline at end of file diff --git a/src/views/modules/visual/cpts/analyse.vue b/src/views/modules/visual/cpts/analyse.vue index 43777c25..6292ddc5 100644 --- a/src/views/modules/visual/cpts/analyse.vue +++ b/src/views/modules/visual/cpts/analyse.vue @@ -297,6 +297,7 @@ export default {