-
+
+
+
+
+ 마스터 데이터가 없습니다.
+
+
-
-
-
-
- |
- {{ h.label }}
- |
-
-
-
-
-
- |
-
- {{ item[h.key] }}
-
- |
-
-
-
-
- |
-
- 조회된 데이터가 없습니다.
- |
-
-
-
-
-
+
+
+
+
+ {{ slotProps.data[col.key] ?? '-' }}
+
+
+
+
+
-
+
+const props = defineProps<{
+ headers?: GridHeader[];
+ items?: any[];
+ height?: number;
+}>();
+
+const gridHeaders = computed(() => {
+ if (props.headers && props.headers.length > 0) return props.headers;
+ // Fallback defaults if not supplied
+ return [
+ { key: 'code', label: '코드', width: '120px' },
+ { key: 'name', label: '명칭' },
+ { key: 'status', label: '상태', width: '90px', align: 'center' }
+ ];
+});
+
diff --git a/src/frontend/src/components/QuantStatusChip.vue b/src/frontend/src/components/QuantStatusChip.vue
index e0385ab2..ebace8f4 100644
--- a/src/frontend/src/components/QuantStatusChip.vue
+++ b/src/frontend/src/components/QuantStatusChip.vue
@@ -1,18 +1,31 @@
-
-
+
-
- {{ label || type }}
-
+
+
+
diff --git a/src/frontend/src/components/QuantTabPanel.vue b/src/frontend/src/components/QuantTabPanel.vue
index b465469c..b9a33190 100644
--- a/src/frontend/src/components/QuantTabPanel.vue
+++ b/src/frontend/src/components/QuantTabPanel.vue
@@ -1,74 +1,64 @@
-
-
+
-
-
-
+
+
+
+
+ {{ tab.label }}
+
+ {{ tab.badge }}
+
+
+
-
-
-
-
-
-
- [{{ tab.label }}] 탭 영역입니다.
-
-
-
-
-
+
+
+
+
+
+
-
+
+const props = defineProps<{
+ tabs: TabItem[];
+ modelValue?: string;
+}>();
+
+const emit = defineEmits(['update:modelValue', 'tab-change']);
+
+const activeTabId = ref
(props.modelValue || (props.tabs[0] ? props.tabs[0].id : ''));
+
+watch(
+ () => props.modelValue,
+ (newVal) => {
+ if (newVal) activeTabId.value = newVal;
+ }
+);
+
+const onTabChange = (val: string | number | undefined) => {
+ const strVal = String(val ?? '');
+ activeTabId.value = strVal;
+ emit('update:modelValue', strVal);
+ emit('tab-change', strVal);
+};
+