From 542054288debe0251270f782daad7fa2c6e53c5b Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 24 十二月 2020 19:24:06 +0800
Subject: [PATCH] 2020-12-24

---
 src/views/menudesign/index.jsx |   43 +++++++++++++++++++++++++++++++++++++------
 1 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/src/views/menudesign/index.jsx b/src/views/menudesign/index.jsx
index 2dfb63e..26150f8 100644
--- a/src/views/menudesign/index.jsx
+++ b/src/views/menudesign/index.jsx
@@ -33,7 +33,7 @@
 const PaddingController = asyncComponent(() => import('@/menu/padcontroller'))
 const StyleController = asyncComponent(() => import('@/menu/stylecontroller'))
 const ModalController = asyncComponent(() => import('@/menu/modalconfig/controller'))
-const PopviewController = asyncComponent(() => import('@/menu/popview/controller'))
+const PopviewController = asyncComponent(() => import('@/menu/popview'))
 const TableComponent = asyncComponent(() => import('@/templates/sharecomponent/tablecomponent'))
 
 sessionStorage.setItem('isEditState', 'true')
@@ -53,6 +53,8 @@
     oriConfig: null,
     openEdition: '',
     config: null,
+    popBtn: null,             // 寮圭獥鏍囩椤�
+    visible: false
   }
 
   UNSAFE_componentWillMount() {
@@ -83,6 +85,7 @@
 
   componentDidMount () {
     MKEmitter.addListener('delButtons', this.delButtons)
+    MKEmitter.addListener('changePopview', this.initPopview)
   }
 
   /**
@@ -93,10 +96,38 @@
       return
     }
     MKEmitter.removeListener('delButtons', this.delButtons)
+    MKEmitter.removeListener('changePopview', this.initPopview)
   }
 
   delButtons = (items) => {
     this.setState({delButtons: [...this.state.delButtons, ...items]})
+  }
+
+  initPopview = (card, btn) => {
+    const { oriConfig, config } = this.state
+
+    let _config = fromJS(config).toJS()
+    delete _config.tableFields
+
+    if (!is(fromJS(oriConfig), fromJS(_config))) {
+      notification.warning({
+        top: 92,
+        message: '閰嶇疆宸蹭慨鏀癸紝璇蜂繚瀛橈紒',
+        duration: 5
+      })
+      return
+    }
+
+    btn.config = _config
+    btn.component = card
+
+    this.setState({popBtn: btn, visible: true})
+  }
+
+  handleBack = () => {
+    this.setState({popBtn: null, delButtons: []}, () => {
+      this.setState({visible: false})
+    })
   }
 
   closeView = () => {
@@ -137,7 +168,7 @@
         let config = null
 
         try {
-          config = JSON.parse(window.decodeURIComponent(window.atob(result.LongParam)))
+          config = result.LongParam ? JSON.parse(window.decodeURIComponent(window.atob(result.LongParam))) : null
         } catch (e) {
           console.warn('Parse Failure')
           config = null
@@ -593,13 +624,13 @@
   }
 
   render () {
-    const { activeKey, MenuType, dict, MenuId, config, ParentId, MenuName, MenuNo, menuloading } = this.state
+    const { activeKey, MenuType, popBtn, visible, dict, MenuId, config, ParentId, MenuName, MenuNo, menuloading } = this.state
 
     return (
       <ConfigProvider locale={_locale}>
         <div className="pc-menu-view" id="view">
           <Header />
-          <DndProvider backend={HTML5Backend}>
+          {!popBtn && !visible ? <DndProvider backend={HTML5Backend}>
             <div className="menu-body">
               <div className="menu-setting">
                 <Collapse accordion activeKey={activeKey} bordered={false} onChange={(key) => this.setState({activeKey: key})}>
@@ -654,10 +685,10 @@
                 </Card>
               </div>
             </div>
-          </DndProvider>
+          </DndProvider> : null}
+          {popBtn && visible ? <PopviewController btn={popBtn} handleBack={this.handleBack}/> : null}
           <StyleController />
           <ModalController />
-          <PopviewController />
         </div>
       </ConfigProvider>
     )

--
Gitblit v1.8.0