From 77e20462df0433d2a2862173e139940ca2de7ec3 Mon Sep 17 00:00:00 2001 From: fit2cloud-chenyw Date: Mon, 27 Jun 2022 11:20:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=BF=87=E6=BB=A4=E7=BB=84=E4=BB=B6?= =?UTF-8?q?=E7=A6=81=E6=AD=A2=E5=90=8C=E6=95=B0=E6=8D=AE=E9=9B=86=E5=A4=9A?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceImpl/TextSelectTreeServiceImpl.js | 1 + frontend/src/lang/en.js | 3 +- frontend/src/lang/tw.js | 3 +- frontend/src/lang/zh.js | 3 +- .../src/views/panel/filter/filterDialog.vue | 36 ++++++++++++++----- .../panel/filter/filterMain/FilterControl.vue | 4 ++- 6 files changed, 38 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js b/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js index 83903a2e61..441f334b75 100644 --- a/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js +++ b/frontend/src/components/widget/serviceImpl/TextSelectTreeServiceImpl.js @@ -52,6 +52,7 @@ class TextSelectTreeServiceImpl extends WidgetService { super(options) this.filterDialog = true this.showSwitch = true + this.isTree = true } initLeftPanel() { diff --git a/frontend/src/lang/en.js b/frontend/src/lang/en.js index 900a5db6e3..64a94a3bab 100644 --- a/frontend/src/lang/en.js +++ b/frontend/src/lang/en.js @@ -1754,7 +1754,8 @@ export default { default_settings: 'Default Settings', choose_background: 'Choose Component Background', choose_background_tips: 'The component`s own background settings will overwrite the current settings', - visual: 'Visual' + visual: 'Visual', + prohibit_multiple: 'Prohibit multiple fields in the same dataset' }, plugin: { local_install: 'Local installation', diff --git a/frontend/src/lang/tw.js b/frontend/src/lang/tw.js index 8c57dae47c..798a37be3e 100644 --- a/frontend/src/lang/tw.js +++ b/frontend/src/lang/tw.js @@ -1758,7 +1758,8 @@ export default { setting_background: '設置背景', setting_jump: '跳轉設置', select_view: '請選擇視圖...', - visual: '虛擬化' + visual: '虛擬化', + prohibit_multiple: '禁止同數據集多字段' }, plugin: { local_install: '本地安裝', diff --git a/frontend/src/lang/zh.js b/frontend/src/lang/zh.js index 081f51327c..0e6c1f2c77 100644 --- a/frontend/src/lang/zh.js +++ b/frontend/src/lang/zh.js @@ -1767,7 +1767,8 @@ export default { setting_background: '设置背景', setting_jump: '跳转设置', select_view: '请选择视图...', - visual: '虚拟化' + visual: '虚拟化', + prohibit_multiple: '禁止同数据集多字段' }, plugin: { local_install: '本地安装', diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index e1cee352e8..d2487c5d24 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -64,7 +64,7 @@ animation="300" :move="onMove" class="drag-list" - @end="end" + @end="endDs" >
{ @@ -666,19 +669,23 @@ export default { return true }, - end(e) { - this.refuseMove(e) + endDs(e) { + this.refuseMove(e, this.fieldDatas) + this.removeCheckedKey(e) + }, + endVw(e) { + this.refuseMove(e, this.comFieldDatas) this.removeCheckedKey(e) }, - refuseMove(e) { + refuseMove(e, datas) { const that = this - const xItems = this.fieldDatas.filter(function(m) { + const xItems = datas.filter(function(m) { return m.id === that.moveId }) if (xItems && xItems.length > 1) { - this.fieldDatas.splice(e.newDraggableIndex, 1) + this.datas.splice(e.newDraggableIndex, 1) } }, removeCheckedKey(e) { @@ -691,6 +698,19 @@ export default { if (xItems && xItems.length > 1) { this.currentElement.options.attrs.dragItems.splice(e.newDraggableIndex, 1) } + this.ProhibitMultiple() + }, + + ProhibitMultiple() { + if (this.isTree) return + const sourceLen = this.currentElement.options.attrs.dragItems.length + if (!sourceLen) return + const res = new Map() + + const result = this.currentElement.options.attrs.dragItems.filter(item => !res.has(item.tableId) && res.set(item.tableId), 1) + this.currentElement.options.attrs.dragItems = result + const newLen = result.length + if (sourceLen > newLen) this.$warning(this.$t('panel.prohibit_multiple')) }, enableSureButton() { diff --git a/frontend/src/views/panel/filter/filterMain/FilterControl.vue b/frontend/src/views/panel/filter/filterMain/FilterControl.vue index 675ff8a0b5..89d512f8f0 100644 --- a/frontend/src/views/panel/filter/filterMain/FilterControl.vue +++ b/frontend/src/views/panel/filter/filterMain/FilterControl.vue @@ -103,7 +103,6 @@