fix: 修复JS数据集动态参数自动填充的问题,以及处理参数替换异常的情况

main
wu.jian2 1 year ago
parent e88d37b2cc
commit 2a1ff039fb

@ -171,6 +171,11 @@ export default {
default: () => []
}
},
computed: {
innerParamsList () {
return cloneDeep(this.paramsList)
}
},
data () {
return {
dialogVisible: false
@ -187,7 +192,7 @@ export default {
this.dialogVisible = false
},
addParam () {
this.paramsList.push({
this.innerParamsList.push({
name: '',
type: '',
value: '',
@ -197,10 +202,10 @@ export default {
})
},
delRow (index) {
this.paramsList.splice(index, 1)
this.innerParamsList.splice(index, 1)
},
checkParamsName (value) {
const checkList = this.paramsList.filter(item => item.fieldName === value.name)
const checkList = this.innerParamsList.filter(item => item.fieldName === value.name)
if (checkList.length) {
this.$message.warning('参数名称不可以与字段名相同!')
value.name = ''
@ -210,7 +215,7 @@ export default {
this.dialogVisible = false
},
confirm () {
this.$emit('saveParams', cloneDeep(this.paramsList))
this.$emit('saveParams', this.innerParamsList)
this.dialogVisible = false
}
}

@ -432,6 +432,7 @@ export default {
})
}
return {
autoFill: true,
dataForm: {
id: '',
name: '',
@ -642,7 +643,9 @@ export default {
try {
const scriptAfterReplacement = javascript.replace(/\${(.*?)}/g, (match, p) => {
const value = this.dataForm.config.paramsList.find(param => param.name === p).value
if (!isNaN(value)) {
if (value === null || value === undefined || value === '') {
return "''"
} else if (!isNaN(value)) {
return value
} else {
return `'${value}'`
@ -654,8 +657,8 @@ export default {
this.passTest = false
const javascriptParams = javascript.match(/\${(.*?)}/g)
// ${}
let paramList = []
if (javascriptParams) {
const paramList = []
javascriptParams.forEach(item => {
const name = item.replace(/\${(.*?)}/g, '$1')
const param = this.dataForm.config.paramsList.find(param => param.name === name)
@ -664,24 +667,12 @@ export default {
paramList.push(name)
}
})
this.$confirm(`脚本中的参数${paramList.join(',')}不存在,是否添加?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
customClass: 'bs-el-message-box',
type: 'warning'
}).then(() => {
paramList.forEach(name => {
this.dataForm.config.paramsList.push({
name,
type: '',
value: '',
status: 1,
require: 0,
remark: ''
})
})
}).catch(() => {})
if (this.autoFill && paramList.length > 0) {
this.addParams(paramList)
paramList = []
}
} else {
console.info(error)
this.$message.error(`脚本执行错误,请检查脚本,具体错误:${error}`)
}
return
@ -762,6 +753,19 @@ export default {
this.$message.error('请填写脚本')
}
},
addParams (paramList) {
this.$refs.paramsSettingDialog.open()
paramList.forEach(name => {
this.dataForm.config.paramsList.push({
name,
type: '',
value: '',
status: 1,
require: 0,
remark: ''
})
})
},
//
// toExecute () {
// if (this.dataForm.config.paramsList.length) {

@ -156,8 +156,9 @@ export default {
try {
const scriptAfterReplacement = res.data.script.replace(/\${(.*?)}/g, (match, p) => {
const value = this.config.dataSource?.params[p]
if (!isNaN(value)) {
if (value === null || value === undefined || value === '') {
return "''"
} else if (!isNaN(value)) {
return value || p
} else {
return `'${value}' || '${p}'`
@ -224,7 +225,9 @@ export default {
try {
const scriptAfterReplacement = res.data.script.replace(/\${(.*?)}/g, (match, p) => {
const value = this.config.dataSource?.params[p]
if (!isNaN(value)) {
if (value === null || value === undefined || value === '') {
return "''"
} else if (!isNaN(value)) {
return value || p
} else {
return `'${value}' || '${p}'`

Loading…
Cancel
Save