当前位置:首页 > VUE

vue实现销假功能

2026-02-18 04:34:38VUE

vue实现销假功能

实现销假功能的基本思路

销假功能通常涉及前端表单提交、数据验证、与后端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:

// 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
分享给朋友:

相关文章

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Des…

vue实现分类

vue实现分类

Vue实现分类功能的方法 使用v-for和计算属性 通过计算属性对数据进行分类处理,结合v-for渲染分类后的列表。示例代码: <template> <div>…

vue实现cs

vue实现cs

Vue 实现 CS(Client-Side)渲染的常见方法 Vue.js 是一个用于构建用户界面的渐进式框架,默认采用客户端渲染(CSR)。以下是几种常见的实现方式: 使用 Vue CLI 创建项目…

vue实现标题

vue实现标题

Vue 实现标题的方法 在Vue中实现标题可以通过多种方式,以下是几种常见的方法: 方法一:使用模板语法 在Vue组件的模板中直接使用HTML的<h1>到<h6>标签来…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…