!80 update0.9.7.3

Merge pull request !80 from Foming/dev
V0.9.7.3
Foming 2 years ago committed by Gitee
commit af27c6c173
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F

@ -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>

@ -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>**

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

@ -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

@ -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);

@ -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 => {

@ -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]
}

@ -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,
},
]
}
}

@ -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,
},
]
}
}

@ -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,
},
]
}
}

@ -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,
},
],
}
}
}

@ -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,

@ -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

@ -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>

@ -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,

@ -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,

@ -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>

@ -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++) {

@ -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

@ -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,

@ -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,

@ -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}],
},

@ -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,
},
]
}
}

@ -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,
},
]
}
}

@ -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,
},
],
}
}
}

@ -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,

@ -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 = [
{

@ -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>

@ -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>

@ -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++) {

Loading…
Cancel
Save