From 0756bf12d10cf1b7f78c571de0a9ad69cbaeb7ca Mon Sep 17 00:00:00 2001
From: curtis <curtis@i-mps.com>
Date: 星期一, 30 三月 2026 14:24:17 +0800
Subject: [PATCH] fix: 更新內部引用方法參照

---
 uiOutput/ErrList/ErrList.ts |  142 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 142 insertions(+), 0 deletions(-)

diff --git a/uiOutput/ErrList/ErrList.ts b/uiOutput/ErrList/ErrList.ts
new file mode 100644
index 0000000..ffe68ac
--- /dev/null
+++ b/uiOutput/ErrList/ErrList.ts
@@ -0,0 +1,142 @@
+import { ref, onMounted, computed } from 'vue';
+
+interface ErrItem {
+  reason: string;
+  index: string;
+}
+
+export function useErrListLogic() {
+  // --- State Mapped from Delphi UI Components ---
+  
+  const errorItems = ref<ErrItem[]>([]);
+  const selectedIndex = ref<number>(-1);
+  
+  const primaryImage = ref<string>('');
+  const relatedImage = ref<string>('');
+  
+  const siteIdx = ref<number>(1);
+  const siteCount = ref<number>(0);
+  const relaSiteIdx = ref<number>(1);
+  const relaSiteCount = ref<number>(0);
+
+  const isDeleteEnabled = ref<boolean>(false);
+  const isImmediateEnabled = ref<boolean>(false);
+
+  // --- Methods ---
+
+  const FormCreate = () => {
+    console.log('ErrlistForm created');
+    // Mock initialization
+    errorItems.value = [
+      { reason: 'OMR 檢查失敗: 區域 1 未填寫', index: 'ERR001' },
+      { reason: 'OMR 檢查失敗: 區域 5 重複填寫', index: 'ERR005' },
+      { reason: '條碼讀取失敗', index: 'BAR002' }
+    ];
+    
+    if (errorItems.value.length > 0) {
+      selectedIndex.value = 0;
+      loadErrorDetails(errorItems.value[0].index);
+    }
+  };
+
+  const loadErrorDetails = (id: string) => {
+    console.log('Loading error details for:', id);
+    // Mock loading from INI
+    primaryImage.value = 'assets/CB_IMGPSScanImp.png'; // Mock URL
+    relatedImage.value = 'assets/DocList.png'; // Mock URL
+    
+    siteCount.value = 3;
+    relaSiteCount.value = 2;
+    siteIdx.value = 1;
+    relaSiteIdx.value = 1;
+    
+    isDeleteEnabled.value = true;
+    isImmediateEnabled.value = errorItems.value.length === 0;
+  };
+
+  const ErrListLVClick = (index: number) => {
+    selectedIndex.value = index;
+    loadErrorDetails(errorItems.value[index].index);
+  };
+
+  const DeleteBtClick = () => {
+    if (selectedIndex.value === -1) return;
+    
+    errorItems.value.splice(selectedIndex.value, 1);
+    if (errorItems.value.length === 0) {
+      isImmediateEnabled.value = true;
+      selectedIndex.value = -1;
+    } else {
+      if (selectedIndex.value >= errorItems.value.length) {
+        selectedIndex.value = errorItems.value.length - 1;
+      }
+      loadErrorDetails(errorItems.value[selectedIndex.value].index);
+    }
+  };
+
+  const EnforceBtClick = () => {
+    if (confirm('是否確定強制送件?')) {
+      errorItems.value = [];
+      isImmediateEnabled.value = true;
+      selectedIndex.value = -1;
+    }
+  };
+
+  const ImmediateBtClick = () => {
+    console.log('Immediate send triggered');
+    closeForm('ok');
+  };
+
+  const ExitBtClick = () => {
+    closeForm('cancel');
+  };
+
+  const SitePreBtClick = () => {
+    if (siteIdx.value > 1) siteIdx.value--;
+  };
+
+  const SiteNextBtClick = () => {
+    if (siteIdx.value < siteCount.value) siteIdx.value++;
+  };
+
+  const RelaPreBtClick = () => {
+    if (relaSiteIdx.value > 1) relaSiteIdx.value--;
+  };
+
+  const RelaNextBtClick = () => {
+    if (relaSiteIdx.value < relaSiteCount.value) relaSiteIdx.value++;
+  };
+
+  const closeForm = (result: string) => {
+    console.log(`ErrlistForm closing with result: ${result}`);
+  };
+
+  onMounted(() => {
+    FormCreate();
+  });
+
+  return {
+    // State
+    errorItems,
+    selectedIndex,
+    primaryImage,
+    relatedImage,
+    siteIdx,
+    siteCount,
+    relaSiteIdx,
+    relaSiteCount,
+    isDeleteEnabled,
+    isImmediateEnabled,
+    
+    // Actions
+    ErrListLVClick,
+    DeleteBtClick,
+    EnforceBtClick,
+    ImmediateBtClick,
+    ExitBtClick,
+    SitePreBtClick,
+    SiteNextBtClick,
+    RelaPreBtClick,
+    RelaNextBtClick
+  };
+}

--
Gitblit v1.8.0