From 8a6ce370f1aa1c061b76fa3e9d2d4d1df53ca4c5 Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期二, 21 五月 2024 16:38:09 +0800
Subject: [PATCH] Merge branch 'master' into positec

---
 src/menu/datasource/verifycard/index.jsx |  180 +++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 137 insertions(+), 43 deletions(-)

diff --git a/src/menu/datasource/verifycard/index.jsx b/src/menu/datasource/verifycard/index.jsx
index 8e452d1..8fb10d0 100644
--- a/src/menu/datasource/verifycard/index.jsx
+++ b/src/menu/datasource/verifycard/index.jsx
@@ -48,6 +48,7 @@
     systemScripts: [],
     median: {},
     visible: false,
+    editLineId: '',
     pvisible: false,
     reload: false,
     script: null,
@@ -59,6 +60,7 @@
         dataIndex: 'label',
         inputType: 'input',
         editable: true,
+        searchable: true,
         width: '28%'
       },
       {
@@ -68,6 +70,7 @@
         editable: true,
         unique: true,
         strict: true,
+        searchable: true,
         copy: true,
         rules: [{
           pattern: /^[\u4E00-\u9FA50-9a-zA-Z_]*$/ig,
@@ -213,9 +216,11 @@
     let columns = config.columns ? fromJS(config.columns).toJS() : []
     let subColumns = config.subColumns ? fromJS(config.subColumns).toJS() : []
 
-    columns.reverse()
+    if (!config.fixedCol) {
+      columns.reverse()
+    }
     subColumns.reverse()
-
+    
     columns.forEach(col => {
       if (!col.datatype) return
       if (/^nvarchar/.test(col.datatype)) {
@@ -261,18 +266,18 @@
 
     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)
+    _scriptSql = Utils.formatOptions(_scriptSql, 'x')
 
     let _sParam = {
       func: 'sPC_Get_SelectedList',
       LText: _scriptSql,
       obj_name: 'data',
-      arr_field: 'funcname,longparam'
+      arr_field: 'funcname,longparam',
+      exec_type: 'x'
     }
     
     _sParam.timestamp = moment().format('YYYY-MM-DD HH:mm:ss')
-    _sParam.secretkey = Utils.encrypt(_sParam.LText, _sParam.timestamp)
-
+    _sParam.secretkey = Utils.encrypt('', _sParam.timestamp)
     _sParam.open_key = Utils.encryptOpenKey(_sParam.secretkey, _sParam.timestamp) // 浜戠鏁版嵁楠岃瘉
     
     Api.getCloudConfig(_sParam).then(res => {
@@ -390,6 +395,7 @@
     if (values.uuid) {
       scripts = scripts.map(item => {
         if (item.uuid === values.uuid) {
+          values.$index = item.$index || ''
           return values
         } else {
           return item
@@ -542,7 +548,7 @@
 
   submitDataSource = () => {
     const { config, mainSearch } = this.props
-    const { activeKey, setting, columns, subColumns, scripts, cols } = this.state
+    const { activeKey, setting, columns, subColumns, scripts, cols, median } = this.state
 
     if (config.subtype === 'dualdatacard') {
       let arr = columns.map(col => col.field.toLowerCase())
@@ -559,6 +565,42 @@
           message: '瀛愯〃涓瓧娈�' + _arr.join('銆�') + '涓庝富琛ㄥ瓧娈甸噸澶嶏紒',
           duration: 5
         })
+        return Promise.reject()
+      }
+    } else if (config.subtype === 'editable') {
+      let _arr = []
+      columns.forEach(col => {
+        let key = col.field.toLowerCase()
+        if (['jskey', 'data_type', 'bid'].includes(key)) {
+          _arr.push(col.field)
+        }
+      })
+
+      if (_arr.length > 0) {
+        notification.warning({
+          top: 92,
+          message: '瀛楁闆嗕腑涓嶅彲浣跨敤' + _arr.join('銆�') + '锛佹敞锛氭瀛楁涓烘彁浜ゆ椂鐨勭郴缁熷瓧娈点��',
+          duration: 5
+        })
+        return Promise.reject()
+      }
+    }
+
+    if (median.interType === 'system') {
+      let _loading = false
+      if (this.scriptsForm && this.scriptsForm.state.editItem) {
+        _loading = true
+      } else if (this.scriptsForm && this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))) {
+        _loading = true
+      }
+  
+      if (_loading) {
+        notification.warning({
+          top: 92,
+          message: '瀛樺湪鏈繚瀛樿剼鏈紝璇风偣鍑荤‘瀹氫繚瀛橈紝鎴栫偣鍑诲彇娑堟斁寮冧慨鏀癸紒',
+          duration: 5
+        })
+        this.setState({activeKey: 'scripts'})
         return Promise.reject()
       }
     }
@@ -604,23 +646,6 @@
         }
         this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols }) }, reject, 'submit')
       } else if (activeKey === 'scripts') {
-        let _loading = false
-        if (this.scriptsForm && this.scriptsForm.state.editItem) {
-          _loading = true
-        } else if (this.scriptsForm && this.scriptsForm.props.form.getFieldValue('sql') && !/^\s+$/.test(this.scriptsForm.props.form.getFieldValue('sql'))) {
-          _loading = true
-        }
-
-        if (_loading) {
-          notification.warning({
-            top: 92,
-            message: '瀛樺湪鏈繚瀛樿剼鏈紝璇风偣鍑荤‘瀹氫繚瀛橈紝鎴栫偣鍑诲彇娑堟斁寮冧慨鏀癸紒',
-            duration: 5
-          })
-          reject()
-          return
-        }
-
         this.sqlverify(() => { resolve({setting, columns, subColumns, scripts, cols }) }, reject, 'submit')
       }
     })
