feat: (2.0.1) 对数字和字符串增加枚举属性

This commit is contained in:
albert
2022-04-17 13:01:27 +08:00
parent ad8053cc7b
commit 0de70815a2
4 changed files with 42 additions and 8 deletions

View File

@@ -62,11 +62,11 @@
<a-col :span="8" v-for="(item,key) in advancedValue" :key="key">
<a-form-item>
<span>{{ local[key] }}</span>
<a-input-number v-model="advancedValue[key]" v-if="advancedAttr[key].type === 'integer'" style="width:100%" :placeholder="key"/>
<a-input-number v-model="advancedValue[key]" v-else-if="advancedAttr[key].type === 'number'" style="width:100%" :placeholder="key"/>
<a-input-number v-model="advancedValue[key]" v-if="advancedAttr[key].type === 'integer' || advancedAttr[key].type === 'number'" style="width:100%" :placeholder="key"/>
<span v-else-if="advancedAttr[key].type === 'boolean'" style="display:inline-block;width:100%">
<a-switch v-model="advancedValue[key]"/>
</span>
<a-textarea @blur="changeEnumValue" :value="advancedValue['enum'] && advancedValue['enum'].length && advancedValue['enum'].join('\n')" :rows="2" v-else-if="key === 'enum'" ></a-textarea>
<a-select v-else-if="advancedAttr[key].type === 'array'" v-model="advancedValue[key]" style="width:100%" :getPopupContainer="
triggerNode => {
return triggerNode.parentNode || document.body;
@@ -78,7 +78,6 @@
{{t}}
</a-select-option>
</a-select>
<a-input v-model="advancedValue[key]" v-else style="width:100%" :placeholder="key"/>
</a-form-item>
</a-col>
@@ -128,7 +127,7 @@ export default {
AButton: Button,
// eslint-disable-next-line vue/no-unused-components
AIcon: Icon,
AInput: Input,AInputNumber:InputNumber,
AInput: Input,AInputNumber:InputNumber,ATextarea: Input.TextArea,
ACheckbox: Checkbox,
ASelect: Select,
ASelectOption:Select.Option,
@@ -254,10 +253,19 @@ export default {
}
},
onChangeType() {
this.parseCustomProps()
// 删除自定义属性
this.customProps.forEach(item => {
this.$delete(this.pickValue, item.key)
});
this.customProps = [];
this.$delete(this.pickValue,'properties')
this.$delete(this.pickValue,'items')
this.$delete(this.pickValue,'required')
this.$delete(this.pickValue,'format')
this.$delete(this.pickValue,'enum')
if(this.isArray){
this.$set(this.pickValue,'items',{type:'string'})
}
@@ -268,6 +276,16 @@ export default {
onRootCheck(e){
this._deepCheck( e.target.checked,this.pickValue)
},
changeEnumValue (e) {
const pickType = this.pickValue.type
const value = e.target.value
var arr = value.split('\n')
if (arr.length === 0 || (arr.length == 1 && !arr[0])) {
this.$delete(this.advancedValue, 'enum')
} else {
this.advancedValue.enum = arr.map(item => pickType === 'string' ? item : +item)
}
},
_deepCheck(checked,node){
if(node.type === 'object' && node.properties){
checked ? this.$set(node,'required',Object.keys(node.properties)) : this.$delete(node,'required')
@@ -323,7 +341,8 @@ export default {
},
onSetting(){
this.modalVisible = true
this.advancedValue = this.advanced.value
console.info('t7', this.advanced.value, this.pickValue)
this.advancedValue = { ...this.advanced.value }
for(const k in this.advancedValue) {
if(this.pickValue[k]) this.advancedValue[k] = this.pickValue[k]
}

View File

@@ -3,7 +3,8 @@ const value = {
maximum: null,
minimum: null,
exclusiveMaximum:null,
exclusiveMinimum:null
exclusiveMinimum:null,
enum:[]
}
const attr = {
description: {
@@ -25,6 +26,10 @@ const attr = {
exclusiveMinimum:{
name:'不包含最小值',
type:'boolean'
},
enum:{
name:'枚举',
type:'array'
}
}
const wrapper = {value, attr}

View File

@@ -3,7 +3,8 @@ const value = {
maximum: null,
minimum: null,
exclusiveMaximum:null,
exclusiveMinimum:null
exclusiveMinimum:null,
enum:[]
}
const attr = {
description: {
@@ -25,6 +26,10 @@ const attr = {
exclusiveMinimum:{
name:'不包含最小值',
type:'boolean'
},
enum:{
name:'枚举',
type:'array'
}
}
const wrapper = {value, attr}

View File

@@ -3,7 +3,8 @@ const value = {
maxLength: null,
minLength: null,
pattern: null,
format:null
format:undefined,
enum:[]
}
const attr = {
description: {
@@ -26,6 +27,10 @@ const attr = {
name:'格式',
type:'array',
enums:['date','date-time','email','hostname','ipv4','ipv6','uri']
},
enum:{
name:'枚举',
type:'array'
}
}
const wrapper = {value, attr}