From f3d4db769ba9b51b799d981511a710fd443d0e08 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 21 四月 2025 12:18:03 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/tabviews/custom/components/interfaces/interItem/index.jsx |  122 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 105 insertions(+), 17 deletions(-)

diff --git a/src/tabviews/custom/components/interfaces/interItem/index.jsx b/src/tabviews/custom/components/interfaces/interItem/index.jsx
index 9253bd9..bd37fa6 100644
--- a/src/tabviews/custom/components/interfaces/interItem/index.jsx
+++ b/src/tabviews/custom/components/interfaces/interItem/index.jsx
@@ -1,6 +1,5 @@
-import {Component} from 'react'
+import { Component } from 'react'
 import PropTypes from 'prop-types'
-import { notification } from 'antd'
 
 import Api from '@/api'
 import UtilsDM from '@/utils/utils-datamanage.js'
@@ -16,21 +15,42 @@
   }
 
   loading = false
+  loadTimer = null
   
-  state = {}
+  state = {
+    BID: ''
+  }
 
   componentDidMount () {
-    const { config } = this.props
+    const { config, BID } = this.props
 
     if (config.setting.timer) {
       this.timer = new TimerTask()
       this.timer.init(config.uuid, config.setting.timer, config.setting.timerRepeats, () => {this.loadData()})
     }
-    setTimeout(() => {
+
+    if (!config.setting.supModule) {
+      this.setState({ BID: BID || '' })
+    } else {
+      let BData = window.GLOB.CacheData.get(config.setting.supModule)
+
+      if (BData) {
+        this.setState({ BID: BData.$BID || '' })
+      }
+    }
+
+    if (config.setting.onload !== 'false') {
       this.loadData()
-    }, config.setting.delay)
+    } else {
+      MKEmitter.addListener('initFinish', this.initFinish)
+    }
+
+    if (config.setting.useMSearch) {
+      MKEmitter.addListener('searchRefresh', this.searchRefresh)
+    }
 
     MKEmitter.addListener('reloadData', this.reloadData)
+    MKEmitter.addListener('resetSelectLine', this.resetParentParam)
   }
 
   shouldComponentUpdate (nextProps, nextState) { return false }
@@ -43,7 +63,39 @@
       return
     }
     this.timer && this.timer.stop()
+    MKEmitter.removeListener('initFinish', this.initFinish)
     MKEmitter.removeListener('reloadData', this.reloadData)
+    MKEmitter.removeListener('searchRefresh', this.searchRefresh)
+    MKEmitter.removeListener('resetSelectLine', this.resetParentParam)
+  }
+
+  searchRefresh = (searchId) => {
+    const { config } = this.props
+
+    if (config.$searchId !== searchId) return
+    
+    this.loadData()
+  }
+
+  initFinish = (MenuID) => {
+    const { config } = this.props
+
+    if (config.MenuID !== MenuID) return
+
+    if (config.setting.onload === 'false') {
+      this.loadData()
+    }
+  }
+
+  resetParentParam = (MenuID, id) => {
+    const { config } = this.props
+
+    if (!config.setting.supModule || config.setting.supModule !== MenuID) return
+    if (id !== this.state.BID || id !== '') {
+      this.setState({ BID: id }, () => {
+        this.loadData()
+      })
+    }
   }
 
   reloadData = (publicId) => {
@@ -52,37 +104,73 @@
     this.loadData()
   }
 
-  async loadData () {
-    const { config, BID } = this.props
+  loadData = () => {
+    const { config } = this.props
+
+    this.loadTimer && clearTimeout(this.loadTimer)
+
+    this.loadTimer = setTimeout(() => {
+      this.execLoadData()
+    }, config.setting.delay)
+  }
+
+  async execLoadData () {
+    const { config } = this.props
+    const { BID } = this.state
+
+    if (config.setting.supModule && !BID) {
+      setTimeout(() => {
+        MKEmitter.emit('mkPublicData', config.uuid, { $$empty: true, $$uuid: '' })
+        MKEmitter.emit('resetSelectLine', config.uuid, '', { $$empty: true, $$uuid: '' })
+      }, 20)
+      this.loading = false
+      return
+    }
 
     if (this.loading) return
 
+    let searches = []
+    if (config.setting.useMSearch) {
+      searches = window.GLOB.SearchBox.get(config.$searchId) || []
+
+      if (window.GLOB.SearchBox.has(config.$searchId + 'required') && searches.filter(item => item.required && item.value === '').length > 0) {
+        return
+      }
+    }
+
     this.loading = true
 
-    let param = UtilsDM.getQueryDataParams(config.setting, config.columns.map(col => col.field).join(','), [], config.setting.order, 1, 1, BID)
+    let param = UtilsDM.getQueryDataParams(config.setting, searches, config.setting.order, 1, 1, BID)
 
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.loading = false
-      let _data = { $$empty: true }
+      let _data = { $$empty: true, $$uuid: '' }
 
       if (result.data && result.data[0]) {
         _data = result.data[0]
+        _data.$$uuid = _data[config.setting.primaryKey] || ''
       }
       
-      _data.$$loaded = true
-
       window.GLOB.CacheData.set(config.uuid, _data)
 
       MKEmitter.emit('mkPublicData', config.uuid, _data)
+      MKEmitter.emit('resetSelectLine', config.uuid, _data.$$uuid, _data)
+
+      if (config.setting.loadlevel === 'init') {
+        MKEmitter.emit('interFinish', config.MenuID, config.uuid)
+      }
+
+      UtilsDM.querySuccess(result)
     } else {
       this.loading = false
       this.timer && this.timer.stop()
-      notification.error({
-        top: 92,
-        message: result.message,
-        duration: 10
-      })
+
+      if (config.setting.loadlevel === 'init') {
+        MKEmitter.emit('interFinish', config.MenuID, config.uuid)
+      }
+
+      UtilsDM.queryFail(result)
     }
   }
 

--
Gitblit v1.8.0