fix (接口自动化): 场景变量优化处理

--bug=1007127 --user=赵勇 【github#6706】添加场景变量时,场景变量名称必填项未校验 https://www.tapd.cn/55049933/s/1056658
This commit is contained in:
fit2-zhao 2021-10-19 14:44:26 +08:00 committed by fit2-zhao
parent e1b0467752
commit 67aa4e44a0
5 changed files with 102 additions and 71 deletions

View File

@ -2,7 +2,7 @@
<div> <div>
<el-form :model="editData" label-position="right" label-width="80px" size="small" ref="form" :rules="rules"> <el-form :model="editData" label-position="right" label-width="80px" size="small" ref="form" :rules="rules">
<el-form-item :label="$t('api_test.variable_name')" prop="name"> <el-form-item :label="$t('api_test.variable_name')" prop="name">
<el-input v-model="editData.name" :placeholder="$t('api_test.variable_name')" ref="nameInput"></el-input> <el-input v-model="editData.name" :placeholder="$t('api_test.variable_name')" ref="nameInput"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('commons.description')" prop="description"> <el-form-item :label="$t('commons.description')" prop="description">
@ -10,12 +10,13 @@
v-model="editData.description" v-model="editData.description"
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 10}" :autosize="{ minRows: 2, maxRows: 10}"
:rows="2" size="small"/> :rows="2" size="small" :disabled="disabled"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('api_test.value')" prop="value"> <el-form-item :label="$t('api_test.value')" prop="value">
<el-col class="item"> <el-col class="item">
<el-autocomplete <el-autocomplete
:disabled="disabled"
size="small" size="small"
:placeholder="$t('api_test.value')" :placeholder="$t('api_test.value')"
style="width: 100%;" style="width: 100%;"
@ -51,6 +52,11 @@
}, },
} }
}, },
computed:{
disabled() {
return !(this.editData.name && this.editData.name !=="");
}
},
methods: { methods: {
advanced() { advanced() {
this.$refs.variableAdvance.open(); this.$refs.variableAdvance.open();
@ -66,8 +72,8 @@
}; };
}, },
funcSearch(queryString, cb) { funcSearch(queryString, cb) {
let funcs = MOCKJS_FUNC.concat(JMETER_FUNC); let func = MOCKJS_FUNC.concat(JMETER_FUNC);
let results = queryString ? funcs.filter(this.funcFilter(queryString)) : funcs; let results = queryString ? func.filter(this.funcFilter(queryString)) : func;
// callback // callback
cb(results); cb(results);
}, },

View File

