【Uniapp 插件】una-form / una-app-form 表单组件:申请发票、个人信息表单快速搭建
前言推荐一个写博客的效率工具 CSDN AI数字营销会员核心功能✅ 多平台一键同步 → 一次发文同步6个平台✅ 全维度数据监测 → 所有平台数据一个面板看✅ 营销组件 → 文末合规放公众号/产品推广✅ GEO检测 → 看你文章在AI平台的曝光情况对我这种多平台发文的人来说光同步功能就值回票价了。写博客的朋友可以看看https://mp.csdn.net/vip?utm_sourcefx-blog-qq_45954390————————————————在移动端业务开发中表单页面是非常高频的场景比如申请发票、个人信息、联系人资料、入住人信息、订单补充信息等。这类页面看起来并不复杂但实际开发时经常会遇到几个重复问题每个页面都要重新写表单卡片、标题、字段行、底部按钮普通uni-app和uni-app x的组件写法、样式兼容存在差异uni-app x / uvue对部分 CSS 写法限制更严格很多 Web 习惯写法不能直接用表单提交时需要统一处理必填校验、提交结果、重置逻辑因此我写了两个表单插件una-form适用于普通uni-app Vue3项目una-app-form适用于uni-app x / uvue项目一、插件介绍1.una-form 是什么una-form是一个基于uni-app Vue3的轻量表单组件。它采用schema配置方式渲染表单字段适合快速搭建常见业务表单例如申请发票表单个人信息表单联系人信息表单入住人资料表单订单补充信息表单组件内置常见字段类型、必填校验、提交和重置按钮适合普通uni-app项目直接使用。2.una-app-form 是什么una-app-form是一个基于uni-app x / uvue的轻量表单容器组件。由于uni-app x / uvue在多端编译时对动态对象、CSS 写法、部分 Web 样式能力要求更严格所以una-app-form没有采用复杂的动态 schema 渲染而是采用更稳妥的插槽方式插件负责统一表单卡片、标题、副标题、底部按钮、主题色业务页面自己在插槽中编写具体字段更适合 App Android、iOS、鸿蒙端稳定编译3. 两个插件的区别插件适用项目实现方式适合场景una-form普通 uni-app Vue3schema 配置式表单快速生成字段较固定的表单una-app-formuni-app x / uvue插槽式表单容器App 端稳定表单布局简单理解如果你的项目是普通uni-app Vue3优先使用una-form如果你的项目是uni-app x / uvue优先使用una-app-form4. 功能特性una-form特性支持text、number、textarea、select、radio、tags支持schema配置式渲染支持必填校验提交时返回valid / values / errors支持自定义主题色支持标题、副标题、提交按钮、重置按钮适合普通uni-app Vue3una-app-form特性支持uni-app x / uvue支持 Android、iOS、鸿蒙 App支持表单卡片、标题、副标题、底部按钮支持自定义主题色、背景色、圆角使用默认插槽承载业务字段避免复杂动态 schema 导致 uvue 编译不稳定样式使用px单位减少 App 端 CSS 兼容问题二、una-form 使用说明1. 插件目录将插件放入项目的uni_modules目录uni_modules/una-form组件文件目录uni_modules/una-form/components/una-form/una-form.vue如果 HBuilderX 没有自动识别组件可以检查目录名称是否一致。2. 申请发票表单示例templateuna-formv-modelinvoiceFormtitle申请发票subtitle填写发票抬头、税号和接收邮箱:schemainvoiceSchemathemeColor#2979ffsubmitText提交申请submithandleInvoiceSubmit//templatescriptsetupimport{ref}fromvue;constinvoiceFormref({invoiceType:company,title:,taxNo:,email:,amount:,remark:});constinvoiceSchema[{key:invoiceType,label:发票类型,type:radio,required:true,options:[{label:企业,value:company},{label:个人,value:personal}]},{key:title,label:发票抬头,type:text,required:true,placeholder:请输入发票抬头},{key:taxNo,label:纳税人识别号,type:text,required:true,placeholder:请输入税号},{key:email,label:接收邮箱,type:text,required:true,placeholder:请输入邮箱地址},{key:amount,label:发票金额,type:number,placeholder:请输入金额},{key:remark,label:备注,type:textarea,placeholder:可填写开票说明}];functionhandleInvoiceSubmit(event){if(!event.valid)return;console.log(发票表单提交,event.values);}/script3. 个人信息表单示例templateuna-formv-modelprofileFormtitle个人信息subtitle用于演示常见资料字段填写:schemaprofileSchemathemeColor#10b981submitText保存信息submithandleProfileSubmit//templatescriptsetupimport{ref}fromvue;constprofileFormref({name:,phone:,gender:female,identity:,address:});constprofileSchema[{key:name,label:姓名,type:text,required:true,placeholder:请输入姓名},{key:phone,label:手机号,type:number,required:true,placeholder:请输入手机号},{key:gender,label:性别,type:tags,options:[{label:女士,value:female},{label:男士,value:male},{label:保密,value:unknown}]},{key:identity,label:证件号,type:text,placeholder:请输入证件号码},{key:address,label:联系地址,type:textarea,placeholder:请输入常用联系地址}];functionhandleProfileSubmit(event){if(!event.valid)return;console.log(个人信息提交,event.values);}/script4. Props 参数参数说明类型默认值v-model表单数据对象Object{}schema表单字段配置Array[]title表单标题Stringsubtitle表单副标题StringthemeColor主题色String#2979ffbackgroundColor表单背景色String#ffffffdisabled是否禁用表单BooleanfalseshowActions是否显示底部按钮BooleantrueshowReset是否显示重置按钮BooleantruesubmitText提交按钮文案String提交resetText重置按钮文案String重置5. Events 事件事件名说明返回值change单个字段变更时触发{ key, value, values }submit点击提交时触发{ valid, values, errors }reset点击重置时触发重置后的表单对象6. Schema 字段配置字段说明key字段名对应v-model对象中的属性label表单项标题type字段类型支持text、number、textarea、select、radio、tagsplaceholder输入占位提示required是否必填message必填校验失败提示optionsselect、radio、tags的选项数组defaultValue点击重置时使用的默认值disabled是否禁用单个字段options示例[{label:企业,value:company},{label:个人,value:personal}]三、una-app-form 使用说明1. 插件目录将插件放入项目的uni_modules目录uni_modules/una-app-form组件文件目录uni_modules/una-app-form/components/una-app-form/una-app-form.uvue2. 申请发票表单示例templateuna-app-formtitle申请发票subtitle填写发票信息和接收邮箱themeColor#2979FFsubmitText提交申请submitsubmitInvoiceresetresetInvoiceviewclassform-fieldtextclassform-field__label发票抬头/textinputclassform-field__input:valueinvoiceTitleplaceholder请输入发票抬头inputonInvoiceTitleInput//viewviewclassform-fieldtextclassform-field__label税号/textinputclassform-field__input:valueinvoiceTaxNoplaceholder请输入纳税人识别号inputonInvoiceTaxNoInput//view/una-app-form/templatescriptsetuplangutsconstinvoiceTitlerefstring()constinvoiceTaxNorefstring()functiononInvoiceTitleInput(event:UniInputEvent){invoiceTitle.valueevent.detail.value}functiononInvoiceTaxNoInput(event:UniInputEvent){invoiceTaxNo.valueevent.detail.value}functionsubmitInvoice(){if(invoiceTitle.value.length0){uni.showToast({title:请填写发票抬头,icon:none})return}if(invoiceTaxNo.value.length0){uni.showToast({title:请填写税号,icon:none})return}console.log(提交发票信息)}functionresetInvoice(){invoiceTitle.valueinvoiceTaxNo.value}/script3. 个人信息表单示例templateuna-app-formtitle个人信息subtitle用于演示常见资料字段填写themeColor#10B981submitText保存信息submitsubmitProfileresetresetProfileviewclassform-fieldtextclassform-field__label姓名/textinputclassform-field__input:valueprofileNameplaceholder请输入姓名inputonProfileNameInput//viewviewclassform-fieldtextclassform-field__label手机号/textinputclassform-field__inputtypenumber:valueprofilePhoneplaceholder请输入手机号inputonProfilePhoneInput//view/una-app-form/templatescriptsetuplangutsconstprofileNamerefstring()constprofilePhonerefstring()functiononProfileNameInput(event:UniInputEvent){profileName.valueevent.detail.value}functiononProfilePhoneInput(event:UniInputEvent){profilePhone.valueevent.detail.value}functionsubmitProfile(){if(profileName.value.length0){uni.showToast({title:请填写姓名,icon:none})return}if(profilePhone.value.length0){uni.showToast({title:请填写手机号,icon:none})return}console.log(提交个人信息)}functionresetProfile(){profileName.valueprofilePhone.value}/script4. Props 参数参数说明类型默认值title表单标题Stringsubtitle表单副标题StringthemeColor主题色String#2979ffbackgroundColor表单背景色String#FFFFFFradius表单圆角String12pxshowActions是否显示底部按钮BooleantrueshowReset是否显示重置按钮BooleantruesubmitText提交按钮文案String提交resetText重置按钮文案String重置5. Events 事件事件名说明submit点击提交按钮触发reset点击重置按钮触发五. 表单校验建议放在提交时统一处理对于复杂业务表单建议在提交时统一校验。例如functionhandleSubmit(event){if(!event.valid)return;// 调用接口}uni-app x中也可以在submit方法里自行判断字段function submitProfile() { if (profileName.value.length 0) { uni.showToast({ title: 请填写姓名, icon: none }) return } }

