From 16985f7674bbec4e87e5eaa011e1e789350be8df Mon Sep 17 00:00:00 2001
From: ZhangXianQiang <1135831638@qq.com>
Date: 星期二, 05 三月 2024 17:25:44 +0800
Subject: [PATCH] fix:修改表格滚动
---
src/views/daoAnOffice/center-map.vue | 339 ++++++++++++++++++++++++++++++++++----------------------
1 files changed, 205 insertions(+), 134 deletions(-)
diff --git a/src/views/daoAnOffice/center-map.vue b/src/views/daoAnOffice/center-map.vue
index ec2e799..aaec8a1 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">
- <chartgd @changeDt="handlechan" v-if="dtFig ==0"></chartgd>
- <chart2 v-else></chart2>
+ <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: 80,
+ 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,83 @@
}
}
}
+
+.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: 200px;
+ 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;
+ }
+ }
+ }
+
+}
+
+.info-lable {
+ font-family: 'PingFang SC' !important;
+}
</style>
--
Gitblit v1.8.0