adminPage-vue3依赖FormPage说明文档,表单页快速开发,使用思路及范例(Ⅱ)formConfig基础配置项

adminPage-vue3依赖FormPage说明文档,表单页快速开发,使用思路及范例(Ⅱ)formConfig配置项

  • 属性: formConfig(表单项设置)
    • key
    • label
    • noLabel
    • defaultValue
    • bind
    • childSlot
    • type
      • String类型数据(除 times 与 slot )
      • 字符串 times
        • 绑定Key
        • 默认值
        • 绑定属性
        • 绑定Key
      • 字符串 slot (及 配套 slotName 属性)
      • vue组件类型 VueComponent

属性: formConfig(表单项设置)

搜索项设置接收数组类型,每项设置均为对象,结构为

{key:String,label:String,type:String || VueComponent || 'times' || 'slot', // type:'input' || type:ElInput || type:'times' || type:'slot'noLabel:Boolean,defaultValue:Any,bind:Object,childSlot:String,// type='times'startDefaultValue:String,endDefaultValue:String,startBind:Object,endBind:Object,startKey:String,endKey:String,// type='slot'slotName:String,//以下配置请查阅formConfig校验配置项notNull:Boolean,isInt:Boolean,isNumber:Boolean || Number,isMinusNumber:Boolean || Number,
}

key

本字段将设置为搜索时的属性key字段,当type=times 时,将设置为startKeyendKey(默认为startTimeendTime)
请添加图片描述

label

将作为表单label进行渲染

在这里插入图片描述

noLabel

声明本字段,将取消显示该项的label

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config" /></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '输入',key: 'input',},{label: '输入',key: 'input',noLabel: true,},
]
</script>

在这里插入图片描述

defaultValue

声明本字段默认值,首次加载时,初始渲染时均将该项设为该值

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config" />{{ formData }}</div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '输入',key: 'input',defaultValue: 1,},{label: '输入',key: 'input2',defaultValue: 2,},
]
</script>

在这里插入图片描述

bind

本属性将直接作用于表单项渲染绑定,例如

{label: '电话',type:'input',key: 'phone',bind:{type:'textarea',placeholder:'占位文本',style:'color:red',class:'testClass'}
}

将渲染为·<el-input v-model="phone" type="textarea" placeholder="占位文本" style="color:red" class="testClass" />

示例代码如下

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config" />{{ formData }}</div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '电话',type: 'input',key: 'phone',bind: {type: 'textarea',placeholder: '占位文本',style: 'color:red',class: 'testClass',},},
]
</script>

在这里插入图片描述

非时间类型的bind默认属性为:

{placeholder: label || '',clearable: true,style: 'width: 200px'}

时间类型的默认属性为:

{style: 'width: 190px',type: 'datetime',placeholder: '请选择时间',format: 'YYYY-MM-DD HH:mm:ss',valueFormat: 'YYYY-MM-DD HH:mm:ss'
}

childSlot

本属性为插槽名称,动态插槽渲染。
主要用于elementUI中el-selectel-checkbox-groupel-radio-group等此类组件中需要声明子组件的情形,例如el-select内部需要配置el-option,本示例也将以el-select为例

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"><template #selectChildSlot><el-option label="2024-01-01" value="2024-01-01" /><el-option label="2023-01-01" value="2023-01-01" /><el-option label="2022-01-01" value="2022-01-01" /><el-option label="2021-01-01" value="2021-01-01" /></template></FormPage><div style="margin-left: 200px">{{ formData }}</div></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '时间',key: 'selectDate',type: 'select',childSlot: 'selectChildSlot',},
]
</script>

在这里插入图片描述

匹配字段设置如下
在这里插入图片描述

type

本属性是搜索项主要配置项,默认值为ElInput
用于各搜索项配置类型及特殊处理声明

String类型数据(除 times 与 slot )

