From deab3ddf1990cd25b4692d1358ac9d50856644f0 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期五, 24 三月 2023 14:28:31 +0800
Subject: [PATCH] 2023-03-24

---
 src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx |  344 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 213 insertions(+), 131 deletions(-)

diff --git a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
index 936a558..e307490 100644
--- a/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
+++ b/src/templates/sharecomponent/actioncomponent/verifyexcelout/index.jsx
@@ -29,7 +29,6 @@
   state = {
     verify: {},
     activeKey: 'setting',
-    systemScripts: [],
     defaultscript: '', // 鑷畾涔夎剼鏈�
     excelColumns: [
       {
@@ -38,7 +37,7 @@
         inputType: 'input',
         editable: true,
         unique: true,
-        width: '17%'
+        width: '16%'
       },
       {
         title: '鍚嶇О',
@@ -46,7 +45,7 @@
         inputType: 'input',
         editable: true,
         unique: true,
-        width: '17%'
+        width: '16%'
       },
       {
         title: '鍒楀',
@@ -55,7 +54,7 @@
         min: 5,
         max: 200,
         editable: true,
-        width: '12%',
+        width: '10%',
         render: (text) => text || 20
       },
       {
@@ -64,7 +63,7 @@
         inputType: 'select',
         editable: true,
         required: false,
-        width: '14%',
+        width: '12%',
         render: (text) => {
           if (text === 'image') {
             return '鍥剧墖'
@@ -86,7 +85,7 @@
         inputType: 'radio',
         editable: true,
         required: false,
-        width: '14%',
+        width: '12%',
         render: (text) => {
           if (text === 'true') {
             return '鏄�'
@@ -115,7 +114,7 @@
         inputType: 'radio',
         editable: true,
         required: false,
-        width: '14%',
+        width: '12%',
         render: (text) => {
           if (text !== 'false') {
             return '鏄�'
@@ -127,7 +126,19 @@
           {value: 'true', text: '鏄�'},
           {value: 'false', text: '鍚�'}
         ]
-      }
+      },
+      {
+        title: '绾㈣壊鏍囬',
+        dataIndex: 'required',
+        width: '10%',
+        editable: true,
+        inputType: 'radio',
+        render: (text, record) => record.required === 'true' ? '鏄�' : '鍚�',
+        options: [
+          {value: 'true', text: '鏄�'},
+          {value: 'false', text: '鍚�'}
+        ]
+      },
     ],
     scriptsColumns: [
       {
@@ -216,13 +227,21 @@
     if (card.intertype !== 'system') {
       _verify.enable = 'false'
     }
-    if (_verify.columns[0] && (!_verify.columns[0].type || !_verify.columns[0].output)) {
-      _verify.columns = _verify.columns.map(col => {
-        col.type = col.type || 'text'
-        col.output = col.output || 'true'
-        return col
-      })
-    }
+    _verify.columns = _verify.columns.map(col => {
+      col.type = col.type || 'text'
+      col.output = col.output || 'true'
+      col.required = col.required || 'false'
+
+      if (!['text', 'image', 'number'].includes(col.type)) {
+        if (/^Decimal/ig.test(col.type)) {
+          col.type = 'number'
+        } else {
+          col.type = 'text'
+        }
+      }
+
+      return col
+    })
 
     let defaultscript = ''
     if (!_verify.script && card.intertype === 'system') {
@@ -234,54 +253,118 @@
       defaultscript = `update ${config.setting.tableName || ''} set idefine5= idefine5+1 ,modifydate=getdate(),cdefine5='宸插鍑�',modifyuserid=@userid@ ${search}`
     }
 
-    let search = []
+    let appType = sessionStorage.getItem('appType')
+    let searches = []
 
-    if (config.setting && config.setting.useMSearch === 'true' && window.GLOB.customMenu) {
+    if (appType === 'mob') {
       let menu = fromJS(window.GLOB.customMenu).toJS()
-      let _search = null
-      let filterComponent = (box) => {
-        box.components.forEach(item => {
-          if (_search) return
+      let ms = null
+      let search = []
+      menu.components.forEach(item => {
+        if (item.type === 'topbar' && item.wrap.type !== 'navbar' && item.search) {
+          ms = item.search
+        } else if (item.type === 'search' && item.wrap.field) {
+          search.push({
+            type: 'text',
+            label: item.wrap.label,
+            field: item.wrap.field,
+            match: item.wrap.match,
+            required: item.wrap.required,
+            value: item.wrap.initval || ''
+          })
+        }
+      })
+
+      if (ms) {
+        if (ms.setting.type === 'search') {
+          search.push({
+            type: 'text',
+            label: '鎼滅储鏍�',
+            field: ms.setting.field,
+            match: ms.setting.match,
+            required: ms.setting.required,
+            value: ms.setting.initval || ''
+          })
+        }
+        ms.fields.forEach(item => {
+          if (item.type === 'range') {
+            item.initval = `${item.minValue},${item.maxValue}`
+          }
+          search.push(item)
+        })
+
+        ms.groups.forEach(group => {
+          if (group.setting.type === 'search') {
+            search.push({
+              type: 'text',
+              label: group.wrap.name,
+              field: group.setting.field,
+              match: group.setting.match,
+              required: group.setting.required,
+              value: group.setting.initval || ''
+            })
+          }
+
+          group.fields.forEach(item => {
+            if (item.type === 'range') {
+              item.initval = `${item.minValue},${item.maxValue}`
+            }
+            search.push(item)
+          })
+        })
+      }
+
+      searches = search
+    } else {
+      let search = []
   
-          if (item.type === 'search') {
-            box.slist = [...box.slist, item.search]
-          } else if (item.uuid === config.uuid) {
-            _search = box.slist.pop()
-          } else if (item.type === 'group') {
-            item.components.forEach(m => {
-              if (m.uuid !== config.uuid) return
+      if (config.setting && config.setting.useMSearch === 'true' && window.GLOB.customMenu) {
+        let menu = fromJS(window.GLOB.customMenu).toJS()
+        let _search = null
+        let filterComponent = (box) => {
+          box.components.forEach(item => {
+            if (_search) return
+    
+            if (item.type === 'search') {
+              box.slist = [...box.slist, item.search]
+            } else if (item.uuid === config.uuid) {
               _search = box.slist.pop()
-            })
-          } else if (item.type === 'tabs') {
-            item.subtabs.forEach(tab => {
-              tab.slist = [...box.slist]
-              filterComponent(tab)
-            })
+            } else if (item.type === 'group') {
+              item.components.forEach(m => {
+                if (m.uuid !== config.uuid) return
+                _search = box.slist.pop()
+              })
+            } else if (item.type === 'tabs') {
+              item.subtabs.forEach(tab => {
+                tab.slist = [...box.slist]
+                filterComponent(tab)
+              })
+            }
+          })
+        }
+        menu.slist = []
+        filterComponent(menu)
+    
+        if (_search) {
+          search = _search
+        } else {
+          menu.components.forEach(item => {
+            if (item.type !== 'search') return
+            search = item.search
+          })
+        }
+      }
+  
+      searches = fromJS(config.search || []).toJS()
+  
+      if (search.length > 0) {
+        let keys = searches.map(item => (item.field ? item.field.toLowerCase() : ''))
+        search.forEach(item => {
+          if (item.field && !keys.includes(item.field.toLowerCase())) {
+            searches.push(item)
           }
         })
       }
-      menu.slist = []
-      filterComponent(menu)
-  
-      if (_search) {
-        search = _search
-      } else {
-        menu.components.forEach(item => {
-          if (item.type !== 'search') return
-          search = item.search
-        })
-      }
-    }
-
-    let searches = fromJS(config.search || []).toJS()
-
-    if (search.length > 0) {
-      let keys = searches.map(item => (item.field ? item.field.toLowerCase() : ''))
-      search.forEach(item => {
-        if (item.field && !keys.includes(item.field.toLowerCase())) {
-          searches.push(item)
-        }
-      })
     }
 
     this.setState({
@@ -289,57 +372,6 @@
       searches: searches,
       activeKey: card.intertype === 'system' && _verify.dataType === 'custom' ? 'setting' : 'columns',
       defaultscript: defaultscript
-    })
-  }
-
-  componentDidMount () {
-    this.getsysScript()
-  }
-
-  getsysScript = () => {
-    if (sessionStorage.getItem('mk_sys_scripts')) {
-      this.setState({
-        systemScripts: JSON.parse(sessionStorage.getItem('mk_sys_scripts'))
-      })
-      return
-    }
-    
-    let _scriptSql = `Select distinct func+Remark as funcname,longparam, s.Sort from聽 s_custom_script s inner join (select OpenID from sapp where ID=@Appkey@) p on s.openid = case when s.appkey='' then s.openid else p.OpenID end order by s.Sort`
-
-    _scriptSql = Utils.formatOptions(_scriptSql)
-
-    let _sParam = {
-      func: 'sPC_Get_SelectedList',
-      LText: _scriptSql,
-      obj_name: 'data',
-      arr_field: 'funcname,longparam'
-    }
-    
-    _sParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-    _sParam.secretkey = Utils.encrypt(_sParam.LText, _sParam.timestamp)
-    _sParam.open_key = Utils.encryptOpenKey(_sParam.secretkey, _sParam.timestamp) // 浜戠鏁版嵁楠岃瘉
-    
-    Api.getSystemConfig(_sParam).then(res => {
-      if (res.status) {
-        let _scripts = res.data.map(item => {
-          return {
-            name: item.funcname,
-            value: window.decodeURIComponent(window.atob(item.longparam))
-          }
-        })
-
-        sessionStorage.setItem('mk_sys_scripts', JSON.stringify(_scripts))
-
-        this.setState({
-          systemScripts: _scripts
-        })
-      } else {
-        notification.warning({
-          top: 92,
-          message: res.message,
-          duration: 5
-        })
-      }
     })
   }
 
@@ -447,6 +479,7 @@
     values.uuid = Utils.getuuid()
     values.abs = 'false'
     values.output = 'true'
+    values.required = 'false'
     verify.columns.push(values)
 
     this.setState({
@@ -658,6 +691,13 @@
             duration: 5
           })
           return
+        } else if (/,,/ig.test(values.sql)) {
+          notification.warning({
+            top: 92,
+            message: '鑷畾涔塻ql璇彞涓紝涓嶅彲鍑虹幇杩炵画鐨勮嫳鏂囬�楀彿锛�,,锛�',
+            duration: 5
+          })
+          return
         }
 
         let error = Utils.verifySql(values.sql, 'customscript')
@@ -679,7 +719,8 @@
 
         param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
         param.LText = param.LText.replace(/@\$|\$@/ig, '').replace(/@(BID|ID|LoginUID|SessionUid|UserID|Appkey|time_id)@/ig, `'${param.timestamp}'`)
-
+        param.LText = param.LText.replace(/\n/g, ' ')
+        
         param.LText = Utils.formatOptions(param.LText)
         param.secretkey = Utils.encrypt('', param.timestamp)
         
@@ -738,6 +779,7 @@
         Width: 20,
         abs: 'false',
         output: 'true',
+        required: 'false',
         type: 'text',
         uuid: Utils.getuuid()
       }
@@ -749,6 +791,31 @@
 
       columns.push(cell)
     })
+
+    if (config.subtype === 'dualdatacard') {
+      config.subColumns.forEach(item => {
+        if (fields.includes(item.field) || !item.field) return
+        fields.push(item.field)
+  
+        let cell = {
+          Column: item.field,
+          Text: item.label,
+          Width: 20,
+          abs: 'false',
+          output: 'true',
+          required: 'false',
+          type: 'text',
+          uuid: Utils.getuuid()
+        }
+  
+        if (item.type === 'number') {
+          cell.type = 'number'
+          cell.decimal = item.decimal
+        }
+  
+        columns.push(cell)
+      })
+    }
 
     this.setState({
       verify: {...verify, columns: columns}
@@ -776,21 +843,37 @@
   changeColumns = (columns) => {
     const { verify } = this.state
 
-    if (columns[0] && (columns[0].type !== 'image' && columns[0].type !== 'text' && columns[0].type !== 'number')) {
-      columns = columns.map(col => {
-        let _cell = {
-          uuid: Utils.getuuid(),
-          Column: col.Column,
-          Text: col.Text,
-          Width: 20,
-          abs: 'false',
-          output: 'true',
-          type: 'text',
-        }
+    columns = columns.map(col => {
+      col.type = col.type || 'text'
+      col.output = col.output || 'true'
+      col.required = col.required || 'false'
 
-        return _cell
-      })
-    }
+      if (!['text', 'image', 'number'].includes(col.type)) {
+        if (/^Decimal/ig.test(col.type)) {
+          col.type = 'number'
+        } else {
+          col.type = 'text'
+        }
+      }
+
+      return col
+    })
+    // if (columns[0] && !['image', 'text', 'number'].includes(columns[0].type)) {
+    //   columns = columns.map(col => {
+    //     let _cell = {
+    //       uuid: Utils.getuuid(),
+    //       Column: col.Column,
+    //       Text: col.Text,
+    //       Width: 20,
+    //       abs: 'false',
+    //       output: col.output || 'true',
+    //       required: col.required || 'false',
+    //       type: 'text',
+    //     }
+
+    //     return _cell
+    //   })
+    // }
 
     this.setState({verify: {...verify, columns}})
   }
@@ -855,10 +938,9 @@
       if (this.scriptsForm && this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))) {
         notification.warning({
           top: 92,
-          message: '瀛樺湪鏈繚瀛樿剼鏈紝璇风偣鍑荤‘瀹氫繚瀛橈紝鎴栫偣鍑诲彇娑堟斁寮冧慨鏀癸紒',
+          message: '瀛樺湪鏈繚瀛樿剼鏈紒',
           duration: 5
         })
-        return
       }
 
       this.setState({loading: true})
@@ -880,7 +962,7 @@
     }
   }
 
-  scriptsChange = (values) => {
+  scriptsChange = (values, callback) => {
     let verify = JSON.parse(JSON.stringify(this.state.verify))
 
     if (values.uuid) {
@@ -903,10 +985,12 @@
         loading: false,
         verify: verify
       })
+      callback(true)
     }, () => {             // 楠岃瘉澶辫触
       this.setState({
         loading: false
       })
+      callback(false)
     }, verify.scripts)
   }
 
@@ -919,7 +1003,7 @@
     }
 
     let timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-    let sql = SettingUtils.getDebugSql(verify, scripts, searches, Utils, timestamp)
+    let sql = SettingUtils.getDebugSql(verify, scripts, (verify.useSearch === 'true' ? searches : []), Utils, timestamp)
     let param = {
       func: 's_debug_sql',
       exec_type: 'y',
@@ -947,7 +1031,7 @@
 
   render() {
     const { card } = this.props
-    const { verify, excelColumns, defaultscript, scriptsColumns, activeKey, loading } = this.state
+    const { verify, excelColumns, defaultscript, scriptsColumns, activeKey, loading, searches } = this.state
     const { getFieldDecorator } = this.props.form
     const formItemLayout = {
       labelCol: {
@@ -981,7 +1065,7 @@
             <Button className="excel-col-add mk-red" title="娓呯┖Excel鍒�" onClick={this.clearField}>
               娓呯┖Excel鍒�
             </Button>
-            <div style={{color: '#959595', fontSize: '13px', paddingLeft: '10px'}}>濡傞渶瀵煎嚭搴忓彿锛岃浣跨敤瀛楁 $Index锛涙暟鍊肩被鍨嬪鍑烘椂鍙繘琛屾暟鎹鐞嗭紙鍙栫粷瀵瑰�笺�佷繚鐣欏皬鏁颁綅锛夈��</div>
+            <div style={{color: '#959595', fontSize: '13px', paddingLeft: '10px'}}>濡傞渶瀵煎嚭搴忓彿锛岃浣跨敤瀛楁 $Index锛涙暟鍊肩被鍨嬪鍑烘椂鍙繘琛屾暟鎹鐞嗭紙鍙栫粷瀵瑰�笺�佷繚鐣欏皬鏁颁綅锛夛紱绾㈣壊鏍囬瀵煎嚭鏃跺垪澶存枃瀛椾负绾㈣壊銆�</div>
             <EditTable actions={['edit', 'move', 'copy', 'del']} type="excelcolumn" wrappedComponentRef={(inst) => this.columnRef = inst} data={verify.columns} columns={excelColumns} onChange={this.changeColumns}/>
           </TabPane>
           {card.intertype === 'system' ? <TabPane tab={
@@ -993,9 +1077,7 @@
             <CustomScript
               btn={card}
               sheet={verify.tableName}
-              usefulfields={verify.columns}
-              scripts={verify.scripts}
-              systemScripts={this.state.systemScripts}
+              searches={verify.useSearch === 'true' ? searches : []}
               scriptsChange={this.scriptsChange}
               wrappedComponentRef={(inst) => this.scriptsForm = inst}
             />

--
Gitblit v1.8.0