From 773e59cdc3571ad0815f286bb8895a3f27a28961 Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期五, 01 三月 2024 16:01:23 +0800
Subject: [PATCH] Merge branch 'master' of http://42.193.1.25:9521/r/~xiaohui/daoAnOffice

---
 src/views/daoAnOffice/center-map.vue |  337 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 202 insertions(+), 135 deletions(-)

diff --git a/src/views/daoAnOffice/center-map.vue b/src/views/daoAnOffice/center-map.vue
index 5606e8d..6203b40 100644
--- a/src/views/daoAnOffice/center-map.vue
+++ b/src/views/daoAnOffice/center-map.vue
@@ -1,149 +1,141 @@
-<script setup lang="ts">
-import { ref, reactive, nextTick } from "vue";
-import { currentGET, GETNOBASE } from "@/api";
-import { registerMap, getMap } from "echarts/core";
-import { optionHandle, regionCodes } from "./center.map";
-import BorderBox13 from "@/components/datav/border-box-13";
-import type { MapdataType } from "./center.map";
-import  chart2 from "./chart2.vue"
-import  chartgd from "./chartgd.vue"
-const option = ref({});
-const code = ref("china"); //china 浠h〃涓浗 鍏朵粬鍦板競鏄鏀跨紪鐮�
 
-withDefaults(
-  defineProps<{
-    // 缁撴潫鏁板��
-    title: number | string;
-  }>(),
-  {
-    title: "鍦板浘",
-  }
-);
-
-const dataSetHandle = async (regionCode: string, list: object[]) => {
-  const geojson: any = await getGeojson(regionCode);
-  let cityCenter: any = {};
-  let mapData: MapdataType[] = [];
-  //鑾峰彇褰撳墠鍦板浘姣忓潡琛屾斂鍖轰腑蹇冪偣
-  geojson.features.forEach((element: any) => {
-    cityCenter[element.properties.name] =
-      element.properties.centroid || element.properties.center;
-  });
-  //褰撳墠涓績鐐瑰鏋滄湁姝ゆ潯鏁版嵁涓績鐐瑰垯璧嬪�紉锛寉褰撶劧杩欎釜x,y涔熷彲浠ュ悗绔繑鍥炶繘琛屽ぇ鐐癸紝鍓嶇鐪佸幓澶氳浠g爜
-  list.forEach((item: any) => {
-    if (cityCenter[item.name]) {
-      mapData.push({
-        name: item.name,
-        value: cityCenter[item.name].concat(item.value),
-      });
-    }
-  });
-  await nextTick();
-  console.log(mapData)
-  option.value = optionHandle(regionCode, list, mapData);
-};
-
-const getData = async (regionCode: string) => {
-  currentGET("centerMap", { regionCode: regionCode }).then((res) => {
-    console.log("璁惧鍒嗗竷", res);
-    if (res.success) {
-      dataSetHandle(res.data.regionCode, res.data.dataList);
-    }
-  });
-};
-const getGeojson = (regionCode: string) => {
-  return new Promise<boolean>(async (resolve) => {
-    let mapjson = getMap(regionCode);
-    if (mapjson) {
-      mapjson = mapjson.geoJSON;
-      resolve(mapjson);
-    } else {
-      mapjson = await GETNOBASE(`./map-geojson/${regionCode}.json`).then(
-        (data) => data
-      );
-      code.value = regionCode;
-      registerMap(regionCode, {
-        geoJSON: mapjson as any,
-        specialAreas: {},
-      });
-      resolve(mapjson);
-    }
-  });
-};
-getData(code.value);
-
-const mapClick = (params: any) => {
-  console.log(params);
-  let xzqData = regionCodes[params.name];
-  if (xzqData) {
-    getData(xzqData.adcode);
-  } else {
-    window["$message"].warning("鏆傛棤涓嬬骇鍦板競");
-  }
-};
-const dtFig =ref(0)
-const handlechan =()=>{
-  console.log(dtFig.value)
-    dtFig.value = 1
-}
-</script>
 
 <template>
   <div class="centermap">
-    <div class="maptitle" style="display:none;">
-      <div class="zuo"></div>
-      <span class="titletext">{{ title }}</span>
-      <div class="you"></div>
+    <div class="maptitle">
+      <img src="@/assets/img/icon/map_title.png" alt="">
     </div>
-    <div class="mapwrap" style="display:none;">
-<!--        <chartgd @changeDt="handlechan"  v-if="dtFig ==0"></chartgd>-->
-        <chart2 ></chart2>
+    <div class="mapwrap">
+      <div ref="map" class="map-style"></div>
+    </div>
+
+    <div class="map-info-container">
+      <div class="info-title-container">
+        <div class="img-bg">
+          <img src="@/assets/img/icon/map_info_title.png" alt="">
+        </div>
+        <div class="info-title">
+          <div class="icon">
+            <img src="@/assets/img/icon/arrow_right.png" alt="">
+          </div>
+          <span class="title">閮芥睙鍫板競</span>
+        </div>
+      </div>
+      <div class="info-content-container">
+        <div class="info-item">
+          <div class="info-lable">浜嬫晠鏄撳彂澶氬彂璺锛�</div>
+          <div class="info-text">78</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">閲嶇偣鏃呮父閫氶亾锛�</div>
+          <div class="info-text">12</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">閮芥睙鍫版櫙鍖猴細</div>
+          <div class="info-text">5</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">璀﹀姏閰嶅锛�</div>
+          <div class="info-text">265</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">鎵撳洿鏂藉伐锛�</div>
+          <div class="info-text">12</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">浜ら�氫簨鏁呮槗鍙戠偣锛�</div>
+          <div class="info-text">31</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">閲嶇偣杩愯緭浼佷笟锛�</div>
+          <div class="info-text">19</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">鍏氦绾胯矾锛�</div>
+          <div class="info-text">89</div>
+        </div>
+        <div class="info-item">
+          <div class="info-lable">瀹夊叏闅愭偅锛�</div>
+          <div class="info-text">3</div>
+        </div>
+      </div>
     </div>
   </div>
 </template>
 