@ -9,41 +9,46 @@
v-model="editData.description" v-model="editData.description"
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 10}" :autosize="{ minRows: 2, maxRows: 10}"
:rows="2" size="small"/> :rows="2" size="small" :disabled="disabled"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('variables.start')" prop="startNumber"> <el-form-item :label="$t('variables.start')" prop="startNumber">
<el-input-number size="small" v-model="editData.startNumber" placeholder="0" style="width: 100%" :max="1000*10000000" :min="0"/> <el-input-number :disabled="disabled" size="small" v-model="editData.startNumber" placeholder="0" style="width: 100%" :max="1000*10000000" :min="0"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('variables.end')" prop="endNumber"> <el-form-item :label="$t('variables.end')" prop="endNumber">
<el-input-number size="small" v-model="editData.endNumber" placeholder="10" style="width: 100%" :max="1000*10000000" :min="0"/> <el-input-number :disabled="disabled" size="small" v-model="editData.endNumber" placeholder="10" style="width: 100%" :max="1000*10000000" :min="0"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('variables.increment')" prop="increment"> <el-form-item :label="$t('variables.increment')" prop="increment">
<el-input-number size="small" v-model="editData.increment" placeholder="1" style="width: 100%" :max="1000*10000000" :min="0"/> <el-input-number :disabled="disabled" size="small" v-model="editData.increment" placeholder="1" style="width: 100%" :max="1000*10000000" :min="0"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('variables.format')" prop="value"> <el-form-item :label="$t('variables.format')" prop="value">
<el-input v-model="editData.value" :placeholder="$t('variables.counter_info')"></el-input> <el-input :disabled="disabled" v-model="editData.value" :placeholder="$t('variables.counter_info')"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script> <script>
export default { export default {
name: "MsEditCounter", name: "MsEditCounter",
components: {}, components: {},
props: { props: {
editData: {}, editData: {},
}, },
data() { computed: {
return { disabled() {
rules: { return !(this.editData.name && this.editData.name !== "");
name: [ }
{required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'}, },
], data() {
}, return {
} rules: {
}, name: [
} {required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'},
],
},
}
},
}
</script> </script>
<style scoped> <style scoped>

View File

@ -8,6 +8,7 @@
<el-input class="ms-http-textarea" <el-input class="ms-http-textarea"
v-model="editData.description" v-model="editData.description"
type="textarea" type="textarea"
:disabled="disabled"
:placeholder="$t('commons.input_content')" :placeholder="$t('commons.input_content')"
:autosize="{ minRows: 2, maxRows: 10}" :autosize="{ minRows: 2, maxRows: 10}"
:rows="2" size="small"/> :rows="2" size="small"/>
@ -31,6 +32,7 @@
size="small" size="small"
style="width: 100%" style="width: 100%"
v-model="editData.encoding" v-model="editData.encoding"
:disabled="disabled"
:fetch-suggestions="querySearch" :fetch-suggestions="querySearch"
:placeholder="$t('commons.input_content')" :placeholder="$t('commons.input_content')"
></el-autocomplete> ></el-autocomplete>
@ -41,7 +43,7 @@
<span>{{$t('variables.delimiter')}}</span> <span>{{$t('variables.delimiter')}}</span>
</el-col> </el-col>
<el-col :span="19"> <el-col :span="19">
<el-input v-model="editData.delimiter" size="small"/> <el-input v-model="editData.delimiter" size="small" :disabled="disabled"/>
</el-col> </el-col>
</el-row> </el-row>
<el-row style="margin-top: 10px"> <el-row style="margin-top: 10px">
@ -49,7 +51,7 @@
<span>{{$t('variables.quoted_data')}}</span> <span>{{$t('variables.quoted_data')}}</span>
</el-col> </el-col>
<el-col :span="19"> <el-col :span="19">
<el-select v-model="editData.quotedData" size="small"> <el-select v-model="editData.quotedData" size="small" :disabled="disabled">
<el-option label="True" :value="true"/> <el-option label="True" :value="true"/>
<el-option label="False" :value="false"/> <el-option label="False" :value="false"/>
</el-select> </el-select>
@ -94,7 +96,7 @@
editFlag: false, editFlag: false,
previewData: [], previewData: [],
columns: [], columns: [],
allDatas: [], allData: [],
rules: { rules: {
name: [ name: [
{required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'}, {required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'},
@ -102,26 +104,31 @@
}, },
} }
}, },
computed: {
disabled() {
return !(this.editData.name && this.editData.name !== "");
}
},
methods: { methods: {
complete(results) { complete(results) {
if (results.errors && results.errors.length > 0) { if (results.errors && results.errors.length > 0) {
this.$error(results.errors); this.$error(results.errors);
return; return;
} }
if (this.allDatas) { if (this.allData) {
this.columns = this.allDatas[0]; this.columns = this.allData[0];
this.allDatas.splice(0, 1); this.allData.splice(0, 1);
this.previewData = this.allDatas; this.previewData = this.allData;
} }
this.loading = false; this.loading = false;
}, },
step(results, parser) { step(results, parser) {
this.allDatas.push(results.data); this.allData.push(results.data);
}, },
handleClick() { handleClick() {
let config = {complete: this.complete, step: this.step, delimiter: this.editData.delimiter ? this.editData.delimiter : ","}; let config = {complete: this.complete, step: this.step, delimiter: this.editData.delimiter ? this.editData.delimiter : ","};
this.allDatas = []; this.allData = [];
// //
if (this.editData.files && this.editData.files.length > 0 && this.editData.files[0].file) { if (this.editData.files && this.editData.files.length > 0 && this.editData.files[0].file) {
this.loading = true; this.loading = true;

View File

@ -9,32 +9,39 @@
v-model="editData.description" v-model="editData.description"
type="textarea" type="textarea"
:autosize="{ minRows: 2, maxRows: 10}" :autosize="{ minRows: 2, maxRows: 10}"
:rows="2" size="small"/> :rows="2" size="small"
:disabled="disabled"
/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('api_test.value')" prop="value"> <el-form-item :label="$t('api_test.value')" prop="value">
<el-input v-model="editData.value" placeholder="列表数据用,分隔"></el-input> <el-input v-model="editData.value" :disabled="disabled" placeholder="列表数据用,分隔"/>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script> <script>
export default { export default {
name: "MsEditListValue", name: "MsEditListValue",
components: {}, components: {},
props: { props: {
editData: {}, editData: {},
}, },
data() { computed: {
return { disabled() {
rules: { return !(this.editData.name && this.editData.name !== "");
name: [ }
{required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'}, },
], data() {
}, return {
} rules: {
}, name: [
} {required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'},
],
},
}
},
}
</script> </script>
<style scoped> <style scoped>

View File

@ -8,40 +8,46 @@
<el-input class="ms-http-textarea" <el-input class="ms-http-textarea"
v-model="editData.description" v-model="editData.description"
type="textarea" type="textarea"
:disabled="disabled"
:autosize="{ minRows: 2, maxRows: 10}" :autosize="{ minRows: 2, maxRows: 10}"
:rows="2" size="small"/> :rows="2" size="small"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('schema.minimum')" prop="minNumber"> <el-form-item :label="$t('schema.minimum')" prop="minNumber">
<el-input size="small" v-model="editData.minNumber" placeholder="0"/> <el-input :disabled="disabled" size="small" v-model="editData.minNumber" placeholder="0"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('schema.maximum')" prop="maxNumber"> <el-form-item :label="$t('schema.maximum')" prop="maxNumber">
<el-input size="small" v-model="editData.maxNumber" placeholder="10"/> <el-input :disabled="disabled" size="small" v-model="editData.maxNumber" placeholder="10"/>
</el-form-item> </el-form-item>
<el-form-item :label="$t('variables.format')" prop="value"> <el-form-item :label="$t('variables.format')" prop="value">
<el-input v-model="editData.value" :placeholder="$t('variables.counter_info')"></el-input> <el-input :disabled="disabled" v-model="editData.value" :placeholder="$t('variables.counter_info')"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</template> </template>
<script> <script>
export default { export default {
name: "MsEditRandom", name: "MsEditRandom",
components: {}, components: {},
props: { props: {
editData: {}, editData: {},
}, },
data() { computed: {
return { disabled() {
rules: { return !(this.editData.name && this.editData.name !== "");
name: [ }
{required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'}, },
], data() {
}, return {
} rules: {
}, name: [
} {required: true, message: this.$t('test_track.case.input_name'), trigger: 'blur'},
],
},
}
},
}
</script> </script>
<style scoped> <style scoped>