From ec3cc73f8deaf0b83b0b517e65f949a5a5c496dc Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 07 一月 2020 09:07:46 +0800
Subject: [PATCH] 2020-01-07

---
 src/templates/tableshare/verifycard/customform/index.jsx    |  127 ++++++++
 src/templates/tableshare/verifycard/billcodeform/index.scss |    0 
 src/templates/comtableconfig/index.jsx                      |    4 
 src/templates/subtableconfig/index.jsx                      |    4 
 src/templates/tableshare/verifycard/index.scss              |    6 
 src/tabviews/tableshare/actionList/index.jsx                |   10 
 src/templates/comtableconfig/settingform/index.jsx          |   13 
 src/tabviews/commontable/index.scss                         |   20 +
 src/templates/modalconfig/index.jsx                         |    2 
 src/templates/comtableconfig/tabdragelement/index.scss      |   16 
 src/templates/tableshare/verifycard/uniqueform/index.jsx    |  133 ++++++++
 src/templates/comtableconfig/tabdragelement/index.jsx       |    8 
 src/templates/tableshare/verifycard/uniqueform/index.scss   |    0 
 src/tabviews/commontable/index.jsx                          |   19 
 src/templates/subtableconfig/settingform/index.jsx          |   20 +
 src/tabviews/commontable/mainTable/index.jsx                |   10 
 src/templates/tableshare/verifycard/customform/index.scss   |    0 
 src/templates/tableshare/verifycard/index.jsx               |  332 +++++++++++++++------
 src/templates/subtableconfig/settingform/index.scss         |    2 
 src/templates/tableshare/verifycard/billcodeform/index.jsx  |  169 +++++++++++
 src/utils/utils.js                                          |    4 
 21 files changed, 754 insertions(+), 145 deletions(-)

diff --git a/src/tabviews/commontable/index.jsx b/src/tabviews/commontable/index.jsx
index 2b576ed..c9d7e50 100644
--- a/src/tabviews/commontable/index.jsx
+++ b/src/tabviews/commontable/index.jsx
@@ -138,7 +138,7 @@
       }
 
       let _actions = config.action.filter(item => item.position === 'toolbar') // 杩囨护宸ュ叿鏍忔寜閽紙鏈粡杩囨潈闄愯繃婊わ級
-      let _tab = config.tabs.filter(tab => tab.supMenu === 'mainTable')        // 妫�鏌ユ槸鍚︽湁涓庝富琛ㄥ叧鑱旂殑瀛愯〃
+      let _isLinkMain = false        // 妫�鏌ユ槸鍚︽湁涓庝富琛ㄥ叧鑱旂殑瀛愯〃
       let supmenus = {}
       config.tabgroups.forEach(group => {
         if (config[group] && config[group].length > 0) {
@@ -150,6 +150,7 @@
             }
             if (config.setting.subtabs.includes(tab.uuid)) {
               tab.supMenu = 'mainTable'
+              _isLinkMain = true
             } else if (supmenus[tab.uuid]) {
               tab.supMenu = supmenus[tab.uuid]
             }
@@ -166,7 +167,7 @@
         searchlist: config.search,
         actions: _actions,
         columns: _columns,
-        isLinkMain: _tab.length > 0,
+        isLinkMain: _isLinkMain,
         arr_field: _arrField.join(','),
         search: Utils.initMainSearch(config.search), // 鎼滅储鏉′欢鍒濆鍖栵紙鍚湁鏃堕棿鏍煎紡锛岄渶瑕佽浆鍖栵級
         loading: true
@@ -292,6 +293,10 @@
     } else {
       param = this.getDefaultParam()
     }
+
+    this.setState({
+      pickup: false
+    })
 
     this.handleTableId('mainTable', '')
 
@@ -661,7 +666,7 @@
     const { setting, searchlist, actions, columns, loadingview, viewlost, setsingle, pickup, isLinkMain, config } = this.state
 
     return (
-      <div className="commontable" id={'commontable' + this.props.MenuID}>
+      <div className={'commontable ' + (isLinkMain ? 'pick-control' : '')} id={'commontable' + this.props.MenuID}>
         {loadingview && <Spin size="large" />}
         {searchlist && searchlist.length > 0 ?
           <MainSearch
@@ -686,8 +691,12 @@
         }
         {columns && setting.onload !== 'false' ?
           <div className="main-table-box">
-            {isLinkMain && setting.tableType === 'checkbox' ? <Switch title="鍗曢�夊垏鎹�" checkedChildren="澶�" unCheckedChildren="鍗�" defaultChecked={setsingle} onChange={this.checkChange} /> : null}
-            {isLinkMain && this.state.BIDs.mainTable && (setting.tableType === 'radio' || setsingle) ? <Switch title="鏀惰捣" checkedChildren="鍏�" unCheckedChildren="寮�" defaultChecked={pickup} onChange={this.pickupChange} /> : null}
+            {isLinkMain ?
+              <div className="pickchange">
+                {setting.tableType === 'checkbox' ? <Switch title="鍗曢�夊垏鎹�" checkedChildren="澶�" unCheckedChildren="鍗�" defaultChecked={setsingle} onChange={this.checkChange} /> : null}
+                {this.state.BIDs.mainTable && (setting.tableType === 'radio' || setsingle) ? <Switch title="鏀惰捣" checkedChildren="鍏�" unCheckedChildren="寮�" defaultChecked={pickup} onChange={this.pickupChange} /> : null}
+              </div> : null
+            }
             <MainTable
               ref="mainTable"
               pickup={pickup}
diff --git a/src/tabviews/commontable/index.scss b/src/tabviews/commontable/index.scss
index d859eac..ef364c5 100644
--- a/src/tabviews/commontable/index.scss
+++ b/src/tabviews/commontable/index.scss
@@ -56,17 +56,27 @@
   }
   .main-table-box {
     position: relative;
-    .ant-switch {
-      z-index: 1;
-      float: right;
-      margin-right: 20px;
-      margin-bottom: 5px;
+    .pickchange {
+      position: absolute;
+      right: 0px;
+      top: -25px;
+      .ant-switch {
+        z-index: 1;
+        float: right;
+        margin-right: 20px;
+        margin-bottom: 5px;
+      }
     }
   }
   .ant-tabs + .ant-tabs {
     margin-top: 20px;
   }
 }
+.commontable.pick-control {
+  >.button-list {
+    padding-right: 140px;
+  }
+}
 .ant-back-top {
   bottom: 30px;
   right: 30px;
diff --git a/src/tabviews/commontable/mainTable/index.jsx b/src/tabviews/commontable/mainTable/index.jsx
index 3bcf3b9..0fc7524 100644
--- a/src/tabviews/commontable/mainTable/index.jsx
+++ b/src/tabviews/commontable/mainTable/index.jsx
@@ -30,7 +30,7 @@
   }
 
   UNSAFE_componentWillMount () {
-    const { columns } = this.props
+    const { columns, setting } = this.props
     let _columns = []
     
     columns.forEach(item => {
@@ -47,7 +47,10 @@
       _columns.push(cell)
     })
 
-    this.setState({columns: _columns})
+    this.setState({
+      columns: _columns,
+      isSingleSelect: setting.tableType === 'radio'
+    })
   }
 
   UNSAFE_componentWillReceiveProps(nextProps) {
@@ -316,6 +319,9 @@
     }
 
     let _data = this.props.data ? this.props.data : []
+    console.log(selectId)
+    console.log(pickup)
+    console.log(isSingleSelect)
     if (selectId && pickup && isSingleSelect) {
       _data = _data.filter(item => item[setting.primaryKey] === selectId)
     }
diff --git a/src/tabviews/tableshare/actionList/index.jsx b/src/tabviews/tableshare/actionList/index.jsx
index eca17b6..0b85658 100644
--- a/src/tabviews/tableshare/actionList/index.jsx
+++ b/src/tabviews/tableshare/actionList/index.jsx
@@ -164,7 +164,7 @@
           if (btn.innerFunc) {
             param.func = btn.innerFunc
           } else if (btn.sql) {
-            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting)) // 鏁版嵁婧�
+            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param[setting.primaryKey])) // 鏁版嵁婧�
             param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
             param.secretkey = Utils.encrypt(param.LText, param.timestamp)
           }
