feat:http数据集参数可配

main
liu.shiyi 2 years ago
parent 8b0c75fbdf
commit ff1947927c

@ -207,7 +207,7 @@
<el-col :span="5"> <el-col :span="5">
<el-form-item <el-form-item
label="键" label="键"
:prop="'headers.'+index+'.key'" :prop="'config.headers.'+index+'.key'"
label-width="50px" label-width="50px"
:rules="rules.key" :rules="rules.key"
> >
@ -219,35 +219,12 @@
/> />
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="5">
<el-form-item
label="类型"
:prop="'headers.'+index+'.type'"
label-width="60px"
:rules="rules.type"
>
<el-select
v-model="dataForm.config.headers[index].type"
filterable
clearable
allow-create
default-first-option
placeholder="请选择类型"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5"> <el-col :span="5">
<el-form-item <el-form-item
label="值" label="值"
:prop="dataForm.config.headers[index].value" :prop="'config.headers.'+index+'.value'"
label-width="50px" label-width="50px"
:rules="rules.value"
> >
<el-input <el-input
v-model="dataForm.config.headers[index].value" v-model="dataForm.config.headers[index].value"
@ -290,7 +267,7 @@
<el-col :span="7"> <el-col :span="7">
<el-form-item <el-form-item
label="键" label="键"
:prop="'params.'+index+'.key'" :prop="'config.params.'+index+'.key'"
label-width="50px" label-width="50px"
:rules="rules.key" :rules="rules.key"
> >
@ -305,8 +282,9 @@
<el-col :span="7"> <el-col :span="7">
<el-form-item <el-form-item
label="值" label="值"
:prop="dataForm.config.params[index].value" :prop="'config.params.'+index+'.value'"
label-width="50px" label-width="50px"
:rules="rules.value"
> >
<el-input <el-input
v-model="dataForm.config.params[index].value" v-model="dataForm.config.params[index].value"
@ -678,6 +656,7 @@ export default {
headers: [], headers: [],
params: [], params: [],
body: '', body: '',
paramsList:[],
requestScript: '', requestScript: '',
responseScript: '' responseScript: ''
} }
@ -691,7 +670,7 @@ export default {
{ required: true, message: '请选择调用方式', trigger: 'change' } { required: true, message: '请选择调用方式', trigger: 'change' }
], ],
key: [{ required: true, message: '键不能为空', trigger: 'blur' }], key: [{ required: true, message: '键不能为空', trigger: 'blur' }],
type: [{ required: true, message: '类型不能为空', trigger: 'blur' }], value: [{ required: true, message: '不能为空', trigger: 'blur' }],
'config.method': [{ required: true, message: '请求类型不能为空', trigger: 'blur' }], 'config.method': [{ required: true, message: '请求类型不能为空', trigger: 'blur' }],
'config.url': [ 'config.url': [
{ required: true, message: '请求地址不能为空', trigger: 'blur' }, { required: true, message: '请求地址不能为空', trigger: 'blur' },
@ -755,7 +734,9 @@ export default {
const { script, paramsList, fieldDesc, fieldList } = config const { script, paramsList, fieldDesc, fieldList } = config
this.dataForm = { id, name, typeId, remark, datasetType, moduleCode, editable, sourceId, config: { ...config } } this.dataForm = { id, name, typeId, remark, datasetType, moduleCode, editable, sourceId, config: { ...config } }
this.fieldDesc = fieldDesc this.fieldDesc = fieldDesc
console.log(fieldList)
this.outputFieldList = fieldList this.outputFieldList = fieldList
console.log(this.outputFieldList)
this.scriptExecute(true) this.scriptExecute(true)
}) })
} }
@ -766,20 +747,20 @@ export default {
// this.$message.error('') // this.$message.error('')
// return // return
// } // }
// if (!this.outputFieldList.length) { if (!this.outputFieldList.length) {
// this.$message.warning('') this.$message.warning('该执行脚本未生成输出字段,请重新检查')
// return return
// } }
// if (!nochecktosave) { if (!nochecktosave) {
// const temp = this.outputFieldList.some(item => { const temp = this.outputFieldList.some(item => {
// return item.fieldDesc === '' || !item.hasOwnProperty('fieldDesc') return item.fieldDesc === '' || !item.hasOwnProperty('fieldDesc')
// }) // true- }) // true-
// if (temp) { if (temp) {
// this.$refs.fieldFillDialog.open() this.$refs.fieldFillDialog.open()
// // this.fieldDescVisible = true // this.fieldDescVisible = true
// return return
// } }
// } }
requestType: '', requestType: '',
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
@ -807,7 +788,7 @@ export default {
requestType: dataForm.config.requestType, requestType: dataForm.config.requestType,
fieldDesc, fieldDesc,
paramsList: dataForm.config.paramsList, paramsList: dataForm.config.paramsList,
fieldList: outputFieldList fieldList: this.outputFieldList
} }
} }
const datasetSave = this.dataForm.id === '' ? datasetAdd : datasetUpdate const datasetSave = this.dataForm.id === '' ? datasetAdd : datasetUpdate
@ -907,24 +888,78 @@ export default {
}) })
this.fieldDesc = fieldDesc this.fieldDesc = fieldDesc
}, },
//
getPramsList(){
const reg = /\${(.*?)}/g
const paramNames1 = this.getValName(this.dataForm.config.url)
const paramNames2 = this.dataForm.config?.headers.map(item=>{
const nameList = this.getValName(item.value)
if (nameList && nameList.length){
return nameList[0]
}
})
const paramNames3 = this.dataForm.config?.params.map(item=>{
const nameList = this.getValName(item.value)
if (nameList && nameList.length){
return nameList[0]
}
})
const paramNames4=this.getValName(this.dataForm.config.body)
const paramNames = new Set([...paramNames1,...paramNames2,...paramNames3,...paramNames4])
const names = this.dataForm.config?.paramsList?.map(item => item.name)
const params = []
paramNames.forEach(name => {
if (names.includes(name)) {
const param = this.dataForm.config?.paramsList?.find(item => item.name === name)
params.push(param)
} else {
params.push({
name: name,
type: 'String',
value: '',
status: 1,
require: 0,
remark: ''
})
}
})
this.dataForm.config.paramsList = _.cloneDeep(params)
},
// ${}
getValName(str){
const reg = /\$\{(.+?)\}/;
const reg_g = /\$\{(.+?)\}/g;
const result = str.match(reg_g);
const list = []
if (result){
for (let i = 0; i < result.length; i++) {
const item = result[i]
list.push(item.match(reg)[1])
}
}
return list
},
// //
scriptExecute (isInit = false) { scriptExecute (isInit = false) {
this.getPramsList()
// //
if (this.dataForm.config.requestType === 'front') { if (this.dataForm.config.requestType === 'front') {
if (this.dataForm.config.paramsList && this.dataForm.config.paramsList.length){
}
axiosFormatting({ ...this.dataForm.config }).then((res) => { axiosFormatting({ ...this.dataForm.config }).then((res) => {
console.log(res) this.dataPreviewList = res.list
}) })
} else { } else {
// //
const script = JSON.stringify(this.dataForm.config) const script = JSON.stringify(this.dataForm.config)
console.log(this.dataForm.config)
const executeParams = { const executeParams = {
script, script,
params: this.dataForm.paramsList, params: this.dataForm.paramsList,
dataSetType: 'http' dataSetType: 'http'
} }
datasetExecuteTest(executeParams).then(res => { datasetExecuteTest(executeParams).then(res => {
this.dataPreviewList = res
}).catch((e) => { }).catch((e) => {
}) })

Loading…
Cancel
Save