From 3193df5faaacb0fe903ce993b16319276528524f Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 06 七月 2020 23:14:17 +0800
Subject: [PATCH] 2020-07-06

---
 src/components/tabview/index.jsx                                   |    2 
 src/tabviews/zshare/actionList/tabbutton/index.jsx                 |   46 +++++-
 src/views/pay/index.scss                                           |   33 ++++
 src/templates/zshare/formconfig.jsx                                |   31 ++++
 src/templates/sharecomponent/actioncomponent/actionform/index.jsx  |  125 +++++++++++++++++
 src/templates/comtableconfig/index.jsx                             |    3 
 src/router/index.js                                                |    2 
 src/views/pay/index.jsx                                            |   45 ++++++
 src/locales/zh-CN/model.js                                         |    3 
 src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx |    4 
 src/templates/sharecomponent/columncomponent/index.jsx             |    4 
 src/templates/sharecomponent/actioncomponent/index.jsx             |   72 +++++++++
 src/locales/en-US/model.js                                         |    3 
 src/tabviews/zshare/actionList/newpagebutton/index.jsx             |   19 ++
 src/tabviews/commontable/index.jsx                                 |   18 ++
 15 files changed, 373 insertions(+), 37 deletions(-)

diff --git a/src/components/tabview/index.jsx b/src/components/tabview/index.jsx
index d0f9961..fcfca9d 100644
--- a/src/components/tabview/index.jsx
+++ b/src/components/tabview/index.jsx
@@ -104,7 +104,7 @@
     } else if (view.type === 'CommonTable' || view.type === 'ManageTable') {
       return (<CommonTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID} param={view.param}/>)
     } else if (view.type === 'TreePage') {
-      return (<TreePage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID}/>)
+      return (<TreePage MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID} param={view.param}/>)
     } else if (view.type === 'VerupTable') {
       return (<VerupTable MenuNo={view.MenuNo} MenuID={view.MenuID} MenuName={view.MenuName} key={view.MenuID}/>)
     } else if (view.type === 'ScriptTable') {
diff --git a/src/locales/en-US/model.js b/src/locales/en-US/model.js
index 7a23c9e..243c9c7 100644
--- a/src/locales/en-US/model.js
+++ b/src/locales/en-US/model.js
@@ -37,6 +37,7 @@
   'model.switch.close': 'Close',
   'model.menu.level1': 'Level 1 menu',
   'model.menu.level2': 'Level 2 menu',
+  'model.menu.level3': 'Level 3 menu',
   'model.menu.all': 'All',
   'model.menu.selected': 'Selected',
   'model.menu.itemUnit': 'Item',
@@ -196,7 +197,7 @@
   'header.form.display': '鏄剧ず鏂瑰紡',
   'header.form.dropdown': '涓嬫媺鑿滃崟',
   'header.form.button': '鎸夐挳',
-  'header.form.style': '椋庢牸',
+  'model.form.style': '椋庢牸',
   'model.form.color': 'Color',
   'header.form.order': '鎺掑垪',
   'header.form.horizontal': '妯悜',
diff --git a/src/locales/zh-CN/model.js b/src/locales/zh-CN/model.js
index 9e435a2..ea483c2 100644
--- a/src/locales/zh-CN/model.js
+++ b/src/locales/zh-CN/model.js
@@ -37,6 +37,7 @@
   'model.switch.close': '鍏�',
   'model.menu.level1': '涓�绾ц彍鍗�',
   'model.menu.level2': '浜岀骇鑿滃崟',
+  'model.menu.level3': '涓夌骇鑿滃崟',
   'model.menu.all': '鍏ㄩ儴',
   'model.menu.selected': '宸查�夋嫨',
   'model.menu.itemUnit': '椤�',
@@ -196,7 +197,7 @@
   'header.form.display': '鏄剧ず鏂瑰紡',
   'header.form.dropdown': '涓嬫媺鑿滃崟',
   'header.form.button': '鎸夐挳',
-  'header.form.style': '椋庢牸',
+  'model.form.style': '椋庢牸',
   'model.form.color': '棰滆壊',
   'header.form.order': '鎺掑垪',
   'header.form.horizontal': '妯悜',
diff --git a/src/router/index.js b/src/router/index.js
index 4e042d3..94d482b 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -5,6 +5,7 @@
 import asyncComponent from '@/utils/asyncComponent'
 import asyncLoadComponent from '@/utils/asyncLoadComponent'
 
+const Pay = asyncLoadComponent(() => import('@/views/pay'))
 const Main = asyncLoadComponent(() => import('@/views/main'))
 const Login = asyncLoadComponent(() => import('@/views/login'))
 const NotFound = asyncComponent(() => import('@/views/404'))
@@ -14,6 +15,7 @@
 
 const routers = [
   {path: '/login', name: 'login', component: Login, auth: false},
+  {path: '/pay/:param', name: 'pay', component: Pay, auth: false},
   {path: '/print/:param', name: 'print', component: PrintT, auth: false},
   {path: '/ssologin/:param', name: 'ssologin', auth: true},
   {path: '/main', name: 'main', component: Main, auth: true},
diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index c5f75a0..52f6d59 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -44,6 +44,7 @@
   state = {
     dict: sessionStorage.getItem('lang') !== 'en-US' ? zhCN : enUS,
     ContainerId: Utils.getuuid(), // 鑿滃崟澶栧眰html Id
+    BID: null,            // 椤甸潰璺宠浆鏃舵惡甯D
     loadingview: true,    // 椤甸潰鍔犺浇涓�
     viewlost: false,      // 椤甸潰涓㈠け锛�1銆佹湭鑾峰彇鍒伴厤缃�-椤甸潰涓㈠け锛�2銆侀〉闈㈡湭鍚敤
     lostmsg: '',          // 椤甸潰涓㈠け鏃剁殑鎻愮ず淇℃伅
@@ -381,6 +382,7 @@
       }
 
       this.setState({
+        BID: param && param.BID ? param.BID : '',
         loadingview: false,
         chartId: chartId,
         config: config,
@@ -537,6 +539,10 @@
           arr_field: _option.field
         }
 
+        if (this.state.BID) {
+          param.BID = this.state.BID
+        }
+
         if (this.props.dataManager) { // 鏁版嵁鏉冮檺
           param.LText = param.LText.replace(/\$@/ig, '/*')
           param.LText = param.LText.replace(/@\$/ig, '*/')
@@ -610,7 +616,7 @@
    * @description 涓昏〃鏁版嵁鍔犺浇
    */ 
   async loadmaindata () {
-    const { setting, BIDs, search } = this.state
+    const { setting, BIDs, search, BID } = this.state
     let param = ''
     let requireFields = search.filter(item => item.required && (!item.value || item.value.length === 0))
 
@@ -635,6 +641,8 @@
     } else {
       param = this.getDefaultParam()
     }
+
+    param.BID = BID
 
     let result = await Api.genericInterface(param)
     if (result.status) {
@@ -889,8 +897,8 @@
    * @description 椤甸潰鍒锋柊锛岄噸鏂拌幏鍙栭厤缃�
    */
   reloadview = () => {
-    this.setState({ loadingview: true, viewlost: false, lostmsg: '', config: {}, userConfig: null, searchlist: null,
-      actions: null, columns: null, arr_field: '', setting: null, data: null, total: 0, loading: false, pageIndex: 1,
+    this.setState({ loadingview: true, viewlost: false, lostmsg: '',
+      data: null, total: 0, loading: false, pageIndex: 1,
       pageSize: 10, orderBy: '', search: '', BIDs: {}, pickup: false
     }, () => {
       this.loadconfig()
@@ -1106,7 +1114,7 @@
   }
 
   render() {
-    const { setting, searchlist, pageSize, actions, columns, loadingview, viewlost, pickup, config, triggerBtn, userConfig, tabActive, chartId, search, selectedData } = this.state
+    const { BID, setting, searchlist, pageSize, actions, columns, loadingview, viewlost, pickup, config, triggerBtn, userConfig, tabActive, chartId, search, selectedData } = this.state
 
     return (
       <div className="commontable pick-control" id={this.state.ContainerId}>
@@ -1134,6 +1142,7 @@
                   {config.charts.length > 1 && item.title ? <p className="chart-table chart-title">{item.title}</p> : null}
                   <div style={{minHeight: '25px'}}>
                     <MainAction
+                      BID={BID}
                       setting={setting}
                       actions={actions}
                       dict={this.state.dict}
@@ -1187,6 +1196,7 @@
               return (
                 <Col span={item.width} key={item.uuid}>
                   <CardComponent
+                    BID={BID}
                     plot={item}
                     config={config}
                     tableId="mainTable"
diff --git a/src/tabviews/zshare/actionList/newpagebutton/index.jsx b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
index ccf1319..be6e13b 100644
--- a/src/tabviews/zshare/actionList/newpagebutton/index.jsx
+++ b/src/tabviews/zshare/actionList/newpagebutton/index.jsx
@@ -81,10 +81,25 @@
       let msg = '&uid=' + sessionStorage.getItem('UserID') + '&sid=' + sessionStorage.getItem('SessionUid') + '&lid=' + sessionStorage.getItem('LoginUID') + '&un=' + sessionStorage.getItem('User_Name')
       let src = '#/print/' + window.btoa('ID=' + Id + msg + cloudmsg)
       window.open(src)
+    } else if (btn.pageTemplate === 'custom' && btn.url === 'pay') {
+      if (data.length !== 1) {
+        // 鏀粯鏃讹紝闇�瑕侀�夋嫨鍗曡鏁版嵁
+        notification.warning({
+          top: 92,
+          message: this.state.dict['main.action.confirm.selectSingleLine'],
+          duration: 5
+        })
+        return
+      }
+      let url = '#/pay/' +  window.btoa(`ID=${Id}&LoginUID=${sessionStorage.getItem('LoginUID')}`)
+
+      window.open(url)
     } else if (btn.pageTemplate === 'custom') {
       let url = btn.url
-      if (btn.Ot === 'requiredSgl') {
-        url = url + '?ID=' + Id
+      if (btn.Ot === 'requiredSgl' && btn.joint !== 'false') {
+        url = url + `?ID=${Id}&appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
+      } else if (btn.joint !== 'false') {
+        url = url + `?appkey=${window.GLOB.appkey}&LoginUID=${sessionStorage.getItem('LoginUID') || ''}`
       }
 
       window.open(url)
diff --git a/src/tabviews/zshare/actionList/tabbutton/index.jsx b/src/tabviews/zshare/actionList/tabbutton/index.jsx
index dab08e7..acfd936 100644
--- a/src/tabviews/zshare/actionList/tabbutton/index.jsx
+++ b/src/tabviews/zshare/actionList/tabbutton/index.jsx
@@ -74,17 +74,41 @@
       primaryId = data[0][setting.primaryKey] || ''
     }
 
-    let newtab = {
-      MenuNo: '',
-      MenuID: btn.uuid,
-      MenuName: btn.label,
-      type: btn.tabTemplate,
-      selected: true,
-      param: {
-        parentId: this.props.MenuID,
-        btn: btn,
-        data: data[0] || null,
-        primaryId: primaryId
+    let newtab = {}
+
+    if (btn.tabTemplate === 'FormTab') {
+      newtab = {
+        MenuNo: '',
+        MenuID: btn.uuid,
+        MenuName: btn.label,
+        type: btn.tabTemplate,
+        selected: true,
+        param: {
+          parentId: this.props.MenuID,
+          btn: btn,
+          data: data[0] || null,
+          primaryId: primaryId
+        }
+      }
+    } else if (btn.tabTemplate === 'ThdMenu') {
+      let _type = 'CommonTable'
+      if (btn.linkThdMenu && btn.linkThdMenu.PageParam) {
+        try {
+          _type = JSON.parse(btn.linkThdMenu.PageParam).Template
+        } catch {
+          _type = 'CommonTable'
+        }
+      }
+
+      newtab = {
+        MenuNo: btn.linkThdMenu.MenuNo,
+        MenuID: btn.linkThdMenu.MenuID,
+        MenuName: btn.linkThdMenu.MenuName,
+        type: _type,
+        selected: true,
+        param: {
+          BID: primaryId
+        }
       }
     }
 
diff --git a/src/templates/comtableconfig/index.jsx b/src/templates/comtableconfig/index.jsx
index 456d14f..2a759b4 100644
--- a/src/templates/comtableconfig/index.jsx
+++ b/src/templates/comtableconfig/index.jsx
@@ -74,7 +74,6 @@
    */
   UNSAFE_componentWillMount () {
     const { menu, optionLibs } = this.props
-
     let _LongParam = menu.LongParam
     let _config = ''
 
@@ -1434,7 +1433,7 @@
                         {config.charts.length > 1 && item.title ? <p className="chart-title">{item.title}</p> : null}
                         <ActionComponent
                           type="main"
-                          menu={{ MenuID: this.props.menu.MenuID, MenuName: this.props.menu.MenuName, MenuNo: this.props.menu.MenuNo }}
+                          menu={{ MenuID: this.props.menu.MenuID, MenuName: this.props.menu.MenuName, MenuNo: this.props.menu.MenuNo, fstMenuList: this.props.menu.fstMenuList }}
                           config={config}
                           tabs={this.state.tabviews}
                           menuformRef={this.menuformRef}
diff --git a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
index 8a9df3f..17f211e 100644
--- a/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/actionform/index.jsx
@@ -1,7 +1,10 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber } from 'antd'
+import { Form, Row, Col, Input, Select, Icon, Radio, notification, Tooltip, InputNumber, Cascader } from 'antd'
 import { btnIcons, btnClasses, formRule } from '@/utils/option.js'
+
+import Api from '@/api'
+import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import './index.scss'
 
@@ -68,6 +71,7 @@
   UNSAFE_componentWillMount () {
     const { card } = this.props
 
+    let _menulist = this.props.formlist.filter(form => form.key === 'linkmenu')[0] || ''
     let _opentype = card.OpenType             // 鎵撳紑鏂瑰紡
     let _tabType = card.tabType || 'SubTable' // 鎸夐挳涓哄脊绐楋紙鏍囩锛夋椂锛屾爣绛剧殑绫诲瀷
     let _options = null                       // 閫夐」鍒楄〃
@@ -84,10 +88,13 @@
     if (_opentype === 'innerpage') {                                     // 鏂伴〉闈紝鍙�夋ā鏉�(鑷畾涔夋椂锛屽彲濉叆澶栭儴閾炬帴)
       _options = ['label', 'Ot', 'OpenType', 'pageTemplate', 'icon', 'class', 'position']
       if (card.pageTemplate === 'custom') {
-        _options.push('url')
+        _options.push('url', 'joint')
       }
     } else if (_opentype === 'blank' || _opentype === 'tab') {           // 鏂版爣绛炬垨褰撳墠椤甸潰鏇挎崲
       _options = ['label', 'Ot', 'OpenType', 'icon', 'class', 'position', 'tabTemplate']
+      if (card.tabTemplate === 'ThdMenu') {
+        _options.push('linkmenu')
+      }
     } else if (_opentype === 'popview') {                                // 妯℃�佹鏍囩椤�
       _options = ['label', 'Ot', 'OpenType', 'icon', 'class', 'position', 'tabType', 'linkTab', 'popClose']
     } else if (_opentype === 'excelOut') {    // 瀵煎叆瀵煎嚭
@@ -123,6 +130,7 @@
     }
     this.setState({
       openType: _opentype,
+      menulist: _menulist.options || [],
       interType: card.intertype || 'inner',
       position: card.position || 'toolbar',
       funcType: card.funcType,
@@ -192,10 +200,13 @@
       if (value === 'innerpage') {
         _options = ['label', 'Ot', 'OpenType', 'pageTemplate', 'icon', 'class', 'position']
         if (card.pageTemplate === 'custom') {
-          _options.push('url')
+          _options.push('url', 'joint')
         }
       } else if (value === 'blank' || value === 'tab') {
         _options = ['label', 'Ot', 'OpenType', 'icon', 'class', 'position', 'tabTemplate']
+        if (card.tabTemplate === 'ThdMenu') {
+          _options.push('linkmenu')
+        }
       } else if (value === 'popview') {
         _options = ['label', 'Ot', 'OpenType', 'icon', 'class', 'position', 'tabType', 'linkTab', 'popClose']
       } else if (value === 'excelOut') {
@@ -390,6 +401,21 @@
         _options = ['label', 'Ot', 'OpenType', 'pageTemplate', 'url', 'icon', 'class', 'position']
       } else {
         _options = ['label', 'Ot', 'OpenType', 'pageTemplate', 'icon', 'class', 'position']
+      }
+
+      this.setState({
+        openType: value,
+        formlist: this.state.formlist.map(item => {
+          item.hidden = !_options.includes(item.key)
+  
+          return item
+        })
+      })
+    } else if (key === 'tabTemplate') {
+      let _options = ['label', 'Ot', 'OpenType', 'icon', 'class', 'position', 'tabTemplate']
+
+      if (value === 'ThdMenu') {
+        _options.push('linkmenu')
       }
 
       this.setState({
@@ -627,13 +653,87 @@
             </Form.Item>
           </Col>
         )
+      } else if (item.type === 'cascader') { // 澶氶��
+        fields.push(
+          <Col span={12} key={index}>
+            <Form.Item label={item.label}>
+              {getFieldDecorator(item.key, {
+                initialValue: item.initVal || [],
+                rules: [
+                  {
+                    required: !!item.required,
+                    message: this.props.dict['form.required.select'] + item.label + '!'
+                  }
+                ]
+              })(
+                <Cascader
+                  options={this.state.menulist}
+                  loadData={this.loadData}
+                  placeholder=""
+                />
+              )}
+            </Form.Item>
+          </Col>
+        )
       }
     })
     return fields
   }
 
+  loadData = selectedOptions => {
+    const { MenuID } = this.props
+    const targetOption = selectedOptions[selectedOptions.length - 1]
+    targetOption.loading = true
+
+    let _param = {
+      func: 'sPC_Get_FunMenu',
+      ParentID: targetOption.value,
+      systemType: options.sysType,
+      debug: 'Y'
+    }
+
+    Api.getSystemConfig(_param).then(result => {
+      if (result.status) {
+        targetOption.loading = false
+        targetOption.children = result.data.map(item => {
+          let submenu = {
+            value: item.ParentID,
+            label: item.MenuNameP,
+            children: item.FunMenu.map(cell => {
+              return {
+                value: cell.MenuID,
+                label: cell.MenuName,
+                MenuID: cell.MenuID,
+                MenuName: cell.MenuName,
+                MenuNo: cell.MenuNo,
+                Ot: cell.Ot,
+                PageParam: cell.PageParam,
+                LinkUrl: cell.LinkUrl,
+                disabled: cell.MenuID === MenuID
+              }
+            })
+          }
+
+          return submenu
+        })
+
+        this.setState({
+          menulist: [...this.state.menulist]
+        })
+      } else {
+        notification.warning({
+          top: 92,
+          message: result.message,
+          duration: 5
+        })
+        targetOption.loading = false
+      }
+    })
+  }
+
   handleConfirm = () => {
     const { setting } = this.props
+    const { menulist } = this.state
     // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
     return new Promise((resolve, reject) => {
       this.props.form.validateFieldsAndScroll((err, values) => {
@@ -673,6 +773,25 @@
             }
           }
 
+          // 鍏宠仈涓夌骇鑿滃崟
+          if (values.OpenType === 'tab' && values.linkmenu && values.linkmenu.length > 0) {
+            let linkThdMenu = ''
+            menulist.forEach(menu => {
+              if (menu.value === values.linkmenu[0]) {
+                menu.children.forEach(item => {
+                  if (item.value === values.linkmenu[1]) {
+                    item.children.forEach(cell => {
+                      if (cell.value === values.linkmenu[2]) {
+                        linkThdMenu = cell
+                      }
+                    })
+                  }
+                })
+              }
+            })
+            values.linkThdMenu = linkThdMenu
+          }
+
           if (values.innerFunc === '' && values.sql === '') {
             notification.warning({
               top: 92,
diff --git a/src/templates/sharecomponent/actioncomponent/index.jsx b/src/templates/sharecomponent/actioncomponent/index.jsx
index 69892b4..a628cd5 100644
--- a/src/templates/sharecomponent/actioncomponent/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/index.jsx
@@ -5,6 +5,7 @@
 import moment from 'moment'
 
 import Api from '@/api'
+import options from '@/store/options.js'
 import Utils from '@/utils/utils.js'
 import DevUtils from '@/utils/devutils.js'
 import zhCN from '@/locales/zh-CN/model.js'
@@ -86,20 +87,81 @@
   }
 
   /**
-   * @description 鎼滅储鏉′欢缂栬緫锛岃幏鍙栨悳绱㈡潯浠惰〃鍗曚俊鎭�
+   * @description 鎸夐挳缂栬緫锛岃幏鍙栨寜閽〃鍗曚俊鎭�
    */
   handleAction = (card) => {
+    const { menu } = this.props
     let ableField = this.props.usefulFields.join(', ')
     let functip = <div>
       <p style={{marginBottom: '5px'}}>{this.state.dict['model.tooltip.func.innerface'].replace('@ableField', ableField)}</p>
       <p>{this.state.dict['model.tooltip.func.outface']}</p>
     </div>
 
-    this.setState({
-      visible: true,
-      card: card,
-      formlist: getActionForm(card, functip, this.props.config, this.props.usefulFields, this.props.type)
+    let menulist = menu.fstMenuList.map(item => {
+      return {
+        value: item.MenuID,
+        label: item.text,
+        isLeaf: false
+      }
     })
+
+    if (card.linkmenu && card.linkmenu.length > 0) {
+      let _param = {
+        func: 'sPC_Get_FunMenu',
+        ParentID: card.linkmenu[0],
+        systemType: options.sysType,
+        debug: 'Y'
+      }
+  
+      Api.getSystemConfig(_param).then(result => {
+        if (result.status) {
+          menulist = menulist.map(item => {
+            if (item.value === card.linkmenu[0]) {
+              item.children = result.data.map(item => {
+                let submenu = {
+                  value: item.ParentID,
+                  label: item.MenuNameP,
+                  children: item.FunMenu.map(cell => {
+                    return {
+                      value: cell.MenuID,
+                      label: cell.MenuName,
+                      MenuID: cell.MenuID,
+                      MenuName: cell.MenuName,
+                      MenuNo: cell.MenuNo,
+                      Ot: cell.Ot,
+                      PageParam: cell.PageParam,
+                      LinkUrl: cell.LinkUrl,
+                      disabled: cell.MenuID === menu.MenuID
+                    }
+                  })
+                }
+
+                return submenu
+              })
+            }
+            return item
+          })
+        } else {
+          notification.warning({
+            top: 92,
+            message: result.message,
+            duration: 5
+          })
+        }
+
+        this.setState({
+          visible: true,
+          card: card,
+          formlist: getActionForm(card, functip, this.props.config, this.props.usefulFields, this.props.type, menulist)
+        })
+      })
+    } else {
+      this.setState({
+        visible: true,
+        card: card,
+        formlist: getActionForm(card, functip, this.props.config, this.props.usefulFields, this.props.type, menulist)
+      })
+    }
   }
 
   /**
diff --git a/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx b/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
index 7da9b0a..33eaeb7 100644
--- a/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/gridbtnform/index.jsx
@@ -48,7 +48,7 @@
       {
         type: 'select',
         key: 'style',
-        label: this.props.dict['header.form.style'],
+        label: this.props.dict['model.form.style'],
         initVal: this.props.card.style,
         required: true,
         options: [{
@@ -56,7 +56,7 @@
           text: this.props.dict['header.form.button']
         }, {
           MenuID: 'text',
-          text: this.props.dict['model.form.text']
+          text: this.props.dict['model.form.href']
         }]
       },
       {
diff --git a/src/templates/sharecomponent/columncomponent/index.jsx b/src/templates/sharecomponent/columncomponent/index.jsx
index 47ac705..559f5fc 100644
--- a/src/templates/sharecomponent/columncomponent/index.jsx
+++ b/src/templates/sharecomponent/columncomponent/index.jsx
@@ -193,8 +193,8 @@
    */
   editModalCancel = () => {
     const { card } = this.state
-
-    if (card.focus) {
+    
+    if (card && card.focus) {
       let _columnlist = fromJS(this.state.columnlist).toJS()
 
       _columnlist = _columnlist.filter(item => item.uuid !== card.uuid)
diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx
index 38b3f14..b886073 100644
--- a/src/templates/zshare/formconfig.jsx
+++ b/src/templates/zshare/formconfig.jsx
@@ -921,7 +921,7 @@
  * @param {*} permFuncField  瀛樺偍杩囩▼鍙敤鐨勫紑濮嬪瓧娈�
  * @param {*} type           鎸夐挳绫诲瀷锛岀敤浜庡尯鍒嗗彲閫夌殑鎵撳紑鏂瑰紡
  */
-export function getActionForm (card, functip, config, permFuncField, type) {
+export function getActionForm (card, functip, config, permFuncField, type, menulist = []) {
   let opentypes = [
     {
       value: 'pop',
@@ -1169,13 +1169,24 @@
     {
       type: 'select',
       key: 'tabTemplate',
-      label: '鏍囩妯℃澘',
+      label: '鏍囩绫诲瀷',
       initVal: card.tabTemplate || 'FormTab',
       required: true,
       options: [{
         value: 'FormTab',
-        text: '甯︽爣绛捐〃鍗�'
+        text: '琛ㄥ崟鏍囩椤�'
+      }, {
+        value: 'ThdMenu',
+        text: Formdict['model.menu.level3']
       }]
+    },
+    {
+      type: 'cascader',
+      key: 'linkmenu',
+      label: Formdict['model.form.linkmenu'],
+      initVal: card.linkmenu || [],
+      required: true,
+      options: menulist
     },
     {
       type: 'select',
@@ -1275,6 +1286,20 @@
       options: []
     },
     {
+      type: 'radio',
+      key: 'joint',
+      label: Formdict['model.form.paramJoint'],
+      initVal: card.joint || 'true',
+      required: false,
+      options: [{
+        value: 'true',
+        text: Formdict['model.true']
+      }, {
+        value: 'false',
+        text: Formdict['model.false']
+      }]
+    },
+    {
       type: 'text',
       key: 'sheet',
       label: Formdict['model.form.tablename'],
diff --git a/src/views/pay/index.jsx b/src/views/pay/index.jsx
new file mode 100644
index 0000000..50b306f
--- /dev/null
+++ b/src/views/pay/index.jsx
@@ -0,0 +1,45 @@
+import React, {Component} from 'react'
+
+// import Api from '@/api'
+import './index.scss'
+
+class Pay extends Component {
+  state = {
+    orderId: ''
+  }
+
+  UNSAFE_componentWillMount () {
+    let _param = window.atob(this.props.match.params.param)
+    let _params = {}
+    _param.split('&').forEach(cell => {
+      let _cell = cell.split('=')
+      _params[_cell[0]] = _cell[1]
+    })
+
+    if (!sessionStorage.getItem('LoginUID') && _params.LoginUID) {
+      sessionStorage.setItem('LoginUID', _params.LoginUID)
+    }
+
+    this.setState({
+      orderId: _params.ID
+    })
+  }
+
+  render () {
+    return (
+      <div className="mk-pay-container">
+        <div className="mk-pay-box">
+          <div className="pay-tip">璇锋偍灏藉揩鏀粯锛屼互渚胯鍗曞揩閫熷鐞嗭紒</div>
+          <div className="mk-pay-content">
+            <div>鏀粯鏂瑰紡:</div>
+          </div>
+          <div className="mk-pay-msg">
+            <div>搴斾粯閲戦:</div>
+          </div>
+        </div>
+      </div>
+    )
+  }
+}
+
+export default Pay
\ No newline at end of file
diff --git a/src/views/pay/index.scss b/src/views/pay/index.scss
new file mode 100644
index 0000000..ac98e59
--- /dev/null
+++ b/src/views/pay/index.scss
@@ -0,0 +1,33 @@
+.mk-pay-container {
+  width: 100vw;
+  height: 100vh;
+  overflow-x: hidden;
+  // background: #F1F2F7;
+  
+  .mk-pay-box {
+    margin: 0 auto;
+    width: 80vw;
+    height: calc(100vh - 40px);
+    margin-top: 20px;
+    background: #ffffff;
+    padding: 15px 20px;
+    // box-shadow: 0px 0px 3px #bcbcbc;
+
+    .pay-tip {
+      color: #1890ff;
+      font-size: 15px;
+      margin-bottom: 20px;
+    }
+
+    .mk-pay-content {
+      display: inline-block;
+      width: 80%;
+      height: calc(100% - 40px);
+    }
+    .mk-pay-msg {
+      display: inline-block;
+      width: 20%;
+      height: calc(100% - 40px);
+    }
+  }
+}
\ No newline at end of file

--
Gitblit v1.8.0