String 类型传入type是较为常用的情景,主要是将element-UI组件标签文本传入type内,交由type进行渲染交互,对于element-UI标签可传入驼峰式或-分割,下文将使用el-input-number标签进行演示,因el-input-number标签文本结构较为复杂,能够清晰表达出作者对于type接收值的处理
注意:times与slot被排除在外,当文本类型无法捕获element-UI时,将使用默认的ElInput,没有传type时也将使用ElInput

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"/><div style="margin-left: 200px">{{ formData }}</div></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: 'test1',key: 'test1',type: 'el-input-number',},{label: 'test2',key: 'test2',type: 'el-inputNumber',},{label: 'test3',key: 'test3',type: 'input-number',},{label: 'test4',key: 'test4',type: 'El-Input-Number',},{label: 'test5',key: 'test5',type: 'inputNumber',},{label: 'test6',key: 'test6',type: 'elInputNumber',},{label: 'test7',key: 'test7',type: 'ElInputNumber',},{label: 'test8',key: 'test8',type: 'InputNumber',},
]
</script>

在这里插入图片描述

字符串 times

当 type = ‘times’ 将会分别展示开始时间与结束时间,字段将强制设为startTimeendTime
如:{ label: '时间', type: 'times'}就将渲染为请添加图片描述
接口中也将携带为请添加图片描述

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"/><div style="margin-left: 200px">{{ formData }}</div></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '时间',type: 'times',},
]
</script>

在这里插入图片描述

绑定Key

默认值分别为startKeyendKey

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"/><div style="margin-left: 200px">{{ formData }}</div></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '时间',type: 'times',startKey: 'startKey',endKey: 'endKey',},
]
</script>

在这里插入图片描述

默认值

默认值分别为startDefaultValueendDefaultValue

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"/></FormPage><div style="margin-left: 200px">{{ formData }}</div></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '时间',type: 'times',startDefaultValue: '2024-01-01 00:00:00',endDefaultValue: '2024-12-31 23:59:59',},
]
</script>

在这里插入图片描述

绑定属性

默认值分别为startBindendBind

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"/><div style="margin-left: 200px">{{ formData }}</div></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: '时间',type: 'times',startBind: {type: 'date',format: 'YYYY-MM-DD',valueFormat: 'YYYY-MM-DD 00:00:00',style: {width: '150px',},},endBind: {type: 'date',format: 'YYYY-MM-DD',valueFormat: 'YYYY-MM-DD 23:59:59',style: {width: '350px',},},},
]
</script>

在这里插入图片描述

绑定Key

字符串 slot (及 配套 slotName 属性)

当 type =‘slot’ 时,意味着你将要对该搜索项手动处理,组件将根据你设置的slotName进行暴露插槽,便于业务处理

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"><template #slotModules> 插槽开发 </template></FormPage></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
const formData = ref({})
const config = [{label: 'slot测试',key: 'slotData',defaultValue: 'ok',type: 'slot',slotName: 'slotModules',},{label: 'test',},
]
</script>

在这里插入图片描述

匹配流程如下
在这里插入图片描述

注:可以传入整个组件给type,并通过v-model进行绑定,而无需通过插槽使用自定义组件详见 type-vue组件类型 VueComponent

vue组件类型 VueComponent

最后,type 也可以接收vue3 的相关组件,并仍可使用bind字段进行属性绑定,传入组件建议可通过v-model进行双向绑定,因内部实现方法为modelValueonUpdate:modelValue进行的v-mode绑定,

既:自开发组件

  • 满足<componentName v-model="data">时,即可满足其条件

为方便,作者复用elementUI的ElInput组件作为传入组件

<template><div style="padding: 50px"><FormPage ref="FormPageRef" v-model="formData" :formConfig="config"><template #slotModules> 插槽开发 </template></FormPage></div>
</template>
<script setup>
import { FormPage } from 'adminpage-vue3'
import { ref } from 'vue'
import { ElInput } from 'element-plus' //可以用你写的组件const formData = ref({})
const config = [{label: '自定义组件',key: 'DIY',type: ElInput,bind: {type: 'textarea',},},
]
</script>

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/376999.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS识别不GDB文件地理数据库显示为空?

