使用Vue与MarsCode实现信息分步填写表单

前言

在日常开发中,表单作为一项常用的功能组件,其设计与实现往往需要借助各类有效的工具和技术手段。今天,我们将引入豆包 MarsCode,并借助 Vue 与 Element-Plus 这两项强大的技术,尝试打造一个较为复杂的、支持分步填写的表单。豆包 MarsCode 会在整个表单构建过程中为我们提供诸多思路与代码示例方面的帮助,助力我们利用 Vue 和 Element-Plus 的丰富特性,一步步搭建出符合需求的复杂分步填写表单,接下来让我们一起看看具体的实现步骤吧。

表单框架搭建

最初,我们设定要创建一个用于收集学生基本信息的表单,其涵盖的具体信息包含了学号、姓名、性别、出生日期、民族、年级、班级、是否班干部、家庭住址、家长姓名、家长联系电话以及入学时间等多个方面。基于这样的需求,我们期望通过 Element-Plus 来实现该表单的搭建,以此为后续功能完善奠定基础。

问:我想做一个表单,表单的信息为学生的基本信息,包括学号,姓名,性别,出生日期,民族,年级,班级,是否班干部,家庭住址,家长姓名,家长联系电话,入学时间;请用element-plus帮我实现。

效果:

表单调整

在获取到由 AI 生成的初始代码以及相应的展示效果后,我们经过仔细审视,决定对其进行多方面的优化调整:

  • 优化输入框布局:原先每行仅放置一个输入框的布局方式,使得页面看起来较为空旷,视觉效果不够紧凑。因此,我们将其调整为一行容纳两个输入框的布局形式。
  • 改进部分字段输入方式:考虑到表单中部分字段的特性,像民族这一选项,由于存在固定的 56 个民族可供选择,为了方便用户操作,我们将其设置为既可以通过下拉菜单进行选择,同时也支持输入内容来匹配查找相应民族。
  • 设置输入限制条件:针对联系电话这类有着明确格式要求的字段,我们应对其添加输入限制,即只能输入 11 位数字的手机号。
  • 添加输入提示信息 :为了进一步提升用户体验,让用户在填写表单时能够更加清晰地知晓每个输入框的填写要求,我们给每一个输入框都添加了 placeholder 提示信息。
  • 调整表单边距:最后,为了让表单在整个页面中的显示更为协调美观,左右加上10%边距。

问:调整表单一行容纳两个输入框;民族有56个民族进行选择,也可以通过输入进行搜索选择;联系电话限制只能输入11位数字手机号,每一个输入框都加上placeholder提示,左右加上10%边距。

可以看到在这个修改后的代码中,豆包给我们使用了 el-rowel-col 组件来实现一行容纳两个输入框的布局。同时,为每个输入框添加了 placeholder 提示,并对民族选择设置成可输入匹配查找模式。对于联系电话,使用了 pattern 属性来限制只能输入 11 位数字手机号。此外,还为表单添加了左右 10% 的边距。

完善信息

在顺利完成学生基本信息相关表单的构建与调整工作后,我们还需要进一步丰富表单所收集的信息内容,于是着手添加学生的 健康信息 以及 学习习惯信息 部分。

具体涵盖了诸如是否有过敏史、既往病史、视力情况(左眼)、视力情况(右眼)、性格特点(大致描述)、与同学相处情况、心理压力状况(大致评估)、学习方法偏好、预习习惯、复习习惯、阅读能力水平、获得的校内奖励、受到的校内处分等诸多详细信息。

这回豆包给我们返回了大量的代码,把整个页面代码都给了我们,我们的框架已经有了,只需要将我们需要的表单新加代码字段拷贝过来。

随着需要填写的字段数量显著增多,为了让整个信息填写流程更加条理清晰、便于用户操作,我们对这些众多的字段进行分类整理,将它们分别归类到基本信息、健康信息以及学习情况信息这三个不同的类别之中。

