From a0a285c90987eb9b1591f90333f3aeb15659ded2 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 17 一月 2020 19:04:57 +0800
Subject: [PATCH] 2020-01-17

---
 src/tabviews/tableshare/mutilform/index.jsx     |   37 ++++--
 src/components/header/index.jsx                 |    2 
 src/components/sidemenu/editsecmenu/index.jsx   |   55 +++++-----
 src/components/sidemenu/editthdmenu/index.jsx   |   38 ++++---
 src/store/options.js                            |    3 
 src/templates/modalconfig/modalform/index.jsx   |   21 +--
 src/templates/modalconfig/index.jsx             |   13 ++
 src/api/index.js                                |   35 ++++--
 src/components/sidemenu/menuelement/card.jsx    |    8 
 src/tabviews/subtable/index.jsx                 |    2 
 src/components/sidemenu/index.jsx               |   18 ++-
 src/locales/zh-CN/comtable.js                   |    1 
 src/tabviews/commontable/index.jsx              |   15 ++
 src/templates/tableshare/transferform/index.jsx |    2 
 public/options.js                               |    2 
 src/locales/en-US/comtable.js                   |   11 ++
 src/components/sidemenu/menuelement/index.jsx   |   12 +-
 src/utils/utils.js                              |   20 ---
 src/views/login/index.jsx                       |    3 
 19 files changed, 177 insertions(+), 121 deletions(-)

diff --git a/public/options.js b/public/options.js
index ae3dfc9..10cbf68 100644
--- a/public/options.js
+++ b/public/options.js
@@ -12,5 +12,5 @@
   bgColor: '',
   lineColor: '',
   website: '',
-  style: '' // 榛樿涓洪粦鑹诧紝鍙�変负white
+  style: ''
 }
\ No newline at end of file
diff --git a/src/api/index.js b/src/api/index.js
index b89eb20..5984450 100644
--- a/src/api/index.js
+++ b/src/api/index.js
@@ -1,8 +1,8 @@
 import axios from 'axios'
 import qs from 'qs'
 import {notification } from 'antd'
-// import md5 from 'md5'
-// import Utils from '@/utils/utils.js'
+import md5 from 'md5'
+import Utils from '@/utils/utils.js'
 import options from '@/store/options.js'
 
 axios.defaults.crossDomain = true
@@ -26,10 +26,10 @@
 })
 
 const setCurrentUrl = () => {
-  if (!!(window.history && window.history.pushState)) {
-    window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
-    window.location.reload()
-  }
+  // if (!!(window.history && window.history.pushState)) {
+  //   window.history.replaceState(null, null, window.location.href.split('#')[0] + '#/login')
+  //   window.location.reload()
+  // }
 }
 
 let GlobMap = new Map()
@@ -93,14 +93,22 @@
   /**
    * @description 鐧诲綍绯荤粺, 鑾峰彇鐢ㄦ埛淇℃伅
    */
