From a8c4e3a469a62cf6b0047f5580c22c176f4158bb Mon Sep 17 00:00:00 2001
From: "liu.tao3" <liu.tao3@ustcinfo.com>
Date: Wed, 30 Aug 2023 09:12:54 +0800
Subject: [PATCH 01/13] =?UTF-8?q?feat:=E9=A3=9E=E7=BA=BF=E5=9B=BE=E5=BC=80?=
 =?UTF-8?q?=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../packages/BasicComponents/FlyMap/index.vue | 282 +++++++++++++
 .../BasicComponents/FlyMap/json/mapData.js    | 219 ++++++++++
 .../BasicComponents/FlyMap/setting.vue        | 382 ++++++++++++++++++
 .../BasicComponents/FlyMap/settingConfig.js   | 123 ++++++
 .../RightSetting/DataSetting.vue              |   2 +-
 .../packages/BigScreenDesign/index.vue        |   2 +-
 .../src/OriginalEditForm.vue                  |   2 -
 data-room-ui/packages/G2Plots/plotList.js     |   3 +-
 .../packages/js/mixins/commonMixins.js        |   2 +-
 data-room-ui/packages/js/store/mutations.js   |   2 +-
 10 files changed, 1012 insertions(+), 7 deletions(-)
 create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/index.vue
 create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js
 create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/setting.vue
 create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js

