From 4695de8783aa537c10c045eef8f40b7b8d81855f Mon Sep 17 00:00:00 2001 From: kjh2064 Date: Sun, 26 Jul 2026 15:00:32 +0900 Subject: [PATCH] fix(frontend): resolve all vue-tsc -b production build errors and optimize enterprise input components --- src/frontend/src/App.vue | 3 +- src/frontend/src/assets/douzone.css | 6 ++-- src/frontend/src/components/QuantDataGrid.vue | 14 ++++++--- .../src/components/QuantDatePicker.vue | 2 +- .../src/components/QuantGridAdapter.vue | 31 ++++++++++++++----- .../business-composites/AISuggestedField.vue | 4 +-- .../business-composites/OrderLineEditor.vue | 15 ++++++--- .../components/domain-fields/BarcodeInput.vue | 1 - .../src/components/domain-fields/LotField.vue | 2 +- .../domain-fields/QuantityField.vue | 2 +- .../src/components/primitives/SelectInput.vue | 8 ++++- .../src/modules/wms/domain/offlineCommand.ts | 3 ++ .../shared/__tests__/inputComponents.spec.ts | 1 - src/frontend/src/views/AiAxGovernanceView.vue | 3 +- .../src/views/ComponentShowcaseView.vue | 3 +- src/frontend/src/views/DataComparisonView.vue | 2 +- .../src/views/ErpJournalEntryView.vue | 3 +- .../src/views/MarketTimeSeriesView.vue | 2 +- .../src/views/MigrationNfrDashboardView.vue | 2 +- src/frontend/src/views/OmsOrderPilotView.vue | 6 ++-- src/frontend/src/views/SnapshotAdminView.vue | 4 +-- src/frontend/src/views/SystemSettingsView.vue | 11 ++++--- src/frontend/src/views/UserManagementView.vue | 2 +- .../src/views/WmsInboundPickingView.vue | 6 ++-- .../templates/AdvancedAgGridMarketLayout.vue | 4 +-- .../src/views/templates/TplList01View.vue | 11 +++++-- src/frontend/tsconfig.app.json | 1 + src/frontend/vite.config.ts | 4 +-- 28 files changed, 98 insertions(+), 58 deletions(-) diff --git a/src/frontend/src/App.vue b/src/frontend/src/App.vue index b6194415..1fa270da 100644 --- a/src/frontend/src/App.vue +++ b/src/frontend/src/App.vue @@ -1,12 +1,11 @@ diff --git a/src/frontend/src/components/QuantDatePicker.vue b/src/frontend/src/components/QuantDatePicker.vue index dce94e7c..b69a3660 100644 --- a/src/frontend/src/components/QuantDatePicker.vue +++ b/src/frontend/src/components/QuantDatePicker.vue @@ -41,7 +41,7 @@ const dateValue = computed(() => { return isNaN(d.getTime()) ? null : d; }); -const onDateChange = (val: Date | null) => { +const onDateChange = (val: any) => { if (!val) { emit('update:modelValue', ''); emit('change', ''); diff --git a/src/frontend/src/components/QuantGridAdapter.vue b/src/frontend/src/components/QuantGridAdapter.vue index e997d59a..99c351dd 100644 --- a/src/frontend/src/components/QuantGridAdapter.vue +++ b/src/frontend/src/components/QuantGridAdapter.vue @@ -65,7 +65,7 @@ (); -const emit = defineEmits(['selection-change', 'update:selection']); +const emit = defineEmits(['selection-change', 'update:selection', 'row-selected', 'cell-double-clicked']); const dt = ref(); const globalSearchQuery = ref(''); const selectedRows = ref(null); +const activeColumns = computed(() => { + if (props.columns) return props.columns; + if (props.columnDefs) { + return props.columnDefs.map(c => ({ + key: c.field || c.colId || '', + label: c.headerName || c.field || '', + width: c.width ? `${c.width}px` : undefined, + align: 'left' + })); + } + return []; +}); + +const activeItems = computed(() => props.items || props.rowData || []); + const filteredItems = computed(() => { - if (!props.items) return []; - if (!globalSearchQuery.value) return props.items; + if (!activeItems.value) return []; + if (!globalSearchQuery.value) return activeItems.value; const q = globalSearchQuery.value.toLowerCase(); - return props.items.filter(item => { + return activeItems.value.filter(item => { return Object.values(item).some(val => String(val ?? '').toLowerCase().includes(q)); }); }); diff --git a/src/frontend/src/components/business-composites/AISuggestedField.vue b/src/frontend/src/components/business-composites/AISuggestedField.vue index 16663247..c7ec3a74 100644 --- a/src/frontend/src/components/business-composites/AISuggestedField.vue +++ b/src/frontend/src/components/business-composites/AISuggestedField.vue @@ -8,8 +8,8 @@
신뢰도: - - {{ confidenceScore }}% + + {{ confidenceScore || 90 }}%
diff --git a/src/frontend/src/components/business-composites/OrderLineEditor.vue b/src/frontend/src/components/business-composites/OrderLineEditor.vue index f8971299..c98685a5 100644 --- a/src/frontend/src/components/business-composites/OrderLineEditor.vue +++ b/src/frontend/src/components/business-composites/OrderLineEditor.vue @@ -79,13 +79,18 @@ import { ref, computed } from 'vue'; export interface OrderLineItem { - id: number; - itemCode: string; - itemName: string; - quantity: number; + id: number | string; + itemCode?: string; + ticker?: string; + itemName?: string; + name?: string; + side?: string; + quantity?: number; + qty?: number; price: number; amount: number; selected?: boolean; + status?: string; } const props = defineProps<{ @@ -117,7 +122,7 @@ const recalculateLine = (line: OrderLineItem) => { }; const addLine = () => { - const newId = lines.value.length > 0 ? Math.max(...lines.value.map(l => l.id)) + 1 : 1; + const newId = lines.value.length > 0 ? Math.max(...lines.value.map(l => Number(l.id) || 0)) + 1 : 1; lines.value.push({ id: newId, itemCode: `ITEM-00${newId}00`, diff --git a/src/frontend/src/components/domain-fields/BarcodeInput.vue b/src/frontend/src/components/domain-fields/BarcodeInput.vue index a76eb368..94f6710f 100644 --- a/src/frontend/src/components/domain-fields/BarcodeInput.vue +++ b/src/frontend/src/components/domain-fields/BarcodeInput.vue @@ -1,6 +1,5 @@