From 5030ced037b10915bc8a278a2f1d4d63e23c710d Mon Sep 17 00:00:00 2001 From: taojinlong Date: Fri, 29 Jul 2022 12:02:10 +0800 Subject: [PATCH 01/16] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E6=BA=90):=20?= =?UTF-8?q?=E6=A0=A1=E9=AA=8C=E5=8F=82=E6=95=B0=E6=9C=89=E6=95=88=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/service/datasource/DatasourceService.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java index 489b69383e..40f8c95233 100644 --- a/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java +++ b/backend/src/main/java/io/dataease/service/datasource/DatasourceService.java @@ -232,6 +232,10 @@ public class DatasourceService { datasource.setCreateTime(null); datasource.setType(updataDsRequest.getType()); datasource.setUpdateTime(System.currentTimeMillis()); + + Provider datasourceProvider = ProviderFactory.getProvider(updataDsRequest.getType()); + datasourceProvider.checkConfiguration(datasource); + checkAndUpdateDatasourceStatus(datasource); DatasourceExample example = new DatasourceExample(); example.createCriteria().andIdEqualTo(updataDsRequest.getId()); @@ -255,6 +259,7 @@ public class DatasourceService { BeanUtils.copyBean(datasourceDTO, datasource); try { Provider datasourceProvider = ProviderFactory.getProvider(datasource.getType()); + datasourceProvider.checkConfiguration(datasource); DatasourceRequest datasourceRequest = new DatasourceRequest(); datasourceRequest.setDatasource(datasource); String datasourceStatus = datasourceProvider.checkStatus(datasourceRequest); From 6d64044bbe23deafc7ec80cb5add1dd4e85ef559 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Fri, 29 Jul 2022 18:28:41 +0800 Subject: [PATCH 02/16] =?UTF-8?q?fix(=E8=A7=86=E5=9B=BE):=20=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E5=9C=B0=E5=90=8D=E6=98=A0=E5=B0=84=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E4=BB=A5=E8=A7=A3=E5=86=B3=E4=B8=96=E7=95=8C=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E6=97=A0=E6=B3=95=E4=B8=8B=E9=92=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/views/chart/chart/map/map.js | 5 + .../views/chart/components/ChartComponent.vue | 1 - .../chart/components/senior/MapMapping.vue | 207 ++++++++++++++++++ frontend/src/views/chart/view/ChartEdit.vue | 29 ++- 4 files changed, 239 insertions(+), 3 deletions(-) create mode 100644 frontend/src/views/chart/components/senior/MapMapping.vue diff --git a/frontend/src/views/chart/chart/map/map.js b/frontend/src/views/chart/chart/map/map.js index 278b44f62e..9af23ae8c0 100644 --- a/frontend/src/views/chart/chart/map/map.js +++ b/frontend/src/views/chart/chart/map/map.js @@ -88,6 +88,11 @@ export function baseMapOption(chart_option, chart, themeStyle) { y.name = chart.data.x[i] chart_option.series[0].data.push(y) } + if (chart.senior) { + const senior = JSON.parse(chart.senior) + + senior && senior.mapMapping && (chart_option.series[0].nameMap = senior.mapMapping) + } } } componentStyle(chart_option, chart) diff --git a/frontend/src/views/chart/components/ChartComponent.vue b/frontend/src/views/chart/components/ChartComponent.vue index ad91b3de3a..c1ee8f2edd 100644 --- a/frontend/src/views/chart/components/ChartComponent.vue +++ b/frontend/src/views/chart/components/ChartComponent.vue @@ -81,7 +81,6 @@ import { geoJson } from '@/api/map/map' import ViewTrackBar from '@/components/canvas/components/Editor/ViewTrackBar' -import eventBus from '@/components/canvas/utils/eventBus' export default { name: 'ChartComponent', diff --git a/frontend/src/views/chart/components/senior/MapMapping.vue b/frontend/src/views/chart/components/senior/MapMapping.vue new file mode 100644 index 0000000000..6623d0156b --- /dev/null +++ b/frontend/src/views/chart/components/senior/MapMapping.vue @@ -0,0 +1,207 @@ + + + + + diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index 82b01cae84..52403bf5ab 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -703,7 +703,7 @@
@@ -761,6 +761,25 @@ + + + + {{ $t('chart.senior_cfg') }} + + + + + + + + + +
{{ $t('chart.chart_no_senior') }} @@ -1084,6 +1103,7 @@ import PluginCom from '@/views/system/plugin/PluginCom' import { mapState } from 'vuex' import FunctionCfg from '@/views/chart/components/senior/FunctionCfg' +import MapMapping from '@/views/chart/components/senior/MapMapping' import AssistLine from '@/views/chart/components/senior/AssistLine' import Threshold from '@/views/chart/components/senior/Threshold' import LabelNormalText from '@/views/chart/components/normal/LabelNormalText' @@ -1129,7 +1149,8 @@ export default { ChartDragItem, DrillItem, DrillPath, - PluginCom + PluginCom, + MapMapping }, props: { param: { @@ -1952,6 +1973,10 @@ export default { this.view.senior.scrollCfg = val this.calcStyle() }, + onMapMappingChange(val) { + this.view.senior.mapMapping = val + this.calcStyle() + }, showDimensionEditFilter(item) { this.dimensionItem = JSON.parse(JSON.stringify(item)) From a8e816588a53eefaf67a0633e4f3291c5155e59d Mon Sep 17 00:00:00 2001 From: taojinlong Date: Sun, 31 Jul 2022 15:42:38 +0800 Subject: [PATCH 03/16] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E6=BA=90):=20api?= =?UTF-8?q?=20=E6=95=B0=E6=8D=AE=E6=BA=90=E6=A0=A1=E9=AA=8C=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../provider/datasource/ApiProvider.java | 67 +++++++++++++------ .../src/views/system/datasource/DsForm.vue | 2 +- .../src/views/system/datasource/DsTree.vue | 5 ++ 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java b/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java index 5e0a16b9b4..9bd5ef02a1 100644 --- a/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java +++ b/backend/src/main/java/io/dataease/provider/datasource/ApiProvider.java @@ -181,28 +181,28 @@ public class ApiProvider extends Provider { if (StringUtils.isEmpty(response)) { throw new Exception("该请求返回数据为空"); } - List jsonFields = new ArrayList<>(); + List fields = new ArrayList<>(); String rootPath; if (response.startsWith("[")) { rootPath = "$[*]"; JSONArray jsonArray = JSONObject.parseArray(response); for (Object o : jsonArray) { - handleStr(apiDefinition, o.toString(), jsonFields, rootPath); + handleStr(apiDefinition, o.toString(), fields, rootPath); } } else { rootPath = "$"; - handleStr(apiDefinition, response, jsonFields, rootPath); + handleStr(apiDefinition, response, fields, rootPath); } - apiDefinition.setJsonFields(jsonFields); + apiDefinition.setJsonFields(fields); return apiDefinition; } - static private void handleStr(ApiDefinition apiDefinition, String jsonStr, List objects, String rootPath) { + static private void handleStr(ApiDefinition apiDefinition, String jsonStr, List fields, String rootPath) { if (jsonStr.startsWith("[")) { JSONArray jsonArray = JSONObject.parseArray(jsonStr); for (Object o : jsonArray) { - handleStr(apiDefinition, o.toString(), objects, rootPath); + handleStr(apiDefinition, o.toString(), fields, rootPath); } } else { JSONObject jsonObject = JSONObject.parseObject(jsonStr); @@ -213,12 +213,12 @@ public class ApiProvider extends Provider { JSONObject o = new JSONObject(); JSONArray jsonArray = JSONObject.parseArray(jsonObject.getString(s)); try { - List children = new ArrayList<>(); + List childrenField = new ArrayList<>(); for (Object object: jsonArray) { JSONObject.parseObject(object.toString()); - handleStr(apiDefinition, object.toString(), children, rootPath + "." + s + "[*]"); + handleStr(apiDefinition, object.toString(), childrenField, rootPath + "." + s + "[*]"); } - o.put("children", children); + o.put("children", childrenField); o.put("childrenDataType", "LIST"); }catch (Exception e){ @@ -228,8 +228,8 @@ public class ApiProvider extends Provider { } o.put("jsonPath", rootPath + "." + s); setProperty(apiDefinition, o, s); - if (!hasItem(apiDefinition, objects, o)) { - objects.add(o); + if (!hasItem(apiDefinition, fields, o)) { + fields.add(o); } } else if (StringUtils.isNotEmpty(value) && value.startsWith("{")) { List children = new ArrayList<>(); @@ -239,8 +239,8 @@ public class ApiProvider extends Provider { o.put("childrenDataType", "OBJECT"); o.put("jsonPath", rootPath + "." + s); setProperty(apiDefinition, o, s); - if (!hasItem(apiDefinition, objects, o)) { - objects.add(o); + if (!hasItem(apiDefinition, fields, o)) { + fields.add(o); } } else { JSONObject o = new JSONObject(); @@ -249,8 +249,8 @@ public class ApiProvider extends Provider { JSONArray array = new JSONArray(); array.add(StringUtils.isNotEmpty(jsonObject.getString(s)) ? jsonObject.getString(s) : ""); o.put("value", array); - if (!hasItem(apiDefinition, objects, o)) { - objects.add(o); + if (!hasItem(apiDefinition, fields, o)) { + fields.add(o); } } @@ -278,12 +278,13 @@ public class ApiProvider extends Provider { } - static private boolean hasItem(ApiDefinition apiDefinition, List objects, JSONObject item) { + static private boolean hasItem(ApiDefinition apiDefinition, List fields, JSONObject item) { boolean has = false; - for (JSONObject object : objects) { - if (object.getString("jsonPath").equals(item.getString("jsonPath"))) { + for (JSONObject field : fields) { + if (field.getString("jsonPath").equals(item.getString("jsonPath"))) { has = true; - mergeValue(object, apiDefinition, item); + mergeField(field, item); + mergeValue(field, apiDefinition, item); break; } } @@ -292,6 +293,30 @@ public class ApiProvider extends Provider { } + static void mergeField(JSONObject field, JSONObject item){ + if(item.getJSONArray("children") != null ){ + JSONArray itemChildren = item.getJSONArray("children"); + JSONArray fieldChildren = field.getJSONArray("children"); + if(fieldChildren == null){ + fieldChildren = new JSONArray(); + } + for (Object itemChild : itemChildren) { + boolean hasKey = false; + JSONObject itemChildObject = JSONObject.parseObject(itemChild.toString()); + for (Object fieldChild : fieldChildren) { + JSONObject fieldChildObject = JSONObject.parseObject(fieldChild.toString()); + if(itemChildObject.getString("jsonPath").equals(fieldChildObject.getString("jsonPath"))){ + mergeField(fieldChildObject, itemChildObject); + hasKey = true; + } + } + if(!hasKey){ + fieldChildren.add(itemChild); + } + } + } + } + static void mergeValue(JSONObject object, ApiDefinition apiDefinition, JSONObject item) { JSONArray array = object.getJSONArray("value"); @@ -346,7 +371,9 @@ public class ApiProvider extends Provider { if (object instanceof List) { datas = (List) object; } else { - datas.add((String) object); + if (object != null) { + datas.add(object.toString()); + } } maxLenth = maxLenth > datas.size() ? maxLenth : datas.size(); columnDataList.add(datas); diff --git a/frontend/src/views/system/datasource/DsForm.vue b/frontend/src/views/system/datasource/DsForm.vue index 652dded483..fb22d33b04 100644 --- a/frontend/src/views/system/datasource/DsForm.vue +++ b/frontend/src/views/system/datasource/DsForm.vue @@ -478,7 +478,7 @@ export default { method(form).then(res => { this.$success(i18n.t('commons.save_success')) this.refreshType(form) - this.backToList() + // this.backToList() }) }, getSchema() { diff --git a/frontend/src/views/system/datasource/DsTree.vue b/frontend/src/views/system/datasource/DsTree.vue index bc4996cf1d..63cd782c36 100644 --- a/frontend/src/views/system/datasource/DsTree.vue +++ b/frontend/src/views/system/datasource/DsTree.vue @@ -267,6 +267,11 @@ export default { for (let index = 0; index < this.tData.length; index++) { if (typeData[0].id === this.tData[index].id) { this.tData[index].children = typeData[0].children + for (let i = 0; i < this.tData[index].children.length; i++) { + if(this.tData[index].children[i].id === datasource.id){ + this.showInfo({data: this.tData[index].children[i]}) + } + } find = true } } From 39e4e02221c710bd4a21419b6bcf06f1e436cfbd Mon Sep 17 00:00:00 2001 From: taojinlong Date: Sun, 31 Jul 2022 16:40:11 +0800 Subject: [PATCH 04/16] =?UTF-8?q?fix(=E6=95=B0=E6=8D=AE=E6=BA=90):=20es=20?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/dataease/provider/query/es/EsQueryProvider.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java index 8916ae8497..74e0968d52 100644 --- a/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java +++ b/backend/src/main/java/io/dataease/provider/query/es/EsQueryProvider.java @@ -299,7 +299,7 @@ public class EsQueryProvider extends QueryProvider { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } else { if (x.getDeType() == 2 || x.getDeType() == 3) { - originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "bigint"); + originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "double"); } else { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } @@ -419,7 +419,7 @@ public class EsQueryProvider extends QueryProvider { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } else { if (x.getDeType() == 2 || x.getDeType() == 3) { - originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "bigint"); + originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "double"); } else { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } @@ -502,7 +502,7 @@ public class EsQueryProvider extends QueryProvider { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } else { if (x.getDeType() == 2 || x.getDeType() == 3) { - originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "bigint"); + originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "double"); } else { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } @@ -621,7 +621,7 @@ public class EsQueryProvider extends QueryProvider { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } else { if (x.getDeType() == 2 || x.getDeType() == 3) { - originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "bigint"); + originField = String.format(EsSqlLConstants.CAST, String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()), "double"); } else { originField = String.format(EsSqlLConstants.KEYWORD_FIX, tableObj.getTableAlias(), x.getOriginName()); } From ff8409883c44e91db1e11ffeb690ce9d83c3fac7 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Sun, 31 Jul 2022 19:58:29 +0800 Subject: [PATCH 05/16] =?UTF-8?q?feat(=E8=A7=86=E5=9B=BE-=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE):=20=E5=9C=B0=E5=9B=BE=E5=A2=9E=E5=8A=A0=E5=8C=BA?= =?UTF-8?q?=E5=9F=9F=E5=90=8D=E7=A7=B0=E6=98=A0=E5=B0=84=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../canvas/custom-component/UserView.vue | 1 + frontend/src/lang/en.js | 7 ++ frontend/src/lang/tw.js | 6 ++ frontend/src/lang/zh.js | 6 ++ frontend/src/views/chart/chart/map/map.js | 4 +- .../views/chart/components/ChartComponent.vue | 17 ++-- .../chart/components/senior/MapMapping.vue | 90 +++++++++++++++---- frontend/src/views/chart/view/ChartEdit.vue | 18 +++- 8 files changed, 120 insertions(+), 29 deletions(-) diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue index b14ec0ca81..91d9454afc 100644 --- a/frontend/src/components/canvas/custom-component/UserView.vue +++ b/frontend/src/components/canvas/custom-component/UserView.vue @@ -759,6 +759,7 @@ export default { setDetailMapCode(code) { this.element.DetailAreaCode = code + bus.$emit('set-dynamic-area-code', code) return true }, diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 41c7a12949..e8fc3a684a 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -2282,5 +2282,12 @@ export default { fileplaceholder: 'Please upload the JSON format coordinate file', delete_confirm: 'And child nodes will be deleted. Confirm to execute ?', cur_node: 'Current node' + }, + map_mapping: { + map: 'Map', + attr: 'Attribute', + empty: 'Empty', + please_select_map: 'Please select a range of map' } + } diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index ff160c5712..0b14bbfa6b 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -2291,5 +2291,11 @@ export default { fileplaceholder: '請上傳json格式坐標文件', delete_confirm: '及子節點都會被刪除,確認執行?', cur_node: '當前節點' + }, + map_mapping: { + map: '圖形', + attr: '屬性', + empty: '無數據', + please_select_map: '請先選擇地圖範圍' } } diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 451cde01a4..e59eba52ad 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -2303,5 +2303,11 @@ export default { fileplaceholder: '请上传json格式坐标文件', delete_confirm: '及子节点都会被删除,确认执行?', cur_node: '当前节点' + }, + map_mapping: { + map: '图形', + attr: '属性', + empty: '无数据', + please_select_map: '请先选择地图范围' } } diff --git a/frontend/src/views/chart/chart/map/map.js b/frontend/src/views/chart/chart/map/map.js index 9af23ae8c0..0547b29a58 100644 --- a/frontend/src/views/chart/chart/map/map.js +++ b/frontend/src/views/chart/chart/map/map.js @@ -2,7 +2,7 @@ import { componentStyle, reverseColor } from '../common/common' import { BASE_ECHARTS_SELECT, DEFAULT_TOOLTIP } from '@/views/chart/chart/chart' -export function baseMapOption(chart_option, chart, themeStyle) { +export function baseMapOption(chart_option, chart, themeStyle, curAreaCode) { // 处理shape attr let customAttr = {} if (chart.customAttr) { @@ -91,7 +91,7 @@ export function baseMapOption(chart_option, chart, themeStyle) { if (chart.senior) { const senior = JSON.parse(chart.senior) - senior && senior.mapMapping && (chart_option.series[0].nameMap = senior.mapMapping) + senior && senior.mapMapping && senior.mapMapping[curAreaCode] && (chart_option.series[0].nameMap = senior.mapMapping[curAreaCode]) } } } diff --git a/frontend/src/views/chart/components/ChartComponent.vue b/frontend/src/views/chart/components/ChartComponent.vue index c1ee8f2edd..4c60e80017 100644 --- a/frontend/src/views/chart/components/ChartComponent.vue +++ b/frontend/src/views/chart/components/ChartComponent.vue @@ -257,7 +257,7 @@ export default { const cCode = this.chart.DetailAreaCode || this.dynamicAreaCode || customAttr.areaCode if (this.$store.getters.geoMap[cCode]) { const json = this.$store.getters.geoMap[cCode] - this.initMapChart(json, chart) + this.initMapChart(json, chart, cCode) return } @@ -266,7 +266,7 @@ export default { key: cCode, value: res }).then(() => { - this.initMapChart(res, chart) + this.initMapChart(res, chart, cCode) }) }) return @@ -277,15 +277,22 @@ export default { registerDynamicMap(areaCode) { this.dynamicAreaCode = areaCode }, - - initMapChart(geoJson, chart) { + formatGeoJson(geoGson) { + geoGson.features.forEach(feature => { + Object.keys(feature.properties).forEach(property => { + feature.properties[property.toLocaleLowerCase()] = feature.properties[property] + }) + }) + }, + initMapChart(geoJson, chart, curAreaCode) { + this.formatGeoJson(geoJson) this.$echarts.registerMap('MAP', geoJson) const base_json = JSON.parse(JSON.stringify(BASE_MAP)) let themeStyle = null if (this.themeStyle) { themeStyle = JSON.parse(JSON.stringify(this.themeStyle)) } - const chart_option = baseMapOption(base_json, chart, themeStyle) + const chart_option = baseMapOption(base_json, chart, themeStyle, curAreaCode) this.myEcharts(chart_option) const opt = this.myChart.getOption() if (opt && opt.series) { diff --git a/frontend/src/views/chart/components/senior/MapMapping.vue b/frontend/src/views/chart/components/senior/MapMapping.vue index 6623d0156b..82290d59b7 100644 --- a/frontend/src/views/chart/components/senior/MapMapping.vue +++ b/frontend/src/views/chart/components/senior/MapMapping.vue @@ -8,13 +8,13 @@ :row-style="{height:0+'px'}" >