From 2e3bf38aced62c8ecf4af58ca2685f09d3d47dde Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 17 二月 2023 00:09:04 +0800
Subject: [PATCH] 2023-02-17

---
 src/menu/components/card/cardcellcomponent/formconfig.jsx        |    2 
 src/menu/components/card/doublecardcomponent/options.jsx         |    2 
 src/menu/modalconfig/index.jsx                                   |   11 +
 src/menu/components/card/cardcellcomponent/index.jsx             |   26 ++-
 src/mob/modalconfig/index.jsx                                    |   11 +
 src/menu/datasource/verifycard/settingform/index.jsx             |   33 ++++
 src/menu/components/card/cardcellcomponent/elementform/index.jsx |   97 +++++++++----
 src/menu/components/card/double-data-card/index.jsx              |    4 
 src/menu/components/card/double-data-card/index.scss             |    2 
 src/menu/components/card/doublecardcomponent/index.jsx           |  191 +++++++++++++--------------
 src/menu/datasource/verifycard/index.jsx                         |   24 +-
 11 files changed, 241 insertions(+), 162 deletions(-)

diff --git a/src/menu/components/card/cardcellcomponent/elementform/index.jsx b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
index d2a553f..8d23924 100644
--- a/src/menu/components/card/cardcellcomponent/elementform/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/elementform/index.jsx
@@ -48,7 +48,7 @@
   }
 
   UNSAFE_componentWillMount () {
-    const { card, config } = this.props
+    const { card, config, side } = this.props
     let _options = this.getOptions(card.eleType, card.datatype, card.link, (card.showType || 'line'), card.showInfo, card.fixStyle || '', card.posterType || '')
     
     this.setState({
@@ -64,20 +64,38 @@
 
         if (item.key === 'field' || item.key === 'linkurl' || item.key === 'bgImage' || item.key === 'posterField') {
           item.options = []
-          config.columns.forEach(col => {
-            let label = `${col.field}锛�${col.label}锛塦
-            if (/^(Int|Decimal)/ig.test(col.datatype) && (card.eleType === 'number' || card.eleType === 'slider')) {
-              item.options.push({
-                value: col.field,
-                text: label
-              })
-            } else if (/^(Nvarchar|date)/ig.test(col.datatype) && card.eleType !== 'number' && card.eleType !== 'slider') {
-              item.options.push({
-                value: col.field,
-                text: label
-              })
-            }
-          })
+
+          if (side === 'sub') {
+            config.subColumns.forEach(col => {
+              let label = `${col.field}锛�${col.label}锛塦
+              if (/^(Int|Decimal)/ig.test(col.datatype) && (card.eleType === 'number' || card.eleType === 'slider')) {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              } else if (/^(Nvarchar|date)/ig.test(col.datatype) && card.eleType !== 'number' && card.eleType !== 'slider') {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              }
+            })
+          } else {
+            config.columns.forEach(col => {
+              let label = `${col.field}锛�${col.label}锛塦
+              if (/^(Int|Decimal)/ig.test(col.datatype) && (card.eleType === 'number' || card.eleType === 'slider')) {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              } else if (/^(Nvarchar|date)/ig.test(col.datatype) && card.eleType !== 'number' && card.eleType !== 'slider') {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              }
+            })
+          }
         } else if (item.key === 'value' && card.eleType === 'slider') {
           item.type = 'number'
           item.label = '鍊�'
@@ -159,7 +177,7 @@
    * 3銆佸垏鎹㈡爣绛剧被鍨嬶紝閲嶇疆鍙�夋爣绛�
    */
   selectChange = (key, value, option) => {
-    const { card, config } = this.props
+    const { card, config, side } = this.props
     const { datatype, eleType, showType, showInfo, fixStyle, posterType } = this.state
 
     if (key === 'eleType') {
@@ -170,21 +188,38 @@
 
         if (item.key === 'field') {
           item.options = []
-          config.columns.forEach(col => {
-            let label = `${col.field}锛�${col.label}锛塦
-
-            if (/^(Int|Decimal)/ig.test(col.datatype) && (value === 'number' || value === 'slider')) {
-              item.options.push({
-                value: col.field,
-                text: label
-              })
-            } else if (/^(Nvarchar|date)/ig.test(col.datatype) && value !== 'number' && value !== 'slider') {
-              item.options.push({
-                value: col.field,
-                text: label
-              })
-            }
-          })
+          if (side === 'sub') {
+            config.subColumns.forEach(col => {
+              let label = `${col.field}锛�${col.label}锛塦
+              if (/^(Int|Decimal)/ig.test(col.datatype) && (card.eleType === 'number' || card.eleType === 'slider')) {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              } else if (/^(Nvarchar|date)/ig.test(col.datatype) && card.eleType !== 'number' && card.eleType !== 'slider') {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              }
+            })
+          } else {
+            config.columns.forEach(col => {
+              let label = `${col.field}锛�${col.label}锛塦
+  
+              if (/^(Int|Decimal)/ig.test(col.datatype) && (value === 'number' || value === 'slider')) {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              } else if (/^(Nvarchar|date)/ig.test(col.datatype) && value !== 'number' && value !== 'slider') {
+                item.options.push({
+                  value: col.field,
+                  text: label
+                })
+              }
+            })
+          }
         } else if (item.key === 'value') {
           if (value === 'slider') {
             item.type = 'number'
diff --git a/src/menu/components/card/cardcellcomponent/formconfig.jsx b/src/menu/components/card/cardcellcomponent/formconfig.jsx
index 7d87970..859dc58 100644
--- a/src/menu/components/card/cardcellcomponent/formconfig.jsx
+++ b/src/menu/components/card/cardcellcomponent/formconfig.jsx
@@ -28,7 +28,7 @@
     anchors = MenuUtils.getAnchors(window.GLOB.customMenu.components, cards.uuid) || []
   }
 
-  if (cards.type === 'table' || (cards.type === 'card' && cards.subtype === 'datacard')) {
+  if (cards.type === 'table' || (cards.type === 'card' && cards.subtype !== 'propcard')) {
     _options.push({value: 'sequence', text: '搴忓彿'})
   } else if (card.eleType === 'sequence') { // 鎷栨嫿娣诲姞绫诲瀷杞崲
     card.eleType = 'text'
diff --git a/src/menu/components/card/cardcellcomponent/index.jsx b/src/menu/components/card/cardcellcomponent/index.jsx
index 454f5a9..9459118 100644
--- a/src/menu/components/card/cardcellcomponent/index.jsx
+++ b/src/menu/components/card/cardcellcomponent/index.jsx
@@ -122,11 +122,12 @@
     this.setState({elements: this.state.elements.filter(item => item.uuid !== eleId)})
   }
 
-  cardAddElement = (id, element) => {
-    const { cardCell } = this.props
+  cardAddElement = (id, element, type) => {
+    const { cardCell, side } = this.props
 
     if (id !== cardCell.uuid) return
     if (window.GLOB.$lock) return
+    if (type && side !== type) return
 
     window.GLOB.$lock = true
     setTimeout(() => {
@@ -535,9 +536,13 @@
   }
 
   handleSubConfig = (item) => {
-    const { cards } = this.props
+    const { cards, side } = this.props
     const { appType } = this.state
     let btn = fromJS(item).toJS()
+
+    if (side === 'sub') {
+      btn.$sub = true
+    }
 
     if ((sessionStorage.getItem('style-control') && sessionStorage.getItem('style-control') === 'true')) return
 
@@ -693,7 +698,7 @@
   }
 
   getVerify = (card) => {
-    const { cards } = this.props
+    const { cards, side } = this.props
 
     if (!card) return null
 
@@ -701,13 +706,13 @@
       return <VerifyCard
         card={card}
         config={cards}
-        columns={cards.columns}
+        columns={side === 'sub' ? cards.subColumns : cards.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
     } else if (card.OpenType === 'excelIn') {
       return <VerifyExcelIn
         card={card}
-        columns={cards.columns}
+        columns={side === 'sub' ? cards.subColumns : cards.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
     } else if (card.OpenType === 'excelOut') {
@@ -719,14 +724,14 @@
     } else if (card.OpenType === 'funcbutton' && card.funcType === 'print') {
       return <VerifyPrint
         card={card}
-        columns={cards.columns}
+        columns={side === 'sub' ? cards.subColumns : cards.columns}
         wrappedComponentRef={(inst) => this.verifyRef = inst}
       />
     }
   }
 
   render() {
-    const { cards, cardCell } = this.props
+    const { cards, cardCell, side } = this.props
     const { elements, visible, actvisible, profVisible, card, record } = this.state
 
     return (
@@ -734,7 +739,7 @@
         <DragElement
           list={elements}
           parent={cardCell}
-          fields={cards.columns}
+          fields={side === 'sub' ? cards.subColumns : cards.columns}
           updateMarks={this.updateMarks}
           handleList={this.handleList}
           handleMenu={this.handleElement}
@@ -757,6 +762,7 @@
           >
             <ElementForm
               card={card}
+              side={side}
               formlist={this.state.formlist}
               inputSubmit={this.handleSubmit}
               config={cards}
@@ -771,7 +777,7 @@
             maskClosable={false}
             onCancel={this.editModalCancel}
             footer={[
-              record && record.intertype === 'inner' ? <CreateFunc key="create" ref="btnCreatFunc" trigger={this.creatFunc}/> : null,
+              record && record.intertype === 'inner' && cards.subtype === 'dualdatacard' ? <CreateFunc key="create" ref="btnCreatFunc" trigger={this.creatFunc}/> : null,
               <Button key="cancel" onClick={this.editModalCancel}>鍙栨秷</Button>,
               <Button key="confirm" type="primary" onClick={this.handleActionSubmit}>纭畾</Button>
             ]}
diff --git a/src/menu/components/card/double-data-card/index.jsx b/src/menu/components/card/double-data-card/index.jsx
index 451e497..5ea6032 100644
--- a/src/menu/components/card/double-data-card/index.jsx
+++ b/src/menu/components/card/double-data-card/index.jsx
@@ -63,7 +63,7 @@
         search: [],
         subcards: [{
           uuid: Utils.getuuid(),
-          setting: { width: 24},
+          setting: { width: 24 },
           style: {
             borderWidth: '1px', borderColor: '#e8e8e8',
             paddingTop: '15px', paddingBottom: '15px', paddingLeft: '15px', paddingRight: '15px',
@@ -73,6 +73,7 @@
             uuid: Utils.getuuid(),
             eleType: 'text',
             datatype: 'static',
+            width: 12,
             value: '寰幆鍖哄煙'
           }],
           backSetting: {},
@@ -86,6 +87,7 @@
             uuid: Utils.getuuid(),
             eleType: 'text',
             datatype: 'static',
+            width: 12,
             value: '瀛愯〃鍖哄煙'
           }]
         }]
diff --git a/src/menu/components/card/double-data-card/index.scss b/src/menu/components/card/double-data-card/index.scss
index 9a5313d..1625f98 100644
--- a/src/menu/components/card/double-data-card/index.scss
+++ b/src/menu/components/card/double-data-card/index.scss
@@ -19,7 +19,7 @@
     background: rgba(255, 255, 255, 0.55);
   }
 
-  .card-item {
+  .card-item, .card-item-wrap {
     overflow: hidden;
     position: relative;
     background-color: #ffffff;
diff --git a/src/menu/components/card/doublecardcomponent/index.jsx b/src/menu/components/card/doublecardcomponent/index.jsx
index 6f1d02c..d79d883 100644
--- a/src/menu/components/card/doublecardcomponent/index.jsx
+++ b/src/menu/components/card/doublecardcomponent/index.jsx
@@ -27,7 +27,8 @@
   state = {
     card: null,            // 鍗$墖淇℃伅锛屽寘鎷鍙嶉潰
     appType: sessionStorage.getItem('appType'),
-    visible: false
+    visible: false,
+    side: ''
   }
 
   /**
@@ -60,7 +61,7 @@
     const { card, side } = this.state
 
     let _card = fromJS(card).toJS()
-    if (side === 'back') {
+    if (side === 'sub') {
       _card.backStyle = style
     } else {
       _card.style = style
@@ -73,12 +74,12 @@
     this.props.updateElement(_card)
   }
 
-  updateCard = (elements, btn) => {
-    const { card, side } = this.state
+  updateCard = (elements, btn, type) => {
+    const { card } = this.state
 
     let _card = {}
 
-    if (side === 'back') {
+    if (type === 'sub') {
       _card = {...card, backElements: elements}
     } else {
       _card = {...card, elements: elements}
@@ -90,29 +91,8 @@
 
     this.props.updateElement(_card, btn)
   }
-
-  changeSide = () => {
-    const { card } = this.props
-    const { side } = this.state
-
-    let _side = ''
-    let _elements = null
-    if (side === 'front') {
-      _side = 'back'
-    } else {
-      _side = 'front'
-    }
-
-    if (_side === 'front') {
-      _elements = fromJS(card.elements).toJS()
-    } else {
-      _elements = fromJS(card.backElements).toJS()
-    }
-
-    this.setState({side: _side, elements: _elements})
-  }
   
-  addElement = () => {
+  addElement = (type) => {
     const { card } = this.state
 
     let newcard = {}
@@ -124,10 +104,10 @@
     newcard.height = 1
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鍏冪礌
-    MKEmitter.emit('cardAddElement', card.uuid, newcard)
+    MKEmitter.emit('cardAddElement', card.uuid, newcard, type)
   }
 
-  addButton = () => {
+  addButton = (type) => {
     const { card } = this.state
 
     let newcard = {eleType: 'button', label: 'button', verify: null, show: 'link', sqlType: '', Ot: 'requiredSgl', OpenType: 'prompt', icon: '', class: 'primary', intertype: 'system', execSuccess: 'grid', execError: 'never', popClose: 'never'}
@@ -135,30 +115,31 @@
     newcard.focus = true
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鍏冪礌
-    MKEmitter.emit('cardAddElement', card.uuid, newcard)
+    MKEmitter.emit('cardAddElement', card.uuid, newcard, type)
   }
 
-  changeStyle = () => {
-    const { card, side } = this.state
+  changeStyle = (type) => {
+    const { card } = this.state
 
     let _style = null
     let options = ['height', 'background', 'border', 'padding', 'margin', 'shadow']
-    if (side === 'front') {
-      _style = card.style ? fromJS(card.style).toJS() : {}
-    } else if (side === 'back') {
-      _style = card.backStyle ? fromJS(card.backStyle).toJS() : {}
-      options = ['background', 'padding']
+
+    if (type === 'sub') {
+      _style = fromJS(card.backStyle).toJS()
+    } else {
+      _style = fromJS(card.style).toJS()
     }
+
+    this.setState({side: type})
 
     MKEmitter.emit('changeStyle', options, _style, this.getStyle)
   }
 
   getSettingForms = () => {
-    const { cards } = this.props
-    const { card, appType } = this.state
+    const { card } = this.state
 
     let buttons = []
-    card.elements && card.elements.forEach(item => {
+    card.elements.forEach(item => {
       if (item.eleType === 'button') {
         buttons.push({
           value: item.uuid,
@@ -166,21 +147,28 @@
         })
       }
     })
-    if (appType !== 'mob' && card.backElements) {
-      card.backElements.forEach(item => {
-        if (item.eleType === 'button') {
-          buttons.push({
-            value: item.uuid,
-            label: item.label
-          })
-        }
-      })
-    }
-    return getSettingForm(card.setting, cards.subtype, buttons, card.$cardType, cards.columns)
+
+    return getSettingForm(card.setting, buttons)
   }
 
-  updateSetting = (res) => {
-    const { card, side, appType } = this.state
+  getBackSettingForms = () => {
+    const { card } = this.state
+
+    let buttons = []
+    card.backElements.forEach(item => {
+      if (item.eleType === 'button') {
+        buttons.push({
+          value: item.uuid,
+          label: item.label
+        })
+      }
+    })
+
+    return getSettingForm(card.backSetting, buttons)
+  }
+
+  updateSetting = (res, type) => {
+    const { card, appType } = this.state
 
     if (appType === '' && res.menu) {
       let list = null
@@ -202,23 +190,22 @@
       })
     }
 
-    let _card = {...card, setting: res}
+    let _card = {...card}
+
+    if (type === 'sub') {
+      _card.backSetting = res
+    } else {
+      _card.setting = res
+    }
 
     this.setState({
       card: _card
     })
 
-    if (side === 'back' && res.type === 'simple') {
-      this.setState({
-        side: 'front',
-        elements: fromJS(_card.elements).toJS()
-      })
-    }
-
     this.props.updateElement(_card)
   }
 
-  paste = (element, resolve) => {
+  paste = (element, resolve, type) => {
     const { card } = this.state
 
     let _uuid = Utils.getuuid()
@@ -233,14 +220,16 @@
     resolve({status: true})
 
     // 娉ㄥ唽浜嬩欢-娣诲姞鍏冪礌
-    MKEmitter.emit('cardAddElement', card.uuid, element)
+    MKEmitter.emit('cardAddElement', card.uuid, element, type)
   }
 
-  doubleClickCard = () => {
+  doubleClickCard = (type) => {
     const { card } = this.state
 
-    if (card.setting.click === 'menu' && card.setting.menu) {
+    if (type !== 'sub' && card.setting.click === 'menu' && card.setting.menu) {
       MKEmitter.emit('changeEditMenu', {MenuID: card.setting.menu})
+    } else if (type === 'sub' && card.backSetting.click === 'menu' && card.backSetting.menu) {
+      MKEmitter.emit('changeEditMenu', {MenuID: card.backSetting.menu})
     }
   }
 
@@ -262,43 +251,45 @@
 
     return (
       <Col span={card.setting.width || 24}>
-        <div className={'card-item ' + (card.setting.btnControl || '')} style={_style} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard()}} id={card.uuid}>
-          <div className="card-control" onDoubleClick={(e) => e.stopPropagation()}>
-            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
-              <div className="mk-popover-control">
-                <PlusOutlined className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} />
-                <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} />
-                <NormalForm title={'寰幆鍗$墖璁剧疆'} width={950} update={this.updateSetting} getForms={this.getSettingForms}>
-                  <EditOutlined className="edit" title="缂栬緫"/>
-                </NormalForm>
-                <CopyComponent type="cardcell" card={card}/>
-                <PasteController options={['action', 'customCardElement']} updateConfig={this.paste} />
-                <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} />
-              </div>
-            } trigger="hover">
-              <ToolOutlined />
-            </Popover>
+        <div className="card-item-wrap">
+          <div className={'card-item ' + (card.setting.btnControl || '')} style={_style} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard()}} id={card.uuid}>
+            <div className="card-control" onDoubleClick={(e) => e.stopPropagation()}>
+              <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+                <div className="mk-popover-control">
+                  <PlusOutlined className="plus" title="娣诲姞鍏冪礌" onClick={() => this.addElement('main')} />
+                  <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={() => this.addButton('main')} />
+                  <NormalForm title={'寰幆鍗$墖璁剧疆'} width={950} update={(res) => this.updateSetting(res)} getForms={this.getSettingForms}>
+                    <EditOutlined className="edit" title="缂栬緫"/>
+                  </NormalForm>
+                  <CopyComponent type="cardcell" card={card}/>
+                  <PasteController options={['action', 'customCardElement']} updateConfig={(element, resolve) => this.paste(element, resolve, 'main')} />
+                  <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.changeStyle()} />
+                </div>
+              } trigger="hover">
+                <ToolOutlined />
+              </Popover>
+            </div>
+            <CardCellComponent cards={cards} cardCell={card} side="main" elements={card.elements} updateElement={(elements, btn) => this.updateCard(elements, btn)}/>
           </div>
-          <CardCellComponent cards={cards} cardCell={card} side="" elements={card.elements} updateElement={this.updateCard}/>
-        </div>
-        <div className={'card-item ' + (card.setting.btnControl || '')} style={_backStyle} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard()}} id={card.uuid}>
-          <div className="card-control" onDoubleClick={(e) => e.stopPropagation()}>
-            <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
-              <div className="mk-popover-control">
-                <PlusOutlined className="plus" title="娣诲姞鍏冪礌" onClick={this.addElement} />
-                <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={this.addButton} />
-                <NormalForm title={'寰幆瀛愬崱鐗囪缃�'} width={950} update={this.updateSetting} getForms={this.getSettingForms}>
-                  <EditOutlined className="edit" title="缂栬緫"/>
-                </NormalForm>
-                <CopyComponent type="cardcell" card={card}/>
-                <PasteController options={['action', 'customCardElement']} updateConfig={this.paste} />
-                <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={this.changeStyle} />
-              </div>
-            } trigger="hover">
-              <ToolOutlined />
-            </Popover>
+          <div className={'card-item ' + (card.backSetting.btnControl || '')} style={_backStyle} onDoubleClick={(e) => {e.stopPropagation(); this.doubleClickCard('sub')}} id={card.uuid}>
+            <div className="card-control" onDoubleClick={(e) => e.stopPropagation()}>
+              <Popover overlayClassName="mk-popover-control-wrap" mouseLeaveDelay={0.2} mouseEnterDelay={0.2} content={
+                <div className="mk-popover-control">
+                  <PlusOutlined className="plus" title="娣诲姞鍏冪礌" onClick={() => this.addElement('sub')} />
+                  <PlusSquareOutlined className="plus" title="娣诲姞鎸夐挳" onClick={() => this.addButton('sub')} />
+                  <NormalForm title={'寰幆瀛愬崱鐗囪缃�'} width={950} update={(res) => this.updateSetting(res, 'sub')} getForms={this.getBackSettingForms}>
+                    <EditOutlined className="edit" title="缂栬緫"/>
+                  </NormalForm>
+                  <CopyComponent type="cardcell" card={card}/>
+                  <PasteController options={['action', 'customCardElement']} updateConfig={(element, resolve) => this.paste(element, resolve, 'sub')} />
+                  <FontColorsOutlined className="style" title="璋冩暣鏍峰紡" onClick={() => this.changeStyle('sub')} />
+                </div>
+              } trigger="hover">
+                <ToolOutlined />
+              </Popover>
+            </div>
+            <CardCellComponent cards={cards} cardCell={card} side="sub" elements={card.backElements} updateElement={(elements, btn) => this.updateCard(elements, btn, 'sub')}/>
           </div>
-          <CardCellComponent cards={cards} cardCell={card} side="" elements={card.backElements} updateElement={this.updateCard}/>
         </div>
       </Col>
     )
diff --git a/src/menu/components/card/doublecardcomponent/options.jsx b/src/menu/components/card/doublecardcomponent/options.jsx
index be415f4..1a8a39c 100644
--- a/src/menu/components/card/doublecardcomponent/options.jsx
+++ b/src/menu/components/card/doublecardcomponent/options.jsx
@@ -1,7 +1,7 @@
 /**
  * @description Setting琛ㄥ崟閰嶇疆淇℃伅
  */
-export default function (setting, subtype, buttons = [], cardType, columns) {
+export default function (setting, buttons = []) {
   let appType = sessionStorage.getItem('appType')
   let menulist = []
 
diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx
index 0bf8108..3df5979 100644
--- a/src/menu/datasource/verifycard/index.jsx
+++ b/src/menu/datasource/verifycard/index.jsx
@@ -759,16 +759,7 @@
 
   copyDatasource = () => {
     const { config } = this.props
-    const { columns, scripts } = this.state
-
-    if (columns.length === 0) {
-      notification.warning({
-        top: 92,
-        message: '璇锋坊鍔犲瓧娈甸泦!',
-        duration: 5
-      })
-      return
-    }
+    const { columns, subColumns, scripts } = this.state
 
     this.settingForm.handleConfirm().then(res => {
       delete res.supModule
@@ -777,7 +768,7 @@
       let source = {
         key: 'interface',
         type: 'line',
-        data: {setting: res, columns, scripts, pageable: false, format: 'array', name: res.name, status: 'false', type: 'interface', uuid: '' }
+        data: {setting: res, columns, subColumns, scripts, pageable: false, format: 'array', name: res.name, status: 'false', type: 'interface', uuid: '' }
       }
 
       try {
@@ -825,6 +816,15 @@
       }
 
       if (config.subtype !== 'basetable') {
+        let subColumns = []
+
+        if (config.subtype === 'dualdatacard' && res.data.subColumns) {
+          subColumns = res.data.subColumns.map(col => {
+            col.uuid = Utils.getuuid()
+            return col
+          })
+        }
+
         this.setState({
           scripts: res.data.scripts.map(col => {
             col.uuid = Utils.getuuid()
@@ -834,6 +834,7 @@
             col.uuid = Utils.getuuid()
             return col
           }),
+          subColumns: subColumns,
           setting: res.data.setting,
           median: res.data.setting,
           reload: true,
@@ -926,6 +927,7 @@
             {!reload ? <SettingForm
               config={config}
               columns={columns}
+              subColumns={subColumns}
               setting={setting}
               scripts={scripts}
               updateStatus={(res) => this.setState({median: {...res}})}
diff --git a/src/menu/datasource/verifycard/settingform/index.jsx b/src/menu/datasource/verifycard/settingform/index.jsx
index d9be1cc..cd21428 100644
--- a/src/menu/datasource/verifycard/settingform/index.jsx
+++ b/src/menu/datasource/verifycard/settingform/index.jsx
@@ -556,6 +556,39 @@
                 })(<InputNumber min={0} max={500} precision={0} />)}
               </Form.Item>
             </Col> : null}
+            {config.subtype === 'dualdatacard' ? <Col span={8}>
+              <Form.Item label={
+                <Tooltip placement="topLeft" title="瀛愯〃鍦ㄤ富琛ㄤ腑鐨勬暟鎹泦鍚嶇О銆�">
+                  <QuestionCircleOutlined className="mk-form-tip" />
+                  瀛愯〃瀛楁
+                </Tooltip>
+              }>
+                {getFieldDecorator('subdata', {
+                  initialValue: setting.subdata || 'sub_data',
+                  rules: [
+                    {
+                      required: true,
+                      message: '璇疯緭鍏ラ粯璁ゆ帓搴�!'
+                    }
+                  ]
+                })(<Input placeholder={''} autoComplete="off" />)}
+              </Form.Item>
+            </Col> : null}
+            {config.subtype === 'dualdatacard' ? <Col span={8}>
+              <Form.Item label="瀛愯〃涓婚敭">
+                {getFieldDecorator('subKey', {
+                  initialValue: setting.subKey || ''
+                })(
+                  <Select>
+                    {this.props.subColumns.map((option, i) =>
+                      <Select.Option key={i} value={option.field}>
+                        {option.label}
+                      </Select.Option>
+                    )}
+                  </Select>
+                )}
+              </Form.Item>
+            </Col> : null}
           </Row>
         </Form>
       </div>
diff --git a/src/menu/modalconfig/index.jsx b/src/menu/modalconfig/index.jsx
index e205f50..b6a7883 100644
--- a/src/menu/modalconfig/index.jsx
+++ b/src/menu/modalconfig/index.jsx
@@ -106,7 +106,7 @@
    * 3銆佽缃紪杈戝弬鏁伴」-formlist
    */
   handleForm = (_card) => {
-    const { componentConfig } = this.props
+    const { componentConfig, btn } = this.props
     const { config } = this.state
     let card = fromJS(_card).toJS()
     let _inputfields = []
@@ -177,7 +177,12 @@
 
     _tabfields.unshift({field: '', label: '鍘熻〃鍗�'})
 
-    componentConfig.columns.forEach(col => {
+    let columns = componentConfig.columns
+    if (btn.$sub) {
+      columns = componentConfig.subColumns || []
+    }
+
+    columns.forEach(col => {
       if (col.field && !uniq.has(col.field)) {
         uniq.set(col.field, true)
 
@@ -206,7 +211,7 @@
       standardform,
       visible: true,
       card: card,
-      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, componentConfig.columns)
+      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, columns)
     })
   }
 
diff --git a/src/mob/modalconfig/index.jsx b/src/mob/modalconfig/index.jsx
index 97d305d..ae72375 100644
--- a/src/mob/modalconfig/index.jsx
+++ b/src/mob/modalconfig/index.jsx
@@ -127,7 +127,7 @@
    * 3銆佽缃紪杈戝弬鏁伴」-formlist
    */
   handleForm = (_card) => {
-    const { componentConfig } = this.props
+    const { componentConfig, btn } = this.props
     const { config } = this.state
     let card = fromJS(_card).toJS()
     let _inputfields = []
@@ -199,7 +199,12 @@
       }
     }
 
-    componentConfig.columns.forEach(col => {
+    let columns = componentConfig.columns
+    if (btn.$sub) {
+      columns = componentConfig.subColumns || []
+    }
+
+    columns.forEach(col => {
       if (col.field && !uniq.has(col.field)) {
         uniq.set(col.field, true)
 
@@ -220,7 +225,7 @@
       standardform,
       visible: true,
       card: card,
-      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, componentConfig.columns)
+      formlist: getModalForm(card, _inputfields, _tabfields, _linkableFields, _linksupFields, columns)
     })
   }
 

--
Gitblit v1.8.0