@@ -181,11 +181,11 @@
               param[setting.primaryKey] = Utils.getguid()
             }
 
-            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata)) // 鏁版嵁婧�
+            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey])) // 鏁版嵁婧�
             param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
             param.secretkey = Utils.encrypt(param.LText, param.timestamp)
           } else if (btn.sql) {
-            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata)) // 鏁版嵁婧�
+            param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey])) // 鏁版嵁婧�
             param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
             param.secretkey = Utils.encrypt(param.LText, param.timestamp)
           }
@@ -216,7 +216,7 @@
             if (btn.innerFunc) {
               param.func = btn.innerFunc
             } else if (btn.sql) {
-              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting)) // 鏁版嵁婧�
+              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, '', param[setting.primaryKey])) // 鏁版嵁婧�
               param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
               param.secretkey = Utils.encrypt(param.LText, param.timestamp)
             }
@@ -232,7 +232,7 @@
               if (setting.primaryKey) {
                 param[setting.primaryKey] = cell[setting.primaryKey]
               }
-              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata)) // 鏁版嵁婧�
+              param.LText = Utils.formatOptions(Utils.getSysDefaultSql(btn, setting, formdata, param[setting.primaryKey])) // 鏁版嵁婧�
               param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
               param.secretkey = Utils.encrypt(param.LText, param.timestamp)
             }
diff --git a/src/templates/comtableconfig/index.jsx b/src/templates/comtableconfig/index.jsx
index cc74c33..cf9bfdc 100644
--- a/src/templates/comtableconfig/index.jsx
+++ b/src/templates/comtableconfig/index.jsx
@@ -2793,7 +2793,7 @@
                   }}
                 > 
                   {this.state.tables.map((table, index) => (
-                    <Option key={index} value={table.TbName}>{table.Remark}</Option>
+                    <Option key={index} title={table.TbName} value={table.TbName}>{table.Remark}</Option>
                   ))}
                 </Select>
                 {this.state.selectedTables.length > 0 && <List
@@ -3069,7 +3069,7 @@
           onCancel={() => { this.setState({ profileVisible: false }) }}
           destroyOnClose
         >
-          <VerifyCard card={this.state.card} wrappedComponentRef={(inst) => this.verifyRef = inst} dict={this.state.dict} />
+          <VerifyCard card={this.state.card} columns={this.state.config.columns} wrappedComponentRef={(inst) => this.verifyRef = inst} dict={this.state.dict} />
         </Modal>
         {/* 璁剧疆鍏ㄥ眬閰嶇疆鍙婂垪琛ㄦ暟鎹簮 */}
         <Modal
diff --git a/src/templates/comtableconfig/settingform/index.jsx b/src/templates/comtableconfig/settingform/index.jsx
index cd61657..243ed97 100644
--- a/src/templates/comtableconfig/settingform/index.jsx
+++ b/src/templates/comtableconfig/settingform/index.jsx
@@ -80,11 +80,9 @@
   }
 
   selectChange = (val) => {
-    let _order = this.props.form.getFieldValue('order')
-    if (_order) return
-    
+    // let _order = this.props.form.getFieldValue('order')
     this.props.form.setFieldsValue({
-      order: `${val} desc`,
+      order: `${val} desc`
     })
   }
 
@@ -110,6 +108,9 @@
       if (field.length !== 1) {
         primaryKey = ''
       }
+    }
+    if (!primaryKey && columns.length === 0) {
+      primaryKey = 'ID'
     }
 
     let str = '^(' + usefulFields.join('|') + ')'
