From a8c4e3a469a62cf6b0047f5580c22c176f4158bb Mon Sep 17 00:00:00 2001 From: "liu.tao3" Date: Wed, 30 Aug 2023 09:12:54 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=E9=A3=9E=E7=BA=BF=E5=9B=BE=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packages/BasicComponents/FlyMap/index.vue | 282 +++++++++++++ .../BasicComponents/FlyMap/json/mapData.js | 219 ++++++++++ .../BasicComponents/FlyMap/setting.vue | 382 ++++++++++++++++++ .../BasicComponents/FlyMap/settingConfig.js | 123 ++++++ .../RightSetting/DataSetting.vue | 2 +- .../packages/BigScreenDesign/index.vue | 2 +- .../src/OriginalEditForm.vue | 2 - data-room-ui/packages/G2Plots/plotList.js | 3 +- .../packages/js/mixins/commonMixins.js | 2 +- data-room-ui/packages/js/store/mutations.js | 2 +- 10 files changed, 1012 insertions(+), 7 deletions(-) create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/index.vue create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/setting.vue create mode 100644 data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js diff --git a/data-room-ui/packages/BasicComponents/FlyMap/index.vue b/data-room-ui/packages/BasicComponents/FlyMap/index.vue new file mode 100644 index 00000000..b8ff869f --- /dev/null +++ b/data-room-ui/packages/BasicComponents/FlyMap/index.vue @@ -0,0 +1,282 @@ + + + + diff --git a/data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js b/data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js new file mode 100644 index 00000000..4b6a6f7a --- /dev/null +++ b/data-room-ui/packages/BasicComponents/FlyMap/json/mapData.js @@ -0,0 +1,219 @@ +export const nameMap = { + Afghanistan: '阿富汗', + Singapore: '新加坡', + Angola: '安哥拉', + Albania: '阿尔巴尼亚', + 'United Arab Emirates': '阿联酋', + Argentina: '阿根廷', + Armenia: '亚美尼亚', + 'French Southern and Antarctic Lands': + '法属南半球和南极领地', + Australia: '澳大利亚', + Austria: '奥地利', + Azerbaijan: '阿塞拜疆', + Burundi: '布隆迪', + Belgium: '比利时', + Benin: '贝宁', + 'Burkina Faso': '布基纳法索', + Bangladesh: '孟加拉国', + Bulgaria: '保加利亚', + 'The Bahamas': '巴哈马', + 'Bosnia and Herzegovina': '波斯尼亚和黑塞哥维那', + Belarus: '白俄罗斯', + Belize: '伯利兹', + Bermuda: '百慕大', + Bolivia: '玻利维亚', + Brazil: '巴西', + Brunei: '文莱', + Bhutan: '不丹', + Botswana: '博茨瓦纳', + 'Central African Republic': '中非共和国', + Canada: '加拿大', + Switzerland: '瑞士', + Chile: '智利', + China: '中国', + 'Ivory Coast': '象牙海岸', + Cameroon: '喀麦隆', + 'Democratic Republic of the Congo': '刚果民主共和国', + 'Republic of the Congo': '刚果共和国', + Colombia: '哥伦比亚', + 'Costa Rica': '哥斯达黎加', + Cuba: '古巴', + 'Northern Cyprus': '北塞浦路斯', + Cyprus: '塞浦路斯', + 'Czech Republic': '捷克共和国', + Germany: '德国', + Djibouti: '吉布提', + Denmark: '丹麦', + 'Dominican Republic': '多明尼加共和国', + Algeria: '阿尔及利亚', + Ecuador: '厄瓜多尔', + Egypt: '埃及', + Eritrea: '厄立特里亚', + Spain: '西班牙', + Estonia: '爱沙尼亚', + Ethiopia: '埃塞俄比亚', + Finland: '芬兰', + Fiji: '斐', + 'Falkland Islands': '福克兰群岛', + France: '法国', + Gabon: '加蓬', + 'United Kingdom': '英国', + Georgia: '格鲁吉亚', + Ghana: '加纳', + Guinea: '几内亚', + Gambia: '冈比亚', + 'Guinea Bissau': '几内亚比绍', + Greece: '希腊', + Greenland: '格陵兰', + Guatemala: '危地马拉', + 'French Guiana': '法属圭亚那', + Guyana: '圭亚那', + Honduras: '洪都拉斯', + Croatia: '克罗地亚', + Haiti: '海地', + Hungary: '匈牙利', + Indonesia: '印度尼西亚', + India: '印度', + Ireland: '爱尔兰', + Iran: '伊朗', + Iraq: '伊拉克', + Iceland: '冰岛', + Israel: '以色列', + Italy: '意大利', + Jamaica: '牙买加', + Jordan: '约旦', + Japan: '日本', + Kazakhstan: '哈萨克斯坦', + Kenya: '肯尼亚', + Kyrgyzstan: '吉尔吉斯斯坦', + Cambodia: '柬埔寨', + Kosovo: '科索沃', + Kuwait: '科威特', + Laos: '老挝', + Lebanon: '黎巴嫩', + Liberia: '利比里亚', + Libya: '利比亚', + 'Sri Lanka': '斯里兰卡', + Lesotho: '莱索托', + Lithuania: '立陶宛', + Luxembourg: '卢森堡', + Latvia: '拉脱维亚', + Morocco: '摩洛哥', + Moldova: '摩尔多瓦', + Madagascar: '马达加斯加', + Mexico: '墨西哥', + Macedonia: '马其顿', + Mali: '马里', + Myanmar: '缅甸', + Montenegro: '黑山', + Mongolia: '蒙古', + Mozambique: '莫桑比克', + Mauritania: '毛里塔尼亚', + Malawi: '马拉维', + Malaysia: '马来西亚', + Namibia: '纳米比亚', + 'New Caledonia': '新喀里多尼亚', + Niger: '尼日尔', + Nigeria: '尼日利亚', + Nicaragua: '尼加拉瓜', + Netherlands: '荷兰', + Norway: '挪威', + Nepal: '尼泊尔', + 'New Zealand': '新西兰', + Oman: '阿曼', + Pakistan: '巴基斯坦', + Panama: '巴拿马', + Peru: '秘鲁', + Philippines: '菲律宾', + 'Papua New Guinea': '巴布亚新几内亚', + Poland: '波兰', + 'Puerto Rico': '波多黎各', + 'North Korea': '北朝鲜', + Portugal: '葡萄牙', + Paraguay: '巴拉圭', + Qatar: '卡塔尔', + Romania: '罗马尼亚', + Russia: '俄罗斯', + Rwanda: '卢旺达', + 'Western Sahara': '西撒哈拉', + 'Saudi Arabia': '沙特阿拉伯', + Sudan: '苏丹', + 'South Sudan': '南苏丹', + Senegal: '塞内加尔', + 'Solomon Islands': '所罗门群岛', + 'Sierra Leone': '塞拉利昂', + 'El Salvador': '萨尔瓦多', + Somaliland: '索马里兰', + Somalia: '索马里', + 'Republic of Serbia': '塞尔维亚', + Suriname: '苏里南', + Slovakia: '斯洛伐克', + Slovenia: '斯洛文尼亚', + Sweden: '瑞典', + Swaziland: '斯威士兰', + Syria: '叙利亚', + Chad: '乍得', + Togo: '多哥', + Thailand: '泰国', + Tajikistan: '塔吉克斯坦', + Turkmenistan: '土库曼斯坦', + 'East Timor': '东帝汶', + 'Trinidad and Tobago': '特里尼达和多巴哥', + Tunisia: '突尼斯', + Turkey: '土耳其', + 'United Republic of Tanzania': '坦桑尼亚', + Uganda: '乌干达', + Ukraine: '乌克兰', + Uruguay: '乌拉圭', + 'United States': '美国', + Uzbekistan: '乌兹别克斯坦', + Venezuela: '委内瑞拉', + Vietnam: '越南', + Vanuatu: '瓦努阿图', + 'West Bank': '西岸', + Yemen: '也门', + 'South Africa': '南非', + Zambia: '赞比亚', + Korea: '韩国', + Tanzania: '坦桑尼亚', + Zimbabwe: '津巴布韦', + Congo: '刚果', + 'Central African Rep.': '中非', + Serbia: '塞尔维亚', + 'Bosnia and Herz.': '波黑', + 'Czech Rep.': '捷克', + 'W. Sahara': '西撒哈拉', + 'Lao PDR': '老挝', + 'Dem.Rep.Korea': '朝鲜', + 'Falkland Is.': '福克兰群岛', + 'Timor-Leste': '东帝汶', + 'Solomon Is.': '所罗门群岛', + Palestine: '巴勒斯坦', + 'N. Cyprus': '北塞浦路斯', + Aland: '奥兰群岛', + 'Fr. S. Antarctic Lands': '法属南半球和南极陆地', + Mauritius: '毛里求斯', + Comoros: '科摩罗', + 'Eq. Guinea': '赤道几内亚', + 'Guinea-Bissau': '几内亚比绍', + 'Dominican Rep.': '多米尼加', + 'Saint Lucia': '圣卢西亚', + Dominica: '多米尼克', + 'Antigua and Barb.': '安提瓜和巴布达', + 'U.S. Virgin Is.': '美国原始岛屿', + Montserrat: '蒙塞拉特', + Grenada: '格林纳达', + Barbados: '巴巴多斯', + Samoa: '萨摩亚', + Bahamas: '巴哈马', + 'Cayman Is.': '开曼群岛', + 'Faeroe Is.': '法罗群岛', + 'IsIe of Man': '马恩岛', + Malta: '马耳他共和国', + Jersey: '泽西', + 'Cape Verde': '佛得角共和国', + 'Turks and Caicos Is.': '特克斯和凯科斯群岛', + 'St. Vin. and Gren.': '圣文森特和格林纳丁斯' +} + diff --git a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue new file mode 100644 index 00000000..8ae82e57 --- /dev/null +++ b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue @@ -0,0 +1,382 @@ + + + + diff --git a/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js b/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js new file mode 100644 index 00000000..ddada981 --- /dev/null +++ b/data-room-ui/packages/BasicComponents/FlyMap/settingConfig.js @@ -0,0 +1,123 @@ +import { commonConfig, displayOption } from 'data-room-ui/js/config' +// import Icon from 'data-room-ui/assets/images/bigScreenIcon/export' +import cloneDeep from 'lodash/cloneDeep' +import * as iconData from 'data-room-ui/assets/symbols/bigScreenIcon/iconfont.json' +const iconNames = iconData.glyphs.map(item => item.name).sort((a, b) => a.localeCompare(b)) +export const settingConfig = { + padding: [30, 30, 50, 80], + legend: false, + isGroup: true, + data: [], + color: '', + theme: 'dark', + displayOption: { + ...displayOption, + params: { + enable: true + }, + headerField: { + enable: false + }, + mapField: { + enable: false + }, + metricField: { + // 指标 + label: '维度', + enable: false, + multiple: false // 是否多选 + }, + dimensionField: { + // 表格列 + label: '展示字段', // 维度/查询字段 + enable: false, + multiple: false // 是否多选 + } + } +} +const customConfig = { + type: 'flyMap', + root: { + version: '2023071001', + contribution: false + }, + customize: { + // 是否显示文字 + mapName: false, + // 悬浮框背景色 + tooltipBackgroundColor: '#0C121C', + // 悬浮框边框色 + borderColor: 'rgba(0, 0, 0, 0.16)', + // 悬浮框字体颜色 + fontColor:'#DADADA', + // 打点图背景颜色 + scatterBackgroundColor: 'rgba(255,0,0,.7)', + // 打点图文字颜色 + scatterColor: 'rgba(165, 108, 91, 1)', + // 打点图中心点文字颜色 + scatterCenterColor:'rgba(205, 196, 110, 1)', + // 分割线颜色 + mapLineColor: 'rgba(53, 86, 165, 1)', + // 水印字体颜色 + fontGraphicColor: '#fff', + fontSize:'30', + // 是否开启下钻 + down: false, + // 轨迹图像 + symbol: 'arrow', + // 轨迹颜色 + symbolColor: '#01AAED', + // 轨迹大小 + symbolSize:8, + // 地图级别 + level: 'country', + // 范围 + scope: '中国', + // 地图区域颜色 + areaColor: 'rgba(31, 50, 121, 1)', + // 是否开启筛选 + visual: true, + graphic:['中华人民共和国'], + // 筛选范围 + range: [0, 100], + scatterFormatter:'`

