如何利用PHP和Vue搭建员工考勤的请假审批流程
随着企业的规模不断扩大,员工的请假审批流程变得越来越繁琐。为了提高工作效率,许多企业开始采用电子化的方式进行请假审批,其中PHP和Vue是一对非常强大的组合。本文将介绍如何利用PHP和Vue搭建一个员工考勤的请假审批流程,并提供一些具体的代码示例。
一、准备工作
首先,我们需要搭建一个简单的环境来运行PHP和Vue。我们可以使用XAMPP或者WAMP等软件来搭建本地服务器。然后,在服务器上创建一个数据库,用于存储员工的请假记录。接下来,创建一个名为"attendance"的数据库表,其中包含以下字段:
- id: 唯一标识符,用于区分每个请假记录
- name: 员工姓名
- start_date: 请假开始日期
- end_date: 请假结束日期
- reason: 请假原因
- status: 请假审批状态(待审批/已通过/已拒绝)
二、后端开发
- 创建一个名为"api.php"的文件,用于处理前端的请求和数据库操作。以下是一个简单的代码示例:
<?php
require_once 'config.php';
// 查询请假记录
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "SELECT * FROM attendance";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
echo json_encode($data);
} else {
echo "没有找到请假记录";
}
$conn->close();
}
// 创建请假记录
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 获取前端传递的数据
$name = $_POST['name'];
$start_date = $_POST['start_date'];
$end_date = $_POST['end_date'];
$reason = $_POST['reason'];
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "INSERT INTO attendance (name, start_date, end_date, reason, status) VALUES ('$name', '$start_date', '$end_date', '$reason', '待审批')";
if ($conn->query($sql) === TRUE) {
echo "请假申请已提交";
} else {
echo "请假申请提交失败";
}
$conn->close();
}
?>
- 创建一个名为"config.php"的文件,用于存放数据库的连接信息。以下是一个简单的代码示例:
<?php
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASS', '123456');
define('DB_NAME', 'attendance');
?>
三、前端开发
- 创建一个名为"index.html"的文件,用于显示员工的请假记录和提交请假申请表单。以下是一个简单的代码示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>员工考勤请假审批流程</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.0/dist/css/bootstrap.min.css">
</head>
<body>
<div id="app" class="container">
<h1>员工考勤请假审批流程</h1>
<h2>请假记录</h2>
<table class="table">
<thead>
<tr>
<th>#</th>
<th>姓名</th>
<th>开始日期</th>
<th>结束日期</th>
<th>请假原因</th>
<th>审批状态</th>
</tr>
</thead>
<tbody>
<tr v-for="(record, index) in records" :key="index">
<td>{{ index + 1 }}</td>
<td>{{ record.name }}</td>
<td>{{ record.start_date }}</td>
<td>{{ record.end_date }}</td>
<td>{{ record.reason }}</td>
<td>{{ record.status }}</td>
</tr>
</tbody>
</table>
<h2>提交请假申请</h2>
<form @submit.prevent="submitForm">
<div class="form-group">
<label for="name">姓名</label>
<input type="text" class="form-control" id="name" v-model="name" required>
</div>
<div class="form-group">
<label for="start_date">开始日期</label>
<input type="text" class="form-control" id="start_date" v-model="start_date" required>
</div>
<div class="form-group">
<label for="end_date">结束日期</label>
<input type="text" class="form-control" id="end_date" v-model="end_date" required>
</div>
<div class="form-group">
<label for="reason">请假原因</label>
<textarea class="form-control" id="reason" v-model="reason" required></textarea>
</div>
<button type="submit" class="btn btn-primary">提交申请</button>
</form>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.min.js"></script>
<script>
new Vue({
el: '#app',
data: {
name: '',
start_date: '',
end_date: '',
reason: '',
records: []
},
mounted() {
this.getRecords();
},
methods: {
getRecords() {
fetch('api.php')
.then(response => response.json())
.then(data => {
this.records = data;
});
},
submitForm() {
fetch('api.php', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: `name=${this.name}&start_date=${this.start_date}&end_date=${this.end_date}&reason=${this.reason}`
})
.then(response => response.text())
.then(data => {
alert(data);
this.getRecords();
});
}
}
});
</script>
</body>
</html>
四、运行效果
将以上代码保存到对应的文件中,并将这些文件放在服务器的对应目录中。然后,打开浏览器,访问"http://localhost/index.html"即可看到效果。在表格中显示员工的请假记录,并且可以在表单中提交请假申请。