diff --git a/data-room-ui/packages/BasicComponents/FlyMap/index.vue b/data-room-ui/packages/BasicComponents/FlyMap/index.vue
new file mode 100644
index 00000000..b8ff869f
--- /dev/null
+++ b/data-room-ui/packages/BasicComponents/FlyMap/index.vue
@@ -0,0 +1,282 @@
+<template>
+  <div
+    style="width: 100%; height: 100%"
+    class="bs-design-wrap bs-bar"
+  >
+    <div
+      :id="`chart${config.code}`"
+      style="width: 100%; height: 100%"
+    />
+  </div>
+</template>
+<script>
+import 'insert-css'
+import * as echarts from 'echarts'
+import {nameMap} from './json/mapData.js'
+import commonMixins from 'data-room-ui/js/mixins/commonMixins.js'
+import paramsMixins from 'data-room-ui/js/mixins/paramsMixins'
+import linkageMixins from 'data-room-ui/js/mixins/linkageMixins'
+export default {
+  name: 'MapCharts',
+  mixins: [paramsMixins, commonMixins, linkageMixins],
+  props: {
+    id: {
+      type: String,
+      default: ''
+    },
+    config: {
+      type: Object,
+      default: () => ({})
+    }
+  },
+  data () {
+    return {
+      charts: null,
+      hasData: false
+    }
+  },
+  computed: {
+    Data () {
+      return JSON.parse(JSON.stringify(this.config))
+    }
+  },
+  watch: {
+    Data: {
+      handler (newVal, oldVal) {
+        if (newVal.w !== oldVal.w || newVal.h !== oldVal.h) {
+          this.$nextTick(() => {
+            this.charts.resize()
+          })
+        }
+      },
+      deep: true
+    }
+  },
+  mounted () {
+    this.chartInit()
+  },
+  beforeDestroy () {
+    this.charts?.clear()
+  },
+  methods: {
+    chartInit () {
+      const config = this.config
+      // key和code相等,说明是一进来刷新,调用list接口
+      if (this.config.code === this.config.key || this.isPreview) {
+        // 改变数据
+        this.changeDataByCode(config).then((res) => {
+          // 改变样式
+          // config = this.changeStyle(res)
+          this.newChart(config)
+        }).catch(() => {})
+      } else {
+        // 否则说明是更新,这里的更新只指更新数据(改变样式时是直接调取changeStyle方法),因为更新数据会改变key,调用chart接口
+        this.changeData(config).then((res) => {
+          // 初始化图表
+          this.newChart(res)
+        })
+      }
+    },
+    dataFormatting (config, data) {
+      config.option = {
+        ...config.option,
+        data: data?.data
+      }
+      return config
+    },
+    async newChart (config) {
+      this.charts = echarts.init(
+        document.getElementById(`chart${this.config.code}`)
+      )
+
+      const lines_coord = []
+      let fromCoord=[]
+      let coord=[]
+      const mapUrl =config.customize.level==='world'?`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/worldMap/world.json`:`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${config.customize.level}/${config.customize.dataMap}`
+      this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true).then(res=>{
+        this.config.option.data.forEach(val => {
+          lines_coord.push({value:val.value,msg:{...val}, coords:[[val.lat1,val.lng1],[val.lat2,val.lng2]]})
+          if(val.type==='move_in'){
+            coord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
+            fromCoord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
+          }
+          if(val.type==='move_out'){
+            coord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
+            fromCoord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
+          }
+        })
+        echarts.registerMap(config.customize.scope, res)
+        const option = {
+          // nameMap: nameMap,
+          graphic: [
+          ],
+          geo: {
+            map: config.customize.scope,
+            zlevel: 10,
+            show:true,
+            layoutCenter: ['50%', '50%'],
+            roam: true,
+            layoutSize: "100%",
+            zoom: 1,
+            label: {
+              // 通常状态下的样式
+              normal: {
+                show: config.customize.mapName,
+                textStyle: {
+                  color: '#fff'
+                }
+              },
+              // 鼠标放上去的样式
+              emphasis: {
+                textStyle: {
+                  color: '#fff'
+                }
+              }
+            },
+            // 地图区域的样式设置
+            itemStyle: {
+              normal: {
+                borderColor: config.customize.mapLineColor,
+                borderWidth: 1,
+                areaColor: config.customize.areaColor,
+                shadowColor: 'fffff',
+                shadowOffsetX: -2,
+                shadowOffsetY: 2,
+                shadowBlur: 10
+              },
+              // 鼠标放上去高亮的样式
+              emphasis: {
+                areaColor: '#389BB7',
+                borderWidth: 0
+              }
+            }
+          },
+          tooltip: {
+            backgroundColor: config.customize.tooltipBackgroundColor,
+            borderColor: config.customize.borderColor,
+            show: true,
+             textStyle: {
+              color: config.customize.fontColor,
+            },
+          },
+          series: [
+            {
+                type:'effectScatter',
+                coordinateSystem: 'geo',
+                zlevel: 15,
+                symbolSize:8,
+                rippleEffect: {
+                    period: 4, brushType: 'stroke', scale: 4
+                },
+                 tooltip: {
+                    trigger: 'item',
+                    formatter(params) {
+                    const a= eval(config.customize.scatterFormatter)
+                      return a
+                    },
+                },
+                itemStyle:{
+                    color:config.customize.scatterColor,
+                    opacity:1
+                },
+                data:coord
+            },
+            {
+                type:'effectScatter',
+                coordinateSystem: 'geo',
+                zlevel: 15,
+                symbolSize:12,
+                tooltip: {
+                  trigger: 'item',
+                  formatter(params) {
+                   const a= eval(config.customize.scatterFormatter)
+                    return a
+                  },
+                },
+                rippleEffect: {
+                    period: 6, brushType: 'stroke', scale: 8
+                },
+
+                itemStyle:{
+                    color:config.customize.scatterCenterColor,
+                    opacity:1
+                },
+                data:fromCoord
+            },
+            {
+                type:'lines',
+                coordinateSystem:'geo',
+                zlevel: 15,
+                tooltip: {
+                  trigger: 'item',
+                  formatter(params) {
+                   const a= eval(config.customize.lineFormatter)
+                    return a
+                  },
+                },
+                effect: {
+                    show: true, period: 5, trailLength: 0, symbol: config.customize.symbol,  color:config.customize.symbolColor,symbolSize: config.customize.symbolSize,
+                },
+                lineStyle: {
+                  normal: {color: function(value){
+                      return '#ffffff'
+                  },width: 2, opacity: 0.6, curveness: 0.2 }
+                },
+                data:lines_coord
+            }
+
+          ]
+        }
+        if (config.customize.visual) {
+          option.visualMap = {
+            show: false,
+            min: config.customize.range[0],
+            max: config.customize.range[1],
+            seriesIndex: [0,2],
+            inRange: {
+              color: config.customize.rangeColor
+            }
+          }
+        }
+        if(config.customize.down){
+            config?.customize?.graphic?.forEach((item,index)=>{
+            option.graphic.push({
+              type: "text",
+              left: `${(index+1) * 200}px`,
+              top: "2%",
+              style: {
+                  text: item,
+                  font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
+                  fill: config.customize.fontGraphicColor,
+              },
+              onclick:()=>{
+                console.log(item,item=='中华人民共和国'?'country': 'province')
+                const arr=config.customize.graphic.slice(0,index+1)
+                console.log(arr,config.customize.graphic)
+                this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${item}.json`,graphic:[...arr],level:item=='中华人民共和国'?'country': 'province'}})
+              }
+            },)
+          })
+          }
+        this.charts.setOption(option)
+         this.charts.on('click',  (params)=> {
+          if(params.name=='') return
+          if(config.customize.down===false||config.customize.level==='province') return
+          this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${params.name}.json`,graphic:[...config.customize.graphic,params.name], level:config.customize.level==='country'?'province':'country'} })
+          });
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '../../assets/style/echartStyle';
+.light-theme {
+  background-color: #ffffff;
+  color: #000000;
+}
+.auto-theme {
+  background-color: rgba(0, 0, 0, 0);
+}
+</style>
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js b/data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js
new file mode 100644
index 00000000..4b6a6f7a
--- /dev/null
+++ b/data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js
@@ -0,0 +1,219 @@
+export const nameMap = {
+  Afghanistan: '阿富汗',
+  Singapore: '新加坡',
+  Angola: '安哥拉',
+  Albania: '阿尔巴尼亚',
+  'United Arab Emirates': '阿联酋',
+  Argentina: '阿根廷',
+  Armenia: '亚美尼亚',
+  'French Southern and Antarctic Lands':
+      '法属南半球和南极领地',
+  Australia: '澳大利亚',
+  Austria: '奥地利',
+  Azerbaijan: '阿塞拜疆',
+  Burundi: '布隆迪',
+  Belgium: '比利时',
+  Benin: '贝宁',
+  'Burkina Faso': '布基纳法索',
+  Bangladesh: '孟加拉国',
+  Bulgaria: '保加利亚',
+  'The Bahamas': '巴哈马',
+  'Bosnia and Herzegovina': '波斯尼亚和黑塞哥维那',
+  Belarus: '白俄罗斯',
+  Belize: '伯利兹',
+  Bermuda: '百慕大',
+  Bolivia: '玻利维亚',
+  Brazil: '巴西',
+  Brunei: '文莱',
+  Bhutan: '不丹',
+  Botswana: '博茨瓦纳',
+  'Central African Republic': '中非共和国',
+  Canada: '加拿大',
+  Switzerland: '瑞士',
+  Chile: '智利',
+  China: '中国',
+  'Ivory Coast': '象牙海岸',
+  Cameroon: '喀麦隆',
+  'Democratic Republic of the Congo': '刚果民主共和国',
+  'Republic of the Congo': '刚果共和国',
+  Colombia: '哥伦比亚',
+  'Costa Rica': '哥斯达黎加',
+  Cuba: '古巴',
+  'Northern Cyprus': '北塞浦路斯',
+  Cyprus: '塞浦路斯',
+  'Czech Republic': '捷克共和国',
+  Germany: '德国',
+  Djibouti: '吉布提',
+  Denmark: '丹麦',
+  'Dominican Republic': '多明尼加共和国',
+  Algeria: '阿尔及利亚',
+  Ecuador: '厄瓜多尔',
+  Egypt: '埃及',
+  Eritrea: '厄立特里亚',
+  Spain: '西班牙',
+  Estonia: '爱沙尼亚',
+  Ethiopia: '埃塞俄比亚',
+  Finland: '芬兰',
+  Fiji: '斐',
+  'Falkland Islands': '福克兰群岛',
+  France: '法国',
+  Gabon: '加蓬',
+  'United Kingdom': '英国',
+  Georgia: '格鲁吉亚',
+  Ghana: '加纳',
+  Guinea: '几内亚',
+  Gambia: '冈比亚',
+  'Guinea Bissau': '几内亚比绍',
+  Greece: '希腊',
+  Greenland: '格陵兰',
+  Guatemala: '危地马拉',
+  'French Guiana': '法属圭亚那',
+  Guyana: '圭亚那',
+  Honduras: '洪都拉斯',
+  Croatia: '克罗地亚',
+  Haiti: '海地',
+  Hungary: '匈牙利',
+  Indonesia: '印度尼西亚',
+  India: '印度',
+  Ireland: '爱尔兰',
+  Iran: '伊朗',
+  Iraq: '伊拉克',
+  Iceland: '冰岛',
+  Israel: '以色列',
+  Italy: '意大利',
+  Jamaica: '牙买加',
+  Jordan: '约旦',
+  Japan: '日本',
+  Kazakhstan: '哈萨克斯坦',
+  Kenya: '肯尼亚',
+  Kyrgyzstan: '吉尔吉斯斯坦',
+  Cambodia: '柬埔寨',
+  Kosovo: '科索沃',
+  Kuwait: '科威特',
+  Laos: '老挝',
+  Lebanon: '黎巴嫩',
+  Liberia: '利比里亚',
+  Libya: '利比亚',
+  'Sri Lanka': '斯里兰卡',
+  Lesotho: '莱索托',
+  Lithuania: '立陶宛',
+  Luxembourg: '卢森堡',
+  Latvia: '拉脱维亚',
+  Morocco: '摩洛哥',
+  Moldova: '摩尔多瓦',
+  Madagascar: '马达加斯加',
+  Mexico: '墨西哥',
+  Macedonia: '马其顿',
+  Mali: '马里',
+  Myanmar: '缅甸',
+  Montenegro: '黑山',
+  Mongolia: '蒙古',
+  Mozambique: '莫桑比克',
+  Mauritania: '毛里塔尼亚',
+  Malawi: '马拉维',
+  Malaysia: '马来西亚',
+  Namibia: '纳米比亚',
+  'New Caledonia': '新喀里多尼亚',
+  Niger: '尼日尔',
+  Nigeria: '尼日利亚',
+  Nicaragua: '尼加拉瓜',
+  Netherlands: '荷兰',
+  Norway: '挪威',
+  Nepal: '尼泊尔',
+  'New Zealand': '新西兰',
+  Oman: '阿曼',
+  Pakistan: '巴基斯坦',
+  Panama: '巴拿马',
+  Peru: '秘鲁',
+  Philippines: '菲律宾',
+  'Papua New Guinea': '巴布亚新几内亚',
+  Poland: '波兰',
+  'Puerto Rico': '波多黎各',
+  'North Korea': '北朝鲜',
+  Portugal: '葡萄牙',
+  Paraguay: '巴拉圭',
+  Qatar: '卡塔尔',
+  Romania: '罗马尼亚',
+  Russia: '俄罗斯',
+  Rwanda: '卢旺达',
+  'Western Sahara': '西撒哈拉',
+  'Saudi Arabia': '沙特阿拉伯',
+  Sudan: '苏丹',
+  'South Sudan': '南苏丹',
+  Senegal: '塞内加尔',
+  'Solomon Islands': '所罗门群岛',
+  'Sierra Leone': '塞拉利昂',
+  'El Salvador': '萨尔瓦多',
+  Somaliland: '索马里兰',
+  Somalia: '索马里',
+  'Republic of Serbia': '塞尔维亚',
+  Suriname: '苏里南',
+  Slovakia: '斯洛伐克',
+  Slovenia: '斯洛文尼亚',
+  Sweden: '瑞典',
+  Swaziland: '斯威士兰',
+  Syria: '叙利亚',
+  Chad: '乍得',
+  Togo: '多哥',
+  Thailand: '泰国',
+  Tajikistan: '塔吉克斯坦',
+  Turkmenistan: '土库曼斯坦',
+  'East Timor': '东帝汶',
+  'Trinidad and Tobago': '特里尼达和多巴哥',
+  Tunisia: '突尼斯',
+  Turkey: '土耳其',
+  'United Republic of Tanzania': '坦桑尼亚',
+  Uganda: '乌干达',
+  Ukraine: '乌克兰',
+  Uruguay: '乌拉圭',
+  'United States': '美国',
+  Uzbekistan: '乌兹别克斯坦',
+  Venezuela: '委内瑞拉',
+  Vietnam: '越南',
+  Vanuatu: '瓦努阿图',
+  'West Bank': '西岸',
+  Yemen: '也门',
+  'South Africa': '南非',
+  Zambia: '赞比亚',
+  Korea: '韩国',
+  Tanzania: '坦桑尼亚',
+  Zimbabwe: '津巴布韦',
+  Congo: '刚果',
+  'Central African Rep.': '中非',
+  Serbia: '塞尔维亚',
+  'Bosnia and Herz.': '波黑',
+  'Czech Rep.': '捷克',
+  'W. Sahara': '西撒哈拉',
+  'Lao PDR': '老挝',
+  'Dem.Rep.Korea': '朝鲜',
+  'Falkland Is.': '福克兰群岛',
+  'Timor-Leste': '东帝汶',
+  'Solomon Is.': '所罗门群岛',
+  Palestine: '巴勒斯坦',
+  'N. Cyprus': '北塞浦路斯',
+  Aland: '奥兰群岛',
+  'Fr. S. Antarctic Lands': '法属南半球和南极陆地',
+  Mauritius: '毛里求斯',
+  Comoros: '科摩罗',
+  'Eq. Guinea': '赤道几内亚',
+  'Guinea-Bissau': '几内亚比绍',
+  'Dominican Rep.': '多米尼加',
+  'Saint Lucia': '圣卢西亚',
+  Dominica: '多米尼克',
+  'Antigua and Barb.': '安提瓜和巴布达',
+  'U.S. Virgin Is.': '美国原始岛屿',
+  Montserrat: '蒙塞拉特',
+  Grenada: '格林纳达',
+  Barbados: '巴巴多斯',
+  Samoa: '萨摩亚',
+  Bahamas: '巴哈马',
+  'Cayman Is.': '开曼群岛',
+  'Faeroe Is.': '法罗群岛',
+  'IsIe of Man': '马恩岛',
+  Malta: '马耳他共和国',
+  Jersey: '泽西',
+  'Cape Verde': '佛得角共和国',
+  'Turks and Caicos Is.': '特克斯和凯科斯群岛',
+  'St. Vin. and Gren.': '圣文森特和格林纳丁斯'
+}
+
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
new file mode 100644
index 00000000..8ae82e57
--- /dev/null
+++ b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
@@ -0,0 +1,382 @@
+<template>
+  <div class="bs-setting-wrap">
+    <el-form
+      ref="form"
+      :model="config"
+      label-width="90px"
+      label-position="left"
+      class="setting-body bs-el-form"
+    >
+      <SettingTitle>标题</SettingTitle>
+      <div class="lc-field-body">
+        <el-form-item
+          label="标题"
+          label-width="100px"
+        >
+          <el-input
+            v-model="config.title"
+            placeholder="请输入标题"
+            clearable
+          />
+        </el-form-item>
+      </div>
+      <SettingTitle>位置</SettingTitle>
+      <div class="lc-field-body">
+        <PosWhSetting :config="config" />
+      </div>
+      <SettingTitle>基础</SettingTitle>
+      <div class="lc-field-body">
+        <el-form-item
+          label="是否显示地名"
+          label-width="100px"
+        >
+          <el-switch
+            v-model="config.customize.mapName"
+            class="bs-el-switch"
+            active-color="#007aff"
+          />
+        </el-form-item>
+        <el-form-item
+          label="地图级别"
+          label-width="100px"
+        >
+          <el-select
+            v-model="config.customize.level"
+            popper-class="bs-el-select"
+            class="bs-el-select"
+            @change="changeLevel()"
+          >
+           <el-option
+              label="世界"
+              value="world"
+            />
+            <el-option
+              label="国家"
+              value="country"
+            />
+            <el-option
+              label="省份"
+              value="province"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.level == 'province'"
+          label="地图显示区域"
+          label-width="100px"
+        >
+          <el-select
+            v-model="config.customize.dataMap"
+            popper-class="bs-el-select"
+            class="bs-el-select"
+          >
+            <el-option
+              v-for="map in mapList"
+              :key="map.name"
+              :label="map.name"
+              :value="map.url"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.level !== 'world'"
+          label="是否开启下钻"
+          label-width="100px"
+        >
+          <el-switch
+            v-model="config.customize.down"
+            class="bs-el-switch"
+            active-color="#007aff"
+          />
+        </el-form-item>
+        <el-form-item
+          label="地图分割线颜色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.mapLineColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="地图分割块颜色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.areaColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="悬浮框背景色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.tooltipBackgroundColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="悬浮框边框色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.borderColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="悬浮框字体颜色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.fontColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="线悬浮框内容"
+          label-width="100px"
+        >
+          <el-input :rows="8" v-model="config.customize.lineFormatter" type="textarea"></el-input>
+        </el-form-item>
+        <el-form-item
+          label="点悬浮框内容"
+          label-width="100px"
+        >
+          <el-input :rows="4" v-model="config.customize.scatterFormatter" type="textarea"></el-input>
+        </el-form-item>
+        <el-form-item
+          label="轨迹样式"
+          label-width="100px"
+        >
+           <el-select
+            v-model="config.customize.symbol"
+            popper-class="bs-el-select"
+            class="bs-el-select"
+          >
+            <el-option
+              v-for="symbol in symbolList"
+              :key="symbol.name"
+              :label="symbol.name"
+              :value="symbol.value"
+            />
+          </el-select>
+        </el-form-item>
+        <el-form-item
+          label="轨迹颜色"
+          label-width="100px"
+        >
+            <ColorPicker
+            v-model="config.customize.symbolColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="轨迹大小"
+          label-width="100px"
+        >
+          <el-input-number
+            v-model="config.customize.symbolSize"
+            placeholder="请输入轨迹大小"
+            controls-position="right"
+            :step="1"
+          />
+        </el-form-item>
+        <el-form-item
+          label="普通点颜色"
+          label-width="100px"
+        >
+            <ColorPicker
+            v-model="config.customize.scatterColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="中心点颜色"
+          label-width="100px"
+        >
+            <ColorPicker
+            v-model="config.customize.scatterCenterColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          label="是否开启筛选"
+          label-width="100px"
+        >
+          <el-switch
+            v-model="config.customize.visual"
+            class="bs-el-switch"
+            active-color="#007aff"
+          />
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.visual"
+          label="数值范围"
+          label-width="100px"
+        >
+          <el-input-number
+            v-model="config.customize.range[0]"
+            placeholder="请输入最小值"
+            controls-position="right"
+            :step="1"
+          />
+          -
+          <el-input-number
+            v-model="config.customize.range[1]"
+            controls-position="right"
+            placeholder="请输入最大值"
+            :step="1"
+          />
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.visual"
+          label="配色方案"
+          label-width="100px"
+        >
+          <color-select
+            v-model="config.customize.rangeColor"
+            @update="updateColorScheme"
+          />
+          <div
+            style="
+                display: flex;
+                align-items: center;
+                height: 42px;
+                flex-wrap: wrap;
+              "
+          >
+            <el-color-picker
+              v-for="(colorItem, index) in colors"
+              :key="index"
+              v-model="config.customize.rangeColor[index]"
+              show-alpha
+              popper-class="bs-el-color-picker"
+              class="start-color bs-el-color-picker"
+            />
+            <span
+              class="el-icon-circle-plus-outline"
+              style="color: #007aff; font-size: 20px"
+              @click="addColor"
+            />
+            <span
+              v-if="colors.length"
+              class="el-icon-remove-outline"
+              style="color: #ea0b30; font-size: 20px"
+              @click="delColor"
+            />
+          </div>
+        </el-form-item>
+      </div>
+    </el-form>
+  </div>
+</template>
+<script>
+import SettingTitle from 'data-room-ui/SettingTitle/index.vue'
+import { chartSettingMixins } from 'data-room-ui/js/mixins/chartSettingMixins'
+import ColorSelect from 'data-room-ui/ColorMultipleSelect/index.vue'
+import ColorPicker from 'data-room-ui/ColorPicker/index.vue'
+import PosWhSetting from 'data-room-ui/BigScreenDesign/RightSetting/PosWhSetting.vue'
+export default {
+  name: 'BarSetting',
+  components: {
+    ColorSelect,
+    ColorPicker,
+    PosWhSetting,
+    SettingTitle
+  },
+  mixins: [chartSettingMixins],
+  props: {},
+  data () {
+    return {
+      mapList: [],
+      predefineThemeColors: [
+        '#007aff',
+        '#1aa97b',
+        '#ff4d53',
+        '#1890FF',
+        '#DF0E1B',
+        '#0086CC',
+        '#2B74CF',
+        '#00BC9D',
+        '#ED7D32'
+      ],
+      symbolList:[
+        {
+          name:'箭头',
+          value:'arrow'
+        }
+      ]
+    }
+  },
+  computed: {
+    config: {
+      get () {
+        return this.$store.state.bigScreen.activeItemConfig
+      },
+      set (val) {
+        this.$store.state.bigScreen.activeItemConfig = val
+      }
+    }
+  },
+  watch: {
+    'config.customize.level': {
+      handler (val) {
+        this.getMapList()
+      }
+    }
+  },
+  mounted () {
+    this.getMapList()
+  },
+  methods: {
+    getMapList () {
+      this.$dataRoomAxios.get(`${window.BS_CONFIG?.httpConfigs?.baseURL}/bigScreen/design/map/list/${this.config.customize.level}`).then((res) => {
+        this.mapList = res
+      })
+    },
+    changeLevel () {
+      if (this.config.customize.level === 'country') {
+        this.config.customize.dataMap = '中华人民共和国.json'
+      } else if (this.config.customize.level === 'province') {
+        this.getMapList()
+        this.config.customize.dataMap = '安徽省.json'
+      }else{
+        this.config.customize.down=false
+      }
+    },
+    delColor () {
+      this.colors = []
+      this.config.customize.rangeColor = []
+    },
+    addColor () {
+      this.colors.push('')
+    },
+    updateColorScheme (colors) {
+      this.colors = [...colors]
+      this.config.customize.rangeColor = [...colors]
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+@import '../../assets/style/settingWrap.scss';
+@import '../../assets/style/bsTheme.scss';
+// 筛选条件的按钮样式
+.add-filter-box {
+  position: relative;
+  .add-filter {
+    margin-left: 90px;
+    margin-bottom: 10px;
+  }
+  .add-filter-btn {
+    position: absolute;
+    top: 0;
+  }
+}
+.lc-field-body {
+  padding: 12px 16px;
+}
+</style>
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js b/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js
new file mode 100644
index 00000000..ddada981
--- /dev/null
+++ b/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js
@@ -0,0 +1,123 @@
+import { commonConfig, displayOption } from 'data-room-ui/js/config'
+// import Icon from 'data-room-ui/assets/images/bigScreenIcon/export'
+import cloneDeep from 'lodash/cloneDeep'
+import * as iconData from 'data-room-ui/assets/symbols/bigScreenIcon/iconfont.json'
+const iconNames = iconData.glyphs.map(item => item.name).sort((a, b) => a.localeCompare(b))
+export const settingConfig = {
+  padding: [30, 30, 50, 80],
+  legend: false,
+  isGroup: true,
+  data: [],
+  color: '',
+  theme: 'dark',
+  displayOption: {
+    ...displayOption,
+    params: {
+      enable: true
+    },
+    headerField: {
+      enable: false
+    },
+    mapField: {
+      enable: false
+    },
+    metricField: {
+      // 指标
+      label: '维度',
+      enable: false,
+      multiple: false // 是否多选
+    },
+    dimensionField: {
+      // 表格列
+      label: '展示字段', // 维度/查询字段
+      enable: false,
+      multiple: false // 是否多选
+    }
+  }
+}
+const customConfig = {
+  type: 'flyMap',
+  root: {
+    version: '2023071001',
+    contribution: false
+  },
+  customize: {
+    // 是否显示文字
+    mapName: false,
+    // 悬浮框背景色
+    tooltipBackgroundColor: '#0C121C',
+    // 悬浮框边框色
+    borderColor: 'rgba(0, 0, 0, 0.16)',
+    // 悬浮框字体颜色
+    fontColor:'#DADADA',
+    // 打点图背景颜色
+    scatterBackgroundColor: 'rgba(255,0,0,.7)',
+    // 打点图文字颜色
+    scatterColor: 'rgba(165, 108, 91, 1)',
+    // 打点图中心点文字颜色
+    scatterCenterColor:'rgba(205, 196, 110, 1)',
+    // 分割线颜色
+    mapLineColor: 'rgba(53, 86, 165, 1)',
+    // 水印字体颜色
+    fontGraphicColor: '#fff',
+    fontSize:'30',
+    // 是否开启下钻
+    down: false,
+    // 轨迹图像
+    symbol: 'arrow',
+    // 轨迹颜色
+    symbolColor: '#01AAED',
+    // 轨迹大小
+    symbolSize:8,
+    // 地图级别
+    level: 'country',
+    // 范围
+    scope: '中国',
+    // 地图区域颜色
+    areaColor: 'rgba(31, 50, 121, 1)',
+    // 是否开启筛选
+    visual: true,
+    graphic:['中华人民共和国'],
+    // 筛选范围
+    range: [0, 100],
+    scatterFormatter:'`<p style="text-align:center;font-size: 14px">${params.name}</p>`',
+    // 格式化脚本
+    lineFormatter:'`<p style="font-size: 16px">销售额</p><div>${params.data.msg.from}-->${params.data.msg.to} ${params.data.msg.value} </div>`',
+    // 从上到下的颜色
+    rangeColor: ['rgba(165, 108, 91, 1)', 'rgba(205, 196, 110, 1)'],
+    // 地图数据
+    dataMap: '中华人民共和国.json',
+    // 展示字段
+    value: '',
+    // 横坐标
+    xaxis: '',
+    // 纵坐标
+    yaxis: '',
+    // 名称
+    name: ''
+
+  }
+}
+
+export const dataConfig = {
+  ...commonConfig(customConfig)
+}
+
+export const FlyMapData = {
+  name: '飞线图',
+  title: '飞线图',
+  icon: iconNames[5],
+  className:
+    'com.gccloud.dataroom.core.module.chart.components.ScreenFlyMapChart',
+  w: 800,
+  h: 700,
+  x: 0,
+  y: 0,
+  type: 'flyMap',
+  option: {
+    ...cloneDeep(settingConfig)
+  },
+  setting: undefined, // 右侧面板自定义配置
+  dataHandler: {}, // 数据自定义处理js脚本
+  ...cloneDeep(dataConfig)
+}
diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
index 0ea4c61e..3319dda8 100644
--- a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
+++ b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
@@ -67,7 +67,7 @@
           class="data-setting-data-box"
         >
           <div class="lc-field-head">
-            <div class="lc-field-title">
+            <div v-if="config.type!=='flyMap'" class="lc-field-title">
               数据配置
             </div>
           </div>
diff --git a/data-room-ui/packages/BigScreenDesign/index.vue b/data-room-ui/packages/BigScreenDesign/index.vue
index 344b520b..b3a54ac5 100644
--- a/data-room-ui/packages/BigScreenDesign/index.vue
+++ b/data-room-ui/packages/BigScreenDesign/index.vue
@@ -406,7 +406,7 @@ export default {
     },
     // 自定义属性更新
     updateSetting (config) {
-      if (config.type === 'map' || config.type === 'video') {
+      if (config.type === 'map' || config.type === 'video' ||config.type === 'flyMap') {
         config.key = new Date().getTime()
       }
       this.changeChartConfig(cloneDeep(config))
diff --git a/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue b/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue
index 899ad5ed..bde96801 100644
--- a/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue
+++ b/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue
@@ -162,7 +162,6 @@
                         :key="table.name"
                         :label="table.name"
                         :value="table.name"
-                        :disabled="table.status == 1"
                       />
                     </el-option-group>
                     <el-option-group label="视图">
@@ -171,7 +170,6 @@
                         :key="table.name"
                         :label="table.name"
                         :value="table.name"
-                        :disabled="table.status == 1"
                       />
                     </el-option-group>
                   </el-select>
diff --git a/data-room-ui/packages/G2Plots/plotList.js b/data-room-ui/packages/G2Plots/plotList.js
index 6891740f..f2312a4f 100644
--- a/data-room-ui/packages/G2Plots/plotList.js
+++ b/data-room-ui/packages/G2Plots/plotList.js
@@ -5,6 +5,7 @@
  */
 import { dataConfig, settingConfig } from '../PlotRender/settingConfig'
 import { mapData } from 'data-room-ui/BasicComponents/Map/settingConfig'
+import { FlyMapData } from 'data-room-ui/BasicComponents/FlyMap/settingConfig'
 // import _ from 'lodash'
 import cloneDeep from 'lodash/cloneDeep'
 import sortList from './plotListSort'
@@ -85,5 +86,5 @@ export function getCustomPlots () {
   return list
 }
 
-const plots = [...plotList, ...customPlots, mapData]
+const plots = [...plotList, ...customPlots, mapData,FlyMapData]
 export default plots
diff --git a/data-room-ui/packages/js/mixins/commonMixins.js b/data-room-ui/packages/js/mixins/commonMixins.js
index 8e1565f2..d0d536db 100644
--- a/data-room-ui/packages/js/mixins/commonMixins.js
+++ b/data-room-ui/packages/js/mixins/commonMixins.js
@@ -26,7 +26,7 @@ export default {
     }
   },
   mounted () {
-    if (!['tables'].includes(this.config.type)) {
+    if (!['tables', 'flyMap', 'map'].includes(this.config.type)) {
       this.chartInit()
     }
     this.watchCacheData()
diff --git a/data-room-ui/packages/js/store/mutations.js b/data-room-ui/packages/js/store/mutations.js
index fc17d4b1..bd192a85 100644
--- a/data-room-ui/packages/js/store/mutations.js
+++ b/data-room-ui/packages/js/store/mutations.js
@@ -66,7 +66,7 @@ export default {
     state.pageLoading = booleanValue
   },
   // 改变当前组件配置
-  changeChartConfig (state, itemConfig) {
+  changeChartConfig(state, itemConfig) {
     const index = state.pageInfo.chartList.findIndex(
       item => item.code === itemConfig.code
     )

From f3b16b08bce2f93605ac126b663952fbec3d96ab Mon Sep 17 00:00:00 2001
From: "wu.jian2" <distantmtn@gmail.com>
Date: Wed, 30 Aug 2023 10:16:11 +0800
Subject: [PATCH 02/13] =?UTF-8?q?feat:=20=E8=B7=91=E9=A9=AC=E7=81=AF?=
 =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=8F=96=E6=B6=88=E7=BB=84=E4=BB=B6=E8=81=94?=
 =?UTF-8?q?=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../packages/BigScreenDesign/RightSetting/DataSetting.vue      | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
index 92ac141b..aadd0dd1 100644
--- a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
+++ b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
@@ -564,8 +564,9 @@
           :config="config"
           :source-field-list="sourceFieldList"
         />
+        {{ config.type }}
         <ComponentRelation
-          v-if="!['carousel','gauge','liquid'].includes(config.type)"
+          v-if="!['carousel','gauge','liquid','marquee'].includes(config.type)"
           :config="config"
           :source-field-list="sourceFieldList"
         />

From a437f171aedc4e5c4080d39098d9d38ced62210a Mon Sep 17 00:00:00 2001
From: "wu.jian2" <distantmtn@gmail.com>
Date: Wed, 30 Aug 2023 10:17:24 +0800
Subject: [PATCH 03/13] =?UTF-8?q?feat:=20=E8=B7=91=E9=A9=AC=E7=81=AF?=
 =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=8F=96=E6=B6=88=E7=BB=84=E4=BB=B6=E8=81=94?=
 =?UTF-8?q?=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../packages/BigScreenDesign/RightSetting/DataSetting.vue       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
index 92ac141b..c664c9de 100644
--- a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
+++ b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
@@ -565,7 +565,7 @@
           :source-field-list="sourceFieldList"
         />
         <ComponentRelation
-          v-if="!['carousel','gauge','liquid'].includes(config.type)"
+          v-if="!['carousel','gauge','liquid','marquee'].includes(config.type)"
           :config="config"
           :source-field-list="sourceFieldList"
         />

From 1c906ac7bfc3ee28abfbcad5eb1965f4c078ab37 Mon Sep 17 00:00:00 2001
From: "wu.jian2" <distantmtn@gmail.com>
Date: Wed, 30 Aug 2023 10:25:06 +0800
Subject: [PATCH 04/13] =?UTF-8?q?feat:=20=E8=B7=91=E9=A9=AC=E7=81=AF?=
 =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=8F=96=E6=B6=88=E7=BB=84=E4=BB=B6=E8=81=94?=
 =?UTF-8?q?=E5=8A=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../packages/BigScreenDesign/RightSetting/DataSetting.vue        | 1 -
 1 file changed, 1 deletion(-)

diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
index aadd0dd1..c664c9de 100644
--- a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
+++ b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue
@@ -564,7 +564,6 @@
           :config="config"
           :source-field-list="sourceFieldList"
         />
-        {{ config.type }}
         <ComponentRelation
           v-if="!['carousel','gauge','liquid','marquee'].includes(config.type)"
           :config="config"

From 7382cc4816239cff2c57fe08dfb34efceaadfac4 Mon Sep 17 00:00:00 2001
From: "hong.yang" <hong.yang@ustcinfo.com>
Date: Wed, 30 Aug 2023 10:33:41 +0800
Subject: [PATCH 05/13] =?UTF-8?q?feat:=20=E5=8D=87=E7=BA=A7=E6=95=B0?=
 =?UTF-8?q?=E6=8D=AE=E9=9B=86=E6=8F=92=E4=BB=B6=E7=89=88=E6=9C=AC=E8=87=B3?=
 =?UTF-8?q?1.0.1.2023083001.Alpha?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

升级数据集插件版本至1.0.1.2023083001.Alpha
---
 DataRoom/pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/DataRoom/pom.xml b/DataRoom/pom.xml
index 6de50d6c..c14599b5 100644
--- a/DataRoom/pom.xml
+++ b/DataRoom/pom.xml
@@ -60,7 +60,7 @@
         <clickhouse.version>0.3.2</clickhouse.version>
         <commons-io.version>2.2</commons-io.version>
         <okhttp3.version>4.9.1</okhttp3.version>
-        <dataset.core.version>1.0.1.2023082801.Alpha</dataset.core.version>
+        <dataset.core.version>1.0.1.2023083001.Alpha</dataset.core.version>
     </properties>
 
     <dependencies>

From af21d981f43de86a4eeb764bd3609c5244df4c53 Mon Sep 17 00:00:00 2001
From: "hong.yang" <hong.yang@ustcinfo.com>
Date: Wed, 30 Aug 2023 10:45:24 +0800
Subject: [PATCH 06/13] =?UTF-8?q?feat:=20=E5=8F=91=E5=B8=83=E6=B5=8B?=
 =?UTF-8?q?=E8=AF=95=E7=89=88=E6=9C=AC1.0.1.2023083001.Alpha=EF=BC=8C?=
 =?UTF-8?q?=E6=96=B0=E5=A2=9Emssql=E6=95=B0=E6=8D=AE=E6=BA=90=E6=94=AF?=
 =?UTF-8?q?=E6=8C=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

发布测试版本1.0.1.2023083001.Alpha,新增mssql数据源支持
---
 DataRoom/dataroom-core/pom.xml   | 2 +-
 DataRoom/dataroom-server/pom.xml | 4 ++--
 DataRoom/pom.xml                 | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/DataRoom/dataroom-core/pom.xml b/DataRoom/dataroom-core/pom.xml
index 1d27e360..f00689d3 100644
--- a/DataRoom/dataroom-core/pom.xml
+++ b/DataRoom/dataroom-core/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>com.gccloud</groupId>
         <artifactId>dataroom</artifactId>
-        <version>1.0.1.2023081101.Alpha</version>
+        <version>1.0.1.2023083001.Alpha</version>
     </parent>
 
     <artifactId>dataroom-core</artifactId>
diff --git a/DataRoom/dataroom-server/pom.xml b/DataRoom/dataroom-server/pom.xml
index 1c2e9079..662b7142 100644
--- a/DataRoom/dataroom-server/pom.xml
+++ b/DataRoom/dataroom-server/pom.xml
@@ -6,7 +6,7 @@
     <parent>
         <groupId>com.gccloud</groupId>
         <artifactId>dataroom</artifactId>
-        <version>1.0.1.2023081101.Alpha</version>
+        <version>1.0.1.2023083001.Alpha</version>
     </parent>
 
     <artifactId>dataroom-server</artifactId>
@@ -29,7 +29,7 @@
         <dependency>
             <groupId>com.gccloud</groupId>
             <artifactId>dataroom-core</artifactId>
-            <version>1.0.1.2023081101.Alpha</version>
+            <version>1.0.1.2023083001.Alpha</version>
         </dependency>
 
         <dependency>
diff --git a/DataRoom/pom.xml b/DataRoom/pom.xml
index c14599b5..2d543599 100644
--- a/DataRoom/pom.xml
+++ b/DataRoom/pom.xml
@@ -12,7 +12,7 @@
 
     <groupId>com.gccloud</groupId>
     <artifactId>dataroom</artifactId>
-    <version>1.0.1.2023081101.Alpha</version>
+    <version>1.0.1.2023083001.Alpha</version>
 
     <packaging>pom</packaging>
     <description>基于G2Plot、Echarts的大屏设计服务端,具备设计、预览能力,支持MySQL、Oracle、PostgreSQL、Groovy等数据集接入

From 544583c474f8ae12a7f9327fec0edb9a457a2113 Mon Sep 17 00:00:00 2001
From: "wu.jian2" <distantmtn@gmail.com>
Date: Wed, 30 Aug 2023 11:00:10 +0800
Subject: [PATCH 07/13] =?UTF-8?q?refactor:=20=E4=BF=AE=E6=94=B9=E7=89=88?=
 =?UTF-8?q?=E6=9C=AC=E5=8F=B7:1.0.1-2023083002-Alpha?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 data-room-ui/packages/BasicComponents/Marquee/index.vue | 1 -
 1 file changed, 1 deletion(-)

diff --git a/data-room-ui/packages/BasicComponents/Marquee/index.vue b/data-room-ui/packages/BasicComponents/Marquee/index.vue
index 21dde5d4..08c3f8cc 100644
--- a/data-room-ui/packages/BasicComponents/Marquee/index.vue
+++ b/data-room-ui/packages/BasicComponents/Marquee/index.vue
@@ -224,7 +224,6 @@ export default {
     speechBroadcast (text) {
       if (this.speech.hasBrowserSupport()) {
         this.speech.setLanguage('zh-CN')
-        this.speech.pitch = 1
         this.speech.init()
         this.speech.speak({ text: text })
       } else {

From 0a489f167885a09fd3250bf8137200b67f3ee2c3 Mon Sep 17 00:00:00 2001
From: "wu.jian2" <distantmtn@gmail.com>
Date: Wed, 30 Aug 2023 11:00:31 +0800
Subject: [PATCH 08/13] =?UTF-8?q?refactor:=20=E4=BF=AE=E6=94=B9=E7=89=88?=
 =?UTF-8?q?=E6=9C=AC=E5=8F=B7:1.0.1-2023083002-Alpha?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 data-room-ui/package.json                               | 2 +-
 data-room-ui/packages/BasicComponents/Marquee/index.vue | 1 -
 2 files changed, 1 insertion(+), 2 deletions(-)

diff --git a/data-room-ui/package.json b/data-room-ui/package.json
index dc625b22..a5dc9a74 100644
--- a/data-room-ui/package.json
+++ b/data-room-ui/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@gcpaas/data-room-ui",
-  "version": "1.0.1-2023082902-Alpha",
+  "version": "1.0.1-2023083002-Alpha",
   "description": "自定义大屏",
   "author": "gcpaas",
   "license": "MIT",
diff --git a/data-room-ui/packages/BasicComponents/Marquee/index.vue b/data-room-ui/packages/BasicComponents/Marquee/index.vue
index 21dde5d4..08c3f8cc 100644
--- a/data-room-ui/packages/BasicComponents/Marquee/index.vue
+++ b/data-room-ui/packages/BasicComponents/Marquee/index.vue
@@ -224,7 +224,6 @@ export default {
     speechBroadcast (text) {
       if (this.speech.hasBrowserSupport()) {
         this.speech.setLanguage('zh-CN')
-        this.speech.pitch = 1
         this.speech.init()
         this.speech.speak({ text: text })
       } else {

From b057e703147e05f8ba2e9d65721756bdbdadec9e Mon Sep 17 00:00:00 2001
From: "hong.yang" <hong.yang@ustcinfo.com>
Date: Wed, 30 Aug 2023 11:04:04 +0800
Subject: [PATCH 09/13] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9readme=EF=BC=8C?=
 =?UTF-8?q?=E6=94=AF=E6=8C=81MSSQL?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

修改readme,支持MSSQL
---
 README.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/README.md b/README.md
index ba3e81a6..a473d801 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@
     <img alt="Company" src="https://img.shields.io/badge/Author-科大国创云网科技有限公司-blue.svg">
 </p>
 
-🔥DataRoom是一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备大屏设计、预览能力,支持MySQL、Oracle、PostgreSQL、JSON、JS、HTTP、Groovy等数据集接入,使用简单,完全免费,代码开源。
+🔥DataRoom是一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备大屏设计、预览能力,支持MySQL、Oracle、PostgreSQL、MSSQL、JSON、JS、HTTP、Groovy等数据集接入,使用简单,完全免费,代码开源。
 
 ## 效果图
 

From 4c90353251b849bfe3813c7c98be4e1532599809 Mon Sep 17 00:00:00 2001
From: "liu.tao3" <liu.tao3@ustcinfo.com>
Date: Wed, 30 Aug 2023 11:45:24 +0800
Subject: [PATCH 10/13] =?UTF-8?q?feat:=E9=A3=9E=E7=BA=BF=E5=9B=BE=E5=BC=80?=
 =?UTF-8?q?=E5=8F=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 data-room-ui/package-lock.json                | 84 +++++++++----------
 .../packages/BasicComponents/FlyMap/index.vue | 73 ++++++++++++----
 .../BasicComponents/FlyMap/setting.vue        | 36 +++++++-
 .../BasicComponents/FlyMap/settingConfig.js   |  5 +-
 .../images/bigScreenIcon/svg/18flyMap.svg     |  1 +
 data-room-ui/packages/js/store/mutations.js   |  2 +-
 6 files changed, 137 insertions(+), 64 deletions(-)
 create mode 100644 data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg

diff --git a/data-room-ui/package-lock.json b/data-room-ui/package-lock.json
index a92d268f..c742673e 100644
--- a/data-room-ui/package-lock.json
+++ b/data-room-ui/package-lock.json
@@ -1,6 +1,6 @@
 {
   "name": "@gcpaas/data-room-ui",
-  "version": "1.0.1-2023082201-Alpha",
+  "version": "1.0.1-2023082902-Alpha",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
@@ -3397,27 +3397,6 @@
         "whatwg-fetch": "^3.6.2"
       },
       "dependencies": {
-        "@vue/vue-loader-v15": {
-          "version": "npm:vue-loader@15.10.2",
-          "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz",
-          "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
-          "dev": true,
-          "requires": {
-            "@vue/component-compiler-utils": "^3.1.0",
-            "hash-sum": "^1.0.2",
-            "loader-utils": "^1.1.0",
-            "vue-hot-reload-api": "^2.3.0",
-            "vue-style-loader": "^4.1.0"
-          },
-          "dependencies": {
-            "hash-sum": {
-              "version": "1.0.2",
-              "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
-              "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
-              "dev": true
-            }
-          }
-        },
         "acorn-walk": {
           "version": "8.2.0",
           "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
@@ -3489,26 +3468,6 @@
             "tapable": "^2.0.0"
           }
         },
-        "json5": {
-          "version": "1.0.2",
-          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
-          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
-          "dev": true,
-          "requires": {
-            "minimist": "^1.2.0"
-          }
-        },
-        "loader-utils": {
-          "version": "1.4.2",
-          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
-          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
-          "dev": true,
-          "requires": {
-            "big.js": "^5.2.2",
-            "emojis-list": "^3.0.0",
-            "json5": "^1.0.1"
-          }
-        },
         "ms": {
           "version": "2.1.2",
           "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
@@ -3726,6 +3685,47 @@
         "lodash": "^4.17.4"
       }
     },
+    "@vue/vue-loader-v15": {
+      "version": "npm:vue-loader@15.10.2",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz",
+      "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^3.1.0",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      },
+      "dependencies": {
+        "hash-sum": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
+          "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
+          "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.2",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz",
+          "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        }
+      }
+    },
     "@vue/vue2-jest": {
       "version": "27.0.0",
       "resolved": "https://registry.npmjs.org/@vue/vue2-jest/-/vue2-jest-27.0.0.tgz",
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/index.vue b/data-room-ui/packages/BasicComponents/FlyMap/index.vue
index b8ff869f..49dbbd49 100644
--- a/data-room-ui/packages/BasicComponents/FlyMap/index.vue
+++ b/data-room-ui/packages/BasicComponents/FlyMap/index.vue
@@ -32,7 +32,8 @@ export default {
   data () {
     return {
       charts: null,
-      hasData: false
+      hasData: false,
+      level:''
     }
   },
   computed: {
@@ -88,7 +89,7 @@ export default {
       this.charts = echarts.init(
         document.getElementById(`chart${this.config.code}`)
       )
-
+      this.level=config.customize.level
       const lines_coord = []
       let fromCoord=[]
       let coord=[]
@@ -107,7 +108,7 @@ export default {
         })
         echarts.registerMap(config.customize.scope, res)
         const option = {
-          // nameMap: nameMap,
+          nameMap:config.customize.level=='world'?nameMap:'',
           graphic: [
           ],
           geo: {
@@ -239,30 +240,68 @@ export default {
           }
         }
         if(config.customize.down){
-            config?.customize?.graphic?.forEach((item,index)=>{
+            // config?.customize?.graphic?.forEach((item,index)=>{
             option.graphic.push({
               type: "text",
-              left: `${(index+1) * 200}px`,
-              top: "2%",
+              left: `250px`,
+              top: "5%",
               style: {
-                  text: item,
+                  text: '中国',
                   font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
                   fill: config.customize.fontGraphicColor,
               },
-              onclick:()=>{
-                console.log(item,item=='中华人民共和国'?'country': 'province')
-                const arr=config.customize.graphic.slice(0,index+1)
-                console.log(arr,config.customize.graphic)
-                this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${item}.json`,graphic:[...arr],level:item=='中华人民共和国'?'country': 'province'}})
+              onclick:async()=>{
+                this.level='country'
+                const index = option.graphic.findIndex(i => i.style.text === '中国');
+                // 点击元素之后的所有元素全部删除
+                option.graphic.splice(index + 1);
+                const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/country/中华人民共和国.json`
+                const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
+                option.geo.map = '中华人民共和国'
+                this.changeData({...config,customize:{...config.customize,level:'country',scope:'中国'}})
+                echarts.registerMap('中华人民共和国', map);
+                this.charts.setOption(option, true);
+
               }
             },)
-          })
+          // })
           }
         this.charts.setOption(option)
-         this.charts.on('click',  (params)=> {
-          if(params.name=='') return
-          if(config.customize.down===false||config.customize.level==='province') return
-          this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${params.name}.json`,graphic:[...config.customize.graphic,params.name], level:config.customize.level==='country'?'province':'country'} })
+         this.charts.on('click',  async(params)=> {
+          const index = option.graphic.findIndex(i => i.style.text === params.name);
+          if(params.name=='' || index !== -1) return
+          if(config.customize.down===false||this.level==='province') return
+          const idx = option.graphic.length + 1;
+          option.graphic.push({
+            type: "text",
+            left: `${idx * 250}px`,
+            top: "5%",
+            style: {
+                text: params.name,
+                font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
+                fill: config.customize.fontGraphicColor,
+            },
+            onclick: async() => {
+                const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${params.name=='中华人民共和国'?'country':'province'}/${params.name}.json`
+                const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
+                // 利用函数的作用域,可以直接拿上面的name来用
+                const index = option.graphic.findIndex(i => i.style.text === params.name);
+                // 点击元素之后的所有元素全部删除
+                option.graphic.splice(index + 1);
+                // 很多操作重复了,你可以将公共部分抽离出来
+                option.geo.map = params.name;
+                this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}})
+                echarts.registerMap(params.name, map);
+                this.charts.setOption(option, true);
+            },
+        });
+          this.level='province'
+          const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/province/${params.name}.json`
+          const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
+          this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}})
+          option.geo.map = params.name
+          echarts.registerMap(params.name, map);
+          this.charts.setOption(option, true);
           });
       })
     }
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
index 8ae82e57..41eea263 100644
--- a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
+++ b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
@@ -79,7 +79,7 @@
           </el-select>
         </el-form-item>
         <el-form-item
-          v-if="config.customize.level !== 'world'"
+          v-if="config.customize.level == 'country'"
           label="是否开启下钻"
           label-width="100px"
         >
@@ -89,6 +89,28 @@
             active-color="#007aff"
           />
         </el-form-item>
+        <el-form-item
+          v-if="config.customize.down"
+          label="头部字体颜色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.fontGraphicColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.down"
+          label="头部字体大小"
+          label-width="100px"
+        >
+           <el-input-number
+            v-model="config.customize.fontSize"
+            placeholder="请输入轨迹大小"
+            controls-position="right"
+            :step="1"
+          />
+        </el-form-item>
         <el-form-item
           label="地图分割线颜色"
           label-width="100px"
@@ -306,6 +328,18 @@ export default {
         {
           name:'箭头',
           value:'arrow'
+        },
+        {
+          name:'圆',
+          value:'circle'
+        },
+        {
+          name:'矩形',
+          value:'rect'
+        },
+        {
+          name:'无',
+          value:'none'
         }
       ]
     }
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js b/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js
index ddada981..ac49dd87 100644
--- a/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js
+++ b/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js
@@ -1,8 +1,7 @@
 import { commonConfig, displayOption } from 'data-room-ui/js/config'
 // import Icon from 'data-room-ui/assets/images/bigScreenIcon/export'
 import cloneDeep from 'lodash/cloneDeep'
-import * as iconData from 'data-room-ui/assets/symbols/bigScreenIcon/iconfont.json'
-const iconNames = iconData.glyphs.map(item => item.name).sort((a, b) => a.localeCompare(b))
+import Icon from 'data-room-ui/assets/images/bigScreenIcon/export'
 export const settingConfig = {
   padding: [30, 30, 50, 80],
   legend: false,
@@ -106,7 +105,7 @@ export const dataConfig = {
 export const FlyMapData = {
   name: '飞线图',
   title: '飞线图',
-  icon: iconNames[5],
+  icon: Icon.getNameList()[18],
   className:
     'com.gccloud.dataroom.core.module.chart.components.ScreenFlyMapChart',
   w: 800,
diff --git a/data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg b/data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg
new file mode 100644
index 00000000..3c7b3b7a
--- /dev/null
+++ b/data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg
@@ -0,0 +1 @@
+<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1693358314038" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1590" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M822.67 721.43A10.84 10.84 0 0 1 811.84 711c-0.15-3.63-15.91-364.77-124.61-463.53-18.78-17.07-38.62-24.81-60.62-23.55-69.05 3.87-102.13 101.38-117.71 182.5-17.5 91.11-17.19 182.65-17.19 183.58a10.84 10.84 0 0 1-10.78 10.91h-0.06a10.84 10.84 0 0 1-10.87-10.8c-0.09-15.48-0.44-379.15 155.38-387.82 27.73-1.61 53.43 8.26 76.42 29.15 115.4 104.84 131.08 463.49 131.69 478.71a10.85 10.85 0 0 1-10.4 11.27z" fill="#0839FF" p-id="1591"></path><path d="M811.83 779.4c-84.43 0-155.76-34-155.76-74.24s71.33-74.24 155.76-74.24 155.76 34 155.76 74.24-71.33 74.24-155.76 74.24z" fill="#91AAFF" p-id="1592"></path><path d="M811.83 641.77c82.94 0 144.91 33.47 144.91 63.39s-62 63.39-144.91 63.39-144.92-33.47-144.92-63.39 62-63.39 144.92-63.39m0-21.69c-92 0-166.61 38.09-166.61 85.08s74.59 85.08 166.61 85.08 166.61-38.09 166.61-85.08-74.59-85.08-166.61-85.08z" fill="#0839FF" p-id="1593"></path><path d="M688 113.58C649.28 77 603.47 60.48 551.93 64.52 459 71.76 395.9 147 353.07 247.59a111.61 111.61 0 0 0-19.09 5.3C220.73 295 230.59 549.53 247.21 701.29 133 711 45.56 764.88 45.56 829.9c0 71.89 106.85 130.17 238.65 130.17S522.85 901.8 522.85 829.9c0-71.11-104.54-128.89-234.36-130.14 7-117.91 26.39-297.36 80-431.88a52.12 52.12 0 0 1 30.75 9.84c43.36 30.63 68 132.46 68.54 281.22C403.91 561.28 354 580.77 354 604.48c0 25.27 56.69 45.76 126.61 45.76s126.61-20.49 126.61-45.76c0-24.2-52-44-117.76-45.65C489 456.78 476.73 305.89 411.79 260a73.64 73.64 0 0 0-34.36-13.33C417 157.52 473.31 92.4 553.61 86.15c45.21-3.56 85.41 11 119.47 43.19C823.13 271.1 815.82 706 815.73 710.39a10.85 10.85 0 0 0 10.62 11.07 10.62 10.62 0 0 0 11.08-10.61c0.38-18.27 7.57-448.91-149.43-597.27z m-103.25 490.9c-7.23 8-43.12 24.07-104.11 24.07s-96.88-16.05-104.11-24.07c6.7-7.43 38.06-21.76 91.19-23.81 0 1.63 0 3.25-0.06 4.88l-0.06 4.75a10.85 10.85 0 1 0 21.69 0l0.05-4.43c0-1.75 0-3.53 0.07-5.33 55.66 1.46 88.47 16.32 95.34 23.94z m-83.6 225.42c0 58.8-99.35 108.47-216.95 108.47s-217-49.68-217-108.47c0-52.94 80.55-98.48 182.44-107 5.82 48.19 11.75 82.54 13.16 90.44 0 4.83 0 8.09 0.05 9.62a10.84 10.84 0 0 0 10.84 10.72h0.13a10.86 10.86 0 0 0 10.72-11c0-1.66-0.31-41.22 2.69-101.23 116.31 0.86 213.92 50.17 213.92 108.45zM267.19 684c-15.91-160.61-16-377.16 74.35-410.73l1.44-0.52c-49.6 130.83-68.59 295.96-75.79 411.25z" fill="#979797" p-id="1594"></path></svg>
\ No newline at end of file
diff --git a/data-room-ui/packages/js/store/mutations.js b/data-room-ui/packages/js/store/mutations.js
index bd192a85..60f7aeea 100644
--- a/data-room-ui/packages/js/store/mutations.js
+++ b/data-room-ui/packages/js/store/mutations.js
@@ -92,7 +92,7 @@ export default {
       { type: 'v', site: x || 0 }
     ]
   },
-  changeActiveItemConfig (state, config) {
+  changeActiveItemConfig(state, config) {
     state.activeItemConfig = cloneDeep(config)
   },
   // 新增一个组件

From 8baa97fbea811f3af5f5c3c034d34b96c9ea0b94 Mon Sep 17 00:00:00 2001
From: "hong.yang" <hong.yang@ustcinfo.com>
Date: Wed, 30 Aug 2023 14:24:23 +0800
Subject: [PATCH 11/13] =?UTF-8?q?fix:=20=E5=9C=B0=E5=9B=BE=E7=BB=84?=
 =?UTF-8?q?=E4=BB=B6=E6=96=B0=E5=A2=9E=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

地图组件新增配置
---
 .../core/module/chart/components/ScreenMapChart.java     | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java
index b0b3cefc..26c3af26 100644
--- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java
+++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java
@@ -80,6 +80,15 @@ public class ScreenMapChart extends Chart {
         @ApiModelProperty(notes = "值")
         private String value;
 
+        @ApiModelProperty(notes = "图形字体颜色")
+        private String fontGraphicColor;
+
+        @ApiModelProperty(notes = "图形字体大小")
+        private String fontSize;
+
+        @ApiModelProperty(notes = "是否开启下钻")
+        private Boolean down;
+
     }
 
 

From 875ad805f004b7dcfabc36a80a5bc2ed4913c00b Mon Sep 17 00:00:00 2001
From: "wu.jian2" <distantmtn@gmail.com>
Date: Wed, 30 Aug 2023 14:36:24 +0800
Subject: [PATCH 12/13] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E6=95=B0?=
 =?UTF-8?q?=E6=8D=AE=E9=9B=86=E5=BC=B9=E7=AA=97=E6=B7=BB=E5=8A=A0=E5=AF=B9?=
 =?UTF-8?q?=E5=BA=94=E6=95=B0=E6=8D=AE=E9=9B=86=E6=8F=8F=E8=BF=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../DataSetManagement/src/DatasetTypeDialog.vue | 15 +++++++++++----
 .../packages/DataSetManagement/src/index.vue    | 17 +++++++++--------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/data-room-ui/packages/DataSetManagement/src/DatasetTypeDialog.vue b/data-room-ui/packages/DataSetManagement/src/DatasetTypeDialog.vue
index 95a4e99b..ca03c023 100644
--- a/data-room-ui/packages/DataSetManagement/src/DatasetTypeDialog.vue
+++ b/data-room-ui/packages/DataSetManagement/src/DatasetTypeDialog.vue
@@ -26,7 +26,14 @@
               class="type-item"
               @click="openAddForm(dataset.datasetType,dataset.componentName)"
             >
-              {{ dataset.name }}
+              <span>
+                {{ dataset.name }}
+              </span>
+              <p>
+                <span class="description">
+                  {{ dataset.description }}
+                </span>
+              </p>
             </div>
           </el-card>
         </el-col>
@@ -49,6 +56,7 @@ export default {
     }
   },
   created () { },
+  mounted () { },
   methods: {
     // 选择新增类型
     openAddForm (type, componentName) {
@@ -62,17 +70,16 @@ export default {
 <style lang="scss" scoped>
 .type-item {
   height: 104px;
-  line-height: 90px;
   text-align: center;
   font-size: 16px;
   font-weight: 400;
   cursor: pointer;
   position: relative;
+  padding-top: 35px;
   color: var(--bs-el-text);
   p {
-    position: absolute;
     width: 100%;
-    bottom: 20px;
+    margin-top: 10px;
     font-size: 14px;
     line-height: 16px;
     color: #909399;
diff --git a/data-room-ui/packages/DataSetManagement/src/index.vue b/data-room-ui/packages/DataSetManagement/src/index.vue
index 9da78106..bd9eafae 100644
--- a/data-room-ui/packages/DataSetManagement/src/index.vue
+++ b/data-room-ui/packages/DataSetManagement/src/index.vue
@@ -546,15 +546,16 @@ export default {
       this.current = 1
       const list = [
         { name: '全部', datasetType: '' },
-        { name: '原始数据集', datasetType: 'original', componentName: 'OriginalEditForm' },
-        { name: '自助数据集', datasetType: 'custom', componentName: 'CustomEditForm' },
-        { name: '存储过程数据集', datasetType: 'storedProcedure', componentName: 'StoredProcedureEditForm' },
-        { name: 'JSON数据集', datasetType: 'json', componentName: 'JsonEditForm' },
-        { name: '脚本数据集', datasetType: 'script', componentName: 'ScriptEditForm' },
-        { name: 'JS数据集', datasetType: 'js', componentName: 'JsEditForm' },
-        { name: 'HTTP数据集', datasetType: 'http', componentName: 'HttpEditForm' }
+        { name: '原始数据集', datasetType: 'original', componentName: 'OriginalEditForm', description: '直接查询某个数据库表' },
+        { name: '自助数据集', datasetType: 'custom', componentName: 'CustomEditForm', description: '自定义SQL语句查询' },
+        { name: '存储过程数据集', datasetType: 'storedProcedure', componentName: 'StoredProcedureEditForm', description: '调用数据库存储过程查询' },
+        { name: 'JSON数据集', datasetType: 'json', componentName: 'JsonEditForm', description: '直接定义静态数据' },
+        { name: 'JS数据集', datasetType: 'js', componentName: 'JsEditForm', description: '编写JS代码进行动态模拟数据创建' },
+        { name: 'HTTP数据集', datasetType: 'http', componentName: 'HttpEditForm', description: '接入第三方HTTP服务查询' },
+        { name: '脚本数据集', datasetType: 'script', componentName: 'ScriptEditForm', description: '支持ES、Mongodb、国产化数据库、自定义Java代码查询' }
+
       ]
-      if (window.BS_CONFIG?.datasetTypeList && window.BS_CONFIG?.datasetTypeList?.length != 0) {
+      if (window.BS_CONFIG?.datasetTypeList && window.BS_CONFIG?.datasetTypeList?.length !== 0) {
         this.datasetTypeList = [{ name: '全部', datasetType: '' }, ...list.filter(item => window.BS_CONFIG?.datasetTypeList.findIndex(x => x === item.datasetType) !== -1)]
       } else {
         this.datasetTypeList = [

From f21661a3c6a07ba30d9f4efb9d64cea13d386c6f Mon Sep 17 00:00:00 2001
From: "liu.tao3" <liu.tao3@ustcinfo.com>
Date: Wed, 30 Aug 2023 14:51:36 +0800
Subject: [PATCH 13/13] =?UTF-8?q?feat:=E5=A4=A7=E5=B1=8F=E5=9C=B0=E5=9B=BE?=
 =?UTF-8?q?=E6=94=AF=E6=8C=81=E4=B8=8B=E9=92=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../packages/BasicComponents/FlyMap/index.vue |  3 +-
 .../BasicComponents/FlyMap/setting.vue        |  3 +-
 .../packages/BasicComponents/Map/index.vue    | 74 ++++++++++++++++++-
 .../packages/BasicComponents/Map/setting.vue  | 36 +++++++++
 .../BasicComponents/Map/settingConfig.js      | 10 ++-
 5 files changed, 119 insertions(+), 7 deletions(-)

diff --git a/data-room-ui/packages/BasicComponents/FlyMap/index.vue b/data-room-ui/packages/BasicComponents/FlyMap/index.vue
index 49dbbd49..50cb866f 100644
--- a/data-room-ui/packages/BasicComponents/FlyMap/index.vue
+++ b/data-room-ui/packages/BasicComponents/FlyMap/index.vue
@@ -100,8 +100,7 @@ export default {
           if(val.type==='move_in'){
             coord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
             fromCoord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
-          }
-          if(val.type==='move_out'){
+          }else{
             coord.push({name:val.to,value:[val.lat2,val.lng2,val.value],msg:{...val}})
             fromCoord.push({name:val.from,value:[val.lat1,val.lng1,val.value],msg:{...val}})
           }
diff --git a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
index 41eea263..ed96a6a4 100644
--- a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
+++ b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue
@@ -106,7 +106,7 @@
         >
            <el-input-number
             v-model="config.customize.fontSize"
-            placeholder="请输入轨迹大小"
+            placeholder="请输入字体大小"
             controls-position="right"
             :step="1"
           />
@@ -376,6 +376,7 @@ export default {
       } else if (this.config.customize.level === 'province') {
         this.getMapList()
         this.config.customize.dataMap = '安徽省.json'
+        this.config.customize.down=false
       }else{
         this.config.customize.down=false
       }
diff --git a/data-room-ui/packages/BasicComponents/Map/index.vue b/data-room-ui/packages/BasicComponents/Map/index.vue
index dddb8911..1bf49012 100644
--- a/data-room-ui/packages/BasicComponents/Map/index.vue
+++ b/data-room-ui/packages/BasicComponents/Map/index.vue
@@ -31,7 +31,8 @@ export default {
   data () {
     return {
       charts: null,
-      hasData: false
+      hasData: false,
+      level:''
     }
   },
   computed: {
@@ -94,8 +95,16 @@ export default {
       const option = {
         // 背景颜色
         backgroundColor: config.customize.backgroundColor,
+        graphic: [
+          ],
         geo: {
           map: config.customize.scope,
+          zlevel: 10,
+          show:true,
+          layoutCenter: ['50%', '50%'],
+          roam: true,
+          layoutSize: "100%",
+          zoom: 1,
           label: {
             // 通常状态下的样式
             normal: {
@@ -253,10 +262,73 @@ export default {
           }
         }
       }
+      if(config.customize.down){
+            // config?.customize?.graphic?.forEach((item,index)=>{
+            option.graphic.push({
+              type: "text",
+              left: `220px`,
+              top: "5%",
+              style: {
+                  text: '中国',
+                  font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
+                  fill: config.customize.fontGraphicColor,
+              },
+              onclick:async()=>{
+                this.level='country'
+                const index = option.graphic.findIndex(i => i.style.text === '中国');
+                // 点击元素之后的所有元素全部删除
+                option.graphic.splice(index + 1);
+                const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/country/中华人民共和国.json`
+                const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
+                option.geo.map = '中华人民共和国'
+                this.changeData({...config,customize:{...config.customize,level:'country',scope:'中国'}})
+                echarts.registerMap('中华人民共和国', map);
+                this.charts.setOption(option, true);
+
+              }
+            },)
+          // })
+          }
       const mapUrl = `${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${config.customize.level}/${config.customize.dataMap}`
       const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
       echarts.registerMap(config.customize.scope, map)
       this.charts.setOption(option)
+      this.charts.on('click',  async(params)=> {
+          const index = option.graphic.findIndex(i => i.style.text === params.name);
+          if(params.name=='' || index !== -1) return
+          if(config.customize.down===false||this.level==='province') return
+          const idx = option.graphic.length + 1;
+          option.graphic.push({
+            type: "text",
+            left: `${idx * 220}px`,
+            top: "5%",
+            style: {
+                text: params.name,
+                font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`,
+                fill: config.customize.fontGraphicColor,
+            },
+            onclick: async() => {
+                const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${params.name=='中华人民共和国'?'country':'province'}/${params.name}.json`
+                const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
+                // 利用函数的作用域,可以直接拿上面的name来用
+                const index = option.graphic.findIndex(i => i.style.text === params.name);
+                // 点击元素之后的所有元素全部删除
+                option.graphic.splice(index + 1);
+                // 很多操作重复了,你可以将公共部分抽离出来
+                option.geo.map = params.name;
+                this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}})
+                echarts.registerMap(params.name, map);
+                this.charts.setOption(option, true);
+            },
+        });
+          this.level='province'
+          const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/province/${params.name}.json`
+          const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true)
+          this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}})
+          option.geo.map = params.name
+          echarts.registerMap(params.name, map);
+          this.charts.setOption(option, true);
+          });
     }
   }
 }
diff --git a/data-room-ui/packages/BasicComponents/Map/setting.vue b/data-room-ui/packages/BasicComponents/Map/setting.vue
index dc9c9eae..244d5b13 100644
--- a/data-room-ui/packages/BasicComponents/Map/setting.vue
+++ b/data-room-ui/packages/BasicComponents/Map/setting.vue
@@ -74,6 +74,39 @@
             />
           </el-select>
         </el-form-item>
+        <el-form-item
+          v-if="config.customize.level == 'country'"
+          label="是否开启下钻"
+          label-width="100px"
+        >
+          <el-switch
+            v-model="config.customize.down"
+            class="bs-el-switch"
+            active-color="#007aff"
+          />
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.down"
+          label="头部字体颜色"
+          label-width="100px"
+        >
+          <ColorPicker
+            v-model="config.customize.fontGraphicColor"
+            :predefine-colors="predefineThemeColors"
+          />
+        </el-form-item>
+        <el-form-item
+          v-if="config.customize.down"
+          label="头部字体大小"
+          label-width="100px"
+        >
+           <el-input-number
+            v-model="config.customize.fontSize"
+            placeholder="请输入字体大小"
+            controls-position="right"
+            :step="1"
+          />
+        </el-form-item>
         <el-form-item
           label="地图背景色"
           label-width="100px"
@@ -280,6 +313,9 @@ export default {
         this.config.customize.dataMap = '中华人民共和国.json'
       } else if (this.config.customize.level === 'province') {
         this.config.customize.dataMap = '安徽省.json'
+        this.config.customize.down=false
+      }else{
+        this.config.customize.down=false
       }
     },
     delColor () {
diff --git a/data-room-ui/packages/BasicComponents/Map/settingConfig.js b/data-room-ui/packages/BasicComponents/Map/settingConfig.js
index c30917eb..a8c08eed 100644
--- a/data-room-ui/packages/BasicComponents/Map/settingConfig.js
+++ b/data-room-ui/packages/BasicComponents/Map/settingConfig.js
@@ -44,7 +44,7 @@ const customConfig = {
     // 是否显示文字
     mapName: true,
     // 地图背景色
-    backgroundColor: '#404a59',
+    backgroundColor: 'rgb(21, 26, 38)',
     // 是否打点
     scatter: true,
     // 悬浮框背景色
@@ -56,13 +56,17 @@ const customConfig = {
     // 打点图文字颜色
     scatterColor: '#fff',
     // 分割线颜色
-    mapLineColor: 'rgba(147, 235, 248, 1)',
+    mapLineColor: 'rgba(53, 86, 165, 1)',
+    fontGraphicColor: '#fff',
+    fontSize:'30',
+    // 是否开启下钻
+    down: false,
     // 地图级别
     level: 'country',
     // 范围
     scope: '中国',
     // 地图区域颜色
-    areaColor: '#007aff',
+    areaColor: 'rgba(31, 50, 121, 1)',
     // 是否开启筛选
     visual: false,
     // 筛选范围