From 6823d83ae242d1f89958fa69729169332123a355 Mon Sep 17 00:00:00 2001 From: bb_pan Date: Mon, 22 Sep 2025 13:13:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E4=BA=8C=E7=BA=A7?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/assets/cityScreen/position.png | Bin 0 -> 5145 bytes src/views/screen/components/countryMap.vue | 211 +++++++++++------- .../wsScreen/components/center/index.vue | 16 +- 3 files changed, 143 insertions(+), 84 deletions(-) create mode 100644 src/assets/cityScreen/position.png diff --git a/src/assets/cityScreen/position.png b/src/assets/cityScreen/position.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2a042ce3fadfaf9624eff2a758f6ce687a9835 GIT binary patch literal 5145 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
+
+
装备总数
+
+
仓库装备:{{ warehouseEquipmentNum }}
+
{{ outCityEquipmentNum }}
@@ -10,6 +15,7 @@ import * as echarts from 'echarts' import { mapDataApi } from "@/api/screen/cityScreen"; +import anhui from '@/utils/mapJson/anhui.json' import hefeiJson from '@/utils/mapJson/hefei.json' import wuhuJson from '@/utils/mapJson/wuhu.json' import bengbuJson from '@/utils/mapJson/bengbu.json' @@ -69,7 +75,10 @@ export default { cityCount: [], gozoom: 1, geoVal: [], - cityName:'合肥' + cityName:'合肥', + btnIndex: 1, + warehouseEquipmentNum: null, // 仓库装备数 + outCityEquipmentNum: null, // 市外装备数 } }, created() { @@ -113,6 +122,8 @@ export default { this.mapJson = chizhouJson }else if(this.cityName.indexOf("宣城")>-1){ this.mapJson = xuanchenJson + } else if (this.cityName.indexOf("安徽送变电") > -1) { + this.mapJson = anhui } console.log(this.mapJson) this.getMapData() @@ -129,16 +140,26 @@ export default { console.log(mapFeatures) let param = {companyId:sessionStorage.getItem('companyId'),city:this.cityName} mapDataApi(param).then(response => { - console.log(response,'mapDataApi') - response.data.proList.forEach(item=>{ - let obj = Object.assign({},item) - obj.name = item.county; - let index = mapFeatures.findIndex(v=>v.name==item.county) - if(index>-1){ - obj.value = mapFeatures[index].value - } - this.geoVal.push(obj) - }) + console.log(response,'mapDataApi--> 大屏地图数据') + // response.data.proList.forEach(item=>{ + // let obj = Object.assign({},item) + // obj.name = item.county; + // let index = mapFeatures.findIndex(v=>v.name==item.county) + // if(index>-1){ + // obj.value = mapFeatures[index].value + // } + // this.geoVal.push(obj) + // }) + this.warehouseEquipmentNum = response.data.warehouseEquipmentNum + this.outCityEquipmentNum = response.data.outCityEquipmentNum + if (response.data.proList.length > 0) { + this.geoVal = response.data.proList.map(item=>{ + return { + ...item, + value: [item.lon, item.lat] + } + }) + } this.getInitData() }); }, @@ -247,75 +268,44 @@ export default { tooltip: { }, series: [ - // { - // type: 'map', - // map: 'dishi', // 使用中国地图 - // label: { - // show: true, // 显示标签 - // formatter: '{b}', // b 代表数据名称,即省份名称 - // color: '#FFF' // 标签文字颜色 - // }, - // data: this.geoVal, - // // 自定义区域样式等 - // itemStyle: { - // normal: { - // label: { - // show: true, - // formatter:function(params){ - // let html = ` - //
- //
${params.data.projectName}
- //
` - // return html - // // return params.data.projectName+"\r\n"+params.value; - // }, - // } - // }, - // emphasis: { - // label: { - // show: true - // } - // } - // } - // } - - // { - // type: 'scatter', //带有涟漪效果的 - // map: this.geoVal, - // roam: false, - // coordinateSystem: 'geo', //使用坐标系 - // zlevel: 1, - // symbolSize: [60, 40], - // symbol: (value, params) => { - // return ('image://' + require('@/assets/cityScreen/mapBg2.png')) - // }, - // emphasis: { - // scale: true, - // }, - // symbolKeepAspect: true, - // label: { - // normal: { - // show: true, - // color: '#fff', - // fontSize: 10, - // fontFamily: 'cursive', - // fontWeight: 'normal', - // position: 'top', - // padding: [0, 0, -35, 0], - // formatter: function (params) { - // let str=""; - // str = `${params.data.projectName}`; - // return str - // } - // }, - // }, - // itemStyle: { - // normal: { - // color: '#fff', - // }, - // }, - // data: this.geoVal, - // }, + { + type: 'scatter', + coordinateSystem: 'geo', + zlevel: 10, + symbol: 'circle', + symbolSize: 15, + colorBy: null, + itemStyle: { + color: '#409EFF', + }, + label: { + show: true, + position: 'top', + formatter: function (params) { + // 第一行装备数量,第二行工程名称 + return `{equip|${params.data.useNum}}\n{proj|${params.data.projectName}}` + }, + rich: { + equip: { + color: '#fff', + fontSize: 14, + fontWeight: 'bold', + align: 'center', + verticalAlign: 'middle', + backgroundColor: '#409EFF', // 蓝色背景 + borderRadius: 10, // 圆角(如果宽高相等就是圆形) + padding: [2, 6], // 内边距控制大小 + lineHeight: 20, // 高度 + }, + proj: { + color: '#fff', + fontSize: 12, + lineHeight: 16 + } + } + }, + data: this.geoVal + } ], } this.mapEcharts.setOption(echartOption) @@ -380,6 +370,7 @@ export default { background-size: 110px 32px; } .mapBox { + margin-top: -70px; width: 100%; height: 97%; display: flex; @@ -440,7 +431,65 @@ export default { } - diff --git a/src/views/screen/wsScreen/components/left/index.vue b/src/views/screen/wsScreen/components/left/index.vue index 90dfc092..01386531 100644 --- a/src/views/screen/wsScreen/components/left/index.vue +++ b/src/views/screen/wsScreen/components/left/index.vue @@ -38,7 +38,7 @@
-
+
备注说明:
施工装备配置率=∑ⁿ¹专用装备实际配置率+∑ⁿ¹新型装备实际配置率
@@ -75,6 +75,7 @@ +
@@ -88,6 +89,7 @@ import EquipStatusMore from './EquipStatusMore.vue' import TotalPriceMore from './TotalPriceMore.vue' import EquipItemMore from './EquipItemMore.vue' import SystemEquip from './SystemEquip.vue' +import RemarkMore from './RemarkMore' import { getTotalEquipmentApi, getEquipmentClassificationApi } from '@/api/wsScreen' export default { @@ -101,6 +103,7 @@ export default { EquipItemMore, TotalPriceMore, SystemEquip, + RemarkMore, }, data() { return { @@ -179,6 +182,9 @@ export default { openEquipItemMore() { this.$refs.equipItemMore.openDialog() }, + openRemarkMore() { + this.$refs.remarkMore.openDialog() + }, }, } @@ -264,6 +270,7 @@ export default { color: #97aad6; font-size: 12px; display: flex; + cursor: pointer; } .bottom-tip { }