Cara menggunakan PHP dan Vue untuk membangunkan antara muka eksport data untuk kehadiran pekerja dalam talian
Pengenalan: Dengan perkembangan pesat Internet, semakin banyak syarikat beralih kepada pengurusan dalam talian kehadiran pekerja, yang menyediakan banyak peluang untuk mengoptimumkan pengurusan sumber manusia. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan Vue untuk membangunkan antara muka eksport data kehadiran pekerja dalam talian untuk memudahkan perusahaan mengeksport dan menganalisis data kehadiran.
1. Latar belakang projek dan analisis permintaan
Fungsi sistem pengurusan kehadiran pekerja dalam talian terutamanya termasuk daftar masuk pekerja, log keluar, cuti, kerja lebih masa dan operasi lain, dan boleh menjana laporan yang boleh dieksport dan dianalisis. Artikel ini memberi tumpuan kepada cara membangunkan antara muka eksport data untuk pentadbir mengeksport data kehadiran dengan mudah.
Keperluan untuk antara muka eksport data adalah seperti berikut:
2. Pemilihan teknologi
3. Pembangunan bahagian hadapan
Gunakan alat Vue CLI untuk memulakan projek Vue baharu.
$ npm install -g @vue/cli $ vue create attendance-export
Buat komponen bernama AttendanceList.vue
dalam direktori src/components
untuk memaparkan senarai rekod kehadiran pekerja . src/components
目录下创建一个名为AttendanceList.vue
的组件,用于展示员工的考勤记录列表。
<template> <div> <!-- 考勤记录列表 --> <table> <thead> <tr> <th>姓名</th> <th>日期</th> <th>签到时间</th> <th>签退时间</th> </tr> </thead> <tbody> <tr v-for="record in attendanceList" :key="record.id"> <td>{{ record.name }}</td> <td>{{ record.date }}</td> <td>{{ record.startTime }}</td> <td>{{ record.endTime }}</td> </tr> </tbody> </table> </div> </template> <script> export default { data() { return { attendanceList: [] // 考勤记录列表数据 } }, mounted() { this.getAttendanceList(); // 页面加载时获取考勤记录列表 }, methods: { getAttendanceList() { // 使用Vue的axios插件发送请求获取考勤记录数据 axios.get('/api/attendance') .then(response => { this.attendanceList = response.data; }) .catch(error => { console.error(error); }); } } } </script> <style> table { width: 100%; border-collapse: collapse; } th, td { padding: 8px; border-bottom: 1px solid #ddd; } </style>
在src/components
目录下创建一个名为DateFilter.vue
的组件,用于实现按照日期筛选考勤记录的功能。
<template> <div> <!-- 日期选择器 --> <input type="date" v-model="selectedDate" @input="filterByDate" /> </div> </template> <script> export default { data() { return { selectedDate: null // 选择的日期 } }, methods: { filterByDate() { // 使用Vue的$emit方法触发自定义事件,将选择的日期传递给父组件 this.$emit('filter', this.selectedDate); } } } </script>
在src/components
目录下创建一个名为DataExport.vue
的组件,用于实现导出考勤记录的功能。
<template> <div> <button @click="exportAll">导出全部</button> <button @click="exportFiltered">按条件导出</button> </div> </template> <script> export default { methods: { exportAll() { // 发送导出全部考勤记录的请求 axios.get('/api/export?type=csv') .then(response => { this.downloadFile(response.data, 'attendance.csv'); }) .catch(error => { console.error(error); }); }, exportFiltered() { // 发送按条件导出考勤记录的请求 axios.get('/api/export?type=excel&date=' + this.selectedDate) .then(response => { this.downloadFile(response.data, 'attendance.xlsx'); }) .catch(error => { console.error(error); }); }, downloadFile(fileContent, fileName) { // 创建一个临时链接并下载文件 const blob = new Blob([fileContent]); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = fileName; link.click(); } } } </script>
四、后端开发
在MySQL数据库中创建一个名为attendance
的表,保存员工的考勤记录。
CREATE TABLE attendance ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, date DATE NOT NULL, startTime TIME NOT NULL, endTime TIME NOT NULL );
使用PHP编写后端接口,负责查询数据库和生成导出文件。
<?php // 连接MySQL数据库 $servername = "localhost"; $username = "root"; $password = "password"; $dbname = "attendance"; $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } // 查询考勤记录数据 function getAttendanceList($date = null) { global $conn; $sql = "SELECT * FROM attendance"; if ($date) { $sql .= " WHERE date = '".$date."'"; } $result = $conn->query($sql); $attendanceList = array(); if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { $attendanceList[] = $row; } } return $attendanceList; } // 导出考勤记录为Excel文件 function exportToExcel($attendanceList) { // 使用PHPExcel库生成Excel文件 require_once 'PHPExcel.php'; $objPHPExcel = new PHPExcel(); $objPHPExcel->getActiveSheet()->fromArray($attendanceList, null, 'A1'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); ob_start(); $objWriter->save('php://output'); $content = ob_get_clean(); return $content; } // 导出考勤记录为CSV文件 function exportToCSV($attendanceList) { $content = "姓名,日期,签到时间,签退时间 "; foreach ($attendanceList as $record) { $content .= $record['name'].','.$record['date'].','.$record['startTime'].','.$record['endTime']." "; } return $content; } // 根据请求参数调用不同的导出方法 if ($_GET['type'] == 'csv') { $attendanceList = getAttendanceList(); $content = exportToCSV($attendanceList); header("Content-Disposition: attachment; filename=attendance.csv"); header("Content-Type: text/csv"); echo $content; } else if ($_GET['type'] == 'excel') { $date = $_GET['date']; $attendanceList = getAttendanceList($date); $content = exportToExcel($attendanceList); header("Content-Disposition: attachment; filename=attendance.xlsx"); header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); echo $content; } else { header("HTTP/1.1 400 Bad Request"); } ?>
五、运行测试
将上述PHP文件命名为api.php
,并将其放置到一个能被服务器访问到的目录下。启动一个PHP服务器,例如使用php-cli命令:
$ php -S localhost:8000
$ cd attendance-export $ npm run serve
在浏览器中访问http://localhost:8080
rrreee
DateFilter.vue
dalam direktori src/components
untuk Laksanakan fungsi menapis rekod kehadiran mengikut tarikh. 🎜rrreeeDataExport.vue
dalam direktori src/components
untuk Laksanakan fungsi mengeksport rekod kehadiran. 🎜rrreee🎜4. Pembangunan bahagian belakang🎜🎜🎜Buat jadual pangkalan data🎜🎜🎜Buat jadual bernama api.php
dan letakkan dalam direktori yang boleh diakses oleh pelayan. Mulakan pelayan PHP, sebagai contoh, gunakan arahan php-cli: 🎜rrreee🎜🎜Jalankan projek bahagian hadapan🎜🎜rrreeeAtas ialah kandungan terperinci Cara menggunakan PHP dan Vue untuk membangunkan antara muka eksport data kehadiran pekerja dalam talian. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!