​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 点击学习——>遥感影像综合处理4大遥感软件ArcGISENVIErdaseCognition 我们经常会碰到拷贝的GDB文件ArcGIS无法识别&#xff0c;软件只是把他当做普通的文件夹去看待&am…

2024最新Cloudways主机使用教程(含最新Cloudways折扣码)

Cloudways是一家提供云托管服务的公司&#xff0c;可以帮助你轻松管理和运行你的网站。本教程是Cloudways主机注册和使用教程。Cloudways界面简洁&#xff0c;使用方便&#xff0c;不需要复杂的设置&#xff0c;就能快速搭建一个WordPress网站。它的主机功能包括高级缓存和Bree…

[IDEA插件] JarEditor 编辑jar包(直接新增、修改、删除jar包内的class文件)

文章目录 1. 安装插件 JarEditor2. 在IDEA中添加外部JAR包3. JarEditor 使用介绍 之前我们需要修改jar内文件的时候需要解压jar包&#xff0c;反编译class&#xff0c;新建java源文件&#xff0c;修改代码&#xff0c;再编译成class&#xff0c;替换jar包内的class文件。 现在…

C++入门 模仿mysql控制台输出表格

一、 说明 控制台输出表格&#xff0c;自适应宽度 二、 源码 #include <iostream> #include <map> #include <string> #include <vector>using namespace std;void printTable(vector<vector<string>> *pTableData) {int row pTableDa…

C:数据结构---算法

1.1排序算法 稳定排序 不稳定排序 ①冒泡排序&#xff08;稳定&#xff09; 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换他们两个。对每一对相邻元素作同样的工作&#xff0c;从开始第一对到结尾的最后一对 ②选择排序 在未排序序列中找到最小&#xff08;大…

vue2学习笔记3 - 开发环境知识补充:live server简介

学习笔记1搭建开发环境中&#xff0c;在vs code里安装了live server插件&#xff0c;后续多次使用open with live server来打开浏览器&#xff0c;展示代码运行效果。本着知其然也要知其所以然的态度&#xff0c;稍稍了解了一下Live server。 什么是Live Server Live Server是…

MFC Ribbon菜单 - 中英文实时切换方法

简介 最近在搞一个老外的项目&#xff0c;本来谈的好好的&#xff0c;纯英文界面。项目接近尾声了&#xff0c;又提出了中英文实时切换的新需求&#xff0c;没办法就只能想办法&#xff0c;毕竟客户最大嘛。 实现方法 还好本来的ribbon英文菜单不复杂&#xff0c;就用纯C编码…

【两大3D转换SDK对比】HOOPS Exchange VS. CAD Exchanger

在现代工业和工程设计领域&#xff0c;CAD数据转换工具是确保不同软件系统间数据互通的关键环节。HOOPS Exchange和CAD Exchanger是两款备受关注的工具&#xff0c;它们在功能、支持格式、性能和应用场景等方面有着显著差异。 本文将从背景、支持格式、功能和性能、应用场景等…

网络安全设备——EDR

网络安全中的EDR&#xff08;Endpoint Detection and Response&#xff0c;端点检测与响应&#xff09;是一种主动式的端点安全解决方案&#xff0c;它专注于监控、检测和响应计算机和终端设备上的安全威胁。以下是EDR的详细解释&#xff1a; 一、定义与功能 EDR是一种网络安…

第三方配件也能适配苹果了,iOS 18与iPadOS 18将支持快速配对

苹果公司以其对用户体验的不懈追求和对创新技术的不断探索而闻名。随着iOS 18和iPadOS 18的发布&#xff0c;苹果再次证明了其在移动操作系统领域的领先地位。 最新系统版本中的一项引人注目的功能&#xff0c;便是对蓝牙和Wi-Fi配件的配对方式进行了重大改进&#xff0c;不仅…

若依(RuoYi)开源框架-登录

