UNPKG

@tuoyuan/json-schema

Version:

json-schema编辑器及表单组件

2 lines (1 loc) 18.7 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),X=require("../../utils/utils.js"),Y={class:"json-schema-editor-setting-modal-content"},ee={class:"switch-box"},le={class:"switch-bar"},te={class:"item"},oe={class:"item"},ae={class:"item"},ue={class:"datatype-box"},ne={key:0,class:"enum-box"},de={key:0},re={class:"table-footer"},ie={key:1,class:"const-box"},me={key:5,class:"form-item-content"},se={key:6,class:"form-item-content"},pe={class:"layout-switch-box"},ce=e.defineComponent({__name:"setting-modal",props:e.mergeModels({data:{type:Object,required:!0},widgets:{type:Array,default:()=>[]}},{show:{type:Boolean},showModifiers:{}}),emits:e.mergeModels(["confirm","cancel"],["update:show"]),setup(B,{emit:D}){const U=e.useModel(B,"show"),g=B,O=D,I=["string","number","integer"],J={string:[{field:"default",label:"默认值",placeholder:"默认值"},{field:"minLength",label:"最小长度",placeholder:">=0",min:0,step:1,precision:0},{field:"maxLength",label:"最大长度",placeholder:">=0",min:0,step:1,precision:0},{field:"format",label:"format",placeholder:"format",options:["date","time","date-time","duration","email","idn-email","hostname","idn-hostname","ipv4","ipv6","uuid","uri","uri-reference","iri","iri-reference","uri-template","json-pointer","relative-json-pointer","regex"]},{field:"pattern",label:"pattern",placeholder:"^[A-Za-z0-9 -_]+",tooltip:"用正则表达式约束字符串"}],number:[{field:"default_number",label:"默认值",placeholder:"默认值"},{field:"minimum",label:"最小值",placeholder:"最小值"},{field:"maximum",label:"最大值",placeholder:"最大值"},{field:"multipleOf",label:"倍数",placeholder:">0"}],integer:[{field:"default_number",label:"默认值",placeholder:"默认值"},{field:"minimum",label:"最小值",placeholder:"最小值",step:1,precision:0},{field:"maximum",label:"最大值",placeholder:"最大值",step:1,precision:0},{field:"multipleOf",label:"倍数",placeholder:">0"}],boolean:[{field:"default_boolean",label:"默认值",placeholder:"默认值"}],array:[{field:"minItems",label:"最小元素个数",placeholder:">=0"},{field:"maxItems",label:"最大元素个数",placeholder:">=0"},{field:"uniqueItems",label:"元素唯一"}],object:[{field:"minProperties",label:"最小属性数量",placeholder:">=0"},{field:"maxProperties",label:"最大属性数量",placeholder:">=0"}],null:[],any:[]},o=e.ref({}),p=e.ref(""),k=e.ref(!1),b=e.ref(!1),C=e.ref("read-write"),i=e.ref({}),n=e.ref({}),m=e.ref({}),h=e.ref(!1),d=e.ref({}),N=e.ref();let E="";const L=e.computed(()=>g.widgets.filter(a=>a.dataType?a.dataType.includes(p.value):!0));e.onMounted(()=>{o.value=JSON.parse(JSON.stringify(g.data)),p.value=X.getTrueType(o.value.type),T()});const T=()=>{o.value.enum?(q(),k.value=!0):o.value.const&&(b.value=!0),o.value.readOnly?C.value="read":o.value.writeOnly&&(C.value="write"),o.value.exclusiveMinimum!=null&&(o.value.exclusiveMinimum=!0),o.value.exclusiveMaximum!=null&&(o.value.exclusiveMaximum=!0),o.value.widget&&(E=o.value.widget.type,i.value=o.value.widget),o.value.layout&&(n.value=o.value.layout),o.value.mock&&(m.value=o.value.mock)},q=()=>{o.value.enumDescriptions||(o.value.enumDescriptions={})},P=a=>{a?(o.value.enum=[],o.value.enumDescriptions={},b.value=!1,delete o.value.const):(delete o.value.enum,delete o.value.enumDescriptions)},j=a=>{a?(k.value=!1,delete o.value.enum,delete o.value.enumDescriptions):delete o.value.const},F=a=>{a==="read-write"?(delete o.value.readOnly,delete o.value.writeOnly):a==="read"?(o.value.readOnly=!0,delete o.value.writeOnly):a==="write"&&(o.value.writeOnly=!0,delete o.value.readOnly)},W=()=>{N.value=null,d.value={},h.value=!0},R=(a,l)=>{N.value=a,d.value={value:a,label:o.value.enumDescriptions[a]},h.value=!0},$=(a,l)=>{o.value.enum.splice(l,1),delete o.value.enumDescriptions[a]},z=()=>{if(d.value.value)if(N.value){const a=o.value.enum.indexOf(N.value);o.value.enum.splice(a,1,d.value.value),delete o.value.enumDescriptions[N.value],o.value.enumDescriptions[d.value.value]=d.value.label}else o.value.enum.push(d.value.value),o.value.enumDescriptions[d.value.value]=d.value.label},A=()=>{var l;const a=JSON.parse(JSON.stringify(o.value));if(a.default===""&&delete a.default,a.exclusiveMinimum&&typeof a.minimum=="number"?a.exclusiveMinimum=a.minimum:delete a.exclusiveMinimum,a.exclusiveMaximum&&typeof a.maximum=="number"?a.exclusiveMaximum=a.maximum:delete a.exclusiveMaximum,a.format||delete a.format,a.pattern||delete a.pattern,((l=a.examples)==null?void 0:l.length)===0&&delete a.examples,a.uniqueItems||delete a.uniqueItems,a.deprecated||delete a.deprecated,i.value.type||delete i.value.type,i.value.type||delete i.value.attrs,JSON.stringify(i.value)=="{}")delete a.widget;else{const s=g.widgets.find(x=>x.type===i.value.type),f=s==null?void 0:s.attrs;i.value.type!=E&&(delete i.value.attrs,f&&(i.value.attrs=f)),a.widget=JSON.parse(JSON.stringify(i.value))}n.value.span||delete n.value.span,n.value.offset||delete n.value.offset,n.value.start||delete n.value.start,n.value.end||delete n.value.end,JSON.stringify(n.value)=="{}"?delete a.layout:a.layout=JSON.parse(JSON.stringify(n.value)),m.value.mock||delete m.value.mock,m.value.show||delete m.value.show,JSON.stringify(m.value)=="{}"?delete a.mock:a.mock=JSON.parse(JSON.stringify(m.value)),O("confirm",a)},Z=()=>{O("cancel")};return(a,l)=>{const s=e.resolveComponent("a-switch"),f=e.resolveComponent("a-table-column"),x=e.resolveComponent("a-button"),G=e.resolveComponent("a-table"),V=e.resolveComponent("a-input"),r=e.resolveComponent("a-input-number"),H=e.resolveComponent("a-divider"),v=e.resolveComponent("a-option"),w=e.resolveComponent("a-select"),_=e.resolveComponent("a-checkbox"),M=e.resolveComponent("a-tooltip"),K=e.resolveComponent("a-input-tag"),c=e.resolveComponent("a-form-item"),y=e.resolveComponent("a-form"),S=e.resolveComponent("a-modal");return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createVNode(S,{visible:U.value,"onUpdate:visible":l[33]||(l[33]=t=>U.value=t),title:"高级设置",width:"800px","body-style":{"max-height":"80vh",padding:"18px"},"ok-text":"保存",onOk:A,onCancel:Z},{default:e.withCtx(()=>[e.createElementVNode("div",Y,[l[45]||(l[45]=e.createElementVNode("div",{class:"form-title"},"基础属性",-1)),e.createElementVNode("div",ee,[e.createElementVNode("div",le,[I.includes(p.value)?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("div",te,[l[39]||(l[39]=e.createElementVNode("div",{class:"label"},"枚举",-1)),e.createVNode(s,{modelValue:k.value,"onUpdate:modelValue":l[0]||(l[0]=t=>k.value=t),onChange:P},null,8,["modelValue"])]),e.createElementVNode("div",oe,[l[40]||(l[40]=e.createElementVNode("div",{class:"label"},"常量",-1)),e.createVNode(s,{modelValue:b.value,"onUpdate:modelValue":l[1]||(l[1]=t=>b.value=t),onChange:j},null,8,["modelValue"])])],64)):e.createCommentVNode("",!0),e.createElementVNode("div",ae,[l[41]||(l[41]=e.createElementVNode("div",{class:"label"},"废弃",-1)),e.createVNode(s,{modelValue:o.value.deprecated,"onUpdate:modelValue":l[2]||(l[2]=t=>o.value.deprecated=t)},null,8,["modelValue"])])]),e.createElementVNode("div",ue,[k.value?(e.openBlock(),e.createElementBlock("div",ne,[e.createVNode(G,{data:o.value.enum,bordered:{cell:!0},size:"small",pagination:{"hide-on-single-page":!1}},{columns:e.withCtx(()=>[e.createVNode(f,{title:"枚举值"},{cell:e.withCtx(({record:t})=>[e.createElementVNode("span",null,e.toDisplayString(t),1)]),_:1}),e.createVNode(f,{title:"显示值"},{cell:e.withCtx(({record:t})=>[o.value.enumDescriptions?(e.openBlock(),e.createElementBlock("span",de,e.toDisplayString(o.value.enumDescriptions[t]),1)):e.createCommentVNode("",!0)]),_:1}),e.createVNode(f,{title:"操作",width:120},{cell:e.withCtx(({record:t,rowIndex:u})=>[e.createVNode(x,{type:"text",onClick:Q=>R(t)},{default:e.withCtx(()=>l[42]||(l[42]=[e.createTextVNode("编辑")])),_:2},1032,["onClick"]),e.createVNode(x,{type:"text",status:"danger",onClick:Q=>$(t,u)},{default:e.withCtx(()=>l[43]||(l[43]=[e.createTextVNode("删除")])),_:2},1032,["onClick"])]),_:1})]),footer:e.withCtx(()=>[e.createElementVNode("div",re,[e.createVNode(x,{type:"text",onClick:l[3]||(l[3]=t=>W())},{default:e.withCtx(()=>l[44]||(l[44]=[e.createTextVNode("新增")])),_:1})])]),_:1},8,["data"])])):e.createCommentVNode("",!0),b.value?(e.openBlock(),e.createElementBlock("div",ie,[p.value==="string"?(e.openBlock(),e.createBlock(V,{key:0,modelValue:o.value.const,"onUpdate:modelValue":l[4]||(l[4]=t=>o.value.const=t),placeholder:"常量值"},null,8,["modelValue"])):e.createCommentVNode("",!0),p.value==="number"?(e.openBlock(),e.createBlock(r,{key:1,modelValue:o.value.const,"onUpdate:modelValue":l[5]||(l[5]=t=>o.value.const=t),mode:"button",placeholder:"常量值"},null,8,["modelValue"])):e.createCommentVNode("",!0),p.value==="integer"?(e.openBlock(),e.createBlock(r,{key:2,modelValue:o.value.const,"onUpdate:modelValue":l[6]||(l[6]=t=>o.value.const=t),mode:"button",placeholder:"常量值",step:1,precision:0},null,8,["modelValue"])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])]),e.createVNode(H,{margin:12}),e.createVNode(y,{model:o.value,layout:"vertical"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(J[p.value],t=>(e.openBlock(),e.createBlock(c,{key:t.field,label:t.label,field:t.field,tooltip:t.tooltip},{default:e.withCtx(()=>[t.field==="default"?(e.openBlock(),e.createBlock(V,{key:0,modelValue:o.value.default,"onUpdate:modelValue":l[7]||(l[7]=u=>o.value.default=u),placeholder:t.placeholder},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="default_number"?(e.openBlock(),e.createBlock(r,{key:1,modelValue:o.value.default,"onUpdate:modelValue":l[8]||(l[8]=u=>o.value.default=u),mode:"button",placeholder:t.placeholder},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="default_boolean"?(e.openBlock(),e.createBlock(w,{key:2,modelValue:o.value.default,"onUpdate:modelValue":l[9]||(l[9]=u=>o.value.default=u),placeholder:t.placeholder,"allow-clear":""},{default:e.withCtx(()=>[e.createVNode(v,{label:"true",value:!0}),e.createVNode(v,{label:"false",value:!1})]),_:2},1032,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="minLength"?(e.openBlock(),e.createBlock(r,{key:3,modelValue:o.value.minLength,"onUpdate:modelValue":l[10]||(l[10]=u=>o.value.minLength=u),mode:"button",placeholder:t.placeholder,min:t.min,step:t.step,precision:t.precision},null,8,["modelValue","placeholder","min","step","precision"])):e.createCommentVNode("",!0),t.field==="maxLength"?(e.openBlock(),e.createBlock(r,{key:4,modelValue:o.value.maxLength,"onUpdate:modelValue":l[11]||(l[11]=u=>o.value.maxLength=u),mode:"button",placeholder:t.placeholder,min:t.min,step:t.step,precision:t.precision},null,8,["modelValue","placeholder","min","step","precision"])):e.createCommentVNode("",!0),t.field==="minimum"?(e.openBlock(),e.createElementBlock("div",me,[e.createVNode(r,{modelValue:o.value.minimum,"onUpdate:modelValue":l[12]||(l[12]=u=>o.value.minimum=u),mode:"button",placeholder:t.placeholder,step:t.step,precision:t.precision},null,8,["modelValue","placeholder","step","precision"]),e.createVNode(M,{content:"不可等于最小值"},{default:e.withCtx(()=>[e.createVNode(_,{modelValue:o.value.exclusiveMinimum,"onUpdate:modelValue":l[13]||(l[13]=u=>o.value.exclusiveMinimum=u)},null,8,["modelValue"])]),_:1})])):e.createCommentVNode("",!0),t.field==="maximum"?(e.openBlock(),e.createElementBlock("div",se,[e.createVNode(r,{modelValue:o.value.maximum,"onUpdate:modelValue":l[14]||(l[14]=u=>o.value.maximum=u),mode:"button",placeholder:t.placeholder,step:t.step,precision:t.precision},null,8,["modelValue","placeholder","step","precision"]),e.createVNode(M,{content:"不可等于最大值"},{default:e.withCtx(()=>[e.createVNode(_,{modelValue:o.value.exclusiveMaximum,"onUpdate:modelValue":l[15]||(l[15]=u=>o.value.exclusiveMaximum=u)},null,8,["modelValue"])]),_:1})])):e.createCommentVNode("",!0),t.field==="minItems"?(e.openBlock(),e.createBlock(r,{key:7,modelValue:o.value.minItems,"onUpdate:modelValue":l[16]||(l[16]=u=>o.value.minItems=u),mode:"button",placeholder:t.placeholder,min:0,step:1,precision:0},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="maxItems"?(e.openBlock(),e.createBlock(r,{key:8,modelValue:o.value.maxItems,"onUpdate:modelValue":l[17]||(l[17]=u=>o.value.maxItems=u),mode:"button",placeholder:t.placeholder,min:0,step:1,precision:0},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="minProperties"?(e.openBlock(),e.createBlock(r,{key:9,modelValue:o.value.minProperties,"onUpdate:modelValue":l[18]||(l[18]=u=>o.value.minProperties=u),mode:"button",placeholder:t.placeholder,min:0,step:1,precision:0},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="maxProperties"?(e.openBlock(),e.createBlock(r,{key:10,modelValue:o.value.maxProperties,"onUpdate:modelValue":l[19]||(l[19]=u=>o.value.maxProperties=u),mode:"button",placeholder:t.placeholder,min:0,step:1,precision:0},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="multipleOf"?(e.openBlock(),e.createBlock(r,{key:11,modelValue:o.value.multipleOf,"onUpdate:modelValue":l[20]||(l[20]=u=>o.value.multipleOf=u),mode:"button",placeholder:t.placeholder,min:0},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="format"?(e.openBlock(),e.createBlock(w,{key:12,modelValue:o.value.format,"onUpdate:modelValue":l[21]||(l[21]=u=>o.value.format=u),placeholder:"format","allow-clear":"","trigger-props":{contentClass:"json-schema-editor-select"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,u=>(e.openBlock(),e.createBlock(v,{key:u,label:u,value:u},null,8,["label","value"]))),128))]),_:2},1032,["modelValue"])):e.createCommentVNode("",!0),t.field==="pattern"?(e.openBlock(),e.createBlock(V,{key:13,modelValue:o.value.pattern,"onUpdate:modelValue":l[22]||(l[22]=u=>o.value.pattern=u),placeholder:t.placeholder},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="examples"?(e.openBlock(),e.createBlock(K,{key:14,modelValue:o.value.examples,"onUpdate:modelValue":l[23]||(l[23]=u=>o.value.examples=u),placeholder:t.placeholder},null,8,["modelValue","placeholder"])):e.createCommentVNode("",!0),t.field==="uniqueItems"?(e.openBlock(),e.createBlock(s,{key:15,modelValue:o.value.uniqueItems,"onUpdate:modelValue":l[24]||(l[24]=u=>o.value.uniqueItems=u)},null,8,["modelValue"])):e.createCommentVNode("",!0),t.field==="read_write"?(e.openBlock(),e.createBlock(w,{key:16,modelValue:C.value,"onUpdate:modelValue":l[25]||(l[25]=u=>C.value=u),onChange:F},{default:e.withCtx(()=>[e.createVNode(v,{value:"read-write",label:"Read/Write"}),e.createVNode(v,{value:"read",label:"Read Only"}),e.createVNode(v,{value:"write",label:"Write Only"})]),_:1},8,["modelValue"])):e.createCommentVNode("",!0)]),_:2},1032,["label","field","tooltip"]))),128))]),_:1},8,["model"]),l[46]||(l[46]=e.createElementVNode("div",{class:"form-title"},"拓展属性",-1)),e.createVNode(y,{model:i.value,layout:"vertical"},{default:e.withCtx(()=>[e.createVNode(c,{label:"表单组件",field:"type"},{default:e.withCtx(()=>[e.createVNode(w,{modelValue:i.value.type,"onUpdate:modelValue":l[26]||(l[26]=t=>i.value.type=t),placeholder:"表单组件","allow-clear":"","trigger-props":{contentClass:"json-schema-editor-select"}},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(L.value,t=>(e.openBlock(),e.createBlock(v,{key:t.type,label:t.type,value:t.type},null,8,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1})]),_:1},8,["model"]),e.createVNode(y,{model:n.value,layout:"vertical"},{default:e.withCtx(()=>[e.createVNode(c,{label:"格栅列数",field:"span"},{default:e.withCtx(()=>[e.createVNode(r,{modelValue:n.value.span,"onUpdate:modelValue":l[27]||(l[27]=t=>n.value.span=t),mode:"button",placeholder:">=0",min:0},null,8,["modelValue"])]),_:1}),e.createVNode(c,{label:"格栅间隔数",field:"offset"},{default:e.withCtx(()=>[e.createVNode(r,{modelValue:n.value.offset,"onUpdate:modelValue":l[28]||(l[28]=t=>n.value.offset=t),mode:"button",placeholder:">=0",min:0},null,8,["modelValue"])]),_:1}),e.createElementVNode("div",pe,[e.createVNode(c,{label:"另起一行",field:"start"},{default:e.withCtx(()=>[e.createVNode(s,{modelValue:n.value.start,"onUpdate:modelValue":l[29]||(l[29]=t=>n.value.start=t)},null,8,["modelValue"])]),_:1}),e.createVNode(c,{label:"结束此行",field:"end"},{default:e.withCtx(()=>[e.createVNode(s,{modelValue:n.value.end,"onUpdate:modelValue":l[30]||(l[30]=t=>n.value.end=t)},null,8,["modelValue"])]),_:1})])]),_:1},8,["model"]),e.createVNode(y,{model:m.value,layout:"vertical"},{default:e.withCtx(()=>[e.createVNode(c,{label:"Mock",field:"mock"},{default:e.withCtx(()=>[e.createVNode(V,{modelValue:m.value.mock,"onUpdate:modelValue":l[31]||(l[31]=t=>m.value.mock=t),placeholder:"Mock"},null,8,["modelValue"])]),_:1}),e.createVNode(c,{label:"是否显示",field:"show"},{default:e.withCtx(()=>[e.createVNode(s,{modelValue:m.value.show,"onUpdate:modelValue":l[32]||(l[32]=t=>m.value.show=t)},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["visible"]),e.createVNode(S,{visible:h.value,"onUpdate:visible":l[38]||(l[38]=t=>h.value=t),title:"枚举",onOk:z},{default:e.withCtx(()=>[e.createElementVNode("div",null,[e.createVNode(y,{model:d.value,"auto-label-width":""},{default:e.withCtx(()=>[e.createVNode(c,{label:"枚举值",field:"value"},{default:e.withCtx(()=>[p.value==="string"?(e.openBlock(),e.createBlock(V,{key:0,modelValue:d.value.value,"onUpdate:modelValue":l[34]||(l[34]=t=>d.value.value=t),placeholder:"枚举值"},null,8,["modelValue"])):e.createCommentVNode("",!0),p.value==="number"?(e.openBlock(),e.createBlock(r,{key:1,modelValue:d.value.value,"onUpdate:modelValue":l[35]||(l[35]=t=>d.value.value=t),mode:"button",placeholder:"枚举值"},null,8,["modelValue"])):e.createCommentVNode("",!0),p.value==="integer"?(e.openBlock(),e.createBlock(r,{key:2,modelValue:d.value.value,"onUpdate:modelValue":l[36]||(l[36]=t=>d.value.value=t),mode:"button",placeholder:"枚举值",step:1,precision:0},null,8,["modelValue"])):e.createCommentVNode("",!0)]),_:1}),e.createVNode(c,{label:"显示值",field:"label"},{default:e.withCtx(()=>[e.createVNode(V,{modelValue:d.value.label,"onUpdate:modelValue":l[37]||(l[37]=t=>d.value.label=t),placeholder:"显示值"},null,8,["modelValue"])]),_:1})]),_:1},8,["model"])])]),_:1},8,["visible"])],64)}}});exports.default=ce;