You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

230 lines
5.4 KiB

1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
3 days ago
1 day ago
  1. # 會議室行事曆管理系統
  2. 這是一個基於 Angular 開發的會議室預約和管理系統,提供直觀的行事曆介面來管理會議室預約。
  3. ## 功能特點
  4. - 📅 多視圖行事曆顯示(月、週、日視圖)
  5. - 🏢 多會議室管理
  6. - 🔄 重複會議支援
  7. - 🎨 Outlook 風格的事件顯示
  8. - 🌏 繁體中文本地化支援
  9. - 👥 會議詳細資訊查看
  10. - 🔒 權限控制
  11. - ⚡ 即時狀態更新
  12. ## 技術需求
  13. - Angular 17+
  14. - Node.js 18+
  15. ## 安裝說明
  16. 1. 克隆專案:
  17. ```bash
  18. git clone http://www.origtek.com:2999/juro.hsu/CalendarManager.git
  19. ```
  20. 2. 執行檔案:`00_run_all.bat`
  21. 3. 開啟瀏覽器訪問:`http://localhost:4200/calendar/{UserId}`
  22. ## API 端點
  23. 系統使用以下 API 端點:
  24. - `GET /api/calendar/getAuth` - 驗證使用者權限
  25. - `GET /api/calendar/getMeetingRoom` - 獲取所有會議室
  26. - `GET /api/calendar/getMeetingApply` - 獲取會議申請列表
  27. - `GET /api/calendar/getMeetingApplyById` - 獲取特定會議詳情
  28. - `PUT /api/calendar/closeMeeting` - 關閉單一會議
  29. - `PUT /api/calendar/closeAllRepeatMeeting` - 關閉所有重複會議
  30. ### API 詳細說明
  31. #### 1. 驗證使用者權限
  32. - **方法**:GET
  33. - **路徑**:`/api/calendar/getAuth`
  34. - **查詢參數**:
  35. - `id`:使用者ID(string)
  36. - **回傳格式**:
  37. ```json
  38. { "success": true } // 有權限
  39. { "success": false } // 無權限
  40. ```
  41. - **用途**:判斷指定使用者是否為櫃檯人員。
  42. #### 2. 取得所有會議室
  43. - **方法**:GET
  44. - **路徑**:`/api/calendar/getMeetingRoom`
  45. - **查詢參數**:無
  46. - **回傳格式**:
  47. ```json
  48. [
  49. { "id": 1, "name": "會議室A" },
  50. { "id": 2, "name": "會議室B" }
  51. ]
  52. ```
  53. - **用途**:取得所有會議室清單。
  54. #### 3. 取得會議申請列表(依月份)
  55. - **方法**:GET
  56. - **路徑**:`/api/calendar/getMeetingApply`
  57. - **查詢參數**:
  58. - `Date`:查詢月份(格式:YYYYMM,必填)
  59. - `roomId`:會議室ID(可選,預設查全部)
  60. - `old`:是否查詢已結束/刪除(可選,'true'查全部,預設僅查未結束且未刪除)
  61. - **回傳格式**:
  62. ```json
  63. [
  64. {
  65. "id": 1,
  66. "roomId": 2,
  67. "subject": "會議主題",
  68. "remark": "備註",
  69. "beginTime": "2024-06-01 09:00:00",
  70. "endTime": "2024-06-01 10:00:00",
  71. "status": "已批准",
  72. "parentId": null,
  73. "falseDelete": 0,
  74. "isRepeat": false,
  75. "createdBy": "王小明",
  76. "createdAt": "2024-05-20 08:00:00",
  77. "updatedAt": "2024-05-20 08:00:00"
  78. }
  79. ]
  80. ```
  81. - **用途**:依月份查詢所有(或指定會議室)會議申請。
  82. #### 4. 取得特定會議詳情
  83. - **方法**:GET
  84. - **路徑**:`/api/calendar/getMeetingApplyById`
  85. - **查詢參數**:
  86. - `meetingId`:會議申請ID(必填)
  87. - **回傳格式**:
  88. ```json
  89. {
  90. "id": 1,
  91. "roomId": 2,
  92. "subject": "會議主題",
  93. "applyUser": "user01",
  94. "applyUserName": "王小明",
  95. "otherJoinMember": "user02,user03",
  96. "type": "一般會議",
  97. "beginTime": "2024-06-01 09:00:00",
  98. "endTime": "2024-06-01 10:00:00",
  99. "remark": "備註",
  100. "status": "已批准",
  101. "approvalOpinion": "同意",
  102. "beginRemark": "準時開始",
  103. "endRemark": "準時結束",
  104. "conflict": 0,
  105. "falseDelete": 0,
  106. "applyTime": "2024-05-20 08:00:00",
  107. "deletedAt": null,
  108. "createdAt": "2024-05-20 08:00:00",
  109. "updatedAt": "2024-05-20 08:00:00",
  110. "reminderTiming": null,
  111. "signType": null,
  112. "signWifi": null,
  113. "externalUser": null,
  114. "reminderTime": null,
  115. "signUser": null,
  116. "externalReminderType": null,
  117. "sign": null,
  118. "response": null,
  119. "approvalUser": null,
  120. "createTime": null,
  121. "attenceType": null,
  122. "interfaceId": null,
  123. "videoInfo": null,
  124. "isRepeat": false,
  125. "repeatInterval": null,
  126. "repeatType": null,
  127. "repeatEndType": null,
  128. "repeatEndNumber": null,
  129. "repeatRemove": null,
  130. "parentId": null,
  131. "repeatEndDate": null,
  132. "cycleBeginTime": null,
  133. "cycleEndTime": null,
  134. "createFrom": null
  135. }
  136. ```
  137. - **用途**:查詢單一會議申請的完整詳細資訊。
  138. #### 5. 關閉單一會議
  139. - **方法**:PUT
  140. - **路徑**:`/api/calendar/closeMeeting`
  141. - **Body**:
  142. ```json
  143. { "meetingId": 1 }
  144. ```
  145. - **回傳格式**:
  146. ```json
  147. { "affectedRows": 1, ... }
  148. ```
  149. - **用途**:將指定會議申請狀態設為結束並標記為刪除。
  150. #### 6. 關閉所有重複會議
  151. - **方法**:PUT
  152. - **路徑**:`/api/calendar/closeAllRepeatMeeting`
  153. - **Body**:
  154. ```json
  155. { "parentId": 1 }
  156. ```
  157. - **回傳格式**:
  158. ```json
  159. { "affectedRows": 3, ... }
  160. ```
  161. - **用途**:將同一重複會議(parentId相同)全部設為結束並標記為刪除。
  162. ---
  163. ## 主要元件
  164. ### CalendarComponent
  165. 主要的行事曆顯示元件,功能包括:
  166. - 多視圖切換
  167. - 會議室篩選
  168. - 事件顯示和管理
  169. - 日期導航
  170. ### DetailComponent
  171. 會議詳情顯示元件,用於:
  172. - 顯示會議詳細資訊
  173. - 處理會議狀態更新
  174. ### CalendarService
  175. 提供所有與後端 API 的通訊服務,包括:
  176. - 會議室資料獲取
  177. - 會議申請管理
  178. - 權限驗證
  179. ## 使用說明
  180. 1. 選擇會議室:使用下拉選單選擇特定會議室
  181. 2. 切換視圖:點擊工具列上的按鈕切換月/週/日視圖
  182. 3. 查看會議:點擊行事曆上的事件查看詳情
  183. 4. 關閉會議:具有權限的使用者可以關閉會議
  184. ## 注意事項
  185. - 所有時間都基於本地時區
  186. - 會議關閉操作需要適當的權限
  187. - 重複會議可以選擇關閉單次或全部
  188. ## 授權
  189. [授權說明]
  190. ## 貢獻指南
  191. 歡迎提交 Pull Request 或建立 Issue。
  192. ## 聯絡方式
  193. [聯絡資訊]