From a94b0a4d15b26ecf8fe99f0a1c3e60d60b97766d Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 15 八月 2023 14:22:03 +0800
Subject: [PATCH] 2023-08-15

---
 src/components/header/index.jsx |  289 +++++++++++++++++++++++++++------------------------------
 1 files changed, 138 insertions(+), 151 deletions(-)

diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index fb8308c..c9d7275 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -3,8 +3,7 @@
 import PropTypes from 'prop-types'
 import {connect} from 'react-redux'
 import { is, fromJS } from 'immutable'
-import moment from 'moment'
-import { Dropdown, Menu, Modal, Form, notification, Switch, Input } from 'antd'
+import { Dropdown, Menu, Modal, notification, Switch, Input } from 'antd'
 import { SearchOutlined, DownOutlined, MenuFoldOutlined, MenuUnfoldOutlined } from '@ant-design/icons'
 
 import {
@@ -12,20 +11,19 @@
   modifyMainMenu,
   logout
 } from '@/store/action'
-import asyncComponent from '@/utils/asyncSpinComponent'
+import asyncSpinComponent from '@/utils/asyncSpinComponent'
+import asyncComponent from '@/utils/asyncComponent'
 import Api from '@/api'
 import MKEmitter from '@/utils/events.js'
-import options from '@/store/options.js'
-import zhCN from '@/locales/zh-CN/main.js'
-import enUS from '@/locales/en-US/main.js'
 import Utils from '@/utils/utils.js'
 import avatar from '@/assets/img/avatar.jpg'
 import './index.scss'
 
 const { confirm } = Modal
 const { Search } = Input
