当前位置:首页 > VUE

vue实现销假功能

2026-02-18 04:34:38VUE

实现销假功能的基本思路

销假功能通常涉及前端表单提交、数据验证、与后端API交互等环节。以下以Vue 3 + Element Plus为例,展示核心实现方法。

表单组件设计

<template>
  <el-form :model="leaveForm" :rules="rules" ref="formRef">
    <el-form-item label="请假类型" prop="leaveType">
      <el-select v-model="leaveForm.leaveType">
        <el-option label="年假" value="annual"></el-option>
        <el-option label="病假" value="sick"></el-option>
      </el-select>
    </el-form-item>

    <el-form-item label="销假时间" prop="cancelTime">
      <el-date-picker 
        v-model="leaveForm.cancelTime" 
        type="datetime"
        placeholder="选择销假时间">
      </el-date-picker>
    </el-form-item>

    <el-form-item>
      <el-button type="primary" @click="submitForm">提交销假</el-button>
    </el-form-item>
  </el-form>
</template>

数据与验证规则

<script setup>
import { ref } from 'vue'

const formRef = ref(null)
const leaveForm = ref({
  leaveId: '',  // 请假记录ID
  leaveType: '',
  cancelTime: ''
})

const rules = {
  leaveType: [
    { required: true, message: '请选择请假类型', trigger: 'change' }
  ],
  cancelTime: [
    { required: true, message: '请选择销假时间', trigger: 'change' }
  ]
}
</script>

提交逻辑实现

const submitForm = async () => {
  try {
    await formRef.value.validate()

    const response = await axios.post('/api/leave/cancel', {
      leaveId: leaveForm.value.leaveId,
      cancelTime: leaveForm.value.cancelTime
    })

    ElMessage.success('销假成功')
    emit('success')  // 触发成功事件
  } catch (error) {
    ElMessage.error(error.response?.data?.message || '销假失败')
  }
}

状态管理建议

对于需要全局管理的销假状态,可以使用Pinia:

vue实现销假功能

// stores/leaveStore.js
import { defineStore } from 'pinia'

export const useLeaveStore = defineStore('leave', {
  state: () => ({
    cancelledLeaves: []
  }),
  actions: {
    async cancelLeave(leaveId) {
      const res = await cancelLeaveApi(leaveId)
      this.cancelledLeaves.push(res.data)
      return res
    }
  }
})

注意事项

  • 确保销假时间晚于请假开始时间
  • 处理重复提交问题(可通过按钮loading状态)
  • 考虑添加销假原因文本输入字段
  • 移动端适配可能需要调整日期选择器样式

后端API应验证请假记录是否存在、是否已销假等业务规则,返回相应的状态码和提示信息。

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

相关文章

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐藏。…

vue vnode实现

vue vnode实现

Vue VNode 实现原理 VNode(Virtual Node)是 Vue 的核心概念之一,用于描述真实 DOM 的轻量级虚拟表示。VNode 的实现涉及以下关键点: VNode 的基本结构 V…

vue实现编辑

vue实现编辑

Vue 实现编辑功能 在 Vue 中实现编辑功能通常涉及表单绑定、状态管理和事件处理。以下是一个常见的实现方法: 双向数据绑定 使用 v-model 指令实现表单元素与数据的双向绑定: <i…

vue 实现评分

vue 实现评分

Vue 实现评分功能 在 Vue 中实现评分功能可以通过多种方式完成,包括使用第三方组件库或自定义实现。以下是两种常见的方法: 使用第三方组件库(如 Element UI) Element UI 提…

vue nexttick 实现

vue nexttick 实现

Vue nextTick 实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它主要用于确保在 DOM 更新完成后执行某些操作。 核心实现机制 ne…