{"version":3,"file":"import.vue2.mjs","sources":["../../../../../../packages/components/import/src/import.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToImport',\n\tcomponentName: 'ToImport'\n});\n</script>\n<template>\n\t<span :key=\"langKey\" :flex=\"flex ? flex : null\" class=\"to-import\" :class=\"setClass\">\n\t\t<input v-show=\"false\" ref=\"fileInput\" type=\"file\" :accept=\"accept\" @change=\"handleChange\" />\n\t\t<to-button v-if=\"props.type === 'button'\" ref=\"button\" class=\"to-import-button\" icon=\"import\" :disabled=\"props.disabled\" expand @click.stop=\"handleFloat(button)\">{{ props.buttonText || t('to.import.button') }}</to-button>\n\t\t<to-icon v-else ref=\"iconEl\" link value=\"import\" class=\"to-import-icon\" :disabled=\"props.disabled\" @click.stop=\"handleFloat(iconEl)\"></to-icon>\n\t\t<to-float ref=\"layer\" width=\"25\" class=\"to-import-layer\" lazy :before-open=\"props.beforeOpen\" :before-close=\"props.beforeClose\" @opened=\"handleFloatOpened\" @closed=\"handleFloatClosed\">\n\t\t\t<to-scroll>\n\t\t\t\t<div class=\"to-import-file\" :class=\"setFileClass\" @dragover.prevent=\"handleDragOver\" @dragleave.prevent=\"handleDragLeave\" @click=\"handleImport\" @drop.prevent=\"handleDrop\">\n\t\t\t\t\t<to-icon :value=\"getIcon\" class=\"to-import-file-icon\"></to-icon>\n\t\t\t\t\t<div class=\"to-import-file-name\">\n\t\t\t\t\t\t<span class=\"to-import-file-name-text\">{{ errorTip || fileName || t('to.import.dragText') }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"state || hasDownloadTemplate()\" class=\"to-import-file-fn\">\n\t\t\t\t\t\t<to-button v-if=\"state\" icon=\"reset\" class=\"to-import-reset\" @click.stop=\"handleReset\">{{ t('to.import.reset') }}</to-button>\n\t\t\t\t\t\t<to-button v-else-if=\"hasDownloadTemplate()\" class=\"to-import-download\" icon=\"download\" @click.stop=\"downloadTem\">{{ t('to.import.downloadTemplate') }}</to-button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</to-scroll>\n\t\t</to-float>\n\t</span>\n</template>\n\n<script lang=\"ts\" setup>\nimport { ref, computed, getCurrentInstance, onBeforeUnmount } from 'vue'\nimport { fileAjax } from '@touchvue/utils'\nimport { ToButton, ToIcon, ToFloat } from '@touchvue/components'\nimport { t, langKey } from '@touchvue/locale'\n\n// 定义组件名称和选项\n\n\nexport interface ImportProps {\n\tflex?: boolean\n\tmode?: string\n\ttype?: string\n\taccept?: string\n\tbuttonText?: string\n\tname?: string\n\taction?: string\n\tbeforeStart?: (file) => boolean | Promise<boolean>\n\tclosed?: () => any\n\tbeforeClose?: () => boolean | Promise<boolean>\n\topened?: () => any\n\tbeforeOpen?: () => boolean | Promise<boolean>\n\theaders?: object | null\n\twithCredentials?: boolean\n\tdata?: object | null\n\tdisabled?: boolean\n}\nconst props = withDefaults(defineProps<ImportProps>(), {\n\tflex: false,\n\tmode: 'default',\n\tbuttonText: '',\n\taccept: '',\n\ttype: 'button',\n\tname: 'importfile',\n\taction: '',\n\theaders: () => null,\n\twithCredentials: false,\n\tdata: () => null,\n\tbeforeStart: () => true,\n\tdisabled: false,\n\tbeforeOpen: () => true,\n\topened: () => true,\n\tbeforeClose: () => true,\n\tclosed: () => true\n})\n\nconst instance = getCurrentInstance()\nconst hasDownloadTemplate = () => {\n\treturn !!instance.vnode.props.onDownloadTemplate\n}\nconst emit = defineEmits(['success', 'error', 'start', 'progress', 'download-template'])\n\nconst state = ref('')\nconst fileName = ref('')\nconst layer = ref(null)\nconst iconEl = ref(null)\nconst button = ref(null)\nconst fileInput = ref(null)\nconst btnIcon = ref('import')\nconst isDragOver = ref(false)\nconst isFloatOpen = ref(false)\nconst errorTip = ref('')\n\nconst setClass = computed(() => {\n\tlet arr: string[] = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (state.value) {\n\t\tarr.push(`state-${state.value}`)\n\t}\n\treturn arr\n})\n\nconst setFileClass = computed(() => {\n\tlet arr: string[] = []\n\tif (isDragOver.value) {\n\t\tarr.push('is-dragover')\n\t}\n\treturn arr\n})\n\nconst fileTypeIcons = {\n\texcel: ['.xls', '.xlsx', '.csv'],\n\timg: ['.png', '.jpg', '.gif', '.apng', '.webp'],\n\tppt: ['.ppt', '.pptx', '.ppsx'],\n\trar: ['.rar', '.zip', '.tar', '.gz', '.tgz'],\n\tvideo: ['.rm', '.rmvb', '.avi', '.mkv', '.mp4', '.wmv', '.mov', '.movie', '.mpeg', '.mpg', '.qt'],\n\tvoice: ['.mp2', '.mp3', '.wma', '.midi'],\n\tword: ['.doc', '.docx']\n}\n\nconst getIcon = computed(() => {\n\t// 特殊状态处理\n\tif (!state.value) {\n\t\treturn 'upload'\n\t}\n\tif (state.value === 'uploading') {\n\t\treturn 'loading'\n\t}\n\tif (state.value === 'success') {\n\t\treturn 'ok'\n\t}\n\tif (state.value === 'error') {\n\t\treturn 'close'\n\t}\n\n\t// 校验入参，为空直接返回默认值\n\tif (!fileName.value || typeof fileName.value !== 'string') {\n\t\treturn 'default'\n\t}\n\n\t// 提取文件后缀并统一转为小写\n\tlet ext\n\tif (fileName.value.startsWith('.')) {\n\t\t// 直接传入后缀的情况（如 \".XLSX\"）\n\t\text = fileName.value.toLowerCase()\n\t} else {\n\t\t// 传入完整文件名的情况（如 \"Test.XLSX\"）\n\t\tconst lastDotIndex = fileName.value.lastIndexOf('.')\n\t\t// 无后缀的文件（如 \"README\"）\n\t\tif (lastDotIndex === -1) {\n\t\t\treturn 'default'\n\t\t}\n\t\text = fileName.value.slice(lastDotIndex).toLowerCase()\n\t}\n\n\t// 遍历映射关系（映射表已为小写），匹配对应的图标类型\n\tfor (const [iconType, extList] of Object.entries(fileTypeIcons)) {\n\t\tif (extList.includes(ext)) {\n\t\t\treturn iconType\n\t\t}\n\t}\n\n\t// 未匹配到任何类型，返回默认值\n\treturn 'default'\n})\n\n// 验证文件类型是否符合 accept 属性\nconst validateFileType = (file: File): boolean => {\n\t// 如果没有设置 accept，则允许所有类型\n\tif (!props.accept) return true\n\n\tconst fileName = file.name.toLowerCase()\n\tconst acceptRules = props.accept.split(',').map(rule => rule.trim().toLowerCase())\n\n\t// 检查文件是否匹配任意一条 accept 规则\n\treturn acceptRules.some(rule => {\n\t\tif (rule.startsWith('.')) {\n\t\t\t// 扩展名规则（如 \".xlsx,.xls\"）\n\t\t\treturn fileName.endsWith(rule)\n\t\t} else if (rule === '*/*') {\n\t\t\t// 允许所有类型\n\t\t\treturn true\n\t\t} else if (rule.includes('/*')) {\n\t\t\t// MIME 类型通配符（如 \"image/*\", \"application/*\"）\n\t\t\tconst typePrefix = rule.split('/*')[0]\n\t\t\treturn file.type.toLowerCase().startsWith(typePrefix + '/')\n\t\t} else {\n\t\t\t// 具体 MIME 类型（如 \"application/json\"）\n\t\t\treturn file.type.toLowerCase() === rule\n\t\t}\n\t})\n}\n\nconst handleChange = async (e: Event) => {\n\tconst files = (e.target as HTMLInputElement).files\n\tif (files && files.length > 0) {\n\t\tconst file = files[0]\n\t\tif (validateFileType(file)) {\n\t\t\tawait processFile(file)\n\t\t} else {\n\t\t\t// 文件类型不通过校验，显示错误状态\n\t\t\tstate.value = 'error'\n\t\t\terrorTip.value = t('to.import.error.fileType')\n\t\t\tfileName.value = ''\n\t\t\t// 清空 input 以便重新选择\n\t\t\t;(e.target as HTMLInputElement).value = ''\n\t\t}\n\t}\n}\n\nasync function handleUpload(file) {\n\tlet formData = new FormData()\n\tformData.append(props.name, file)\n\tif (props.data) {\n\t\tObject.keys(props.data).forEach(key => {\n\t\t\tformData.append(key, props.data[key])\n\t\t})\n\t}\n\tstate.value = 'uploading'\n\tfileAjax({\n\t\taction: props.action,\n\t\tdata: formData,\n\t\theaders: props.headers,\n\t\twithCredentials: props.withCredentials,\n\t\tonError: (err, status) => {\n\t\t\tstate.value = 'error'\n\t\t\temit('error', err, status, file)\n\t\t\t// 根据错误类型做不同处理\n\t\t\tswitch (err.type) {\n\t\t\t\tcase 'network_error':\n\t\t\t\t\terrorTip.value = t('to.import.error.network') + err.message\n\t\t\t\t\tbreak\n\t\t\t\tcase 'http_error':\n\t\t\t\t\terrorTip.value = t('to.import.error.server') + `(${status})：${err.response?.message || err.message}`\n\t\t\t\t\tbreak\n\t\t\t\tcase 'parse_error':\n\t\t\t\t\terrorTip.value = t('to.import.error.dataFormat') + err.message\n\t\t\t\t\tbreak\n\t\t\t}\n\t\t},\n\t\tonSuccess: (data, status) => {\n\t\t\tlet _data = JSON.parse(JSON.stringify(data))\n\t\t\tbtnIcon.value = 'import'\n\t\t\tstate.value = 'success'\n\t\t\temit('success', _data, status, file)\n\t\t},\n\t\tonProgress: e => {\n\t\t\tstate.value = 'uploading'\n\t\t\temit('progress', e.loaded, e.total, file)\n\t\t}\n\t})\n}\nconst handleFloat = el => {\n\tif (props.disabled) return false\n\tlayer.value.toggle(el)\n}\n\nconst handleImport = () => {\n\tfileInput.value.click()\n}\n\nconst downloadTem = () => {\n\temit('download-template')\n}\n\n// 重置组件状态\nconst handleReset = () => {\n\tstate.value = ''\n\tfileName.value = ''\n\terrorTip.value = ''\n\tbtnIcon.value = 'import'\n\tif (fileInput.value) {\n\t\tfileInput.value.value = ''\n\t}\n}\n\nconst handleFloatOpened = () => {\n\tisFloatOpen.value = true\n\taddPasteListener()\n\tif (props.opened) {\n\t\tprops.opened()\n\t}\n}\n\n// 处理 float 关闭回调\nconst handleFloatClosed = () => {\n\tremovePasteListener()\n\tisFloatOpen.value = false\n\tif (props.closed) {\n\t\tprops.closed()\n\t}\n}\n\n// 拖拽上传相关方法\nconst handleDragOver = () => {\n\tisDragOver.value = true\n}\n\nconst handleDragLeave = () => {\n\tisDragOver.value = false\n}\n\nconst handleDrop = async (e: DragEvent) => {\n\tisDragOver.value = false\n\tconst files = e.dataTransfer?.files\n\tif (files && files.length > 0) {\n\t\tconst file = files[0]\n\t\tif (validateFileType(file)) {\n\t\t\tawait processFile(file)\n\t\t} else {\n\t\t\t// 文件类型不正确时的状态处理\n\t\t\tstate.value = 'error'\n\t\t\terrorTip.value = t('to.import.error.fileType')\n\t\t\tfileName.value = ''\n\t\t}\n\t}\n}\n\n// 粘贴上传相关方法\nconst handlePaste = async (e: ClipboardEvent) => {\n\t// 只在下拉框打开时处理粘贴\n\tif (!isFloatOpen.value) return\n\n\tconst items = e.clipboardData?.items\n\tif (!items) return\n\n\tfor (let i = 0; i < items.length; i++) {\n\t\tconst item = items[i]\n\t\tif (item.kind === 'file') {\n\t\t\tconst file = item.getAsFile()\n\t\t\tif (file && validateFileType(file)) {\n\t\t\t\te.preventDefault()\n\t\t\t\tawait processFile(file)\n\t\t\t\tbreak\n\t\t\t} else if (file) {\n\t\t\t\t// 文件类型不正确时的状态处理\n\t\t\t\te.preventDefault()\n\t\t\t\tstate.value = 'error'\n\t\t\t\terrorTip.value = t('to.import.error.fileType')\n\t\t\t\tfileName.value = ''\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\t}\n}\n\n// 添加全局粘贴监听\nconst addPasteListener = () => {\n\tdocument.body.addEventListener('paste', handlePaste)\n}\n\n// 移除全局粘贴监听\nconst removePasteListener = () => {\n\tdocument.body.removeEventListener('paste', handlePaste)\n}\n\n// 组件卸载前移除监听\nonBeforeUnmount(() => {\n\tremovePasteListener()\n})\n\n// 处理文件的统一方法\nconst processFile = async (file: File) => {\n\tlet flag = true\n\tif (props.beforeStart) {\n\t\tif (typeof props.beforeStart === 'function') {\n\t\t\tconst result = props.beforeStart(file)\n\t\t\tif (result && typeof (result as Promise<boolean>).then === 'function') {\n\t\t\t\tflag = await result\n\t\t\t} else {\n\t\t\t\tflag = !!result\n\t\t\t}\n\t\t} else {\n\t\t\tflag = !!props.beforeStart\n\t\t}\n\t}\n\tif (!flag || !props.action) return false\n\tfileName.value = file.name\n\tbtnIcon.value = 'loading'\n\temit('start', file)\n\thandleUpload(file)\n}\n</script>\n"],"names":["DO_defineComponent","fileName","_createElementBlock","_unref","flex","_normalizeClass","_createElementVNode","accept","_createBlock","_withModifiers","_createVNode"],"mappings":"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"}