From 04c038af25f79ac7fc80e93054856a614f22b63b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 12 六月 2024 16:43:39 +0800
Subject: [PATCH] 2024-06-12

---
 src/utils/utils-custom.js |  302 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 302 insertions(+), 0 deletions(-)

diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index 6d66833..16fba25 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -558,6 +558,9 @@
           })
         }
       } else if (item.type === 'form') {
+        if (item.wrap.datatype === 'public' && item.wrap.publicId) {
+          item.wrap.publicId = md5(commonId + item.wrap.publicId)
+        }
         item.subcards = item.subcards.map(cell => {
           cell.uuid = this.getuuid()
   
@@ -2071,4 +2074,303 @@
   }
 
   return true
+}
+
+/**
+ * @description 鑾峰彇璇█杞崲淇℃伅
+ */
+export function getLangTrans (config) {
+  let defLang = window.GLOB.defLang || ''
+  let langList = sessionStorage.getItem('langList')
+  
+  if (langList) {
+    try {
+      langList = JSON.parse(langList)
+      if (langList.length === 1) {
+        defLang = ''
+      } else if (!defLang || langList.findIndex(item => item.Lang === defLang) === -1) {
+        if (langList.findIndex(item => item.Lang === 'zh-CN') === -1) {
+          defLang = langList[0].Lang
+        } else {
+          defLang = 'zh-CN'
+        }
+      }
+    } catch (e) {
+      defLang = ''
+    }
+  } else {
+    defLang = ''
+  }
+
+  if (!defLang) return ''
+
+  let sql = []
+  let btn = []
+  let ops = []
+  let text = []
+
+  let filterElement = (card) => {
+    if (card.datatype === 'static' && card.eleType === 'text') {
+      sql.push(card.value)
+    }
+    if (card.prefix) {
+      sql.push(card.prefix)
+    }
+    if (card.postfix) {
+      sql.push(card.postfix)
+    }
+  }
+
+  let filterSql = (sl) => {
+    if (!sl) return
+
+    let cutreg = /[\u4E00-\u9FA5銆傦紒锛屻�乚+/ig
+    let tbs = sl.match(cutreg)
+
+    if (!tbs) return
+    
+    text.push(...tbs)
+  }
+
+  let filterBtn = (btn) => {
+    if (!btn.verify) return
+
+    btn.verify.customverifys && btn.verify.customverifys.forEach(script => {
+      filterSql(script.sql)
+    })
+    btn.verify.scripts && btn.verify.scripts.forEach(script => {
+      filterSql(script.sql)
+    })
+    btn.verify.cbScripts && btn.verify.cbScripts.forEach(script => {
+      filterSql(script.sql)
+    })
+
+    if (btn.OpenType === 'funcbutton') {
+      if (btn.intertype === 'system' && btn.verify.dataType === 'custom' && btn.verify.setting) {
+        filterSql(btn.verify.setting.dataresource)
+      }
+    } else if (btn.OpenType === 'excelOut') {
+      filterSql(btn.verify.dataresource)
+    }
+  }
+
+  let traversal = (components) => {
+    if (!components) return
+
+    components.forEach(item => {
+      if (item.type === 'tabs') {
+        item.subtabs.forEach(tab => {
+          sql.push(tab.label)
+          traversal(tab.components)
+        })
+      } else if (item.type === 'group') {
+        traversal(item.components)
+      } else {
+        if (item.setting && (!item.wrap || !item.wrap.datatype || item.wrap.datatype === 'dynamic')) {
+          if (item.setting.interType === 'system') {
+            filterSql(item.setting.dataresource)
+            item.scripts && item.scripts.forEach(script => {
+              filterSql(script.sql)
+            })
+          }
+        }
+
+        if (item.columns) {
+          item.columns.forEach(cell => {
+            sql.push(cell.label)
+          })
+        }
+        if (item.search) {
+          item.search.forEach(cell => {
+            sql.push(cell.label)
+            if (cell.options) {
+              cell.options.forEach(o => {
+                ops.push(o.Text)
+              })
+            }
+            if (cell.resourceType === '1') {
+              filterSql(cell.dataSource)
+            }
+          })
+        }
+        if (item.action) {
+          item.action.forEach(cell => {
+            btn.push(cell.label)
+            filterBtn(cell)
+            if (cell.OpenType === 'popview' && cell.config) {
+              traversal(cell.config.components)
+            } else if (cell.OpenType === 'pop') {
+              if (cell.modal && cell.modal.fields.length) {
+                cell.modal.fields.forEach(n => {
+                  sql.push(n.label)
+                  if (n.resourceType === '1') {
+                    filterSql(n.dataSource)
+                  }
+                })
+              }
+            }
+          })
+        }
+
+        if (item.type === 'card' || item.type === 'carousel' || item.type === 'timeline') {
+          item.subcards.forEach(card => {
+            card.elements && card.elements.forEach(cell => {
+              if (cell.eleType === 'button') {
+                btn.push(cell.label)
+                filterBtn(cell)
+                if (cell.OpenType === 'popview' && cell.config) {
+                  traversal(cell.config.components)
+                } else if (cell.OpenType === 'pop') {
+                  if (cell.modal && cell.modal.fields.length) {
+                    cell.modal.fields.forEach(n => {
+                      sql.push(n.label)
+                      if (n.resourceType === '1') {
+                        filterSql(n.dataSource)
+                      }
+                    })
+                  }
+                }
+              } else {
+                filterElement(cell)
+              }
+            })
+            card.backElements && card.backElements.forEach(cell => {
+              if (cell.eleType === 'button') {
+                btn.push(cell.label)
+                filterBtn(cell)
+                if (cell.OpenType === 'popview' && cell.config) {
+                  traversal(cell.config.components)
+                } else if (cell.OpenType === 'pop') {
+                  if (cell.modal && cell.modal.fields.length) {
+                    cell.modal.fields.forEach(n => {
+                      sql.push(n.label)
+                      if (n.resourceType === '1') {
+                        filterSql(n.dataSource)
+                      }
+                    })
+                  }
+                }
+              } else {
+                filterElement(cell)
+              }
+            })
+          })
+        } else if (item.type === 'balcony') {
+          item.elements && item.elements.forEach(cell => {
+            if (cell.eleType === 'button') {
+              btn.push(cell.label)
+              filterBtn(cell)
+              if (cell.OpenType === 'popview' && cell.config) {
+                traversal(cell.config.components)
+              } else if (cell.OpenType === 'pop') {
+                if (cell.modal && cell.modal.fields.length) {
+                  cell.modal.fields.forEach(n => {
+                    sql.push(n.label)
+                    if (n.resourceType === '1') {
+                      filterSql(n.dataSource)
+                    }
+                  })
+                }
+              }
+            } else {
+              filterElement(cell)
+            }
+          })
+        } else if (item.type === 'table') {
+          let loopCol = (cols) => {
+            cols.forEach(col => {
+              sql.push(col.label)
+              if (col.prefix) {
+                sql.push(col.prefix)
+              }
+              if (col.postfix) {
+                sql.push(col.postfix)
+              }
+              if (col.type === 'colspan') {
+                loopCol(col.subcols)
+              } else if (col.type === 'custom') {
+                col.elements.forEach(cell => {
+                  if (cell.eleType === 'button') {
+                    btn.push(cell.label)
+                    filterBtn(cell)
+                    if (cell.OpenType === 'popview' && cell.config) {
+                      traversal(cell.config.components)
+                    } else if (cell.OpenType === 'pop') {
+                      if (cell.modal && cell.modal.fields.length) {
+                        cell.modal.fields.forEach(n => {
+                          sql.push(n.label)
+                          if (n.resourceType === '1') {
+                            filterSql(n.dataSource)
+                          }
+                        })
+                      }
+                    }
+                  } else {
+                    filterElement(cell)
+                  }
+                })
+              }
+            })
+          }
+          loopCol(item.cols)
+        } else if (item.type === 'form') {
+          item.subcards.forEach(cell => {
+            filterBtn(cell.subButton)
+            cell.fields.forEach(n => {
+              sql.push(n.label)
+              if (n.resourceType === '1') {
+                filterSql(n.dataSource)
+              }
+            })
+          })
+        }
+      }
+    })
+  }
+
+  if (config.interfaces) {
+    config.interfaces.forEach(item => {
+      if (item.setting.interType === 'system') {
+        filterSql(item.setting.dataresource)
+        item.scripts && item.scripts.forEach(script => {
+          filterSql(script.sql)
+        })
+      }
+    })
+  }
+
+  traversal(config.components)
+
+  sql = sql.filter(Boolean)
+  btn = btn.filter(Boolean)
+  ops = ops.filter(Boolean)
+  text = text.filter(Boolean)
+
+  sql = Array.from(new Set(sql))
+  btn = Array.from(new Set(btn))
+  ops = Array.from(new Set(ops))
+  text = Array.from(new Set(text))
+
+  sql = sql.map(l => `'${l}','title'`)
+  btn = btn.map(l => `'${l}','button'`)
+  ops = ops.map(l => `'${l}','list'`)
+  text = text.map(l => `'${l}','text'`)
+
+  let list = [...btn, ...sql, ...ops, ...text]
+
+  if (config.MenuName) {
+    list.unshift(`'${config.MenuName}','menu'`)
+  }
+
+  let result = []
+
+  langList.forEach(lan => {
+    if (lan.Lang === defLang) return
+
+    list.forEach(n => {
+      result.push(`'${lan.Lang}',${n}`)
+    })
+  })
+  
+  return result.join(';')
 }
\ No newline at end of file

--
Gitblit v1.8.0