-const Resetpwd = asyncComponent(() => import('./resetpwd'))
-const LoginForm = asyncComponent(() => import('./loginform'))
+const Resetpwd = asyncComponent(() => import('@/components/resetPassword'))
+const QrCode = asyncComponent(() => import('@/components/qrcode'))
+const LoginForm = asyncSpinComponent(() => import('./loginform'))
 
 class Header extends Component {
   static propTpyes = {
@@ -33,22 +31,16 @@
   }
   state = {
     menulist: null, // 涓�绾ц彍鍗�
-    visible: false, // 淇敼瀵嗙爜妯℃�佹
-    dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
-    confirmLoading: false,
     userName: '',
     fullName: '',
     logourl: window.GLOB.mainlogo,
-    appVersion: window.GLOB.appVersion,
     loginVisible: false,
     loginLoading: false,
     avatar: Utils.getrealurl(sessionStorage.getItem('avatar')),
     systems: [],
     searchkey: '',
     thdMenuList: [],
-    debug: sessionStorage.getItem('debug') === 'true',
-    navBar: ['linkage_navigation', 'linkage', 'menu_board', 'menu_board_navigation'].includes(window.GLOB.navBar) ? 'topmenu' : '',
-    menuType: window.GLOB.navBar
+    debug: sessionStorage.getItem('debug') === 'true'
   }
 
   handleCollapse = () => {
@@ -59,60 +51,12 @@
 
   changePassword = () => {
     // 鐐瑰嚮淇敼瀵嗙爜锛屾樉绀哄脊绐�
-    this.setState({
-      visible: true
-    })
-  }
-
-  resetPwdSubmit = () => {
-    if (!this.formRef) return
-
-    this.formRef.handleConfirm().then(res => {
-      this.setState({
-        confirmLoading: true
-      })
-
-      let _param = {
-        func: 's_PwdUpt',
-        LText: `select '${res.originpwd}','${res.password}'`
-      }
-      
-      _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')          // 鏃堕棿鎴�
-      _param.LText = Utils.formatOptions(_param.LText)                   // 鍏抽敭瀛楃鏇挎崲锛宐ase64鍔犲瘑
-      _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)   // md5瀵嗛挜
-  
-      Api.getSystemConfig(_param).then(result => {
-        this.setState({
-          visible: !result.status,
-          confirmLoading: false
-        })
-
-        if (result.status) {
-          notification.success({
-            top: 92,
-            message: '淇敼鎴愬姛锛岃閲嶆柊鐧诲綍銆�',
-            duration: 2
-          })
-          setTimeout(() => {
-            sessionStorage.clear()
-            this.props.logout()
-            this.props.history.replace('/login')
-          }, 2000)
-        } else {
-          notification.warning({
-            top: 92,
-            message: result.message,
-            duration: 5
-          })
-        }
-      })
-    }, () => {})
-  }
-
-  handleCancel = () => {
-    // 鍙栨秷鏃跺叧闂慨鏀瑰瘑鐮佹ā鎬佹锛屾竻绌鸿〃鍗曟暟鎹�
-    this.setState({
-      visible: false
+    MKEmitter.emit('resetpassword', () => {
+      setTimeout(() => {
+        sessionStorage.clear()
+        this.props.logout()
+        this.props.history.replace('/login')
+      }, 2000)
     })
   }
 
@@ -120,8 +64,10 @@
     // 閫�鍑虹櫥褰�
     let _this = this
     confirm({
-      title: this.state.dict['main.logout.hint'],
+      title: '鎮ㄧ‘瀹氳閫�鍑哄悧?',
       content: '',
+      okText: '纭畾',
+      cancelText: '鍙栨秷',
       onOk() {
         sessionStorage.clear()
         _this.props.logout()
@@ -133,8 +79,10 @@
 
   changeMenu (value) {
     // 涓昏彍鍗曞垏鎹�
-    if (value.OpenType === 'outpage' && value.linkUrl) {
-      window.open(value.linkUrl)
+    if (value.OpenType === 'newpage') {
+      window.open(value.src)
+    } else if (value.OpenType === 'newtab') {
+      MKEmitter.emit('modifyTabs', value)
     } else if (value.OpenType === 'menu') {
       this.props.modifyMainMenu(value)
     }
@@ -142,7 +90,7 @@
 
   getRolesMenu () {
     // 鑾峰彇涓昏彍鍗曞弬鏁�
-    let _param = {func: 's_get_pc_menus', systemType: options.sysType}
+    let _param = {func: 's_get_pc_menus', systemType: window.GLOB.sysType}
     _param.pro_sys = window.GLOB.systemType === 'production' ? 'Y' : ''
     
     Api.getSystemConfig(_param).then(result => {
@@ -158,10 +106,10 @@
       const { menulist, thdMenuList } = this.getMenulist(result)
 
       let systems = []
-      if ((options.sysType === 'local' || options.sysType === 'SSO') && result.sys_list) {
+      if ((window.GLOB.sysType === 'local' || window.GLOB.sysType === 'SSO') && result.sys_list) {
         systems = result.sys_list
 
-        if (options.sysType === 'local' && window.GLOB.systemType !== 'production' && systems.length > 10) {
+        if (window.GLOB.sysType === 'local' && window.GLOB.systemType !== 'production' && systems.length > 10) {
           systems.length = 10
         }
       }
@@ -186,16 +134,9 @@
 
       window.GLOB.mkThdMenus = [...thdMenuList, {MenuID: 'home_page_id', EasyCode: '', MenuName: 'home', type: 'CustomPage'}]
 
-      if (_menu) { // 寤舵椂鎵撳紑锛岄槻姝㈡爣绛剧粍鏈畬鎴愬姞杞�
-        setTimeout(() => {
-          if (this.state.navBar === 'topmenu' && this.state.menuType !== 'menu_board_navigation') {
-            MKEmitter.emit('modifyTabs', _menu, 'replace')
-          } else {
-            MKEmitter.emit('modifyTabs', _menu, 'plus')
-          }
-        }, 200)
+      if (_menu) {
+        this.openTab(_menu, 0)
       }
-      MKEmitter.emit('mkMenuLoaded')
     })
     
     // 鑾峰彇瑙掕壊鏉冮檺, edition_type 鎺ュ彛鐗堟湰鎺у埗 ''銆�'Y'銆�'A'
@@ -222,15 +163,31 @@
           })
         }
 
-        MKEmitter.emit('mkActionLoaded')
         window.GLOB.mkActions = _permAction
       })
     }, 50)
   }
 
+  openTab = (menu, times) => {
+    if (times > 50) return
+    times++
+
+    let tabgroup = document.getElementById('mk-tabgroup-wrap')
+
+    if (window.GLOB.mkActions.loaded && tabgroup) {
+      MKEmitter.emit('modifyTabs', menu)
+    } else {
+      setTimeout(() => {
+        this.openTab(times)
+      }, 200)
+    }
+  }
+
   getMenulist = (result) => {
     let thdMenuList = []
     let menulist = []
+    let names = new Map()
+    let doublenames = new Map()
     result.fst_menu && result.fst_menu.forEach(fst => {
       let fstItem = {
         MenuID: fst.MenuID,
@@ -243,8 +200,13 @@
           let PageParam = JSON.parse(fst.PageParam)
 
           if (PageParam.OpenType === 'outpage' && PageParam.linkUrl) {
-            fstItem.OpenType = 'outpage'
-            fstItem.linkUrl = PageParam.linkUrl
+            fstItem.OpenType = 'newpage'
+            fstItem.src = PageParam.linkUrl
+            if (/#\/iframe\//.test(fstItem.src)) {
+              fstItem.src = fstItem.src.replace(/@loginuid@/ig, sessionStorage.getItem('LoginUID'))
+              fstItem.type = 'iframe'
+              fstItem.OpenType = 'newtab'
+            }
           }
         } catch (e) {}
       }
@@ -274,6 +236,7 @@
                 ParentId: snd.MenuID,
                 MenuID: trd.MenuID,
                 MenuName: trd.MenuName,
+                menu_name: trd.MenuName,
                 ParentNames: [fst.MenuName, snd.MenuName],
                 MenuNo: trd.MenuNo,
                 EasyCode: trd.EasyCode,
@@ -286,18 +249,33 @@
                 try {
                   let PageParam = JSON.parse(trd.PageParam)
 
-                  trdItem.type = PageParam.Template || trdItem.type
-                  trdItem.OpenType = PageParam.OpenType || trdItem.OpenType
-                  trdItem.hidden = PageParam.hidden || trdItem.hidden
+                  trdItem.type = PageParam.Template || 'CommonTable'
+                  trdItem.OpenType = PageParam.OpenType || 'newtab'
+                  trdItem.hidden = PageParam.hidden || 'false'
 
                   if (trdItem.type === 'NewPage') {
+                    trdItem.OpenType = 'newpage'
                     trdItem.src = PageParam.url || ''
+                    if (/#\/iframe\//.test(trdItem.src)) {
+                      trdItem.src = trdItem.src.replace(/@loginuid@/ig, sessionStorage.getItem('LoginUID'))
+                      trdItem.type = 'iframe'
+                      trdItem.OpenType = 'newtab'
+                    }
+                  } else if (trdItem.OpenType === 'view') {
+                    trdItem.OpenType = 'newpage'
+                    trdItem.src = '#/view/' + trd.MenuID
+                  } else {
+                    trdItem.src = '#/tab/' + trd.MenuID
                   }
                 } catch (e) {}
+              } else {
+                trdItem.src = '#/tab/' + trd.MenuID
               }
 
-              if (trdItem.type !== 'NewPage') {
-                trdItem.src = '#/tab/' + trd.MenuID
+              if (names.has(trdItem.menu_name)) {
+                doublenames.set(trdItem.menu_name, true)
+              } else {
+                names.set(trdItem.menu_name, true)
               }
 
               thdMenuList.push(trdItem)
@@ -315,6 +293,13 @@
       menulist.push(fstItem)
     })
 
+    thdMenuList = thdMenuList.map(item => {
+      if (doublenames.has(item.menu_name)) {
+        item.menu_name += '锛�' + item.ParentNames.join('-') + '锛�'
+      }
+      return item
+    })
+
     return { menulist, thdMenuList }
   }
 
@@ -328,10 +313,6 @@
         loginVisible: true
       })
     } else {
-      sessionStorage.setItem('role_id', sessionStorage.getItem('cloudRole_id'))
-      sessionStorage.setItem('dataM', sessionStorage.getItem('cloudDataM'))
-      sessionStorage.setItem('isEditState', 'true')
-
       this.props.modifyMainMenu(null)
 
       this.props.history.replace('/design')
@@ -372,14 +353,11 @@
           sessionStorage.setItem('cloudDataM', res.dataM ? 'true' : '')
           sessionStorage.setItem('cloudRole_id', res.role_id || '')
 
-          sessionStorage.setItem('role_id', res.role_id || '')
-          sessionStorage.setItem('dataM', res.dataM ? 'true' : '')
-          sessionStorage.setItem('isEditState', 'true')
-
+          let _url = window.location.href.split('#')[0] + 'cloud'
           if (param.remember) {
-            let _url = window.location.href.split('#')[0] + 'cloud'
-
             localStorage.setItem(_url, window.btoa(window.encodeURIComponent(JSON.stringify({time: new Date().getTime(), username: param.username, password: param.password}))))
+          } else {
+            localStorage.setItem(_url, window.btoa(window.encodeURIComponent(JSON.stringify({time: new Date().getTime(), username: param.username, password: ''}))))
           }
 
           this.props.modifyMainMenu(null)
@@ -482,19 +460,26 @@
   componentDidMount () {
     // 鑾峰彇绯荤粺鐨勭増鏈俊鎭紝寤舵椂鏌ヨ
     setTimeout(() => {
-      Api.getAppVersion().then(() => {}, () => {})
+      Api.getAppVersion()
     }, 1000)
-    // Api.genericInterface({
-    //   func: 's_get_fcc_account_data',
-    //   fcc_date: '2022-03-01',
-    //   search_type: ''
-    // }).then(res => {
-    // })
 
     // sessionStorage 璺ㄩ〉闈㈠叡浜�
     window.addEventListener('storage', (e) => {
       if (e.key === 'getSessionStorage' && e.newValue === window.GLOB.appkey) {
         localStorage.setItem('sessionStorage', JSON.stringify(sessionStorage))
+      } else if (e.key === 'getSysPermission' && e.newValue === window.GLOB.appkey) {
+        localStorage.setItem('sysPermissions', JSON.stringify({mkThdMenus: window.GLOB.mkThdMenus, mkActions: window.GLOB.mkActions}))
+      } else if (e.key === 'menuUpdate') {
+        let vals = e.newValue.split(',')
+        let menuId = vals[1]
+        let position = vals[2] || ''
+        if (position === 'menu') {
+          MKEmitter.emit('reloadMenuView', menuId)
+        } else if (menuId) {
+          Api.getAppVersion(menuId).then(() => {
+            MKEmitter.emit('reloadMenuView', menuId)
+          })
+        }
       }
     })
   }
@@ -513,31 +498,27 @@
   }
 
   gotoDoc = () => {
-    if (options.sysType === 'local' && window.GLOB.mainSystemApi) {
+    if (window.GLOB.sysType === 'local' && window.GLOB.mainSystemApi) {
       let ssodomain = window.GLOB.mainSystemApi.replace('/webapi/dostars', '')
       let url = `${ssodomain}/doc/index.html#?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID')}`
       window.open(url)
-    } else if (options.sysType === 'SSO' || options.sysType === 'cloud') {
+    } else if (window.GLOB.sysType === 'SSO' || window.GLOB.sysType === 'cloud') {
       window.open(`${window.location.href.replace(/\/admin(.*)|\/index.html(.*)|\/#(.*)/ig, '')}/doc/index.html#?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID')}`)
     }
   }
 
   changeVerMenu(menu, type) {
     if (type === 'first') {
-      if (menu.OpenType === 'outpage' && menu.linkUrl) {
-        window.open(menu.linkUrl)
-      } else if (menu.OpenType === 'menu') {
-
+      if (menu.OpenType === 'newpage') {
+        window.open(menu.src)
+      } else if (menu.OpenType === 'newtab') {
+        MKEmitter.emit('modifyTabs', menu)
       }
     } else {
-      if (menu.OpenType === 'newpage' || menu.OpenType === 'NewPage') { // NewPage涓烘墦寮�澶栭儴椤甸潰鍦板潃锛宯ewpage涓烘墦寮�绯荤粺鑿滃崟
+      if (menu.OpenType === 'newpage') {
         window.open(menu.src)
-      } else if (menu.OpenType === 'blank') {
-        MKEmitter.emit('modifyTabs', menu, 'replace')
-      } else if (this.state.navBar === 'topmenu' && this.state.menuType !== 'menu_board_navigation') {
-        MKEmitter.emit('modifyTabs', menu, 'replace')
       } else {
-        MKEmitter.emit('modifyTabs', menu, 'plus')
+        MKEmitter.emit('modifyTabs', menu)
       }
   
       if (window.GLOB.systemType === 'production') {
@@ -552,7 +533,7 @@
       content: '閲嶆柊鍔犺浇搴旂敤淇℃伅',
       onOk() {
         return new Promise(resolve => {
-          if (!window.GLOB.WebSql && !window.GLOB.IndexDB) {
+          if (!window.GLOB.IndexDB) {
             notification.warning({
               top: 92,
               message: '鏇存柊澶辫触锛岃鍒锋柊椤甸潰閲嶈瘯锛�',
@@ -561,6 +542,7 @@
             resolve()
           } else {
             Api.updateAppVersion()
+            Api.delCacheConfig('all')
             setTimeout(() => {
               notification.success({
                 top: 92,
@@ -578,51 +560,65 @@
 
   about = () => {
     Modal.success({
-      title: '绯荤粺鐗堟湰v' + this.state.appVersion
+      title: '绯荤粺鐗堟湰v' + window.GLOB.appVersion
+    })
+  }
+
+  wxnotice = () => {
+    Modal.success({
+      className: 'mk-wx-notice',
+      title: <QrCode card={{qrWidth: 320, color: '#000000'}} value={window.GLOB.baseurl + 'mob/wxnotice.html?userid=' + sessionStorage.getItem('UserID') + '&loginuid=' + sessionStorage.getItem('LoginUID')}/>,
+      okText: '鍏抽棴'
     })
   }
 
   changeToHome = () => {
     if (!['linkage', 'menu_board'].includes(window.GLOB.navBar)) return
 
-    MKEmitter.emit('modifyTabs', {MenuID: 'home_page_id', EasyCode: '', MenuName: 'home', type: 'CustomPage'}, 'replace')
+    MKEmitter.emit('modifyTabs', {MenuID: 'home_page_id', EasyCode: '', MenuName: 'home', type: 'CustomPage'})
   }
 
   render () {
     const { mainMenu, collapse } = this.props
-    const { thdMenuList, searchkey, debug, menulist, navBar, menuType, appVersion } = this.state
+    const { thdMenuList, searchkey, debug, menulist } = this.state
+    const navBar = window.GLOB.navBar
 
     const menu = (
       <Menu className="header-dropdown">
         {debug && <Menu.Item key="switch">
-          {this.state.dict['main.edit']}
+          缂栬緫
           <Switch size="small" style={{marginLeft: '7px'}} checked={false} onChange={this.changeEditState} />
         </Menu.Item>}
-        <Menu.Item key="password" onClick={this.changePassword}>{this.state.dict['main.password']}</Menu.Item>
+        <Menu.Item key="password" onClick={this.changePassword}>淇敼瀵嗙爜</Menu.Item>
         {this.state.systems.length ? <Menu.SubMenu style={{minWidth: '110px'}} title="鍒囨崲绯荤粺">
           {this.state.systems.map((system, index) => (
             <Menu.Item style={{minWidth: '100px', lineHeight: '30px'}} key={'sub' + index} onClick={() => {this.changeSystem(system)}}> {system.AppName} </Menu.Item>
           ))}
         </Menu.SubMenu> : null}
-        <Menu.Item key="doc" onClick={this.gotoDoc}>{this.state.dict['main.doc']}</Menu.Item>
+        <Menu.Item key="doc" onClick={this.gotoDoc}>鏂囨。涓績</Menu.Item>
         <Menu.Item key="verup" onClick={this.verup}>
           椤甸潰鏇存柊
         </Menu.Item>
-        {appVersion ? <Menu.Item key="version" onClick={this.about}>
+        {window.GLOB.WXNotice ? <Menu.Item key="wxnotice" onClick={this.wxnotice}>
+          寰俊娑堟伅
+        </Menu.Item> : null}
+        {window.GLOB.appVersion ? <Menu.Item key="version" onClick={this.about}>
           鍏充簬
         </Menu.Item> : null}
-        <Menu.Item key="logout" onClick={this.logout}>{this.state.dict['main.logout']}</Menu.Item>
+        <Menu.Item key="logout" onClick={this.logout}>閫�鍑�</Menu.Item>
       </Menu>
     )
 
     return (
       <header className="header-container ant-menu-dark" id="main-header-container">
-        <div className={'header-logo ' + (collapse && navBar !== 'topmenu' ? 'collapse' : '')} onClick={this.changeToHome}><img src={this.state.logourl} alt=""/></div>
-        {navBar !== 'topmenu' ? <div className={'header-collapse ' + (collapse ? 'collapse' : '')}>
+        {navBar === 'shutter' ?
+          <div className={'header-logo ' + (collapse ? 'collapse' : '')}><img src={this.state.logourl} alt=""/></div> : 
+          <div className="header-logo" onClick={this.changeToHome}><img src={this.state.logourl} alt=""/></div>}
+        {navBar === 'shutter' ? <div className={'header-collapse ' + (collapse ? 'collapse' : '')}>
           {collapse ? <MenuUnfoldOutlined onClick={this.handleCollapse}/> : <MenuFoldOutlined onClick={this.handleCollapse}/>}
         </div> : <div style={{width: '20px', height: '45px'}}></div>}
         {/* 姝e父鑿滃崟 */}
-        {navBar !== 'topmenu' && menulist ?
+        {navBar === 'shutter' && menulist ?
           <ul className="header-menu">{
             menulist.map(item => {
               return (
@@ -633,7 +629,7 @@
             })}
           </ul> : null
         }
-        {navBar === 'topmenu' && menuType !== 'menu_board' && menuType !== 'menu_board_navigation' && menulist ?
+        {(navBar === 'linkage' || navBar === 'linkage_navigation') && menulist ?
           <ul className="header-menu vertical-menu">{
             menulist.map(item => {
               if (item.children && item.children.length > 0) {
@@ -676,7 +672,7 @@
             })}
           </ul> : null
         }
-        {navBar === 'topmenu' && (menuType === 'menu_board' || menuType === 'menu_board_navigation') && menulist ?
+        {(navBar === 'menu_board' || navBar === 'menu_board_navigation') && menulist ?
           <ul className="header-menu vertical-menu">{
             menulist.map(item => {
               if (item.children && item.children.length > 0) {
@@ -739,12 +735,12 @@
                         option.MenuNo.toLowerCase().indexOf(searchkey.toLowerCase()) >= 0 ||
                         option.EasyCode.toLowerCase().indexOf(searchkey.toLowerCase()) >= 0
                       ) {
-                        return <Menu.Item key={option.MenuID} onClick={() => this.changeVerMenu(option)}>{option.MenuName}</Menu.Item>
+                        return <Menu.Item key={option.MenuID} onClick={() => this.changeVerMenu(option)}>{option.menu_name}</Menu.Item>
                       } else {
                         return null
                       }
                     }
-                    return <Menu.Item key={option.MenuID} onClick={() => this.changeVerMenu(option)}>{option.MenuName}</Menu.Item>
+                    return <Menu.Item key={option.MenuID} onClick={() => this.changeVerMenu(option)}>{option.menu_name}</Menu.Item>
                   })}
                 </Menu>
               </div>
@@ -762,29 +758,20 @@
             </span>
           </div>
         </Dropdown>
-        {/* 淇敼瀵嗙爜 */}
-        <Modal
-          title={this.state.dict['main.password']}
-          visible={this.state.visible}
-          onOk={this.resetPwdSubmit}
-          confirmLoading={this.state.confirmLoading}
-          onCancel={this.handleCancel}
-          destroyOnClose
-        >
-          <Resetpwd dict={this.state.dict} wrappedComponentRef={(inst) => this.formRef = inst} resetPwdSubmit={this.resetPwdSubmit}/>
-        </Modal>
         {/* 缂栬緫鐘舵�佺櫥褰� */}
         <Modal
-          title={this.state.dict['main.login.develop']}
+          title="鐧诲綍寮�鍙戞満"
           visible={this.state.loginVisible}
           onOk={this.loginSubmit}
           width={'430px'}
           confirmLoading={this.state.loginLoading}
           onCancel={() => {this.setState({ loginVisible: false, loginLoading: false })}}
           destroyOnClose
-        >
+          >
           <LoginForm handleSubmit={() => this.loginSubmit()} wrappedComponentRef={(inst) => this.loginRef = inst}/>
         </Modal>
+        {/* 淇敼瀵嗙爜 */}
+        <Resetpwd />
       </header>
     )
   }
@@ -805,4 +792,4 @@
   }
 }
 
-export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Form.create()(Header)))
\ No newline at end of file
+export default withRouter(connect(mapStateToProps, mapDispatchToProps)(Header))
\ No newline at end of file

--
Gitblit v1.8.0