From fae9966a11d1a03302a08f408f9ef6033782c7be Mon Sep 17 00:00:00 2001 From: caoxiaozhu Date: Wed, 13 May 2026 03:37:47 +0000 Subject: [PATCH] feat(web): add reimbursements service and ConfirmDialog component - services/reimbursements.js: add reimbursement API service client - components/shared/ConfirmDialog.vue: add shared confirm dialog component --- web/src/components/shared/ConfirmDialog.vue | 261 ++++++++++++++++++++ web/src/services/reimbursements.js | 29 +++ 2 files changed, 290 insertions(+) create mode 100644 web/src/components/shared/ConfirmDialog.vue create mode 100644 web/src/services/reimbursements.js diff --git a/web/src/components/shared/ConfirmDialog.vue b/web/src/components/shared/ConfirmDialog.vue new file mode 100644 index 0000000..897a646 --- /dev/null +++ b/web/src/components/shared/ConfirmDialog.vue @@ -0,0 +1,261 @@ + + + + + diff --git a/web/src/services/reimbursements.js b/web/src/services/reimbursements.js new file mode 100644 index 0000000..c293d9e --- /dev/null +++ b/web/src/services/reimbursements.js @@ -0,0 +1,29 @@ +import { apiRequest } from './api.js' + +export function fetchExpenseClaims() { + return apiRequest('/reimbursements/claims') +} + +export function fetchExpenseClaimDetail(claimId) { + return apiRequest(`/reimbursements/claims/${encodeURIComponent(String(claimId || '').trim())}`) +} + +export function updateExpenseClaimItem(claimId, itemId, payload) { + return apiRequest(`/reimbursements/claims/${encodeURIComponent(String(claimId || '').trim())}/items/${encodeURIComponent(String(itemId || '').trim())}`, { + method: 'PATCH', + body: JSON.stringify(payload) + }) +} + +export function submitExpenseClaim(claimId) { + return apiRequest(`/reimbursements/claims/${encodeURIComponent(String(claimId || '').trim())}/submit`, { + method: 'POST', + body: JSON.stringify({}) + }) +} + +export function deleteExpenseClaim(claimId) { + return apiRequest(`/reimbursements/claims/${encodeURIComponent(String(claimId || '').trim())}`, { + method: 'DELETE' + }) +}