From ca660aed7dcdf63668c7fae2ae3dbc3f13ec1529 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 31 五月 2022 22:30:31 +0800
Subject: [PATCH] 2022-05-31
---
src/utils/utils-custom.js | 184 ++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 177 insertions(+), 7 deletions(-)
diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index a29a1a9..eafbca4 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -85,6 +85,91 @@
}
/**
+ * @description 鑾峰彇涓嬬骇妯″潡
+ * @return {String} selfId 褰撳墠缁勪欢id
+ */
+ static getAnchors (components, selfId) {
+ let modules = components.map(item => {
+ if (item.uuid === selfId) {
+ return {
+ children: null
+ }
+ } else if (item.type === 'tabs') {
+ let _item = {
+ type: 'tabs',
+ value: item.uuid,
+ label: item.name,
+ children: item.subtabs.map(f_tab => {
+ let subItem = {
+ type: 'tab',
+ value: f_tab.uuid,
+ label: f_tab.label,
+ children: this.getSubModules(f_tab.components, selfId)
+ }
+
+ if (!subItem.children || subItem.children.length === 0) {
+ return {children: null}
+ }
+ return subItem
+ })
+ }
+
+ _item.children = _item.children.filter(t => t.children !== null)
+
+ if (_item.children.length === 0) {
+ return {children: null}
+ }
+
+ return _item
+ } else if (item.type === 'group') {
+ let _item = {
+ value: item.uuid,
+ label: item.name,
+ children: item.components.map(f_tab => {
+ if (f_tab.uuid === selfId) {
+ return {
+ children: null
+ }
+ } else if (f_tab.format) {
+ return {
+ value: f_tab.uuid,
+ label: f_tab.name
+ }
+ }
+ return {
+ children: null
+ }
+ })
+ }
+
+ _item.children = _item.children.filter(t => t.children !== null)
+
+ if (_item.children.length === 0) {
+ return {children: null}
+ }
+
+ return _item
+ } else if (!['login', 'navbar', 'topbar', 'tabs', 'search', 'group', 'balcony'].includes(item.type)) { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮
+ return {
+ value: item.uuid,
+ label: item.name
+ }
+ } else {
+ return {
+ children: null
+ }
+ }
+ })
+
+ modules = modules.filter(mod => mod.children !== null)
+
+ if (modules.length === 0) {
+ return null
+ }
+ return modules
+ }
+
+ /**
* @description 鑾峰彇涓婄骇妯″潡
* @return {String} selfId 褰撳墠缁勪欢id
*/
@@ -95,9 +180,16 @@
children: null
}
} else if (item.switchable) { // 鏁版嵁鍙垏鎹�
+ let disabled = false
+ if (item.type === 'card') {
+ disabled = item.wrap.cardType === ''
+ } else if (item.type === 'table') {
+ disabled = item.wrap.tableType === ''
+ }
return {
value: item.uuid,
- label: item.name
+ label: item.name,
+ disabled: disabled
}
} else if (item.type === 'form') { // 鏁版嵁鏍煎紡锛屽瓨鍦ㄦ暟鎹簮
return {
@@ -274,7 +366,7 @@
uuids.push(act.uuid)
})
- if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+ if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
item.subcards.forEach(_card => {
_card.elements && _card.elements.forEach(cell => {
if (cell.eleType !== 'button') return
@@ -332,7 +424,7 @@
* @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒�
* @return {String} components 閰嶇疆淇℃伅
*/
- static resetConfig = (components, uuids = {}) => {
+ static resetConfig = (components, uuids = {}, clear = false) => {
return components.map(item => {
if (item.type === 'navbar') {
return item
@@ -352,31 +444,59 @@
cell.parentId = item.uuid
return cell
})
- tab.components = this.resetConfig(tab.components, uuids)
+ tab.components = this.resetConfig(tab.components, uuids, clear)
})
} else if (item.type === 'group') {
item.components = item.components.map(cell => {
cell.parentId = item.uuid
return cell
})
- item.components = this.resetConfig(item.components, uuids)
+ item.components = this.resetConfig(item.components, uuids, clear)
} else if (item.type === 'menubar') {
item.subMenus = item.subMenus.map(cell => {
cell.uuid = this.getuuid()
+ if (clear && cell.setting.type === 'linkmenu') {
+ cell.setting.type = 'menu'
+ cell.setting.linkMenuId = ''
+ }
return cell
})
- } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+ } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
item.subcards.forEach(card => {
card.uuid = this.getuuid()
+
+ if (clear) {
+ if (card.setting.click === 'menu') {
+ card.setting.click = ''
+ card.setting.menu = ''
+ } else if (card.setting.click === 'menus') {
+ card.setting.click = ''
+ card.setting.menuType = ''
+ delete card.menus
+ }
+ }
+
if (card.elements) {
card.elements = card.elements.map(cell => {
cell.uuid = this.getuuid()
+
+ if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+ cell.pageTemplate = ''
+ cell.linkmenu = ''
+ }
+
return cell
})
}
if (card.backElements) {
card.backElements = card.backElements.map(cell => {
cell.uuid = this.getuuid()
+
+ if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+ cell.pageTemplate = ''
+ cell.linkmenu = ''
+ }
+
return cell
})
}
@@ -385,6 +505,12 @@
if (item.elements) {
item.elements = item.elements.map(cell => {
cell.uuid = this.getuuid()
+
+ if (clear && cell.eleType === 'button' && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+ cell.pageTemplate = ''
+ cell.linkmenu = ''
+ }
+
return cell
})
}
@@ -398,11 +524,18 @@
} else if (c.type === 'custom' && c.elements) {
c.elements = c.elements.map(cell => {
cell.uuid = this.getuuid()
+
return cell
})
} else if (c.type === 'action' && c.elements) {
c.elements = c.elements.map(cell => {
cell.uuid = this.getuuid()
+
+ if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+ cell.pageTemplate = ''
+ cell.linkmenu = ''
+ }
+
return cell
})
}
@@ -456,6 +589,11 @@
oriUids[cell.uuid] = _uuid
cell.uuid = _uuid
+ if (clear && cell.pageTemplate === 'linkpage' && cell.linkmenu) {
+ cell.pageTemplate = ''
+ cell.linkmenu = ''
+ }
+
return cell
})
}
@@ -475,6 +613,9 @@
})
return cell
})
+ }
+ if (clear && item.wrap.menus) {
+ item.wrap.menus = []
}
} else if (item.search) {
item.search = item.search.map(cell => {
@@ -508,6 +649,35 @@
return item
})
+ }
+
+ /**
+ * @description 閲嶇疆鑿滃崟閰嶇疆锛岄〉闈㈡暣浣撳鍒�
+ * @return {String} components 閰嶇疆淇℃伅
+ */
+ static getFloor = (id) => {
+ let floor = 1
+ let finish = false
+
+ let reCheck = (components, f) => {
+ components.forEach(item => {
+ if (finish) return
+ if (item.type === 'tabs') {
+ if (item.uuid === id) {
+ floor = f
+ finish = true
+ } else {
+ item.subtabs.forEach(tab => {
+ reCheck(tab.components, f + 1)
+ })
+ }
+ }
+ })
+ }
+
+ reCheck(window.GLOB.customMenu.components, 1)
+
+ return floor
}
/**
@@ -561,7 +731,7 @@
cell.uuid = this.getuuid()
return cell
})
- } else if (item.type === 'card' || item.type === 'carousel' || (item.type === 'table' && item.subtype === 'tablecard')) {
+ } else if (['card', 'carousel', 'timeline'].includes(item.type) || (item.type === 'table' && item.subtype === 'tablecard')) {
item.subcards.forEach(card => {
card.uuid = this.getuuid()
if (card.elements) {
--
Gitblit v1.8.0