Kaynağa Gözat

!80 update0.9.7.3
Merge pull request !80 from Foming/dev

Foming 3 yıl önce
ebeveyn
işleme
af27c6c173
33 değiştirilmiş dosya ile 3001 ekleme ve 1578 silme
  1. 3 1
      doc/docs/guide/briefUsing.md
  2. 16 6
      doc/docs/guide/charts.md
  3. BIN
      doc/docs/picture/charts/img_13.png
  4. BIN
      doc/docs/picture/charts/img_14.png
  5. BIN
      doc/docs/picture/charts/img_24.png
  6. BIN
      doc/docs/picture/charts/img_25.png
  7. 1 1
      report-core/src/main/assembly/bin/start.bat
  8. 7 0
      report-core/src/main/resources/db/migration/V1.0.20__add_dict_sourtar.sql
  9. 22 0
      report-ui/src/mixins/queryform.js
  10. 410 0
      report-ui/src/utils/china.js
  11. 368 360
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-airbubble-map.js
  12. 463 0
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-line-map.js
  13. 0 61
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-map.js
  14. 5 5
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-time.js
  15. 2 2
      report-ui/src/views/bigscreenDesigner/designer/tools/main.js
  16. 40 50
      report-ui/src/views/bigscreenDesigner/designer/widget/map/widgetAirBubbleMap.vue
  17. 552 0
      report-ui/src/views/bigscreenDesigner/designer/widget/map/widgetLineMap.vue
  18. 2 2
      report-ui/src/views/bigscreenDesigner/designer/widget/temp.vue
  19. 2 2
      report-ui/src/views/bigscreenDesigner/designer/widget/widget.vue
  20. 0 468
      report-ui/src/views/bigscreenDesigner/designer/widget/widgetMap.vue
  21. 5 5
      report-ui/src/views/bigscreenDesigner/designer/widget/widgetTime.vue
  22. 1 1
      report-ui/src/views/layout/components/Sidebar/index.vue
  23. 2 2
      report-ui/src/views/screenDesigner/components/temp.vue
  24. 2 2
      report-ui/src/views/screenDesigner/config/configs.js
  25. 35 35
      report-ui/src/views/screenDesigner/config/mapCharts/widget-airbubble-map.js
  26. 464 0
      report-ui/src/views/screenDesigner/config/mapCharts/widget-line-map.js
  27. 0 62
      report-ui/src/views/screenDesigner/config/mapCharts/widget-map.js
  28. 6 6
      report-ui/src/views/screenDesigner/config/texts/widget-time.js
  29. 2 2
      report-ui/src/views/screenDesigner/widget/index.vue
  30. 34 32
      report-ui/src/views/screenDesigner/widget/mapCharts/widgetAirBubbleMap.vue
  31. 552 0
      report-ui/src/views/screenDesigner/widget/mapCharts/widgetLineMap.vue
  32. 0 468
      report-ui/src/views/screenDesigner/widget/mapCharts/widgetMap.vue
  33. 5 5
      report-ui/src/views/screenDesigner/widget/texts/widgetTime.vue

+ 3 - 1
doc/docs/guide/briefUsing.md

@@ -6,4 +6,6 @@
 <a href='http://www.turingoal.com/'><img src="https://ajreport.beliefteam.cn/file/download/cda7bf68-376b-45dc-9a55-c52b21e4a8c8" width = "130" height = "50" /> </a>
 <a href='http://www.plian.net/'><img src="https://ajreport.beliefteam.cn/file/download/7838f2c2-fdce-4ca7-8373-14d13dcda5cc" width = "130" height = "50" /> </a>
 <a href='https://www.gykjweb.com/'><img src="https://ajreport.beliefteam.cn/file/download/d13b03f5-0c20-4878-9a79-f3c76b44bfd9" width = "130" height = "130" /> </a> <br>
-<a href='https://www.zjjcl.cn/'><img src="https://ajreport.beliefteam.cn/file/download/8df07663-60c9-4e32-a0f2-0ea7d5c46ff9" width = "130" height = "50" /> </a>
+<a href='https://www.zjjcl.cn/'><img src="https://ajreport.beliefteam.cn/file/download/8df07663-60c9-4e32-a0f2-0ea7d5c46ff9" width = "130" height = "50" /> </a>
+<a href='http://www.jiuyinkj.com/'><img src="https://ajreport.beliefteam.cn/file/download/5889f0e6-ba08-4990-ac89-eabfbb8af8bd" width = "130" height = "50" /> </a>
+<a href='http://www.yourongyun.cn/'><img src="https://ajreport.beliefteam.cn/file/download/90e15ed9-5594-4c14-b318-72aeb6816fb9" width = "130" height = "50" /> </a>

+ 16 - 6
doc/docs/guide/charts.md

@@ -122,10 +122,6 @@
 
 ![img7](../picture/charts/img_6.png) <br>
 
-## 中国地图
-
-迁徙图暂不支持动态数据 <br>
-
 ## 南丁格尔玫瑰图
 
 ![img71](../picture/charts/img_7.png) <br>
@@ -145,12 +141,26 @@
 
 和仪表盘数据格式保持一致。<br>
 
-## 气泡地图
+## 中国地图-路线图
+
+路线图的动态数据集,需要3个字段,“源端”代表起点,“目标端”代表终点,“数值”代表俩点之间的值
+![img24](../picture/charts/img_24.png) <br>
+
+### 数据格式
+
+可以参考静态数据,目前路线地图仅能显示“市”级别,注意地图数据名称要和地图底层数据名称保持一致,即完整的市名,可以看静态数据,如果和你提供的动态数据名称有差异,请参考源码自行修改 <br>
+![img25](../picture/charts/img_25.png) <br>
+
+## 中国地图-气泡图
 
 气泡地图是中国地图气泡样式展示形式 <br>
 气泡地图动态数据集,和饼图一样,对应字典值需要选择一个“Name”、“Value”,且name的字段值要和echarts图表里面的值能对应上,可参考静态数据 <br>
 ![img15](../picture/dashboard/img_15.png) <br>
 
+### 数据格式
+
+可参考静态数据,目前气泡地图仅能显示“省”级别,注意动态数据的名称要和地图底层数据名称保持一致,即完整的省名,可以看静态数据,如果和你提供的动态数据名称有差异,请参考源码自行修改 <br>
+
 ## 柱状堆叠图
 
 动态的数据集对应字典值需要选择一个“X轴”、“Y轴”、“柱状”,也就是说需要3个字段,不明白可以看看静态数据 <br>
@@ -219,4 +229,4 @@
 
 ![img23](../picture/charts/img_23.png) <br>
 
-**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**
+**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**

BIN
doc/docs/picture/charts/img_13.png


BIN
doc/docs/picture/charts/img_14.png


BIN
doc/docs/picture/charts/img_24.png


BIN
doc/docs/picture/charts/img_25.png


+ 1 - 1
report-core/src/main/assembly/bin/start.bat