采用 Element-Plus 中的 el-steps 组件,把与之对应的三张表单划分为三个连续的步骤。在每个表单的下方,依次设置了 "下一步" 按钮,以此引导用户按照既定的顺序逐步进行填写操作。

当用户认真完成了这三个表单的所有填写内容后,最后一个表单下方的 "下一步" 按钮会自动变换为 "提交" 按钮,方便用户将完整填写好的信息进行提交。

问:将所有的字段分类到基本信息,健康状态和学习习惯三个表单中,使用 el-steps 组件将三张表单分为三个步骤,各表单依次设置 "下一步" 按钮引导填写,三张表单都填完出现 "提交" 按钮。

可以看到,豆包给我们增加了步骤条并将所有的字段分类到了 basicInfo、healthStatus 和 learningHabits 三个对象中,并将它们嵌套在 studentForm 对象中,通过activeStep来控制步骤条。

页面调整

页面还不太美观,我们再调整下页面

  • 优化表单边距:我们给表单的上下边距统一添加 40px,使得表单在页面中的位置更加适中。
  • 增加标签宽度:考虑到表单 label 与输入框之间的排版协调性,适当将表单 label 的宽度增加到200px,避免label显示换行。

在具体的操作实现上,增加表单边距和标签宽度这两项调整相对来说较为简便易行。我们只需直接在 el-form 组件上添加相应的属性即可,具体代码如下:

ini 复制代码
<el-form :model="studentForm" label-width="200px" v-if="activeStep === 0" style="margin: 40px 0">
  • 调整按钮布局:为了使页面整体更加简洁大方,我们把原本位于表单内部的按钮统一移到了表单之外,并通过相应的 CSS 样式设置,让这些按钮能够在页面中居中显示。

看到我们表单的代码已经比较多了,倘若全部生成全部代码会很耗时,这时我们用到豆包的局部修改功能,先准确选中需要修改的那部分代码,然后再向豆包提出针对性的修改需求,以此来完成页面的局部调整工作。

将豆包提供的按钮 Vue 代码以及 CSS 文件拷贝过来,融入到项目代码中,即可实现按钮布局等相关页面元素的优化调整。

最后,在提交页面后,提示提交成功。

javascript 复制代码
submitForm() {
  this.nextStep();
  this.$message.success('提交成功');
}

最终效果:

总结

通过上述步骤,我们利用 Element-Plus 结合豆包 MarsCode 成功构建了学生信息分步填写表单。在实际应用里,还可按具体需求进一步完善,像增加必填项的醒目标识,让用户更易区分;完善输入校验,对特殊格式要求的信息给出精准错误提示。也可考虑适配更多浏览器,保障使用的兼容性。最后,未来期待继续借助豆包 MarsCode 这一得力工具,挖掘更多开发思路,打造出更多实用、易用的功能,完成更多相关业务场景。

相关推荐
别发呆了吧2 小时前
vue路由模式面试题
前端·javascript·vue.js·前端面试题
代码对我眨眼睛3 小时前
vite+vue3动态引入资源文件(问题已解决但离了个大谱)
开发语言·javascript·vue.js
humors2214 小时前
怎样修改el-table主题样式
运维·前端·vue.js·node.js
我姓徐4 小时前
根据 el-dialog 的高度动态计算 el-table 的高度
javascript·vue.js·elementui
明月看潮生5 小时前
青少年编程与数学 02-006 前端开发框架VUE 03课题、编写APP组件
前端·javascript·vue.js·青少年编程·编程与数学
2401_853275736 小时前
vue请求后端需要哪些问题
前端·javascript·vue.js
有心还是可以做到的嘛8 小时前
跨层组件通信Vue3【传递数据和方法】
前端·javascript·vue.js
一个处女座的程序猿O(∩_∩)O8 小时前
vue3 vite 使用 代理转发
vue.js
nihao5619 小时前
Vue 百度地图 搜索框+点击地图获取坐标
vue.js·百度