+
+<script setup>
+import * as echarts from 'echarts';
+import 'echarts-gl';
+import { ref, onMounted, nextTick } from "vue";
+
+import mapData from '@/assets/map/dujiangyan.json';
+
+
+echarts.registerMap('dujiangyan', mapData);
+
+const map = ref(null);
+let mapChart = null;
+
+const mapConfig = {
+  geo3D: {
+    map: "dujiangyan", //娉ㄥ唽鍦板浘鐨勫悕瀛�
+    roam: true, //寮�鍚紶鏍囩缉鏀惧拰骞崇Щ婕父銆傞粯璁や笉寮�鍚�
+    bottom: 120,
+    left: 10,
+    itemStyle: {
+      color: "#4189f2", // 鑳屾櫙
+      opacity: 0.7, //閫忔槑搴�
+      borderWidth: 1.5, // 杈规瀹藉害
+      borderColor: "#fff", // 杈规棰滆壊
+      fontSize: 16, //
+    },
+    // 鏍囩
+    label: {
+      show: true,
+      color: "#fff", //鍦板浘鍒濆鍖栧尯鍩熷瓧浣撻鑹�
+      fontSize: 18,
+      formatter: function (params) {
+        return params.name
+      },
+    },
+    // 鎺у埗鍣�
+    viewControl: {
+      beta: 80,
+      alpha: 55,
+      distance: 210,
+      maxBeta: 180
+    },
+    // 鐏厜
+    light: {
+      main: {
+        shadow: true,
+        intensity: 1
+      }
+    },
+    // 榧犳爣绉诲叆鏃舵牱寮�
+    emphasis: {
+      itemStyle: {
+        color: "#F63545"
+      }
+    }
+  }
+};
+
+onMounted(() => {
+  nextTick(() => {
+    setTimeout(() => {
+      mapChart = echarts.init(map.value);
+      mapChart.setOption(mapConfig, true);
+    }, 1000);
+  })
+})
+</script>
+
 <style scoped lang="scss">
 .centermap {
   margin-bottom: 30px;
-
-  .maptitle {
-    height: 60px;
-    display: flex;
-    justify-content: center;
-    padding-top: 10px;
-    box-sizing: border-box;
-
-    .titletext {
-      font-size: 28px;
-      font-weight: 900;
-      letter-spacing: 6px;
-      background: linear-gradient(
-        92deg,
-        #0072ff 0%,
-        #00eaff 48.8525390625%,
-        #01aaff 100%
-      );
-      -webkit-background-clip: text;
-      -webkit-text-fill-color: transparent;
-      margin: 0 10px;
-    }
-
-    .zuo,
-    .you {
-      background-size: 100% 100%;
-      width: 29px;
-      height: 20px;
-      margin-top: 8px;
-    }
-
-    .zuo {
-      background: url("@/assets/img/xiezuo.png") no-repeat;
-    }
-
-    .you {
-      background: url("@/assets/img/xieyou.png") no-repeat;
-    }
-  }
+  position: relative;
 
   .mapwrap {
     //height: 580px;
@@ -156,7 +148,7 @@
     .quanguo {
       position: absolute;
       right: 20px;
-        top: -46px;
+      top: -46px;
       width: 80px;
       height: 28px;
       border: 1px solid #00eded;
@@ -172,4 +164,79 @@
     }
   }
 }
+
+.map-style {
+  width: 100%;
+  height: 100%;
+}
+
+.maptitle {
+  width: 308px;
+  position: absolute;
+  left: 0;
+  top: 0;
+}
+
+.map-info-container {
+  width: 225px;
+  position: absolute;
+  right: 0;
+  bottom: 150px;
+  background: rgba(17, 34, 58, 0.6);
+  border: 1px solid #29466A;
+
+  .info-title-container {
+    width: 100%;
+    position: relative;
+
+    .img-bg {
+      width: 100%;
+    }
+
+    .info-title {
+
+      width: 100%;
+      position: absolute;
+      top: 5px;
+      left: 0;
+      display: flex;
+      align-items: center;
+
+      .icon {
+        width: 15px;
+        margin: 0 5px 0 12px;
+      }
+
+      .title {
+        font-weight: 400;
+        font-size: 20px;
+        color: #FFFFFF;
+        text-shadow: 0px 2px 10px rgba(0, 0, 0, 0.5);
+        font-style: italic;
+        background: linear-gradient(180deg, #FFFFFF 0%, #70B2F4 100%);
+        -webkit-background-clip: text;
+        -webkit-text-fill-color: transparent;
+      }
+    }
+  }
+
+  .info-content-container {
+    padding: 18px 20px;
+    margin-top: -40px;
+    font-size: 14px;
+
+    .info-item {
+      width: 100%;
+      display: flex;
+      align-items: center;
+      justify-content: space-between;
+      color: #4481DD;
+      line-height: 28px;
+      .info-text {
+        color: #fff;
+      }
+    }
+  }
+
+}
 </style>

--
Gitblit v1.8.0