From b09b821ef36fd1ea979e9a5daa98e95732ac81d5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期三, 16 七月 2025 18:16:00 +0800
Subject: [PATCH] 2025-07-16

---
 src/views/mkiframe/index.jsx |  205 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 202 insertions(+), 3 deletions(-)

diff --git a/src/views/mkiframe/index.jsx b/src/views/mkiframe/index.jsx
index e443da7..cfd57df 100644
--- a/src/views/mkiframe/index.jsx
+++ b/src/views/mkiframe/index.jsx
@@ -3,6 +3,8 @@
 
 import Api from '@/api'
 import asyncComponent from '@/utils/asyncLoadComponent'
+import MKEmitter from '@/utils/events.js'
+import ImgScale from '@/components/imgScale'
 import './index.scss'
 
 const CustomPage = asyncComponent(() => import('@/tabviews/custom'))
@@ -16,10 +18,69 @@
     type: 'CustomPage'
   }
 
-  UNSAFE_componentWillMount() {
-    const { menuId, loginUid, bid } = this.props.match.params
+  reloading = false
 
-    if (sessionStorage.getItem('UserID')) {
+  UNSAFE_componentWillMount() {
+    const { params, path } = this.props.match
+    const { menuId, loginUid, bid } = params
+
+    if (/^\/view\//.test(path)) {
+      localStorage.setItem('getSysPermission', window.GLOB.appkey)
+      const that = this
+    
+      window.addEventListener('storage', function(event) {
+        if (event.key === 'sysPermissions' && event.newValue) {
+          let values = event.newValue
+          values = JSON.parse(values)
+
+          window.GLOB.mkActions = values.mkActions
+          values.mkThdMenus && values.mkThdMenus.forEach(item => {
+            window.GLOB.mkThdMenus.set(item.MenuID, item)
+          })
+        } else if (event.key === 'menuUpdate') {
+          let vals = event.newValue.split(',')
+          let MenuId = vals[1]
+          let position = vals[2] || ''
+          if (position === 'menu' && menuId === MenuId) {
+            that.setState({loading: true}, () => {
+              that.setState({loading: false})
+            })
+          }
+        }
+      })
+
+      setTimeout(() => {
+        localStorage.removeItem('getSysPermission')
+        localStorage.removeItem('sysPermissions')
+
+        if (window.GLOB.mkActions && window.GLOB.mkActions.loaded) {
+          this.setState({loading: false})
+        } else if (sessionStorage.getItem('UserID')) {
+          this.getPermRole()
+        } else {
+          Api.getTouristMsg().then(res => {
+            if (res.status) {
+              sessionStorage.setItem('UserID', res.UserID)
+              sessionStorage.setItem('LoginUID', res.LoginUID)
+              sessionStorage.setItem('User_Name', res.UserName)
+              sessionStorage.setItem('Full_Name', res.FullName)
+              sessionStorage.setItem('avatar', res.icon || '')
+              sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
+              sessionStorage.setItem('debug', res.debug || '')
+              sessionStorage.setItem('role_id', res.role_id || '')
+              sessionStorage.setItem('departmentcode', res.departmentcode || '')
+              sessionStorage.setItem('organization', res.organization || '')
+              sessionStorage.setItem('mk_user_type', res.mk_user_type || '')
+              this.getPermRole()
+            } else {
+              sessionStorage.clear()
+              this.props.history.replace('/login')
+              window.location.reload()
+            }
+          })
+        }
+      }, 20)
+    } else if (sessionStorage.getItem('UserID')) {
       this.getPermRole()
     } else {
       sessionStorage.setItem('LoginUID', loginUid)
@@ -42,11 +103,148 @@
           sessionStorage.clear()
           sessionStorage.setItem('iframe', `/iframe/${menuId}/@loginuid@/${bid || ''}`)
           this.props.history.replace('/login')
+          window.location.reload()
         }
       })
     }
 
     this.setState({BID: bid || '', MenuId: menuId})
