From 3bea03f9db82e0aabbf4269228e3e2241e27c2d7 Mon Sep 17 00:00:00 2001 From: Edgar Mendez Mendoza Date: Fri, 7 Nov 2025 12:14:40 -0600 Subject: [PATCH] feat: add warehouse management components and services - Implemented WarehouseForm.vue for creating new warehouses with form validation and category assignment. - Developed WarehouseIndex.vue for displaying a list of warehouses with search and filter functionalities. - Created warehouseClasificationService.ts for handling warehouse classification API interactions. - Defined types for warehouse classifications in warehouse.clasification.d.ts. - Established a Pinia store (warehouseStore.ts) for managing warehouse state and actions. - Added an index.html file for the warehouse management interface layout. --- components.d.ts | 8 + package-lock.json | 136 ++++ package.json | 1 + src/components/layout/Sidebar.vue | 47 +- src/main.ts | 7 + .../warehouse/components/InventoryTable.vue | 130 ---- .../components/WarehouseCategory.vue | 5 + .../components/WarehouseClassification.vue | 585 ++++++++++++++++++ .../components/WarehouseDashboard.vue | 33 - .../warehouse/components/WarehouseForm.vue | 424 +++++++++++++ .../warehouse/components/WarehouseIndex.vue | 184 ++++++ src/modules/warehouse/components/index.html | 323 ++++++++++ .../warehouse/composables/useWarehouse.ts | 82 --- .../services/warehouseClasificationService.ts | 51 ++ .../warehouse/services/warehouseService.ts | 159 +---- .../types/warehouse.clasification.d.ts | 46 ++ src/modules/warehouse/types/warehouse.d.ts | 62 +- src/router/index.ts | 52 +- src/stores/warehouseStore.ts | 85 +++ 19 files changed, 1988 insertions(+), 432 deletions(-) delete mode 100644 src/modules/warehouse/components/InventoryTable.vue create mode 100644 src/modules/warehouse/components/WarehouseCategory.vue create mode 100644 src/modules/warehouse/components/WarehouseClassification.vue delete mode 100644 src/modules/warehouse/components/WarehouseDashboard.vue create mode 100644 src/modules/warehouse/components/WarehouseForm.vue create mode 100644 src/modules/warehouse/components/WarehouseIndex.vue create mode 100644 src/modules/warehouse/components/index.html delete mode 100644 src/modules/warehouse/composables/useWarehouse.ts create mode 100644 src/modules/warehouse/services/warehouseClasificationService.ts create mode 100644 src/modules/warehouse/types/warehouse.clasification.d.ts create mode 100644 src/stores/warehouseStore.ts diff --git a/components.d.ts b/components.d.ts index cc2ea0f..eb03591 100644 --- a/components.d.ts +++ b/components.d.ts @@ -13,25 +13,33 @@ declare module 'vue' { export interface GlobalComponents { AppConfig: typeof import('./src/components/layout/AppConfig.vue')['default'] AppTopbar: typeof import('./src/components/Holos/AppTopbar.vue')['default'] + Avatar: typeof import('primevue/avatar')['default'] Badge: typeof import('primevue/badge')['default'] + Breadcrumb: typeof import('primevue/breadcrumb')['default'] Button: typeof import('primevue/button')['default'] Card: typeof import('primevue/card')['default'] Checkbox: typeof import('primevue/checkbox')['default'] + Chip: typeof import('primevue/chip')['default'] Column: typeof import('primevue/column')['default'] DataTable: typeof import('primevue/datatable')['default'] + Dialog: typeof import('primevue/dialog')['default'] + Dropdown: typeof import('primevue/dropdown')['default'] HelloWorld: typeof import('./src/components/HelloWorld.vue')['default'] IconField: typeof import('primevue/iconfield')['default'] InputGroup: typeof import('primevue/inputgroup')['default'] InputGroupAddon: typeof import('primevue/inputgroupaddon')['default'] InputIcon: typeof import('primevue/inputicon')['default'] + InputNumber: typeof import('primevue/inputnumber')['default'] InputText: typeof import('primevue/inputtext')['default'] KpiCard: typeof import('./src/components/shared/KpiCard.vue')['default'] Menu: typeof import('primevue/menu')['default'] Message: typeof import('primevue/message')['default'] + ProgressSpinner: typeof import('primevue/progressspinner')['default'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] Sidebar: typeof import('./src/components/layout/Sidebar.vue')['default'] Tag: typeof import('primevue/tag')['default'] + Textarea: typeof import('primevue/textarea')['default'] TopBar: typeof import('./src/components/layout/TopBar.vue')['default'] } export interface GlobalDirectives { diff --git a/package-lock.json b/package-lock.json index facd79e..af3fa98 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@tailwindcss/vite": "^4.1.16", "@vueuse/core": "^14.0.0", "axios": "^1.13.2", + "pinia": "^3.0.4", "primeicons": "^7.0.0", "primevue": "^4.4.1", "tailwindcss-primeui": "^0.6.1", @@ -1299,6 +1300,30 @@ "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", "license": "MIT" }, + "node_modules/@vue/devtools-kit": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz", + "integrity": "sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==", + "license": "MIT", + "dependencies": { + "@vue/devtools-shared": "^7.7.7", + "birpc": "^2.3.0", + "hookable": "^5.5.3", + "mitt": "^3.0.1", + "perfect-debounce": "^1.0.0", + "speakingurl": "^14.0.1", + "superjson": "^2.2.2" + } + }, + "node_modules/@vue/devtools-shared": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz", + "integrity": "sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==", + "license": "MIT", + "dependencies": { + "rfdc": "^1.4.1" + } + }, "node_modules/@vue/language-core": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-3.1.3.tgz", @@ -1466,6 +1491,15 @@ "proxy-from-env": "^1.1.0" } }, + "node_modules/birpc": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/birpc/-/birpc-2.7.0.tgz", + "integrity": "sha512-tub/wFGH49vNCm0xraykcY3TcRgX/3JsALYq/Lwrtti+bTyFHkCUAWF5wgYoie8P41wYwig2mIKiqoocr1EkEQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -1512,6 +1546,21 @@ "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", "license": "MIT" }, + "node_modules/copy-anything": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-4.0.5.tgz", + "integrity": "sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==", + "license": "MIT", + "dependencies": { + "is-what": "^5.2.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -1860,6 +1909,24 @@ "node": ">= 0.4" } }, + "node_modules/hookable": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", + "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", + "license": "MIT" + }, + "node_modules/is-what": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-5.5.0.tgz", + "integrity": "sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/jiti": { "version": "2.6.1", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", @@ -2174,6 +2241,12 @@ "node": ">= 0.6" } }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", + "license": "MIT" + }, "node_modules/mlly": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", @@ -2247,6 +2320,12 @@ "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", "license": "MIT" }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "license": "MIT" + }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -2265,6 +2344,36 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/pinia": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/pinia/-/pinia-3.0.4.tgz", + "integrity": "sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==", + "license": "MIT", + "dependencies": { + "@vue/devtools-api": "^7.7.7" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "typescript": ">=4.5.0", + "vue": "^3.5.11" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/pinia/node_modules/@vue/devtools-api": { + "version": "7.7.7", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.7.7.tgz", + "integrity": "sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==", + "license": "MIT", + "dependencies": { + "@vue/devtools-kit": "^7.7.7" + } + }, "node_modules/pkg-types": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.3.0.tgz", @@ -2361,6 +2470,12 @@ "url": "https://paulmillr.com/funding/" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "license": "MIT" + }, "node_modules/rollup": { "version": "4.52.5", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", @@ -2411,6 +2526,27 @@ "node": ">=0.10.0" } }, + "node_modules/speakingurl": { + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", + "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/superjson": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.5.tgz", + "integrity": "sha512-zWPTX96LVsA/eVYnqOM2+ofcdPqdS1dAF1LN4TS2/MWuUpfitd9ctTa87wt4xrYnZnkLtS69xpBdSxVBP5Rm6w==", + "license": "MIT", + "dependencies": { + "copy-anything": "^4" + }, + "engines": { + "node": ">=16" + } + }, "node_modules/tailwindcss": { "version": "4.1.16", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.16.tgz", diff --git a/package.json b/package.json index e73582a..1fe36b3 100644 --- a/package.json +++ b/package.json @@ -14,6 +14,7 @@ "@tailwindcss/vite": "^4.1.16", "@vueuse/core": "^14.0.0", "axios": "^1.13.2", + "pinia": "^3.0.4", "primeicons": "^7.0.0", "primevue": "^4.4.1", "tailwindcss-primeui": "^0.6.1", diff --git a/src/components/layout/Sidebar.vue b/src/components/layout/Sidebar.vue index 67c7713..6e0bb30 100644 --- a/src/components/layout/Sidebar.vue +++ b/src/components/layout/Sidebar.vue @@ -1,5 +1,9 @@ - - - - diff --git a/src/modules/warehouse/components/WarehouseCategory.vue b/src/modules/warehouse/components/WarehouseCategory.vue new file mode 100644 index 0000000..76a7833 --- /dev/null +++ b/src/modules/warehouse/components/WarehouseCategory.vue @@ -0,0 +1,5 @@ + diff --git a/src/modules/warehouse/components/WarehouseClassification.vue b/src/modules/warehouse/components/WarehouseClassification.vue new file mode 100644 index 0000000..ff53033 --- /dev/null +++ b/src/modules/warehouse/components/WarehouseClassification.vue @@ -0,0 +1,585 @@ + + +