相关新闻

科伦博泰:默沙东启动芦康沙妥珠单抗+PD-1/VEGF联合治疗全球二期临床

科伦博泰:默沙东启动芦康沙妥珠单抗+PD-1/VEGF联合治疗全球二期临床

2026年7月,科伦博泰合作伙伴默沙东启动了TROP2 ADC 芦康沙妥珠单抗(sac-TMT,佳泰莱)MK-2010(PD-1/VEGF双抗)联合治疗晚期实体瘤的全球二期临床试验MK-2010-003。2022年5月,默沙东以4700万美元预付款,13.63亿…

2026/10/13 1:19:08 阅读更多 →
商品预算拆解方法:如何从年度目标规划到季度、波段和门店?

商品预算拆解方法:如何从年度目标规划到季度、波段和门店?

很多鞋服品牌做商品预算时,年度销售目标并不是最难的部分。真正困难的是:如何把一个年度经营目标,转化成可以买货、能上市、可销售、可复盘的商品计划。年度目标确定以后,商品总真正关心的是:这一年能投入多少货值&…

2026/10/12 17:32:23 阅读更多 →
终极网页资源嗅探工具:猫抓浏览器扩展完整指南

终极网页资源嗅探工具:猫抓浏览器扩展完整指南

终极网页资源嗅探工具:猫抓浏览器扩展完整指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾经遇到过这样的情况&#xff1a…

