From 92224e3d5e03f223bf2fb4b0eb88b74e790d8da9 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 17 一月 2022 10:00:05 +0800
Subject: [PATCH] 2022-01-17

---
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx |  236 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 122 insertions(+), 114 deletions(-)

diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index a2fd460..72cc3a2 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -1,7 +1,7 @@
 import React, {Component} from 'react'
 import PropTypes from 'prop-types'
 import { fromJS } from 'immutable'
-import { Form, Tabs, Row, Col, Button, Table, Popconfirm, Icon, notification, Modal, message, InputNumber, Radio } from 'antd'
+import { Form, Tabs, Row, Col, Button, notification, Modal, message, InputNumber, Radio } from 'antd'
 import moment from 'moment'
 
 import Api from '@/api'
@@ -9,10 +9,12 @@
 
 import ColumnForm from './columnform'
 import CodeMirror from '@/templates/zshare/codemirror'
+import asyncComponent from '@/utils/asyncComponent'
 import './index.scss'
 
 const { TabPane } = Tabs
 const { confirm } = Modal
+const EditTable = asyncComponent(() => import('@/templates/zshare/editTable'))
 
 class VerifyCard extends Component {
   static propTpyes = {
@@ -28,38 +30,65 @@
       {
         title: this.props.dict['model.form.field'],
         dataIndex: 'Column',
-        width: '25%'
+        inputType: 'input',
+        editable: true,
+        unique: true,
+        width: '20%'
       },
       {
         title: this.props.dict['model.name'],
         dataIndex: 'Text',
-        width: '25%'
+        inputType: 'input',
+        editable: true,
+        width: '20%'
       },
       {
         title: this.props.dict['model.form.columnWidth'],
         dataIndex: 'Width',
-        width: '25%'
+        inputType: 'number',
+        min: 5,
+        max: 200,
+        editable: true,
+        width: '20%',
+        render: (text) => text || 20
       },
       {
-        title: '鎿嶄綔',
-        align: 'center',
-        dataIndex: 'operation',
-        render: (text, record) =>
-          (
-            <div>
-              <span className="operation-btn" title={this.props.dict['model.edit']} onClick={() => this.handleEdit(record, 'columns')} style={{color: '#1890ff'}}><Icon type="edit" /></span>
-              <span className="operation-btn" title={this.props.dict['header.form.up']} onClick={() => this.handleUpDown(record, 'columns', 'up')} style={{color: '#1890ff'}}><Icon type="arrow-up" /></span>
-              <span className="operation-btn" title={this.props.dict['header.form.down']} onClick={() => this.handleUpDown(record, 'columns', 'down')} style={{color: '#ff4d4f'}}><Icon type="arrow-down" /></span>
-              <Popconfirm
-                title={this.props.dict['header.form.query.delete']}
-                okText={this.props.dict['model.confirm']}
-                cancelText={this.props.dict['model.cancel']}
-                onConfirm={() => this.handleDelete(record, 'columns')
-              }>
-                <span style={{color: '#ff4d4f', cursor: 'pointer'}}><Icon type="delete" /></span>
-              </Popconfirm>
-            </div>
-          )
+        title: '绫诲瀷',
+        dataIndex: 'type',
+        inputType: 'select',
+        editable: true,
+        required: false,
+        width: '20%',
+        render: (text) => {
+          if (text === 'image') {
+            return '鍥剧墖'
+          } else {
+            return '鏂囨湰'
+          }
+        },
+        options: [
+          {value: 'text', text: '鏂囨湰'},
+          {value: 'image', text: '鍥剧墖'}
+        ]
+      },
+      {
+        title: '鍙栫粷瀵瑰��',
+        dataIndex: 'abs',
+        inputType: 'select',
+        editable: true,
+        required: false,
+        width: '20%',
+        render: (text) => {
+          if (text === 'true') {
+            return '鏄�'
+          } else {
+            return '鍚�'
+          }
+        },
+        options: [
+          {value: 'true', text: '鏄�'},
+          {value: 'false', text: '鍚�'}
+        ]
       }
     ]
   }
@@ -73,30 +102,23 @@
     }
 
     _verify.enable = _verify.enable || 'false'
+    _verify.columns = _verify.columns || []
 
