f1e4ddc3 by renchao@pashanhoo.com

style:地图修改

1 parent f9184dd5
...@@ -5,261 +5,261 @@ ...@@ -5,261 +5,261 @@
5 </template> 5 </template>
6 6
7 <script> 7 <script>
8 import Echart from "@/common/echart"; 8 import Echart from "@/common/echart";
9 import { mapGetters } from "vuex"; 9 import { mapGetters } from "vuex";
10 export default { 10 export default {
11 data () { 11 data () {
12 return { 12 return {
13 options: {}, 13 options: {},
14 max: "5000", //最大value值 14 max: "5000", //最大value值
15 min: "1", // 最小value值 15 min: "1", // 最小value值
16 key: 0, 16 key: 0,
17 mapjson: "", 17 mapjson: "",
18 }; 18 };
19 },
20 components: {
21 Echart,
22 },
23 created () { },
24 props: {
25 cdata: {
26 type: Array,
27 default: () => [],
28 }, 19 },
29 }, 20 components: {
30 mounted () { 21 Echart,
31 window.addEventListener("resize", () => { 22 },
32 this.key++; 23 created () { },
33 }); 24 props: {
34 // 根据行政区代码匹配行政区 25 cdata: {
35 require(`@/common/map/${this.BASE_API.AREARMAP}.js`); 26 type: Array,
36 }, 27 default: () => [],
37 watch: { 28 },
38 cdata: { 29 },
39 handler (newData) { 30 mounted () {
40 let _this = this; 31 window.addEventListener("resize", () => {
41 // 设置点的位置(经纬度) 32 this.key++;
42 this.options = { 33 });
43 showLegendSymbol: false, 34 // 根据行政区代码匹配行政区
44 tooltip: { 35 require(`@/common/map/${this.BASE_API.AREARMAP}.js`);
45 trigger: "item", 36 },
46 textStyle: { 37 watch: {
47 fontSize: 14, 38 cdata: {
48 lineHeight: 22, 39 handler (newData) {
49 }, 40 let _this = this;
50 position: (point) => { 41 // 设置点的位置(经纬度)
51 // 固定在顶部 42 this.options = {
52 return [point[0] + 50, point[1] - 20]; 43 showLegendSymbol: false,
53 }, 44 tooltip: {
54 // 如果需要自定义 tooltip样式,需要使用formatter 45 trigger: "item",
55 formatter: (params) => { 46 textStyle: {
56 return `<div style="color: #000;font-size: 14px;line-height: 24px background-color: #000000"> 47 fontSize: 14,
48 lineHeight: 22,
49 },
50 position: (point) => {
51 // 固定在顶部
52 return [point[0] + 50, point[1] - 20];
53 },
54 // 如果需要自定义 tooltip样式,需要使用formatter
55 formatter: (params) => {
56 return `<div style="color: #000;font-size: 14px;line-height: 24px background-color: #000000">
57 接入量:<span style="color: #7df7ce; font-size: 16px; font-weight: 600;"> ${params.value} </span>个 57 接入量:<span style="color: #7df7ce; font-size: 16px; font-weight: 600;"> ${params.value} </span>个
58 <br> 58 <br>
59 上报量:<span style="color: #f32c51; font-size: 16px; font-weight: 600;"> ${params.data.successcount} </span>个 59 上报量:<span style="color: #f32c51; font-size: 16px; font-weight: 600;"> ${params.data.successcount} </span>个
60 </div>`; 60 </div>`;
61 }, 61 },
62 extraCssText: 62 extraCssText:
63 "background: #85a2eb; border-radius: 2;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;", 63 "background: #85a2eb; border-radius: 2;box-shadow: 0 0 3px rgba(0, 0, 0, 0.2);color: #333;",
64 },
65 visualMap: {
66 min: 0,
67 max: _this.max,
68 bottom: "6%",
69 left: 50,
70 splitNumber: 6,
71 seriesIndex: [0],
72 itemWidth: 20, // 每个图元的宽度
73 itemGap: 4, // 每两个图元之间的间隔距离,单位为px
74 selectedMode: false, // 是否允许点击
75 pieces: [
76 // 自定义每一段的范围,以及每一段的文字
77 { gte: 5000, label: "≥5000", color: "#056BEC" }, // 不指定 max,表示 max 为无限大(Infinity)。
78 { gte: 1000, lte: 5000, label: "1000-5000", color: "#48BDE3" },
79 { gte: 500, lte: 1000, label: "500-1000", color: "#0494F3" },
80 { gte: 0, lte: 500, label: "≤500", color: "#1872CC" },
81 ],
82 textStyle: {
83 color: "#CEF8FF",
84 }
85 },
86 geo: [{
87 aspectScale: 1, //长宽比
88 zoom: 1.1,
89 mapType: "", // 自定义扩展图表类型
90 top: "15%",
91 left: "10%",
92 map: this.BASE_API.AREARMAP,
93 itemStyle: {
94 normal: {
95 //阴影
96 areaColor: "#5689FD",
97 borderWidth: 1,
98 },
99 }, 64 },
100 }, { 65 visualMap: {
101 aspectScale: 1, //长宽比 66 min: 0,
102 zoom: 1.1, 67 max: _this.max,
103 mapType: "", // 自定义扩展图表类型 68 bottom: "6%",
104 top: "18%", 69 left: 50,
105 left: "10%", 70 splitNumber: 6,
106 map: this.BASE_API.AREARMAP, 71 seriesIndex: [0],
107 itemStyle: { 72 itemWidth: 20, // 每个图元的宽度
108 color: '#21371d', 73 itemGap: 4, // 每两个图元之间的间隔距离,单位为px
109 areaColor: "#21371d", 74 selectedMode: false, // 是否允许点击
110 borderWidth: 1, 75 pieces: [
111 borderColor: "#00A3CB", 76 // 自定义每一段的范围,以及每一段的文字
112 shadowColor: "#01C5E9", 77 { gte: 5000, label: "≥5000", color: "#056BEC" }, // 不指定 max,表示 max 为无限大(Infinity)。
113 shadowBlur: 10, 78 { gte: 1000, lte: 5000, label: "1000-5000", color: "#48BDE3" },
114 shadowOffsetX: 0, 79 { gte: 500, lte: 1000, label: "500-1000", color: "#0494F3" },
115 shadowOffsetY: -12, 80 { gte: 0, lte: 500, label: "≤500", color: "#1872CC" },
81 ],
82 textStyle: {
83 color: "#CEF8FF",
84 }
116 }, 85 },
117 emphasis: { 86 geo: [{
118 disabled: true
119 }
120 }],
121 series: [
122 {
123 type: "map",
124 aspectScale: 1, //长宽比 87 aspectScale: 1, //长宽比
125 zoom: 1.1, 88 zoom: 1.1,
126 mapType: this.BASE_API.AREARMAP, // 自定义扩展图表类型 89 mapType: "", // 自定义扩展图表类型
127 top: "15%", 90 top: "15%",
128 left: "10%", 91 left: "10%",
92 map: this.BASE_API.AREARMAP,
129 itemStyle: { 93 itemStyle: {
130 normal: { 94 normal: {
131 borderWidth: 1.6, 95 //阴影
132 borderColor: "#9DFFFC", 96 areaColor: "#5689FD",
97 borderWidth: 1,
133 }, 98 },
134 emphasis: {
135 // 地图区域的高亮颜色
136 areaColor: {
137 type: 'linear',
138 x: 0,
139 y: 0,
140 x2: 0,
141 y2: 1,
142 colorStops: [{
143 offset: 0, color: '#4DD1B4' // 0% 处的颜色
144 }, {
145 offset: 1, color: '#15BFCE' // 100% 处的颜色
146 }],
147 global: false // 缺省为 false
148 },
149 borderType: 'dottod',
150 borderWidth: 0,
151 borderColor: '#F8F071',
152 shadowColor: '#000',
153 shadowBlur: 10,
154 shadowOffsetY: 4
155 }
156 }, 99 },
157 label: { 100 }, {
158 formatter: (params) => { 101 aspectScale: 1, //长宽比
159 // return `${params.name}\n${params.value + "个"}`; 102 zoom: 1.1,
160 }, 103 mapType: "", // 自定义扩展图表类型
161 show: true, 104 top: "18%",
162 position: "insideRight", 105 left: "10%",
163 textStyle: { 106 map: this.BASE_API.AREARMAP,
164 fontSize: 14, 107 itemStyle: {
165 color: "#efefef", 108 color: '#21371d',
109 areaColor: "#21371d",
110 borderWidth: 1,
111 borderColor: "#00A3CB",
112 shadowColor: "#01C5E9",
113 shadowBlur: 10,
114 shadowOffsetX: 0,
115 shadowOffsetY: -12,
116 },
117 emphasis: {
118 disabled: true
119 }
120 }],
121 series: [
122 {
123 type: "map",
124 aspectScale: 1, //长宽比
125 zoom: 1.1,
126 mapType: this.BASE_API.AREARMAP, // 自定义扩展图表类型
127 top: "15%",
128 left: "10%",
129 itemStyle: {
130 normal: {
131 borderWidth: 1.6,
132 borderColor: "#9DFFFC",
133 },
134 emphasis: {
135 // 地图区域的高亮颜色
136 areaColor: {
137 type: 'linear',
138 x: 0,
139 y: 0,
140 x2: 0,
141 y2: 1,
142 colorStops: [{
143 offset: 0, color: '#4DD1B4' // 0% 处的颜色
144 }, {
145 offset: 1, color: '#15BFCE' // 100% 处的颜色
146 }],
147 global: false // 缺省为 false
148 },
149 borderType: 'dottod',
150 borderWidth: 0,
151 borderColor: '#F8F071',
152 shadowColor: '#000',
153 shadowBlur: 10,
154 shadowOffsetY: 4
155 }
166 }, 156 },
167 emphasis: { 157 label: {
158 formatter: (params) => {
159 // return `${params.name}\n${params.value + "个"}`;
160 },
161 show: true,
162 position: "insideRight",
168 textStyle: { 163 textStyle: {
169 color: "#fff", 164 fontSize: 14,
165 color: "#efefef",
166 },
167 emphasis: {
168 textStyle: {
169 color: "#fff",
170 },
170 }, 171 },
171 }, 172 },
173 data: newData,
172 }, 174 },
173 data: newData, 175 ],
174 }, 176 };
175 ], 177 // 重新选择区域
176 };
177 // 重新选择区域
178 this.handleMapRandomSelect(); 178 this.handleMapRandomSelect();
179 },
180 immediate: true,
181 deep: true,
179 }, 182 },
180 immediate: true,
181 deep: true,
182 }, 183 },
183 }, 184 methods: {
184 methods: { 185 // 开启定时器
185 // 开启定时器 186 startInterval () {
186 startInterval () { 187 const _self = this;
187 const _self = this; 188 // 应通过接口获取配置时间,暂时写死5s
188 // 应通过接口获取配置时间,暂时写死5s 189 const time = 2000;
189 const time = 2000; 190 if (this.intervalId !== null) {
190 if (this.intervalId !== null) { 191 clearInterval(this.intervalId);
191 clearInterval(this.intervalId);
192 }
193 this.intervalId = setInterval(() => {
194 this.$refs.centreLeft2ChartRef && _self.reSelectMapRandomArea();
195 }, time);
196 },
197 // 重新随机选中地图区域
198 reSelectMapRandomArea () {
199 const length = 9;
200 this.$nextTick(() => {
201 try {
202 const map = this.$refs.centreLeft2ChartRef.chart;
203 let index = Math.floor(Math.random() * length);
204 while (index === this.preSelectMapIndex || index >= length) {
205 index = Math.floor(Math.random() * length);
206 }
207 map.dispatchAction({
208 type: "mapUnSelect",
209 seriesIndex: 0,
210 dataIndex: this.preSelectMapIndex,
211 });
212 map.dispatchAction({
213 type: "showTip",
214 seriesIndex: 0,
215 dataIndex: index,
216 });
217 map.dispatchAction({
218 type: "mapSelect",
219 seriesIndex: 0,
220 dataIndex: index,
221 });
222 this.preSelectMapIndex = index;
223 } catch (error) {
224 console.log(error);
225 } 192 }
226 }); 193 this.intervalId = setInterval(() => {
227 }, 194 this.$refs.centreLeft2ChartRef && _self.reSelectMapRandomArea();
228 handleMapRandomSelect () { 195 }, time);
229 this.$nextTick(() => { 196 },
230 try { 197 // 重新随机选中地图区域
231 const map = this.$refs.centreLeft2ChartRef.chart; 198 reSelectMapRandomArea () {
232 const _self = this; 199 const length = 9;
233 setTimeout(() => { 200 this.$nextTick(() => {
234 _self.reSelectMapRandomArea(); 201 try {
235 }, 0); 202 const map = this.$refs.centreLeft2ChartRef.chart;
236 // 移入区域,清除定时器、取消之前选中并选中当前 203 let index = Math.floor(Math.random() * length);
237 map.on("mouseover", function (params) { 204 while (index === this.preSelectMapIndex || index >= length) {
238 clearInterval(_self.intervalId); 205 index = Math.floor(Math.random() * length);
206 }
239 map.dispatchAction({ 207 map.dispatchAction({
240 type: "mapUnSelect", 208 type: "mapUnSelect",
241 seriesIndex: 0, 209 seriesIndex: 0,
242 dataIndex: _self.preSelectMapIndex, 210 dataIndex: this.preSelectMapIndex,
211 });
212 map.dispatchAction({
213 type: "showTip",
214 seriesIndex: 0,
215 dataIndex: index,
243 }); 216 });
244 map.dispatchAction({ 217 map.dispatchAction({
245 type: "mapSelect", 218 type: "mapSelect",
246 seriesIndex: 0, 219 seriesIndex: 0,
247 dataIndex: params.dataIndex, 220 dataIndex: index,
248 }); 221 });
249 _self.preSelectMapIndex = params.dataIndex; 222 this.preSelectMapIndex = index;
250 }); 223 } catch (error) {
251 // 移出区域重新随机选中地图区域,并开启定时器 224 console.log(error);
252 map.on("globalout", function () { 225 }
253 _self.reSelectMapRandomArea(); 226 });
254 _self.startInterval(); 227 },
255 }); 228 handleMapRandomSelect () {
256 this.startInterval(); 229 this.$nextTick(() => {
257 } catch (error) { 230 try {
258 console.log(error); 231 const map = this.$refs.centreLeft2ChartRef.chart;
259 } 232 const _self = this;
260 }); 233 setTimeout(() => {
234 _self.reSelectMapRandomArea();
235 }, 0);
236 // 移入区域,清除定时器、取消之前选中并选中当前
237 map.on("mouseover", function (params) {
238 clearInterval(_self.intervalId);
239 map.dispatchAction({
240 type: "mapUnSelect",
241 seriesIndex: 0,
242 dataIndex: _self.preSelectMapIndex,
243 });
244 map.dispatchAction({
245 type: "mapSelect",
246 seriesIndex: 0,
247 dataIndex: params.dataIndex,
248 });
249 _self.preSelectMapIndex = params.dataIndex;
250 });
251 // 移出区域重新随机选中地图区域,并开启定时器
252 map.on("globalout", function () {
253 _self.reSelectMapRandomArea();
254 _self.startInterval();
255 });
256 this.startInterval();
257 } catch (error) {
258 console.log(error);
259 }
260 });
261 },
261 }, 262 },
262 }, 263 };
263 };
264 </script> 264 </script>
265 <style></style> 265 <style></style>
......
1 <!-- 1 <!--
2 * @Description: 2 * @Description:
3 * @Autor: renchao 3 * @Autor: renchao
4 * @LastEditTime: 2023-07-03 16:50:43 4 * @LastEditTime: 2023-07-03 17:00:51
5 --> 5 -->
6 <template> 6 <template>
7 <Chart :cdata="cdata" /> 7 <Chart :cdata="cdata" />
...@@ -31,8 +31,9 @@ ...@@ -31,8 +31,9 @@
31 try { 31 try {
32 let { result: res } = await work.mapViews("A20"); 32 let { result: res } = await work.mapViews("A20");
33 res.map((item) => { 33 res.map((item) => {
34
34 return ( 35 return (
35 this.cdata.push({ "name": item.areaName, "value": item.ywtotal }) 36 this.cdata.push({ "name": item.areaName, "value": item.ywtotal, "successcount": item.successcount })
36 ) 37 )
37 38
38 }); 39 });
......
1 <!-- 1 <!--
2 * @Description :工作台左侧表 2 * @Description :工作台左侧表
3 * @Autor : miaofang 3 * @Autor : miaofang
4 * @LastEditTime: 2023-07-03 16:50:16 4 * @LastEditTime: 2023-07-03 16:55:39
5 --> 5 -->
6 <template> 6 <template>
7 <div class="leftcard"> 7 <div class="leftcard">
...@@ -78,7 +78,7 @@ ...@@ -78,7 +78,7 @@
78 created () { 78 created () {
79 this.getsthjqxjrtotal(); 79 this.getsthjqxjrtotal();
80 this.timer = setInterval(() => { 80 this.timer = setInterval(() => {
81 this.getsthjqxjrtotal(); 81 this.getsthjqxjrtotal()
82 }, 10000) // 10s 82 }, 10000) // 10s
83 }, 83 },
84 components: { columnar }, 84 components: { columnar },
...@@ -123,9 +123,8 @@ ...@@ -123,9 +123,8 @@
123 destroyed () { 123 destroyed () {
124 clearInterval(this.timer) 124 clearInterval(this.timer)
125 } 125 }
126 }; 126 }
127 </script> 127 </script>
128
129 <style lang="scss" scoped> 128 <style lang="scss" scoped>
130 .leftcard { 129 .leftcard {
131 width: 30%; 130 width: 30%;
......