From cd63391f899f4ffea68955df6abee7297db3711a Mon Sep 17 00:00:00 2001 From: qwq Date: Thu, 4 Jun 2026 15:53:23 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=99=BB=E5=BD=95=E6=8A=A5?= =?UTF-8?q?=E9=94=99=E6=8F=90=E7=A4=BA=E5=86=85=E5=AE=B9=E9=94=99=E8=AF=AF?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E8=8A=82=E5=81=87=E6=97=A5=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/src/api/index.js | 7 +- client/src/views/admin/Dashboard.vue | 74 +++++++-- client/src/views/admin/WorkdaySetting.vue | 15 +- client/src/views/rd/TimesheetDetails.vue | 47 ++++-- server/app.js | 4 +- server/data/worktime.db | Bin 151552 -> 155648 bytes server/db.js | 8 + server/public/assets/ClientManage-BMjCZ7Uu.js | 1 + server/public/assets/ClientManage-B_7q9nz-.js | 1 + server/public/assets/ClientManage-CXS14VcS.js | 1 + server/public/assets/ClientManage-DEu3IVU1.js | 1 + server/public/assets/ClientManage-Dp3_Mu7E.js | 1 + server/public/assets/Dashboard-3365mo89.css | 1 + server/public/assets/Dashboard-COa2kTwX.js | 1 + server/public/assets/Dashboard-CXZyyflz.css | 1 + server/public/assets/Dashboard-CewBG_Ld.js | 1 + server/public/assets/Dashboard-CgXj2DWZ.css | 1 + server/public/assets/Dashboard-D6EPDKWB.css | 1 + server/public/assets/Dashboard-DxNUqZXn.css | 1 + server/public/assets/Dashboard-Y5ZIvVJa.js | 1 + server/public/assets/Dashboard-ejYarhp2.js | 1 + server/public/assets/Dashboard-uRsdpFEu.js | 1 + server/public/assets/DataManage-BJHrZayq.js | 1 + server/public/assets/DataManage-BKobd3k9.js | 1 + server/public/assets/DataManage-BvySW7su.js | 1 + server/public/assets/DataManage-Db26Iblf.js | 1 + server/public/assets/DataManage-ewC3eWm9.js | 1 + server/public/assets/Layout-Ba7J-88h.js | 1 + server/public/assets/Layout-BhqPD4kN.js | 1 + server/public/assets/Layout-Blyqxo7u.js | 1 + server/public/assets/Layout-DN3SOra-.js | 1 + server/public/assets/Layout-DqZReOCc.js | 1 + server/public/assets/Login-C6sS55cr.js | 1 + server/public/assets/Login-CR5mSkGw.js | 1 + server/public/assets/Login-DdepaYMI.js | 1 + server/public/assets/Login-DmOttALr.js | 1 + server/public/assets/Login-Stgy2rzp.js | 1 + server/public/assets/RdStats-CBGc3BwE.js | 1 + server/public/assets/RdStats-CebmJMDL.js | 1 + server/public/assets/RdStats-ChREeymi.js | 1 + server/public/assets/RdStats-Dq5scQqy.js | 1 + server/public/assets/RdStats-DyrfABQa.js | 1 + .../assets/TimesheetDetails-BkytqQ7Q.js | 1 + .../assets/TimesheetDetails-C-cXhJD6.js | 1 + .../assets/TimesheetDetails-CoaSOd47.css | 1 + .../assets/TimesheetDetails-DAE2EvZ9.css | 1 + .../assets/TimesheetDetails-DTENujrJ.js | 1 + .../assets/TimesheetDetails-DzehF9Mj.css | 1 + .../assets/TimesheetDetails-VtQ5tARy.js | 1 + .../assets/TimesheetDetails-dfTClOx8.js | 1 + .../public/assets/TimesheetForm-BQgKIh90.js | 1 + .../public/assets/TimesheetForm-Bz9T4-yL.js | 1 + .../public/assets/TimesheetForm-CH8xvNfW.js | 1 + .../public/assets/TimesheetForm-CuNEE_rn.js | 1 + .../public/assets/TimesheetForm-DvVzxGGY.js | 1 + server/public/assets/UserManage-BkqM6fpp.js | 1 + server/public/assets/UserManage-C75P0jyx.js | 1 + server/public/assets/UserManage-CNxsJiok.js | 1 + server/public/assets/UserManage-D1c-n2QT.js | 1 + server/public/assets/UserManage-v6iB9Bii.js | 1 + .../public/assets/WorkdaySetting-B8GR7fN8.js | 1 + .../public/assets/WorkdaySetting-BbsEsWKa.js | 1 + .../public/assets/WorkdaySetting-Bst6MBgI.js | 1 + .../public/assets/WorkdaySetting-CnrffjaA.js | 1 + .../public/assets/WorkdaySetting-D4i6t1Ap.js | 1 + server/public/assets/index-B5IUyHJe.js | 92 ++++++++++++ server/public/assets/index-B5S4JoyK.js | 6 + server/public/assets/index-BfxBnpOb.js | 6 + server/public/assets/index-C9J7Lk9r.js | 92 ++++++++++++ server/public/assets/index-CYgyy2lw.js | 92 ++++++++++++ server/public/assets/index-D0SgC7D8.js | 6 + server/public/assets/index-DD1Ebu5S.js | 6 + server/public/assets/index-Dn6fDqC3.js | 92 ++++++++++++ server/public/assets/index-OKS9XN2R.js | 6 + server/public/assets/index-jnsG7DVq.js | 92 ++++++++++++ server/public/assets/user-BJgrGGYs.js | 1 + server/public/assets/user-Bf9RYC_c.js | 1 + server/public/assets/user-DZgD4Eg8.js | 1 + server/public/assets/user-uOvERC_1.js | 1 + server/public/assets/user-vX7oVs4D.js | 1 + server/public/index.html | 2 +- server/routes/admin.js | 45 +++++- server/routes/rd.js | 9 ++ server/utils/holiday.js | 141 ++++++++++++++++++ 84 files changed, 874 insertions(+), 31 deletions(-) create mode 100644 server/public/assets/ClientManage-BMjCZ7Uu.js create mode 100644 server/public/assets/ClientManage-B_7q9nz-.js create mode 100644 server/public/assets/ClientManage-CXS14VcS.js create mode 100644 server/public/assets/ClientManage-DEu3IVU1.js create mode 100644 server/public/assets/ClientManage-Dp3_Mu7E.js create mode 100644 server/public/assets/Dashboard-3365mo89.css create mode 100644 server/public/assets/Dashboard-COa2kTwX.js create mode 100644 server/public/assets/Dashboard-CXZyyflz.css create mode 100644 server/public/assets/Dashboard-CewBG_Ld.js create mode 100644 server/public/assets/Dashboard-CgXj2DWZ.css create mode 100644 server/public/assets/Dashboard-D6EPDKWB.css create mode 100644 server/public/assets/Dashboard-DxNUqZXn.css create mode 100644 server/public/assets/Dashboard-Y5ZIvVJa.js create mode 100644 server/public/assets/Dashboard-ejYarhp2.js create mode 100644 server/public/assets/Dashboard-uRsdpFEu.js create mode 100644 server/public/assets/DataManage-BJHrZayq.js create mode 100644 server/public/assets/DataManage-BKobd3k9.js create mode 100644 server/public/assets/DataManage-BvySW7su.js create mode 100644 server/public/assets/DataManage-Db26Iblf.js create mode 100644 server/public/assets/DataManage-ewC3eWm9.js create mode 100644 server/public/assets/Layout-Ba7J-88h.js create mode 100644 server/public/assets/Layout-BhqPD4kN.js create mode 100644 server/public/assets/Layout-Blyqxo7u.js create mode 100644 server/public/assets/Layout-DN3SOra-.js create mode 100644 server/public/assets/Layout-DqZReOCc.js create mode 100644 server/public/assets/Login-C6sS55cr.js create mode 100644 server/public/assets/Login-CR5mSkGw.js create mode 100644 server/public/assets/Login-DdepaYMI.js create mode 100644 server/public/assets/Login-DmOttALr.js create mode 100644 server/public/assets/Login-Stgy2rzp.js create mode 100644 server/public/assets/RdStats-CBGc3BwE.js create mode 100644 server/public/assets/RdStats-CebmJMDL.js create mode 100644 server/public/assets/RdStats-ChREeymi.js create mode 100644 server/public/assets/RdStats-Dq5scQqy.js create mode 100644 server/public/assets/RdStats-DyrfABQa.js create mode 100644 server/public/assets/TimesheetDetails-BkytqQ7Q.js create mode 100644 server/public/assets/TimesheetDetails-C-cXhJD6.js create mode 100644 server/public/assets/TimesheetDetails-CoaSOd47.css create mode 100644 server/public/assets/TimesheetDetails-DAE2EvZ9.css create mode 100644 server/public/assets/TimesheetDetails-DTENujrJ.js create mode 100644 server/public/assets/TimesheetDetails-DzehF9Mj.css create mode 100644 server/public/assets/TimesheetDetails-VtQ5tARy.js create mode 100644 server/public/assets/TimesheetDetails-dfTClOx8.js create mode 100644 server/public/assets/TimesheetForm-BQgKIh90.js create mode 100644 server/public/assets/TimesheetForm-Bz9T4-yL.js create mode 100644 server/public/assets/TimesheetForm-CH8xvNfW.js create mode 100644 server/public/assets/TimesheetForm-CuNEE_rn.js create mode 100644 server/public/assets/TimesheetForm-DvVzxGGY.js create mode 100644 server/public/assets/UserManage-BkqM6fpp.js create mode 100644 server/public/assets/UserManage-C75P0jyx.js create mode 100644 server/public/assets/UserManage-CNxsJiok.js create mode 100644 server/public/assets/UserManage-D1c-n2QT.js create mode 100644 server/public/assets/UserManage-v6iB9Bii.js create mode 100644 server/public/assets/WorkdaySetting-B8GR7fN8.js create mode 100644 server/public/assets/WorkdaySetting-BbsEsWKa.js create mode 100644 server/public/assets/WorkdaySetting-Bst6MBgI.js create mode 100644 server/public/assets/WorkdaySetting-CnrffjaA.js create mode 100644 server/public/assets/WorkdaySetting-D4i6t1Ap.js create mode 100644 server/public/assets/index-B5IUyHJe.js create mode 100644 server/public/assets/index-B5S4JoyK.js create mode 100644 server/public/assets/index-BfxBnpOb.js create mode 100644 server/public/assets/index-C9J7Lk9r.js create mode 100644 server/public/assets/index-CYgyy2lw.js create mode 100644 server/public/assets/index-D0SgC7D8.js create mode 100644 server/public/assets/index-DD1Ebu5S.js create mode 100644 server/public/assets/index-Dn6fDqC3.js create mode 100644 server/public/assets/index-OKS9XN2R.js create mode 100644 server/public/assets/index-jnsG7DVq.js create mode 100644 server/public/assets/user-BJgrGGYs.js create mode 100644 server/public/assets/user-Bf9RYC_c.js create mode 100644 server/public/assets/user-DZgD4Eg8.js create mode 100644 server/public/assets/user-uOvERC_1.js create mode 100644 server/public/assets/user-vX7oVs4D.js create mode 100644 server/utils/holiday.js diff --git a/client/src/api/index.js b/client/src/api/index.js index b0a9e4b..816be7f 100644 --- a/client/src/api/index.js +++ b/client/src/api/index.js @@ -21,7 +21,7 @@ api.interceptors.response.use( response => response.data, error => { const msg = error.response?.data?.message || '请求失败' - if (error.response?.status === 401) { + if (error.response?.status === 401 && !error.config.url.includes('/auth/login')) { localStorage.removeItem('token') localStorage.removeItem('user') router.push('/login') @@ -49,6 +49,8 @@ export const adminApi = { deleteUser: (id) => api.delete(`/admin/users/${id}`), getWorkdays: (year) => api.get('/admin/workdays', { params: { year } }), setWorkdays: (data) => api.post('/admin/workdays', data), + syncWorkdays: (year) => api.post('/admin/workdays/sync', { year }), + getHolidays: (year) => api.get('/admin/holidays', { params: { year } }), getSalesStats: (params) => api.get('/admin/stats/sales', { params }), getSalesDetail: (params) => api.get('/admin/stats/sales-detail', { params }), getRdStats: (params) => api.get('/admin/stats/rd', { params }), @@ -111,5 +113,6 @@ export const rdApi = { createTimesheet: (data) => api.post('/rd/timesheets', data), updateTimesheet: (id, data) => api.put(`/rd/timesheets/${id}`, data), deleteTimesheet: (id) => api.delete(`/rd/timesheets/${id}`), - getStats: (params) => api.get('/rd/stats', { params }) + getStats: (params) => api.get('/rd/stats', { params }), + getHolidays: (year) => api.get('/rd/holidays', { params: { year } }) } diff --git a/client/src/views/admin/Dashboard.vue b/client/src/views/admin/Dashboard.vue index 5a73014..f045805 100644 --- a/client/src/views/admin/Dashboard.vue +++ b/client/src/views/admin/Dashboard.vue @@ -265,14 +265,14 @@ - +