-  getusermsg (username, password) {
+  getusermsg (username, password, isCloud = false) {
+    let param = {
+      // func: 'webapi_login',
+      UserName: username,
+      Password: password,
+      Type: 'X'
+    }
+    param.Password = Utils.formatOptions(param.Password)
+
+    if (isCloud && options.cloudLoginApi) {
+      param.rduri = options.cloudLoginApi
+    }
+
     return axios({
-      url: 'webapi/getjsonresult',
-      data: {
-        DBT: 'proc',
-        DBS: 'webapi_login',
-        DBP: JSON.stringify({ 'UserName': username, 'Password': password })
-      }
+      url: '/webapi/dologon',
+      data: param
     })
   }
 
@@ -169,6 +177,7 @@
     delete _param.timestamp
     delete _param.secretkey
     _param = JSON.stringify(_param)
+    _param  = md5(_param)
 
     if (GlobMap.has(_param)) {
       return Promise.resolve(GlobMap.get(_param))
diff --git a/src/components/header/index.jsx b/src/components/header/index.jsx
index 298bdb9..3071e27 100644
--- a/src/components/header/index.jsx
+++ b/src/components/header/index.jsx
@@ -249,7 +249,7 @@
       loginLoading: true
     })
     this.loginRef.handleConfirm().then(param => {
-      Api.getusermsg(param.username, param.password).then(res => {
+      Api.getusermsg(param.username, param.password, true).then(res => {
         if (res.status) {
           sessionStorage.setItem('CloudUserID', res.UserID)
           sessionStorage.setItem('CloudSessionUid', Utils.getuuid())
diff --git a/src/components/sidemenu/editsecmenu/index.jsx b/src/components/sidemenu/editsecmenu/index.jsx
index 12d8c85..a16955f 100644
--- a/src/components/sidemenu/editsecmenu/index.jsx
+++ b/src/components/sidemenu/editsecmenu/index.jsx
@@ -15,39 +15,39 @@
 import './index.scss'
 
 const { confirm } = Modal
-let previewList = null
 
 class EditMenu extends Component {
   static propTpyes = {
-    menulist: PropTypes.any, // 浜岀骇鑿滃崟鍒楄〃
+    menulist: PropTypes.any,      // 浜岀骇鑿滃崟鍒楄〃
     supMenuList: PropTypes.array, // 涓�绾ц彍鍗曞垪琛�
-    supMenu: PropTypes.object, // 浜岀骇鑿滃崟鎵�瀵瑰簲鐨勪竴绾ц彍鍗�
-    reload: PropTypes.func, // 鍒锋柊浜岀骇鑿滃崟鏁版嵁
-    exitEdit: PropTypes.func // 閫�鍑虹紪杈�
+    supMenu: PropTypes.object,    // 浜岀骇鑿滃崟鎵�瀵瑰簲鐨勪竴绾ц彍鍗�
+    reload: PropTypes.func,       // 鍒锋柊浜岀骇鑿滃崟鏁版嵁
+    exitEdit: PropTypes.func      // 閫�鍑虹紪杈�
   }
 
   state = {
-    show: true,
-    type: '', // 缂栬緫绫诲瀷锛宎dd or edit
-    title: '', // 妯℃�佹鏍囬
-    visible: null, // 妯℃�佹鏄惁鍙
-    formlist: null, // 琛ㄥ崟淇℃伅
-    editMenu: null, // 缂栬緫鑿滃崟
-    thawmenulist: null, // 宸插喕缁撶殑浜岀骇鑿滃崟
-    thawMvisible: false, // 瑙i櫎鍐荤粨妯℃�佹
-    confirmLoading: false, // 鎻愪氦涓�傘�傘��
     dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS,
+    menulist: null,       // 鑿滃崟鍒楄〃
+    type: '',             // 缂栬緫绫诲瀷锛宎dd or edit
+    title: '',            // 妯℃�佹鏍囬
+    visible: null,        // 妯℃�佹鏄惁鍙
+    formlist: null,       // 琛ㄥ崟淇℃伅
+    editMenu: null,       // 缂栬緫鑿滃崟
+    thawmenulist: null,   // 宸插喕缁撶殑浜岀骇鑿滃崟
+    thawMvisible: false,  // 瑙i櫎鍐荤粨妯℃�佹
+    confirmLoading: false // 鎻愪氦涓�傘�傘��
   }
 
   handlePreviewList = (List) => {
-    // 鑿滃崟椤哄簭鏀瑰彉鏃讹紝淇濆瓨涓棿鐘舵��
-    previewList = List
+    this.setState({
+      menulist: List
+    })
   }
 
   handleMenu = (menu) => {
     // 鑿滃崟缂栬緫锛氫慨鏀广�佸垹闄わ紝濡傝彍鍗曢『搴忓凡鏀瑰彉锛屾彁绀轰繚瀛樿彍鍗曢『搴�
     const _this = this
-    if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
+    if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
       notification.warning({
         top: 92,
         message: this.state.dict['header.menu.presave'],
@@ -187,11 +187,11 @@
         }
       })
     } else if (type === 'confirm') { // 纭畾鏃跺叆椤哄簭鏀瑰彉锛屽垯鎻愮ず淇濆瓨锛屽惁鍒欓��鍑虹紪杈�
-      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
+      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
         let _this = this
         let param  = {
           func: 'sPC_Menu_SortUpt',
-          LText: previewList.map((item, index) => {
+          LText: this.state.menulist.map((item, index) => {
             return 'select \'' + item.MenuID + '\' as Menuid,' + (index + 1) * 10 + ' as sort'
           })
         }
@@ -362,15 +362,16 @@
   }
 
   UNSAFE_componentWillMount () {
-    previewList = null
+    this.setState({
+      menulist: this.props.menulist
+    })
   }
 
   UNSAFE_componentWillReceiveProps (nextProps) {
     if (!is(fromJS(this.props.menulist), fromJS(nextProps.menulist))) {
-      this.setState({show: false})
-      setTimeout(() => {
-        this.setState({show: true})
-      }, 10)
+      this.setState({
+        menulist: nextProps.menulist
+      })
     }
   }
 
@@ -397,13 +398,13 @@
             </div>
           </div>
         </div>
-        {this.state.show && <DndProvider backend={HTML5Backend}>
+        <DndProvider backend={HTML5Backend}>
           <DragElement
-            list={this.props.menulist}
+            list={this.state.menulist}
             handlePreviewList={this.handlePreviewList}
             handleMenu={this.handleMenu}
           />
-        </DndProvider>}
+        </DndProvider>
         <div className="menu-add" onClick={() => {this.handleSubBtn('add')}}>
           <Icon type="plus" />
         </div>
diff --git a/src/components/sidemenu/editthdmenu/index.jsx b/src/components/sidemenu/editthdmenu/index.jsx
index 2af730f..b747b99 100644
--- a/src/components/sidemenu/editthdmenu/index.jsx
+++ b/src/components/sidemenu/editthdmenu/index.jsx
@@ -30,8 +30,6 @@
   CommonTable: nortable
 }
 
-let previewList = null // 鍒濆鑿滃崟鍒楄〃
-
 class EditMenu extends Component {
   static propTpyes = {
     reload: PropTypes.func,      // 鑿滃崟淇敼鍚庡埛鏂�
@@ -43,7 +41,6 @@
 
   state = {
     dict: (!localStorage.getItem('lang') || localStorage.getItem('lang') === 'zh-CN') ? zhCN : enUS,
-    show: true,            // 鎺у埗鑿滃崟鍒锋柊
     thawmenulist: null,    // 宸插喕缁撶殑浜岀骇鑿滃崟
     type: '',              // 鎿嶄綔绫诲瀷锛屾柊寤烘垨缂栬緫鑿滃崟
     tabview: '',           // 閫夋嫨妯℃澘绐楀彛锛坱emplate锛夈�佸熀纭�琛ㄦ牸閰嶇疆锛圕ommonTable锛夈�佽〃鍗曪紙Modal锛夈�佸瓙琛紙SubTable锛�
@@ -59,6 +56,7 @@
     preview: null,         // 鍥剧墖棰勮url
     pretemplate: null,     // 棰勮妯℃澘
     btnParam: null,        // 缂栬緫鎸夐挳鐨勯厤缃俊鎭�
+    menulist: null,        // 缂栬緫涓殑鑿滃崟
     sysTemplates: sysTemps // 绯荤粺妯℃澘
   }
 
@@ -66,7 +64,9 @@
    * @description 鑿滃崟椤哄簭鏀瑰彉鏃讹紝淇濆瓨涓棿鐘舵��
    */
   handlePreviewList = (List) => {
-    previewList = List
+    this.setState({
+      menulist: List
+    })
   }
 
   /**
@@ -77,7 +77,8 @@
    */
   handleMenu = (menu) => {
     const _this = this
-    if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
+
+    if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
       notification.warning({
         top: 92,
         message: this.state.dict['header.menu.presave'],
@@ -168,7 +169,7 @@
   handleSubBtn = (type) => {
     // 鎿嶄綔鎸夐挳锛氭坊鍔犮�佽В闄ゅ喕缁撱�佺‘璁ゅ強鍏抽棴
     if (type === 'add') { // 鐐瑰嚮娣诲姞鏃讹紝灞曞紑妯℃澘
-      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
+      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
         notification.warning({
           top: 92,
           message: this.state.dict['header.menu.presave'],
@@ -179,7 +180,7 @@
       this.setState({tabview: 'template', type: 'add'})
       document.getElementById('root').style.overflowY = 'hidden'
     } else if (type === 'thaw') {
-      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
+      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
         notification.warning({
           top: 92,
           message: this.state.dict['header.menu.presave'],
@@ -213,11 +214,11 @@
         }
       })
     } else if (type === 'confirm') {
-      if (previewList && !is(fromJS(previewList), fromJS(this.state.subMenulist))) {
+      if (!is(fromJS(this.props.menulist), fromJS(this.state.menulist))) {
         let _this = this
         let param  = {
           func: 'sPC_Menu_SortUpt',
-          LText: previewList.map((item, index) => {
+          LText: this.state.menulist.map((item, index) => {
             return 'select \'' + item.MenuID + '\' as Menuid,' + (index + 1) * 10 + ' as sort'
           })
         }
@@ -500,17 +501,18 @@
   }
 
   UNSAFE_componentWillMount () {
-    previewList = null
     this.getUsedTemplate()
+
+    this.setState({
+      menulist: this.props.menulist
+    })
   }
 
   UNSAFE_componentWillReceiveProps (nextProps) {
     if (!is(fromJS(this.props.menulist), fromJS(nextProps.menulist))) {
-      previewList = null
-      this.setState({show: false})
-      setTimeout(() => {
-        this.setState({show: true})
-      }, 10)
+      this.setState({
+        menulist: nextProps.menulist
+      })
     }
   }
 
@@ -543,13 +545,13 @@
           <Icon type={this.props.supMenu.PageParam.Icon} />
           <span>{this.props.supMenu.text}</span>
         </div>
-        {this.state.show && <DndProvider backend={HTML5Backend}>
+        <DndProvider backend={HTML5Backend}>
           <DragElement
-            list={this.props.menulist}
+            list={this.state.menulist}
             handlePreviewList={this.handlePreviewList}
             handleMenu={this.handleMenu}
           />
-        </DndProvider>}
+        </DndProvider>
         <div className="menu-add" onClick={() => {this.handleSubBtn('add')}}>
           <Icon type="plus" />
         </div>
diff --git a/src/components/sidemenu/index.jsx b/src/components/sidemenu/index.jsx
index 1bdb8b8..c1080e3 100644
--- a/src/components/sidemenu/index.jsx
+++ b/src/components/sidemenu/index.jsx
@@ -73,29 +73,35 @@
       }
       let parentID = submenuId ? submenuId : result.data[0].ParentID // 灞曞紑浜岀骇鑿滃崟ID
 
-      let menulist = result.data.map((item, i) => {
+      let menulist = result.data.map(item => {
         let _smenu = {}
-        _smenu.id = i
+        _smenu.id = item.ParentID
         _smenu.MenuID = item.ParentID
         _smenu.text = item.MenuNameP
+
         try {
           _smenu.PageParam = JSON.parse(item.PageParamP)
         } catch (e) {
           _smenu.PageParam = {Icon: 'folder'}
         }
         if (item.FunMenu) {
-          _smenu.children = item.FunMenu.map((child, n) => {
+          _smenu.children = item.FunMenu.map(child => {
             let _tmenu = {}
-            let _msg = window.btoa('mm=' + menu.MenuID + '&sm=' + _smenu.MenuID + '&tm=' + child.MenuID + '&ud=' + msg) // 寰呭畬鍠�
-            _tmenu.src = '#/main/' + _msg
+
+            // 鎵撳紑鏂伴〉闈㈤摼鎺�
+            _tmenu.src = '#/main/' + window.btoa('mm=' + menu.MenuID + '&sm=' + _smenu.MenuID + '&tm=' + child.MenuID + '&ud=' + msg)
+
             if (child.LinkUrl === 'CommonTable') {
               _tmenu.type = 'CommonTable'
             } else if (child.LinkUrl === 'DataManage') {
               _tmenu.type = 'DataManage'
+              _tmenu.forbidden = true
             // } else if (child.LinkUrl === 'bda/rdt?pageno=rolemenus&MenuNo=RoleMenuM') {
             //   _tmenu.type = 'RoleManage'
+            //   _tmenu.forbidden = true
             } else if (child.LinkUrl.split('?')[0] === 'Main/Index' || child.LinkUrl.split('?')[0] === 'bda/rdt') {
               _tmenu.type = 'iframe'
+              _tmenu.forbidden = true
             }
 
             if (_tmenu.type !== 'iframe') {
@@ -109,7 +115,7 @@
               _tmenu.LinkUrl = child.LinkUrl
             }
 
-            _tmenu.id = n
+            _tmenu.id = child.MenuID
             _tmenu.MenuID = child.MenuID
             _tmenu.MenuNo = child.MenuNo
             _tmenu.MenuName = child.MenuName
diff --git a/src/components/sidemenu/menuelement/card.jsx b/src/components/sidemenu/menuelement/card.jsx
index 7a675b9..d50f41e 100644
--- a/src/components/sidemenu/menuelement/card.jsx
+++ b/src/components/sidemenu/menuelement/card.jsx
@@ -4,7 +4,7 @@
 import ItemTypes from './itemtypes'
 import './index.scss'
 
-const Card = ({ id, icon, text, menutype, moveCard, findCard, editCard, closeCard }) => {
+const Card = ({ id, card, moveCard, findCard, editCard, closeCard }) => {
   const originalIndex = findCard(id).index
   const [{ isDragging }, drag] = useDrag({
     item: { type: ItemTypes.CARD, id, originalIndex },
@@ -34,10 +34,10 @@
   return (
     <div className="side-card" style={{ opacity }}>
       <div ref={node => drag(drop(node))}>
-        {icon && <Icon type={icon} />}
-        {text}
+        {card.PageParam && card.PageParam.Icon && <Icon type={card.PageParam.Icon} />}
+        {card.text}
       </div>
-      {menutype === 'CommonTable' ? <Icon className="edit" type="edit" onClick={edit} /> : null}
+      {!card.forbidden ? <Icon className="edit" type="edit" onClick={edit} /> : null}
       <Icon className="close" type="close" onClick={close} />
     </div>
   )
diff --git a/src/components/sidemenu/menuelement/index.jsx b/src/components/sidemenu/menuelement/index.jsx
index 4473b09..05fc86d 100644
--- a/src/components/sidemenu/menuelement/index.jsx
+++ b/src/components/sidemenu/menuelement/index.jsx
@@ -1,5 +1,6 @@
 import React, { useState } from 'react'
 import { useDrop } from 'react-dnd'
+import { is, fromJS } from 'immutable'
 import update from 'immutability-helper'
 import Card from './card'
 import ItemTypes from './itemtypes'
@@ -10,8 +11,11 @@
   const moveCard = (id, atIndex) => {
     const { card, index } = findCard(id)
     const _cards = update(cards, { $splice: [[index, 1], [atIndex, 0, card]] })
-    setCards(_cards)
     handlePreviewList(_cards)
+  }
+
+  if (!is(fromJS(cards), fromJS(list))) {
+    setCards(list)
   }
 
   const findCard = id => {
@@ -46,10 +50,8 @@
       {cards.map(card => (
         <Card
           key={card.id}
-          id={`${card.id}`}
-          icon={card.PageParam && card.PageParam.Icon}
-          menutype={card.type}
-          text={card.text}
+          id={card.id}
+          card={card}
           moveCard={moveCard}
           editCard={editCard}
           closeCard={closeCard}
diff --git a/src/locales/en-US/comtable.js b/src/locales/en-US/comtable.js
index ed31042..0dce9ee 100644
--- a/src/locales/en-US/comtable.js
+++ b/src/locales/en-US/comtable.js
@@ -172,6 +172,17 @@
   'header.form.request.method': '璇锋眰鏂瑰紡',
   'header.form.readonly': '鏄惁鍙',
   'header.form.field.required': '鏄惁蹇呭~',
+  'header.form.field.ishidden': '鏄惁闅愯棌',
+  'header.modal.form.edit': '琛ㄥ崟-缂栬緫',
+  'header.modal.search.edit': '鎼滅储鏉′欢-缂栬緫',
+  'header.modal.action.edit': '鎸夐挳-缂栬緫',
+  'header.modal.action.copy': '鎸夐挳-澶嶅埗',
+  'header.modal.column.edit': '鏄剧ず鍒�-缂栬緫',
+  'header.modal.colspan.edit': '鍚堝苟鍒�-缂栬緫',
+  'header.modal.gridbtn.edit': '鎿嶄綔鍒�-缂栬緫',
+  'header.modal.tabs.edit': '鏍囩-缂栬緫',
+  'header.modal.func.innerface': '鍐呴儴鎺ュ彛: 鍙嚜瀹氫箟鏁版嵁澶勭悊鍑芥暟锛屽嚱鏁板悕绉伴渶浠ableField绛夊瓧绗﹀紑濮嬶紱鏈缃椂浼氳皟鐢ㄧ郴缁熷嚱鏁帮紝浣跨敤绯荤粺鍑芥暟闇�瀹屽杽鏁版嵁婧愬強鎿嶄綔绫诲瀷;',
+  'header.modal.func.outface': '澶栭儴鎺ュ彛: 鍙嚜瀹氫箟鏁版嵁澶勭悊鍑芥暟锛屾彁浜ゆ暟鎹粡杩囧唴閮ㄥ嚱鏁板鐞嗗悗锛屼紶鍏ュ閮ㄦ帴鍙o紝鏈缃椂锛屾暟鎹細鐩存帴浼犲叆澶栭儴鎺ュ彛銆�',
   'form.required.input': 'Please enter the ',
   'form.required.select': '璇烽�夋嫨'
 }
\ No newline at end of file
diff --git a/src/locales/zh-CN/comtable.js b/src/locales/zh-CN/comtable.js
index 0ae9ee5..cb7c839 100644
--- a/src/locales/zh-CN/comtable.js
+++ b/src/locales/zh-CN/comtable.js
@@ -172,6 +172,7 @@
   'header.form.request.method': '璇锋眰鏂瑰紡',
   'header.form.readonly': '鏄惁鍙',
   'header.form.field.required': '鏄惁蹇呭~',
+  'header.form.field.ishidden': '鏄惁闅愯棌',
   'header.modal.form.edit': '琛ㄥ崟-缂栬緫',
   'header.modal.search.edit': '鎼滅储鏉′欢-缂栬緫',
   'header.modal.action.edit': '鎸夐挳-缂栬緫',
diff --git a/src/store/options.js b/src/store/options.js
index b670fdc..6cb4f12 100644
--- a/src/store/options.js
+++ b/src/store/options.js
@@ -2,6 +2,9 @@
 export default {
   AppId: '201912040924165801464FF1788654BC5AC73',
   cloudServiceApi: 'http://qingqiumarket.cn/mkwms/webapi/dostar',
+  cloudLoginApi: 'http://qingqiumarket.cn/mkwms/webapi/dologon',
+  // cloudServiceApi: 'http://cloud.mk9h.cn/webapi/dostar',
+  // cloudLoginApi: 'http://cloud.mk9h.cn/webapi/dologon',
   cloudDatabase: 'sqlserver',
   localDatabase: 'mysql'
 }
\ No newline at end of file
diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index d099e40..14b1a3a 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -187,7 +187,7 @@
       }, () => {
         this.improveSearch()
 
-        if (config.setting.onload !== 'false') {
+        if (config.setting.onload !== 'false') { // 鍒濆鍖栧彲鍔犺浇
           this.loadmaindata()
         }
       })
@@ -318,6 +318,10 @@
 
     this.handleTableId('mainTable', '')
 
+    if (!param) { // 鏈幏鍙栧弬鏁版椂锛屼笉鍙戣姹�
+      return
+    }
+
     let result = await Api.genericInterface(param)
     if (result.status) {
       this.setState({
@@ -378,6 +382,15 @@
   getDefaultParam = () => {
     const { arr_field, pageIndex, pageSize, orderColumn, orderType, search, setting } = this.state
 
+    if (!arr_field) {
+      notification.warning({
+        top: 92,
+        message: '鏈缃樉绀哄垪锛�',
+        duration: 10
+      })
+      return null
+    }
+
     let _search = Utils.joinMainSearchkey(search)
 
     _search = _search ? 'where ' + _search : ''
diff --git a/src/tabviews/subtable/index.jsx b/src/tabviews/subtable/index.jsx
index aed40e9..ee5fa1e 100644
--- a/src/tabviews/subtable/index.jsx
+++ b/src/tabviews/subtable/index.jsx
@@ -66,7 +66,7 @@
    */
   async loadconfig () {
     const { permAction } = this.props
-    console.log(permAction)
+
     let param = {
       func: 'sPC_Get_LongParam',
       MenuID: this.props.MenuID
diff --git a/src/tabviews/tableshare/mutilform/index.jsx b/src/tabviews/tableshare/mutilform/index.jsx
index 064cd74..8e141ae 100644
--- a/src/tabviews/tableshare/mutilform/index.jsx
+++ b/src/tabviews/tableshare/mutilform/index.jsx
@@ -139,7 +139,7 @@
     })
   }
 
-  resetform = (formlist, supfields, index) => {
+  resetform = (formlist, supfields, index, fieldsvalue) => {
     index++
     let subfields = []
 
@@ -148,7 +148,8 @@
         if (item.type === 'link' && item.linkField === supfield.field) {
           item.options = item.oriOptions.filter(option => option.parentId === supfield.initval)
           item.initval = item.options[0] ? item.options[0].Value : ''
-          item.hiden = true
+
+          fieldsvalue[item.field] = item.initval
   
           subfields.push(item)
         }
@@ -157,9 +158,10 @@
     })
 
     if (subfields.length === 0 || index > 6) {
+      this.props.form.setFieldsValue(fieldsvalue)
       return formlist
     } else {
-      return this.resetform(formlist, subfields, index)
+      return this.resetform(formlist, subfields, index, fieldsvalue)
     }
   }
 
@@ -167,11 +169,13 @@
     let formlist = JSON.parse(JSON.stringify(this.state.formlist))
 
     let subfields = []
+    let fieldsvalue = {}
     formlist = formlist.map(item => {
       if (item.type === 'link' && item.linkField === _field.field) {
         item.options = item.oriOptions.filter(option => option.parentId === value)
         item.initval = item.options[0] ? item.options[0].Value : ''
-        item.hiden = true
+
+        fieldsvalue[item.field] = item.initval
 
         subfields.push(item)
       }
@@ -190,16 +194,10 @@
 
     if (subfields.length === 0) return
 
-    formlist = this.resetform(formlist, subfields, 0)
+    formlist = this.resetform(formlist, subfields, 0, fieldsvalue)
+
     this.setState({
       formlist: formlist
-    }, () => {
-      this.setState({
-        formlist: formlist.map(item => {
-          item.hiden = false
-          return item
-        })
-      })
     })
   }
 
@@ -226,8 +224,8 @@
     }
 
     this.state.formlist.forEach((item, index) => {
-      if ((!item.field && item.type !== 'title') || item.hiden) return
-
+      if ((!item.field && item.type !== 'title') || item.hidden === 'true') return
+      
       if (item.type === 'title') {
         fields.push(
           <Col span={24} key={index}>
@@ -500,6 +498,17 @@
       this.props.form.validateFieldsAndScroll((err, values) => {
         if (!err) {
           let search = []
+          // 闅愯棌琛ㄥ崟
+          this.state.formlist.forEach(item => {
+            if (item.hidden !== 'true' || !item.field) return
+            search.push({
+              type: this.state.datatype[item.field],
+              readonly: this.state.readtype[item.field],
+              key: item.field,
+              value: item.initval
+            })
+          })
+
           Object.keys(values).forEach(key => {
             if (this.state.datatype[key] === 'datetime') {
               let _value = ''
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index b3cdf2a..56e6cd4 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -535,6 +535,19 @@
           }]
         },
         {
+          type: 'radio',
+          key: 'hidden',
+          label: this.state.dict['header.form.field.ishidden'],
+          initVal: card.hidden || 'false',
+          options: [{
+            value: 'true',
+            text: this.state.dict['header.form.true']
+          }, {
+            value: 'false',
+            text: this.state.dict['header.form.false']
+          }]
+        },
+        {
           type: 'multiselect',
           key: 'linkSubField',
           label: this.state.dict['header.form.linkForm'],
diff --git a/src/templates/modalconfig/modalform/index.jsx b/src/templates/modalconfig/modalform/index.jsx
index ff106e1..37555a0 100644
--- a/src/templates/modalconfig/modalform/index.jsx
+++ b/src/templates/modalconfig/modalform/index.jsx
@@ -26,7 +26,7 @@
 
     let type = formlist.filter(cell => cell.key === 'type')[0].initVal
     let resourceType = formlist.filter(cell => cell.key === 'resourceType')[0].initVal
-    let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required'] // 榛樿鏄剧ず椤�
+    let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required', 'hidden'] // 榛樿鏄剧ず椤�
 
     if ((type === 'multiselect' || type === 'select' || type === 'link') && resourceType === '0') { // 閫夋嫨绫诲瀷銆佽嚜瀹氫箟璧勬簮
       _options = [..._options, 'resourceType', 'options']
@@ -55,9 +55,8 @@
           form.type = 'select'
         } else if (type === 'number' && form.key === 'initval') {
           form.type = 'number'
-          form.initVal = 0
         }
-        form.hidden = !_options.includes(form.key)
+        form.show = _options.includes(form.key)
         return form
       })
     })
@@ -78,7 +77,7 @@
 
   openTypeChange = (key, value) => {
     if (key === 'type') {
-      let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required']
+      let _options = ['label', 'field', 'initval', 'type', 'readonly', 'required', 'hidden']
 
       if ((value === 'multiselect' || value === 'select' || value === 'link') && this.state.resourceType === '0') { // 閫夋嫨绫诲瀷銆佽嚜瀹氫箟璧勬簮
         _options = [..._options, 'resourceType', 'options']
@@ -101,20 +100,18 @@
       this.setState({
         openType: value,
         formlist: this.state.formlist.map(form => {
-          form.hidden = !_options.includes(form.key)
+          form.show = _options.includes(form.key)
           if (form.key === 'initval') {
             if (dateOptions.hasOwnProperty(value)) {
               form.options = dateOptions[value]
               form.type = 'select'
-              form.initVal = ''
             } else if (value === 'number') {
               form.type = 'number'
-              form.initVal = 0
             } else {
               form.type = 'text'
-              form.initVal = ''
             }
-            form.hidden = true
+            form.initVal = ''
+            form.show = false
           }
           return form
         })
@@ -122,7 +119,7 @@
         this.setState({
           formlist: this.state.formlist.map(form => {
             if (form.key === 'initval' && value !== 'fileupload' && value !== 'funcvar') {
-              form.hidden = false
+              form.show = true
             }
             return form
           })
@@ -151,7 +148,7 @@
       this.setState({
         resourceType: value,
         formlist: this.state.formlist.map(form => {
-          form.hidden = !_options.includes(form.key)
+          form.show = _options.includes(form.key)
           return form
         })
       })
@@ -163,7 +160,7 @@
     const fields = []
 
     this.state.formlist.forEach((item, index) => {
-      if (item.hidden) return
+      if (!item.show) return
 
       if (item.type === 'text') { // 鏂囨湰鎼滅储
         let rules = []
diff --git a/src/templates/tableshare/transferform/index.jsx b/src/templates/tableshare/transferform/index.jsx
index 339461d..2bc1f6c 100644
--- a/src/templates/tableshare/transferform/index.jsx
+++ b/src/templates/tableshare/transferform/index.jsx
@@ -27,7 +27,7 @@
   UNSAFE_componentWillMount() {
     let datas = new Map()
     this.props.columns.forEach(item => {
-      if (item.field) {
+      if (item.field && item.Hide !== 'true') {
         datas.set(item.uuid, item)
       }
     })
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 50e592c..f4c00ea 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -166,25 +166,11 @@
     value = value.replace(/%/ig, 'mpercent')
     value = value.replace(/(^\s|\s$)/ig, '')
 
-    // value = value.replace(/>/ig, 'greateror')
-    //   .replace(/</ig, 'lessor')
-    //   .replace(/!=/ig, 'noequal')
-    //   .replace(/=/ig, 'equal')
-    //   .replace(/,/ig, 'comma')
-    //   .replace(/>=/ig, 'greaterorequal')
-    //   .replace(/<=/ig, 'lessorequal')
-    //   .replace(/@/ig, 'matk')
-    //   .replace(/\(/ig, 'mlbrktsk')
-    //   .replace(/\)/ig, 'mrbrktsk')
-    //   .replace(/\*/ig, 'mastrsk')
-    //   .replace(/'/ig, 'mqotek')
-    //   .replace(/\s/ig, 'mspace')
-
     // 1銆乪ncode缂栫爜锛堜腑鏂囧瓧绗﹁秴鍑篵ase64鍔犲瘑鑼冨洿锛夛紝2銆乥ase64鍔犲瘑
     value = window.btoa(window.encodeURIComponent(value))
 
-    // 闅忔満鎻掑叆瀛楃
-    let index = Math.floor(Math.random() * value.length)
+    // 鎻掑叆瀛楃
+    let index = Math.floor(value.length / 2)
     value = value.slice(0, index) + salt + value.slice(index)
 
     // base64鍔犲瘑
@@ -625,7 +611,7 @@
       _sql += `declare @UserName  nvarchar(50),@FullName nvarchar(50)
         select @UserName=UserName,@FullName=FullName from SUsers where UID=@UserID 
         `
-      _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@BID,@userid,@username,@fullname`
+      _sql += `insert into ${btn.sql} (${keys},createuserid,CreateUser,CreateStaff,BID) select ${values},@userid,@username,@fullname,@BID`
     } else if (btn.OpenType === 'pop' && btn.sqlType === 'update') {
       let _form = []
       formdata.forEach(item => {
diff --git a/src/views/login/index.jsx b/src/views/login/index.jsx
index c36e6b2..7e86c78 100644
--- a/src/views/login/index.jsx
+++ b/src/views/login/index.jsx
@@ -84,6 +84,9 @@
           }
         } else {
           message.warning(res.message)
+          this.setState({
+            isDisabled: false
+          })
         }
       })
     } else {

--
Gitblit v1.8.0