index.html 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>会友信息考勤打卡系统</title>
  7. <style>
  8. body { font-family: Arial, sans-serif; line-height: 1.6; margin: 0; padding: 20px; }
  9. h1 { color: #333; }
  10. form { margin-bottom: 20px; }
  11. input, button { margin: 5px 0; padding: 5px; }
  12. ul { list-style-type: none; padding: 0; }
  13. li { background: #f4f4f4; margin-bottom: 5px; padding: 10px; }
  14. </style>
  15. </head>
  16. <body>
  17. <h1>会友信息考勤打卡系统</h1>
  18. <form id="addMemberForm">
  19. <input type="text" id="memberName" placeholder="输入会员姓名" required>
  20. <button type="submit">添加会员</button>
  21. </form>
  22. <h2>会员列表</h2>
  23. <ul id="memberList"></ul>
  24. <script>
  25. const API_URL = 'http://localhost:3000/api';
  26. // 获取并显示所有会员
  27. async function fetchMembers() {
  28. const response = await fetch(`${API_URL}/members`);
  29. const members = await response.json();
  30. const memberList = document.getElementById('memberList');
  31. memberList.innerHTML = members.map(member => `
  32. <li>
  33. ${member.name}
  34. <button onclick="recordAttendance(${member.id})">记录考勤</button>
  35. <button onclick="viewAttendance(${member.id})">查看考勤</button>
  36. </li>
  37. `).join('');
  38. }
  39. // 添加新会员
  40. document.getElementById('addMemberForm').addEventListener('submit', async (e) => {
  41. e.preventDefault();
  42. const name = document.getElementById('memberName').value;
  43. await fetch(`${API_URL}/members`, {
  44. method: 'POST',
  45. headers: { 'Content-Type': 'application/json' },
  46. body: JSON.stringify({ name })
  47. });
  48. document.getElementById('memberName').value = '';
  49. fetchMembers();
  50. });
  51. // 记录考勤
  52. async function recordAttendance(memberId) {
  53. const date = new Date().toISOString().split('T')[0];
  54. await fetch(`${API_URL}/attendance`, {
  55. method: 'POST',
  56. headers: { 'Content-Type': 'application/json' },
  57. body: JSON.stringify({ memberId, date })
  58. });
  59. alert('考勤已记录');
  60. }
  61. // 查看考勤记录
  62. async function viewAttendance(memberId) {
  63. const response = await fetch(`${API_URL}/attendance/${memberId}`);
  64. const attendance = await response.json();
  65. alert(`考勤记录:\n${attendance.join('\n')}`);
  66. }
  67. // 初始加载会员列表
  68. fetchMembers();
  69. </script>
  70. </body>
  71. </html>