当前位置:首页 > VUE

vue实现预约功能

2026-03-10 03:40:42VUE

预约功能的基本实现

在Vue中实现预约功能通常需要结合表单处理、数据验证和API交互。以下是一个基本的实现方法:

创建预约表单组件 使用Vue的v-model实现表单数据双向绑定,包含姓名、联系方式、预约时间等字段。

<template>
  <form @submit.prevent="submitAppointment">
    <input v-model="form.name" placeholder="姓名" required>
    <input v-model="form.phone" placeholder="电话" required>
    <input v-model="form.date" type="datetime-local" required>
    <textarea v-model="form.notes" placeholder="备注"></textarea>
    <button type="submit">提交预约</button>
  </form>
</template>

设置数据模型和提交逻辑 在script部分定义数据模型和处理函数。

<script>
export default {
  data() {
    return {
      form: {
        name: '',
        phone: '',
        date: '',
        notes: ''
      }
    }
  },
  methods: {
    async submitAppointment() {
      try {
        const response = await axios.post('/api/appointments', this.form)
        alert('预约成功')
      } catch (error) {
        console.error('预约失败:', error)
      }
    }
  }
}
</script>

预约时间选择优化

使用日期选择器组件 集成第三方日期选择器如vue-datepicker提升用户体验。

import DatePicker from 'vue2-datepicker'
import 'vue2-datepicker/index.css'

export default {
  components: { DatePicker },
  data() {
    return {
      date: null,
      timeOptions: {
        disabledDate(date) {
          return date < new Date()
        }
      }
    }
  }
}

模板中使用日期选择器

<date-picker 
  v-model="form.date" 
  :disabled-date="timeOptions.disabledDate"
  type="datetime">
</date-picker>

预约数据验证

前端验证 使用Vuelidate等验证库确保输入数据有效性。

import { required, minLength, numeric } from 'vuelidate/lib/validators'

export default {
  validations: {
    form: {
      name: { required },
      phone: { required, numeric, minLength: minLength(8) },
      date: { required }
    }
  }
}

模板中显示错误信息

<div v-if="$v.form.name.$error">
  <span v-if="!$v.form.name.required">姓名必填</span>
</div>

预约状态管理

使用Vuex管理预约数据 在store中定义预约相关状态和操作。

const store = new Vuex.Store({
  state: {
    appointments: []
  },
  mutations: {
    ADD_APPOINTMENT(state, appointment) {
      state.appointments.push(appointment)
    }
  },
  actions: {
    async addAppointment({ commit }, formData) {
      const response = await axios.post('/api/appointments', formData)
      commit('ADD_APPOINTMENT', response.data)
    }
  }
})

组件中调用action

methods: {
  submitAppointment() {
    this.$store.dispatch('addAppointment', this.form)
  }
}

预约列表展示

创建预约列表组件 展示已提交的预约信息。

vue实现预约功能

<template>
  <div v-for="appointment in appointments" :key="appointment.id">
    <p>{{ appointment.name }} - {{ formatDate(appointment.date) }}</p>
  </div>
</template>

<script>
export default {
  computed: {
    appointments() {
      return this.$store.state.appointments
    }
  },
  methods: {
    formatDate(date) {
      return new Date(date).toLocaleString()
    }
  }
}
</script>

标签: 功能vue
分享给朋友:

相关文章

vue实现截图

vue实现截图

Vue 实现截图的方法 使用 html2canvas 库 安装 html2canvas 库: npm install html2canvas 在 Vue 组件中使用: import html2ca…

vue实现xss

vue实现xss

XSS 攻击简介 XSS(跨站脚本攻击)是一种常见的安全漏洞,攻击者通过注入恶意脚本到网页中,当其他用户访问该页面时,脚本会在其浏览器中执行,可能导致数据泄露或会话劫持。 Vue 中的 XSS…

vue 实现递归

vue 实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据,例如菜单、评论列表或文件目录。以下是实现递归组件的关键步骤: 定义递归组件 递归组件需要设置 name 属性,以便在模…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…

vue网页实现

vue网页实现

Vue 网页实现指南 环境准备 安装 Node.js 和 npm/yarn,确保环境配置正确。使用 Vue CLI 或 Vite 创建项目框架,快速搭建开发环境。 npm install -g @v…

vue实现表单

vue实现表单

Vue 表单实现方法 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定。适用于 input、textarea、select 等元素。 <template> <…