From 20c83dab04d53d60b5fcd08aad3d5d9fbfb4fa5c Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期四, 19 十月 2023 19:46:05 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/tabviews/zshare/actionList/index.scss                              |    5 
 src/templates/zshare/editTable/index.jsx                               |   49 ++++++
 src/templates/zshare/formconfig.jsx                                    |    8 +
 src/menu/modulecell/index.jsx                                          |    1 
 src/tabviews/custom/components/table/edit-table/normalTable/index.jsx  |  167 +++++++++++++++++++++++
 src/tabviews/zshare/mutilform/mkPopSelect/index.jsx                    |   12 +
 /dev/null                                                              |   40 -----
 src/tabviews/custom/components/table/edit-table/normalTable/index.scss |   14 +
 src/templates/modalconfig/source.jsx                                   |    5 
 src/tabviews/zshare/mutilform/mkPopSelect/index.scss                   |    6 
 src/menu/components/table/edit-table/columns/editColumn/index.jsx      |    2 
 src/menu/datasource/verifycard/index.jsx                               |   18 +-
 src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx |   36 +++++
 13 files changed, 306 insertions(+), 57 deletions(-)

diff --git a/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx b/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
index 8d56325..0254d8b 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/formconfig.jsx
@@ -207,6 +207,42 @@
       }, {
         value: 'switch',
         text: '寮�鍏�'
+      }, {
+        value: 'date',
+        text: '鏃ユ湡锛堝ぉ锛�'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'precision',
+      label: '绮剧‘搴�',
+      initVal: card.precision || 'day',
+      options: [{
+        value: 'day',
+        text: '澶�'
+      }, {
+        value: 'hour',
+        text: '灏忔椂'
+      }, {
+        value: 'minute',
+        text: '鍒嗛挓'
+      }, {
+        value: 'second',
+        text: '绉�'
+      }]
+    },
+    {
+      type: 'radio',
+      key: 'declareType',
+      label: '鏁版嵁绫诲瀷',
+      tooltip: '澹版槑鍙橀噺鏃剁殑绫诲瀷锛屾椂闂存牸寮廳atetime鎴栨枃鏈牸寮弉varchar(50)銆�',
+      initVal: card.declareType || 'datetime',
+      options: [{
+        value: 'datetime',
+        text: 'datetime'
+      }, {
+        value: 'nvarchar(50)',
+        text: 'nvarchar(50)'
       }]
     },
     {
diff --git a/src/menu/components/table/edit-table/columns/editColumn/index.jsx b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
index 595109f..9a107bb 100644
--- a/src/menu/components/table/edit-table/columns/editColumn/index.jsx
+++ b/src/menu/components/table/edit-table/columns/editColumn/index.jsx
@@ -71,6 +71,8 @@
 
         if (this.record.editType === 'switch') {
           _options.push('enter', 'openVal', 'closeVal', 'openText', 'closeText', 'editField')
+        } else if (this.record.editType === 'date') {
+          _options.push('required', 'precision', 'enter', 'declareType')
         } else if (this.record.editType === 'select') {
           _options.push('required', 'enter', 'resourceType', 'linkSubField', 'editField', 'dropdown')
 
diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx
index 1ef5833..0ed4d4c 100644
--- a/src/menu/datasource/verifycard/index.jsx
+++ b/src/menu/datasource/verifycard/index.jsx
@@ -681,15 +681,17 @@
           if (/鍒楀悕\s*'[a-zA-Z0-9_-]+'\s*鏃犳晥/.test(result.message)) {
             let tail = ''
             let type = ''
-            searches.forEach(item => {
-              if (item.forbid) return
-              item.key.split(',').forEach(field => {
-                if (new RegExp(`'${field}'`).test(result.message)) {
-                  tail = field
-                  type = '鎼滅储鏉′欢'
-                }
+            if (setting.execute !== 'false' && setting.queryType !== 'statistics') {
+              searches.forEach(item => {
+                if (item.forbid) return
+                item.key.split(',').forEach(field => {
+                  if (new RegExp(`'${field}'`).test(result.message)) {
+                    tail = field
+                    type = '鎼滅储鏉′欢'
+                  }
+                })
               })
-            })
+            }
 
             if (!tail) {
               let keys = setting.order.replace(/\s+(asc|desc)/ig, '').replace(/\s+/g, '')
diff --git a/src/menu/modulecell/index.jsx b/src/menu/modulecell/index.jsx
index e3825af..66e9f76 100644
--- a/src/menu/modulecell/index.jsx
+++ b/src/menu/modulecell/index.jsx
@@ -52,6 +52,7 @@
           { subType: 'textarea', text: '澶氳鏂囨湰', type: 'form' },
           { subType: 'multiselect', text: '涓嬫媺澶氶��', type: 'form' },
           { subType: 'link', text: '鑱斿姩鑿滃崟', type: 'form' },
+          { subType: 'popSelect', text: '閫夋嫨鍣�', type: 'form' },
           { subType: 'switch', text: '寮�鍏�', type: 'form' },
           { subType: 'checkbox', text: '澶氶�夋', type: 'form' },
           { subType: 'radio', text: '鍗曢�夋', type: 'form' },
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx
deleted file mode 100644
index 6b16aea..0000000
--- a/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.jsx
+++ /dev/null
@@ -1,49 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-// import { is, fromJS } from 'immutable'
-import { Switch } from 'antd'
-
-import './index.scss'
-
-class ColorSketch extends Component {
-  static propTpyes = {
-    defaultValue: PropTypes.any,
-    autoFocus: PropTypes.any,
-    config: PropTypes.object,
-    onChange: PropTypes.func
-  }
-  state = {
-    status: false
-  }
-
-  UNSAFE_componentWillMount () {
-    const { defaultValue, config } = this.props
-    
-    let status = false
-
-    if (defaultValue === config.openVal) {
-      status = true
-    }
-    
-    this.setState({status})
-  }
-
-  changeStatus = (val) => {
-    const { config } = this.props
-    this.setState({ status: val }, () => {
-      let _val = val ? config.openVal : config.closeVal
-      let _text = val ? config.openText : config.closeText
-      this.props.onChange(_val, _text)
-    })
-  }
-
-  render() {
-    const { config, autoFocus } = this.props
-    const { status } = this.state
-    return (
-      <Switch checkedChildren={config.openText} autoFocus={autoFocus} onBlur={this.props.onBlur} unCheckedChildren={config.closeText} checked={status} onChange={this.changeStatus} />
-    )
-  }
-}
-
-export default ColorSketch
\ No newline at end of file
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss b/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss
deleted file mode 100644
index 96900ce..0000000
--- a/src/tabviews/custom/components/table/edit-table/normalTable/cusSwitch/index.scss
+++ /dev/null
@@ -1,40 +0,0 @@
-.color-sketch-block {
-  height: 25px;
-  width: 100%;
-
-  .color-sketch-block-box {
-    display: inline-block;
-    width: calc(100% - 160px);
-    height: 100%;
-    border-radius: 2px;
-    background: #ffffff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==') left center;
-  }
-  .color-sketch-block-inner {
-    display: inline-block;
-    cursor: pointer;
-    border-radius: 2px;
-    box-shadow: 0 0 0 1px rgba(0, 0, 0, .1);
-    width: 100%;
-    height: 100%;
-  }
-  .color-sketch-value {
-    display: inline-block;
-    width: 160px;
-    padding-left: 10px;
-    height: 25px;
-    line-height: 25px;
-    vertical-align: top;
-    white-space: nowrap;
-    overflow: visible;
-  }
-}
-
-.color-sketch-popover {
-  z-index: 1090!important;
-  .ant-popover-inner-content {
-    padding: 0;
-    .sketch-picker {
-      width: 250px!important;
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
index 0f95fec..95e8350 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
-import { Table, Typography, Modal, Input, InputNumber, Button, notification, message, Select } from 'antd'
+import { Table, Typography, Modal, Input, InputNumber, Switch, Button, notification, message, Select, DatePicker } from 'antd'
 import { EditOutlined, QuestionCircleOutlined } from '@ant-design/icons'
 import moment from 'moment'
 import md5 from 'md5'
@@ -10,13 +10,96 @@
 import asyncComponent from '@/utils/asyncComponent'
 import Utils, { getEditTableSql, getMark } from '@/utils/utils.js'
 import MKEmitter from '@/utils/events.js'
-import CusSwitch from './cusSwitch'
 import Encrypts from '@/components/encrypts'
 import './index.scss'
 
 const { Paragraph } = Typography
 const MkIcon = asyncComponent(() => import('@/components/mk-icon'))
 const CardCellComponent = asyncComponent(() => import('@/tabviews/custom/components/card/cardcellList'))
+
+class CusSwitch extends Component {
+  static propTpyes = {
+    defaultValue: PropTypes.any,
+    autoFocus: PropTypes.any,
+    config: PropTypes.object,
+    onChange: PropTypes.func
+  }
+
+  state = {
+    status: false
+  }
+
+  UNSAFE_componentWillMount () {
+    const { defaultValue, config } = this.props
+    
+    let status = false
+
+    if (defaultValue === config.openVal) {
+      status = true
+    }
+    
+    this.setState({status})
+  }
+
+  changeStatus = (val) => {
+    const { config } = this.props
+    this.setState({ status: val }, () => {
+      let _val = val ? config.openVal : config.closeVal
+      let _text = val ? config.openText : config.closeText
+      this.props.onChange(_val, _text)
+    })
+  }
+
+  render() {
+    const { config, autoFocus } = this.props
+    const { status } = this.state
+    return (
+      <Switch checkedChildren={config.openText} autoFocus={autoFocus} onBlur={this.props.onBlur} unCheckedChildren={config.closeText} checked={status} onChange={this.changeStatus} />
+    )
+  }
+}
+
+class CusDatePicker extends Component {
+  static propTpyes = {
+    defaultValue: PropTypes.any,
+    config: PropTypes.object,
+    onChange: PropTypes.func,
+    blur: PropTypes.func
+  }
+  
+  state = {
+    value: null,
+    open: false
+  }
+
+  UNSAFE_componentWillMount () {
+    const { value, open } = this.props
+    
+    let _value = value || null
+    if (_value) {
+      _value = moment(_value, 'YYYY-MM-DD HH:mm:ss')
+    }
+    
+    this.setState({value: _value, open: open === true})
+  }
+
+  onOpenChange = (open) => {
+    this.setState({open})
+
+    if (open === false) {
+      this.props.blur()
+    }
+  }
+
+  render() {
+    const { config } = this.props
+    const { value, open } = this.state
+
+    return (
+      <DatePicker dropdownClassName={'mk-date-picker ' + config.precision} showTime={config.format !== 'YYYY-MM-DD'} format={config.format} open={open} defaultValue={value} onChange={this.props.onChange} onOpenChange={this.onOpenChange}/>
+    )
+  }
+}
 
 class BodyRow extends React.Component {
   shouldComponentUpdate (nextProps, nextState) {
@@ -254,6 +337,33 @@
     MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
   }
 
+  onDateChange = (val) => {
+    const { col, record } = this.props
+
+    let _val = val ? moment(val).format(col.format) : ''
+
+    if (col.precision === 'hour') {
+      _val = _val + ':00:00'
+    } else if (col.precision === 'minute') {
+      _val = _val + ':00'
+    }
+
+    this.setState({editing: false})
+
+    setTimeout(() => {
+      if (/\$next/.test(col.enter)) {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        let node = document.getElementById(col.enter + record.$$uuid)
+        node && node.click()
+      }
+    }, 50)
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, [col.field]: _val})
+  }
+
   switchBlur = () => {
     setTimeout(() => {
       this.setState({editing: false})
@@ -325,6 +435,10 @@
           if (!col.editType || col.editType === 'text') {
             return (<td className="editing_table_cell">
               <Input className={err ? 'has-error' : ''} title={err} id={col.uuid + record.$$uuid} defaultValue={value} onChange={(e) => this.onChange(e.target.value)} onPressEnter={this.enterPress} onBlur={this.onBlur}/>
+            </td>)
+          } else if (col.editType === 'date') {
+            return (<td className="editing_table_cell">
+              <CusDatePicker config={col} value={record[col.field] || null} open={true} onChange={this.onDateChange} blur={() => this.setState({editing: false})}/>
             </td>)
           } else if (col.editType === 'switch') {
             let _value = record[col.field] !== undefined ? record[col.field] : ''
@@ -694,6 +808,31 @@
     MKEmitter.emit('changeRecord', col.tableId, {...record, ...values})
   }
 
+  onDateChange = (val) => {
+    const { col, record } = this.props
+
+    let _val = val ? moment(val).format(col.format) : ''
+
+    if (col.precision === 'hour') {
+      _val = _val + ':00:00'
+    } else if (col.precision === 'minute') {
+      _val = _val + ':00'
+    }
+
+    setTimeout(() => {
+      if (/\$next/.test(col.enter)) {
+        MKEmitter.emit('nextLine', col, record.$$uuid)
+      } else if (col.enter === '$sub') {
+        MKEmitter.emit('subLine', col, record)
+      } else if (col.enter !== '$noAct') {
+        let node = document.getElementById(col.enter + record.$$uuid)
+        node && node.click()
+      }
+    }, 50)
+
+    MKEmitter.emit('changeRecord', col.tableId, {...record, [col.field]: _val})
+  }
+
   render() {
     let { col, config, record, style, className, ...resProps } = this.props
     const { err } = this.state
@@ -717,6 +856,10 @@
         } else if (col.editType === 'switch') {
           children = (
             <CusSwitch config={col} autoFocus={false} defaultValue={_value} onChange={this.onSwitchChange} onBlur={() => {}}/>
+          )
+        } else if (col.editType === 'date') {
+          children = (
+            <CusDatePicker config={col} value={record[col.field] || null} onChange={this.onDateChange} blur={() => {}}/>
           )
         } else {
           children = (<>
@@ -1042,6 +1185,16 @@
                   item.map.set(cell.value, cell.label)
                 })
               }
+            } else if (item.type === 'text' && item.editType === 'date') {
+              item.format = 'YYYY-MM-DD'
+  
+              if (item.precision === 'hour') {
+                item.format = 'YYYY-MM-DD HH'
+              } else if (item.precision === 'minute') {
+                item.format = 'YYYY-MM-DD HH:mm'
+              } else if (item.precision === 'second') {
+                item.format = 'YYYY-MM-DD HH:mm:ss'
+              }
             }
           }
     
@@ -1075,7 +1228,13 @@
       if (item.field === setting.primaryKey) return
 
       if (_forms[item.field]) {
-        forms.push({..._forms[item.field], datatype: item.datatype})
+        let _item = {..._forms[item.field]}
+        if (_item.editType === 'date') {
+          _item.datatype = _item.declareType || 'datetime'
+        } else {
+          _item.datatype = item.datatype
+        }
+        forms.push(_item)
       } else {
         forms.push(item)
       }
@@ -1665,6 +1824,8 @@
           let val = item[col.field] !== undefined ? (item[col.field] + '') : ''
           if (col.required === 'true' && !val) {
             line.push(`${col.label}涓嶅彲涓虹┖`)
+          } else if (col.datatype === 'datetime' && !val) {
+            val = '1949-10-01'
           }
           item[col.field] = val
         } else if (col.type === 'number') {
diff --git a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
index 873f7e7..be948ed 100644
--- a/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
+++ b/src/tabviews/custom/components/table/edit-table/normalTable/index.scss
@@ -9,7 +9,7 @@
 
   >.ant-table-wrapper {
     position: relative;
-    z-index: 1;
+    // z-index: 1;
   }
   .ant-table {
     color: inherit;
@@ -188,6 +188,14 @@
         border: 1px solid var(--mk-sys-color);
       }
     }
+    .ant-calendar-picker {
+      display: block;
+      position: absolute;
+      top: 0px;
+      left: 0px;
+      right: 0px;
+      bottom: 0px;
+    }
     .has-error, .has-error .ant-input-number-input {
       border-color: #ff4d4f!important;
     }
@@ -220,6 +228,10 @@
         text-align: inherit;
       }
     }
+    .ant-calendar-picker {
+      display: block;
+      height: 30px;
+    }
     .has-error, .has-error .ant-input-number-input {
       border-color: #ff4d4f!important;
     }
diff --git a/src/tabviews/zshare/actionList/index.scss b/src/tabviews/zshare/actionList/index.scss
index 1d31f09..23d8916 100644
--- a/src/tabviews/zshare/actionList/index.scss
+++ b/src/tabviews/zshare/actionList/index.scss
@@ -56,7 +56,10 @@
     height: 34px;
     border-radius: 0px;
     padding-left: 15px!important;
-    border-bottom-width: 1px!important;
+    border: none;
+    color: rgba(0, 0, 0, 0.65)!important;
+    border-bottom: 1px solid #e8e8e8!important;
+    background: #ffffff!important;
     .anticon {
       display: none;
     }
diff --git a/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx b/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx
index 0181c89..320dceb 100644
--- a/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx
+++ b/src/tabviews/zshare/mutilform/mkPopSelect/index.jsx
@@ -55,7 +55,7 @@
         dataIndex: col.field,
         title: col.label,
         sorter: col.IsSort === 'true',
-        width: 120
+        width: col.Width || 120
       })
     })
 
@@ -350,8 +350,16 @@
           dataSource={options}
           loading={loading}
           onRow={(record) => {
+            let className = ''
+
+            if (record.$disabled) {
+              className = ' mk-disable-line '
+            } else if (value === record.$$uuid) {
+              className = ' ant-table-row-selected '
+            }
+            
             return {
-              className: value === record.$$uuid ? ' ant-table-row-selected ' : '',
+              className: className,
               onClick: () => {this.changeRow(record)},
             }
           }}
diff --git a/src/tabviews/zshare/mutilform/mkPopSelect/index.scss b/src/tabviews/zshare/mutilform/mkPopSelect/index.scss
index 245486d..9fb18d8 100644
--- a/src/tabviews/zshare/mutilform/mkPopSelect/index.scss
+++ b/src/tabviews/zshare/mutilform/mkPopSelect/index.scss
@@ -39,6 +39,12 @@
       tr.ant-table-row-selected td {
         background-color: var(--mk-sys-color3);
       }
+      tr:not(.mk-disable-line) {
+        cursor: pointer;
+      }
+      .mk-disable-line {
+        color: rgba(0, 0, 0, 0.35);
+      }
     }
   }
   .ant-modal-body::-webkit-scrollbar {
diff --git a/src/templates/modalconfig/source.jsx b/src/templates/modalconfig/source.jsx
index 58be363..d5bce34 100644
--- a/src/templates/modalconfig/source.jsx
+++ b/src/templates/modalconfig/source.jsx
@@ -102,6 +102,11 @@
   },
   {
     type: 'form',
+    label: '閫夋嫨鍣�',
+    subType: 'popSelect',
+  },
+  {
+    type: 'form',
     label: '寮�鍏�',
     subType: 'switch',
   },
