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
|
};
|
}
|