diff --git a/src/views/demo/document/form/BasicFiledsLayotForm.vue b/src/views/demo/document/form/BasicFiledsLayotForm.vue
new file mode 100644
index 0000000..088a692
--- /dev/null
+++ b/src/views/demo/document/form/BasicFiledsLayotForm.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFixedWidthForm.vue b/src/views/demo/document/form/BasicFixedWidthForm.vue
new file mode 100644
index 0000000..59011a4
--- /dev/null
+++ b/src/views/demo/document/form/BasicFixedWidthForm.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormAdd.vue b/src/views/demo/document/form/BasicFormAdd.vue
new file mode 100644
index 0000000..195a3f0
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormAdd.vue
@@ -0,0 +1,143 @@
+
+
+
+
+
+
+ +
+ -
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormBtn.vue b/src/views/demo/document/form/BasicFormBtn.vue
new file mode 100644
index 0000000..21d1036
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormBtn.vue
@@ -0,0 +1,66 @@
+
+
+
+
+
+
隐藏操作按钮
+
显示操作按钮
+
+
隐藏重置按钮
+
显示重置按钮
+
+
隐藏查询按钮
+
显示查询按钮
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormCleanRule.vue b/src/views/demo/document/form/BasicFormCleanRule.vue
new file mode 100644
index 0000000..c1b7613
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormCleanRule.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
触发表单验证
+
清空表单验证
+
只验证来访人员
+
只清空来访人员验证
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormCompact.vue b/src/views/demo/document/form/BasicFormCompact.vue
new file mode 100644
index 0000000..9420be3
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormCompact.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
更改大小为最大
+
还原大小
+
更改大小为最小
+
+
禁用表单
+
解除禁用
+
+
紧凑表单
+
还原正常间距
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormComponent.vue b/src/views/demo/document/form/BasicFormComponent.vue
new file mode 100644
index 0000000..2e6c16b
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormComponent.vue
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormConAttribute.vue b/src/views/demo/document/form/BasicFormConAttribute.vue
new file mode 100644
index 0000000..d07df64
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormConAttribute.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormCustom.vue b/src/views/demo/document/form/BasicFormCustom.vue
new file mode 100644
index 0000000..5216a8c
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormCustom.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormCustomComponent.vue b/src/views/demo/document/form/BasicFormCustomComponent.vue
new file mode 100644
index 0000000..a4c4624
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormCustomComponent.vue
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormCustomSlots.vue b/src/views/demo/document/form/BasicFormCustomSlots.vue
new file mode 100644
index 0000000..5604d83
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormCustomSlots.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormDynamicsRules.vue b/src/views/demo/document/form/BasicFormDynamicsRules.vue
new file mode 100644
index 0000000..5c5288c
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormDynamicsRules.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormFieldShow.vue b/src/views/demo/document/form/BasicFormFieldShow.vue
new file mode 100644
index 0000000..b9da20b
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormFieldShow.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormFieldTip.vue b/src/views/demo/document/form/BasicFormFieldTip.vue
new file mode 100644
index 0000000..619457f
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormFieldTip.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormFooter.vue b/src/views/demo/document/form/BasicFormFooter.vue
new file mode 100644
index 0000000..efc99b3
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormFooter.vue
@@ -0,0 +1,105 @@
+
+
+
+
+
+
+ 我是自定义按钮
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormLayout.vue b/src/views/demo/document/form/BasicFormLayout.vue
new file mode 100644
index 0000000..c539e5d
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormLayout.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormModal.vue b/src/views/demo/document/form/BasicFormModal.vue
new file mode 100644
index 0000000..6765b14
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormModal.vue
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormRander.vue b/src/views/demo/document/form/BasicFormRander.vue
new file mode 100644
index 0000000..59cf65a
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormRander.vue
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+ 请输入您的手机号,方便我们联系您
+
+
+
+ 请您图文并茂,方便我们了解问题并及时反馈
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormRules.vue b/src/views/demo/document/form/BasicFormRules.vue
new file mode 100644
index 0000000..0575ab8
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormRules.vue
@@ -0,0 +1,58 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormSchemas.vue b/src/views/demo/document/form/BasicFormSchemas.vue
new file mode 100644
index 0000000..496f52b
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormSchemas.vue
@@ -0,0 +1,99 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormSearch.vue b/src/views/demo/document/form/BasicFormSearch.vue
new file mode 100644
index 0000000..c661baa
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormSearch.vue
@@ -0,0 +1,116 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormSlots.vue b/src/views/demo/document/form/BasicFormSlots.vue
new file mode 100644
index 0000000..b124408
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormSlots.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+ 请输入您的手机号,方便我们联系您
+
+
+
+ 请您图文并茂,方便我们了解问题并及时反馈
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFormValue.vue b/src/views/demo/document/form/BasicFormValue.vue
new file mode 100644
index 0000000..91c2dae
--- /dev/null
+++ b/src/views/demo/document/form/BasicFormValue.vue
@@ -0,0 +1,94 @@
+
+
+
+
获取表单值
+
清空表单值
+
更新表单值
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/BasicFunctionForm.vue b/src/views/demo/document/form/BasicFunctionForm.vue
new file mode 100644
index 0000000..f5556df
--- /dev/null
+++ b/src/views/demo/document/form/BasicFunctionForm.vue
@@ -0,0 +1,63 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/form/example.data.ts b/src/views/demo/document/form/example.data.ts
new file mode 100644
index 0000000..110385c
--- /dev/null
+++ b/src/views/demo/document/form/example.data.ts
@@ -0,0 +1,393 @@
+import { FormSchema } from '/@/components/Form';
+
+import dayjs from 'dayjs';
+
+export const schemas: FormSchema[] = [
+ {
+ label: '文本框',
+ field: 'name',
+ component: 'Input',
+ componentProps: {
+ prefix: '中文',
+ showCount: true,
+ },
+ defaultValue: '张三',
+ },
+ {
+ label: '密码',
+ field: 'password',
+ component: 'InputPassword',
+ componentProps: {
+ //是否显示切换按钮或者控制密码显隐
+ visibilityToggle: true,
+ prefix: '密码',
+ },
+ },
+ {
+ label: '搜索框',
+ field: 'searchBox',
+ component: 'InputSearch',
+ componentProps: {
+ onSearch: (value) => {
+ console.log(value);
+ },
+ },
+ },
+ {
+ label: '文本域',
+ field: 'textArea',
+ component: 'InputTextArea',
+ componentProps: {
+ //可以点击清除图标删除内容
+ allowClear: true,
+ //是否展示字数
+ showCount: true,
+ //自适应内容高度,可设置为 true | false 或对象:{ minRows: 2, maxRows: 6 }
+ autoSize: {
+ //最小显示行数
+ minRows: 2,
+ //最大显示行数
+ maxRows: 3,
+ },
+ },
+ },
+ {
+ label: '数值输入框',
+ field: 'number',
+ component: 'InputNumber',
+ componentProps: {
+ //带标签的 input,设置后置标签
+ addonAfter: '保留两位小数',
+ //最大值
+ max: 100,
+ //数值经度
+ precision: 2,
+ //步数
+ step: 0.1,
+ },
+ },
+
+ {
+ label: '下拉框',
+ field: 'jinputtype',
+ component: 'Select',
+ componentProps: {
+ options: [
+ { value: 'like', label: '模糊(like)' },
+ { value: 'ne', label: '不等于(ne)' },
+ { value: 'ge', label: '大于等于(ge)' },
+ { value: 'le', label: '小于等于(le)' },
+ ],
+ //下拉多选
+ mode: 'multiple',
+ //配置是否可搜索
+ showSearch: true,
+ },
+ },
+ {
+ field: 'TreeSelect',
+ label: '下拉树',
+ component: 'TreeSelect',
+ componentProps: {
+ //是否显示下拉框,默认false
+ treeCheckable: true,
+ //标题
+ title: '下拉树',
+ //下拉树
+ treeData: [
+ {
+ label: '洗衣机',
+ value: '0',
+ children: [
+ {
+ label: '滚筒洗衣机',
+ value: '0-1',
+ },
+ ],
+ },
+ {
+ label: '电视机',
+ value: '1',
+ children: [
+ {
+ label: '平板电视',
+ value: '1-1',
+ disabled: true,
+ },
+ {
+ label: 'CRT电视机',
+ value: '1-2',
+ },
+ {
+ label: '投影电视',
+ value: '1-3',
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ label: 'RadioButtonGroup组件',
+ field: 'status',
+ component: 'RadioButtonGroup',
+ componentProps: {
+ options: [
+ { label: '有效', value: 1 },
+ { label: '无效', value: 0 },
+ ],
+ },
+ },
+ {
+ label: '单选框',
+ field: 'radioSex',
+ component: 'RadioGroup',
+ componentProps: {
+ //options里面由一个一个的radio组成,支持disabled禁用
+ options: [
+ { label: '男', value: 1, disabled: false },
+ { label: '女', value: 0 },
+ ],
+ },
+ },
+ {
+ label: '多选框',
+ field: 'checkbox',
+ component: 'Checkbox',
+ componentProps: {
+ //是否禁用,默认false
+ disabled: false,
+ },
+ },
+ {
+ label: '多选框组',
+ field: 'checkSex',
+ component: 'CheckboxGroup',
+ componentProps: {
+ //RadioGroup 下所有 input[type="radio"] 的 name 属性
+ name: '爱好',
+ //options支持disabled禁用
+ options: [
+ { label: '运动', value: 0, disabled: true },
+ { label: '听音乐', value: 1 },
+ { label: '看书', value: 2 },
+ ],
+ },
+ defaultValue: [2],
+ },
+ {
+ label: '自动完成组件',
+ field: 'AutoComplete',
+ component: 'AutoComplete',
+ componentProps: {
+ options: [{ value: 'Burns Bay Road' }, { value: 'Downing Street' }, { value: 'Wall Street' }],
+ },
+ },
+ {
+ label: '级联选择',
+ field: 'cascade',
+ component: 'Cascader',
+ componentProps: {
+ //最多显示多少个tag
+ maxTagCount: 2,
+ //浮层预设位置
+ placement: 'bottomRight',
+ //在选择框中显示搜索框,默认false
+ showSearch: true,
+ options: [
+ {
+ label: '北京',
+ value: 'BeiJin',
+ children: [
+ {
+ label: '海淀区',
+ value: 'HaiDian',
+ },
+ ],
+ },
+ {
+ label: '江苏省',
+ value: 'JiangSu',
+ children: [
+ {
+ label: '南京',
+ value: 'Nanjing',
+ children: [
+ {
+ label: '中华门',
+ value: 'ZhongHuaMen',
+ },
+ ],
+ },
+ ],
+ },
+ ],
+ },
+ },
+ {
+ label: '日期选择',
+ field: 'dateSelect',
+ component: 'DatePicker',
+ componentProps: {
+ //日期格式化,页面上显示的值
+ format: 'YYYY-MM-DD',
+ //返回值格式化(绑定值的格式)
+ valueFormat: 'YYYY-MM-DD',
+ //是否显示今天按钮
+ showToday: true,
+ //不可选择日期
+ disabledDate: (currentDate) => {
+ let date = dayjs(currentDate).format('YYYY-MM-DD');
+ let nowDate = dayjs(new Date()).format('YYYY-MM-DD');
+ //当天不可选择
+ if (date == nowDate) {
+ return true;
+ }
+ return false;
+ },
+ },
+ },
+ {
+ label: '月份选择',
+ field: 'monthSelect',
+ component: 'MonthPicker',
+ componentProps: {
+ //不可选择日期
+ disabledDate: (currentDate) => {
+ let date = dayjs(currentDate).format('YYYY-MM');
+ let nowDate = dayjs(new Date()).format('YYYY-MM');
+ //当天不可选择
+ if (date == nowDate) {
+ return true;
+ }
+ return false;
+ },
+ },
+ },
+ {
+ label: '周选择',
+ field: 'weekSelect',
+ component: 'WeekPicker',
+ componentProps: {
+ size: 'small',
+ },
+ },
+ {
+ label: '时间选择',
+ field: 'timeSelect',
+ component: 'TimePicker',
+ componentProps: {
+ size: 'default',
+ //日期时间或者时间模式下是否显示此刻,不支持日期时间范围和时间范围
+ showNow: true,
+ },
+ },
+ {
+ label: '日期时间范围',
+ field: 'dateTimeRangeSelect',
+ component: 'RangePicker',
+ componentProps: {
+ //是否显示时间
+ showTime: true,
+ //日期格式化
+ format: 'YYYY/MM/DD HH:mm:ss',
+ //范围文本描述用集合
+ placeholder: ['请选择开始日期时间', '请选择结束日期时间'],
+ },
+ },
+ {
+ label: '日期范围',
+ field: 'dateRangeSelect',
+ component: 'RangeDate',
+ componentProps: {
+ //日期格式化
+ format: 'YYYY/MM/DD',
+ //范围文本描述用集合
+ placeholder: ['请选择开始日期', '请选择结束日期'],
+ },
+ },
+ {
+ label: '时间范围',
+ field: 'timeRangeSelect',
+ component: 'RangeTime',
+ componentProps: {
+ //日期格式化
+ format: 'HH/mm/ss',
+ //范围文本描述用集合
+ placeholder: ['请选择开始时间', '请选择结束时间'],
+ },
+ },
+ {
+ label: '开关',
+ field: 'switch',
+ component: 'Switch',
+ componentProps: {
+ //开关大小,可选值:default small
+ size: 'default',
+ //非选中时的内容
+ unCheckedChildren: '开启',
+ //非选中时的值
+ unCheckedValue: '0',
+ //选中时的内容
+ checkedChildren: '关闭',
+ //选中时的值
+ checkedValue: '1',
+ //是否禁用
+ disabled: false,
+ },
+ },
+ {
+ label: '滑动输入条',
+ field: 'slider',
+ component: 'Slider',
+ componentProps: {
+ //最小值
+ min: -20,
+ //最大值
+ max: 100,
+ //是否为双滑块模式
+ range: true,
+ //刻度标记
+ marks: {
+ '-20': '-20°C',
+ 0: '0°C',
+ 26: '26°C',
+ 37: '37°C',
+ 100: {
+ style: {
+ color: '#f50',
+ },
+ label: '100°C',
+ },
+ },
+ },
+ },
+ {
+ label: '评分',
+ field: 'rate',
+ component: 'Rate',
+ componentProps: {
+ //是否允许半选
+ allowHalf: true,
+ //star 总数
+ count: 5,
+ //tooltip提示,有几颗星写几个
+ tooltips: ['非常差', '较差', '正常', '很好', '非很好'],
+ },
+ },
+ {
+ label: '分割线',
+ field: 'divisionLine',
+ component: 'Divider',
+ componentProps: {
+ //是否虚线
+ dashed: false,
+ //分割线标题的位置(left | right | center)
+ orientation: 'center',
+ //文字是否显示为普通正文样式
+ plain: true,
+ //水平还是垂直类型(horizontal | vertical)
+ type: 'horizontal',
+ },
+ },
+];
diff --git a/src/views/demo/document/form/exampleCustom.data.ts b/src/views/demo/document/form/exampleCustom.data.ts
new file mode 100644
index 0000000..e4afd9c
--- /dev/null
+++ b/src/views/demo/document/form/exampleCustom.data.ts
@@ -0,0 +1,452 @@
+import { FormSchema } from '/@/components/Form';
+import { defHttp } from '/@/utils/http/axios';
+
+export const schemas: FormSchema[] = [
+ {
+ label: '验证码',
+ field: 'code',
+ component: 'InputCountDown',
+ componentProps: {
+ //'default': 默认, 'large': 最大, 'small': 最小
+ size:'default',
+ //倒计时
+ count: 120,
+ },
+ },
+ {
+ label: 'Api下拉选择',
+ field: 'apiSelect',
+ component: 'ApiSelect',
+ componentProps: {
+ //multiple: 多选;不填写为单选
+ mode: 'multiple',
+ //请求api,返回结果{ result: { records:[{'id':'1',name:'scott'},{'id':'2',name:'小张'}] }}
+ api: () => defHttp.get({ url: '/test/jeecgDemo/list' }),
+ //数值转成String
+ numberToString: false,
+ //标题字段
+ labelField: 'name',
+ //值字段
+ valueField: 'id',
+ //请求参数
+ params: {},
+ //返回结果字段
+ resultField: 'records',
+ },
+ },
+ {
+ label: 'Api树选择',
+ field: 'apiSelect',
+ component: 'ApiTreeSelect',
+ componentProps: {
+ /* 请求api,返回结果
+ { result: { list: [{ title:'选项0',value:'0',key:'0',
+ children: [ {"title": "选项0-0","value": "0-0","key": "0-0"},...]
+ }, ...]
+ }} */
+ api: () => defHttp.get({ url: '/mock/tree/getDemoOptions' }),
+ //请求参数
+ params: {},
+ //返回结果字段
+ resultField: 'list',
+ },
+ },
+ {
+ label: '校验密码强度',
+ field: 'pwd',
+ component: 'StrengthMeter',
+ componentProps: {
+ //是否显示密码文本框
+ showInput: true,
+ //是否禁用
+ disabled: false,
+ },
+ },
+ {
+ label: '省市县联动',
+ field: 'province',
+ component: 'JAreaLinkage',
+ componentProps: {
+ //是否显示区县,默认true,否则只显示省
+ showArea: true,
+ //是否是全部文本,默认false
+ showAll: true,
+ },
+ },
+ {
+ label: '岗位选择',
+ field: 'post',
+ component: 'JSelectPosition',
+ componentProps: {
+ //是否右侧显示选中列表
+ showSelected: true,
+ //最大选择数量
+ maxSelectCount: 1,
+ //岗位标题
+ modalTitle: '岗位',
+ },
+ },
+ {
+ label: '角色选择',
+ field: 'role',
+ component: 'JSelectRole',
+ componentProps: {
+ //请求参数 如params:{"code":"001"}
+ params: {},
+ //是否单选,默认false
+ isRadioSelection: true,
+ //角色标题
+ modalTitle: '角色',
+ },
+ },
+ {
+ label: '用户选择',
+ field: 'user',
+ component: 'JSelectUser',
+ componentProps: {
+ //取值字段配置,一般为主键字段
+ rowKey: 'username',
+ //显示字段配置
+ labelKey: 'realname',
+ //是否显示选择按钮
+ showButton: false,
+ //用户标题
+ modalTitle: '用户',
+ },
+ },
+ {
+ label: '图片上传',
+ field: 'uploadImage',
+ component: 'JImageUpload',
+ componentProps: {
+ //按钮显示文字
+ text:'图片上传',
+ //支持两种基本样式picture和picture-card
+ listType:'picture-card',
+ //用于控制文件上传的业务路径,默认temp
+ bizPath:'temp',
+ //是否禁用
+ disabled:false,
+ //最大上传数量
+ fileMax:1,
+ },
+ },
+ {
+ label: '字典标签',
+ field: 'dictTags',
+ component: 'JDictSelectTag',
+ componentProps: {
+ //字典code配置,比如通过性别字典编码:sex,也可以使用demo,name,id 表名,名称,值的方式
+ dictCode:'sex',
+ //支持radio(单选按钮)、radioButton(单选按钮 btn风格)、select(下拉框)
+ type:'radioButton'
+ },
+ },
+ {
+ label: '部门选择',
+ field: 'dept',
+ component: 'JSelectDept',
+ componentProps: {
+ //是否开启异步加载
+ sync: false,
+ //是否显示复选框
+ checkable: true,
+ //是否显示选择按钮
+ showButton: false,
+ //父子节点选中状态不再关联
+ checkStrictly: true,
+ //选择框标题
+ modalTitle: '部门选择',
+ },
+ },
+ {
+ label: '省市县级联动',
+ field: 'provinceArea',
+ component: 'JAreaSelect',
+ componentProps: {
+ //级别 1 只显示省 2 省市 3 省市区
+ level:3
+ },
+ },
+ {
+ label: '富文本',
+ field: 'editor',
+ component: 'JEditor',
+ componentProps: {
+ //是否禁用
+ disabled: false
+ },
+ },
+ {
+ label: 'markdown',
+ field: 'markdown',
+ component: 'JMarkdownEditor',
+ componentProps: {
+ //是否禁用
+ disabled: false
+ },
+ },
+ {
+ label: '可输入下拉框',
+ field: 'inputSelect',
+ component: 'JSelectInput',
+ componentProps: {
+ options: [
+ { label: 'Default', value: 'default' },
+ { label: 'IFrame', value: 'iframe' },
+ ],
+ //是否为搜索模式
+ showSearch: true,
+ //是否禁用
+ disabled: false
+ },
+ },
+ {
+ label: '代码编辑器组件',
+ field: 'jCode',
+ component: 'JCodeEditor',
+ componentProps: {
+ //高度,默认auto
+ height:'150px',
+ //是否禁用
+ disabled:false,
+ //是否全屏
+ fullScreen:false,
+ //全屏之后的坐标
+ zIndex: 999,
+ //代码主题,目前只支持idea,可在组件自行扩展
+ theme:'idea',
+ //代码提示
+ keywords:['console'],
+ //语言如(javascript,vue,markdown)可在组件自行扩展
+ language:'javascript'
+ },
+ },
+ {
+ label: '分类字典树',
+ field: 'dictTree',
+ component: 'JCategorySelect',
+ componentProps: {
+ //占位内容
+ placeholder:'请选择分类字典树',
+ //查询条件,如“{'name':'笔记本'}”
+ condition:"",
+ //是否多选
+ multiple: false,
+ //起始选择code,见配置的分类字典的类型编码
+ pcode: 'A04',
+ //父级id
+ pid:'',
+ //返回key
+ back:'id',
+ },
+ },
+ {
+ label: '下拉多选',
+ field: 'selectMultiple',
+ component: 'JSelectMultiple',
+ componentProps: {
+ //字典code配置,比如通过性别字典编码:sex,也可以使用demo,name,id 表名,名称,值的方式
+ dictCode:'company_rank',
+ //是否只读
+ readOnly:false,
+ },
+ },
+ {
+ label: 'popup',
+ field: 'popup',
+ component: 'JPopup',
+ componentProps: ({ formActionType }) => {
+ const {setFieldsValue} = formActionType;
+ return{
+ setFieldsValue:setFieldsValue,
+ //online报表编码
+ code:"demo",
+ //是否为多选
+ multi:false,
+ //字段配置
+ fieldConfig: [
+ { source: 'name', target: 'popup' },
+ ],
+ }
+ },
+ },
+ {
+ label: '开关自定义',
+ field: 'switch',
+ component: 'JSwitch',
+ componentProps:{
+ //取值 options
+ options:['Y','N'],
+ //文本option
+ labelOptions:['是', '否'],
+ //是否启用下拉
+ query: false,
+ //是否禁用
+ disabled: false,
+ },
+ },
+ {
+ label: '定时表达式选择',
+ field: 'timing',
+ component: 'JEasyCron',
+ componentProps:{
+ //是否隐藏参数秒和年设置,如果隐藏,那么参数秒和年将会全部忽略掉。
+ hideSecond: false,
+ //是否隐藏参数年设置,如果隐藏,那么参数年将会全部忽略掉
+ hideYear: false,
+ //是否禁用
+ disabled: false,
+ //获取预览执行时间列表的函数,格式为:remote (cron值, time时间戳, cb回调函数)
+ remote:(cron,time,cb)=>{}
+ },
+ },
+ {
+ label: '分类字典树',
+ field: 'treeDict',
+ component: 'JTreeDict',
+ componentProps:{
+ //指定当前组件需要存储的字段 可选: id(主键)和code(编码)
+ field:'id',
+ //是否为异步
+ async: true,
+ //是否禁用
+ disabled: false,
+ //指定一个节点的编码,加载该节点下的所有字典数据,若不指定,默认加载所有数据
+ parentCode:'A04'
+ },
+ },
+ {
+ label: '多行输入窗口',
+ field: 'inputPop',
+ component: 'JInputPop',
+ componentProps:{
+ //标题
+ title:'多行输入窗口',
+ //弹窗显示位置
+ position:'bottom',
+ },
+ },
+ {
+ label: '多选',
+ field: 'multipleChoice',
+ component: 'JCheckbox',
+ componentProps:{
+ //字典code配置,比如通过职位字典编码:company_rank,也可以使用demo,name,id 表名,名称,值的方式
+ dictCode:'company_rank',
+ //是否禁用
+ disabled: false,
+ //没有字典code可以使用option来定义
+ // options:[
+ // {label:'CE0',value:'1'}
+ // ]
+ },
+ },
+ {
+ label: '下拉树选择',
+ field: 'treeCusSelect',
+ component: 'JTreeSelect',
+ componentProps: {
+ //字典code配置,比如通过性别字典编码:sex,也可以使用sys_permission,name,id 表名,名称,值的方式
+ dict: 'sys_permission,name,id',
+ //父级id字段
+ pidField: 'parent_id',
+ },
+ },
+ {
+ label: '根据部门选择用户组件',
+ field: 'userByDept',
+ component: 'JSelectUserByDept',
+ componentProps: {
+ //是否显示选择按钮
+ showButton: true,
+ //选择框标题
+ modalTitle: '部门用户选择'
+ },
+ },
+ {
+ label: '文件上传',
+ field: 'uploadFile',
+ component: 'JUpload',
+ componentProps: {
+ //是否显示选择按钮
+ text: '文件上传',
+ //最大上传数
+ maxCount: 2,
+ //是否显示下载按钮
+ download: true,
+ },
+ },
+ {
+ label: '字典表搜索',
+ field: 'dictSearchSelect',
+ component: 'JSearchSelect',
+ componentProps: {
+ //字典code配置,通过 demo,name,id 表名,名称,值的方式
+ dict: 'demo,name,id',
+ //是否异步加载
+ async: true,
+ //当async设置为true时有效,表示异步查询时,每次获取数据的数量,默认10
+ pageSize:3
+ },
+ },
+ {
+ label: '动态创建input框',
+ field: 'jAddInput',
+ component: 'JAddInput',
+ componentProps: {
+ //自定义超过多少行才会显示删除按钮,默认为1
+ min:1
+ },
+ },
+ {
+ label: '用户选择组件',
+ field: 'userCusSelect',
+ component: 'UserSelect',
+ componentProps: {
+ //是否多选
+ multi: true,
+ //从用户表中选择一列,其值作为该控件的存储值,默认id列
+ store: 'id',
+ //是否排除我自己(当前登录用户)
+ izExcludeMy: false,
+ //是否禁用
+ disabled: false,
+ },
+ },
+ {
+ label: '选择角色组件',
+ field: 'roleSelect',
+ component: 'RoleSelect',
+ componentProps: {
+ //最大选择数量
+ maxSelectCount: 3,
+ //是否单选
+ isRadioSelection: false
+ },
+ },
+ {
+ label: '数值范围输入框',
+ field: 'rangeNumber',
+ component: 'JRangeNumber',
+ },
+ {
+ label: '远程Api单选框组',
+ field: 'apiRadioGroup',
+ component: 'ApiRadioGroup',
+ componentProps:{
+ //请求接口返回结果{ result:{ list: [ name: '选项0',id: '1' ] }}
+ api:()=> defHttp.get({ url: '/mock/select/getDemoOptions' }),
+ //请求参数
+ params:{},
+ //是否为按钮风格类型,默认false
+ isBtn: false,
+ //返回集合名称
+ resultField: 'list',
+ //标题字段名称
+ labelField: 'name',
+ //值字段名称
+ valueField: 'id',
+ }
+ },
+];
diff --git a/src/views/demo/document/form/index.ts b/src/views/demo/document/form/index.ts
new file mode 100644
index 0000000..1aa7cef
--- /dev/null
+++ b/src/views/demo/document/form/index.ts
@@ -0,0 +1,24 @@
+export { default as BasicFiledsLayotForm } from './BasicFiledsLayotForm.vue';
+export { default as BasicFixedWidthForm } from './BasicFixedWidthForm.vue';
+export { default as BasicFormAdd } from './BasicFormAdd.vue';
+export { default as BasicFormBtn } from './BasicFormBtn.vue';
+export { default as BasicFormCleanRule } from './BasicFormCleanRule.vue';
+export { default as BasicFormCompact } from './BasicFormCompact.vue';
+export { default as BasicFormComponent } from './BasicFormComponent.vue';
+export { default as BasicFormConAttribute } from './BasicFormConAttribute.vue';
+export { default as BasicFormCustom } from './BasicFormCustom.vue';
+export { default as BasicFormCustomComponent } from './BasicFormCustomComponent.vue';
+export { default as BasicFormCustomSlots } from './BasicFormCustomSlots.vue';
+export { default as BasicFormDynamicsRules } from './BasicFormDynamicsRules.vue';
+export { default as BasicFormFieldShow } from './BasicFormFieldShow.vue';
+export { default as BasicFormFieldTip } from './BasicFormFieldTip.vue';
+export { default as BasicFormFooter } from './BasicFormFooter.vue';
+export { default as BasicFormLayout } from './BasicFormLayout.vue';
+export { default as BasicFormModal } from './BasicFormModal.vue';
+export { default as BasicFormRander } from './BasicFormRander.vue';
+export { default as BasicFormRules } from './BasicFormRules.vue';
+export { default as BasicFormSchemas } from './BasicFormSchemas.vue';
+export { default as BasicFormSearch } from './BasicFormSearch.vue';
+export { default as BasicFormSlots } from './BasicFormSlots.vue';
+export { default as BasicFormValue } from './BasicFormValue.vue';
+export { default as BasicFunctionForm } from './BasicFunctionForm.vue';
\ No newline at end of file
diff --git a/src/views/demo/document/form/tabIndex.vue b/src/views/demo/document/form/tabIndex.vue
new file mode 100644
index 0000000..bb1c918
--- /dev/null
+++ b/src/views/demo/document/form/tabIndex.vue
@@ -0,0 +1,114 @@
+
+
+
+
diff --git a/src/views/demo/document/table/AuthColumnDemo.vue b/src/views/demo/document/table/AuthColumnDemo.vue
new file mode 100644
index 0000000..b53ca87
--- /dev/null
+++ b/src/views/demo/document/table/AuthColumnDemo.vue
@@ -0,0 +1,135 @@
+
+
+
+
diff --git a/src/views/demo/document/table/BasicTableBorder.vue b/src/views/demo/document/table/BasicTableBorder.vue
new file mode 100644
index 0000000..73566d4
--- /dev/null
+++ b/src/views/demo/document/table/BasicTableBorder.vue
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/BasicTableDemo.vue b/src/views/demo/document/table/BasicTableDemo.vue
new file mode 100644
index 0000000..2b58dde
--- /dev/null
+++ b/src/views/demo/document/table/BasicTableDemo.vue
@@ -0,0 +1,81 @@
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/BasicTableDemoAjax.vue b/src/views/demo/document/table/BasicTableDemoAjax.vue
new file mode 100644
index 0000000..dd53ef4
--- /dev/null
+++ b/src/views/demo/document/table/BasicTableDemoAjax.vue
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/CustomerCellDemo.vue b/src/views/demo/document/table/CustomerCellDemo.vue
new file mode 100644
index 0000000..d625ce6
--- /dev/null
+++ b/src/views/demo/document/table/CustomerCellDemo.vue
@@ -0,0 +1,106 @@
+
+
+
+ ID: {{ record.id }}
+
+
+
+ {{ record.no }}
+
+
+
+
+
+
+
+
+
+ {{ record.no }}
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/EditCellTableDemo.vue b/src/views/demo/document/table/EditCellTableDemo.vue
new file mode 100644
index 0000000..795a06c
--- /dev/null
+++ b/src/views/demo/document/table/EditCellTableDemo.vue
@@ -0,0 +1,217 @@
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/EditRowTableDemo.vue b/src/views/demo/document/table/EditRowTableDemo.vue
new file mode 100644
index 0000000..5ce07bf
--- /dev/null
+++ b/src/views/demo/document/table/EditRowTableDemo.vue
@@ -0,0 +1,261 @@
+
+
+
+
diff --git a/src/views/demo/document/table/ExpandTableDemo.vue b/src/views/demo/document/table/ExpandTableDemo.vue
new file mode 100644
index 0000000..89c0ef9
--- /dev/null
+++ b/src/views/demo/document/table/ExpandTableDemo.vue
@@ -0,0 +1,119 @@
+
+
+
+
+ No: {{ record.no }}
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/ExportTableDemo.vue b/src/views/demo/document/table/ExportTableDemo.vue
new file mode 100644
index 0000000..50c723c
--- /dev/null
+++ b/src/views/demo/document/table/ExportTableDemo.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+ 导出
+ 导入
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/FixedHeaderColumn.vue b/src/views/demo/document/table/FixedHeaderColumn.vue
new file mode 100644
index 0000000..00f3f40
--- /dev/null
+++ b/src/views/demo/document/table/FixedHeaderColumn.vue
@@ -0,0 +1,98 @@
+
+
+
+
diff --git a/src/views/demo/document/table/InnerTableDemo.vue b/src/views/demo/document/table/InnerTableDemo.vue
new file mode 100644
index 0000000..9173d66
--- /dev/null
+++ b/src/views/demo/document/table/InnerTableDemo.vue
@@ -0,0 +1,131 @@
+
+
+
+
+
+ Publish
+
+
+
+
+
+
+
+
+ Finished
+
+
+
+
+ Pause
+ Stop
+
+
+
+ Action 1
+ Action 2
+
+
+ More
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/MergeHeaderDemo.vue b/src/views/demo/document/table/MergeHeaderDemo.vue
new file mode 100644
index 0000000..68235d2
--- /dev/null
+++ b/src/views/demo/document/table/MergeHeaderDemo.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/MergeTableDemo.vue b/src/views/demo/document/table/MergeTableDemo.vue
new file mode 100644
index 0000000..14574b4
--- /dev/null
+++ b/src/views/demo/document/table/MergeTableDemo.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/SelectTableDemo.vue b/src/views/demo/document/table/SelectTableDemo.vue
new file mode 100644
index 0000000..7dc5211
--- /dev/null
+++ b/src/views/demo/document/table/SelectTableDemo.vue
@@ -0,0 +1,80 @@
+
+
+
+
+
+
+
diff --git a/src/views/demo/document/table/TreeTableDemo.vue b/src/views/demo/document/table/TreeTableDemo.vue
new file mode 100644
index 0000000..802c043
--- /dev/null
+++ b/src/views/demo/document/table/TreeTableDemo.vue
@@ -0,0 +1,124 @@
+
+
+
+
diff --git a/src/views/demo/document/table/index.ts b/src/views/demo/document/table/index.ts
new file mode 100644
index 0000000..9069393
--- /dev/null
+++ b/src/views/demo/document/table/index.ts
@@ -0,0 +1,15 @@
+export { default as AuthColumnDemo } from './AuthColumnDemo.vue';
+export { default as BasicTableBorder } from './BasicTableBorder.vue';
+export { default as BasicTableDemo } from './BasicTableDemo.vue';
+export { default as BasicTableDemoAjax } from './BasicTableDemoAjax.vue';
+export { default as CustomerCellDemo } from './CustomerCellDemo.vue';
+export { default as EditCellTableDemo } from './EditCellTableDemo.vue';
+export { default as EditRowTableDemo } from './EditRowTableDemo.vue';
+export { default as ExpandTableDemo } from './ExpandTableDemo.vue';
+export { default as ExportTableDemo } from './ExportTableDemo.vue';
+export { default as FixedHeaderColumn } from './FixedHeaderColumn.vue';
+export { default as InnerTableDemo } from './InnerTableDemo.vue';
+export { default as MergeHeaderDemo } from './MergeHeaderDemo.vue';
+export { default as MergeTableDemo } from './MergeTableDemo.vue';
+export { default as SelectTableDemo } from './SelectTableDemo.vue';
+export { default as TreeTableDemo } from './TreeTableDemo.vue';
\ No newline at end of file
diff --git a/src/views/demo/document/table/tabIndex.vue b/src/views/demo/document/table/tabIndex.vue
new file mode 100644
index 0000000..261c9c3
--- /dev/null
+++ b/src/views/demo/document/table/tabIndex.vue
@@ -0,0 +1,87 @@
+
+
+
+