refactor: enforce 800 line source limits
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
import {
|
||||
buildFileIdentity,
|
||||
MAX_ATTACHMENTS,
|
||||
mergeFilesWithLimit
|
||||
} from '../../views/scripts/travelReimbursementAttachmentModel.js'
|
||||
|
||||
export function useWorkbenchAiComposerFiles({
|
||||
fileInputRef,
|
||||
focusAiModeInput,
|
||||
isInputLocked,
|
||||
selectedFiles,
|
||||
toast
|
||||
}) {
|
||||
function triggerAiModeFileUpload() {
|
||||
if (isInputLocked()) {
|
||||
toast('请等待费用测算完成后再继续操作。')
|
||||
return
|
||||
}
|
||||
fileInputRef.value?.click()
|
||||
}
|
||||
|
||||
function handleAiModeFilesChange(event) {
|
||||
const fileMergeResult = mergeFilesWithLimit(selectedFiles.value, Array.from(event.target.files || []), MAX_ATTACHMENTS)
|
||||
selectedFiles.value = fileMergeResult.files
|
||||
if (fileMergeResult.overflowCount > 0) {
|
||||
toast(`一次最多上传 ${MAX_ATTACHMENTS} 份附件,已保留前 ${MAX_ATTACHMENTS} 份。`)
|
||||
}
|
||||
if (fileInputRef.value) {
|
||||
fileInputRef.value.value = ''
|
||||
}
|
||||
focusAiModeInput()
|
||||
}
|
||||
|
||||
function removeAiModeFile(fileKey) {
|
||||
selectedFiles.value = selectedFiles.value.filter((file) => buildFileIdentity(file) !== fileKey)
|
||||
if (!selectedFiles.value.length && fileInputRef.value) {
|
||||
fileInputRef.value.value = ''
|
||||
}
|
||||
focusAiModeInput()
|
||||
}
|
||||
|
||||
function clearAiModeFiles() {
|
||||
selectedFiles.value = []
|
||||
if (fileInputRef.value) {
|
||||
fileInputRef.value.value = ''
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
clearAiModeFiles,
|
||||
handleAiModeFilesChange,
|
||||
removeAiModeFile,
|
||||
triggerAiModeFileUpload
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user