diff --git a/src/templates/zshare/editTable/cusSwitch/index.jsx b/src/templates/zshare/editTable/cusSwitch/index.jsx
deleted file mode 100644
index 82cd954..0000000
--- a/src/templates/zshare/editTable/cusSwitch/index.jsx
+++ /dev/null
@@ -1,54 +0,0 @@
-import React, {Component} from 'react'
-import PropTypes from 'prop-types'
-// import { is, fromJS } from 'immutable'
-import { Switch } from 'antd'
-
-import './index.scss'
-
-class ColorSketch extends Component {
-  static propTpyes = {
-    defaultValue: PropTypes.any,
-    value: PropTypes.any,
-    onChange: PropTypes.func
-  }
-  state = {
-    status: true,
-  }
-
-  UNSAFE_componentWillMount () {
-    const { defaultValue, value } = this.props
-    let initVal = 'true'
-
-    if (this.props['data-__meta']) {
-      initVal = this.props['data-__meta'].initialValue
-    } else if (defaultValue) {
-      initVal = defaultValue
-    } else if (value) {
-      initVal = value
-    }
-
-    if (initVal === 'false') {
-      initVal = false
-    } else {
-      initVal = true
-    }
-    
-    this.setState({status: initVal})
-  }
-
-  changeStatus = (val) => {
-    this.setState({ status: val }, () => {
-      let _val = val ? 'true' : 'false'
-      this.props.onChange && this.props.onChange(_val)
-    })
-  }
-
-  render() {
-    const { status } = this.state
-    return (
-      <Switch checkedChildren="鏄�" unCheckedChildren="鍚�" checked={status} onChange={this.changeStatus} />
-    )
-  }
-}
-
-export default ColorSketch
\ No newline at end of file
diff --git a/src/templates/zshare/editTable/cusSwitch/index.scss b/src/templates/zshare/editTable/cusSwitch/index.scss
deleted file mode 100644
index 96900ce..0000000
--- a/src/templates/zshare/editTable/cusSwitch/index.scss
+++ /dev/null
@@ -1,40 +0,0 @@
-.color-sketch-block {
-  height: 25px;
-  width: 100%;
-
-  .color-sketch-block-box {
-    display: inline-block;
-    width: calc(100% - 160px);
-    height: 100%;
-    border-radius: 2px;
-    background: #ffffff url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAMUlEQVQ4T2NkYGAQYcAP3uCTZhw1gGGYhAGBZIA/nYDCgBDAm9BGDWAAJyRCgLaBCAAgXwixzAS0pgAAAABJRU5ErkJggg==') left center;
-  }
-  .color-sketch-block-inner {
-    display: inline-block;
-    cursor: pointer;
-    border-radius: 2px;
-    box-shadow: 0 0 0 1px rgba(0, 0, 0, .1);
-    width: 100%;
-    height: 100%;
-  }
-  .color-sketch-value {
-    display: inline-block;
-    width: 160px;
-    padding-left: 10px;
-    height: 25px;
-    line-height: 25px;
-    vertical-align: top;
-    white-space: nowrap;
-    overflow: visible;
-  }
-}
-
-.color-sketch-popover {
-  z-index: 1090!important;
-  .ant-popover-inner-content {
-    padding: 0;
-    .sketch-picker {
-      width: 250px!important;
-    }
-  }
-}
\ No newline at end of file
diff --git a/src/templates/zshare/editTable/index.jsx b/src/templates/zshare/editTable/index.jsx
index 24902d3..eeb913e 100644
--- a/src/templates/zshare/editTable/index.jsx
+++ b/src/templates/zshare/editTable/index.jsx
@@ -2,13 +2,12 @@
 import PropTypes from 'prop-types'
 import { is, fromJS } from 'immutable'
 import { DndProvider, DragSource, DropTarget } from 'react-dnd'