${params.name}

`', + // 格式化脚本 + lineFormatter:'`

销售额

${params.data.msg.from}-->${params.data.msg.to} ${params.data.msg.value}
`', + // 从上到下的颜色 + rangeColor: ['rgba(165, 108, 91, 1)', 'rgba(205, 196, 110, 1)'], + // 地图数据 + dataMap: '中华人民共和国.json', + // 展示字段 + value: '', + // 横坐标 + xaxis: '', + // 纵坐标 + yaxis: '', + // 名称 + name: '' + + } +} + +export const dataConfig = { + ...commonConfig(customConfig) +} + +export const FlyMapData = { + name: '飞线图', + title: '飞线图', + icon: iconNames[5], + className: + 'com.gccloud.dataroom.core.module.chart.components.ScreenFlyMapChart', + w: 800, + h: 700, + x: 0, + y: 0, + type: 'flyMap', + option: { + ...cloneDeep(settingConfig) + }, + setting: undefined, // 右侧面板自定义配置 + dataHandler: {}, // 数据自定义处理js脚本 + ...cloneDeep(dataConfig) +} diff --git a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue index 0ea4c61e..3319dda8 100644 --- a/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue +++ b/data-room-ui/packages/BigScreenDesign/RightSetting/DataSetting.vue @@ -67,7 +67,7 @@ class="data-setting-data-box" >
-
+
数据配置
diff --git a/data-room-ui/packages/BigScreenDesign/index.vue b/data-room-ui/packages/BigScreenDesign/index.vue index 344b520b..b3a54ac5 100644 --- a/data-room-ui/packages/BigScreenDesign/index.vue +++ b/data-room-ui/packages/BigScreenDesign/index.vue @@ -406,7 +406,7 @@ export default { }, // 自定义属性更新 updateSetting (config) { - if (config.type === 'map' || config.type === 'video') { + if (config.type === 'map' || config.type === 'video' ||config.type === 'flyMap') { config.key = new Date().getTime() } this.changeChartConfig(cloneDeep(config)) diff --git a/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue b/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue index 899ad5ed..bde96801 100644 --- a/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue +++ b/data-room-ui/packages/DataSetManagement/src/OriginalEditForm.vue @@ -162,7 +162,6 @@ :key="table.name" :label="table.name" :value="table.name" - :disabled="table.status == 1" /> @@ -171,7 +170,6 @@ :key="table.name" :label="table.name" :value="table.name" - :disabled="table.status == 1" /> diff --git a/data-room-ui/packages/G2Plots/plotList.js b/data-room-ui/packages/G2Plots/plotList.js index 6891740f..f2312a4f 100644 --- a/data-room-ui/packages/G2Plots/plotList.js +++ b/data-room-ui/packages/G2Plots/plotList.js @@ -5,6 +5,7 @@ */ import { dataConfig, settingConfig } from '../PlotRender/settingConfig' import { mapData } from 'data-room-ui/BasicComponents/Map/settingConfig' +import { FlyMapData } from 'data-room-ui/BasicComponents/FlyMap/settingConfig' // import _ from 'lodash' import cloneDeep from 'lodash/cloneDeep' import sortList from './plotListSort' @@ -85,5 +86,5 @@ export function getCustomPlots () { return list } -const plots = [...plotList, ...customPlots, mapData] +const plots = [...plotList, ...customPlots, mapData,FlyMapData] export default plots diff --git a/data-room-ui/packages/js/mixins/commonMixins.js b/data-room-ui/packages/js/mixins/commonMixins.js index 8e1565f2..d0d536db 100644 --- a/data-room-ui/packages/js/mixins/commonMixins.js +++ b/data-room-ui/packages/js/mixins/commonMixins.js @@ -26,7 +26,7 @@ export default { } }, mounted () { - if (!['tables'].includes(this.config.type)) { + if (!['tables', 'flyMap', 'map'].includes(this.config.type)) { this.chartInit() } this.watchCacheData() diff --git a/data-room-ui/packages/js/store/mutations.js b/data-room-ui/packages/js/store/mutations.js index fc17d4b1..bd192a85 100644 --- a/data-room-ui/packages/js/store/mutations.js +++ b/data-room-ui/packages/js/store/mutations.js @@ -66,7 +66,7 @@ export default { state.pageLoading = booleanValue }, // 改变当前组件配置 - changeChartConfig (state, itemConfig) { + changeChartConfig(state, itemConfig) { const index = state.pageInfo.chartList.findIndex( item => item.code === itemConfig.code ) From b057e703147e05f8ba2e9d65721756bdbdadec9e Mon Sep 17 00:00:00 2001 From: "hong.yang" Date: Wed, 30 Aug 2023 11:04:04 +0800 Subject: [PATCH 2/4] =?UTF-8?q?docs:=20=E4=BF=AE=E6=94=B9readme=EF=BC=8C?= =?UTF-8?q?=E6=94=AF=E6=8C=81MSSQL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改readme,支持MSSQL --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba3e81a6..a473d801 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Company

-🔥DataRoom是一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备大屏设计、预览能力,支持MySQL、Oracle、PostgreSQL、JSON、JS、HTTP、Groovy等数据集接入,使用简单,完全免费,代码开源。 +🔥DataRoom是一款基于SpringBoot、MyBatisPlus、ElementUI、G2Plot、Echarts等技术栈的大屏设计器,具备大屏设计、预览能力,支持MySQL、Oracle、PostgreSQL、MSSQL、JSON、JS、HTTP、Groovy等数据集接入,使用简单,完全免费,代码开源。 ## 效果图 From 4c90353251b849bfe3813c7c98be4e1532599809 Mon Sep 17 00:00:00 2001 From: "liu.tao3" Date: Wed, 30 Aug 2023 11:45:24 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=E9=A3=9E=E7=BA=BF=E5=9B=BE=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data-room-ui/package-lock.json | 84 +++++++++---------- .../packages/BasicComponents/FlyMap/index.vue | 73 ++++++++++++---- .../BasicComponents/FlyMap/setting.vue | 36 +++++++- .../BasicComponents/FlyMap/settingConfig.js | 5 +- .../images/bigScreenIcon/svg/18flyMap.svg | 1 + data-room-ui/packages/js/store/mutations.js | 2 +- 6 files changed, 137 insertions(+), 64 deletions(-) create mode 100644 data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg diff --git a/data-room-ui/package-lock.json b/data-room-ui/package-lock.json index a92d268f..c742673e 100644 --- a/data-room-ui/package-lock.json +++ b/data-room-ui/package-lock.json @@ -1,6 +1,6 @@ { "name": "@gcpaas/data-room-ui", - "version": "1.0.1-2023082201-Alpha", + "version": "1.0.1-2023082902-Alpha", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -3397,27 +3397,6 @@ "whatwg-fetch": "^3.6.2" }, "dependencies": { - "@vue/vue-loader-v15": { - "version": "npm:vue-loader@15.10.2", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz", - "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==", - "dev": true, - "requires": { - "@vue/component-compiler-utils": "^3.1.0", - "hash-sum": "^1.0.2", - "loader-utils": "^1.1.0", - "vue-hot-reload-api": "^2.3.0", - "vue-style-loader": "^4.1.0" - }, - "dependencies": { - "hash-sum": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", - "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", - "dev": true - } - } - }, "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", @@ -3489,26 +3468,6 @@ "tapable": "^2.0.0" } }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", - "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3726,6 +3685,47 @@ "lodash": "^4.17.4" } }, + "@vue/vue-loader-v15": { + "version": "npm:vue-loader@15.10.2", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.10.2.tgz", + "integrity": "sha512-ndeSe/8KQc/nlA7TJ+OBhv2qalmj1s+uBs7yHDRFaAXscFTApBzY9F1jES3bautmgWjDlDct0fw8rPuySDLwxw==", + "dev": true, + "requires": { + "@vue/component-compiler-utils": "^3.1.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "vue-hot-reload-api": "^2.3.0", + "vue-style-loader": "^4.1.0" + }, + "dependencies": { + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==", + "dev": true + }, + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, "@vue/vue2-jest": { "version": "27.0.0", "resolved": "https://registry.npmjs.org/@vue/vue2-jest/-/vue2-jest-27.0.0.tgz", diff --git a/data-room-ui/packages/BasicComponents/FlyMap/index.vue b/data-room-ui/packages/BasicComponents/FlyMap/index.vue index b8ff869f..49dbbd49 100644 --- a/data-room-ui/packages/BasicComponents/FlyMap/index.vue +++ b/data-room-ui/packages/BasicComponents/FlyMap/index.vue @@ -32,7 +32,8 @@ export default { data () { return { charts: null, - hasData: false + hasData: false, + level:'' } }, computed: { @@ -88,7 +89,7 @@ export default { this.charts = echarts.init( document.getElementById(`chart${this.config.code}`) ) - + this.level=config.customize.level const lines_coord = [] let fromCoord=[] let coord=[] @@ -107,7 +108,7 @@ export default { }) echarts.registerMap(config.customize.scope, res) const option = { - // nameMap: nameMap, + nameMap:config.customize.level=='world'?nameMap:'', graphic: [ ], geo: { @@ -239,30 +240,68 @@ export default { } } if(config.customize.down){ - config?.customize?.graphic?.forEach((item,index)=>{ + // config?.customize?.graphic?.forEach((item,index)=>{ option.graphic.push({ type: "text", - left: `${(index+1) * 200}px`, - top: "2%", + left: `250px`, + top: "5%", style: { - text: item, + text: '中国', font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`, fill: config.customize.fontGraphicColor, }, - onclick:()=>{ - console.log(item,item=='中华人民共和国'?'country': 'province') - const arr=config.customize.graphic.slice(0,index+1) - console.log(arr,config.customize.graphic) - this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${item}.json`,graphic:[...arr],level:item=='中华人民共和国'?'country': 'province'}}) + onclick:async()=>{ + this.level='country' + const index = option.graphic.findIndex(i => i.style.text === '中国'); + // 点击元素之后的所有元素全部删除 + option.graphic.splice(index + 1); + const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/country/中华人民共和国.json` + const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true) + option.geo.map = '中华人民共和国' + this.changeData({...config,customize:{...config.customize,level:'country',scope:'中国'}}) + echarts.registerMap('中华人民共和国', map); + this.charts.setOption(option, true); + } },) - }) + // }) } this.charts.setOption(option) - this.charts.on('click', (params)=> { - if(params.name=='') return - if(config.customize.down===false||config.customize.level==='province') return - this.$store.commit('bigScreen/changeActiveItemConfig', { ...config, customize: { ...config.customize,dataMap:`${params.name}.json`,graphic:[...config.customize.graphic,params.name], level:config.customize.level==='country'?'province':'country'} }) + this.charts.on('click', async(params)=> { + const index = option.graphic.findIndex(i => i.style.text === params.name); + if(params.name=='' || index !== -1) return + if(config.customize.down===false||this.level==='province') return + const idx = option.graphic.length + 1; + option.graphic.push({ + type: "text", + left: `${idx * 250}px`, + top: "5%", + style: { + text: params.name, + font: `bolder ${config.customize.fontSize}px "Microsoft YaHei", sans-serif`, + fill: config.customize.fontGraphicColor, + }, + onclick: async() => { + const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/${params.name=='中华人民共和国'?'country':'province'}/${params.name}.json` + const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true) + // 利用函数的作用域,可以直接拿上面的name来用 + const index = option.graphic.findIndex(i => i.style.text === params.name); + // 点击元素之后的所有元素全部删除 + option.graphic.splice(index + 1); + // 很多操作重复了,你可以将公共部分抽离出来 + option.geo.map = params.name; + this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}}) + echarts.registerMap(params.name, map); + this.charts.setOption(option, true); + }, + }); + this.level='province' + const mapUrl =`${window.BS_CONFIG?.httpConfigs?.baseURL}/static/chinaMap/province/${params.name}.json` + const map = await this.$dataRoomAxios.get(decodeURI(mapUrl), {}, true) + this.changeData({...config,customize:{...config.customize,level:'province',scope:params.name}}) + option.geo.map = params.name + echarts.registerMap(params.name, map); + this.charts.setOption(option, true); }); }) } diff --git a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue index 8ae82e57..41eea263 100644 --- a/data-room-ui/packages/BasicComponents/FlyMap/setting.vue +++ b/data-room-ui/packages/BasicComponents/FlyMap/setting.vue @@ -79,7 +79,7 @@ @@ -89,6 +89,28 @@ active-color="#007aff" /> + + + + + + item.name).sort((a, b) => a.localeCompare(b)) +import Icon from 'data-room-ui/assets/images/bigScreenIcon/export' export const settingConfig = { padding: [30, 30, 50, 80], legend: false, @@ -106,7 +105,7 @@ export const dataConfig = { export const FlyMapData = { name: '飞线图', title: '飞线图', - icon: iconNames[5], + icon: Icon.getNameList()[18], className: 'com.gccloud.dataroom.core.module.chart.components.ScreenFlyMapChart', w: 800, diff --git a/data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg b/data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg new file mode 100644 index 00000000..3c7b3b7a --- /dev/null +++ b/data-room-ui/packages/assets/images/bigScreenIcon/svg/18flyMap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/data-room-ui/packages/js/store/mutations.js b/data-room-ui/packages/js/store/mutations.js index bd192a85..60f7aeea 100644 --- a/data-room-ui/packages/js/store/mutations.js +++ b/data-room-ui/packages/js/store/mutations.js @@ -92,7 +92,7 @@ export default { { type: 'v', site: x || 0 } ] }, - changeActiveItemConfig (state, config) { + changeActiveItemConfig(state, config) { state.activeItemConfig = cloneDeep(config) }, // 新增一个组件 From 8baa97fbea811f3af5f5c3c034d34b96c9ea0b94 Mon Sep 17 00:00:00 2001 From: "hong.yang" Date: Wed, 30 Aug 2023 14:24:23 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix:=20=E5=9C=B0=E5=9B=BE=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 地图组件新增配置 --- .../core/module/chart/components/ScreenMapChart.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java index b0b3cefc..26c3af26 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/chart/components/ScreenMapChart.java @@ -80,6 +80,15 @@ public class ScreenMapChart extends Chart { @ApiModelProperty(notes = "值") private String value; + @ApiModelProperty(notes = "图形字体颜色") + private String fontGraphicColor; + + @ApiModelProperty(notes = "图形字体大小") + private String fontSize; + + @ApiModelProperty(notes = "是否开启下钻") + private Boolean down; + }