学习目标&#xff1a; 使用&#xff0c;减少自己的工作量 学习优秀开源项目底层的编程思想&#xff0c;设计思路&#xff0c;提高自己的编程能力 环境要求&#xff1a;jdk1.8 MySQL Redis Maven Vue 使用若依&#xff1a; 1.下载并运行 2.看懂业务流程 3.进行二次开发 1.登录 …

【微信小程序开发】如何定义公共的js函数,其它页面可以调用

在微信小程序开发中&#xff0c;可以通过以下步骤定义和使用公共的 JS 函数&#xff0c;使得其它页面可以调用&#xff1a; 1. 创建一个公共的 JS 文件&#xff1a;在项目的 utils 目录下创建一个 JS 文件&#xff0c;例如 utils/util.js。 2. 定义公共函数&#xff1a;在 uti…

QUIC的Stream

QUIC的流介绍 Streams in QUIC provide a lightweight, ordered byte-stream abstraction to an application. Streams can be unidirectional or bidirectional. QUIC allows for an arbitrary number of streams to operate concurrently and for an arbitrary amount of da…

搞定ES6同步与异步机制、async/await的使用以及Promise的使用!

文章目录 同步和异步async/awaitPromisePromise的概念 同步和异步 ​ 同步&#xff1a;代码按照编写顺序逐行执行&#xff0c;后续的代码必须等待当前正在执行的代码完成之后才能执行&#xff0c;当遇到耗时的操作&#xff08;如网络请求等&#xff09;时&#xff0c;主线程会…

MySQL高级面试点

Explain语句结果中各个字段分别代表什么 id&#xff1a;查询语句没出现一个select关键字&#xff0c;MySQL就会给他分配一个唯一id select_type&#xff1a; select关键字对应哪个查询的类型 simple&#xff1a;简单的查询 不包含任何子查询 primary&#xff1a;查询中如果…

TongRDS 2214 docker版指引(by lqw )

文章目录 前言准备工作中心节点服务节点哨兵节点 前言 部署docker版本&#xff0c;建议先参考TongRDS2214手动部署版指引&#xff08;by lqwsy&#xff09; 在本地手动部署了一套适合业务场景的rds 服务后&#xff0c;再通过dockerfile 打镜像。 准备工作 1.准备对应的安装包…

【大语言模型】私有化搭建-企业知识库-知识问答系统

下面是我关于大语言模型学习的一点记录 目录 人工智能学习路线 MaxKB 系统(基于大语言模型的知识问答系统) 部署开源大语言模型LLM 1.CPU模式(没有好的GPU&#xff0c;算力和效果较差) 2.GPU模式&#xff08;需要有NVIDIA显卡支持&#xff09; Ollama网络配置 Ollama前…

Android 自定义Edittext 和TextView 提示文字和填入内容不同的粗细组件

近期项目中又EditText 以及TextView 这两个组件需要用到提示文字 以及 填入文字要保持不同的粗细程度,所以记录一下 首先 是EditText 组件的自定义 BLEditText 继承的这个组件是一个三方的组件,可以在很大程度上减少drawable的编写,有兴趣的可以去相关的Git去看一下 点击查看,…

Elasticsearch:介绍 retrievers - 搜索一切事物

作者&#xff1a;来自 Elastic Jeff Vestal, Jack Conradson 在 8.14 中&#xff0c;Elastic 在 Elasticsearch 中引入了一项名为 “retrievers - 检索器” 的新搜索功能。继续阅读以了解它们的简单性和效率&#xff0c;以及它们如何增强你的搜索操作。 检索器是 Elasticsearc…

Redis的安装配置及IDEA中使用

目录 一、安装redis&#xff0c;配置redis.conf 1.安装gcc 2.将redis的压缩包放到指定位置解压 [如下面放在 /opt 目录下] 3.编译安装 4.配置redis.conf文件 5.开机自启 二、解决虚拟机本地可以连接redis但是主机不能连接redis 1.虚拟机网络适配器网络连接设置为桥接模式…