学生请假系统学习二

学生页面有新增请假的按钮的组件 和 请假列表的渲染

 

 

 

学生页面新增请假需要进行开始时间 和 结束时间的过滤

<template slot-scope="scope">{{scope.row.start|filterdate("yyyy-mm-dd hh: dd: ss")}}</template>

在main.js中写这个filter过滤的方法

Vue.filter("filterdate", (date, str) => {
  let datatoday = new Date(date)
  let year = datatoday.getFullYear()
  let month = datatoday.getMonth()
  let d = datatoday.getDate()
  let hours = datatoday.getHours()
  let m = datatoday.getMinutes()
  let s = datatoday.getSeconds()
  return str.replace("yyyy", year).replace("mm", month < 10 ? "0" + month : month).replace("dd", d).replace("hh", hours).replace("dd", m).replace("ss", s)


})

 

 

 

 

 

 

 

 

 

学生请假列表对应的组件

<template>
<div>
<add-Leave @additem="additem"></add-Leave>

<el-table :data="list" border style="width: 100%">
<el-table-column fixed prop="username" label="姓名" width="150"></el-table-column>
<el-table-column prop="reason" label="请假理由" width="120"></el-table-column>
<el-table-column label="开始时间" width="120">
<template slot-scope="scope">{{scope.row.start|filterdate("yyyy-mm-dd hh: dd: ss")}}</template>
</el-table-column>
<el-table-column prop="end" label="结束时间" width="120"></el-table-column>
<el-table-column prop="extend" label="附件" width="300"></el-table-column>
<el-table-column fixed="right" label="状态">
<template slot-scope="scope">
<el-button type="warning" v-if="scope.row.type == 1">待审批</el-button>
<el-button type="danger" v-else-if="scope.row.type == 3">已拒绝</el-button>
<el-button type="success" v-else>成功按钮</el-button>
</template>
</el-table-column>
</el-table>
</div>
</template>

学生请假列表对应的组件对应的方法

<script>
import addLeave from "../components/addLeaves.vue";
import leavesModel from "../model/leavesModel";
export default {
  data() {
    return {
      list: []
    };
  },

  components: {
    addLeave
  },
  async created() {
    let { data } = await leavesModel.query();
    console.log(data);
    this.list = data.data;
  },
  methods: {
    additem(item) {
      this.list.push(item);
    }
  }
};
</script>

查询学生请假的数据 有多少条数据  注意使用token  因为token里面有对应登录学生的userid  username  usertype

使用的接口

 query: (params) => {
        return axios({
            method: "get",
            url: "/api/leaves/studentquery",
            params,
            headers: {
                token: localStorage.getItem("token")

            }

        })
    },

 

新增学生请假的数据

新增的组件

<template>
  <div>
    <el-button type="primary" @click="showDialog">新增请假</el-button>

    <el-dialog title="新增请假信息" :visible.sync="dialogVisible" width="50%">
      <el-form
        :model="ruleForm"
        status-icon
        :rules="rules"
        ref="ruleForm"
        label-width="100px"
        class="demo-ruleForm"
      >
        <!-- 请假理由 -->
        <el-form-item label="请假理由" prop="reason">
          <el-input type="text" v-model="ruleForm.reason"></el-input>
        </el-form-item>
        <!-- 请假的开始时间 -->
        <el-form-item label="请假的开始时间" prop="start">
          <el-date-picker v-model="ruleForm.start" type="datetime" placeholder="选择开始时间"></el-date-picker>
        </el-form-item>

        <el-form-item label="请假的的结束时间" prop="end">
          <el-date-picker v-model="ruleForm.end" type="datetime" placeholder="选择结束时间"></el-date-picker>
        </el-form-item>
        <el-form-item label="附件" prop="extend"></el-form-item>

        <el-form-item>
          <el-button type="primary" @click="submitForm()">登录</el-button>
          <el-button @click="resetForm()">重置</el-button>
        </el-form-item>
      </el-form>
    </el-dialog>
  </div>
</template>

新增请假的对应的数据

<script>
import leavesModel from "../model/leavesModel";
export default {
  data() {
    return {
      dialogVisible: false,
      ruleForm: {
        reason: "",
        start: "",
        end: "",
        extend: ""
      },
      rules: {
        reason: [
          { required: true, message: "请假理由不能为空", trigger: "blur" }
        ],
        start: [
          { required: true, message: "开始时间不能为空", trigger: "blur" }
        ],
        end: [{ required: true, message: "结束时间不能为空", trigger: "blur" }]
      }
    };
  },
  methods: {
    showDialog() {
      this.dialogVisible = true;
    },
    submitForm() {
      this.$refs.ruleForm.validate(async valid => {
        //表单验证成功 才进行数据请求  去连接接口
        if (valid) {
          let start = new Date(this.ruleForm.start);
          let end = new Date(this.ruleForm.end);
          if (end > start) {
            console.log("时间没有问题");
            let { data } = await leavesModel.add({
              start,
              end,
              reason: this.ruleForm.reason
            });
            if (data.code == 1) {
              this.$emit("additem", data.data[0]);
              this.resetForm();
            } else {
              alert(data.msg);
            }
            console.log(data);
          } else {
            alert("结束时间要比开始时间大");
          }
        } else {
          console.log("error submit!!");
          return false;
        }
      });
    },
    resetForm() {
      this.dialogVisible = false;
      this.$refs.ruleForm.resetFields();
    }
  }
};
</script>

新增请假的接口

 add: (data) => {
        return axios({
            method: "post",
            url: "/api/leaves/add",
            data,
            headers: {
                token: localStorage.getItem("token")
            }

        })



    }

 

posted @ 2021-09-01 22:22  JSkolo_yyds  阅读(104)  评论(0编辑  收藏  举报