0.1.9 • Published 4 years ago

@nangxif/json-schema v0.1.9

Weekly downloads
1
License
ISC
Repository
github
Last release
4 years ago

JSON-SCHEMA

使用方法

// 安装
npm i @nangxif/json-schema -S

import Jsonschema form '@nangxif/json-schema';
import "@nangxif/json-schema/dist/css/common.css";

<Jsonschema
  :schema="dataJson"
  :tool="tool"
  @upData="upData"
></Jsonschema>

相关参数

参数作用必填备注
:schema传入的json数据入口符合规则的jsontrue
:tool工具栏的配置,目前工具栏的工具有1.控制label与输入框的相对位置上下,左右,键值为leftandright,默认值为true,表示左右;2.控制可编辑与不可编辑,键值为canEdit,默认值为true,表示可编辑。{leftandright:Boolean,canEdit:Boolean}falseleftandright和canEdit可设置可不设置
@upData生成的json数据出口一个接收函数upData(val){//val为最后生成的值}true

传入的json的格式是怎样的?

1.元素的类型

对象类型,数组类型,数字类型,字符串类型。

①对象类型,数组类型,数字类型,字符串类型共有属性

属性名称类型备注
typestring类型
titlestring展示名称
descriptionstring描述
defaultstring默认值

②对象类型特有属性

属性名称类型备注
propertiesobject属性
additionalPropertiesarray定义对象里面的属性或者对象

③数组类型特有属性

(1)数组类型一类特有属性

一类指的是该数组里面包含还有其他的组件,items属性里面表示的就是里面包含的组件。

属性名称类型备注
minItemsnumber最小item数
maxItemsnumber最大item数
uniqueItemsnumber确保数组中的每个项目都是唯一的默认:false
itemsobject数组每项的内容
additionalItemsboolean是否可以额外增加item

(2)数组类型二类特有属性

二类指的是该数组就是对应一个组件了,一般这个组件是radio、select或者checkbox,可能后续还会有其他产生的值为数组的组件,与一类的区别是,这类数组类型有enum和enumNames属性

属性名称类型备注
enumarray组件选项的value值
enumNamesarray组件选项的key值,元素数量与enum一致
extraobject同下,但是一般对应的component_type是radio组件、select组件或checkbox组件

④数字类型和字符串类型特有属性

属性名称类型对象的属性
extraobjectcomponent_type:"组件的类型"stringcomponent_attrs:"组件的属性"stringvalidation:"组件的表单校验"array

2.组件的类型

组件类型component_type基本继承elementUI的表单组件,包括:

Checkbox、DatePicker、Input、InputNumber、Radio、Select、TimePicker

组件组件最终生成的值的类型
Checkboxarray
DatePickerstring
Inputstring
InputNumbernumber
Radiostring
Selectarray
TimePickerstring

3.表单验证validation

用途是否必填
typerequired、minLength、maxLength、minimum、maximum、pattern、customValidate验证方式true
messageeg:“必填”表单验证错误显示的提示true
param/type对应的验证方式false

下面有几个例子

{
  "type":"required",
  "message":"必填"
}
{
  "type":"minLength",
  "message":"长度不能小于10",
  "param":"10"
}
{
  "type":"maxLength",
  "message":"长度不能超过10",
  "param":"10"
}
{
  "type": "minimum",
  "message": "值不能小于10",
  "param":"10"
}
{
  "type": "maximum",
  "message": "值不能大于50",
  "param":"50"
}
{
   "type": "pattern",
   "message": "正则不匹配",
   "param": "(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]"
}
{
    "type": "customValidate",
    "message": "我是自定义错误提示",
    "param": {
      "type": "js",
      "source": "function validateRule(value) {\nreturn false\n }",
      "compiled": "function main(){\n    \"use strict\";\n\nvar __compiledFunc__ = function validateRule(value) {\n  return false;\n};\n    return __compiledFunc__.apply(this, arguments);\n  }",
      "error": {}
    }
}

这部分的内容还不完整,继续撰写中……

具体开发方式请访问github

0.1.9

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.1.4

4 years ago

0.1.2

4 years ago

0.1.3

4 years ago

0.1.1

4 years ago

0.1.0

4 years ago