zentaopms/module/api/js/create.js
2023-05-16 10:47:08 +08:00

87 lines
2.1 KiB
JavaScript

var app = new Vue({
el: '#apiApp',
data: {
header: [],
queryP: [],
body: [],
params: "",
response: "",
defaultHeader: {field: '', required: '', desc: ''},
attrType: '',
},
created() {
this.header.push({...this.defaultHeader});
this.queryP.push({...this.defaultHeader});
},
watch: {
header: {
handler() {
this.setParams();
},
deep: true
},
queryP: {
handler() {
this.setParams();
},
deep: true
},
body: {
handler() {
this.setParams();
},
deep: true
},
attrType: {
handler() {
this.setParams()
},
deep: true
}
},
methods: {
changeAttr(val) {
this.body = val;
},
changeType(val) {
this.attrType = val
},
changeRes(val) {
val = this.filterParams(val)
this.response = JSON.stringify(val);
},
setParams() {
const header = this.filterParams(this.header)
const body = this.filterParams(this.body)
const queryP = this.filterParams(this.queryP)
const params = {
header: header,
params: body,
paramsType: this.attrType,
query: queryP,
}
this.params = JSON.stringify(params);
},
filterParams(data) {
const res = []
data.forEach(item => {
if (item.field && item.field.length > 0) {
res.push(item)
}
})
return res
},
del(data, key) {
if (data.length <= 1) {
return;
}
data.splice(key, 1);
},
add(data, key, t) {
if (t == "header" || t == 'query') {
data.splice(key + 1, 0, {...this.defaultHeader})
}
}
}
})