当前位置:首页 > VUE

vue实现预约页面

2026-01-07 00:11:04VUE

Vue 预约页面实现步骤

准备工作
安装Vue CLI创建项目,确保已配置好开发环境。使用vue create appointment-page初始化项目,选择默认配置或手动配置。

页面结构设计
src/views目录下创建Appointment.vue文件,设计基础模板:

<template>
  <div class="appointment-container">
    <h1>预约服务</h1>
    <form @submit.prevent="handleSubmit">
      <!-- 表单内容将在此添加 -->
    </form>
  </div>
</template>

表单字段实现
添加常用预约字段,使用v-model进行双向绑定:

<div class="form-group">
  <label for="name">姓名</label>
  <input type="text" id="name" v-model="formData.name" required>
</div>
<div class="form-group">
  <label for="phone">联系电话</label>
  <input type="tel" id="phone" v-model="formData.phone" required>
</div>
<div class="form-group">
  <label for="date">预约日期</label>
  <input type="date" id="date" v-model="formData.date" required>
</div>

时间选择组件
集成第三方日期时间选择器(如vue-datepicker):

npm install vue-datepicker --save

在组件中引入:

<script>
import Datepicker from 'vue-datepicker';
export default {
  components: { Datepicker },
  data() {
    return {
      timeOptions: ['09:00', '10:00', '11:00', '14:00', '15:00']
    }
  }
}
</script>

表单验证
使用Vuelidate进行验证:

npm install vuelidate --save

配置验证规则:

import { required, minLength, numeric } from 'vuelidate/lib/validators'
export default {
  validations: {
    formData: {
      name: { required },
      phone: { required, numeric, minLength: minLength(11) },
      date: { required }
    }
  }
}

提交逻辑处理
实现表单提交方法:

methods: {
  handleSubmit() {
    this.$v.$touch();
    if (!this.$v.$invalid) {
      axios.post('/api/appointments', this.formData)
        .then(response => {
          alert('预约成功');
        })
        .catch(error => {
          console.error(error);
        });
    }
  }
}

样式优化
添加CSS样式增强用户体验:

.appointment-container {
  max-width: 600px;
  margin: 0 auto;
  padding: 20px;
}
.form-group {
  margin-bottom: 15px;
}
.error-message {
  color: red;
  font-size: 12px;
}

响应式处理
使用Vue的响应式特性动态显示可选时间:

<div v-if="formData.date">
  <label>选择时间</label>
  <select v-model="formData.time">
    <option v-for="time in availableTimes" :key="time">{{ time }}</option>
  </select>
</div>

最终整合
将所有部分组合成完整组件,确保表单提交后重置字段:

vue实现预约页面

data() {
  return {
    formData: {
      name: '',
      phone: '',
      date: '',
      time: ''
    },
    availableTimes: []
  }
},
methods: {
  resetForm() {
    this.formData = {
      name: '',
      phone: '',
      date: '',
      time: ''
    };
    this.$v.$reset();
  }
}

标签: 页面vue
分享给朋友:

相关文章

vue按钮实现截屏

vue按钮实现截屏

Vue 按钮实现截屏的方法 在 Vue 项目中实现截屏功能可以通过多种方式完成,以下是几种常见的方法: 使用 html2canvas 库 安装 html2canvas 库: npm install…

vue优秀实现

vue优秀实现

Vue.js 优秀实现方法 响应式数据管理 使用 Vue 的 ref 和 reactive 处理基础类型和对象类型数据,结合 computed 计算属性优化渲染性能。对于复杂状态,推荐 Pinia 替…

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

实现 vue 框架

实现 vue 框架

Vue 框架的基本实现 Vue 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现 Vue 框架的基本步骤和核心概念。 核心概念 响应式数据绑定 Vue 的核心特性之一是响应式数…

vue实现RTMP

vue实现RTMP

Vue 中实现 RTMP 流播放 RTMP(Real-Time Messaging Protocol)是一种用于实时音视频流传输的协议。在 Vue 中实现 RTMP 播放通常需要借助第三方库或播放器。…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref=…