@@ -655,19 +680,28 @@
       if (config.subtype === 'dualdatacard') {
         _columns = [...columns, ...subColumns]
       }
-      let r = SettingUtils.getDebugSql(setting, _scripts, _columns, searches, config.type)
+
+      let r = SettingUtils.getDebugSql(setting, _scripts, _columns, searches, config.subtype, config.hasExtend)
 
       let _debugId = md5(r.sql)
-
-      if (r.custompage && _columns.findIndex(col => col.field === 'mk_total') === -1) {
-        Modal.warning({
-          title: `鏁版嵁婧愭垨鑷畾涔夎剼鏈腑浣跨敤鑷畾涔夊垎椤垫帓搴忔椂锛岃鍦ㄥ瓧娈甸泦涓坊鍔� mk_total銆俙,
-          okText: '鐭ラ亾浜�',
-          onOk: () => {
-            reject()
-          }
-        })
-        return
+      
+      if (r.custompage && setting.laypage === 'true' && _columns.findIndex(col => col.field === 'mk_total') === -1) {
+        if (config.subtype !== 'basetable') {
+          Modal.warning({
+            title: `鏁版嵁婧愭垨鑷畾涔夎剼鏈腑浣跨敤鑷畾涔夊垎椤垫帓搴忔椂锛岃鍦ㄥ瓧娈甸泦涓坊鍔� mk_total銆俙,
+            okText: '鐭ラ亾浜�',
+            onOk: () => {
+              reject()
+            }
+          })
+          return
+        } else {
+          notification.warning({
+            top: 92,
+            message: '鏁版嵁婧愭垨鑷畾涔夎剼鏈腑浣跨敤鑷畾涔夊垎椤垫帓搴忔椂锛岃鍦ㄦ樉绀哄垪涓坊鍔� mk_total銆�',
+            duration: 5
+          })
+        }
       }
 
       if (debugId === _debugId) {
@@ -779,7 +813,9 @@
       return
     }
 
+    let editLineId = ''
     if (script) {
+      editLineId = script.uuid
       _scripts = _scripts.map(item => {
         if (script.uuid === item.uuid) {
           item.sql = scriptValue
@@ -794,10 +830,11 @@
         status: 'true'
       }
 
+      editLineId = _script.uuid
       _scripts.push(_script)
     }
 
-    this.setState({loading: true})
+    this.setState({loading: true, editLineId})
 
     this.sqlverify(() => {this.setState({scripts: _scripts, script: null, scriptValue: '', loading: false})}, () => {this.setState({loading: false})}, 'script', _scripts)
   }
@@ -924,7 +961,9 @@
   }
 
   copyColumns = () => {
-    const { columns } = this.state
+    const { config } = this.props
+    const { columns, setting } = this.state
+
     let m = []
     let n = []
     let s = []
@@ -947,9 +986,57 @@
       console.info('select ' + s.join(', '))
     }
 