@@ -238,7 +239,7 @@
           <Col span={12}>
             <Form.Item label="涓婚敭">
               {getFieldDecorator('primaryKey', {
-                initialValue: primaryKey ? primaryKey : (columns.length === 0 ? 'ID' : '')
+                initialValue: primaryKey
               })(
                 <Select
                   getPopupContainer={() => document.getElementById('commontable-setting-form')}
@@ -258,7 +259,7 @@
           <Col span={12}>
             <Form.Item label="榛樿鎺掑簭">
               {getFieldDecorator('order', {
-                initialValue: data.order,
+                initialValue: data.order || (primaryKey ? primaryKey + ' desc' : ''),
                 rules: [
                   {
                     required: true,
diff --git a/src/templates/comtableconfig/tabdragelement/index.jsx b/src/templates/comtableconfig/tabdragelement/index.jsx
index 7db819c..5f50bde 100644
--- a/src/templates/comtableconfig/tabdragelement/index.jsx
+++ b/src/templates/comtableconfig/tabdragelement/index.jsx
@@ -4,13 +4,9 @@
 import { Tabs, Icon } from 'antd'
 import Utils from '@/utils/utils.js'
 import Card from './card'
-import subtable from '@/assets/img/subtable.jpg'
 import './index.scss'
 
 const { TabPane } = Tabs
-const photo = {
-  SubTable: subtable
-}
 
 const Container = ({list, type, groupId, placeholder, handleList, handleMenu, deleteMenu }) => {
   let target = null
@@ -85,7 +81,7 @@
   }
 
   return (
-    <div ref={drop} className="ant-row">
+    <div ref={drop} className="ant-row maintable-tab-list">
       <Tabs defaultActiveKey="0">
         {cards.map((card, index) => (
           <TabPane tab={
@@ -103,7 +99,7 @@
               <Icon className="edit close" type="close" onClick={() => del(card)} />
             </div>
           } key={`${index}`}>
-            <img src={photo[card.type]} alt=""/>
+            銆妠card.label}銆嬫爣绛惧唴瀹�
           </TabPane>
         ))}
       </Tabs>
diff --git a/src/templates/comtableconfig/tabdragelement/index.scss b/src/templates/comtableconfig/tabdragelement/index.scss
index dc8ed55..56fbd3b 100644
--- a/src/templates/comtableconfig/tabdragelement/index.scss
+++ b/src/templates/comtableconfig/tabdragelement/index.scss
@@ -7,9 +7,15 @@
   cursor: move;
   border-radius: 4px;
 }
-.commontab-drawarea-placeholder {
-  position: absolute;
-  top: 25px;
-  left: calc(50% - 50px);
-  color: #bcbcbc;
+.maintable-tab-list {
+  .ant-tabs-content {
+    text-align: center;
+    color: #bcbcbc;
+  }
+  .commontab-drawarea-placeholder {
+    position: absolute;
+    top: 25px;
+    left: calc(50% - 50px);
+    color: #bcbcbc;
+  }
 }
\ No newline at end of file
diff --git a/src/templates/modalconfig/index.jsx b/src/templates/modalconfig/index.jsx
index 6dfff2d..d40c539 100644
--- a/src/templates/modalconfig/index.jsx
+++ b/src/templates/modalconfig/index.jsx
@@ -1088,7 +1088,7 @@
                   }}
                 > 
                   {this.state.tables.map((table, index) => (
-                    <Option key={index} value={table.TbName}>{table.Remark}</Option>
+                    <Option key={index} title={table.TbName} value={table.TbName}>{table.Remark}</Option>
                   ))}
                 </Select>
                 {this.state.selectedTables.length > 0 && <List
diff --git a/src/templates/subtableconfig/index.jsx b/src/templates/subtableconfig/index.jsx
index 97d8123..bc0d1be 100644
--- a/src/templates/subtableconfig/index.jsx
+++ b/src/templates/subtableconfig/index.jsx
@@ -2412,7 +2412,7 @@
                   }}
                 > 
                   {this.state.tables.map((table, index) => (
-                    <Option key={index} value={table.TbName}>{table.Remark}</Option>
+                    <Option key={index} title={table.TbName} value={table.TbName}>{table.Remark}</Option>
                   ))}
                 </Select>
                 {this.state.selectedTables.length > 0 && <List
@@ -2629,7 +2629,7 @@
           onCancel={() => { this.setState({ profileVisible: false }) }}
           destroyOnClose
         >
-          <VerifyCard card={this.state.card} wrappedComponentRef={(inst) => this.verifyRef = inst} dict={this.state.dict} />
+          <VerifyCard card={this.state.card} columns={this.state.config.columns} wrappedComponentRef={(inst) => this.verifyRef = inst} dict={this.state.dict} />
         </Modal>
         {/* 璁剧疆鍏ㄥ眬閰嶇疆鍙婂垪琛ㄦ暟鎹簮 */}
         <Modal
diff --git a/src/templates/subtableconfig/settingform/index.jsx b/src/templates/subtableconfig/settingform/index.jsx
index 19c8939..ba01c15 100644
--- a/src/templates/subtableconfig/settingform/index.jsx
+++ b/src/templates/subtableconfig/settingform/index.jsx
@@ -49,6 +49,12 @@
     })
   }
 
+  selectChange = (val) => {
+    this.props.form.setFieldsValue({
+      order: `${val} desc`
+    })
+  }
+
   render() {
     const { data, dict, tabId, usefulFields } = this.props
     const { getFieldDecorator } = this.props.form
@@ -72,12 +78,15 @@
         primaryKey = ''
       }
     }
+    if (!primaryKey && columns.length === 0) {
+      primaryKey = 'ID'
+    }
 
     let str = '^(' + usefulFields.join('|') + ')'
     let _patten = new RegExp(str + '[0-9a-zA-Z_]*$', 'g')
 
     return (
-      <Form {...formItemLayout} className="ant-advanced-search-form commontable-setting-form" id="commontable-setting-form">
+      <Form {...formItemLayout} className="ant-advanced-search-form subtable-setting-form" id="subtable-setting-form">
         <Row gutter={24}>
           <Col span={12}>
             <Form.Item label="琛ㄥ悕">
@@ -98,7 +107,7 @@
                 initialValue: data.tableType
               })(
                 <Select
-                  getPopupContainer={() => document.getElementById('commontable-setting-form')}
+                  getPopupContainer={() => document.getElementById('subtable-setting-form')}
                 >
                   <Select.Option value="">涓嶅彲閫�</Select.Option>
                   <Select.Option value="radio">鍗曢��</Select.Option>
@@ -175,10 +184,11 @@
           <Col span={12}>
             <Form.Item label="涓婚敭">
               {getFieldDecorator('primaryKey', {
-                initialValue: primaryKey ? primaryKey : (columns.length === 0 ? 'ID' : '')
+                initialValue: primaryKey
               })(
                 <Select
-                  getPopupContainer={() => document.getElementById('commontable-setting-form')}
+                  getPopupContainer={() => document.getElementById('subtable-setting-form')}
+                  onChange={this.selectChange}
                 >
                   <Select.Option key='unset' value="">涓嶈缃�</Select.Option>
                   {columns.length === 0 ?
@@ -194,7 +204,7 @@
           <Col span={12}>
             <Form.Item label="榛樿鎺掑簭">
               {getFieldDecorator('order', {
-                initialValue: data.order,
+                initialValue: data.order || (primaryKey ? primaryKey + ' desc' : ''),
                 rules: [
                   {
                     required: true,
diff --git a/src/templates/subtableconfig/settingform/index.scss b/src/templates/subtableconfig/settingform/index.scss
index cd1a9f6..1024b34 100644
--- a/src/templates/subtableconfig/settingform/index.scss
+++ b/src/templates/subtableconfig/settingform/index.scss
@@ -1,4 +1,4 @@
-.ant-advanced-search-form.commontable-setting-form {
+.ant-advanced-search-form.subtable-setting-form {
   .textarea {
     .ant-form-item-label {
       width: 16.3%;
diff --git a/src/templates/tableshare/verifycard/billcodeform/index.jsx b/src/templates/tableshare/verifycard/billcodeform/index.jsx
new file mode 100644
index 0000000..c88deb9
--- /dev/null
+++ b/src/templates/tableshare/verifycard/billcodeform/index.jsx
@@ -0,0 +1,169 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Form, Row, Col, Input, Select, Button, InputNumber } from 'antd'
+import './index.scss'
+
+
+class UniqueForm extends Component {
+  static propTpyes = {
+    dict: PropTypes.object,  // 瀛楀吀椤�
+    billCode: PropTypes.object,  // 琛ㄥ崟
+    billCodeChange: PropTypes.func  // 琛ㄥ崟
+  }
+
+
+  handleConfirm = () => {
+    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
+    this.props.form.validateFieldsAndScroll((err, values) => {
+      if (!err) {
+        values.uuid = this.state.editItem ? this.state.editItem.uuid : ''
+        values.field = values.field.join(',')
+
+        this.props.uniqueChange(values)
+        this.setState({
+          editItem: null
+        })
+      }
+    })
+  }
+
+  render() {
+    const { getFieldDecorator } = this.props.form
+    const { billCode } = this.props
+    const formItemLayout = {
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 8 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
+      }
+    }
+    return (
+      <Form {...formItemLayout} className="custom-verify-form">
+        <Row gutter={24}>
+          <Col span={6}>
+            <Form.Item label={'瀛楁'}>
+              {getFieldDecorator('field', {
+                initialValue: billCode.ModularDetailCode || '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '鍑瘉鏍囪瘑!'
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鍗曞彿绫诲瀷'}>
+              {getFieldDecorator('TypeCharOne', {
+                initialValue: billCode.TypeCharOne || 'Y',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.select'] + '鍗曞彿绫诲瀷!'
+                  }
+                ]
+              })(
+                <Select>
+                  <Select.Option value="Y"> 鍗曞彿 </Select.Option>
+                  <Select.Option value="n"> 缂栫爜 </Select.Option>
+                  <Select.Option value="Lp"> 琛屽彿 </Select.Option>
+                  <Select.Option value="BN"> 鎵规 </Select.Option>
+                </Select>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鍑瘉鏍囪瘑'}>
+              {getFieldDecorator('ModularDetailCode', {
+                initialValue: billCode.ModularDetailCode || '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '鍑瘉鏍囪瘑!'
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'娴佹按鐮佷綅鏁�'}>
+              {getFieldDecorator('Type', {
+                initialValue: billCode.Type || 4,
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '娴佹按鐮佷綅鏁�!'
+                  }
+                ]
+              })(<InputNumber defaultValue={4} min={1} max={10} precision={0} />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'绫诲瀷'}>
+              {getFieldDecorator('TypeCharTwo', {
+                initialValue: billCode.TypeCharTwo || 'BillCode',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.select'] + '绫诲瀷!'
+                  }
+                ]
+              })(
+                <Select>
+                  <Select.Option value="BillCode"> 涓氬姟 </Select.Option>
+                  <Select.Option value="TableCode"> 涓绘暟鎹� </Select.Option>
+                </Select>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鎶ラ敊淇℃伅'}>
+              {getFieldDecorator('errmsg', {
+                initialValue: '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '鎶ラ敊淇℃伅!'
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鎶ラ敊缂栫爜'}>
+              {getFieldDecorator('errorCode', {
+                initialValue: 'E',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.select'] + '鎶ラ敊缂栫爜!'
+                  }
+                ]
+              })(
+                <Select>
+                  <Select.Option value="E"> E </Select.Option>
+                  <Select.Option value="N"> N </Select.Option>
+                  <Select.Option value="F"> F </Select.Option>
+                  <Select.Option value="NM"> NM </Select.Option>
+                  <Select.Option value="S"> S </Select.Option>
+                  <Select.Option value="-1"> -1 </Select.Option>
+                </Select>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={2}>
+            <Button onClick={this.handleConfirm} type="primary" className="add-row">
+              纭畾
+            </Button>
+          </Col>
+        </Row>
+      </Form>
+    )
+  }
+}
+
+export default Form.create()(UniqueForm)
\ No newline at end of file
diff --git a/src/templates/tableshare/verifycard/billcodeform/index.scss b/src/templates/tableshare/verifycard/billcodeform/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/templates/tableshare/verifycard/billcodeform/index.scss
diff --git a/src/templates/tableshare/verifycard/customform/index.jsx b/src/templates/tableshare/verifycard/customform/index.jsx
new file mode 100644
index 0000000..73fc966
--- /dev/null
+++ b/src/templates/tableshare/verifycard/customform/index.jsx
@@ -0,0 +1,127 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Form, Row, Col, Input, Select, Button } from 'antd'
+import './index.scss'
+
+const { TextArea } = Input
+
+class CustomForm extends Component {
+  static propTpyes = {
+    dict: PropTypes.object,  // 瀛楀吀椤�
+    fields: PropTypes.array,  // 琛ㄥ崟
+    customChange: PropTypes.func  // 琛ㄥ崟
+  }
+
+  state = {
+    editItem: null
+  }
+
+  edit = (record) => {
+    this.setState({
+      editItem: record
+    })
+
+    this.props.form.setFieldsValue({
+      sql: record.sql,
+      errmsg: record.errmsg,
+      errorCode: record.errorCode
+    })
+  }
+
+
+  handleConfirm = () => {
+    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
+    this.props.form.validateFieldsAndScroll((err, values) => {
+      if (!err) {
+        values.uuid = this.state.editItem ? this.state.editItem.uuid : ''
+
+        this.props.customChange(values)
+        this.setState({
+          editItem: null
+        })
+        this.props.form.setFieldsValue({
+          sql: '',
+          errmsg: '',
+          errorCode: 'E'
+        })
+      }
+    })
+  }
+
+  render() {
+    const { getFieldDecorator } = this.props.form
+    const formItemLayout = {
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 8 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
+      }
+    }
+    return (
+      <Form {...formItemLayout} className="custom-verify-form" id="verifycard2">
+        <Row gutter={24}>
+          <Col span={10} className="sql">
+            <Form.Item label={'sql'}>
+              {getFieldDecorator('sql', {
+                initialValue: '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + 'sql!'
+                  }
+                ]
+              })(<TextArea rows={3} />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鎶ラ敊淇℃伅'}>
+              {getFieldDecorator('errmsg', {
+                initialValue: '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '鎶ラ敊淇℃伅!'
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鎶ラ敊缂栫爜'}>
+              {getFieldDecorator('errorCode', {
+                initialValue: 'E',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.select'] + '鎶ラ敊缂栫爜!'
+                  }
+                ]
+              })(
+                <Select
+                  getPopupContainer={() => document.getElementById('verifycard2')}
+                >
+                  <Select.Option value="E"> E </Select.Option>
+                  <Select.Option value="N"> N </Select.Option>
+                  <Select.Option value="F"> F </Select.Option>
+                  <Select.Option value="NM"> NM </Select.Option>
+                  <Select.Option value="S"> S </Select.Option>
+                  <Select.Option value="-1"> -1 </Select.Option>
+                </Select>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={2} className="add">
+            <Button onClick={this.handleConfirm} type="primary" className="add-row">
+              纭畾
+            </Button>
+          </Col>
+        </Row>
+      </Form>
+    )
+  }
+}
+
+export default Form.create()(CustomForm)
\ No newline at end of file
diff --git a/src/templates/tableshare/verifycard/customform/index.scss b/src/templates/tableshare/verifycard/customform/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/templates/tableshare/verifycard/customform/index.scss
diff --git a/src/templates/tableshare/verifycard/index.jsx b/src/templates/tableshare/verifycard/index.jsx
index 7ec4119..b4052da 100644
--- a/src/templates/tableshare/verifycard/index.jsx
+++ b/src/templates/tableshare/verifycard/index.jsx
@@ -1,20 +1,25 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
-import { Form, Tabs, Row, Col, Radio, Input, Button, Select, Table, Popconfirm, Icon, notification, Modal, message, InputNumber } from 'antd'
+import { Form, Tabs, Row, Col, Radio, Button, Table, Popconfirm, Icon, notification, Modal, message, InputNumber } from 'antd'
 import Utils from '@/utils/utils.js'
+import UniqueForm from './uniqueform'
+import CustomForm from './customform'
+import BillcodeForm from './billcodeform'
+import Api from '@/api'
 import './index.scss'
 
 const { TabPane } = Tabs
-const { TextArea } = Input
 
 class VerifyCard extends Component {
   static propTpyes = {
-    dict: PropTypes.object, // 瀛楀吀椤�
-    card: PropTypes.object
+    dict: PropTypes.object,   // 瀛楀吀椤�
+    card: PropTypes.object,
+    columns: PropTypes.array
   }
 
   state = {
-    verify: {}
+    verify: {},
+    fields: []
   }
 
   UNSAFE_componentWillMount() {
@@ -23,25 +28,95 @@
     this.setState({
       verify: {
         invalid: _verify.invalid || 'false',
-        unique: _verify.unique || 'false',
+        uniques: _verify.uniques || [],
         accountdate: _verify.accountdate || 'false',
-        customverifys: _verify.customverifys || []
+        customverifys: _verify.customverifys || [],
+        billCode: _verify.billCode || {}
       }
+    })
+
+    if (this.props.card.OpenType === 'pop') {
+      Api.getSystemConfig({
+        func: 'sPC_Get_LongParam',
+        MenuID: this.props.card.uuid
+      }).then(res => {
+        if (res.status) {
+          let _LongParam = ''
+          if (res.LongParam) {
+            _LongParam = window.decodeURIComponent(window.atob(res.LongParam))
+            try {
+              _LongParam = JSON.parse(_LongParam)
+            } catch (e) {
+              _LongParam = ''
+            }
+          }
+  
+          if (!_LongParam) return
+          
+          let _fields = []
+          if (_LongParam.groups.length > 0) {
+            _LongParam.groups.forEach(group => {
+              group.sublist.forEach(field => {
+                _fields.push(field)
+              })
+            })
+          } else {
+            _fields = _LongParam.fields
+          }
+
+          this.setState({
+            fields: _fields
+          })
+        } else {
+          notification.warning({
+            top: 92,
+            message: res.message,
+            duration: 10
+          })
+        }
+      })
+    }
+  }
+
+  uniqueChange = (values) => {
+    let verify = JSON.parse(JSON.stringify(this.state.verify))
+
+    if (values.uuid) {
+      verify.uniques = verify.uniques.map(item => {
+        if (item.uuid === values.uuid) {
+          return values
+        } else {
+          return item
+        }
+      })
+    } else {
+      values.uuid = Utils.getuuid()
+      verify.uniques.push(values)
+    }
+
+    this.setState({
+      verify: verify
     })
   }
 
-  handleConfirm = () => {
+  customChange = (values) => {
     let verify = JSON.parse(JSON.stringify(this.state.verify))
-    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
-    this.props.form.validateFieldsAndScroll((err, values) => {
-      if (!err) {
-        values.uuid = Utils.getuuid()
-        verify.customverifys.push(values)
 
-        this.setState({
-          verify: verify
-        })
-      }
+    if (values.uuid) {
+      verify.customverifys = verify.customverifys.map(item => {
+        if (item.uuid === values.uuid) {
+          return values
+        } else {
+          return item
+        }
+      })
+    } else {
+      values.uuid = Utils.getuuid()
+      verify.customverifys.push(values)
+    }
+
+    this.setState({
+      verify: verify
     })
   }
 
@@ -54,11 +129,73 @@
     })
   }
 
-  handleDelete = (uuid) => {
+  handleDelete = (record, type) => {
     const { verify } = this.state
-    verify.customverifys = verify.customverifys.filter(item => item.uuid !== uuid)
+
+    if (type === 'customverify') {
+      verify.customverifys = verify.customverifys.filter(item => item.uuid !== record.uuid)
+    } else if (type === 'unique') {
+      verify.uniques = verify.uniques.filter(item => item.uuid !== record.uuid)
+    }
 
     this.setState({ verify: verify })
+  }
+
+  handleEdit = (record, type) => {
+    if (type === 'customverify') {
+      this.customForm.edit(record)
+    } else if (type === 'unique') {
+      this.uniqueForm.edit(record)
+    }
+  }
+
+  handleUpDown = (record, type, direction) => {
+    let verify = JSON.parse(JSON.stringify(this.state.verify))
+    let index = 0
+
+    if (type === 'customverify') {
+      verify.customverifys = verify.customverifys.filter((item, i) => {
+        if (item.uuid === record.uuid) {
+          index = i
+        }
+
+        return item.uuid !== record.uuid
+      })
+      if ((index === 0 && direction === 'up') || (index === verify.customverifys.length && direction === 'down')) {
+        return
+      }
+
+      if (direction === 'up') {
+        verify.customverifys.splice(index - 1, 0, record)
+      } else {
+        verify.customverifys.splice(index + 1, 0, record)
+      }
+  
+      this.setState({
+        verify: verify
+      })
+    } else if (type === 'unique') {
+      verify.uniques = verify.uniques.filter((item, i) => {
+        if (item.uuid === record.uuid) {
+          index = i
+        }
+
+        return item.uuid !== record.uuid
+      })
+      if ((index === 0 && direction === 'up') || (index === verify.uniques.length && direction === 'down')) {
+        return
+      }
+
+      if (direction === 'up') {
+        verify.uniques.splice(index - 1, 0, record)
+      } else {
+        verify.uniques.splice(index + 1, 0, record)
+      }
+  
+      this.setState({
+        verify: verify
+      })
+    }
   }
 
   showError = (errorType) => {
@@ -92,16 +229,15 @@
 
   timeChange = (val, type) => {
     const { verify } = this.state
-    console.log(val)
-    console.log(type)
+
     this.setState({
       verify: {...verify, [type]: val}
     })
   }
 
   render() {
-    const { getFieldDecorator } = this.props.form
-    const { verify } = this.state
+    // const { getFieldDecorator } = this.props.form
+    const { verify, fields } = this.state
     const formItemLayout = {
       labelCol: {
         xs: { span: 24 },
@@ -112,6 +248,39 @@
         sm: { span: 16 }
       }
     }
+    let uniqueColumns = [
+      {
+        title: '瀛楁鍚�',
+        dataIndex: 'field',
+        width: '50%'
+      },
+      {
+        title: 'ErrorMessage',
+        dataIndex: 'errmsg',
+        width: '25%'
+      },
+      {
+        title: 'ErrorCode',
+        dataIndex: 'errorCode',
+        width: '10%'
+      },
+      {
+        title: '鎿嶄綔',
+        align: 'center',
+        width: '15%',
+        dataIndex: 'operation',
+        render: (text, record) =>
+          (<div>
+            <span className="operation-btn" onClick={() => this.handleEdit(record, 'unique')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
+            <Popconfirm title="纭畾鍒犻櫎鍚�?" onConfirm={() => this.handleDelete(record, 'unique')}>
+              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
+            </Popconfirm>
+            <span className="operation-btn" onClick={() => this.handleUpDown(record, 'unique', 'up')} style={{color: '#1890ff'}}><Icon type="arrow-up" /></span>
+            <span className="operation-btn" onClick={() => this.handleUpDown(record, 'unique', 'down')} style={{color: '#ff4d4f'}}><Icon type="arrow-down" /></span>
+          </div>)
+      }
+    ]
+
     let columns = [
       {
         title: 'SQL',
@@ -134,11 +303,14 @@
         width: '15%',
         dataIndex: 'operation',
         render: (text, record) =>
-          (
-            <Popconfirm title="纭畾鍒犻櫎鍚�?" onConfirm={() => this.handleDelete(record.uuid)}>
-              <span style={{color: '#1890ff', cursor: 'pointer'}}><Icon type="delete" /></span>
+          (<div>
+            <span className="operation-btn" onClick={() => this.handleEdit(record, 'customverify')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
+            <Popconfirm title="纭畾鍒犻櫎鍚�?" onConfirm={() => this.handleDelete(record, 'customverify')}>
+              <span className="operation-btn" style={{color: '#ff4d4f'}}><Icon type="delete" /></span>
             </Popconfirm>
-          )
+            <span className="operation-btn" onClick={() => this.handleUpDown(record, 'customverify', 'up')} style={{color: '#1890ff'}}><Icon type="arrow-up" /></span>
+            <span className="operation-btn" onClick={() => this.handleUpDown(record, 'customverify', 'down')} style={{color: '#ff4d4f'}}><Icon type="arrow-down" /></span>
+          </div>)
       }
     ]
 
@@ -148,24 +320,16 @@
           <Form {...formItemLayout}>
             <Row gutter={24}>
               <Col span={12}>
-                <Form.Item label={'澶辨晥楠岃瘉'}>
-                  <Radio.Group value={verify.invalid} onChange={(e) => {this.onOptionChange(e, 'invalid')}}>
-                    <Radio value="true">寮�鍚�</Radio>
-                    <Radio value="false">涓嶅紑鍚�</Radio>
-                  </Radio.Group>
-                </Form.Item>
-              </Col>
-              <Col span={12}>
-                <Form.Item label={'鍞竴鎬ч獙璇�'}>
-                  <Radio.Group value={verify.unique} onChange={(e) => {this.onOptionChange(e, 'unique')}}>
-                    <Radio value="true">寮�鍚�</Radio>
-                    <Radio value="false">涓嶅紑鍚�</Radio>
-                  </Radio.Group>
-                </Form.Item>
-              </Col>
-              <Col span={12}>
                 <Form.Item label={'璐︽湡楠岃瘉'}>
                   <Radio.Group value={verify.accountdate} onChange={(e) => {this.onOptionChange(e, 'accountdate')}}>
+                    <Radio value="true">寮�鍚�</Radio>
+                    <Radio value="false">涓嶅紑鍚�</Radio>
+                  </Radio.Group>
+                </Form.Item>
+              </Col>
+              <Col span={12}>
+                <Form.Item label={'澶辨晥楠岃瘉'}>
+                  <Radio.Group value={verify.invalid} onChange={(e) => {this.onOptionChange(e, 'invalid')}}>
                     <Radio value="true">寮�鍚�</Radio>
                     <Radio value="false">涓嶅紑鍚�</Radio>
                   </Radio.Group>
@@ -174,61 +338,28 @@
             </Row>
           </Form>
         </TabPane>
-        <TabPane tab="鑷畾涔夐獙璇�" key="2">
-          <Form {...formItemLayout} className="custom-verify-form" id="verifycard1">
-            <Row gutter={24}>
-              <Col span={10} className="sql">
-                <Form.Item label={'sql'}>
-                  {getFieldDecorator('sql', {
-                    initialValue: '',
-                    rules: [
-                      {
-                        required: true,
-                        message: this.props.dict['form.required.input'] + 'sql!'
-                      }
-                    ]
-                  })(<TextArea rows={3} />)}
-                </Form.Item>
-              </Col>
-              <Col span={6}>
-                <Form.Item label={'鎶ラ敊淇℃伅'}>
-                  {getFieldDecorator('errmsg', {
-                    initialValue: '',
-                    rules: [
-                      {
-                        required: true,
-                        message: this.props.dict['form.required.input'] + '鎶ラ敊淇℃伅!'
-                      }
-                    ]
-                  })(<Input placeholder="" autoComplete="off" />)}
-                </Form.Item>
-              </Col>
-              <Col span={6}>
-                <Form.Item label={'鎶ラ敊缂栫爜'}>
-                  {getFieldDecorator('errorCode', {
-                    initialValue: 'E',
-                    rules: [
-                      {
-                        required: true,
-                        message: this.props.dict['form.required.select'] + '鎶ラ敊缂栫爜!'
-                      }
-                    ]
-                  })(
-                    <Select
-                      getPopupContainer={() => document.getElementById('verifycard1')}
-                    >
-                      <Select.Option value="E"> E </Select.Option>
-                    </Select>
-                  )}
-                </Form.Item>
-              </Col>
-              <Col span={2} className="add">
-                <Button onClick={this.handleConfirm} type="primary" className="add-row">
-                  娣诲姞
-                </Button>
-              </Col>
-            </Row>
-          </Form>
+        <TabPane tab="鍞竴鎬ч獙璇�" key="2">
+          <UniqueForm
+            fields={fields}
+            dict={this.props.dict}
+            uniqueChange={this.uniqueChange}
+            wrappedComponentRef={(inst) => this.uniqueForm = inst}
+          />
+          <Table
+            bordered
+            rowKey="uuid"
+            className="custom-table"
+            dataSource={verify.uniques}
+            columns={uniqueColumns}
+            pagination={false}
+          />
+        </TabPane>
+        <TabPane tab="鑷畾涔夐獙璇�" key="3">
+          <CustomForm
+            dict={this.props.dict}
+            customChange={this.customChange}
+            wrappedComponentRef={(inst) => this.customForm = inst}
+          />
           <Table
             bordered
             rowKey="uuid"
@@ -238,7 +369,10 @@
             pagination={false}
           />
         </TabPane>
-        <TabPane tab="淇℃伅鎻愮ず" key="3">
+        <TabPane tab="鍗曞彿鐢熸垚" key="4">
+          {verify.billCode ? <BillcodeForm dict={this.props.dict} billCode={verify.billCode} /> : null}
+        </TabPane>
+        <TabPane tab="淇℃伅鎻愮ず" key="5">
           <Form {...formItemLayout}>
             <Row gutter={24}>
               <Col offset={6} span={6}>
diff --git a/src/templates/tableshare/verifycard/index.scss b/src/templates/tableshare/verifycard/index.scss
index a7a8067..4d4c447 100644
--- a/src/templates/tableshare/verifycard/index.scss
+++ b/src/templates/tableshare/verifycard/index.scss
@@ -26,4 +26,10 @@
     display: inline-block;
     width: 30px;
   }
+  .operation-btn {
+    display: inline-block;
+    font-size: 16px;
+    padding: 0 5px;
+    cursor: pointer;
+  }
 }
\ No newline at end of file
diff --git a/src/templates/tableshare/verifycard/uniqueform/index.jsx b/src/templates/tableshare/verifycard/uniqueform/index.jsx
new file mode 100644
index 0000000..397149b
--- /dev/null
+++ b/src/templates/tableshare/verifycard/uniqueform/index.jsx
@@ -0,0 +1,133 @@
+import React, {Component} from 'react'
+import PropTypes from 'prop-types'
+import { Form, Row, Col, Input, Select, Button } from 'antd'
+import './index.scss'
+
+
+class UniqueForm extends Component {
+  static propTpyes = {
+    dict: PropTypes.object,  // 瀛楀吀椤�
+    fields: PropTypes.array,  // 琛ㄥ崟
+    uniqueChange: PropTypes.func  // 琛ㄥ崟
+  }
+
+  state = {
+    editItem: null
+  }
+
+  edit = (record) => {
+    this.setState({
+      editItem: record
+    })
+    this.props.form.setFieldsValue({
+      field: record.field.split(','),
+      errmsg: record.errmsg,
+      errorCode: record.errorCode
+    })
+  }
+
+
+  handleConfirm = () => {
+    // 琛ㄥ崟鎻愪氦鏃舵鏌ヨ緭鍏ュ�兼槸鍚︽纭�
+    this.props.form.validateFieldsAndScroll((err, values) => {
+      if (!err) {
+        values.uuid = this.state.editItem ? this.state.editItem.uuid : ''
+        values.field = values.field.join(',')
+
+        this.props.uniqueChange(values)
+        this.setState({
+          editItem: null
+        })
+        this.props.form.setFieldsValue({
+          field: [],
+          errmsg: '',
+          errorCode: 'E'
+        })
+      }
+    })
+  }
+
+  render() {
+    const { getFieldDecorator } = this.props.form
+    const { fields } = this.props
+    const formItemLayout = {
+      labelCol: {
+        xs: { span: 24 },
+        sm: { span: 8 }
+      },
+      wrapperCol: {
+        xs: { span: 24 },
+        sm: { span: 16 }
+      }
+    }
+    return (
+      <Form {...formItemLayout} className="custom-verify-form" id="verifycard1">
+        <Row gutter={24}>
+          <Col span={10}>
+            <Form.Item label={'瀛楁鍚�'}>
+              {getFieldDecorator('field', {
+                initialValue: [],
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.select'] + '瀛楁鍚�!'
+                  }
+                ]
+              })(
+                <Select
+                  mode="multiple"
+                >
+                  {fields.map(item => (
+                    <Select.Option key={item.uuid} value={item.field}>{item.field}</Select.Option>
+                  ))}
+                </Select>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鎶ラ敊淇℃伅'}>
+              {getFieldDecorator('errmsg', {
+                initialValue: '',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.input'] + '鎶ラ敊淇℃伅!'
+                  }
+                ]
+              })(<Input placeholder="" autoComplete="off" />)}
+            </Form.Item>
+          </Col>
+          <Col span={6}>
+            <Form.Item label={'鎶ラ敊缂栫爜'}>
+              {getFieldDecorator('errorCode', {
+                initialValue: 'E',
+                rules: [
+                  {
+                    required: true,
+                    message: this.props.dict['form.required.select'] + '鎶ラ敊缂栫爜!'
+                  }
+                ]
+              })(
+                <Select>
+                  <Select.Option value="E"> E </Select.Option>
+                  <Select.Option value="N"> N </Select.Option>
+                  <Select.Option value="F"> F </Select.Option>
+                  <Select.Option value="NM"> NM </Select.Option>
+                  <Select.Option value="S"> S </Select.Option>
+                  <Select.Option value="-1"> -1 </Select.Option>
+                </Select>
+              )}
+            </Form.Item>
+          </Col>
+          <Col span={2} className="add">
+            <Button onClick={this.handleConfirm} type="primary" className="add-row">
+              纭畾
+            </Button>
+          </Col>
+        </Row>
+      </Form>
+    )
+  }
+}
+
+export default Form.create()(UniqueForm)
\ No newline at end of file
diff --git a/src/templates/tableshare/verifycard/uniqueform/index.scss b/src/templates/tableshare/verifycard/uniqueform/index.scss
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/templates/tableshare/verifycard/uniqueform/index.scss
diff --git a/src/utils/utils.js b/src/utils/utils.js
index e4b03b9..46f7773 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -448,9 +448,11 @@
    * @return {String} type   鎵ц绫诲瀷
    * @return {String} table  琛ㄥ悕
    */
-  static getSysDefaultSql (btn, setting, formdata) {
+  static getSysDefaultSql (btn, setting, formdata, primaryId) {
     let primaryKey = setting.primaryKey || 'id'
     let _sql = ''
+
+    console.log(primaryId)
     if (btn.OpenType === 'pop' && btn.sqlType === 'insert') {
       let keys = []
       let values = []

--
Gitblit v1.8.0