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