|
|
@@ -581,15 +581,99 @@ export default {
|
|
|
formParams = this.$refs['searchForm'].getSearcFormData() || {}
|
|
|
}
|
|
|
const responseData = JSON.parse(JSON.stringify(this.template))
|
|
|
-
|
|
|
responseData.datasetKey = this.dataTemplate.datasetKey
|
|
|
responseData.unique = this.pkKey
|
|
|
responseData['key'] = this.templateKey
|
|
|
- responseData['dynamic_params'] = this.dynamicParams
|
|
|
+ if (this.$utils.isNotEmpty(this.dynamicParams)) {
|
|
|
+ formParams = this.getSearcFormData(this.dynamicParams)
|
|
|
+ }
|
|
|
formParams['response_data'] = JSON.stringify(responseData)
|
|
|
formParams['filter_condition_key'] = this.filterConditionKey || ''
|
|
|
return ActionUtils.formatParams(formParams)
|
|
|
},
|
|
|
+ getSearcFormData(obj) {
|
|
|
+ const params = {}
|
|
|
+ const nameParams = {}
|
|
|
+ const datePrefix = 'daterange-prefix'
|
|
|
+ const format = {}
|
|
|
+ Object.keys(obj).forEach((t) => {
|
|
|
+ params[`Q^${t}^SL`] = obj[t]
|
|
|
+ })
|
|
|
+ // 剔除params里相同字段既有日期的筛选条件,又有重复的模糊查询条件,只保留日期的
|
|
|
+ for (const i of Object.keys(params)) {
|
|
|
+ const slic = i.slice(2)
|
|
|
+ const name = slic.substring(0, slic.indexOf('^'))
|
|
|
+ const hadName = Object.keys(params).filter((item) => {
|
|
|
+ return item.indexOf(name) > -1
|
|
|
+ })
|
|
|
+ if (name && hadName.length > 2) {
|
|
|
+ delete params[`Q^${name}^SL`]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const formattedForm = {
|
|
|
+ arg: {
|
|
|
+ relation: 'AND',
|
|
|
+ parameters: []
|
|
|
+ }
|
|
|
+ }
|
|
|
+ Object.keys(params).forEach((v) => {
|
|
|
+ if (v && v.indexOf(datePrefix) === -1) {
|
|
|
+ const val = format[v] ? format[v](params[v], v) : params[v]
|
|
|
+ if (this.$utils.isNotEmpty(val)) {
|
|
|
+ const key = nameParams[v] || v
|
|
|
+ if (!Array.isArray(val)) {
|
|
|
+ const valArr = val.split(',')
|
|
|
+ if (valArr.length > 1) {
|
|
|
+ const parameters = valArr.map((i) => ({
|
|
|
+ key,
|
|
|
+ value: i,
|
|
|
+ param: this.$utils.guid()
|
|
|
+ }))
|
|
|
+ formattedForm.arg.parameters.push({
|
|
|
+ relation: 'OR',
|
|
|
+ parameters
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ const o = {
|
|
|
+ relation: 'AND',
|
|
|
+ parameters: [
|
|
|
+ {
|
|
|
+ key,
|
|
|
+ value: val,
|
|
|
+ param: this.$utils.guid()
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ formattedForm.arg.parameters.push(o)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ //通用查询接口列表下拉框无法查询空字符串和NULL优化
|
|
|
+ //拷贝避免影响下拉框渲染的实际数据
|
|
|
+ const valData = JSON.parse(JSON.stringify(val))
|
|
|
+ if (val.includes('为空或NULL')) {
|
|
|
+ valData.push('为空', 'NULL')
|
|
|
+ }
|
|
|
+
|
|
|
+ const parameters = valData.map((i) => ({
|
|
|
+ key:
|
|
|
+ i === '为空'
|
|
|
+ ? 'Q^' + key.split('^')[1] + '^SIE'
|
|
|
+ : i === 'NULL'
|
|
|
+ ? 'Q^' + key.split('^')[1] + '^ISN'
|
|
|
+ : key,
|
|
|
+ value: i,
|
|
|
+ param: this.$utils.guid()
|
|
|
+ }))
|
|
|
+ formattedForm.arg.parameters.push({
|
|
|
+ relation: 'OR',
|
|
|
+ parameters
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ return formattedForm.arg.parameters.length ? formattedForm : {}
|
|
|
+ },
|
|
|
initData() {
|
|
|
if (this.multiple) {
|
|
|
this.selectData = this.getArrayValue()
|