mirror of
https://github.com/Ssl1S/json-schema-editor-vue.git
synced 2025-12-30 01:37:55 +08:00
feat: (2.0.1) 对数字和字符串增加枚举属性
This commit is contained in:
@@ -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]
|
||||
}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user