| | |
| | | handleTab = (card) => { |
| | | const { config } = this.state |
| | | |
| | | let index = 0 // 筛选下一组 |
| | | let menus = [{value: 'mainTable', text: '主数据'}] |
| | | let equalTabs = [] |
| | | let supMenu = card.supMenu || '' |
| | | let equalTab = card.equalTab || [] |
| | | let isuptab = true |
| | | let equalTabIds = [] |
| | | |
| | | config.tabgroups.forEach((groupId, i) => { |
| | | if (groupId === card.groupId) { |
| | | index = i |
| | | isuptab = false |
| | | config[card.groupId].forEach(tab => { // 可关联的同级标签 |
| | | if (tab.uuid === card.uuid) return |
| | | |
| | | equalTabIds.push(tab.uuid) |
| | | equalTabs.push(tab) |
| | | }) |
| | | } else if (isuptab) { |
| | | config[groupId].forEach(tab => { |
| | | menus.push({ |
| | | value: tab.uuid, |
| | | text: tab.label |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | |
| | | let menus = [] |
| | | let subtabs = card.subtabs || [] |
| | | let nextTabId = config.tabgroups[index + 1] |
| | | if (supMenu && menus.filter(menu => menu.value === supMenu).length === 0) { |
| | | supMenu = '' |
| | | } |
| | | |
| | | if (nextTabId) { |
| | | let _tabMap = new Map() |
| | | let _usedTabMap = new Map() |
| | | |
| | | config[nextTabId].forEach(tab => { // 下级所有的标签 |
| | | menus.push(tab) |
| | | _tabMap.set(tab.uuid, true) |
| | | }) |
| | | |
| | | config[card.groupId].forEach(tab => { // 同级标签已选的下级标签 |
| | | if (tab.uuid === card.uuid) return |
| | | |
| | | tab.subtabs.forEach(subtab => { |
| | | _usedTabMap.set(subtab, true) |
| | | }) |
| | | }) |
| | | |
| | | config.setting.subtabs.forEach(subtab => { // 主表已选的下级标签 |
| | | _usedTabMap.set(subtab, true) |
| | | }) |
| | | |
| | | subtabs = subtabs.filter(tab => _tabMap.has(tab.uuid) && !_usedTabMap.has(tab.uuid)) |
| | | menus = menus.filter(tab => !_usedTabMap.has(tab.uuid)) |
| | | } else { |
| | | subtabs = [] |
| | | if (equalTab.length > 0) { |
| | | equalTab = equalTab.filter(tabId => equalTabIds.includes(tabId)) |
| | | } |
| | | |
| | | this.setState({ |
| | |
| | | }] |
| | | }, |
| | | { |
| | | type: 'mutilselect', |
| | | key: 'subtabs', |
| | | label: '下级标签', |
| | | initVal: subtabs, |
| | | type: 'select', |
| | | key: 'supMenu', |
| | | label: this.state.dict['header.form.supTab'], |
| | | initVal: supMenu, |
| | | required: false, |
| | | options: menus |
| | | }, |
| | | { |
| | | type: 'mutilselect', |
| | | key: 'equalTab', |
| | | label: this.state.dict['header.form.equalTab'], |
| | | initVal: equalTab, |
| | | required: false, |
| | | options: equalTabs |
| | | } |
| | | ] |
| | | }) |