-    // 鍚屾鏄剧ず鍒�
-    if (!_verify.columns || _verify.columns.length === 0) {
-      _verify.columns = []
-      config.columns.forEach(item => {
-        if (!item.field) return
-  
-        _verify.columns.push({
-          Column: item.field,
-          Text: item.label,
-          Width: 20,
-          uuid: Utils.getuuid()
-        })
+    if (card.intertype !== 'system') {
+      _verify.enable = 'false'
+    }
+    if (_verify.columns[0] && !_verify.columns[0].type) {
+      _verify.columns = _verify.columns.map(col => {
+        col.type = col.type || 'text'
+        return col
       })
     }
 
-    if (card.intertype !== 'inner' || card.innerFunc) {
-      _verify.enable = 'false'
-    }
-
     let defaultscript = ''
-    if (!_verify.script && card.intertype === 'inner' && !card.innerFunc) {
+    if (!_verify.script && card.intertype === 'system') {
       let search = this.formatSearch(config.search)
       search = Utils.joinMainSearchkey(search)
+      search = search.replace(/@\$@/ig, '')
       search = search ? 'where ' + search : ''
       
       defaultscript = `update ${config.setting.tableName || ''} set idefine5= idefine5+1 ,modifydate=getdate(),cdefine5='宸插鍑�',modifyuserid=@userid@ ${search}`
@@ -118,36 +140,37 @@
 
     let newsearches = []
     searches.forEach(search => {
+      if (!search.field) return
+      
       let item = {
         key: search.field,
         match: search.match,
         type: search.type,
         label: search.label,
-        value: `@${search.field}@`,
+        value: search.initval,
         required: search.required === 'true'
       }
       if (item.type === 'group') {
-        let copy = fromJS(item).toJS()
-        copy.key = search.datefield
+        item.key = search.datefield
+        item.type = 'daterange'
+        item.match = 'between'
+        item.value = [moment().format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')].join(',')
 
-        item.value = `@${search.field}@`
-        item.match = '='
-        
-        copy.type = 'daterange'
-        copy.match = 'between'
-        copy.value = [`@${search.datefield}@`, `@${search.datefield}1@`]
-
-        if (search.transfer === 'true') {
-          newsearches.push(item)
-        }
-        newsearches.push(copy)
+        newsearches.push(item)
         return
+      } else if (item.type === 'date') {
+        item.value = moment().format('YYYY-MM-DD')
+      } else if (item.type === 'datemonth') {
+        item.value = moment().format('YYYY-MM')
       } else if (item.type === 'dateweek') {
-        item.value = [`@${search.field}@`, `@${search.field}1@`]
+        item.value = moment().format('YYYY-MM-DD')
       } else if (item.type === 'daterange') {
-        item.value = [`@${search.field}@`, `@${search.field}1@`]
-      } else if (item.type === 'multiselect') {
-        item.value = [`@${search.field}@`]
+        item.value = [moment().format('YYYY-MM-DD'), moment().format('YYYY-MM-DD')].join(',')
+      } else if (item.type === 'multiselect' || (item.type === 'checkcard' && search.multiple === 'true')) {
+        item.type = 'multi'
+        item.value = '@$@'
+      } else {
+        item.value = '@$@'
       }
       newsearches.push(item)
     })
@@ -158,27 +181,18 @@
   columnChange = (values) => {
     let verify = JSON.parse(JSON.stringify(this.state.verify))
 
-    if (values.uuid) {
-      verify.columns = verify.columns.map(item => {
-        if (item.uuid === values.uuid) {
-          return values
-        } else {
-          return item
-        }
+    let fields = verify.columns.map(item => item.Column)
+    if (fields.includes(values.Column)) {
+      notification.warning({
+        top: 92,
+        message: values.Column + '瀛楁宸插瓨鍦紒',
+        duration: 5
       })
-    } else {
-      let fields = verify.columns.map(item => item.Column)
-      if (fields.includes(values.Column)) {
-        notification.warning({
-          top: 92,
-          message: values.Column + '瀛楁宸插瓨鍦紒',
-          duration: 5
-        })
-        return
-      }
-      values.uuid = Utils.getuuid()
-      verify.columns.push(values)
+      return
     }
+    values.uuid = Utils.getuuid()
+    values.abs = 'false'
+    verify.columns.push(values)
 
     this.setState({
       verify: verify
@@ -191,25 +205,6 @@
     verify.columns = verify.columns.filter(item => item.uuid !== record.uuid)
 
     this.setState({ verify: verify })
-  }
-
-  handleEdit = (record, type) => {
-    this.columnForm.edit(record)
-
-    let node = document.getElementById('verify-excelout-box-tab').parentNode
-
-    if (node && node.scrollTop) {
-      let inter = Math.ceil(node.scrollTop / 10)
-
-      let timer = setInterval(() => {
-        if (node.scrollTop - inter > 0) {
-          node.scrollTop = node.scrollTop - inter
-        } else {
-          node.scrollTop = 0
-          clearInterval(timer)
-        }
-      }, 10)
-    }
   }
 
   handleUpDown = (record, type, direction) => {
@@ -346,14 +341,15 @@
     
             let param = {
               func: 's_debug_sql',
+              exec_type: 'y',
               LText: values.sql
             }
     
             param.LText = param.LText.replace(/@\$|\$@/ig, '')
     
             param.LText = Utils.formatOptions(param.LText)
-            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
-            param.secretkey = Utils.encrypt(param.LText, param.timestamp)
+            param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
+            param.secretkey = Utils.encrypt('', param.timestamp)
             
             Api.getLocalConfig(param).then(res => {
               if (res.status) {
@@ -401,6 +397,8 @@
         Column: item.field,
         Text: item.label,
         Width: 20,
+        abs: 'false',
+        type: 'text',
         uuid: Utils.getuuid()
       })
     })
@@ -416,8 +414,6 @@
 
     confirm({
       content: `纭畾娓呯┖Excel鍒楀悧锛焋,
-      okText: this.props.dict['model.confirm'],
-      cancelText: this.props.dict['model.cancel'],
       onOk() {
         _this.setState({
           verify: {
@@ -428,6 +424,27 @@
       },
       onCancel() {}
     })
+  }
+
+  changeColumns = (columns) => {
+    const { verify } = this.state
+
+    if (columns[0] && (columns[0].type !== 'image' && columns[0].type !== 'text')) {
+      columns = columns.map(col => {
+        let _cell = {
+          uuid: Utils.getuuid(),
+          Column: col.Column,
+          Text: col.Text,
+          Width: 20,
+          abs: 'false',
+          type: 'text',
+        }
+
+        return _cell
+      })
+    }
+
+    this.setState({verify: {...verify, columns}})
   }
 
   render() {
@@ -454,27 +471,17 @@
               {verify.columns.length ? <span className="count-tip">{verify.columns.length}</span> : null}
             </span>
           } key="1">
-            <ColumnForm
-              dict={this.props.dict}
-              columnChange={this.columnChange}
-              wrappedComponentRef={(inst) => this.columnForm = inst}
-            />
+            <ColumnForm dict={this.props.dict} columnChange={this.columnChange}/>
             <Button className="excel-col-add mk-green" title="娣诲姞鏄剧ず鍒楀瓧娈�" onClick={this.columnFieldInput}>
               鍚屾鏄剧ず鍒�
             </Button>
             <Button className="excel-col-add mk-red" title="娓呯┖Excel鍒�" onClick={this.clearField}>
               娓呯┖Excel鍒�
             </Button>
-            <Table
-              bordered
-              rowKey="uuid"
-              className="custom-table"
-              dataSource={verify.columns}
-              columns={excelColumns}
-              pagination={false}
-            />
+            <div style={{color: '#959595', fontSize: '13px', paddingLeft: '10px'}}>濡傞渶瀵煎嚭搴忓彿锛岃浣跨敤瀛楁 $Index銆�</div>
+            <EditTable actions={['edit', 'move', 'copy', 'del']} type="excelcolumn" data={verify.columns} columns={excelColumns} onChange={this.changeColumns}/>
           </TabPane>
-          {card.intertype === 'inner' && !card.innerFunc ? <TabPane tab={
+          {card.intertype === 'system' ? <TabPane tab={
             <span>
               鑷畾涔夎剼鏈�
               {verify.enable === 'true' ? <span className="count-tip">1</span> : null}
@@ -490,6 +497,7 @@
                     </Radio.Group>
                   </Form.Item>
                 </Col>
+                <div style={{color: '#959595', fontSize: '13px', paddingTop: '30px', float: 'right'}}>鎵ц鎴愬姛鍚庣殑鍥炶皟鍑芥暟銆�</div>
                 <Col span={24} className="sql">
                   <Form.Item label={'sql'}>
                     {getFieldDecorator('sql', {

--
Gitblit v1.8.0