From fbad7d82de145608672e6df2895bf97730afc8b2 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 24 四月 2023 18:00:01 +0800
Subject: [PATCH] 2023-04-24

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

diff --git a/src/utils/utils-custom.js b/src/utils/utils-custom.js
index 823cb11..f454ef0 100644
--- a/src/utils/utils-custom.js
+++ b/src/utils/utils-custom.js
@@ -1250,4 +1250,175 @@
   tables = Array.from(new Set(tables))
 
   return tables
+}
+
+/**
+ * @description 妫�娴嬬粍浠跺唴瀹�
+ */
+export function checkComponent (card) {
+  let errors = []
+  let columns = []
+
+  if (card.$c_ds) {
+    columns = card.columns.map(c => c.field)
+    if (card.setting.interType === 'system' && card.setting.execute !== 'false' && !card.setting.dataresource) {
+      errors.push({ level: 0, detail: '鏈缃暟鎹簮锛�'})
+    } else if (card.setting.interType === 'system' && card.setting.execute === 'false' && card.scripts.filter(script => script.status !== 'false').length === 0) {
+      errors.push({ level: 0, detail: '鏁版嵁婧愪腑鏃犲彲鐢ㄨ剼鏈紒'})
+    } else if (!card.setting.primaryKey) {
+      errors.push({ level: 0, detail: '鏈缃富閿紒'})
+    } else if (!columns.includes(card.setting.primaryKey)) {
+      errors.push({ level: 0, detail: '涓婚敭宸插け鏁堬紒'})
+    } else if (card.subtype === 'dualdatacard') {                     // 鍙岄噸鍗�
+      if (!card.setting.subKey) {
+        errors.push({ level: 0, detail: '鏈缃瓙琛ㄤ富閿紒'})
+      } else if (!card.setting.subBID) {
+        errors.push({ level: 0, detail: '鏈缃瓙琛˙ID锛�'})
+      } else if (!card.setting.supModule) {
+        errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'})
+      }
+    } else if (card.type === 'card' && card.subtype === 'datacard') { // 鏁版嵁鍗★紝鍙兘鏈夊涓婄骇
+      if (card.wrap.supType !== 'multi' && !card.setting.supModule) {
+        errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'})
+      }
+    } else if (card.type !== 'balcony' && !card.setting.supModule) {  // 鎮诞妗嗕笂绾х粍浠堕渶鍗曠嫭璁剧疆
+      errors.push({ level: 0, detail: '鏈缃笂绾х粍浠讹紒'})
+    }
+  } else if ((card.type === 'balcony' || card.type === 'card') && card.wrap.datatype === 'public') {
+    columns = card.columns.map(c => c.field)
+  }
+
+  let doubleClick = ''
+  if (card.type === 'table') {
+    doubleClick = card.wrap.doubleClick || ''
+  }
+
+  if (card.$c_ac) {
+    card.action.forEach(cell => {
+      if (cell.hidden === 'true' || cell.origin) return
+      if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
+        if (!cell.modal || cell.modal.fields.length === 0) {
+          errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+        }
+      } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) {
+        errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣})
+      } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) {
+        errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣})
+      }
+      if (doubleClick === cell.uuid) {
+        doubleClick = ''
+      }
+    })
+  }
+
+  if (card.$c_sc) {
+    card.subcards.forEach((item, i) => {
+      let linkbtn = item.setting.linkbtn || ''
+      item.elements.forEach(cell => {
+        if (cell.eleType === 'button') {
+          if (cell.hidden === 'true') return
+          if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
+            if (!cell.modal || cell.modal.fields.length === 0) {
+              errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+            }
+          } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) {
+            errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣})
+          } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) {
+            errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣})
+          }
+          if (linkbtn && linkbtn === cell.uuid) {
+            linkbtn = ''
+          }
+        } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) {
+          errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄})
+        }
+      })
+  
+      if (card.subtype === 'dualdatacard' || (item.setting.type === 'multi' && item.backElements && sessionStorage.getItem('appType') !== 'mob')) {
+        item.backElements.forEach(cell => {
+          if (cell.eleType === 'button') {
+            if (cell.hidden === 'true') return
+            if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
+              if (!cell.modal || cell.modal.fields.length === 0) {
+                errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+              }
+            } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) {
+              errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣})
+            } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) {
+              errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣})
+            }
+            if (linkbtn && linkbtn === cell.uuid) {
+              linkbtn = ''
+            }
+          } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) {
+            errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄})
+          }
+        })
+      }
+  
+      if (linkbtn) {
+        errors.push({ level: 1, detail: `绗�${i + 1}寮犲崱鐗囦腑缁戝畾鎸夐挳宸插垹闄})
+      }
+    })
+
+    if (card.subcards.length === 0) {
+      errors.push({ level: 0, detail: '鍗$墖涓嶅彲涓虹┖锛�'})
+    }
+  }
+
+  if (card.$c_el) {
+    card.elements.forEach(cell => {
+      if (cell.eleType === 'button') {
+        if (cell.hidden === 'true') return
+        if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
+          if (!cell.modal || cell.modal.fields.length === 0) {
+            errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+          }
+        } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) {
+          errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣})
+        } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) {
+          errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣})
+        }
+      } else if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) {
+        errors.push({ level: 1, detail: `鍗$墖涓姩鎬佸瓧娈碘��${cell.field}鈥濇棤鏁坄})
+      }
+    })
+  }
+
+  if (card.$c_cl) {
+    card.cols.forEach(col => {
+      if (col.type === 'action') {
+        col.elements.forEach(cell => {
+          if (cell.hidden === 'true') return
+          if (cell.OpenType === 'pop' || (cell.OpenType === 'funcbutton' && cell.execMode === 'pop')) {
+            if (!cell.modal || cell.modal.fields.length === 0) {
+              card.errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑琛ㄥ崟灏氭湭娣诲姞`})
+            }
+          } else if (cell.OpenType === 'excelIn' && (!cell.verify || !cell.verify.sheet || !cell.verify.columns || cell.verify.columns.length === 0)) {
+            card.errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎叆鍒楁湭璁剧疆锛乣})
+          } else if (cell.OpenType === 'excelOut' && (!cell.verify || !cell.verify.columns || cell.verify.columns.length === 0)) {
+            card.errors.push({ level: 0, detail: `鎸夐挳鈥�${cell.label}鈥濅腑瀵煎嚭鍒楁湭璁剧疆锛乣})
+          }
+
+          if (doubleClick === cell.uuid) {
+            doubleClick = ''
+          }
+        })
+      } else if (col.type === 'custom') {
+        col.elements.forEach(cell => {
+          if (cell.datatype === 'dynamic' && cell.field && !columns.includes(cell.field)) {
+            card.errors.push({ level: 1, detail: `鏄剧ず鍒椻��${col.label}鈥濅腑鍔ㄦ�佸瓧娈碘��${cell.field}鈥濇棤鏁坄})
+          }
+        })
+      } else if (col.field && !columns.includes(col.field)) {
+        card.errors.push({ level: 1, detail: `鏄剧ず鍒椻��${col.label}鈥濅腑瀛楁鈥�${col.field}鈥濇棤鏁坄})
+      }
+    })
+
+    if (doubleClick) {
+      card.errors.push({ level: 1, detail: `缁戝畾鐨勫弻鍑绘寜閽凡鍒犻櫎`})
+    }
+  }
+
+  return errors
 }
\ No newline at end of file

--
Gitblit v1.8.0