diff --git a/frontend/src/components/widget/DeWidget/DeTabs.vue b/frontend/src/components/widget/DeWidget/DeTabs.vue index c2230c3ed9..99a164d901 100644 --- a/frontend/src/components/widget/DeWidget/DeTabs.vue +++ b/frontend/src/components/widget/DeWidget/DeTabs.vue @@ -2,7 +2,7 @@
- + {{ $t('table.delete') }} @@ -35,7 +35,7 @@
- +
@@ -130,14 +130,15 @@ export default { dialogVisible: false, textarea: '', curItem: null, - viewDialogVisible: false, - tabList: [] + viewDialogVisible: false + } }, computed: { dropdownShow() { return this.isEdit && !this.mobileLayoutStatus }, + ...mapState([ 'curComponent', 'mobileLayoutStatus' @@ -152,8 +153,7 @@ export default { }, created() { bus.$on('add-new-tab', this.addNewTab) - this.tabList = this.element.options && this.element.options.tabList - this.activeTabName = this.tabList[0].name + this.activeTabName = this.element.options.tabList[0].name }, methods: { beforeHandleCommond(item, param) { @@ -192,7 +192,8 @@ export default { const newComponentId = uuid.v1() const componentInfo = { type: 'view', - id: node.id + /* id: node.id */ + id: node.innerId } componentList.forEach(componentTemp => { @@ -239,7 +240,7 @@ export default { while (len--) { if (this.element.options.tabList[len].name === param.name) { this.element.options.tabList.splice(len, 1) - this.tabList = this.element.options.tabList + const activIndex = (len - 1 + this.element.options.tabList.length) % this.element.options.tabList.length this.activeTabName = this.element.options.tabList[activIndex].name } @@ -256,7 +257,7 @@ export default { content: null } this.element.options.tabList.push(tab) - this.tabList = this.element.options.tabList + this.styleChange() }, styleChange() { diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index c93e013da1..26b4eb7e5d 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -203,20 +203,35 @@ const data = { for (let index = 0; index < state.componentData.length; index++) { const element = state.componentData[index] + if (element.type && element.type === 'de-tabs') { + for (let idx = 0; idx < element.options.tabList.length; idx++) { + const ele = element.options.tabList[idx].content + if (!ele.type || ele.type !== 'view') continue + const currentFilters = ele.filters || [] + const vidMatch = viewIdMatch(condition.viewIds, ele.propValue.viewId) + + let jdx = currentFilters.length + while (jdx--) { + const filter = currentFilters[jdx] + if (filter.componentId === filterComponentId) { + currentFilters.splice(jdx, 1) + } + } + // 不存在该条件 且 条件有效 直接保存该条件 + // !filterExist && vValid && currentFilters.push(condition) + vidMatch && vValid && currentFilters.push(condition) + ele.filters = currentFilters + } + state.componentData[index] = element + } if (!element.type || element.type !== 'view') continue const currentFilters = element.filters || [] const vidMatch = viewIdMatch(condition.viewIds, element.propValue.viewId) let j = currentFilters.length - // let filterExist = false while (j--) { const filter = currentFilters[j] if (filter.componentId === filterComponentId) { - // filterExist = true - // 已存在该条件 且 条件值有效 直接替换原体检 - // vidMatch && vValid && (currentFilters[j] = condition) - // 已存在该条件 且 条件值无效 直接删除原条件 - // vidMatch && !vValid && (currentFilters.splice(j, 1)) currentFilters.splice(j, 1) } } diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index b88623d20e..c4a085ae88 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -387,11 +387,28 @@ export default { return roots }, loadViews() { - const viewIds = this.componentData + /* const viewIds = this.componentData .filter(item => item.type === 'view' && item.propValue && item.propValue.viewId) - .map(item => item.propValue.viewId) + .map(item => item.propValue.viewId) */ + let viewIds = []; let tabViewIds = [] + for (let index = 0; index < this.componentData.length; index++) { + const element = this.componentData[index] + if (element.type && element.propValue && element.propValue.viewId && element.type === 'view') { + viewIds.push(element.propValue.viewId) + } + + if (element.type && element.type === 'de-tabs') { + tabViewIds = element.options.tabList.filter(item => item.content && item.content.type === 'view' && item.content.propValue && item.content.propValue.viewId).map(item => item.content.propValue.viewId) + } + viewIds = [...viewIds, ...tabViewIds] + } viewIds && viewIds.length > 0 && viewsWithIds(viewIds).then(res => { const datas = res.data + /* datas.forEach(item => { + if (tabViewIds.includes(item.id)) { + item.name = 'tabs(' + item.name + ')' + } + }) */ this.viewInfos = datas this.childViews.viewInfos = datas })