From 34810522ba926d8fc8ff2abf2b7e04c53ccb0e6f Mon Sep 17 00:00:00 2001 From: wangjiahao <1522128093@qq.com> Date: Tue, 26 Apr 2022 13:33:39 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=BF=AB=E9=80=9F=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E8=A7=86=E5=9B=BE=E6=97=B6=EF=BC=8C=E5=8A=A0=E8=BD=BD=E7=9A=84?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E5=8F=AF=E8=83=BD=E4=B8=8D=E5=B1=9E?= =?UTF-8?q?=E4=BA=8E=E5=BD=93=E5=89=8D=E8=A7=86=E5=9B=BE=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/chart/components/drag-item/utils.js | 5 ++ frontend/src/views/chart/view/ChartEdit.vue | 78 +++++++++++-------- 2 files changed, 49 insertions(+), 34 deletions(-) diff --git a/frontend/src/views/chart/components/drag-item/utils.js b/frontend/src/views/chart/components/drag-item/utils.js index 8ed6a57939..aac6d81f90 100644 --- a/frontend/src/views/chart/components/drag-item/utils.js +++ b/frontend/src/views/chart/components/drag-item/utils.js @@ -1,4 +1,9 @@ export function getItemType(dimensionData, quotaData, item) { + // Check whether the current view is in template status + // ( dimensionData and quotaData have no data). If yes, return 'success' directly + if (dimensionData.length === 0 && quotaData.length === 0) { + return 'success' + } // 将item的字段在数据集维度、指标字段中查询一遍,如果遇到id不存在、字段类型不一致、维度指标不一致,则提示 const status = item.groupType let checked = false diff --git a/frontend/src/views/chart/view/ChartEdit.vue b/frontend/src/views/chart/view/ChartEdit.vue index f4a1a28171..c79bfbfa5b 100644 --- a/frontend/src/views/chart/view/ChartEdit.vue +++ b/frontend/src/views/chart/view/ChartEdit.vue @@ -1472,7 +1472,8 @@ export default { }) this.pluginRenderOptions = [...this.renderOptions, ...pluginOptions] }, - emptyTableData() { + emptyTableData(id) { + console.log('emptyTableData:' + id) this.table = {} this.dimension = [] this.quota = [] @@ -1500,8 +1501,11 @@ export default { initTableData(id, optType) { if (id != null) { post('/dataset/table/getWithPermission/' + id, null).then(response => { - this.table = response.data - this.initTableField(id, optType) + // If click too fast on the panel, the data here may be inconsistent, so make a verification + if (this.view.tableId === id) { + this.table = response.data + this.initTableField(id, optType) + } }).catch(err => { this.table = null this.resetDatasetField() @@ -1514,17 +1518,20 @@ export default { initTableField(id, optType) { if (this.table) { post('/dataset/table/getFieldsFromDE', this.table).then(response => { - this.dimension = response.data.dimension - this.quota = response.data.quota - this.dimensionData = JSON.parse(JSON.stringify(this.dimension)) - this.quotaData = JSON.parse(JSON.stringify(this.quota)) - this.fieldFilter(this.searchField) - if (optType === 'change') { - this.resetChangeTable() - this.$nextTick(() => { - bus.$emit('reset-change-table', 'change') - this.calcData() - }) + // If click too fast on the panel, the data here may be inconsistent, so make a verification + if (this.view.tableId === id) { + this.dimension = response.data.dimension + this.quota = response.data.quota + this.dimensionData = JSON.parse(JSON.stringify(this.dimension)) + this.quotaData = JSON.parse(JSON.stringify(this.quota)) + this.fieldFilter(this.searchField) + if (optType === 'change') { + this.resetChangeTable() + this.$nextTick(() => { + bus.$emit('reset-change-table', 'change') + this.calcData() + }) + } } }).catch(err => { console.log(err) @@ -1911,27 +1918,30 @@ export default { getChart(id, queryFrom = 'panel_edit') { if (id) { getChartDetails(id, this.panelInfo.id, { queryFrom: queryFrom }).then(response => { - if (response.data.dataFrom === 'template') { - this.emptyTableData() - } else { - this.initTableData(response.data.tableId) - } - this.view = JSON.parse(JSON.stringify(response.data)) - this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : [] - this.view.xaxisExt = this.view.xaxisExt ? JSON.parse(this.view.xaxisExt) : [] - this.view.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : [] - this.view.yaxisExt = this.view.yaxisExt ? JSON.parse(this.view.yaxisExt) : [] - this.view.extStack = this.view.extStack ? JSON.parse(this.view.extStack) : [] - this.view.drillFields = this.view.drillFields ? JSON.parse(this.view.drillFields) : [] - this.view.extBubble = this.view.extBubble ? JSON.parse(this.view.extBubble) : [] - this.view.customAttr = this.view.customAttr ? JSON.parse(this.view.customAttr) : {} - this.view.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {} - this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {} - this.view.senior = this.view.senior ? JSON.parse(this.view.senior) : {} + // If click too fast on the panel, the data here may be inconsistent, so make a verification + if (response.data.id === this.param.id) { + if (response.data.dataFrom === 'template') { + this.emptyTableData(response.data.id) + } else { + this.initTableData(response.data.tableId) + } + this.view = JSON.parse(JSON.stringify(response.data)) + this.view.xaxis = this.view.xaxis ? JSON.parse(this.view.xaxis) : [] + this.view.xaxisExt = this.view.xaxisExt ? JSON.parse(this.view.xaxisExt) : [] + this.view.yaxis = this.view.yaxis ? JSON.parse(this.view.yaxis) : [] + this.view.yaxisExt = this.view.yaxisExt ? JSON.parse(this.view.yaxisExt) : [] + this.view.extStack = this.view.extStack ? JSON.parse(this.view.extStack) : [] + this.view.drillFields = this.view.drillFields ? JSON.parse(this.view.drillFields) : [] + this.view.extBubble = this.view.extBubble ? JSON.parse(this.view.extBubble) : [] + this.view.customAttr = this.view.customAttr ? JSON.parse(this.view.customAttr) : {} + this.view.customStyle = this.view.customStyle ? JSON.parse(this.view.customStyle) : {} + this.view.customFilter = this.view.customFilter ? JSON.parse(this.view.customFilter) : {} + this.view.senior = this.view.senior ? JSON.parse(this.view.senior) : {} - // 将视图传入echart组件 - this.chart = response.data - this.data = response.data.data + // 将视图传入echart组件 + this.chart = response.data + this.data = response.data.data + } }).catch(err => { this.httpRequest.status = err.response.data.success this.httpRequest.msg = err.response.data.message