@@ -38,5 +38,5 @@ IF "%JAVA_HOME%" == "" (
 	set JAVA_OPTS= -server -Xms1g -Xmx2g -Xmn256m -XX:PermSize=128m -Xss256k
 
 	rem 正式启动
-	%JAVA_HOME%\bin\java %JAVA_OPTS% -Xbootclasspath/a:%LIB_JARS% -jar -Dspring.config.location=%CONF_YML% %BIN_DIR%\lib\%BOOT_JAR%
+	"%JAVA_HOME%"\bin\java %JAVA_OPTS% -Xbootclasspath/a:%LIB_JARS% -jar -Dspring.config.location=%CONF_YML% %BIN_DIR%\lib\%BOOT_JAR%
 	pause

+ 7 - 0
report-core/src/main/resources/db/migration/V1.0.20__add_dict_sourtar.sql

@@ -0,0 +1,7 @@
+-- 新增源端目标端字典
+
+INSERT INTO `aj_report`.`gaea_dict`(`dict_name`, `dict_code`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('源端目标端属性', 'SOUTAR_PROPERTIES', '源端目标端属性', 'admin', NOW(), 'admin', NOW(), 1);
+
+INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SOUTAR_PROPERTIES', '源端', 'source', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);
+INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SOUTAR_PROPERTIES', '目标端', 'target', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);
+INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SOUTAR_PROPERTIES', '数值', 'value', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);

+ 22 - 0
report-ui/src/mixins/queryform.js

@@ -110,6 +110,7 @@ export default {
       // widge-table 表格(数据不要转)
       // widget-stackchart 堆叠图
       // widget-heatmap 热力图
+      // widget-mapline 中国地图-路线图
       const chartType = params.chartType
       if (
         chartType == "widget-barchart" ||
@@ -128,6 +129,8 @@ export default {
         return this.stackChartFn(params.chartProperties, data)
       } else if (chartType == "widget-coord") {
         return this.coordChartFn(params.chartProperties, data)
+      } else if (chartType == "widget-linemap") {
+        return this.linemapChartFn(params.chartProperties, data)
       } else {
         return data
       }
@@ -247,6 +250,25 @@ export default {
       ananysicData["series"] = series;
       return ananysicData;
     },
+    // 中国地图。路线图数据解析,适合source、target、value
+    linemapChartFn(chartProperties, data) {
+      const ananysicData = [];
+      for (let i = 0; i < data.length; i++) {
+        const obj = {};
+        for (const key in chartProperties) {
+          const value = chartProperties[key];
+          if (value === "source") {
+            obj["source"] = data[i][key];
+          } else if (value === "target") {
+            obj["target"] = data[i][key];
+          } else {
+            obj["value"] = data[i][key];
+          }
+        }
+        ananysicData.push(obj);
+      }
+      return ananysicData;
+    },
     setUnique(arr) {
       let newArr = [];
       arr.forEach(item => {

+ 410 - 0
report-ui/src/utils/china.js

@@ -0,0 +1,410 @@
+export const conversionProvince = {
+  新疆维吾尔自治区: [87.6285, 43.7933],
+  湖北省: [114.3415, 30.5462],
+  辽宁省: [123.435, 41.8367],
+  广东省: [113.2668, 23.1333],
+  内蒙古自治区: [111.7652, 40.8182],
+  黑龙江省: [126.6619, 45.7422],
+  河南省: [113.753, 34.767],
+  山东省: [117.0207, 36.6702],
+  陕西省: [108.9539, 34.2666],
+  贵州省: [106.7052, 26.6003],
+  上海市: [121.4648, 31.2891],
+  重庆市: [107.7539, 30.1904],
+  西藏自治区: [91.1174, 29.6486],
+  安徽省: [117.3301, 31.7345],
+  福建省: [119.2961, 26.101],
+  湖南省: [112.9829, 28.116],
+  海南省: [110.3487, 20.0186],
+  江苏省: [118.7635, 32.0613],
+  青海省: [101.7804, 36.6225],
+  广西壮族自治区: [108.3275, 22.8166],
+  宁夏回族自治区: [106.2588, 38.4722],
+  浙江省: [120.1525, 30.2666],
+  河北省: [114.5303, 38.0377],
+  香港特别行政区: [114.1733, 22.32],
+  台湾省: [121.509, 25.0443],
+  澳门特别行政区: [113.549, 22.1989],
+  甘肃省: [103.8267, 36.0606],
+  四川省: [104.0764, 30.6516],
+  天津市: [117.2015, 39.0853],
+  江西省: [115.8165, 28.6372],
+  云南省: [102.7093, 25.0464],
+  山西省: [112.5787, 37.8139],
+  北京市: [116.4073, 39.9041],
+  吉林省: [125.3258, 43.8969]
+}
+
+export const conversionCity = {
+  铁门关市: [85.6702, 41.8629],
+  双河市: [82.3536, 44.8405],
+  北屯市: [87.8344, 47.3267],
+  博尔塔拉蒙古自治州: [82.0663, 44.906],
+  昌吉回族自治州: [87.3089, 44.011],
+  阿勒泰地区: [88.1412, 47.8449],
+  塔城地区: [82.9803, 46.7453],
+  可克达拉市: [80.9941, 43.9403],
+  昆玉市: [79.2701, 37.2153],
+  石河子市: [86.0803, 44.3053],
+  和田地区: [79.9216, 37.1144],
+  五家渠市: [87.5428, 44.1664],
+  巴音郭楞蒙古自治州: [86.1452, 41.7641],
+  伊犁哈萨克自治州: [81.3236, 43.9171],
+  哈密市: [93.515, 42.8193],
+  喀什地区: [75.9897, 39.4704],
+  阿克苏地区: [80.265, 41.1707],
+  克孜勒苏柯尔克孜自治州: [76.1673, 39.7147],
+  阿拉尔市: [81.2805, 40.5472],
+  图木舒克市: [79.0749, 39.8677],
+  克拉玛依市: [84.8892, 45.5777],
+  胡杨河市: [84.8275, 44.6928],
+  乌鲁木齐市: [87.6168, 43.8253],
+  吐鲁番市: [89.1903, 42.9507],
+  襄阳市: [112.1217, 32.0101],
+  十堰市: [110.7989, 32.629],
+  宜昌市: [111.2869, 30.6921],
+  武汉市: [114.3045, 30.5933],
+  荆门市: [112.1990, 31.0354],
+  潜江市: [112.9002, 30.4019],
+  天门市: [113.1665, 30.6637],
+  咸宁市: [114.3226, 29.8413],
+  仙桃市: [113.4429, 30.3284],
+  孝感市: [113.9569, 30.9183],
+  黄冈市: [114.8724, 30.4537],
+  荆州市: [112.2414, 30.3362],
+  恩施土家族苗族自治州: [109.488, 30.2721],
+  神农架林区: [110.6758, 31.7451],
+  随州市: [113.3823, 31.6902],
+  黄石市: [115.0389, 30.201],
+  鄂州市: [114.8949, 30.3914],
+  锦州市: [121.1268, 41.0961],
+  大连市: [121.6147, 38.9139],
+  营口市: [122.2191, 40.625],
+  葫芦岛市: [120.8367, 40.7109],
+  抚顺市: [123.957, 41.88131],
+  沈阳市: [123.4646, 41.6775],
+  丹东市: [124.3544, 40.0006],
+  铁岭市: [123.726, 42.2237],
+  阜新市: [121.670, 42.022],
+  本溪市: [123.6849, 41.4868],
+  鞍山市: [122.9941, 41.1082],
+  辽阳市: [123.2396, 41.2673],
+  盘锦市: [122.1707, 40.7195],
+  朝阳市: [120.4888, 41.6018],
+  汕头市: [116.6819, 23.3541],
+  佛山市: [113.1215, 23.0213],
+  肇庆市: [112.4652, 23.0477],
+  惠州市: [114.4155, 23.1123],
+  深圳市: [114.0579, 22.5435],
+  珠海市: [113.5768, 22.2716],
+  湛江市: [110.3575, 21.2701],
+  揭阳市: [116.3727, 23.5509],
+  阳江市: [111.9834, 21.8568],
+  潮州市: [116.6219, 23.6576],
+  河源市: [114.7002, 23.7442],
+  云浮市: [112.0445, 22.9151],
+  汕尾市: [115.3755, 22.7872],
+  韶关市: [113.5973, 24.8109],
+  江门市: [113.0815, 22.5789],
+  茂名市: [110.9255, 21.6627],
+  清远市: [113.056, 23.682],
+  梅州市: [116.1220, 24.2888],
+  广州市: [113.2644, 23.13],
+  中山市: [113.3925, 22.517],
+  东莞市: [113.7518, 23.021],
+  包头市: [109.9531, 40.6213],
+  呼伦贝尔市: [119.7784, 49.1665],
+  巴彦淖尔市: [107.3877, 40.7429],
+  乌海市: [106.7941, 39.655],
+  阿拉善盟: [105.7291, 38.8515],
+  通辽市: [122.2433, 43.6535],
+  兴安盟: [122.0377, 46.0823],
+  锡林郭勒盟: [116.0473, 43.9332],
+  呼和浩特市: [111.7488, 40.8421],
+  乌兰察布市: [113.1322, 40.9945],
+  鄂尔多斯市: [109.7824, 39.6087],
+  赤峰市: [118.8876, 42.2568],
+  鹤岗市: [130.2976, 47.3506],
+  大兴安岭地区: [124.1178, 50.4112],
+  七台河市: [131.003, 45.7711],
+  哈尔滨市: [126.535, 45.8029],
+  佳木斯市: [130.3189, 46.8],
+  双鸭山市: [131.1415, 46.6761],
+  黑河市: [127.5282, 50.2448],
+  牡丹江市: [129.6329, 44.5514],
+  齐齐哈尔市: [123.9181, 47.3548],
+  鸡西市: [130.9693, 45.295],
+  大庆市: [125.104, 46.5894],
+  绥化市: [126.9687, 46.6541],
+  伊春市: [128.8408, 47.7283],
+  洛阳市: [112.4538, 34.6197],
+  三门峡市: [111.2004, 34.7731],
+  漯河市: [114.0166, 33.5803],
+  许昌市: [113.852, 34.0373],
+  南阳市: [112.5285, 32.9902],
+  信阳市: [114.091, 32.1486],
+  济源市: [112.6023, 35.069],
+  濮阳市: [115.0292, 35.7627],
+  鹤壁市: [114.2973, 35.7483],
+  郑州市: [113.6253, 34.7463],
+  焦作市: [113.2419, 35.2157],
+  安阳市: [114.3924, 36.0987],
+  开封市: [114.3142, 34.798],
+  商丘市: [115.6563, 34.4151],
+  新乡市: [113.9267, 35.3035],
+  驻马店市: [114.0219, 33.014],
+  周口市: [114.7012, 33.6346],
+  平顶山市: [113.1925, 33.7665],
+  威海市: [122.1205, 37.5133],
+  淄博市: [118.0549, 36.8137],
+  青岛市: [120.3826, 36.0669],
+  烟台市: [121.4477, 37.4645],
+  聊城市: [115.9852, 36.4558],
+  东营市: [118.6746, 37.4339],
+  滨州市: [117.9707, 37.3826],
+  日照市: [119.5268, 35.4169],
+  潍坊市: [119.1617, 36.7076],
+  济南市: [117.1201, 36.652],
+  泰安市: [117.0869, 36.2017],
+  枣庄市: [117.3237, 34.8108],
+  德州市: [116.3592, 37.4364],
+  济宁市: [116.5871, 35.4151],
+  临沂市: [118.3564, 35.1037],
+  菏泽市: [115.4796, 35.2343],
+  汉中市: [107.0231, 33.0663],
+  商洛市: [109.9186, 33.8733],
+  榆林市: [109.7341, 38.2857],
+  铜川市: [108.9451, 34.8971],
+  延安市: [109.4946, 36.6501],
+  西安市: [108.9396, 34.3432],
+  宝鸡市: [107.2376, 34.3628],
+  安康市: [109.029, 32.6854],
+  咸阳市: [108.7088, 34.3298],
+  渭南市: [109.4709, 34.5206],
+  黔东南苗族侗族自治州: [107.9828, 26.5837],
+  遵义市: [107.0319, 27.7219],
+  六盘水市: [104.8303, 26.5925],
+  铜仁市: [109.1895, 27.7315],
+  黔西南布依族苗族自治州: [104.9064, 25.0877],
+  安顺市: [105.9476, 26.2531],
+  黔南布依族苗族自治州: [107.5223, 26.2531],
+  毕节市: [105.2915, 27.2836],
+  贵阳市: [106.6282, 26.6466],
+  上海市: [121.4726, 31.2317],
+  重庆市: [108.1702, 29.2919],
+  林芝市: [94.3614, 29.6487],
+  昌都市: [97.1704, 31.1428],
+  那曲市: [92.0515, 31.4779],
+  拉萨市: [91.1719, 29.6534],
+  阿里地区: [80.1057, 32.5009],
+  山南市: [91.7714, 29.2377],
+  日喀则市: [88.8804, 29.2668],
+  马鞍山市: [118.506, 31.6687],
+  阜阳市: [115.8142, 32.891],
+  铜陵市: [117.8112, 30.9452],
+  池州市: [117.4956, 30.6742],
+  黄山市: [118.3376, 29.7148],
+  安庆市: [117.1153, 30.5318],
+  淮南市: [117.0186, 32.5853],
+  蚌埠市: [117.3885, 32.9168],
+  亳州市: [115.7785, 33.8462],
+  宣城市: [118.7591, 30.9392],
+  六安市: [116.5197, 31.7358],
+  芜湖市: [118.4330, 31.3526],
+  宿州市: [116.9641, 33.6472],
+  淮北市: [116.7983, 33.9562],
+  合肥市: [117.2272, 31.8205],
+  滁州市: [118.3334, 32.2559],
+  福州市: [119.2964, 26.0742],
+  宁德市: [119.5477, 26.6662],
+  莆田市: [119.0076, 25.4542],
+  南平市: [118.0813, 27.3828],
+  厦门市: [118.0889, 24.4796],
+  泉州市: [118.6757, 24.8744],
+  漳州市: [117.6472, 24.5152],
+  三明市: [117.6389, 26.2634],
+  龙岩市: [117.0173, 25.0758],
+  岳阳市: [113.1289, 29.3564],
+  湘西土家族苗族自治州: [109.7374, 28.3125],
+  长沙市: [112.9388, 28.2283],
+  常德市: [111.699, 29.0314],
+  张家界市: [110.4788, 29.1173],
+  怀化市: [110.0015, 27.5698],
+  湘潭市: [112.9454, 27.8313],
+  株洲市: [113.1327, 27.8288],
+  邵阳市: [111.4678, 27.2395],
+  郴州市: [113.0155, 25.7701],
+  娄底市: [111.9944, 27.6998],
+  益阳市: [112.3559, 28.5548],
+  衡阳市: [112.572, 26.8942],
+  永州市: [111.6134, 26.4198],
+  临高县: [109.6905, 19.9120],
+  定安县: [110.3580, 19.6812],
+  琼海市: [110.4745, 19.2591],
+  陵水黎族自治县: [110.0375, 18.506],
+  白沙黎族自治县: [109.4429, 19.2216],
+  屯昌县: [110.1016, 19.3516],
+  东方市: [108.6518, 19.0951],
+  乐东黎族自治县: [109.1733, 18.75],
+  昌江黎族自治县: [109.0557, 19.2981],
+  万宁市: [110.3926, 18.7936],
+  琼中黎族苗族自治县: [109.8384, 19.0332],
+  三沙市: [112.3386, 16.831],
+  澄迈县: [110.0074, 19.7388],
+  文昌市: [110.7974, 19.5442],
+  三亚市: [109.5117, 18.2528],
+  儋州市: [109.5808, 19.5209],
+  海口市: [110.1984, 20.0458],
+  保亭黎族苗族自治县: [109.7002, 18.6403],
+  五指山市: [109.5167, 18.7748],
+  连云港市: [119.2214, 34.5966],
+  南通市: [120.8945, 31.9812],
+  宿迁市: [118.2752, 33.9631],
+  南京市: [118.7966, 32.0593],
+  淮安市: [119.1131, 33.5514],
+  常州市: [119.9740, 31.8113],
+  镇江市: [119.4244, 32.1881],
+  泰州市: [119.9228, 32.4566],
+  盐城市: [120.1626, 33.3481],
+  扬州市: [119.4128, 32.3944],
+  无锡市: [120.3118, 31.491],
+  苏州市: [120.5852, 31.2997],
+  徐州市: [117.2837, 34.2042],
+  海西蒙古族藏族自治州: [97.3319, 37.3481],
+  海南藏族自治州: [100.6226, 36.2963],
+  海东市: [102.4106, 36.4734],
+  玉树藏族自治州: [97.0062, 33.0063],
+  黄南藏族自治州: [102.0153, 35.5193],
+  果洛藏族自治州: [100.2451, 34.4721],
+  西宁市: [101.7777, 36.6166],
+  海北藏族自治州: [100.9009, 36.9546],
+  柳州市: [109.4280, 24.3264],
+  钦州市: [108.6543, 21.9808],
+  北海市: [109.1202, 21.4813],
+  百色市: [106.6186, 23.903],
+  梧州市: [111.279, 23.4767],
+  桂林市: [110.1797, 25.2356],
+  贺州市: [111.5672, 24.4041],
+  来宾市: [109.2212, 23.7501],
+  河池市: [108.0852, 24.6929],
+  玉林市: [110.1809, 22.654],
+  南宁市: [108.3664, 22.8177],
+  崇左市: [107.3649, 22.3771],
+  贵港市: [109.5989, 23.1118],
+  防城港市: [108.3546, 21.6867],
+  固原市: [106.2426, 36.0162],
+  中卫市: [105.1967, 37.5001],
+  石嘴山市: [106.3827, 38.9846],
+  银川市: [106.2309, 38.4877],
+  吴忠市: [106.1986, 37.9977],
+  宁波市: [121.6245, 29.8602],
+  温州市: [120.6992, 27.9938],
+  嘉兴市: [120.7556, 30.7468],
+  舟山市: [122.2073, 29.9855],
+  台州市: [121.4207, 28.6557],
+  丽水市: [119.9232, 28.4676],
+  金华市: [119.6472, 29.0791],
+  衢州市: [118.8593, 28.9702],
+  湖州市: [120.0868, 30.8941],
+  杭州市: [120.2107, 30.2460],
+  绍兴市: [120.5828, 30.0515],
+  唐山市: [118.1801, 39.6306],
+  秦皇岛市: [119.5202, 39.8882],
+  邯郸市: [114.5391, 36.6258],
+  廊坊市: [116.6835, 39.5383],
+  沧州市: [116.8387, 38.3046],
+  邢台市: [114.4974, 37.0602],
+  衡水市: [115.6689, 37.7393],
+  张家口市: [114.8858, 40.7689],
+  石家庄市: [114.5149, 38.0420],
+  保定市: [115.4645, 38.8744],
+  承德市: [117.9627, 40.9529],
+  香港: [114.1733, 22.32],
+  澳门: [113.549, 22.1989],
+  嘉峪关市: [98.2882, 39.7732],
+  酒泉市: [98.4943, 39.7334],
+  兰州市: [103.8342, 36.0607],
+  金昌市: [102.1879, 38.5214],
+  白银市: [104.1388, 36.5451],
+  平凉市: [106.6649, 35.5424],
+  张掖市: [100.4498, 38.9247],
+  庆阳市: [107.6434, 35.7094],
+  武威市: [102.6378, 37.9289],
+  甘南藏族自治州: [102.9117, 34.9832],
+  临夏回族自治州: [103.2103, 35.6017],
+  定西市: [104.5923, 35.6079],
+  天水市: [105.7248, 34.5815],
+  陇南市: [104.9602, 33.3701],
+  广元市: [105.844, 32.4357],
+  南充市: [106.1105, 30.8372],
+  绵阳市: [104.6791, 31.4676],
+  巴中市: [106.7475, 31.8678],
+  德阳市: [104.3977, 31.1274],
+  成都市: [104.0663, 30.5729],
+  内江市: [105.0579, 29.5802],
+  自贡市: [104.7793, 29.3392],
+  广安市: [106.6326, 30.4563],
+  资阳市: [104.6272, 30.1292],
+  达州市: [107.4677, 31.2092],
+  遂宁市: [105.5926, 30.5326],
+  乐山市: [103.7660, 29.5522],
+  泸州市: [105.4418, 28.8709],
+  眉山市: [103.8484, 30.0771],
+  宜宾市: [104.6428, 28.7523],
+  凉山彝族自治州: [102.2677, 27.8813],
+  攀枝花市: [101.7184, 26.5824],
+  甘孜藏族自治州: [101.9623, 30.0495],
+  阿坝藏族羌族自治州: [102.2245, 31.8994],
+  雅安市: [103.0415, 30.0099],
+  天津城区: [117.1901, 39.1255],
+  赣州市: [114.9334, 25.8311],
+  景德镇市: [117.1848, 29.2744],
+  萍乡市: [113.8871, 27.6587],
+  新余市: [114.9166, 27.8185],
+  吉安市: [114.9668, 27.0912],
+  上饶市: [117.9430, 28.4551],
+  南昌市: [115.8579, 28.6829],
+  抚州市: [116.3580, 27.9489],
+  鹰潭市: [117.0395, 28.2720],
+  九江市: [115.95356, 29.661],
+  宜春市: [114.4168, 27.8162],
+  曲靖市: [103.7962, 25.4908],
+  昭通市: [103.7170, 27.3381],
+  红河哈尼族彝族自治州: [103.3748, 23.3631],
+  怒江傈僳族自治州: [98.8566, 25.8175],
+  西双版纳傣族自治州: [100.797, 22.009],
+  丽江市: [100.2259, 26.8551],
+  文山壮族苗族自治州: [104.2156, 23.4009],
+  玉溪市: [102.5266, 24.3467],
+  普洱市: [100.9660, 22.8252],
+  保山市: [99.1614, 25.112],
+  大理白族自治州: [100.2676, 25.6065],
+  楚雄彝族自治州: [101.5283, 25.0456],
+  迪庆藏族自治州: [99.7021, 27.8191],
+  临沧市: [100.0888, 23.8841],
+  昆明市: [102.8336, 24.8814],
+  德宏傣族景颇族自治州: [98.5856, 24.4331],
+  太原市: [112.5496, 37.8704],
+  阳泉市: [113.5804, 37.8570],
+  吕梁市: [111.1445, 37.5189],
+  晋中市: [112.7526, 37.688],
+  长治市: [113.1173, 36.1951],
+  临汾市: [111.5193, 36.0885],
+  运城市: [111.0070, 35.0266],
+  忻州市: [112.7341, 38.4159],
+  朔州市: [112.4329, 39.3317],
+  大同市: [113.3667, 40.0971],
+  晋城市: [112.8520, 35.4913],
+  北京市: [116.4551, 40.2539],
+  松原市: [124.8253, 45.1419],
+  长春市: [125.3236, 43.8169],
+  吉林市: [126.5497, 43.8381],
+  白城市: [122.8381, 45.6201],
+  辽源市: [125.1446, 42.8879],
+  四平市: [124.3505, 43.1667],
+  延边朝鲜族自治州: [129.4706, 42.9094],
+  白山市: [126.4142, 41.9441],
+  通化市: [125.9397, 41.7283]
+}
+
+

+ 368 - 360
report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-airbubble-map.js

@@ -1,382 +1,390 @@
 /*
  * @Descripttion: 气泡地图json
- * @version: 
+ * @version:
  * @Author: qianlishi
  * @Date: 2021-08-29 07:35:32
  * @LastEditors: qianlishi
  * @LastEditTime: 2021-09-28 14:10:01
  */
-export const widgetAirbubbleMap =   {
-    code: 'widgetAirBubbleMap',
-    type: 'chart',
-    label: '气泡地图',
-    icon: 'iconzhongguoditu',
-    options: {
-      // 配置
-      setup: [
+export const widgetAirbubbleMap = {
+  code: 'widgetAirBubbleMap',
+  type: 'chart',
+  label: '气泡地图',
+  icon: 'iconzhongguoditu',
+  options: {
+    // 配置
+    setup: [
+      {
+        type: 'el-input-text',
+        label: '图层名称',
+        name: 'layerName',
+        required: false,
+        placeholder: '',
+        value: '中国地图-气泡图',
+      },
+      {
+        type: 'vue-color',
+        label: '背景颜色',
+        name: 'background',
+        required: false,
+        placeholder: '',
+        value: ''
+      },
+      [
         {
-          type: 'el-input-text',
-          label: '图层名称',
-          name: 'layerName',
-          required: false,
-          placeholder: '',
-          value: '气泡地图',
-        },
-        {
-          type: 'vue-color',
-          label: '背景颜色',
-          name: 'background',
-          required: false,
-          placeholder: '',
-          value: '#0F1C3C'
-        },
-        [
-          {
-            name: '标题设置',
-            list: [
-              {
-                type: 'el-switch',
-                label: '标题',
-                name: 'isNoTitle',
-                required: false,
-                placeholder: '',
-                value: true
-              },
-              {
-                type: 'el-input-text',
-                label: '标题',
-                name: 'titleText',
-                required: false,
-                placeholder: '',
-                value: ''
-              },
-              {
-                type: 'vue-color',
-                label: '字体颜色',
-                name: 'textColor',
-                required: false,
-                placeholder: '',
-                value: '#fff'
-              },
-              {
-                type: 'el-select',
-                label: '字体粗细',
-                name: 'textFontWeight',
-                required: false,
-                placeholder: '',
-                selectOptions: [
-                  {code: 'normal', name: '正常'},
-                  {code: 'bold', name: '粗体'},
-                  {code: 'bolder', name: '特粗体'},
-                  {code: 'lighter', name: '细体'}
-                ],
-                value: 'normal'
-              },
-              {
-                type: 'el-input-number',
-                label: '字体大小',
-                name: 'textFontSize',
-                required: false,
-                placeholder: '',
-                value: 20
-              },
-              {
-                type: 'el-select',
-                label: '字体位置',
-                name: 'textAlign',
-                required: false,
-                placeholder: '',
-                selectOptions: [
-                  {code: 'center', name: '居中'},
-                  {code: 'left', name: '左对齐'},
-                  {code: 'right', name: '右对齐'},
-                ],
-                value: 'left'
-              },
-              {
-                type: 'el-input-text',
-                label: '副标题',
-                name: 'subText',
-                required: false,
-                placeholder: '',
-                value: ''
-              },
-              {
-                type: 'vue-color',
-                label: '字体颜色',
-                name: 'subTextColor',
-                required: false,
-                placeholder: '',
-                value: ''
-              },
-              {
-                type: 'el-select',
-                label: '字体粗细',
-                name: 'subTextFontWeight',
-                required: false,
-                placeholder: '',
-                selectOptions: [
-                  {code: 'normal', name: '正常'},
-                  {code: 'bold', name: '粗体'},
-                  {code: 'bolder', name: '特粗体'},
-                  {code: 'lighter', name: '细体'}
-                ],
-                value: 'normal'
-              },
-              {
-                type: 'el-input-number',
-                label: '字体大小',
-                name: 'subTextFontSize',
-                required: false,
-                placeholder: '',
-                value: 12
-              },
-            ],
-          },
-          {
-            name: '字体设置',
-            list: [
-              {
-                type: 'el-input-number',
-                label: '文字大小',
-                name: 'fontTextSize',
-                required: false,
-                placeholder: '',
-                value: 15,
-              },
-              {
-                type: 'vue-color',
-                label: '文字颜色',
-                name: 'fontTextColor',
-                required: false,
-                placeholder: '',
-                value: '#D4EEFF'
-              },
-              {
-                type: 'el-select',
-                label: '文字粗细',
-                name: 'fontTextWeight',
-                required: false,
-                placeholder: '',
-                selectOptions: [
-                  {code: 'normal', name: '正常'},
-                  {code: 'bold', name: '粗体'},
-                  {code: 'bolder', name: '特粗体'},
-                  {code: 'lighter', name: '细体'}
-                ],
-                value: 'normal'
-              },
-              {
-                type: 'el-input-number',
-                label: '数值大小',
-                name: 'fontDataSize',
-                required: false,
-                placeholder: '',
-                value: 15,
-              },
-              {
-                type: 'vue-color',
-                label: '数值颜色',
-                name: 'fontDataColor',
-                required: false,
-                placeholder: '',
-                value: '#D4EEFF'
-              },
-              {
-                type: 'el-select',
-                label: '数值粗细',
-                name: 'fontDataWeight',
-                required: false,
-                placeholder: '',
-                selectOptions: [
-                  {code: 'normal', name: '正常'},
-                  {code: 'bold', name: '粗体'},
-                  {code: 'bolder', name: '特粗体'},
-                  {code: 'lighter', name: '细体'}
-                ],
-                value: 'normal'
-              },
-            ],
-          },
-          {
-            name: '气泡设置',
-            list: [
-              {
-                type: 'el-input-number',
-                label: '最小半径',
-                name: 'fontminSize4Pin',
-                required: false,
-                placeholder: '',
-                value: 20,
-              },
-              {
-                type: 'el-input-number',
-                label: '最大半径',
-                name: 'fontmaxSize4Pin',
-                required: false,
-                placeholder: '',
-                value: 100,
-              },
-              /*{
-                type: 'vue-color',
-                label: '气泡颜色',
-                name: 'fontPieColor',
-                required: false,
-                placeholder: '',
-                value: ''
-              },*/
-            ],
-          },
-          {
-            name: '地图块颜色',
-            list: [
-              {
-                type: 'vue-color',
-                label: '0%处颜色',
-                name: 'font0PreColor',
-                required: false,
-                placeholder: '',
-                value: '#073684'
-              },
-              {
-                type: 'vue-color',
-                label: '100%颜色',
-                name: 'font100PreColor',
-                required: false,
-                placeholder: '',
-                value: '#061E3D'
-              },
-              {
-                type: 'vue-color',
-                label: '高亮渐变色',
-                name: 'fontHighlightColor',
-                required: false,
-                placeholder: '',
-                value: '#2B91B7'
-              },
-            ],
-          },
-        ],
-      ],
-      data: [
-        {
-          type: 'el-radio-group',
-          label: '数据类型',
-          name: 'dataType',
-          require: false,
-          placeholder: '',
-          selectValue: true,
-          selectOptions: [
+          name: '标题设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '标题',
+              name: 'isNoTitle',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-text',
+              label: '标题',
+              name: 'titleText',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
             {
-              code: 'staticData',
-              name: '静态数据',
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'textColor',
+              required: false,
+              placeholder: '',
+              value: '#fff'
             },
             {
-              code: 'dynamicData',
-              name: '动态数据',
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'textFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体大小',
+              name: 'textFontSize',
+              required: false,
+              placeholder: '',
+              value: 20
+            },
+            {
+              type: 'el-select',
+              label: '字体位置',
+              name: 'textAlign',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'left'
+            },
+            {
+              type: 'el-input-text',
+              label: '副标题',
+              name: 'subText',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'subTextColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'subTextFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体大小',
+              name: 'subTextFontSize',
+              required: false,
+              placeholder: '',
+              value: 12
             },
           ],
-          value: 'staticData',
         },
         {
-          type: 'el-input-number',
-          label: '刷新时间(毫秒)',
-          name: 'refreshTime',
-          relactiveDom: 'dataType',
-          relactiveDomValue: 'dynamicData',
-          value: 5000
+          name: '地图设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '文字显示',
+              name: 'isShowMap',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-number',
+              label: '文字大小',
+              name: 'fontTextSize',
+              required: false,
+              placeholder: '',
+              value: 15,
+            },
+            {
+              type: 'vue-color',
+              label: '文字颜色',
+              name: 'fontTextColor',
+              required: false,
+              placeholder: '',
+              value: '#D4EEFF'
+            },
+            {
+              type: 'el-select',
+              label: '文字粗细',
+              name: 'fontTextWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '数值大小',
+              name: 'fontDataSize',
+              required: false,
+              placeholder: '',
+              value: 15,
+            },
+            {
+              type: 'vue-color',
+              label: '数值颜色',
+              name: 'fontDataColor',
+              required: false,
+              placeholder: '',
+              value: '#D4EEFF'
+            },
+            {
+              type: 'el-select',
+              label: '数值粗细',
+              name: 'fontDataWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+          ],
         },
         {
-          type: 'el-button',
-          label: '静态数据',
-          name: 'staticData',
-          required: false,
-          placeholder: '',
-          relactiveDom: 'dataType',
-          relactiveDomValue: 'staticData',
-          value: [
-            {"name":"南海诸岛","value":1},
-            {"name":"北京","value":524},
-            {"name":"天津","value":14},
-            {"name":"上海","value":150},
-            {"name":"重庆","value":75},
-            {"name":"河北","value":13},
-            {"name":"河南","value":83},
-            {"name":"云南","value":11},
-            {"name":"辽宁","value":19},
-            {"name":"黑龙江","value":15},
-            {"name":"湖南","value":69},
-            {"name":"安徽","value":260},
-            {"name":"山东","value":39},
-            {"name":"新疆","value":4},
-            {"name":"江苏","value":31},
-            {"name":"浙江","value":104},
-            {"name":"江西","value":36},
-            {"name":"湖北","value":1052},
-            {"name":"广西","value":33},
-            {"name":"甘肃","value":347},
-            {"name":"山西","value":8},
-            {"name":"内蒙古","value":157},
-            {"name":"陕西","value":22},
-            {"name":"吉林","value":4},
-            {"name":"福建","value":36},
-            {"name":"贵州","value":39},
-            {"name":"广东","value":996},
-            {"name":"青海","value":27},
-            {"name":"西藏","value":31},
-            {"name":"四川","value":46},
-            {"name":"宁夏","value":16},
-            {"name":"海南","value":22},
-            {"name":"台湾","value":6},
-            {"name":"香港","value":2},
-            {"name":"澳门","value":9}],
+          name: '气泡设置',
+          list: [
+            {
+              type: 'el-input-number',
+              label: '最小半径',
+              name: 'fontminSize4Pin',
+              required: false,
+              placeholder: '',
+              value: 20,
+            },
+            {
+              type: 'el-input-number',
+              label: '最大半径',
+              name: 'fontmaxSize4Pin',
+              required: false,
+              placeholder: '',
+              value: 100,
+            },
+            /*{
+              type: 'vue-color',
+              label: '气泡颜色',
+              name: 'fontPieColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },*/
+          ],
         },
         {
-          type: 'dycustComponents',
-          label: '',
-          name: 'dynamicData',
-          required: false,
-          placeholder: '',
-          relactiveDom: 'dataType',
-          chartType: 'widget-piechart',
-          dictKey: 'MAP_PROPERTIES',
-          relactiveDomValue: 'dynamicData',
-          value: '',
+          name: '地图块颜色',
+          list: [
+            {
+              type: 'vue-color',
+              label: '0%处颜色',
+              name: 'font0PreColor',
+              required: false,
+              placeholder: '',
+              value: '#073684'
+            },
+            {
+              type: 'vue-color',
+              label: '100%颜色',
+              name: 'font100PreColor',
+              required: false,
+              placeholder: '',
+              value: '#061E3D'
+            },
+            {
+              type: 'vue-color',
+              label: '高亮渐变色',
+              name: 'fontHighlightColor',
+              required: false,
+              placeholder: '',
+              value: '#2B91B7'
+            },
+          ],
         },
       ],
-      position: [
-        {
-          type: 'el-input-number',
-          label: '左边距',
-          name: 'left',
-          required: false,
-          placeholder: '',
-          value: 0,
-        },
-        {
-          type: 'el-input-number',
-          label: '上边距',
-          name: 'top',
-          required: false,
-          placeholder: '',
-          value: 0,
-        },
-        {
-          type: 'el-input-number',
-          label: '宽度',
-          name: 'width',
-          required: false,
-          placeholder: '该容器在1920px大屏中的宽度',
-          value: 600,
-        },
-        {
-          type: 'el-input-number',
-          label: '高度',
-          name: 'height',
-          required: false,
-          placeholder: '该容器在1080px大屏中的高度',
-          value: 400,
-        },
-      ]
-    }
+    ],
+    data: [
+      {
+        type: 'el-radio-group',
+        label: '数据类型',
+        name: 'dataType',
+        require: false,
+        placeholder: '',
+        selectValue: true,
+        selectOptions: [
+          {
+            code: 'staticData',
+            name: '静态数据',
+          },
+          {
+            code: 'dynamicData',
+            name: '动态数据',
+          },
+        ],
+        value: 'staticData',
+      },
+      {
+        type: 'el-input-number',
+        label: '刷新时间(毫秒)',
+        name: 'refreshTime',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'dynamicData',
+        value: 5000
+      },
+      {
+        type: 'el-button',
+        label: '静态数据',
+        name: 'staticData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'staticData',
+        value: [
+          {"name": "南海诸岛", "value": 1},
+          {"name": "北京市", "value": 524},
+          {"name": "天津市", "value": 14},
+          {"name": "上海市", "value": 150},
+          {"name": "重庆市", "value": 75},
+          {"name": "河北省", "value": 13},
+          {"name": "河南省", "value": 83},
+          {"name": "云南省", "value": 11},
+          {"name": "辽宁省", "value": 19},
+          {"name": "黑龙江省", "value": 15},
+          {"name": "湖南省", "value": 69},
+          {"name": "安徽省", "value": 260},
+          {"name": "山东省", "value": 39},
+          {"name": "新疆维吾尔自治区", "value": 4},
+          {"name": "江苏省", "value": 31},
+          {"name": "浙江省", "value": 104},
+          {"name": "江西省", "value": 36},
+          {"name": "湖北省", "value": 1052},
+          {"name": "广西壮族自治区", "value": 33},
+          {"name": "甘肃省", "value": 347},
+          {"name": "山西省", "value": 8},
+          {"name": "内蒙古自治区", "value": 157},
+          {"name": "陕西省", "value": 22},
+          {"name": "吉林省", "value": 4},
+          {"name": "福建省", "value": 36},
+          {"name": "贵州省", "value": 39},
+          {"name": "广东省", "value": 996},
+          {"name": "青海省", "value": 27},
+          {"name": "西藏自治区", "value": 31},
+          {"name": "四川省", "value": 46},
+          {"name": "宁夏回族自治区", "value": 16},
+          {"name": "海南省", "value": 22},
+          {"name": "台湾省", "value": 6},
+          {"name": "香港", "value": 2},
+          {"name": "澳门", "value": 9}],
+      },
+      {
+        type: 'dycustComponents',
+        label: '',
+        name: 'dynamicData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        chartType: 'widget-piechart',
+        dictKey: 'MAP_PROPERTIES',
+        relactiveDomValue: 'dynamicData',
+        value: '',
+      },
+    ],
+    position: [
+      {
+        type: 'el-input-number',
+        label: '左边距',
+        name: 'left',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '上边距',
+        name: 'top',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '宽度',
+        name: 'width',
+        required: false,
+        placeholder: '该容器在1920px大屏中的宽度',
+        value: 600,
+      },
+      {
+        type: 'el-input-number',
+        label: '高度',
+        name: 'height',
+        required: false,
+        placeholder: '该容器在1080px大屏中的高度',
+        value: 400,
+      },
+    ]
   }
+}

+ 463 - 0
report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-line-map.js

@@ -0,0 +1,463 @@
+/*
+ * @Descripttion: 中国地图 json
+ * @version:
+ * @Author: qianlishi
+ * @Date: 2021-08-29 07:31:21
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2021-09-28 14:17:20
+ */
+export const widgetLineMap = {
+  code: 'widgetLineMap',
+  type: 'chart',
+  label: '路线地图',
+  icon: 'iconzhongguoditu',
+  options: {
+    setup: [
+      {
+        type: 'el-input-text',
+        label: '图层名称',
+        name: 'layerName',
+        required: false,
+        placeholder: '',
+        value: '中国地图-路线图',
+      },
+      {
+        type: 'vue-color',
+        label: '背景颜色',
+        name: 'background',
+        required: false,
+        placeholder: '',
+        value: ''
+      },
+      [
+        {
+          name: '标题设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '标题',
+              name: 'isNoTitle',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-text',
+              label: '标题',
+              name: 'titleText',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'textColor',
+              required: false,
+              placeholder: '',
+              value: '#fff'
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'textFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体大小',
+              name: 'textFontSize',
+              required: false,
+              placeholder: '',
+              value: 20
+            },
+            {
+              type: 'el-select',
+              label: '字体位置',
+              name: 'textAlign',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'center'
+            },
+            {
+              type: 'el-input-text',
+              label: '副标题',
+              name: 'subText',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'subTextColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'subTextFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体大小',
+              name: 'subTextFontSize',
+              required: false,
+              placeholder: '',
+              value: 12
+            },
+          ],
+        },
+        {
+          name: '起点设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '起点显示',
+              name: 'isShowSource',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-number',
+              label: '点大小',
+              name: 'sourceSymbolSize',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '点颜色',
+              name: 'sourcePointColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-input-number',
+              label: '文字大小',
+              name: 'sourceFontTextSize',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'vue-color',
+              label: '文字颜色',
+              name: 'sourceFontTextColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-select',
+              label: '文字粗细',
+              name: 'sourceFontTextWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+          ],
+        },
+        {
+          name: '终点设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '终点显示',
+              name: 'isShowTarget',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-number',
+              label: '点大小',
+              name: 'targetSymbolSize',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '点颜色',
+              name: 'targetPointColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-input-number',
+              label: '文字大小',
+              name: 'targetFontTextSize',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'vue-color',
+              label: '文字颜色',
+              name: 'targetFontTextColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-select',
+              label: '文字粗细',
+              name: 'targetFontTextWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+          ],
+        },
+        {
+          name: '图标设置',
+          list: [
+            {
+              type: 'el-select',
+              label: '图标样式',
+              name: 'symbol',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'arrow', name: '箭头'},
+                {code: 'plane', name: '飞机'},
+              ],
+              value: 'arrow'
+            },
+            {
+              type: 'el-input-number',
+              label: '动画速度',
+              name: 'symbolPeriod',
+              required: false,
+              placeholder: '',
+              value: 4,
+            },
+            {
+              type: 'el-input-number',
+              label: '图标大小',
+              name: 'symbolSize',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '图标颜色',
+              name: 'symbolColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+          ],
+        },
+        {
+          name: '线设置',
+          list: [
+            {
+              type: 'vue-color',
+              label: '线颜色',
+              name: 'lineColor',
+              required: false,
+              placeholder: '',
+              value: '#ffa022'
+            },
+            {
+              type: 'el-input-number',
+              label: '线宽度',
+              name: 'lineWidth',
+              required: false,
+              placeholder: '',
+              value: 2,
+            },
+          ],
+        },
+        {
+          name: '地图颜色',
+          list: [
+            {
+              type: 'vue-color',
+              label: '地图块颜色',
+              name: 'blockColor',
+              required: false,
+              placeholder: '',
+              value: '#073684'
+            },
+            {
+              type: 'vue-color',
+              label: '边界颜色',
+              name: 'borderColor',
+              required: false,
+              placeholder: '',
+              value: '#061E3D'
+            },
+            {
+              type: 'vue-color',
+              label: '高亮颜色',
+              name: 'highlightColor',
+              required: false,
+              placeholder: '',
+              value: '#2B91B7'
+            },
+          ],
+        },
+      ]
+    ],
+    data: [
+      {
+        type: 'el-radio-group',
+        label: '数据类型',
+        name: 'dataType',
+        require: false,
+        placeholder: '',
+        selectValue: true,
+        selectOptions: [
+          {
+            code: 'staticData',
+            name: '静态数据',
+          },
+          {
+            code: 'dynamicData',
+            name: '动态数据',
+          },
+        ],
+        value: 'staticData',
+      },
+      {
+        type: 'el-input-number',
+        label: '刷新时间(毫秒)',
+        name: 'refreshTime',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'dynamicData',
+        value: 5000
+      },
+      {
+        type: 'el-button',
+        label: '静态数据',
+        name: 'staticData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'staticData',
+        value: [
+          {source: '北京市', target: '上海市', value: 95},
+          {source: '北京市', target: '广州市', value: 90},
+          {source: '北京市', target: '大连市', value: 80},
+          {source: '北京市', target: '南宁市', value: 70},
+          {source: '北京市', target: '南昌市', value: 60},
+          {source: '北京市', target: '拉萨市', value: 50},
+          {source: '北京市', target: '长春市', value: 40},
+          {source: '北京市', target: '包头市', value: 30},
+          {source: '北京市', target: '重庆市', value: 20},
+          {source: '北京市', target: '常州市', value: 10},
+          {source: '上海市', target: '包头市', value: 95},
+          {source: '上海市', target: '昆明市', value: 90},
+          {source: '上海市', target: '广州市', value: 80},
+          {source: '上海市', target: '郑州市', value: 70},
+          {source: '上海市', target: '长春市', value: 60},
+          {source: '上海市', target: '重庆市', value: 50},
+          {source: '上海市', target: '长沙市', value: 40},
+          {source: '上海市', target: '北京市', value: 30},
+          {source: '上海市', target: '丹东市', value: 20},
+          {source: '上海市', target: '大连市', value: 10},
+          {source: '广州市', target: '福州市', value: 95},
+          {source: '广州市', target: '太原市', value: 90},
+          {source: '广州市', target: '长春市', value: 80},
+          {source: '广州市', target: '重庆市', value: 70},
+          {source: '广州市', target: '西安市', value: 60},
+          {source: '广州市', target: '成都市', value: 50},
+          {source: '广州市', target: '常州市', value: 40},
+          {source: '广州市', target: '北京市', value: 30},
+          {source: '广州市', target: '北海市', value: 20},
+          {source: '广州市', target: '海口市', value: 10},
+        ],
+      },
+      {
+        type: 'dycustComponents',
+        label: '',
+        name: 'dynamicData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        chartType: 'widget-linemap',
+        dictKey: 'SOUTAR_PROPERTIES',
+        relactiveDomValue: 'dynamicData',
+        value: '',
+      },
+    ],
+    position: [
+      {
+        type: 'el-input-number',
+        label: '左边距',
+        name: 'left',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '上边距',
+        name: 'top',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '宽度',
+        name: 'width',
+        required: false,
+        placeholder: '该容器在1920px大屏中的宽度',
+        value: 600,
+      },
+      {
+        type: 'el-input-number',
+        label: '高度',
+        name: 'height',
+        required: false,
+        placeholder: '该容器在1080px大屏中的高度',
+        value: 400,
+      },
+    ]
+  }
+}

+ 0 - 61
report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-map.js

@@ -1,61 +0,0 @@
-/*
- * @Descripttion: 中国地图 json
- * @version: 
- * @Author: qianlishi
- * @Date: 2021-08-29 07:31:21
- * @LastEditors: qianlishi
- * @LastEditTime: 2021-09-28 14:17:20
- */
-export const widgetMap = {
-    code: 'widget-map',
-    type: 'chart',
-    label: '中国地图',
-    icon: 'iconzhongguoditu',
-    options: {
-      setup: [
-        {
-          type: 'el-input-text',
-          label: '图层名称',
-          name: 'layerName',
-          required: false,
-          placeholder: '',
-          value: '迁徙图',
-        },
-      ],
-      data: [],
-      position: [
-        {
-          type: 'el-input-number',
-          label: '左边距',
-          name: 'left',
-          required: false,
-          placeholder: '',
-          value: 0,
-        },
-        {
-          type: 'el-input-number',
-          label: '上边距',
-          name: 'top',
-          required: false,
-          placeholder: '',
-          value: 0,
-        },
-        {
-          type: 'el-input-number',
-          label: '宽度',
-          name: 'width',
-          required: false,
-          placeholder: '该容器在1920px大屏中的宽度',
-          value: 600,
-        },
-        {
-          type: 'el-input-number',
-          label: '高度',
-          name: 'height',
-          required: false,
-          placeholder: '该容器在1080px大屏中的高度',
-          value: 400,
-        },
-      ]
-    }
-  }

+ 5 - 5
report-ui/src/views/bigscreenDesigner/designer/tools/configure/widget-time.js

@@ -1,6 +1,6 @@
 /*
  * @Descripttion: 时间控件json
- * @version: 
+ * @version:
  * @Author: qianlishi
  * @Date: 2021-08-29 07:05:52
  * @LastEditors: qianlishi
@@ -56,7 +56,7 @@ export const widgetTime =  {
           name: 'fontSize',
           required: false,
           placeholder: '',
-          value: '26'
+          value: '36'
         },
         {
           type: 'vue-color',
@@ -128,7 +128,7 @@ export const widgetTime =  {
           name: 'width',
           required: false,
           placeholder: '该容器在1920px大屏中的宽度',
-          value: 300,
+          value: 400,
         },
         {
           type: 'el-input-number',
@@ -136,8 +136,8 @@ export const widgetTime =  {
           name: 'height',
           required: false,
           placeholder: '该容器在1080px大屏中的高度',
-          value: 100,
+          value: 50,
         },
       ],
     }
-  }
+  }

+ 2 - 2
report-ui/src/views/bigscreenDesigner/designer/tools/main.js

@@ -24,7 +24,7 @@ import {widgetBarlinechart} from "./configure/widget-barlinechart"
 import {widgetPiechart} from "./configure/widget-piechart"
 import {widgetFunnel} from "./configure/widget-funnel"
 import {widgetGauge} from "./configure/widget-gauge"
-import {widgetMap} from "./configure/widget-map"
+import {widgetLineMap} from "./configure/widget-line-map"
 import {widgetPieNightingale} from "./configure/widget-pie-nightingale"
 import {widgetPiePercentage} from "./configure/widget-pie-percentage"
 import {widgetAirbubbleMap} from "./configure/widget-airbubble-map"
@@ -56,7 +56,7 @@ export const widgetTool = [
   widgetPiechart,
   widgetFunnel,
   widgetGauge,
-  widgetMap,
+  widgetLineMap,
   widgetPieNightingale,
   widgetPiePercentage,
   widgetAirbubbleMap,

+ 40 - 50
report-ui/src/views/bigscreenDesigner/designer/widget/map/widgetAirBubbleMap.vue

@@ -9,38 +9,40 @@ import "../../../../../../node_modules/echarts/map/js/china.js";
 //https://www.makeapie.com/editor.html?c=x2yaz6dfRw
 //https://www.makeapie.com/editor.html?c=xMpGBbTEKU
 let geoCoordMap = {
-  台湾: [121.5135, 25.0308],
-  黑龙江: [127.9688, 45.368],
-  内蒙古: [110.3467, 41.4899],
-  吉林: [125.8154, 44.2584],
-  北京: [116.4551, 40.2539],
-  辽宁: [123.1238, 42.1216],
-  河北: [114.4995, 38.1006],
-  天津: [117.4219, 39.4189],
-  山西: [112.3352, 37.9413],
-  陕西: [109.1162, 34.2004],
-  甘肃: [103.5901, 36.3043],
-  宁夏: [106.3586, 38.1775],
-  青海: [101.4038, 36.8207],
-  新疆: [87.9236, 43.5883],
-  西藏: [91.11, 29.97],
-  四川: [103.9526, 30.7617],
-  重庆: [108.384366, 30.439702],
-  山东: [117.1582, 36.8701],
-  河南: [113.4668, 34.6234],
-  江苏: [118.8062, 31.9208],
-  安徽: [117.29, 32.0581],
-  湖北: [114.3896, 30.6628],
-  浙江: [119.5313, 29.8773],
-  福建: [119.4543, 25.9222],
-  江西: [116.0046, 28.6633],
-  湖南: [113.0823, 28.2568],
-  贵州: [106.6992, 26.7682],
-  云南: [102.9199, 25.4663],
-  广东: [113.12244, 23.009505],
-  广西: [108.479, 23.1152],
-  海南: [110.3893, 19.8516],
-  上海: [121.4648, 31.2891]
+  台湾省: [121.5135, 25.0308],
+  黑龙江省: [127.9688, 45.368],
+  内蒙古自治区: [110.3467, 41.4899],
+  吉林省: [125.8154, 44.2584],
+  北京市: [116.4551, 40.2539],
+  辽宁省: [123.1238, 42.1216],
+  河北省: [114.4995, 38.1006],
+  天津市: [117.4219, 39.4189],
+  山西省: [112.3352, 37.9413],
+  陕西省: [109.1162, 34.2004],
+  甘肃省: [103.5901, 36.3043],
+  宁夏回族自治区: [106.3586, 38.1775],
+  青海省: [101.4038, 36.8207],
+  新疆维吾尔自治区: [87.9236, 43.5883],
+  西藏自治区: [91.11, 29.97],
+  四川省: [103.9526, 30.7617],
+  重庆市: [108.384366, 30.439702],
+  山东省: [117.1582, 36.8701],
+  河南省: [113.4668, 34.6234],
+  江苏省: [118.8062, 31.9208],
+  安徽省: [117.29, 32.0581],
+  湖北省: [114.3896, 30.6628],
+  浙江省: [119.5313, 29.8773],
+  福建省: [119.4543, 25.9222],
+  江西省: [116.0046, 28.6633],
+  湖南省: [113.0823, 28.2568],
+  贵州省: [106.6992, 26.7682],
+  云南省: [102.9199, 25.4663],
+  广东省: [113.12244, 23.009505],
+  广西壮族自治区: [108.479, 23.1152],
+  海南省: [110.3893, 19.8516],
+  上海市: [121.4648, 31.2891],
+  香港: [114.173355,22.320048],
+  澳门: [113.54909,22.198951]
 };
 let data = [
   {
@@ -213,24 +215,12 @@ export default {
       options: {
         //backgroundColor: '#0F1C3C',
         tooltip: {
-          show: true,
-          formatter: function(params) {
-            if (params.value.length > 1) {
-              return (
-                "&nbsp;&nbsp;" +
-                params.name +
-                "&nbsp;&nbsp;&nbsp;" +
-                params.value[2] +
-                "&nbsp;&nbsp;"
-              );
+          trigger: 'item',
+          formatter: function (params) {
+            if (params.value.length >1 ) {
+              return params.data.name + "" + params.data.value[2];
             } else {
-              return (
-                "&nbsp;&nbsp;" +
-                params.name +
-                "&nbsp;&nbsp;&nbsp;" +
-                params.value +
-                "&nbsp;&nbsp;"
-              );
+              return params.name;
             }
           }
         },
@@ -470,7 +460,7 @@ export default {
       const label = this.options.series[0]["label"];
       const normal = {
         position: "right",
-        show: true,
+        show: optionsSetup.isShowMap,
         color: optionsSetup.fontTextColor,
         fontSize: optionsSetup.fontTextSize,
         fontWeight: optionsSetup.fontTextWeight

+ 552 - 0
report-ui/src/views/bigscreenDesigner/designer/widget/map/widgetLineMap.vue

@@ -0,0 +1,552 @@
+<template>
+  <div :style="styleObj">
+    <v-chart :options="options" autoresize/>
+  </div>
+</template>
+<script>
+import "echarts/map/js/china.js";
+import echarts from "echarts";
+import {conversionCity} from '@/utils/china';
+/*let geoCoordMap = {
+  上海市: [121.4648, 31.2891],
+  东莞市: [113.8953, 22.901],
+  东营市: [118.7073, 37.5513],
+  中山市: [113.4229, 22.478],
+  临汾市: [111.4783, 36.1615],
+  临沂市: [118.3118, 35.2936],
+  丹东市: [124.541, 40.4242],
+  丽水市: [119.5642, 28.1854],
+  乌鲁木齐市: [87.9236, 43.5883],
+  佛山市: [112.8955, 23.1097],
+  保定市: [115.0488, 39.0948],
+  兰州市: [103.5901, 36.3043],
+  包头市: [110.3467, 41.4899],
+  北京市: [116.4551, 40.2539],
+  北海市: [109.314, 21.6211],
+  南京市: [118.8062, 31.9208],
+  南宁市: [108.479, 23.1152],
+  南昌市: [116.0046, 28.6633],
+  南通市: [121.1023, 32.1625],
+  厦门市: [118.1689, 24.6478],
+  台州市: [121.1353, 28.6688],
+  合肥市: [117.29, 32.0581],
+  呼和浩特市: [111.4124, 40.4901],
+  咸阳市: [108.4131, 34.8706],
+  哈尔滨市: [127.9688, 45.368],
+  唐山市: [118.4766, 39.6826],
+  嘉兴市: [120.9155, 30.6354],
+  大同市: [113.7854, 39.8035],
+  大连市: [122.2229, 39.4409],
+  天津市: [117.4219, 39.4189],
+  太原市: [112.3352, 37.9413],
+  威海市: [121.9482, 37.1393],
+  宁波市: [121.5967, 29.6466],
+  宝鸡市: [107.1826, 34.3433],
+  宿迁市: [118.5535, 33.7775],
+  常州市: [119.4543, 31.5582],
+  广州市: [113.5107, 23.2196],
+  廊坊市: [116.521, 39.0509],
+  延安市: [109.1052, 36.4252],
+  张家口市: [115.1477, 40.8527],
+  徐州市: [117.5208, 34.3268],
+  德州市: [116.6858, 37.2107],
+  惠州市: [114.6204, 23.1647],
+  成都市: [103.9526, 30.7617],
+  扬州市: [119.4653, 32.8162],
+  承德市: [117.5757, 41.4075],
+  拉萨市: [91.1865, 30.1465],
+  无锡市: [120.3442, 31.5527],
+  日照市: [119.2786, 35.5023],
+  昆明市: [102.9199, 25.4663],
+  杭州市: [119.5313, 29.8773],
+  枣庄市: [117.323, 34.8926],
+  柳州市: [109.3799, 24.9774],
+  株洲市: [113.5327, 27.0319],
+  武汉市: [114.3896, 30.6628],
+  汕头市: [117.1692, 23.3405],
+  江门市: [112.6318, 22.1484],
+  沈阳市: [123.1238, 42.1216],
+  沧州市: [116.8286, 38.2104],
+  河源市: [114.917, 23.9722],
+  泉州市: [118.3228, 25.1147],
+  泰安市: [117.0264, 36.0516],
+  泰州市: [120.0586, 32.5525],
+  济南市: [117.1582, 36.8701],
+  济宁市: [116.8286, 35.3375],
+  海口市: [110.3893, 19.8516],
+  淄博市: [118.0371, 36.6064],
+  淮安市: [118.927, 33.4039],
+  深圳市: [114.5435, 22.5439],
+  清远市: [112.9175, 24.3292],
+  温州市: [120.498, 27.8119],
+  渭南市: [109.7864, 35.0299],
+  湖州市: [119.8608, 30.7782],
+  湘潭市: [112.5439, 27.7075],
+  滨州市: [117.8174, 37.4963],
+  潍坊市: [119.0918, 36.524],
+  烟台市: [120.7397, 37.5128],
+  玉溪市: [101.9312, 23.8898],
+  珠海市: [113.7305, 22.1155],
+  盐城市: [120.2234, 33.5577],
+  盘锦市: [121.9482, 41.0449],
+  石家庄市: [114.4995, 38.1006],
+  福州市: [119.4543, 25.9222],
+  秦皇岛市: [119.2126, 40.0232],
+  绍兴市: [120.564, 29.7565],
+  聊城市: [115.9167, 36.4032],
+  肇庆市: [112.1265, 23.5822],
+  舟山市: [122.2559, 30.2234],
+  苏州市: [120.6519, 31.3989],
+  莱芜市: [117.6526, 36.2714],
+  菏泽市: [115.6201, 35.2057],
+  营口市: [122.4316, 40.4297],
+  葫芦岛市: [120.1575, 40.578],
+  衡水市: [115.8838, 37.7161],
+  衢州市: [118.6853, 28.8666],
+  西宁市: [101.4038, 36.8207],
+  西安市: [109.1162, 34.2004],
+  贵阳市: [106.6992, 26.7682],
+  连云港市: [119.1248, 34.552],
+  邢台市: [114.8071, 37.2821],
+  邯郸市: [114.4775, 36.535],
+  郑州市: [113.4668, 34.6234],
+  鄂尔多斯市: [108.9734, 39.2487],
+  重庆市: [107.7539, 30.1904],
+  金华市: [120.0037, 29.1028],
+  铜川市: [109.0393, 35.1947],
+  银川市: [106.3586, 38.1775],
+  镇江市: [119.4763, 31.9702],
+  长春市: [125.8154, 44.2584],
+  长沙市: [113.0823, 28.2568],
+  长治市: [112.8625, 36.4746],
+  阳泉市: [113.4778, 38.0951],
+  青岛市: [120.4651, 36.3373],
+  韶关市: [113.7964, 24.7028]
+};*/
+let geoCoordMap = conversionCity;
+let planePath =
+  "path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z";
+export default {
+  name: "widgetLineMap",
+  props: {
+    value: Object,
+    ispreview: Boolean
+  },
+  data() {
+    return {
+      options: {
+        title: {
+          left: "center",
+          textStyle: {
+            color: "#fff"
+          }
+        },
+        tooltip: {
+          trigger: 'item',
+          formatter: function (params, ticket, callback) {
+            if (params.seriesType == "effectScatter") {
+              return "线路:" + params.data.name + "" + params.data.value[2];
+            } else if (params.seriesType == "lines") {
+              return params.data.fromName + ">" + params.data.toName + "<br />" + params.data.value;
+            } else {
+              return params.name;
+            }
+          }
+        },
+        legend: {
+          show: true,
+          orient: 'vertical',
+          top: 'bottom',
+          left: 'right',
+          textStyle: {
+            color: '#fff'
+          },
+          selectedMode: 'multiple',
+        },
+        geo: {
+          map: "china",
+          label: {
+            emphasis: {
+              show: true,
+              color: "white"
+            }
+          },
+          roam: true,
+          itemStyle: {
+            normal: {
+              areaColor: "#323c48",
+              borderColor: "#404a59",
+              borderWidth: 1,
+            },
+            emphasis: {
+              areaColor: "#2a333d"
+            }
+          },
+        },
+        series: [
+          {
+            //name: tempData[0],
+            type: "lines",
+            zlevel: 1,
+            effect: {
+              show: false,
+              period: 6,
+              trailLength: 0.7,
+              color: "#fff",
+              symbolSize: 3
+            },
+            lineStyle: {
+              normal: {
+                color: '#a6c84c',
+                width: 0,
+                curveness: 0.2
+              }
+            },
+            data: [],
+          },
+          {
+            type: "lines",
+            zlevel: 2,
+            symbol: ['none', 'arrow'],
+            symbolSize: 10,
+            effect: {
+              show: true,
+              period: 4,
+              trailLength: 0,
+              symbol: 'arrow',
+              symbolSize: 5
+            },
+            lineStyle: {
+              normal: {
+                // 颜色+ 线条
+                color: '#ffa022',
+                width: 1,
+                opacity: 0.4,
+                curveness: 0.2
+              }
+            },
+            data: [],
+          },
+          {
+            // 起点
+            //name: tempData[0],
+            type: 'effectScatter',
+            coordinateSystem: 'geo',
+            zlevel: 2,
+            rippleEffect: {
+              brushType: 'stroke'
+            },
+            label: {
+              normal: {
+                show: true,
+                position: 'right',
+                formatter: '{b}',
+                fontSize: 22,
+              }
+            },
+            // 点的大小
+            symbolSize: 10,
+            itemStyle: {
+              normal: {
+                // 地图点颜色
+                color: '#46bee9'
+              }
+            },
+            data: [],
+          },
+          {
+            // 终点
+            //name: tempData[0],
+            type: 'effectScatter',
+            coordinateSystem: 'geo',
+            zlevel: 2,
+            rippleEffect: {
+              brushType: 'stroke'
+            },
+            label: {
+              normal: {
+                show: true,
+                position: 'right',
+                formatter: '{b}',
+                fontSize: 22,
+              }
+            },
+            // 点的大小
+            symbolSize: 10,
+            itemStyle: {
+              normal: {
+                // 地图点颜色
+                color: '#46bee9'
+              }
+            },
+            data: [],
+          },
+        ]
+      },
+      optionsSetup: {}
+    };
+  },
+  computed: {
+    styleObj() {
+      return {
+        position: this.ispreview ? "absolute" : "static",
+        width: this.optionsStyle.width + "px",
+        height: this.optionsStyle.height + "px",
+        left: this.optionsStyle.left + "px",
+        top: this.optionsStyle.top + "px",
+        background: this.optionsSetup.background
+      };
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        this.optionsStyle = val.position;
+        this.optionsData = val.data;
+        this.optionsSetup = val.setup;
+        this.editorOptions();
+      },
+      deep: true
+    }
+  },
+  created() {
+    this.optionsStyle = this.value.position;
+    this.optionsData = this.value.data;
+    this.optionsSetup = this.value.setup;
+  },
+  mounted() {
+    this.editorOptions();
+  },
+  methods: {
+    convertData(data) {
+      let res = [];
+      for (let i = 0; i < data.length; i++) {
+        let dataItem = data[i];
+        let sourceCoord = geoCoordMap[dataItem.source];
+        let targetCoord = geoCoordMap[dataItem.target];
+        if (sourceCoord && targetCoord) {
+          res.push({
+              fromName: dataItem.source,
+              toName: dataItem.target,
+              coords: [sourceCoord, targetCoord],
+              value: dataItem.value,
+            }
+          )
+        }
+        ;
+      }
+      return res;
+    },
+    editorOptions() {
+      this.setOptionsTitle();
+      this.setOptionsSource();
+      this.setOptionsTarget();
+      this.setOptionsSymbol();
+      this.setOptionsLine();
+      this.setOptionsColor();
+      this.setOptionsData();
+    },
+    // 标题设置
+    setOptionsTitle() {
+      const optionsSetup = this.optionsSetup;
+      const title = {};
+      title.show = optionsSetup.isNoTitle;
+      title.text = optionsSetup.titleText;
+      title.left = optionsSetup.textAlign;
+      title.textStyle = {
+        color: optionsSetup.textColor,
+        fontSize: optionsSetup.textFontSize,
+        fontWeight: optionsSetup.textFontWeight
+      };
+      title.subtext = optionsSetup.subText;
+      title.subtextStyle = {
+        color: optionsSetup.subTextColor,
+        fontWeight: optionsSetup.subTextFontWeight,
+        fontSize: optionsSetup.subTextFontSize
+      };
+      this.options.title = title;
+    },
+    // 起点设置
+    setOptionsSource(){
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[2];
+      const normal = {
+        show: optionsSetup.isShowSource,
+        position: 'right',
+        color: optionsSetup.sourceFontTextColor,
+        fontSize: optionsSetup.sourceFontTextSize,
+        fontWeight: optionsSetup.sourceFontTextWeight,
+      };
+      const itemStyle = {
+        normal: {
+          color: optionsSetup.sourcePointColor,
+        }
+      };
+      series.symbolSize = optionsSetup.sourceSymbolSize;
+      series.label.normal = normal;
+      series.itemStyle = itemStyle;
+    },
+    // 终点设置
+    setOptionsTarget(){
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[3];
+      const normal = {
+        show: optionsSetup.isShowTarget,
+        position: 'right',
+        color: optionsSetup.targetFontTextColor,
+        fontSize: optionsSetup.targetFontTextSize,
+        fontWeight: optionsSetup.targetFontTextWeight,
+      };
+      const itemStyle = {
+        normal: {
+          color: optionsSetup.targetPointColor,
+        }
+      };
+      series.symbolSize = optionsSetup.targetSymbolSize;
+      series.label.normal = normal;
+      series.itemStyle = itemStyle;
+    },
+    // 图标设置
+    setOptionsSymbol(){
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[1];
+      const effect = {
+        show: true,
+        period: this.setPeriod(optionsSetup),
+        trailLength: 0,
+        symbol: this.setSymbol(optionsSetup),
+        symbolSize: optionsSetup.symbolSize,
+        color: optionsSetup.symbolColor,
+      };
+      series['effect'] = effect;
+    },
+    setSymbol(optionsSetup) {
+      let symbol;
+      if (optionsSetup.symbol == 'plane') {
+        symbol = planePath;
+      } else {
+        symbol = "arrow";
+      }
+      return symbol;
+    },
+    setPeriod(optionsSetup){
+      let period;
+      if (optionsSetup.symbol == 'plane') {
+        period = optionsSetup.symbolPeriod - 1;
+      }else {
+        period = optionsSetup.symbolPeriod;
+      }
+      return period;
+    },
+    // 线设置
+    setOptionsLine() {
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[1];
+      const lineStyle = {
+        normal: {
+          // 线条颜色
+          color: optionsSetup.lineColor,
+          width: optionsSetup.lineWidth,
+          opacity: 0.4,
+          curveness: 0.2
+        }
+      };
+      series['lineStyle'] = lineStyle;
+    },
+    // 地图颜色设置
+    setOptionsColor() {
+      const optionsSetup = this.optionsSetup;
+      const itemStyle = {
+        normal: {
+          // 地图的颜色
+          areaColor: optionsSetup.blockColor,
+          borderColor: optionsSetup.borderColor,
+        },
+        emphasis: {
+          // 地图块颜色
+          areaColor: optionsSetup.highlightColor,
+        }
+      };
+      this.options.geo["itemStyle"] = itemStyle;
+    },
+    //数据解析
+    setOptionsData() {
+      const optionsData = this.optionsData; // 数据类型 静态 or 动态
+      optionsData.dataType == "staticData"
+        ? this.staticDataFn(optionsData.staticData)
+        : this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);
+    },
+    staticDataFn(val) {
+      const series = this.options.series;
+      series[0]["data"] = this.convertData(val);
+      series[1]["data"] = this.convertData(val);
+      series[2]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.source,
+            value: geoCoordMap[dataItem.source].concat([dataItem.value])
+          }
+        }
+      });
+      series[3]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.target,
+            value: geoCoordMap[dataItem.target].concat([dataItem.value])
+          }
+        }
+      });
+    },
+    dynamicDataFn(val, refreshTime) {
+      if (!val) return;
+      if (this.ispreview) {
+        this.getEchartData(val);
+        this.flagInter = setInterval(() => {
+          this.getEchartData(val);
+        }, refreshTime);
+      } else {
+        this.getEchartData(val);
+      }
+    },
+    getEchartData(val) {
+      const data = this.queryEchartsData(val);
+      data.then(res => {
+        this.renderingFn(res);
+      });
+    },
+    renderingFn(val) {
+      const series = this.options.series;
+      series[0]["data"] = this.convertData(val);
+      series[1]["data"] = this.convertData(val);
+      series[2]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.source,
+            value: geoCoordMap[dataItem.source].concat([dataItem.value])
+          }
+        }
+      });
+      series[3]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.target,
+            value: geoCoordMap[dataItem.target].concat([dataItem.value])
+          }
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.echartMap {
+  width: 100%;
+  height: 100%;
+}
+
+.echarts {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+</style>

+ 2 - 2
report-ui/src/views/bigscreenDesigner/designer/widget/temp.vue

@@ -28,7 +28,7 @@ import WidgetFunnel from "./widgetFunnel.vue";
 import WidgetGauge from "./percent/widgetGauge.vue";
 import WidgetPieNightingaleRoseArea from "./pie/widgetPieNightingaleRose";
 import widgetTable from "./widgetTable.vue";
-import widgetMap from "./widgetMap.vue";
+import widgetLineMap from "./map/widgetLineMap.vue";
 import widgetPiePercentageChart from "./percent/widgetPiePercentageChart";
 import widgetAirBubbleMap from "./map/widgetAirBubbleMap";
 import widgetBarStackChart from "./bar/widgetBarStackChart";
@@ -60,7 +60,7 @@ export default {
     WidgetGauge,
     WidgetPieNightingaleRoseArea,
     widgetTable,
-    widgetMap,
+    widgetLineMap,
     widgetPiePercentageChart,
     widgetAirBubbleMap,
     widgetBarStackChart,

+ 2 - 2
report-ui/src/views/bigscreenDesigner/designer/widget/widget.vue

@@ -39,7 +39,7 @@ import WidgetFunnel from "./widgetFunnel.vue";
 import WidgetGauge from "./percent/widgetGauge.vue";
 import WidgetPieNightingaleRoseArea from "./pie/widgetPieNightingaleRose";
 import widgetTable from "./widgetTable.vue";
-import widgetMap from "./widgetMap.vue";
+import widgetLineMap from "./map/widgetLineMap.vue";
 import widgetPiePercentageChart from "./percent/widgetPiePercentageChart";
 import widgetAirBubbleMap from "./map/widgetAirBubbleMap";
 import widgetBarStackChart from "./bar/widgetBarStackChart";
@@ -71,7 +71,7 @@ export default {
     WidgetGauge,
     WidgetPieNightingaleRoseArea,
     widgetTable,
-    widgetMap,
+    widgetLineMap,
     widgetPiePercentageChart,
     widgetAirBubbleMap,
     widgetBarStackChart,

+ 0 - 468
report-ui/src/views/bigscreenDesigner/designer/widget/widgetMap.vue

@@ -1,468 +0,0 @@
-<template>
-  <div :style="styleObj">
-    <v-chart :options="options" autoresize />
-  </div>
-</template>
-<script>
-import "../../../../../node_modules/echarts/map/js/china.js";
-let GZData = [
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "福州",
-      value: 95
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "太原",
-      value: 90
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "长春",
-      value: 80
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "重庆",
-      value: 70
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "西安",
-      value: 60
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "成都",
-      value: 50
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "常州",
-      value: 40
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "北京",
-      value: 30
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "北海",
-      value: 20
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "海口",
-      value: 10
-    }
-  ]
-];
-let geoCoordMap = {
-  上海: [121.4648, 31.2891],
-  东莞: [113.8953, 22.901],
-  东营: [118.7073, 37.5513],
-  中山: [113.4229, 22.478],
-  临汾: [111.4783, 36.1615],
-  临沂: [118.3118, 35.2936],
-  丹东: [124.541, 40.4242],
-  丽水: [119.5642, 28.1854],
-  乌鲁木齐: [87.9236, 43.5883],
-  佛山: [112.8955, 23.1097],
-  保定: [115.0488, 39.0948],
-  兰州: [103.5901, 36.3043],
-  包头: [110.3467, 41.4899],
-  北京: [116.4551, 40.2539],
-  北海: [109.314, 21.6211],
-  南京: [118.8062, 31.9208],
-  南宁: [108.479, 23.1152],
-  南昌: [116.0046, 28.6633],
-  南通: [121.1023, 32.1625],
-  厦门: [118.1689, 24.6478],
-  台州: [121.1353, 28.6688],
-  合肥: [117.29, 32.0581],
-  呼和浩特: [111.4124, 40.4901],
-  咸阳: [108.4131, 34.8706],
-  哈尔滨: [127.9688, 45.368],
-  唐山: [118.4766, 39.6826],
-  嘉兴: [120.9155, 30.6354],
-  大同: [113.7854, 39.8035],
-  大连: [122.2229, 39.4409],
-  天津: [117.4219, 39.4189],
-  太原: [112.3352, 37.9413],
-  威海: [121.9482, 37.1393],
-  宁波: [121.5967, 29.6466],
-  宝鸡: [107.1826, 34.3433],
-  宿迁: [118.5535, 33.7775],
-  常州: [119.4543, 31.5582],
-  广州: [113.5107, 23.2196],
-  廊坊: [116.521, 39.0509],
-  延安: [109.1052, 36.4252],
-  张家口: [115.1477, 40.8527],
-  徐州: [117.5208, 34.3268],
-  德州: [116.6858, 37.2107],
-  惠州: [114.6204, 23.1647],
-  成都: [103.9526, 30.7617],
-  扬州: [119.4653, 32.8162],
-  承德: [117.5757, 41.4075],
-  拉萨: [91.1865, 30.1465],
-  无锡: [120.3442, 31.5527],
-  日照: [119.2786, 35.5023],
-  昆明: [102.9199, 25.4663],
-  杭州: [119.5313, 29.8773],
-  枣庄: [117.323, 34.8926],
-  柳州: [109.3799, 24.9774],
-  株洲: [113.5327, 27.0319],
-  武汉: [114.3896, 30.6628],
-  汕头: [117.1692, 23.3405],
-  江门: [112.6318, 22.1484],
-  沈阳: [123.1238, 42.1216],
-  沧州: [116.8286, 38.2104],
-  河源: [114.917, 23.9722],
-  泉州: [118.3228, 25.1147],
-  泰安: [117.0264, 36.0516],
-  泰州: [120.0586, 32.5525],
-  济南: [117.1582, 36.8701],
-  济宁: [116.8286, 35.3375],
-  海口: [110.3893, 19.8516],
-  淄博: [118.0371, 36.6064],
-  淮安: [118.927, 33.4039],
-  深圳: [114.5435, 22.5439],
-  清远: [112.9175, 24.3292],
-  温州: [120.498, 27.8119],
-  渭南: [109.7864, 35.0299],
-  湖州: [119.8608, 30.7782],
-  湘潭: [112.5439, 27.7075],
-  滨州: [117.8174, 37.4963],
-  潍坊: [119.0918, 36.524],
-  烟台: [120.7397, 37.5128],
-  玉溪: [101.9312, 23.8898],
-  珠海: [113.7305, 22.1155],
-  盐城: [120.2234, 33.5577],
-  盘锦: [121.9482, 41.0449],
-  石家庄: [114.4995, 38.1006],
-  福州: [119.4543, 25.9222],
-  秦皇岛: [119.2126, 40.0232],
-  绍兴: [120.564, 29.7565],
-  聊城: [115.9167, 36.4032],
-  肇庆: [112.1265, 23.5822],
-  舟山: [122.2559, 30.2234],
-  苏州: [120.6519, 31.3989],
-  莱芜: [117.6526, 36.2714],
-  菏泽: [115.6201, 35.2057],
-  营口: [122.4316, 40.4297],
-  葫芦岛: [120.1575, 40.578],
-  衡水: [115.8838, 37.7161],
-  衢州: [118.6853, 28.8666],
-  西宁: [101.4038, 36.8207],
-  西安: [109.1162, 34.2004],
-  贵阳: [106.6992, 26.7682],
-  连云港: [119.1248, 34.552],
-  邢台: [114.8071, 37.2821],
-  邯郸: [114.4775, 36.535],
-  郑州: [113.4668, 34.6234],
-  鄂尔多斯: [108.9734, 39.2487],
-  重庆: [107.7539, 30.1904],
-  金华: [120.0037, 29.1028],
-  铜川: [109.0393, 35.1947],
-  银川: [106.3586, 38.1775],
-  镇江: [119.4763, 31.9702],
-  长春: [125.8154, 44.2584],
-  长沙: [113.0823, 28.2568],
-  长治: [112.8625, 36.4746],
-  阳泉: [113.4778, 38.0951],
-  青岛: [120.4651, 36.3373],
-  韶关: [113.7964, 24.7028]
-};
-let type = "流出";
-let color = ["#a6c84c", "#ffa022", "#46bee9"];
-let tempData = ["广州", GZData];
-let planePath =
-  "path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z";
-export default {
-  name: "widgetMap",
-  props: {
-    value: Object,
-    ispreview: Boolean
-  },
-  data() {
-    return {
-      options: {
-        title: {
-          text: "模拟迁徙",
-          subtext: "数据纯属虚构",
-          left: "center",
-          textStyle: {
-            color: "#fff"
-          }
-        },
-        tooltip: {
-          trigger: "item",
-          formatter: function(params) {
-            console.log(params);
-            if (params.seriesType == "effectScatter") {
-              if ("流入" == type) {
-                return (
-                  type +
-                  "<br>" +
-                  params.data.name +
-                  " ---> " +
-                  params.seriesName +
-                  "<br />人数:" +
-                  params.data.value[2] +
-                  "人"
-                );
-              } else {
-                return (
-                  "流出<br>" +
-                  params.seriesName +
-                  " ---> " +
-                  params.data.name +
-                  "<br />人数:" +
-                  params.data.value[2] +
-                  "人"
-                );
-              }
-            } else if (params.seriesType == "lines") {
-              if ("流入" == type) {
-                return (
-                  type +
-                  "<br>" +
-                  params.data.toName +
-                  " ---> " +
-                  params.data.fromName +
-                  "<br />人数:" +
-                  params.data.value +
-                  "人"
-                );
-              } else {
-                return (
-                  type +
-                  "<br>" +
-                  params.data.fromName +
-                  " ---> " +
-                  params.data.toName +
-                  "<br />人数:" +
-                  params.data.value +
-                  "人"
-                );
-              }
-            } else {
-              return params.name;
-            }
-          }
-        },
-        legend: {
-          show: false,
-          orient: "vertical",
-          top: "bottom",
-          left: "right",
-          data: ["广州"],
-          textStyle: {
-            color: "#fff"
-          },
-          selectedMode: "single"
-        },
-        geo: {
-          map: "china",
-          label: {
-            emphasis: {
-              //show: false,
-              show: true,
-              color: "white"
-            }
-          },
-          roam: true,
-          itemStyle: {
-            normal: {
-              areaColor: "#323c48",
-              borderColor: "#404a59"
-            },
-            emphasis: {
-              areaColor: "#2a333d"
-            }
-          }
-        },
-        series: []
-      },
-      optionsSetup: {}
-    };
-  },
-  computed: {
-    styleObj() {
-      return {
-        position: this.ispreview ? "absolute" : "static",
-        width: this.optionsStyle.width + "px",
-        height: this.optionsStyle.height + "px",
-        left: this.optionsStyle.left + "px",
-        top: this.optionsStyle.top + "px",
-        background: this.optionsSetup.background
-      };
-    }
-  },
-  watch: {
-    value: {
-      handler(val) {
-        this.optionsStyle = val.position;
-      },
-      deep: true
-    }
-  },
-  created() {
-    this.optionsStyle = this.value.position;
-  },
-  mounted() {
-    this.initData();
-  },
-  methods: {
-    initData() {
-      const options = this.options;
-      options.series.push(
-        {
-          name: tempData[0],
-          type: "lines",
-          zlevel: 1,
-          effect: {
-            show: true,
-            period: 6,
-            trailLength: 0.7,
-            color: "#fff",
-            symbolSize: 3
-          },
-          lineStyle: {
-            normal: {
-              color: color[0],
-              width: 0,
-              curveness: 0.2
-            }
-          },
-          data: this.convertData(tempData[1])
-        },
-        {
-          name: tempData[0],
-          type: "lines",
-          zlevel: 2,
-          effect: {
-            show: true,
-            period: 6,
-            trailLength: 0,
-            symbol: planePath,
-            symbolSize: 15
-          },
-          lineStyle: {
-            normal: {
-              color: color[0],
-              width: 1,
-              opacity: 0.4,
-              curveness: 0.2
-            }
-          },
-          data: this.convertData(tempData[1])
-        },
-        {
-          name: tempData[0],
-          type: "effectScatter",
-          coordinateSystem: "geo",
-          zlevel: 2,
-          rippleEffect: {
-            brushType: "stroke"
-          },
-          label: {
-            normal: {
-              show: true,
-              position: "right",
-              formatter: "{b}"
-            }
-          },
-          symbolSize: function(val) {
-            return val[2] / 8;
-          },
-          itemStyle: {
-            normal: {
-              color: color[0]
-            }
-          },
-          data: tempData[1].map(function(dataItem) {
-            return {
-              name: dataItem[1].name,
-              value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
-            };
-          })
-        }
-      );
-      this.options = options;
-    },
-    convertData(data) {
-      let res = [];
-      for (let i = 0; i < data.length; i++) {
-        let dataItem = data[i];
-        let fromCoord = geoCoordMap[dataItem[0].name];
-        let toCoord = geoCoordMap[dataItem[1].name];
-        if ("流入" == type) {
-          fromCoord = geoCoordMap[dataItem[1].name];
-          toCoord = geoCoordMap[dataItem[0].name];
-        }
-        if (fromCoord && toCoord) {
-          res.push({
-            fromName: dataItem[0].name,
-            toName: dataItem[1].name,
-            coords: [fromCoord, toCoord],
-            value: dataItem[1].value
-          });
-        }
-      }
-      return res;
-    }
-  }
-};
-</script>
-<style lang="scss" scoped>
-.echartMap {
-  width: 100%;
-  height: 100%;
-}
-.echarts {
-  width: 100%;
-  height: 100%;
-  overflow: hidden;
-}
-</style>

+ 5 - 5
report-ui/src/views/bigscreenDesigner/designer/widget/widgetTime.vue

@@ -94,11 +94,11 @@ export default {
     },
     formatWeek(date, fmt) {
       const year = date.getFullYear();
-      const month = date.getMonth() + 1;
-      const day = date.getDate();
-      const hours = date.getHours();
-      const minutes = date.getMinutes();
-      const seconds = date.getSeconds();
+      const month = this.check(date.getMonth() + 1);
+      const day = this.check(date.getDate());
+      const hours = this.check(date.getHours());
+      const minutes = this.check(date.getMinutes());
+      const seconds = this.check(date.getSeconds());
       let dayCycle = date.getDay();
       const dayCycleArray = ["日", "一", "二", "三", "四", "五", "六"];
       for (let i = 0; i < 7; i++) {

+ 1 - 1
report-ui/src/views/layout/components/Sidebar/index.vue

@@ -3,7 +3,7 @@
     <div class="admin-title" @click="goBigScreen">
       <div class="con">
         <img src="../../../../../static/logo-dp.png" width="50" />
-        <span class="version">V0.9.7.2</span>
+        <span class="version">V0.9.7.3</span>
       </div>
     </div>
     <el-menu

+ 2 - 2
report-ui/src/views/screenDesigner/components/temp.vue

@@ -30,7 +30,7 @@ import WidgetPiechart from "../widget/pieCharts/widgetPiechart.vue";
 import WidgetFunnel from "../widget/funnelCharts/widgetFunnel.vue";
 import WidgetGauge from "../widget/percentCharts/widgetGauge.vue";
 import WidgetPieNightingaleRoseArea from "../widget/pieCharts/widgetPieNightingaleRose";
-import widgetMap from "../widget/mapCharts/widgetMap.vue";
+import widgetLineMap from "../widget/mapCharts/widgetLineMap.vue";
 import widgetPiePercentageChart from "../widget/percentCharts/widgetPiePercentageChart";
 import widgetAirBubbleMap from "../widget/mapCharts/widgetAirBubbleMap";
 import widgetBarStackChart from "../widget/barCharts/widgetBarStackChart";
@@ -62,7 +62,7 @@ export default {
     WidgetFunnel,
     WidgetGauge,
     WidgetPieNightingaleRoseArea,
-    widgetMap,
+    widgetLineMap,
     widgetPiePercentageChart,
     widgetAirBubbleMap,
     widgetBarStackChart,

+ 2 - 2
report-ui/src/views/screenDesigner/config/configs.js

@@ -28,7 +28,7 @@ import {widgetBarlinechart} from "./barlineCharts/widget-barlinechart"
 import {widgetPiechart} from "./pieCharts/widget-piechart"
 import {widgetFunnel} from "./funnelCharts/widget-funnel"
 import {widgetGauge} from "./percentCharts/widget-gauge"
-import {widgetMap} from "./mapCharts/widget-map"
+import {widgetLineMap} from "./mapCharts/widget-line-map"
 import {widgetPieNightingale} from "./pieCharts/widget-pie-nightingale"
 import {widgetPiePercentage} from "./percentCharts/widget-pie-percentage"
 import {widgetAirbubbleMap} from "./mapCharts/widget-airbubble-map"
@@ -59,7 +59,7 @@ export const widgetTool = [
   widgetPiechart,
   widgetFunnel,
   widgetGauge,
-  widgetMap,
+  widgetLineMap,
   widgetPieNightingale,
   widgetPiePercentage,
   widgetAirbubbleMap,

+ 35 - 35
report-ui/src/views/screenDesigner/config/mapCharts/widget-airbubble-map.js

@@ -9,7 +9,7 @@
 export const widgetAirbubbleMap = {
   code: 'widgetAirBubbleMap',
   type: 'mapChart',
-  tabName: '地图',
+  tabName: '中国地图',
   label: '气泡地图',
   icon: 'iconzhongguoditu',
   options: {
@@ -21,7 +21,7 @@ export const widgetAirbubbleMap = {
         name: 'layerName',
         required: false,
         placeholder: '',
-        value: '气泡图',
+        value: '中国地图-气泡图',
       },
       {
         type: 'vue-color',
@@ -29,7 +29,7 @@ export const widgetAirbubbleMap = {
         name: 'background',
         required: false,
         placeholder: '',
-        value: '#0F1C3C'
+        value: ''
       },
       [
         {
@@ -297,38 +297,38 @@ export const widgetAirbubbleMap = {
         relactiveDomValue: 'staticData',
         value: [
           {"name": "南海诸岛", "value": 1},
-          {"name": "北京", "value": 524},
-          {"name": "天津", "value": 14},
-          {"name": "上海", "value": 150},
-          {"name": "重庆", "value": 75},
-          {"name": "河北", "value": 13},
-          {"name": "河南", "value": 83},
-          {"name": "云南", "value": 11},
-          {"name": "辽宁", "value": 19},
-          {"name": "黑龙江", "value": 15},
-          {"name": "湖南", "value": 69},
-          {"name": "安徽", "value": 260},
-          {"name": "山东", "value": 39},
-          {"name": "新疆", "value": 4},
-          {"name": "江苏", "value": 31},
-          {"name": "浙江", "value": 104},
-          {"name": "江西", "value": 36},
-          {"name": "湖北", "value": 1052},
-          {"name": "广西", "value": 33},
-          {"name": "甘肃", "value": 347},
-          {"name": "山西", "value": 8},
-          {"name": "内蒙古", "value": 157},
-          {"name": "陕西", "value": 22},
-          {"name": "吉林", "value": 4},
-          {"name": "福建", "value": 36},
-          {"name": "贵州", "value": 39},
-          {"name": "广东", "value": 996},
-          {"name": "青海", "value": 27},
-          {"name": "西藏", "value": 31},
-          {"name": "四川", "value": 46},
-          {"name": "宁夏", "value": 16},
-          {"name": "海南", "value": 22},
-          {"name": "台湾", "value": 6},
+          {"name": "北京", "value": 524},
+          {"name": "天津", "value": 14},
+          {"name": "上海", "value": 150},
+          {"name": "重庆", "value": 75},
+          {"name": "河北", "value": 13},
+          {"name": "河南", "value": 83},
+          {"name": "云南", "value": 11},
+          {"name": "辽宁", "value": 19},
+          {"name": "黑龙江", "value": 15},
+          {"name": "湖南", "value": 69},
+          {"name": "安徽", "value": 260},
+          {"name": "山东", "value": 39},
+          {"name": "新疆维吾尔自治区", "value": 4},
+          {"name": "江苏", "value": 31},
+          {"name": "浙江", "value": 104},
+          {"name": "江西", "value": 36},
+          {"name": "湖北", "value": 1052},
+          {"name": "广西壮族自治区", "value": 33},
+          {"name": "甘肃", "value": 347},
+          {"name": "山西", "value": 8},
+          {"name": "内蒙古自治区", "value": 157},
+          {"name": "陕西", "value": 22},
+          {"name": "吉林", "value": 4},
+          {"name": "福建", "value": 36},
+          {"name": "贵州", "value": 39},
+          {"name": "广东", "value": 996},
+          {"name": "青海", "value": 27},
+          {"name": "西藏自治区", "value": 31},
+          {"name": "四川", "value": 46},
+          {"name": "宁夏回族自治区", "value": 16},
+          {"name": "海南", "value": 22},
+          {"name": "台湾", "value": 6},
           {"name": "香港", "value": 2},
           {"name": "澳门", "value": 9}],
       },

+ 464 - 0
report-ui/src/views/screenDesigner/config/mapCharts/widget-line-map.js

@@ -0,0 +1,464 @@
+/*
+ * @Descripttion: 中国地图 json
+ * @version:
+ * @Author: qianlishi
+ * @Date: 2021-08-29 07:31:21
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2021-09-28 14:17:20
+ */
+export const widgetLineMap = {
+  code: 'widgetLineMap',
+  type: 'mapChart',
+  tabName: '中国地图',
+  label: '路线地图',
+  icon: 'iconzhongguoditu',
+  options: {
+    setup: [
+      {
+        type: 'el-input-text',
+        label: '图层名称',
+        name: 'layerName',
+        required: false,
+        placeholder: '',
+        value: '中国地图-路线图',
+      },
+      {
+        type: 'vue-color',
+        label: '背景颜色',
+        name: 'background',
+        required: false,
+        placeholder: '',
+        value: ''
+      },
+      [
+        {
+          name: '标题设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '标题',
+              name: 'isNoTitle',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-text',
+              label: '标题',
+              name: 'titleText',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'textColor',
+              required: false,
+              placeholder: '',
+              value: '#fff'
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'textFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体大小',
+              name: 'textFontSize',
+              required: false,
+              placeholder: '',
+              value: 20
+            },
+            {
+              type: 'el-select',
+              label: '字体位置',
+              name: 'textAlign',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'center'
+            },
+            {
+              type: 'el-input-text',
+              label: '副标题',
+              name: 'subText',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'subTextColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'subTextFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体大小',
+              name: 'subTextFontSize',
+              required: false,
+              placeholder: '',
+              value: 12
+            },
+          ],
+        },
+        {
+          name: '起点设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '起点显示',
+              name: 'isShowSource',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-number',
+              label: '点大小',
+              name: 'sourceSymbolSize',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '点颜色',
+              name: 'sourcePointColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-input-number',
+              label: '文字大小',
+              name: 'sourceFontTextSize',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'vue-color',
+              label: '文字颜色',
+              name: 'sourceFontTextColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-select',
+              label: '文字粗细',
+              name: 'sourceFontTextWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+          ],
+        },
+        {
+          name: '终点设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '终点显示',
+              name: 'isShowTarget',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-number',
+              label: '点大小',
+              name: 'targetSymbolSize',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '点颜色',
+              name: 'targetPointColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-input-number',
+              label: '文字大小',
+              name: 'targetFontTextSize',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'vue-color',
+              label: '文字颜色',
+              name: 'targetFontTextColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+            {
+              type: 'el-select',
+              label: '文字粗细',
+              name: 'targetFontTextWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+          ],
+        },
+        {
+          name: '图标设置',
+          list: [
+            {
+              type: 'el-select',
+              label: '图标样式',
+              name: 'symbol',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'arrow', name: '箭头'},
+                {code: 'plane', name: '飞机'},
+              ],
+              value: 'arrow'
+            },
+            {
+              type: 'el-input-number',
+              label: '动画速度',
+              name: 'symbolPeriod',
+              required: false,
+              placeholder: '',
+              value: 4,
+            },
+            {
+              type: 'el-input-number',
+              label: '图标大小',
+              name: 'symbolSize',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '图标颜色',
+              name: 'symbolColor',
+              required: false,
+              placeholder: '',
+              value: '#46bee9'
+            },
+          ],
+        },
+        {
+          name: '线设置',
+          list: [
+            {
+              type: 'vue-color',
+              label: '线颜色',
+              name: 'lineColor',
+              required: false,
+              placeholder: '',
+              value: '#ffa022'
+            },
+            {
+              type: 'el-input-number',
+              label: '线宽度',
+              name: 'lineWidth',
+              required: false,
+              placeholder: '',
+              value: 2,
+            },
+          ],
+        },
+        {
+          name: '地图颜色',
+          list: [
+            {
+              type: 'vue-color',
+              label: '地图块颜色',
+              name: 'blockColor',
+              required: false,
+              placeholder: '',
+              value: '#073684'
+            },
+            {
+              type: 'vue-color',
+              label: '边界颜色',
+              name: 'borderColor',
+              required: false,
+              placeholder: '',
+              value: '#061E3D'
+            },
+            {
+              type: 'vue-color',
+              label: '高亮颜色',
+              name: 'highlightColor',
+              required: false,
+              placeholder: '',
+              value: '#2B91B7'
+            },
+          ],
+        },
+      ]
+    ],
+    data: [
+      {
+        type: 'el-radio-group',
+        label: '数据类型',
+        name: 'dataType',
+        require: false,
+        placeholder: '',
+        selectValue: true,
+        selectOptions: [
+          {
+            code: 'staticData',
+            name: '静态数据',
+          },
+          {
+            code: 'dynamicData',
+            name: '动态数据',
+          },
+        ],
+        value: 'staticData',
+      },
+      {
+        type: 'el-input-number',
+        label: '刷新时间(毫秒)',
+        name: 'refreshTime',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'dynamicData',
+        value: 5000
+      },
+      {
+        type: 'el-button',
+        label: '静态数据',
+        name: 'staticData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'staticData',
+        value: [
+          {source: '北京市', target: '上海市', value: 95},
+          {source: '北京市', target: '广州市', value: 90},
+          {source: '北京市', target: '大连市', value: 80},
+          {source: '北京市', target: '南宁市', value: 70},
+          {source: '北京市', target: '南昌市', value: 60},
+          {source: '北京市', target: '拉萨市', value: 50},
+          {source: '北京市', target: '长春市', value: 40},
+          {source: '北京市', target: '包头市', value: 30},
+          {source: '北京市', target: '重庆市', value: 20},
+          {source: '北京市', target: '常州市', value: 10},
+          {source: '上海市', target: '包头市', value: 95},
+          {source: '上海市', target: '昆明市', value: 90},
+          {source: '上海市', target: '广州市', value: 80},
+          {source: '上海市', target: '郑州市', value: 70},
+          {source: '上海市', target: '长春市', value: 60},
+          {source: '上海市', target: '重庆市', value: 50},
+          {source: '上海市', target: '长沙市', value: 40},
+          {source: '上海市', target: '北京市', value: 30},
+          {source: '上海市', target: '丹东市', value: 20},
+          {source: '上海市', target: '大连市', value: 10},
+          {source: '广州市', target: '福州市', value: 95},
+          {source: '广州市', target: '太原市', value: 90},
+          {source: '广州市', target: '长春市', value: 80},
+          {source: '广州市', target: '重庆市', value: 70},
+          {source: '广州市', target: '西安市', value: 60},
+          {source: '广州市', target: '成都市', value: 50},
+          {source: '广州市', target: '常州市', value: 40},
+          {source: '广州市', target: '北京市', value: 30},
+          {source: '广州市', target: '北海市', value: 20},
+          {source: '广州市', target: '海口市', value: 10},
+        ],
+      },
+      {
+        type: 'dycustComponents',
+        label: '',
+        name: 'dynamicData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        chartType: 'widget-linemap',
+        dictKey: 'SOUTAR_PROPERTIES',
+        relactiveDomValue: 'dynamicData',
+        value: '',
+      },
+    ],
+    position: [
+      {
+        type: 'el-input-number',
+        label: '左边距',
+        name: 'left',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '上边距',
+        name: 'top',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '宽度',
+        name: 'width',
+        required: false,
+        placeholder: '该容器在1920px大屏中的宽度',
+        value: 600,
+      },
+      {
+        type: 'el-input-number',
+        label: '高度',
+        name: 'height',
+        required: false,
+        placeholder: '该容器在1080px大屏中的高度',
+        value: 400,
+      },
+    ]
+  }
+}

+ 0 - 62
report-ui/src/views/screenDesigner/config/mapCharts/widget-map.js

@@ -1,62 +0,0 @@
-/*
- * @Descripttion: 中国地图 json
- * @version:
- * @Author: qianlishi
- * @Date: 2021-08-29 07:31:21
- * @LastEditors: qianlishi
- * @LastEditTime: 2021-09-28 14:17:20
- */
-export const widgetMap = {
-  code: 'widget-map',
-  type: 'mapChart',
-  tabName: '地图',
-  label: '中国地图',
-  icon: 'iconzhongguoditu',
-  options: {
-    setup: [
-      {
-        type: 'el-input-text',
-        label: '图层名称',
-        name: 'layerName',
-        required: false,
-        placeholder: '',
-        value: '迁徙图',
-      },
-    ],
-    data: [],
-    position: [
-      {
-        type: 'el-input-number',
-        label: '左边距',
-        name: 'left',
-        required: false,
-        placeholder: '',
-        value: 0,
-      },
-      {
-        type: 'el-input-number',
-        label: '上边距',
-        name: 'top',
-        required: false,
-        placeholder: '',
-        value: 0,
-      },
-      {
-        type: 'el-input-number',
-        label: '宽度',
-        name: 'width',
-        required: false,
-        placeholder: '该容器在1920px大屏中的宽度',
-        value: 600,
-      },
-      {
-        type: 'el-input-number',
-        label: '高度',
-        name: 'height',
-        required: false,
-        placeholder: '该容器在1080px大屏中的高度',
-        value: 400,
-      },
-    ]
-  }
-}

+ 6 - 6
report-ui/src/views/screenDesigner/config/texts/widget-time.js

@@ -1,10 +1,10 @@
 /*
  * @Descripttion: 时间控件json
- * @version: 
+ * @version:
  * @Author: qianlishi
  * @Date: 2021-08-29 07:05:52
  * @LastEditors: qianlishi
- * @LastEditTime: 2022-03-11 10:38:16
+ * @LastEditTime: 2021-09-28 14:20:30
  */
 export const widgetTime =  {
     code: 'widget-time',
@@ -57,7 +57,7 @@ export const widgetTime =  {
           name: 'fontSize',
           required: false,
           placeholder: '',
-          value: '26'
+          value: '36'
         },
         {
           type: 'vue-color',
@@ -129,7 +129,7 @@ export const widgetTime =  {
           name: 'width',
           required: false,
           placeholder: '该容器在1920px大屏中的宽度',
-          value: 300,
+          value: 400,
         },
         {
           type: 'el-input-number',
@@ -137,8 +137,8 @@ export const widgetTime =  {
           name: 'height',
           required: false,
           placeholder: '该容器在1080px大屏中的高度',
-          value: 100,
+          value: 50,
         },
       ],
     }
-  }
+  }

+ 2 - 2
report-ui/src/views/screenDesigner/widget/index.vue

@@ -32,7 +32,7 @@ import WidgetPiechart from "./pieCharts/widgetPiechart.vue";
 import WidgetFunnel from "./funnelCharts/widgetFunnel.vue";
 import WidgetGauge from "./percentCharts/widgetGauge.vue";
 import WidgetPieNightingaleRoseArea from "./pieCharts/widgetPieNightingaleRose";
-import widgetMap from "./mapCharts/widgetMap.vue";
+import widgetLineMap from "./mapCharts/widgetLineMap.vue";
 import widgetPiePercentageChart from "./percentCharts/widgetPiePercentageChart";
 import widgetAirBubbleMap from "./mapCharts/widgetAirBubbleMap";
 import widgetBarStackChart from "./barCharts/widgetBarStackChart";
@@ -64,7 +64,7 @@ export default {
     WidgetFunnel,
     WidgetGauge,
     WidgetPieNightingaleRoseArea,
-    widgetMap,
+    widgetLineMap,
     widgetPiePercentageChart,
     widgetAirBubbleMap,
     widgetBarStackChart,

+ 34 - 32
report-ui/src/views/screenDesigner/widget/mapCharts/widgetAirBubbleMap.vue

@@ -9,38 +9,40 @@ import "../../../../../node_modules/echarts/map/js/china.js";
 //https://www.makeapie.com/editor.html?c=x2yaz6dfRw
 //https://www.makeapie.com/editor.html?c=xMpGBbTEKU
 let geoCoordMap = {
-  台湾: [121.5135, 25.0308],
-  黑龙江: [127.9688, 45.368],
-  内蒙古: [110.3467, 41.4899],
-  吉林: [125.8154, 44.2584],
-  北京: [116.4551, 40.2539],
-  辽宁: [123.1238, 42.1216],
-  河北: [114.4995, 38.1006],
-  天津: [117.4219, 39.4189],
-  山西: [112.3352, 37.9413],
-  陕西: [109.1162, 34.2004],
-  甘肃: [103.5901, 36.3043],
-  宁夏: [106.3586, 38.1775],
-  青海: [101.4038, 36.8207],
-  新疆: [87.9236, 43.5883],
-  西藏: [91.11, 29.97],
-  四川: [103.9526, 30.7617],
-  重庆: [108.384366, 30.439702],
-  山东: [117.1582, 36.8701],
-  河南: [113.4668, 34.6234],
-  江苏: [118.8062, 31.9208],
-  安徽: [117.29, 32.0581],
-  湖北: [114.3896, 30.6628],
-  浙江: [119.5313, 29.8773],
-  福建: [119.4543, 25.9222],
-  江西: [116.0046, 28.6633],
-  湖南: [113.0823, 28.2568],
-  贵州: [106.6992, 26.7682],
-  云南: [102.9199, 25.4663],
-  广东: [113.12244, 23.009505],
-  广西: [108.479, 23.1152],
-  海南: [110.3893, 19.8516],
-  上海: [121.4648, 31.2891]
+  台湾省: [121.5135, 25.0308],
+  黑龙江省: [127.9688, 45.368],
+  内蒙古自治区: [110.3467, 41.4899],
+  吉林省: [125.8154, 44.2584],
+  北京市: [116.4551, 40.2539],
+  辽宁省: [123.1238, 42.1216],
+  河北省: [114.4995, 38.1006],
+  天津市: [117.4219, 39.4189],
+  山西省: [112.3352, 37.9413],
+  陕西省: [109.1162, 34.2004],
+  甘肃省: [103.5901, 36.3043],
+  宁夏回族自治区: [106.3586, 38.1775],
+  青海省: [101.4038, 36.8207],
+  新疆维吾尔自治区: [87.9236, 43.5883],
+  西藏自治区: [91.11, 29.97],
+  四川省: [103.9526, 30.7617],
+  重庆市: [108.384366, 30.439702],
+  山东省: [117.1582, 36.8701],
+  河南省: [113.4668, 34.6234],
+  江苏省: [118.8062, 31.9208],
+  安徽省: [117.29, 32.0581],
+  湖北省: [114.3896, 30.6628],
+  浙江省: [119.5313, 29.8773],
+  福建省: [119.4543, 25.9222],
+  江西省: [116.0046, 28.6633],
+  湖南省: [113.0823, 28.2568],
+  贵州省: [106.6992, 26.7682],
+  云南省: [102.9199, 25.4663],
+  广东省: [113.12244, 23.009505],
+  广西壮族自治区: [108.479, 23.1152],
+  海南省: [110.3893, 19.8516],
+  上海市: [121.4648, 31.2891],
+  香港: [114.173355,22.320048],
+  澳门: [113.54909,22.198951]
 };
 let data = [
   {

+ 552 - 0
report-ui/src/views/screenDesigner/widget/mapCharts/widgetLineMap.vue

@@ -0,0 +1,552 @@
+<template>
+  <div :style="styleObj">
+    <v-chart :options="options" autoresize/>
+  </div>
+</template>
+<script>
+import "echarts/map/js/china.js";
+import echarts from "echarts";
+import {conversionCity} from '@/utils/china';
+/*let geoCoordMap = {
+  上海市: [121.4648, 31.2891],
+  东莞市: [113.8953, 22.901],
+  东营市: [118.7073, 37.5513],
+  中山市: [113.4229, 22.478],
+  临汾市: [111.4783, 36.1615],
+  临沂市: [118.3118, 35.2936],
+  丹东市: [124.541, 40.4242],
+  丽水市: [119.5642, 28.1854],
+  乌鲁木齐市: [87.9236, 43.5883],
+  佛山市: [112.8955, 23.1097],
+  保定市: [115.0488, 39.0948],
+  兰州市: [103.5901, 36.3043],
+  包头市: [110.3467, 41.4899],
+  北京市: [116.4551, 40.2539],
+  北海市: [109.314, 21.6211],
+  南京市: [118.8062, 31.9208],
+  南宁市: [108.479, 23.1152],
+  南昌市: [116.0046, 28.6633],
+  南通市: [121.1023, 32.1625],
+  厦门市: [118.1689, 24.6478],
+  台州市: [121.1353, 28.6688],
+  合肥市: [117.29, 32.0581],
+  呼和浩特市: [111.4124, 40.4901],
+  咸阳市: [108.4131, 34.8706],
+  哈尔滨市: [127.9688, 45.368],
+  唐山市: [118.4766, 39.6826],
+  嘉兴市: [120.9155, 30.6354],
+  大同市: [113.7854, 39.8035],
+  大连市: [122.2229, 39.4409],
+  天津市: [117.4219, 39.4189],
+  太原市: [112.3352, 37.9413],
+  威海市: [121.9482, 37.1393],
+  宁波市: [121.5967, 29.6466],
+  宝鸡市: [107.1826, 34.3433],
+  宿迁市: [118.5535, 33.7775],
+  常州市: [119.4543, 31.5582],
+  广州市: [113.5107, 23.2196],
+  廊坊市: [116.521, 39.0509],
+  延安市: [109.1052, 36.4252],
+  张家口市: [115.1477, 40.8527],
+  徐州市: [117.5208, 34.3268],
+  德州市: [116.6858, 37.2107],
+  惠州市: [114.6204, 23.1647],
+  成都市: [103.9526, 30.7617],
+  扬州市: [119.4653, 32.8162],
+  承德市: [117.5757, 41.4075],
+  拉萨市: [91.1865, 30.1465],
+  无锡市: [120.3442, 31.5527],
+  日照市: [119.2786, 35.5023],
+  昆明市: [102.9199, 25.4663],
+  杭州市: [119.5313, 29.8773],
+  枣庄市: [117.323, 34.8926],
+  柳州市: [109.3799, 24.9774],
+  株洲市: [113.5327, 27.0319],
+  武汉市: [114.3896, 30.6628],
+  汕头市: [117.1692, 23.3405],
+  江门市: [112.6318, 22.1484],
+  沈阳市: [123.1238, 42.1216],
+  沧州市: [116.8286, 38.2104],
+  河源市: [114.917, 23.9722],
+  泉州市: [118.3228, 25.1147],
+  泰安市: [117.0264, 36.0516],
+  泰州市: [120.0586, 32.5525],
+  济南市: [117.1582, 36.8701],
+  济宁市: [116.8286, 35.3375],
+  海口市: [110.3893, 19.8516],
+  淄博市: [118.0371, 36.6064],
+  淮安市: [118.927, 33.4039],
+  深圳市: [114.5435, 22.5439],
+  清远市: [112.9175, 24.3292],
+  温州市: [120.498, 27.8119],
+  渭南市: [109.7864, 35.0299],
+  湖州市: [119.8608, 30.7782],
+  湘潭市: [112.5439, 27.7075],
+  滨州市: [117.8174, 37.4963],
+  潍坊市: [119.0918, 36.524],
+  烟台市: [120.7397, 37.5128],
+  玉溪市: [101.9312, 23.8898],
+  珠海市: [113.7305, 22.1155],
+  盐城市: [120.2234, 33.5577],
+  盘锦市: [121.9482, 41.0449],
+  石家庄市: [114.4995, 38.1006],
+  福州市: [119.4543, 25.9222],
+  秦皇岛市: [119.2126, 40.0232],
+  绍兴市: [120.564, 29.7565],
+  聊城市: [115.9167, 36.4032],
+  肇庆市: [112.1265, 23.5822],
+  舟山市: [122.2559, 30.2234],
+  苏州市: [120.6519, 31.3989],
+  莱芜市: [117.6526, 36.2714],
+  菏泽市: [115.6201, 35.2057],
+  营口市: [122.4316, 40.4297],
+  葫芦岛市: [120.1575, 40.578],
+  衡水市: [115.8838, 37.7161],
+  衢州市: [118.6853, 28.8666],
+  西宁市: [101.4038, 36.8207],
+  西安市: [109.1162, 34.2004],
+  贵阳市: [106.6992, 26.7682],
+  连云港市: [119.1248, 34.552],
+  邢台市: [114.8071, 37.2821],
+  邯郸市: [114.4775, 36.535],
+  郑州市: [113.4668, 34.6234],
+  鄂尔多斯市: [108.9734, 39.2487],
+  重庆市: [107.7539, 30.1904],
+  金华市: [120.0037, 29.1028],
+  铜川市: [109.0393, 35.1947],
+  银川市: [106.3586, 38.1775],
+  镇江市: [119.4763, 31.9702],
+  长春市: [125.8154, 44.2584],
+  长沙市: [113.0823, 28.2568],
+  长治市: [112.8625, 36.4746],
+  阳泉市: [113.4778, 38.0951],
+  青岛市: [120.4651, 36.3373],
+  韶关市: [113.7964, 24.7028]
+};*/
+let geoCoordMap = conversionCity;
+let planePath =
+  "path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z";
+export default {
+  name: "widgetLineMap",
+  props: {
+    value: Object,
+    ispreview: Boolean
+  },
+  data() {
+    return {
+      options: {
+        title: {
+          left: "center",
+          textStyle: {
+            color: "#fff"
+          }
+        },
+        tooltip: {
+          trigger: 'item',
+          formatter: function (params, ticket, callback) {
+            if (params.seriesType == "effectScatter") {
+              return "线路:" + params.data.name + "" + params.data.value[2];
+            } else if (params.seriesType == "lines") {
+              return params.data.fromName + ">" + params.data.toName + "<br />" + params.data.value;
+            } else {
+              return params.name;
+            }
+          }
+        },
+        legend: {
+          show: true,
+          orient: 'vertical',
+          top: 'bottom',
+          left: 'right',
+          textStyle: {
+            color: '#fff'
+          },
+          selectedMode: 'multiple',
+        },
+        geo: {
+          map: "china",
+          label: {
+            emphasis: {
+              show: true,
+              color: "white"
+            }
+          },
+          roam: true,
+          itemStyle: {
+            normal: {
+              areaColor: "#323c48",
+              borderColor: "#404a59",
+              borderWidth: 1,
+            },
+            emphasis: {
+              areaColor: "#2a333d"
+            }
+          },
+        },
+        series: [
+          {
+            //name: tempData[0],
+            type: "lines",
+            zlevel: 1,
+            effect: {
+              show: false,
+              period: 6,
+              trailLength: 0.7,
+              color: "#fff",
+              symbolSize: 3
+            },
+            lineStyle: {
+              normal: {
+                color: '#a6c84c',
+                width: 0,
+                curveness: 0.2
+              }
+            },
+            data: [],
+          },
+          {
+            type: "lines",
+            zlevel: 2,
+            symbol: ['none', 'arrow'],
+            symbolSize: 10,
+            effect: {
+              show: true,
+              period: 4,
+              trailLength: 0,
+              symbol: 'arrow',
+              symbolSize: 5
+            },
+            lineStyle: {
+              normal: {
+                // 颜色+ 线条
+                color: '#ffa022',
+                width: 1,
+                opacity: 0.4,
+                curveness: 0.2
+              }
+            },
+            data: [],
+          },
+          {
+            // 起点
+            //name: tempData[0],
+            type: 'effectScatter',
+            coordinateSystem: 'geo',
+            zlevel: 2,
+            rippleEffect: {
+              brushType: 'stroke'
+            },
+            label: {
+              normal: {
+                show: true,
+                position: 'right',
+                formatter: '{b}',
+                fontSize: 22,
+              }
+            },
+            // 点的大小
+            symbolSize: 10,
+            itemStyle: {
+              normal: {
+                // 地图点颜色
+                color: '#46bee9'
+              }
+            },
+            data: [],
+          },
+          {
+            // 终点
+            //name: tempData[0],
+            type: 'effectScatter',
+            coordinateSystem: 'geo',
+            zlevel: 2,
+            rippleEffect: {
+              brushType: 'stroke'
+            },
+            label: {
+              normal: {
+                show: true,
+                position: 'right',
+                formatter: '{b}',
+                fontSize: 22,
+              }
+            },
+            // 点的大小
+            symbolSize: 10,
+            itemStyle: {
+              normal: {
+                // 地图点颜色
+                color: '#46bee9'
+              }
+            },
+            data: [],
+          },
+        ]
+      },
+      optionsSetup: {}
+    };
+  },
+  computed: {
+    styleObj() {
+      return {
+        position: this.ispreview ? "absolute" : "static",
+        width: this.optionsStyle.width + "px",
+        height: this.optionsStyle.height + "px",
+        left: this.optionsStyle.left + "px",
+        top: this.optionsStyle.top + "px",
+        background: this.optionsSetup.background
+      };
+    }
+  },
+  watch: {
+    value: {
+      handler(val) {
+        this.optionsStyle = val.position;
+        this.optionsData = val.data;
+        this.optionsSetup = val.setup;
+        this.editorOptions();
+      },
+      deep: true
+    }
+  },
+  created() {
+    this.optionsStyle = this.value.position;
+    this.optionsData = this.value.data;
+    this.optionsSetup = this.value.setup;
+  },
+  mounted() {
+    this.editorOptions();
+  },
+  methods: {
+    convertData(data) {
+      let res = [];
+      for (let i = 0; i < data.length; i++) {
+        let dataItem = data[i];
+        let sourceCoord = geoCoordMap[dataItem.source];
+        let targetCoord = geoCoordMap[dataItem.target];
+        if (sourceCoord && targetCoord) {
+          res.push({
+              fromName: dataItem.source,
+              toName: dataItem.target,
+              coords: [sourceCoord, targetCoord],
+              value: dataItem.value,
+            }
+          )
+        }
+        ;
+      }
+      return res;
+    },
+    editorOptions() {
+      this.setOptionsTitle();
+      this.setOptionsSource();
+      this.setOptionsTarget();
+      this.setOptionsSymbol();
+      this.setOptionsLine();
+      this.setOptionsColor();
+      this.setOptionsData();
+    },
+    // 标题设置
+    setOptionsTitle() {
+      const optionsSetup = this.optionsSetup;
+      const title = {};
+      title.show = optionsSetup.isNoTitle;
+      title.text = optionsSetup.titleText;
+      title.left = optionsSetup.textAlign;
+      title.textStyle = {
+        color: optionsSetup.textColor,
+        fontSize: optionsSetup.textFontSize,
+        fontWeight: optionsSetup.textFontWeight
+      };
+      title.subtext = optionsSetup.subText;
+      title.subtextStyle = {
+        color: optionsSetup.subTextColor,
+        fontWeight: optionsSetup.subTextFontWeight,
+        fontSize: optionsSetup.subTextFontSize
+      };
+      this.options.title = title;
+    },
+    // 起点设置
+    setOptionsSource(){
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[2];
+      const normal = {
+        show: optionsSetup.isShowSource,
+        position: 'right',
+        color: optionsSetup.sourceFontTextColor,
+        fontSize: optionsSetup.sourceFontTextSize,
+        fontWeight: optionsSetup.sourceFontTextWeight,
+      };
+      const itemStyle = {
+        normal: {
+          color: optionsSetup.sourcePointColor,
+        }
+      };
+      series.symbolSize = optionsSetup.sourceSymbolSize;
+      series.label.normal = normal;
+      series.itemStyle = itemStyle;
+    },
+    // 终点设置
+    setOptionsTarget(){
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[3];
+      const normal = {
+        show: optionsSetup.isShowTarget,
+        position: 'right',
+        color: optionsSetup.targetFontTextColor,
+        fontSize: optionsSetup.targetFontTextSize,
+        fontWeight: optionsSetup.targetFontTextWeight,
+      };
+      const itemStyle = {
+        normal: {
+          color: optionsSetup.targetPointColor,
+        }
+      };
+      series.symbolSize = optionsSetup.targetSymbolSize;
+      series.label.normal = normal;
+      series.itemStyle = itemStyle;
+    },
+    // 图标设置
+    setOptionsSymbol(){
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[1];
+      const effect = {
+        show: true,
+        period: this.setPeriod(optionsSetup),
+        trailLength: 0,
+        symbol: this.setSymbol(optionsSetup),
+        symbolSize: optionsSetup.symbolSize,
+        color: optionsSetup.symbolColor,
+      };
+      series['effect'] = effect;
+    },
+    setSymbol(optionsSetup) {
+      let symbol;
+      if (optionsSetup.symbol == 'plane') {
+        symbol = planePath;
+      } else {
+        symbol = "arrow";
+      }
+      return symbol;
+    },
+    setPeriod(optionsSetup){
+      let period;
+      if (optionsSetup.symbol == 'plane') {
+        period = optionsSetup.symbolPeriod - 1;
+      }else {
+        period = optionsSetup.symbolPeriod;
+      }
+      return period;
+    },
+    // 线设置
+    setOptionsLine() {
+      const optionsSetup = this.optionsSetup;
+      const series = this.options.series[1];
+      const lineStyle = {
+        normal: {
+          // 线条颜色
+          color: optionsSetup.lineColor,
+          width: optionsSetup.lineWidth,
+          opacity: 0.4,
+          curveness: 0.2
+        }
+      };
+      series['lineStyle'] = lineStyle;
+    },
+    // 地图颜色设置
+    setOptionsColor() {
+      const optionsSetup = this.optionsSetup;
+      const itemStyle = {
+        normal: {
+          // 地图的颜色
+          areaColor: optionsSetup.blockColor,
+          borderColor: optionsSetup.borderColor,
+        },
+        emphasis: {
+          // 地图块颜色
+          areaColor: optionsSetup.highlightColor,
+        }
+      };
+      this.options.geo["itemStyle"] = itemStyle;
+    },
+    //数据解析
+    setOptionsData() {
+      const optionsData = this.optionsData; // 数据类型 静态 or 动态
+      optionsData.dataType == "staticData"
+        ? this.staticDataFn(optionsData.staticData)
+        : this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);
+    },
+    staticDataFn(val) {
+      const series = this.options.series;
+      series[0]["data"] = this.convertData(val);
+      series[1]["data"] = this.convertData(val);
+      series[2]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.source,
+            value: geoCoordMap[dataItem.source].concat([dataItem.value])
+          }
+        }
+      });
+      series[3]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.target,
+            value: geoCoordMap[dataItem.target].concat([dataItem.value])
+          }
+        }
+      });
+    },
+    dynamicDataFn(val, refreshTime) {
+      if (!val) return;
+      if (this.ispreview) {
+        this.getEchartData(val);
+        this.flagInter = setInterval(() => {
+          this.getEchartData(val);
+        }, refreshTime);
+      } else {
+        this.getEchartData(val);
+      }
+    },
+    getEchartData(val) {
+      const data = this.queryEchartsData(val);
+      data.then(res => {
+        this.renderingFn(res);
+      });
+    },
+    renderingFn(val) {
+      const series = this.options.series;
+      series[0]["data"] = this.convertData(val);
+      series[1]["data"] = this.convertData(val);
+      series[2]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.source,
+            value: geoCoordMap[dataItem.source].concat([dataItem.value])
+          }
+        }
+      });
+      series[3]["data"] = val.map(function (dataItem) {
+        if (geoCoordMap[dataItem.source] && geoCoordMap[dataItem.target]) {
+          return {
+            name: dataItem.target,
+            value: geoCoordMap[dataItem.target].concat([dataItem.value])
+          }
+        }
+      });
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.echartMap {
+  width: 100%;
+  height: 100%;
+}
+
+.echarts {
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
+</style>

+ 0 - 468
report-ui/src/views/screenDesigner/widget/mapCharts/widgetMap.vue

@@ -1,468 +0,0 @@
-<template>
-  <div :style="styleObj">
-    <v-chart :options="options" autoresize />
-  </div>
-</template>
-<script>
-import "../../../../../node_modules/echarts/map/js/china.js";
-let GZData = [
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "福州",
-      value: 95
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "太原",
-      value: 90
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "长春",
-      value: 80
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "重庆",
-      value: 70
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "西安",
-      value: 60
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "成都",
-      value: 50
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "常州",
-      value: 40
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "北京",
-      value: 30
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "北海",
-      value: 20
-    }
-  ],
-  [
-    {
-      name: "广州"
-    },
-    {
-      name: "海口",
-      value: 10
-    }
-  ]
-];
-let geoCoordMap = {
-  上海: [121.4648, 31.2891],
-  东莞: [113.8953, 22.901],
-  东营: [118.7073, 37.5513],
-  中山: [113.4229, 22.478],
-  临汾: [111.4783, 36.1615],
-  临沂: [118.3118, 35.2936],
-  丹东: [124.541, 40.4242],
-  丽水: [119.5642, 28.1854],
-  乌鲁木齐: [87.9236, 43.5883],
-  佛山: [112.8955, 23.1097],
-  保定: [115.0488, 39.0948],
-  兰州: [103.5901, 36.3043],
-  包头: [110.3467, 41.4899],
-  北京: [116.4551, 40.2539],
-  北海: [109.314, 21.6211],
-  南京: [118.8062, 31.9208],
-  南宁: [108.479, 23.1152],
-  南昌: [116.0046, 28.6633],
-  南通: [121.1023, 32.1625],
-  厦门: [118.1689, 24.6478],
-  台州: [121.1353, 28.6688],
-  合肥: [117.29, 32.0581],
-  呼和浩特: [111.4124, 40.4901],
-  咸阳: [108.4131, 34.8706],
-  哈尔滨: [127.9688, 45.368],
-  唐山: [118.4766, 39.6826],
-  嘉兴: [120.9155, 30.6354],
-  大同: [113.7854, 39.8035],
-  大连: [122.2229, 39.4409],
-  天津: [117.4219, 39.4189],
-  太原: [112.3352, 37.9413],
-  威海: [121.9482, 37.1393],
-  宁波: [121.5967, 29.6466],
-  宝鸡: [107.1826, 34.3433],
-  宿迁: [118.5535, 33.7775],
-  常州: [119.4543, 31.5582],
-  广州: [113.5107, 23.2196],
-  廊坊: [116.521, 39.0509],
-  延安: [109.1052, 36.4252],
-  张家口: [115.1477, 40.8527],
-  徐州: [117.5208, 34.3268],
-  德州: [116.6858, 37.2107],
-  惠州: [114.6204, 23.1647],
-  成都: [103.9526, 30.7617],
-  扬州: [119.4653, 32.8162],
-  承德: [117.5757, 41.4075],
-  拉萨: [91.1865, 30.1465],
-  无锡: [120.3442, 31.5527],
-  日照: [119.2786, 35.5023],
-  昆明: [102.9199, 25.4663],
-  杭州: [119.5313, 29.8773],
-  枣庄: [117.323, 34.8926],
-  柳州: [109.3799, 24.9774],
-  株洲: [113.5327, 27.0319],
-  武汉: [114.3896, 30.6628],
-  汕头: [117.1692, 23.3405],
-  江门: [112.6318, 22.1484],
-  沈阳: [123.1238, 42.1216],
-  沧州: [116.8286, 38.2104],
-  河源: [114.917, 23.9722],
-  泉州: [118.3228, 25.1147],
-  泰安: [117.0264, 36.0516],
-  泰州: [120.0586, 32.5525],
-  济南: [117.1582, 36.8701],
-  济宁: [116.8286, 35.3375],
-  海口: [110.3893, 19.8516],
-  淄博: [118.0371, 36.6064],
-  淮安: [118.927, 33.4039],
-  深圳: [114.5435, 22.5439],
-  清远: [112.9175, 24.3292],
-  温州: [120.498, 27.8119],
-  渭南: [109.7864, 35.0299],
-  湖州: [119.8608, 30.7782],
-  湘潭: [112.5439, 27.7075],
-  滨州: [117.8174, 37.4963],
-  潍坊: [119.0918, 36.524],
-  烟台: [120.7397, 37.5128],
-  玉溪: [101.9312, 23.8898],
-  珠海: [113.7305, 22.1155],
-  盐城: [120.2234, 33.5577],
-  盘锦: [121.9482, 41.0449],
-  石家庄: [114.4995, 38.1006],
-  福州: [119.4543, 25.9222],
-  秦皇岛: [119.2126, 40.0232],
-  绍兴: [120.564, 29.7565],
-  聊城: [115.9167, 36.4032],
-  肇庆: [112.1265, 23.5822],
-  舟山: [122.2559, 30.2234],
-  苏州: [120.6519, 31.3989],
-  莱芜: [117.6526, 36.2714],
-  菏泽: [115.6201, 35.2057],
-  营口: [122.4316, 40.4297],
-  葫芦岛: [120.1575, 40.578],
-  衡水: [115.8838, 37.7161],
-  衢州: [118.6853, 28.8666],
-  西宁: [101.4038, 36.8207],
-  西安: [109.1162, 34.2004],
-  贵阳: [106.6992, 26.7682],
-  连云港: [119.1248, 34.552],
-  邢台: [114.8071, 37.2821],
-  邯郸: [114.4775, 36.535],
-  郑州: [113.4668, 34.6234],
-  鄂尔多斯: [108.9734, 39.2487],
-  重庆: [107.7539, 30.1904],
-  金华: [120.0037, 29.1028],
-  铜川: [109.0393, 35.1947],
-  银川: [106.3586, 38.1775],
-  镇江: [119.4763, 31.9702],
-  长春: [125.8154, 44.2584],
-  长沙: [113.0823, 28.2568],
-  长治: [112.8625, 36.4746],
-  阳泉: [113.4778, 38.0951],
-  青岛: [120.4651, 36.3373],
-  韶关: [113.7964, 24.7028]
-};
-let type = "流出";
-let color = ["#a6c84c", "#ffa022", "#46bee9"];
-let tempData = ["广州", GZData];
-let planePath =
-  "path://M1705.06,1318.313v-89.254l-319.9-221.799l0.073-208.063c0.521-84.662-26.629-121.796-63.961-121.491c-37.332-0.305-64.482,36.829-63.961,121.491l0.073,208.063l-319.9,221.799v89.254l330.343-157.288l12.238,241.308l-134.449,92.931l0.531,42.034l175.125-42.917l175.125,42.917l0.531-42.034l-134.449-92.931l12.238-241.308L1705.06,1318.313z";
-export default {
-  name: "widgetMap",
-  props: {
-    value: Object,
-    ispreview: Boolean
-  },
-  data() {
-    return {
-      options: {
-        title: {
-          text: "模拟迁徙",
-          subtext: "数据纯属虚构",
-          left: "center",
-          textStyle: {
-            color: "#fff"
-          }
-        },
-        tooltip: {
-          trigger: "item",
-          formatter: function(params) {
-            console.log(params);
-            if (params.seriesType == "effectScatter") {
-              if ("流入" == type) {
-                return (
-                  type +
-                  "<br>" +
-                  params.data.name +
-                  " ---> " +
-                  params.seriesName +
-                  "<br />人数:" +
-                  params.data.value[2] +
-                  "人"
-                );
-              } else {
-                return (
-                  "流出<br>" +
-                  params.seriesName +
-                  " ---> " +
-                  params.data.name +
-                  "<br />人数:" +
-                  params.data.value[2] +
-                  "人"
-                );
-              }
-            } else if (params.seriesType == "lines") {
-              if ("流入" == type) {
-                return (
-                  type +
-                  "<br>" +
-                  params.data.toName +
-                  " ---> " +
-                  params.data.fromName +
-                  "<br />人数:" +
-                  params.data.value +
-                  "人"
-                );
-              } else {
-                return (
-                  type +
-                  "<br>" +
-                  params.data.fromName +
-                  " ---> " +
-                  params.data.toName +
-                  "<br />人数:" +
-                  params.data.value +
-                  "人"
-                );
-              }
-            } else {
-              return params.name;
-            }
-          }
-        },
-        legend: {
-          show: false,
-          orient: "vertical",
-          top: "bottom",
-          left: "right",
-          data: ["广州"],
-          textStyle: {
-            color: "#fff"
-          },
-          selectedMode: "single"
-        },
-        geo: {
-          map: "china",
-          label: {
-            emphasis: {
-              //show: false,
-              show: true,
-              color: "white"
-            }
-          },
-          roam: true,
-          itemStyle: {
-            normal: {
-              areaColor: "#323c48",
-              borderColor: "#404a59"
-            },
-            emphasis: {
-              areaColor: "#2a333d"
-            }
-          }
-        },
-        series: []
-      },
-      optionsSetup: {}
-    };
-  },
-  computed: {
-    styleObj() {
-      return {
-        position: this.ispreview ? "absolute" : "static",
-        width: this.optionsStyle.width + "px",
-        height: this.optionsStyle.height + "px",
-        left: this.optionsStyle.left + "px",
-        top: this.optionsStyle.top + "px",
-        background: this.optionsSetup.background
-      };
-    }
-  },
-  watch: {
-    value: {
-      handler(val) {
-        this.optionsStyle = val.position;
-      },
-      deep: true
-    }
-  },
-  created() {
-    this.optionsStyle = this.value.position;
-  },
-  mounted() {
-    this.initData();
-  },
-  methods: {
-    initData() {
-      const options = this.options;
-      options.series.push(
-        {
-          name: tempData[0],
-          type: "lines",
-          zlevel: 1,
-          effect: {
-            show: true,
-            period: 6,
-            trailLength: 0.7,
-            color: "#fff",
-            symbolSize: 3
-          },
-          lineStyle: {
-            normal: {
-              color: color[0],
-              width: 0,
-              curveness: 0.2
-            }
-          },
-          data: this.convertData(tempData[1])
-        },
-        {
-          name: tempData[0],
-          type: "lines",
-          zlevel: 2,
-          effect: {
-            show: true,
-            period: 6,
-            trailLength: 0,
-            symbol: planePath,
-            symbolSize: 15
-          },
-          lineStyle: {
-            normal: {
-              color: color[0],
-              width: 1,
-              opacity: 0.4,
-              curveness: 0.2
-            }
-          },
-          data: this.convertData(tempData[1])
-        },
-        {
-          name: tempData[0],
-          type: "effectScatter",
-          coordinateSystem: "geo",
-          zlevel: 2,
-          rippleEffect: {
-            brushType: "stroke"
-          },
-          label: {
-            normal: {
-              show: true,
-              position: "right",
-              formatter: "{b}"
-            }
-          },
-          symbolSize: function(val) {
-            return val[2] / 8;
-          },
-          itemStyle: {
-            normal: {
-              color: color[0]
-            }
-          },
-          data: tempData[1].map(function(dataItem) {
-            return {
-              name: dataItem[1].name,
-              value: geoCoordMap[dataItem[1].name].concat([dataItem[1].value])
-            };
-          })
-        }
-      );
-      this.options = options;
-    },
-    convertData(data) {
-      let res = [];
-      for (let i = 0; i < data.length; i++) {
-        let dataItem = data[i];
-        let fromCoord = geoCoordMap[dataItem[0].name];
-        let toCoord = geoCoordMap[dataItem[1].name];
-        if ("流入" == type) {
-          fromCoord = geoCoordMap[dataItem[1].name];
-          toCoord = geoCoordMap[dataItem[0].name];
-        }
-        if (fromCoord && toCoord) {
-          res.push({
-            fromName: dataItem[0].name,
-            toName: dataItem[1].name,
-            coords: [fromCoord, toCoord],
-            value: dataItem[1].value
-          });
-        }
-      }
-      return res;
-    }
-  }
-};
-</script>
-<style lang="scss" scoped>
-.echartMap {
-  width: 100%;
-  height: 100%;
-}
-.echarts {
-  width: 100%;
-  height: 100%;
-  overflow: hidden;
-}
-</style>

+ 5 - 5
report-ui/src/views/screenDesigner/widget/texts/widgetTime.vue

@@ -94,11 +94,11 @@ export default {
     },
     formatWeek(date, fmt) {
       const year = date.getFullYear();
-      const month = date.getMonth() + 1;
-      const day = date.getDate();
-      const hours = date.getHours();
-      const minutes = date.getMinutes();
-      const seconds = date.getSeconds();
+      const month = this.check(date.getMonth() + 1);
+      const day = this.check(date.getDate());
+      const hours = this.check(date.getHours());
+      const minutes = this.check(date.getMinutes());
+      const seconds = this.check(date.getSeconds());
       let dayCycle = date.getDay();
       const dayCycleArray = ["日", "一", "二", "三", "四", "五", "六"];
       for (let i = 0; i < 7; i++) {