+    let extend = ''
+    if (config.hasExtend) {
+      extend = []
+      let mapCol = (cols) => {
+        cols.forEach(col => {
+          if (col.type === 'extend') {
+            let datatype = 'Nvarchar(50)'
+            columns.forEach(c => {
+              if (c.field === col.field) {
+                datatype = c.datatype
+              }
+            })
+            for (let i = 1; i < col.quota; i++) {
+              extend.push(`${col.field}${i} ${datatype}`)
+            }
+          } else if (col.type === 'colspan' && col.subcols) {
+            mapCol(col.subcols)
+          }
+        })
+      }
+      mapCol(config.cols)
+      extend = `
+      /* 鎵╁睍鍒楀瓧娈� */
+      /* ${extend.join(',')} */
+      `
+    }
+
     let oInput = document.createElement('input')
-    oInput.value = `/*${m.join(',')}*/
-      ${n.join(',')}`
+    oInput.value = `create table #${setting.tableName || 'tb'}
+    (${m.join(',')},sort_id INT IDENTITY(1,1))
+    insert into #${setting.tableName || 'tb'}
+    (${n.join(',')})
+    select ${n.join(',')}
+    from ${setting.dataresource ? `(${setting.dataresource.replace(/\n/g, ' ')}) tb` : setting.tableName || 'tb'}
+    order by @orderBy@
+    
+    declare @mk_total int
+    set @mk_total = 0
+      
+    select @mk_total = count(1) from #${setting.tableName || 'tb'}
+      declare @pageIndex_top int 
+      set @pageIndex_top=(@pageIndex@-1)*@pageSize@ 
+      
+      if @mk_total > @pageIndex@*@pageSize@
+        delete #${setting.tableName || 'tb'} where sort_id > @pageIndex@*@pageSize@ 
+      
+      if @pageIndex_top > 0
+        delete #${setting.tableName || 'tb'} where sort_id <= @pageIndex_top
+
+    drop table #${setting.tableName || 'tb'}${extend}`
+
     document.body.appendChild(oInput)
     oInput.select()
     document.execCommand('Copy')
@@ -1076,7 +1163,7 @@
 
   render() {
     const { config } = this.props
-    const { columns, subColumns, median, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue, searchKey } = this.state
+    const { columns, subColumns, median, setting, scripts, colColumns, scriptsColumns, activeKey, loading, searches, defaultsql, visible, pvisible, reload, script, scriptValue, searchKey, editLineId } = this.state
 
     return (
       <div className="model-data-source-wrap">
@@ -1100,7 +1187,7 @@
               wrappedComponentRef={(inst) => this.settingForm = inst}
             /> : null}
           </TabPane>
-          {config.subtype !== 'basetable' ? <TabPane tab={
+          {!['basetable', 'invoice', 'invTable'].includes(config.subtype) ? <TabPane tab={
             <span>
               瀛楁闆�
               {columns.length ? <span className="count-tip">{columns.length}</span> : null}
@@ -1156,10 +1243,11 @@
                 })
                 return
               }
-              this.setState({visible: true, script: null, scriptValue: ''})
+              this.setState({visible: true, script: null, scriptValue: '', editLineId: ''})
             }}/> : null}
             <CustomScriptsForm
               type={config.type}
+              hasExtend={config.hasExtend}
               setting={setting}
               searches={searches}
               defaultsql={defaultsql}
@@ -1206,8 +1294,14 @@
                   </div>
                 )
               } else {
+                let sign = ''
+                if (script && script.uuid === item.uuid) {
+                  sign = 'active'
+                } else if (editLineId === item.uuid) {
+                  sign = 'edited'
+                }
                 return (
-                  <div className={'script-item ' + (script && script.uuid === item.uuid ? 'active' : '') } key={item.uuid}>
+                  <div className={'script-item ' + sign} key={item.uuid}>
                     <div style={{cursor: 'pointer'}} onClick={() => {
                       this.setState({script: item, scriptValue: item.sql})
                     }}>

--
Gitblit v1.8.0