|
|
|
@ -207,7 +207,7 @@
|
|
|
|
|
<el-col :span="5">
|
|
|
|
|
<el-form-item
|
|
|
|
|
label="键"
|
|
|
|
|
:prop="'headers.'+index+'.key'"
|
|
|
|
|
:prop="'config.headers.'+index+'.key'"
|
|
|
|
|
label-width="50px"
|
|
|
|
|
:rules="rules.key"
|
|
|
|
|
>
|
|
|
|
@ -219,35 +219,12 @@
|
|
|
|
|
/>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</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-form-item
|
|
|
|
|
label="值"
|
|
|
|
|
:prop="dataForm.config.headers[index].value"
|
|
|
|
|
:prop="'config.headers.'+index+'.value'"
|
|
|
|
|
label-width="50px"
|
|
|
|
|
:rules="rules.value"
|
|
|
|
|
>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="dataForm.config.headers[index].value"
|
|
|
|
@ -290,7 +267,7 @@
|
|
|
|
|
<el-col :span="7">
|
|
|
|
|
<el-form-item
|
|
|
|
|
label="键"
|
|
|
|
|
:prop="'params.'+index+'.key'"
|
|
|
|
|
:prop="'config.params.'+index+'.key'"
|
|
|
|
|
label-width="50px"
|
|
|
|
|
:rules="rules.key"
|
|
|
|
|
>
|
|
|
|
@ -305,8 +282,9 @@
|
|
|
|
|
<el-col :span="7">
|
|
|
|
|
<el-form-item
|
|
|
|
|
label="值"
|
|
|
|
|
:prop="dataForm.config.params[index].value"
|
|
|
|
|
:prop="'config.params.'+index+'.value'"
|
|
|
|
|
label-width="50px"
|
|
|
|
|
:rules="rules.value"
|
|
|
|
|
>
|
|
|
|
|
<el-input
|
|
|
|
|
v-model="dataForm.config.params[index].value"
|
|
|
|
@ -678,6 +656,7 @@ export default {
|
|
|
|
|
headers: [],
|
|
|
|
|
params: [],
|
|
|
|
|
body: '',
|
|
|
|
|
paramsList:[],
|
|
|
|
|
requestScript: '',
|
|
|
|
|
responseScript: ''
|
|
|
|
|
}
|
|
|
|
@ -691,7 +670,7 @@ export default {
|
|
|
|
|
{ required: true, message: '请选择调用方式', trigger: 'change' }
|
|
|
|
|
],
|
|
|
|
|
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.url': [
|
|
|
|
|
{ required: true, message: '请求地址不能为空', trigger: 'blur' },
|
|
|
|
@ -755,7 +734,9 @@ export default {
|
|
|
|
|
const { script, paramsList, fieldDesc, fieldList } = config
|
|
|
|
|
this.dataForm = { id, name, typeId, remark, datasetType, moduleCode, editable, sourceId, config: { ...config } }
|
|
|
|
|
this.fieldDesc = fieldDesc
|
|
|
|
|
console.log(fieldList)
|
|
|
|
|
this.outputFieldList = fieldList
|
|
|
|
|
console.log(this.outputFieldList)
|
|
|
|
|
this.scriptExecute(true)
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
@ -766,20 +747,20 @@ export default {
|
|
|
|
|
// this.$message.error('请确保脚本不为空且执行通过')
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// if (!this.outputFieldList.length) {
|
|
|
|
|
// this.$message.warning('该执行脚本未生成输出字段,请重新检查')
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// if (!nochecktosave) {
|
|
|
|
|
// const temp = this.outputFieldList.some(item => {
|
|
|
|
|
// return item.fieldDesc === '' || !item.hasOwnProperty('fieldDesc')
|
|
|
|
|
// }) // true-存在为空
|
|
|
|
|
// if (temp) {
|
|
|
|
|
// this.$refs.fieldFillDialog.open()
|
|
|
|
|
// // this.fieldDescVisible = true
|
|
|
|
|
// return
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
if (!this.outputFieldList.length) {
|
|
|
|
|
this.$message.warning('该执行脚本未生成输出字段,请重新检查')
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
if (!nochecktosave) {
|
|
|
|
|
const temp = this.outputFieldList.some(item => {
|
|
|
|
|
return item.fieldDesc === '' || !item.hasOwnProperty('fieldDesc')
|
|
|
|
|
}) // true-存在为空
|
|
|
|
|
if (temp) {
|
|
|
|
|
this.$refs.fieldFillDialog.open()
|
|
|
|
|
// this.fieldDescVisible = true
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
requestType: '',
|
|
|
|
|
this.$refs[formName].validate((valid) => {
|
|
|
|
|
if (valid) {
|
|
|
|
@ -807,7 +788,7 @@ export default {
|
|
|
|
|
requestType: dataForm.config.requestType,
|
|
|
|
|
fieldDesc,
|
|
|
|
|
paramsList: dataForm.config.paramsList,
|
|
|
|
|
fieldList: outputFieldList
|
|
|
|
|
fieldList: this.outputFieldList
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
const datasetSave = this.dataForm.id === '' ? datasetAdd : datasetUpdate
|
|
|
|
@ -907,24 +888,78 @@ export default {
|
|
|
|
|
})
|
|
|
|
|
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) {
|
|
|
|
|
this.getPramsList()
|
|
|
|
|
// 如果是前端代理,则自行组装接口及参数并调接口
|
|
|
|
|
if (this.dataForm.config.requestType === 'front') {
|
|
|
|
|
if (this.dataForm.config.paramsList && this.dataForm.config.paramsList.length){
|
|
|
|
|
}
|
|
|
|
|
axiosFormatting({ ...this.dataForm.config }).then((res) => {
|
|
|
|
|
console.log(res)
|
|
|
|
|
this.dataPreviewList = res.list
|
|
|
|
|
})
|
|
|
|
|
} else {
|
|
|
|
|
// 如果是后端代理,则将配置传到后端
|
|
|
|
|
const script = JSON.stringify(this.dataForm.config)
|
|
|
|
|
console.log(this.dataForm.config)
|
|
|
|
|
const executeParams = {
|
|
|
|
|
script,
|
|
|
|
|
params: this.dataForm.paramsList,
|
|
|
|
|
dataSetType: 'http'
|
|
|
|
|
}
|
|
|
|
|
datasetExecuteTest(executeParams).then(res => {
|
|
|
|
|
|
|
|
|
|
this.dataPreviewList = res
|
|
|
|
|
}).catch((e) => {
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|