From 880a41a2135d944169d94028f19344ca66b673a0 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 02 十一月 2020 18:23:45 +0800
Subject: [PATCH] 2020-11-02

---
 src/templates/menuconfig/editthdmenu/index.jsx |  104 +++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 75 insertions(+), 29 deletions(-)

diff --git a/src/templates/menuconfig/editthdmenu/index.jsx b/src/templates/menuconfig/editthdmenu/index.jsx
index 0f35f60..60f1ace 100644
--- a/src/templates/menuconfig/editthdmenu/index.jsx
+++ b/src/templates/menuconfig/editthdmenu/index.jsx
@@ -1,7 +1,9 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
+import { connect } from 'react-redux'
 import { DndProvider } from 'react-dnd'
+import { withRouter } from 'react-router-dom'
 import HTML5Backend from 'react-dnd-html5-backend'
 import { notification, Modal, Button, Spin, Icon, Col, Card, Tabs, Row, Input } from 'antd'
 import moment from 'moment'
@@ -81,6 +83,15 @@
   }
 
   /**
+   * @description 缁勪欢閿�姣侊紝娓呴櫎state鏇存柊
+   */
+  componentWillUnmount () {
+    this.setState = () => {
+      return
+    }
+  }
+
+  /**
    * @description 鑿滃崟椤哄簭鏀瑰彉鏃讹紝淇濆瓨涓棿鐘舵��
    */
   handlePreviewList = (List) => {
@@ -134,8 +145,9 @@
       delete _menu.src
       delete _menu.text
 
-      if (_menu.PageParam && _menu.PageParam.Template === 'RolePermission') { // 鍗曢〉闈慨鏀�
+      if (_menu.PageParam && (_menu.PageParam.Template === 'RolePermission' || _menu.PageParam.Template === 'NewPage')) { // 鍗曢〉闈慨鏀�
         _menu.Template = _menu.PageParam.Template
+        _menu.url = _menu.PageParam.url
 
         if (!this.state.fstMenuId) {
           notification.warning({
@@ -441,13 +453,32 @@
       editMenu.fstMenuList = this.state.fstMenuList
     }
 
-    if (useType === 'sys' && (template.type === 'RolePermission' || template.type === 'CustomPage')) { // 鐙珛椤甸潰
+    if (useType === 'sys' && (template.type === 'RolePermission' || template.type === 'NewPage')) { // 鐙珛椤甸潰
       let _menu = {
         ...editMenu,
         MenuID: Utils.getuuid(),
         MenuName: template.title,
         Template: template.type,
         ParentId: this.props.supMenu.MenuID,
+        menuSort: (this.props.menulist.length + 1) * 10,
+        isSystem: true
+      }
+
+      this.setState({
+        handleMVisible: true,
+        sysMenu: _menu
+      })
+      return
+    } else if (template.type === 'CustomPage') {
+      let _menu = {
+        ...editMenu,
+        MenuID: Utils.getuuid(),
+        MenuName: template.title,
+        Template: template.type,
+        ParentId: this.props.supMenu.MenuID,
+        OriginMenuId: template.uuid || '',
+        menuSort: (this.props.menulist.length + 1) * 10,
+        isSystem: true
       }
 
       this.setState({
@@ -519,7 +550,7 @@
 
       this.setState({
         loading: false,
-        tabview: template.type === 'CustomPage' ? '' : template.type,
+        tabview: template.type,
         editMenu: {
           ...editMenu,
           type: template.type,
@@ -529,26 +560,12 @@
         }
       })
 
-      if (template.type === 'CustomPage') { // 浣跨敤鑷畾涔夌殑宸叉湁鑿滃崟
-        // let _menu = {
-        //   ...editMenu,
-        //   MenuID: Utils.getuuid(),
-        //   MenuName: template.title,
-        //   Template: template.type,
-        //   ParentID: this.props.supMenu.MenuID,
-        // }
-  
-        // this.setState({
-        //   handleMVisible: true,
-        //   sysMenu: _menu
-        // })
-        return
-      }
       document.getElementById('root').style.overflowY = 'hidden'
     })
   }
 
   getUsedTemplate = () => {
+    const { memberLevel } = this.props
     let { sysTemplates } = this.state
     const illust = { // 妯℃澘鍥剧墖锛岀敤浜庡凡浣跨敤妯℃澘
       CommonTable: mainsubtable,
@@ -562,8 +579,12 @@
       let hasRolePermission = false
 
       res.UserTemp.forEach(temp => {
-        if (temp.Template === 'RolePermission') {
+        if (temp.Template === 'NewPage') {
+          return
+        } else if (temp.Template === 'RolePermission') {
           hasRolePermission = true
+          return
+        } else if (temp.Template === 'CustomPage' && memberLevel < 20) {
           return
         }
 
@@ -575,15 +596,15 @@
         })
       })
 
-      if (!hasRolePermission) {
-        sysTemplates = sysTemplates.map(temp => {
-          if (temp.type === 'RolePermission') {
-            temp.hidden = false
-          }
+      sysTemplates = sysTemplates.map(temp => {
+        if (temp.type === 'RolePermission' && !hasRolePermission) {
+          temp.hidden = false
+        } else if (temp.type === 'CustomPage' && memberLevel < 20) {
+          temp.hidden = true
+        }
 
-          return temp
-        })
-      }
+        return temp
+      })
 
       this.setState({
         usedTemplates: _templates,
@@ -629,6 +650,17 @@
     }
 
     this.menuFormRef.handleConfirm().then(res => {
+      let PageParam = {
+        Template: sysMenu.Template,
+        OpenType: 'newtab'
+      }
+
+      if (sysMenu.OriginMenuId && sysMenu.Template === 'CustomPage') {
+        PageParam.originMenuId = sysMenu.OriginMenuId
+      } else if (sysMenu.Template === 'NewPage') {
+        PageParam.OpenType = 'NewPage'
+        PageParam.url = res.url
+      }
 
       let param = {
         func: 'sPC_TrdMenu_AddUpt',
@@ -639,10 +671,14 @@
         MenuNo: res.MenuNo,
         Template: sysMenu.Template,
         MenuName: res.MenuName,
-        PageParam: JSON.stringify({Template: sysMenu.Template, OpenType: 'newtab'}),
+        PageParam: JSON.stringify(PageParam),
         LongParam: '',
         LText: '',
         LTexttb: ''
+      }
+
+      if (sysMenu.menuSort) { // 鑿滃崟鏂板缓鏃惰缃帓搴�
+        param.Sort = sysMenu.menuSort
       }
 
       param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
@@ -947,4 +983,14 @@
   }
 }
 
-export default EditMenu
\ No newline at end of file
+const mapStateToProps = (state) => {
+  return {
+    memberLevel: state.memberLevel
+  }
+}
+
+const mapDispatchToProps = () => {
+  return {}
+}
+
+export default withRouter(connect(mapStateToProps, mapDispatchToProps)(EditMenu))
\ No newline at end of file

--
Gitblit v1.8.0