diff --git a/src/App.vue b/src/App.vue
index 7583b33f3..ebfaf85ee 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -241,7 +241,12 @@ export default {
.selectPopClass {
border: none !important;
background: linear-gradient(180deg, #05326e 0%, #032a5d 100%) !important;
-
+ .el-autocomplete-suggestion li{
+ color: #fff!important;
+ &:hover {
+ background: rgba(#409eff, .5)!important;
+ }
+ }
.el-select-dropdown__item {
color: #fff !important;
background: #05326e !important;
diff --git a/src/views/dataBoard/cpts/sjkb-map/index.vue b/src/views/dataBoard/cpts/sjkb-map/index.vue
index f35b08bc9..947cc5f94 100644
--- a/src/views/dataBoard/cpts/sjkb-map/index.vue
+++ b/src/views/dataBoard/cpts/sjkb-map/index.vue
@@ -34,6 +34,8 @@ let searchBgLayer;
let numMarker;
let pointMarker;
let numPointMarker;
+let numPointMarker2;
+let numPointMarker1;
export default {
name: "l7",
@@ -342,7 +344,6 @@ export default {
} else if (mapType == "tdzw") {
this.iniMapBase2(scene);
}
-
this.iniMapGrid(scene);
// this.iniMapDot(scene);
// this.iniMapDot2(scene);
@@ -418,7 +419,6 @@ export default {
iniMapGrid(scene) {
const {darkStyle, lightStyle, polygonData, polygonDotData} = this;
-
let styleConfig = darkStyle;
if (this.mapStyleType == "light") {
styleConfig = lightStyle;
@@ -586,6 +586,13 @@ export default {
if (numPointMarker) {
scene.removeMarkerLayer(numPointMarker);
}
+ if (numPointMarker1) {
+ scene.removeLayer(numPointMarker1);
+ }
+ if (numPointMarker2) {
+ scene.removeLayer(numPointMarker2);
+ }
+
},
iniMapDot(scene) {
@@ -681,8 +688,10 @@ export default {
// 把地图缩放等级在原来基础上大一点
zoomInABit() {
- let current = scene.getZoom();
- scene.setZoomAndCenter(current + 0.5);
+ if (scene) {
+ let current = scene.getZoom();
+ scene.setZoomAndCenter(current + 0.5);
+ }
},
shiftMapStyle(type) {
@@ -876,28 +885,93 @@ export default {
scene.addMarkerLayer(numMarker);
},
+ /* setNumpoint(data) {
+ this.clearMarkert();
+ numPointMarker = new MarkerLayer({
+ name: "numpoinMarker",
+ });
+ for (let i in data) {
+ for (let j in data[i].data) {
+ if (data[i].data[j].num > 0) {
+ var el = document.createElement("div");
+ el.innerText = data[i].data[j].num
+ el.className = "label-number-point-class";
+ el.classList.add(data[i].data[j].type);
+ el.onclick=
+ function(e) {
+ e.stopPropagation()
+ }
+ // el.textContent = data[i].peopleType+':'+data[i].personnelNum;
+ console.log(data[i].data[j])
+ const numPointMarkerItem = new Marker({
+ offsets: data[i].data[j].offsets,
+ element: el,
+ }).setLnglat([data[i].data[j].longitude * 1, data[i].data[j].latitude * 1]);
+
+ numPointMarkerItem.on("click", (e) => {
+ console.log(e,'sssddeeee')
+ this.$emit('showMapDialog',e)
+ // this.$router.push(`/homeDetails/index?id=${data[i].id}&typeB=${peopleType}`);
+ });
+ numPointMarker.addMarker(numPointMarkerItem);
+ }
+ }
+ }
+ scene.addMarkerLayer(numPointMarker);
+ },*/
setNumpoint(data) {
this.clearMarkert();
- numPointMarker = new MarkerLayer({
- name: "numpoinMarker",
- });
- for (let i in data) {
- var el = document.createElement("div");
- el.className = "label-number-point-class";
- el.classList.add(data[i].type);
- // el.textContent = data[i].peopleType+':'+data[i].personnelNum;
- const numPointMarkerItem = new Marker({
- offsets: [0, 0],
- element: el,
- }).setLnglat([data[i].longitude * 1, data[i].latitude * 1]);
- let popup;
- numPointMarkerItem.on("click", () => {
- this.$router.push(`/homeDetails/index?id=${data[i].id}&typeB=${peopleType}`);
- });
-
- numPointMarker.addMarker(numPointMarkerItem);
+ if (!scene.hasImage('rsources')) {
+ scene.addImage('rsources', require('@/assets/images/overview/map_num_green.png'));
+ scene.addImage('services', require('@/assets/images/overview/map_num_red.png'));
+ scene.addImage('events', require('@/assets/images/overview/map_num_blue.png'));
+ scene.addImage('problems', require('@/assets/images/overview/map_num_orange.png'));
}
- scene.addMarkerLayer(numPointMarker);
+
+ let pointData = data.map(item => item.data)
+ pointData = pointData.reduce((a, b) => a.concat(b), []);
+ pointData = pointData.filter(item => item.num > 0)
+ console.log(pointData, 'pointData')
+ numPointMarker1 = new PointLayer({
+ name: 'numPointMarker1',
+ zIndex: 20,
+ })
+ .source(pointData, {
+ parser: {
+ type: 'json',
+ x: 'longitude',
+ y: 'latitude'
+ }
+ })
+ .shape('type', (type) => {
+ console.log(type,'type')
+ return type
+ })
+ .size(36);
+ scene.addLayer(numPointMarker1);
+ numPointMarker2 = new PointLayer({
+ name: 'numPointMarker2',
+ zIndex: 21,
+ }).source(pointData, {
+ parser: {
+ type: 'json',
+ x: 'longitude',
+ y: 'latitude'
+ }
+ })
+ .shape('num', 'text')
+ .color('#fff')
+ .size(24)
+ .style({
+ textOffset: [0, 7],
+ fontWeight: "bold"
+ })
+ scene.addLayer(numPointMarker2);
+ numPointMarker1.on("click", (e) => {
+ console.log(e, 'imageLayer')
+ this.$emit('showMapDialog',e.feature)
+ })
+ // scene.addMarkerLayer(numPointMarker);
},
async setDotMarker(item, posArr) {
@@ -1148,24 +1222,32 @@ export default {
}
/deep/ .label-number-point-class {
+ font-size: 24px;
+ font-weight: bold;
+ display: flex !important;
+ align-items: center;
+ justify-content: center;
width: 50px;
height: 76px;
- background-repeat: no-repeat;
+ padding-bottom: 30px;
text-align: center;
- font-size: 24px;
- font-weight: bold;
color: #FFFFFF;
- &.green {
+ background-repeat: no-repeat;
+
+ &.rsources {
background-image: url("@/assets/images/overview/map_num_green.png");
}
- &.blue {
+
+ &.services {
background-image: url("@/assets/images/overview/map_num_blue.png");
}
- &.red {
+
+ &.events {
background-image: url("@/assets/images/overview/map_num_red.png");
}
- &.orange {
- background-image: url("@/assets/images/overview/map_num_blue.png");
+
+ &.problems {
+ background-image: url("@/assets/images/overview/map_num_orange.png");
}
}
diff --git a/src/views/dataBoard/overview/components/DemandCharts.vue b/src/views/dataBoard/overview/components/DemandCharts.vue
index 216a6d054..5c30a5199 100644
--- a/src/views/dataBoard/overview/components/DemandCharts.vue
+++ b/src/views/dataBoard/overview/components/DemandCharts.vue
@@ -45,94 +45,97 @@ export default {
},
initChart() {
- let div = document.getElementById('DemandCharts');
- this.myChart = echarts.init(div);
- var getname = ['健康知识专业讲座', '未成年人兴趣培养', '老年人现代智能···', '老年群体的心理···', '配合社区安全巡···', '其他']; // 课程名
- var getNum = [8, 9, 16, 21, 26, 62];
+ this.$http.post('/governance/userdemand/countByCategory').then(({data:{data}}) => {
+ let div = document.getElementById('DemandCharts');
+ this.myChart = echarts.init(div);
+ var getname = data.map(item => item.categoryName); // 课程名
+ var getNum = data.map(item => item.cateTotal);
+ var totals = eval(getNum.join('+'))
+ var data = [];
+ for (var i = 0; i < getname.length; i++) {
+ data.push({name: getname[i], value: getNum[i]})
+ }
+ const color = ['#16A7EB', '#5974FF', '#04C790', '#FFAA01', '#FF6701', '#EF3B00']
- var data = [];
- for (var i = 0; i < getname.length; i++) {
- data.push({name: getname[i], value: getNum[i]})
- }
- const color = ['#16A7EB', '#5974FF', '#04C790', '#FFAA01', '#FF6701', '#EF3B00']
-
- var option = {
- color,
- tooltip: {
- trigger: "item"
- },
- legend: {
- type: "plain",
- orient: "vertical",
- right: 0,
- top: "center",
- align: "left",
- itemGap: 10,
- itemWidth: 8,
- itemHeight: 8,
- symbolKeepAspect: false,
- selectedMode: false,
- formatter: function (name) {
- for (var i = 0; i < getname.length; i++) {
- if (name == data[i].name) {
- return '{name|' + name + '}{num|' + getNum[i] + '人}'
- }
- }
+ var option = {
+ color,
+ tooltip: {
+ trigger: "item"
},
- textStyle: {
- rich: {
- name: {
- fontSize: 12,
- width: 96,
- overflow: 'hidden',
- textOverflow: 'ellipsis',
- padding: [0, 29, 0, 5],
- color: '#A3B9DA',
- },
- num: {
- fontSize: 12,
- fontWeight: 500,
- align: 'right',
- color: '#FFFFFF',
+ legend: {
+ type: "plain",
+ orient: "vertical",
+ right: 0,
+ top: "center",
+ align: "left",
+ itemGap: 10,
+ itemWidth: 8,
+ itemHeight: 8,
+ symbolKeepAspect: false,
+ selectedMode: false,
+ formatter: function (name) {
+ for (var i = 0; i < getname.length; i++) {
+ if (name == data[i].name) {
+ name = name.length > 8?name.slice(0,7)+'...':name;
+ return '{name|' + name + '}{num|' + getNum[i] + '人}'
+ }
}
- }
- }
- },
- series: [{
- name: '',
- type: "pie",
- radius: ["65%", "90%"],
- center: ["20%", "50%"],
- avoidLabelOverlap: false,
-
- label: {
- show: true,
- position: "center",
- color: "rgba(13, 17, 29,0)",
- formatter: `{primary|${3289}}\n{point|总数}`,
- rich: {
- primary: {
- fontSize: 24,
- color: '#7FCEFF',
- align: 'center'
- },
- point: {
- fontSize: 12,
- fontWeight: 400,
- color: "#A3B9DA",
- align: 'center'
+ },
+ textStyle: {
+ rich: {
+ name: {
+ fontSize: 12,
+ width: 96,
+ overflow: 'hidden',
+ textOverflow: 'ellipsis',
+ padding: [0, 29, 0, 5],
+ color: '#A3B9DA',
+ },
+ num: {
+ fontSize: 12,
+ fontWeight: 500,
+ align: 'right',
+ color: '#FFFFFF',
+ }
}
}
},
- labelLine: {
- show: false
- },
- data: data,
- zlevel: 30
- }]
- };
- this.myChart.setOption(option, true);
- window.addEventListener("resize", () => this.myChart.resize());
+ series: [{
+ name: '',
+ type: "pie",
+ radius: ["65%", "90%"],
+ center: ["20%", "50%"],
+ avoidLabelOverlap: false,
+
+ label: {
+ show: true,
+ position: "center",
+ color: "rgba(13, 17, 29,0)",
+ formatter: `{primary|${totals}}\n{point|总数}`,
+ rich: {
+ primary: {
+ fontSize: 24,
+ color: '#7FCEFF',
+ align: 'center'
+ },
+ point: {
+ fontSize: 12,
+ fontWeight: 400,
+ color: "#A3B9DA",
+ align: 'center'
+ }
+ }
+ },
+ labelLine: {
+ show: false
+ },
+ data: data,
+ zlevel: 30
+ }]
+ };
+ this.myChart.setOption(option, true);
+ window.addEventListener("resize", () => this.myChart.resize());
+ })
}
}
}
diff --git a/src/views/dataBoard/overview/components/DemandCharts2.vue b/src/views/dataBoard/overview/components/DemandCharts2.vue
new file mode 100644
index 000000000..84adcef77
--- /dev/null
+++ b/src/views/dataBoard/overview/components/DemandCharts2.vue
@@ -0,0 +1,169 @@
+
+