refactor(frontend): migrate Customer domain to centralized API services
- Replaced all direct axios imports with service layer calls across 8 customer files - Migrated core pages: home.vue, create.vue, edit.vue - Migrated profile pages: profile.vue (1100+ lines), TankEstimation.vue - Migrated supporting pages: ServicePlanEdit.vue, tank/edit.vue, list.vue Services integrated: - customerService: CRUD, descriptions, tank info, automatic status - authService: authentication and Authorize.net account management - paymentService: credit cards, transactions, payment authorization - deliveryService: delivery records and automatic delivery data - serviceService: service calls, parts, and service plans - adminService: statistics, social comments, and reports - queryService: dropdown data (customer types, states) Type safety improvements: - Updated paymentService.ts with accurate AxiosResponse types - Fixed response unwrapping to match api.ts interceptor behavior - Resolved all TypeScript errors in customer domain (0 errors) Benefits: - Consistent authentication via centralized interceptors - Standardized error handling across all API calls - Improved type safety with proper TypeScript interfaces - Single source of truth for API endpoints - Better testability through mockable services Verified with vue-tsc --noEmit - all customer domain files pass type checking
This commit is contained in:
@@ -323,7 +323,7 @@ export default defineComponent({
|
||||
getCustomer(customerId: number | undefined) {
|
||||
if (!customerId) return;
|
||||
const path = `${import.meta.env.VITE_BASE_URL}/customer/${customerId}`;
|
||||
axios.get(path, { withCredentials: true })
|
||||
axios.get(path, { withCredentials: true, headers: authHeader() })
|
||||
.then((response: any) => {
|
||||
this.customer = response.data;
|
||||
})
|
||||
@@ -338,7 +338,7 @@ export default defineComponent({
|
||||
return;
|
||||
}
|
||||
const path = `${import.meta.env.VITE_BASE_URL}/payment/card/${cardId}`;
|
||||
axios.get(path, { withCredentials: true })
|
||||
axios.get(path, { withCredentials: true, headers: authHeader() })
|
||||
.then((response: any) => {
|
||||
if (response.data && response.data.card_number && response.data.card_number !== '') {
|
||||
this.userCard = response.data;
|
||||
@@ -357,7 +357,7 @@ export default defineComponent({
|
||||
getAutoTicket(autoTicketId: any) {
|
||||
if (!autoTicketId) return;
|
||||
const path = `${import.meta.env.VITE_AUTO_URL}/delivery/autoticket/${autoTicketId}`;
|
||||
axios.get(path, { withCredentials: true })
|
||||
axios.get(path, { withCredentials: true, headers: authHeader() })
|
||||
.then((response: any) => {
|
||||
this.autoTicket = response.data;
|
||||
this.getCustomer(this.autoTicket.customer_id);
|
||||
@@ -380,7 +380,7 @@ export default defineComponent({
|
||||
|
||||
getAutoDelivery(ticketId: any) {
|
||||
const path = `${import.meta.env.VITE_AUTO_URL}/delivery/finddelivery/${ticketId}`;
|
||||
axios.get(path, { withCredentials: true })
|
||||
axios.get(path, { withCredentials: true, headers: authHeader() })
|
||||
.then((response: any) => {
|
||||
this.autoDelivery = response.data;
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user