From 461e4fff4b51d067671244eec63b097cd9012b6e Mon Sep 17 00:00:00 2001
From: king <18310653075@163.com>
Date: 星期一, 30 三月 2020 09:25:41 +0800
Subject: [PATCH] 2020-03-30

---
 src/templates/zshare/createinterface/index.jsx |  284 ++++++++++++++++++++++++++++----------------------------
 1 files changed, 143 insertions(+), 141 deletions(-)

diff --git a/src/templates/zshare/createinterface/index.jsx b/src/templates/zshare/createinterface/index.jsx
index bb867db..aab31f6 100644
--- a/src/templates/zshare/createinterface/index.jsx
+++ b/src/templates/zshare/createinterface/index.jsx
@@ -17,27 +17,144 @@
     loading: false,
   }
 
-  exec = (innerFunc, newLText, DelText) => {
+  exec = (menu, config) => {
+    let _grid = []
+    let _fields = []
+    let _index = 1
+
+    config.columns.forEach(item => {
+      if (!item.field || item.type === 'colspan') return
+
+      let _type = `nvarchar(${item.fieldlength || 50})`
+
+      if (item.type === 'number') {
+        _type = `decimal(18,${item.decimal ? item.decimal : 0})`
+      } else if (item.type === 'picture' || item.type === 'textarea') {
+        _type = `nvarchar(${item.fieldlength || 512})`
+      }
+
+      _grid.push(item.field)
+      _fields.push(`select '${item.field}' as gridfield,'${_type}' as fieldtype,'${item.label}' as label,'${_index}' as Sort`)
+      _index++
+    })
+
+    let _search = []
+    _index = 1
+
+    if (menu.type !== 'main') {
+      if (config.setting.dataresource && /@BID@/ig.test(config.setting.dataresource)) {
+        _search.push(`select 'BID' as searchfield,'BID' as label,'0' as Sort,'' as defaultvalue,'required' as DefaultType`)
+        _index++
+      } else {
+        _search.push(`select 'BID' as searchfield,'BID' as label,'0' as Sort,'' as defaultvalue,'' as DefaultType`)
+        _index++
+      }
+    }
+
+    let _fieldMap = new Map()
+
+    config.search.forEach(item => {
+      let fields = [item.field]
+      let _val = item.initval
+
+      if (item.type === 'text') {
+        fields = item.field.split(',')
+      }
+      if (/^date/ig.test(item.type)) {
+        _val = ''
+      }
+
+      if (item.type === 'datemonth' || item.type === 'dateweek' || item.type === 'daterange') {
+        fields = [item.field, item.field]
+      }
+
+      fields.forEach(cell => {
+        let _field = cell
+        if (_fieldMap.has(cell)) {
+          _field = _field + '1'
+        }
+
+        _fieldMap.set(cell, true)
+
+        _search.push(`select '${_field}' as searchfield,'${item.label}' as label,'${_index}' as Sort,'${_val}' as defaultvalue,'${item.required === 'true' ? 'required' : ''}' as DefaultType`)
+        _index++
+      })
+    })
+
+    let searchText = []
+    _fieldMap = new Map()
+
+    config.search.forEach((item, i) => {
+      if (item.type === 'text') {
+        let str = item.match === '=' ? '' : '\'%\''
+        let _fields_ = item.field.split(',').map(field => { // 缁煎悎鎼滅储锛屾墍瀛楁鎷兼帴
+
+          return field + ' ' + item.match + ` ${str ? str + '+' : ''}@` + field + `@${str ? '+' + str : ''}`
+        })
+
+        if (_fields_.length === 1) {
+          searchText.push(_fields_[0])
+        } else {
+          searchText.push('(' + _fields_.join(' OR ') + ')')
+        }
+      } else if (item.type === 'select') {
+
+        searchText.push(item.field + ' ' + item.match + ' @' + item.field + '@')
+      } else if (item.type === 'multiselect') {
+        
+        searchText.push(`@${item.field}@ ` + item.match + ' \'%\'+' + item.field + '+\'%\'')
+      } else if (item.type === 'date') {
+        let _field = item.field
+        if (_fieldMap.has(item.field)) {
+          _field = _field + '1'
+        }
+
+        _fieldMap.set(item.field, true)
+
+        searchText.push(item.field + ' ' + item.match + ' @' + _field + '@')
+      } else if (item.type === 'datemonth' || item.type === 'dateweek' || item.type === 'daterange') {
+
+        searchText.push('(' + item.field + ' >= @' + item.field + '@ AND ' + item.field + ' < @' + item.field + '1@)')
+      } else {
+        searchText.push(item.field + ' ' + item.match + ' @' + item.field + '@')
+      }
+    })
+
+    let param = {
+      func: 's_get_para_for_out',
+      Menuid: menu.MenuID,
+      Menuname: menu.menuName,
+      Menuno: menu.menuNo,
+      Ltextgridparam: _fields.join(' union all '),
+      Ltextsearchparam: _search.join(' union all '),
+      AppendWhere: config.setting.queryType === 'query' ? searchText.join(' AND ') : '',
+      Ltextgrid: _grid.join(','),
+      WhereType: config.setting.queryType === 'statistics' ? 'Statistics' : 'query',
+      OrderCol: config.setting.order
+    }
+
+    param.Ltextsearchparam = Utils.formatOptions(param.Ltextsearchparam)
+    param.AppendWhere = Utils.formatOptions(param.AppendWhere)
+
+    param.Ltextgridparam = Utils.formatOptions(param.Ltextgridparam)
+    param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
+    param.secretkey = Utils.encrypt(param.Ltextgridparam, param.timestamp)
+
     this.setState({
       loading: true
     })
 
     return new Promise(resolve => {
-      this.createExec(resolve, innerFunc, newLText, DelText)
+      this.createExec(resolve, param)
     })
   }
   
-  createExec = (_resolve, innerFunc, newLText, DelText) => {
-    let isExist = false // 瀛樺偍杩囩▼鏄惁瀛樺湪
-    let cloudText = ''  // 浜戠瀛樺偍缁撴灉
-    let localfunc = ''  // 鏈湴瀛樺偍杩囩▼
+  createExec = (_resolve, param) => {
+    let _mainParam = JSON.parse(JSON.stringify(param))
 
     new Promise(resolve => {
       // 鑾峰彇浜戠瀛樺偍杩囩▼淇℃伅
-      Api.getSystemConfig({
-        func: 'sPC_Get_TVP',
-        TVPName: innerFunc
-      }).then(result => {
+      Api.getLocalConfig(param).then(result => {
         if (!result.status) {
           notification.warning({
             top: 92,
@@ -46,156 +163,41 @@
           })
           resolve(false)
         } else {
-          cloudText = result.TVPText
           resolve(true)
         }
       })
     }).then(res => {
-      if (!res) return res
-      // 鑾峰彇鏈湴瀛樺偍杩囩▼淇℃伅
+      if (res === false) return res
 
-      let _param = {
-        func: 's_get_userproc',
-        LText: innerFunc
+      if (window.GLOB.mainSystemApi) {
+        _mainParam.rduri = window.GLOB.mainSystemApi
+
+        return Api.getLocalConfig(_mainParam)
       }
-      _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
-      _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)
+      return 'success'
+    }).then(result => {
+      if (result === false || result === 'success') return result
       
-      return Api.getLocalConfig(_param)
-    }).then(res => {
-      if (!res) return res
-
-      // 澶勭悊鏈湴缁撴灉
-      if (!res.status) {
+      if (!result.status) {
         notification.warning({
           top: 92,
-          message: res.message,
+          message: result.message,
           duration: 10
         })
         return false
       } else {
-        isExist = true
-        localfunc = Utils.formatOptions(res.Ltext)
-        return true
+        return 'success'
       }
     }).then(res => {
-      if (!res) return res
-
-      // 鏍规嵁鏈湴鍙婅繙绔粨鏋滃垽鏂墽琛屽姩浣�
-      if ((newLText === localfunc) && (newLText === cloudText)) {
-        return 'drop'
-      } else if (!localfunc || (cloudText === localfunc)) {
-        // 鏈湴瀛樺偍杩囩▼涓嶅瓨鍦紝鎴栦簯绔拰鏈湴瀛樺偍杩囩▼涓�鑷存椂锛屽皢鏂扮殑瀛樺偍杩囩▼鏇存柊鑷充簯绔�
-        return Api.getSystemConfig({
-          func: 'sPC_TVP_InUp',
-          TVPName: innerFunc,
-          TVPText: newLText,
-          TypeName: 'P'
-        })
-      } else {
-        return new Promise(resolve => {
-          Api.getSystemConfig({ // 娣诲姞鐜版湁鐨勬湰鍦板瓨鍌ㄨ繃绋嬭嚦浜戠
-            func: 'sPC_TVP_InUp',
-            TVPName: innerFunc,
-            TVPText: localfunc,
-            TypeName: 'P'
-          }).then(result => {
-            if (result.status) {
-              Api.getSystemConfig({
-                func: 'sPC_TVP_InUp', // 娣诲姞鏈�鏂扮殑瀛樺偍杩囩▼鑷充簯绔�
-                TVPName: innerFunc,
-                TVPText: newLText,
-                TypeName: 'P'
-              }).then(response => {
-                resolve(response)
-              })
-            } else {
-              resolve(result)
-            }
-          })
-        })
-      }
-    }).then(res => {
-      if (!res || res === 'drop') return res
-
-      // 澶勭悊浜戠鏇存柊缁撴灉
-      if (!res.status) {
-        notification.warning({
-          top: 92,
-          message: res.message,
-          duration: 10
-        })
-        return false
-      } else if (isExist) {
-        return 'drop'
-      } else {
-        return 'create'
-      }
-    }).then(res => {
-      if (!res || res === 'create') return res
-
-      // 鍒犻櫎瀛樺偍杩囩▼
-      let _param = {
-        func: 'sPC_TableData_InUpDe',
-        LText: DelText,
-        TypeCharOne: 'proc' // 鍒犻櫎鎴栧垱寤哄瓨鍌ㄨ繃绋嬫爣蹇�
-      }
-
-      _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
-      _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)
-
-      return Api.getLocalConfig(_param)
-    }).then(res => {
-      if (!res || res === 'create') return res
-      
-      // 鍒犻櫎缁撴灉澶勭悊
-      if (!res.status) {
-        notification.warning({
-          top: 92,
-          message: res.message,
-          duration: 10
-        })
-        return false
-      } else {
-        return true
-      }
-    }).then(res => {
-      if (!res) return res
-      
-      // 鏂板缓瀛樺偍杩囩▼
-      let _param = {
-        func: 'sPC_TableData_InUpDe',
-        LText: newLText,
-        TypeCharOne: 'proc'
-      }
-      _param.timestamp = moment().format('YYYY-MM-DD HH:mm:ss') + '.000'
-      _param.secretkey = Utils.encrypt(_param.LText, _param.timestamp)
-
-      return Api.getLocalConfig(_param)
-    }).then(res => {
-      if (!res) return res
-      
-      // 澶勭悊鏂板缓缁撴灉
-      if (!res.status) {
-        notification.warning({
-          top: 92,
-          message: res.message,
-          duration: 10
-        })
-        return false
+      // 缁撴灉澶勭悊
+      if (res === false) {
+        _resolve('error')
       } else {
         notification.success({
           top: 92,
           message: '鍒涘缓鎴愬姛',
           duration: 2
         })
-        return true
-      }
-    }).then(res => {
-      // 缁撴灉澶勭悊
-      if (!res) {
-        _resolve('error')
-      } else {
         _resolve('success')
       }
 
@@ -209,11 +211,11 @@
 
     return (
       <Button
-        className="mk-btn mk-purple"
+        className="mk-btn mk-green"
         onClick={this.props.trigger}
         loading={this.state.loading}
       >
-        {this.props.dict['header.menu.func.create']}
+        {this.props.dict['header.menu.interface.create']}
       </Button>
     )
   }

--
Gitblit v1.8.0