-import { Table, Input, InputNumber, Popconfirm, Form, Select, Radio, Cascader, notification, message, Modal, Typography } from 'antd'
+import { Table, Input, InputNumber, Popconfirm, Switch, Form, Select, Radio, Cascader, notification, message, Modal, Typography } from 'antd'
 import { CopyOutlined, EditOutlined, DeleteOutlined, SwapOutlined, PlusOutlined } from '@ant-design/icons'
 
 import Utils from '@/utils/utils.js'
 import ColorSketch from '@/mob/colorsketch'
 import asyncComponent from '@/utils/asyncComponent'
-import CusSwitch from './cusSwitch'
 import MKEmitter from '@/utils/events.js'
 import './index.scss'
 
@@ -19,6 +18,52 @@
 let dragingIndex = -1
 const { Paragraph } = Typography
 
+class CusSwitch extends Component {
+  static propTpyes = {
+    defaultValue: PropTypes.any,
+    value: PropTypes.any,
+    onChange: PropTypes.func
+  }
+  state = {
+    status: true
+  }
+
+  UNSAFE_componentWillMount () {
+    const { defaultValue, value } = this.props
+    let initVal = 'true'
+
+    if (this.props['data-__meta']) {
+      initVal = this.props['data-__meta'].initialValue
+    } else if (defaultValue) {
+      initVal = defaultValue
+    } else if (value) {
+      initVal = value
+    }
+
+    if (initVal === 'false') {
+      initVal = false
+    } else {
+      initVal = true
+    }
+    
+    this.setState({status: initVal})
+  }
+
+  changeStatus = (val) => {
+    this.setState({ status: val }, () => {
+      let _val = val ? 'true' : 'false'
+      this.props.onChange && this.props.onChange(_val)
+    })
+  }
+
+  render() {
+    const { status } = this.state
+    return (
+      <Switch checkedChildren="鏄�" unCheckedChildren="鍚�" checked={status} onChange={this.changeStatus} />
+    )
+  }
+}
+
 class BodyRow extends React.Component {
   render() {
     const { isOver, moveAble, connectDragSource, connectDropTarget, moveRow, ...restProps } = this.props
diff --git a/src/templates/zshare/formconfig.jsx b/src/templates/zshare/formconfig.jsx
index 6e13fc6..a6170ab 100644
--- a/src/templates/zshare/formconfig.jsx
+++ b/src/templates/zshare/formconfig.jsx
@@ -3116,6 +3116,14 @@
               return '鍚�'
             }
           }
+        },
+        {
+          title: '鍒楀',
+          dataIndex: 'Width',
+          inputType: 'number',
+          editable: true,
+          width: '20%',
+          initval: 120
         }
       ]
     },

--
Gitblit v1.8.0