+  }
+
+  componentDidMount () {
+    MKEmitter.addListener('modifyTabs', this.modifyTabs)
+    MKEmitter.addListener('closeTabView', this.closeTabView)
+
+    if (window.GLOB.forcedUpdate) {
+      MKEmitter.addListener('reloadTabs', this.reloadTabs)
+    }
+
+    if (window.GLOB.sysType !== 'cloud') {
+      Object.defineProperty(window, 'debugger', {
+        configurable: true,
+        enumerable: true,
+        set(value) {
+          if (value === true) {
+            window.GLOB.debugger = true
+          } else if (value === 0) {
+            if (window.backend) {
+              sessionStorage.setItem('systemRun', 'front')
+              window.location.reload()
+            } else {
+              window.mkInfo('绯荤粺褰撳墠鏈娇鐢ㄥ悗绔剼鏈紒')
+            }
+          } else if (value === false) {
+            if (sessionStorage.getItem('systemRun') === 'front') {
+              sessionStorage.removeItem('systemRun')
+              window.location.reload()
+            } else {
+              window.GLOB.debugger = false
+            }
+          }
+        }
+      })
+
+      Object.defineProperty(window, 'debug', {
+        configurable: true,
+        enumerable: true,
+        set(value) {
+          if (value + '' === 'false') {
+            window.GLOB.debugger = false
+            window.GLOB.breakpoint = false
+            sessionStorage.removeItem('breakpoint')
+          } else {
+            window.GLOB.debugger = true
+            window.GLOB.breakpoint = value + ''
+            sessionStorage.setItem('breakpoint', value)
+          }
+          MKEmitter.emit('debugChange')
+        }
+      })
+    }
+  }
+
+  /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+    MKEmitter.removeListener('modifyTabs', this.modifyTabs)
+    MKEmitter.removeListener('reloadTabs', this.reloadTabs)
+    MKEmitter.removeListener('closeTabView', this.closeTabView)
+  }
+
+  reloadTabs = () => {
+    if (this.reloading) return
+
+    let time = new Date().getTime()
+
+    let oldTime = sessionStorage.getItem('mk_reloadTabs')
+    
+    if (oldTime && time - oldTime < 180000) return
+
+    sessionStorage.setItem('mk_reloadTabs', time)
+
+    this.reloading = true
+
+    Api.getAppVersion(true).then(() => {
+      window.location.reload()
+    }, (message) => {
+      notification.error({
+        top: 92,
+        message: message || '绯荤粺閰嶇疆鏇存柊澶辫触锛�',
+        duration: 10
+      })
+    })
+  }
+
+  modifyTabs = (tab) => {
+    const { MenuId, BID } = this.state
+
+    let _menuId = tab.MenuID
+    let _BID = tab.param && tab.param.$BID ? tab.param.$BID : ''
+
+    let historys = sessionStorage.getItem('page_historys')
+    historys = historys ? JSON.parse(historys) : []
+
+    historys.push({MenuId: MenuId, BID: BID})
+
+    sessionStorage.setItem('page_historys', JSON.stringify(historys))
+
+    this.setState({
+      MenuId: _menuId,
+      BID: _BID,
+      loading: true
+    }, () => {
+      this.setState({
+        loading: false
+      })
+    })
+  }
+
+  closeTabView = () => {
+    let historys = sessionStorage.getItem('page_historys')
+    historys = historys ? JSON.parse(historys) : []
+
+    if (historys.length === 0) {
+      window.close()
+      return
+    }
+
+    let tab = historys.shift()
+
+    sessionStorage.setItem('page_historys', JSON.stringify(historys))
+    
+    this.setState({
+      MenuId: tab.MenuId,
+      BID: tab.BID,
+      loading: true
+    }, () => {
+      this.setState({
+        loading: false
+      })
+    })
   }
 
   getPermRole = () => {
@@ -93,6 +291,7 @@
         {loading ? <Spin size="large" /> : null}
         {!loading && type === 'CustomPage' ? <CustomPage MenuID={MenuId} param={{$BID: BID}} changeTemp={this.changeTemp}/> : null}
         {!loading && type === 'BaseTable' ? <BaseTable MenuID={MenuId} param={{$BID: BID}} changeTemp={this.changeTemp}/> : null}
+        <ImgScale />
       </div>
     )
   }

--
Gitblit v1.8.0