From 0847aeed380492bafaf5b27a49ac4e4b77a819b1 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 08 七月 2021 16:39:09 +0800
Subject: [PATCH] 2021-07-08

---
 src/mob/searchconfig/index.jsx |   87 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 81 insertions(+), 6 deletions(-)

diff --git a/src/mob/searchconfig/index.jsx b/src/mob/searchconfig/index.jsx
index 2d7aa16..74d36b4 100644
--- a/src/mob/searchconfig/index.jsx
+++ b/src/mob/searchconfig/index.jsx
@@ -148,20 +148,49 @@
    * 3銆侀�氳繃loading鍒锋柊
    */
   handleSubmit = () => {
+    const { config } = this.state
     this.formRef.handleConfirm().then(res => {
       let _group = fromJS(this.state.group).toJS()
-      let fieldrepet = false // 瀛楁閲嶅
-
+      
       _group.fields = _group.fields.map(item => {
-        if (item.uuid !== res.uuid && item.field.toLowerCase() === res.field.toLowerCase()) {
-          fieldrepet = true
-        }
-
         if (item.uuid === res.uuid) {
           return res
         } else {
           return item
         }
+      })
+
+      let fieldrepet = false // 瀛楁閲嶅
+      let lowerField = res.field.toLowerCase()
+
+      if (config.setting.field) {
+        let m = config.setting.field.toLowerCase().split(',')
+        if (m.includes(lowerField)) {
+          fieldrepet = true
+        }
+      }
+      config.fields.forEach(item => {
+        if (item.uuid === res.uuid) return
+        if (res.type === 'date' && item.type === 'date') return
+        if (item.field.toLowerCase() === lowerField) {
+          fieldrepet = true
+        }
+      })
+
+      config.groups.forEach(group => {
+        if (group.setting.field) {
+          let m = group.setting.field.toLowerCase().split(',')
+          if (m.includes(lowerField)) {
+            fieldrepet = true
+          }
+        }
+        group.fields.forEach(item => {
+          if (item.uuid === res.uuid) return
+          if (res.type === 'date' && item.type === 'date') return
+          if (item.field.toLowerCase() === lowerField) {
+            fieldrepet = true
+          }
+        })
       })
 
       if (fieldrepet) {
@@ -285,8 +314,54 @@
    * @description 淇濆瓨鍒嗙粍璁剧疆
    */
   settingSave = () => {
+    const { config } = this.state
     this.settingRef.handleConfirm().then(res => {
       let _group = {...this.state.group, setting: res}
+      let lowers = _group.setting.field ? _group.setting.field.toLowerCase() : ''
+
+      if (lowers) {
+        let fieldrepet = false // 瀛楁閲嶅
+        lowers = lowers.split(',')
+        let length = lowers.length
+
+        if (_group.floor !== 1 && config.setting.field) {
+          let m = config.setting.field.toLowerCase().split(',')
+          if (Array.from(new Set([...m, ...lowers])).length < m.length + length) {
+            fieldrepet = true
+          }
+        }
+
+        config.fields.forEach(item => {
+          if (lowers.includes(item.field.toLowerCase())) {
+            fieldrepet = true
+          }
+        })
+
+        config.groups.forEach(group => {
+          if (_group.uuid === group.uuid) return
+          if (group.setting.field) {
+            let m = group.setting.field.toLowerCase().split(',')
+            if (Array.from(new Set([...m, ...lowers])).length < m.length + length) {
+              fieldrepet = true
+            }
+          }
+          group.fields.forEach(item => {
+            if (lowers.includes(item.field.toLowerCase())) {
+              fieldrepet = true
+            }
+          })
+        })
+
+        if (fieldrepet) {
+          notification.warning({
+            top: 92,
+            message: '瀛楁宸插瓨鍦紒',
+            duration: 10
+          })
+          return
+        }
+      }
+
       this.setState({
         group: _group,
         settingVisible: false

--
Gitblit v1.8.0