cuiqian2004
2024-06-12 6050beb7c315bb0450e7c039a0455b96d4c1ce8f
pages/modal/3200_view.vue
@@ -494,6 +494,7 @@
                  start_transaction: true,
                  class_id: this.param.DataCls.id,
                  event_id: eventid,
                  data_obj_id:this.styleDef.form.objId,
                  obj_attr,
                  input_param,
               });
@@ -605,6 +606,7 @@
                     start_transaction: true,
                     class_id: $this.param.DataCls.id,
                     event_id: eventid,
                     data_obj_id:$this.styleDef.form.objId,
                     obj_attr,
                  });
               } else {
@@ -710,7 +712,7 @@
                     class_name: '',
                     event_id: event.id,
                     event_name: '',
                     data_obj_id: '',
                     data_obj_id:"",
                     obj_attr: obj_attr,
                     prj_id: '',
                     ref_cls_id: '',
@@ -906,6 +908,7 @@
                  start_transaction: true,
                  class_id: btn.Cls_ID,
                  event_id: btn.Event.ID,
                  data_obj_id:this.styleDef.form.objId,
                  obj_attr: obj_attr,
               });
            } catch (ex) {
@@ -1045,141 +1048,122 @@
            var sql = []
            var seps = [' not in', ' in', '<>', '!=', '<=', '>=', '<', '=', '>', ' like']
            list.forEach(ls => {
               var where = ls.trim().toLowerCase()
               if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\(/, '').replace(
                  /\)$/, '')
               if (where.includes(' and ')) {
               var where = ls.trim()
               if (where.startsWith('(') && where.endsWith(')')) where = where.replace(/^\(/, '').replace(/\)$/, '')
               if (where.toLowerCase().includes(' and ')) {
                  // 二级and放在第一级数组中
                  where.split(' and ').forEach(li => {
                  where.split(/ and /i).forEach(li => {
                     var l = li.trim()
                     if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(
                        /\)$/, '')
                     if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(/\)$/, '')
                     var sep = ''
                     for (var i = 0; i < seps.length; i++) {
                        if (l.includes(seps[i])) {
                        if (l.toLowerCase().includes(seps[i])) {
                           sep = seps[i]
                           break
                        }
                     }
                     if (sep) {
                        var values = l.split(sep)
                        var values = l.split(new RegExp(sep, 'i'))
                        var field = values[0]?.trim().replace(/^\[/, '').replace(/\]$/, '')
                        var value = ''
                        var op = sep.trim()
                        if ([' in', ' not in'].includes(sep) && values[1].includes('select ') &&
                           values[1].includes(' from ')) {
                           value = l.replace(field, '').replace(/^\s*(in|not in)\s*/, '').trim()
                           if (value.startsWith('(') && value.endsWith(')')) value = value
                              .replace(/^\(/, '').replace(/\)$/, '').trim()
                        } else {
                        if ([' in', ' not in'].includes(sep) && values[1]?.toLowerCase().includes('select ') && values[1]?.toLowerCase().includes(' from ')) {
                           value = l.replace(field, '').replace(/^\s*(in|not in)\s*/i, '').trim()
                           if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '').replace(/\)$/, '').trim()
                        }
                        else {
                           value = values[1]?.trim().replace(/^\'/, '').replace(/\'$/, '')
                           if (['in', 'not in'].includes(op)) {
                              value = value.replace(/^\(/, '').replace(/\)$/, '')
                              value = value.split(',').map(v => v.trim().replace(/^\'/, '')
                                 .replace(/\'$/, ''))
                              value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/, ''))
                           }
                        }
                        sql.push([{
                           field,
                           value,
                           op
                        }])
                        sql.push([{ field, value, op }])
                     }
                  })
               } else if (where.includes(' or ')) {
               }
               else if (where.toLowerCase().includes(' or ')) {
                  // 二级or放在第二级同一组数组中
                  var s = []
                  where.split(' or ').forEach(li => {
                  where.split(/ or /i).forEach(li => {
                     var l = li.trim()
                     if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(
                        /\)$/, '')
                     if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(/\)$/, '')
                     var sep = ''
                     for (var i = 0; i < seps.length; i++) {
                        if (l.includes(seps[i])) {
                        if (l.toLowerCase().includes(seps[i])) {
                           sep = seps[i]
                           break
                        }
                     }
                     if (sep) {
                        var values = l.split(sep)
                        var values = l.split(new RegExp(sep, 'i'))
                        var field = values[0]?.trim().replace(/^\[/, '').replace(/\]$/, '')
                        var value = ''
                        var op = sep.trim()
                        if ([' in', ' not in'].includes(sep) && values[1].includes('select ') &&
                           values[1].includes(' from ')) {
                           value = l.replace(field, '').replace(/^\s*(in|not in)\s*/, '').trim()
                           if (value.startsWith('(') && value.endsWith(')')) value = value
                              .replace(/^\(/, '').replace(/\)$/, '').trim()
                        } else {
                        if ([' in', ' not in'].includes(sep) && values[1]?.toLowerCase().includes('select ') && values[1]?.toLowerCase().includes(' from ')) {
                           value = l.replace(field, '').replace(/^\s*(in|not in)\s*/i, '').trim()
                           if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '').replace(/\)$/, '').trim()
                        }
                        else {
                           value = values[1]?.trim().replace(/^\'/, '').replace(/\'$/, '')
                           if (['in', 'not in'].includes(op)) {
                              value = value.replace(/^\(/, '').replace(/\)$/, '')
                              value = value.split(',').map(v => v.trim().replace(/^\'/, '')
                                 .replace(/\'$/, ''))
                              value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/, ''))
                           }
                        }
                        sql.push([{
                           field,
                           value,
                           op
                        }])
                        sql.push([{ field, value, op }])
                     }
                  })
                  sql.push(s)
               } else {
               }
               else {
                  var li = where
                  // 单一查询条件直接放在第一级数组中
                  var l = li.trim()
                  if (l.startsWith('(') && l.endsWith(')')) l = l.replace(/^\(/, '').replace(/\)$/, '')
                  var sep = ''
                  for (var i = 0; i < seps.length; i++) {
                     if (l.includes(seps[i])) {
                     if (l.toLowerCase().includes(seps[i])) {
                        sep = seps[i]
                        break
                     }
                  }
                  if (sep) {
                     var values = l.split(sep)
                     var values = l.split(new RegExp(sep,'i'))
                     var field = values[0]?.trim().replace(/^\[/, '').replace(/\]$/, '')
                     var value = ''
                     var op = sep.trim()
                     if ([' in', ' not in'].includes(sep) && values[1].includes('select ') && values[1]
                        .includes(' from ')) {
                        value = l.replace(field, '').replace(/^\s*(in|not in)\s*/, '').trim()
                        if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '')
                           .replace(/\)$/, '').trim()
                     } else {
                     if ([' in', ' not in'].includes(sep) && values[1]?.toLowerCase().includes('select ') && values[1]?.toLowerCase().includes(' from ')) {
                        value = l.replace(field, '').replace(/^\s*(in|not in)\s*/i, '').trim()
                        if (value.startsWith('(') && value.endsWith(')')) value = value.replace(/^\(/, '').replace(/\)$/, '').trim()
                     }
                     else {
                        value = values[1]?.trim().replace(/^\'/, '').replace(/\'$/, '')
                        if (['in', 'not in'].includes(op)) {
                           value = value.replace(/^\(/, '').replace(/\)$/, '')
                           value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/,
                              ''))
                           value = value.split(',').map(v => v.trim().replace(/^\'/, '').replace(/\'$/, ''))
                        }
                     }
                     sql.push([{
                        field,
                        value,
                        op
                     }])
                     sql.push([{ field, value, op }])
                  }
               }
            })
            if (sql.length > 0)
               return Base64.encode(JSON.stringify({
                  model: 1,
                  condition: sql
               }))
            else
               return ''
            return ''
         },
         cancel(e) { //取消
            var eventChannel = this.$scope.eventChannel;
            // const eventChannel = this.getOpenerEventChannel();