2026/9/26 7:34:30 阅读更多 →

最新新闻

Agent技能拆解与编排实战:从碎片化到体系化

Agent技能拆解与编排实战:从碎片化到体系化

1. 技能碎片化:Agent落地的头号瓶颈这段时间在折腾智能体项目,我最大的体会就是:真正卡住进度的往往不是模型选型,不是推理框架,而是“技能”这层皮。模型再聪明,碰到实际任务时还是靠一个个具体技能去接活…

2026/10/13 8:39:55 阅读更多 →
reactor-core 基准测试实战:JMH 任务使用指南(benchmarks 模块)

reactor-core 基准测试实战:JMH 任务使用指南(benchmarks 模块)

后端异步编程 【免费下载链接】reactor-core Non-Blocking Reactive Foundation for the JVM 项目地址: https://gitcode.com/gh_mirrors/re/reactor-core 点击查看 免费下载 导读 本文以 benchmarks/README.md 为核心,系统讲解 reactor-core 仓库中 b…

2026/10/13 8:39:55 阅读更多 →
SonarQube报告解读:常见质量问题排查与修复实践

SonarQube报告解读:常见质量问题排查与修复实践

工作里接触到越来越多的团队把白盒测试和代码评审绑在一起做,而 SonarQube 几乎是绕不开的那道坎。它不直接帮你跑测试用例,却能在你每次提交代码后,从静态分析的角度告诉你“这里可能会炸”“那里是一个隐患”。我最初接触 SonarQube 时&…

2026/10/13 8:39:55 阅读更多 →
基于Vue与Node.js的同城民宿管理系统设计与实现

基于Vue与Node.js的同城民宿管理系统设计与实现

接手这类偏业务的开发项目,往往不是因为技术本身有多难,而是需求背后那堆"说不清道不明"的日常琐碎。去年夏天,一位做短租的经营者找到我,手里管着十几套分布在不同小区的民宿,订单、房态、保洁排班全靠Exce…

2026/10/13 8:39:55 阅读更多 →
报错别直接丢给AI:最小复现示例让AI改代码不再越改越乱

报错别直接丢给AI:最小复现示例让AI改代码不再越改越乱

先问一句:你有没有经历过这种场景——让AI改一段代码,第一次报错A,它给你改了;跑一下变成报错B,再让它改,变成报错C;改到第五轮,你发现项目里多了好几个没用的函数、几处重复的逻辑&…

2026/10/13 8:39:55 阅读更多 →
LiteLLM实战:统一大模型API网关的部署、路由与预算控制

LiteLLM实战:统一大模型API网关的部署、路由与预算控制

做AI应用这一年多,我最大的感受是:模型本身其实不是瓶颈,真正让人头大的是怎么把一堆杂七杂八的模型接入、路由、计费、限流这些东西收拾利索。LiteLLM这个开源项目,说白了就是帮你把这件事打包干完——它把市面上主流的大模型API…

2026/10/13 8:38:54 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →