# ImportModal 通用导入组件 一个可复用的数据导入弹窗组件,支持模板下载、文件上传、拖拽上传等功能。 ## 功能特性 - 📄 **模板下载**:支持下载 Excel 导入模板 - 📤 **文件上传**:支持点击上传和拖拽上传 - 📊 **进度显示**:实时显示上传进度 - ✅ **结果反馈**:详细的导入结果提示 - 🔒 **文件校验**:文件格式和大小限制 - 📱 **响应式设计**:适配不同屏幕尺寸 ## 使用方法 ### 1. 导入组件 ```vue ``` ### 2. 在模板中使用 ```vue ``` ### 3. 处理事件 ```vue ``` ## Props | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | show | boolean | - | 控制弹窗显示/隐藏 | | templateName | string | 'import_template.xlsx' | 模板文件名 | | importType | string | 'default' | 导入类型标识 | ## Events | 事件名 | 参数 | 说明 | |--------|------|------| | update:show | boolean | 弹窗显示状态变化 | | success | result: ImportResult | 导入成功回调 | | template-download | type?: string | 模板下载回调 | ## ImportResult 类型 ```typescript interface ImportResult { success: boolean; message: string; details?: { success: number; failed: number; }; } ``` ## 自定义配置 ### 文件限制 - 支持格式:`.xlsx`, `.xls` - 文件大小:最大 10MB - 同时上传:仅支持单文件 ### 样式自定义 组件使用 scoped 样式,可通过 CSS 变量或深度选择器自定义样式。 ## API 集成点 组件中预留了以下 API 集成点,需要根据实际项目进行实现: 1. **模板下载 API** ```javascript // 在 downloadTemplate 函数中实现 const downloadTemplate = () => { // TODO: 调用模板下载 API }; ``` 2. **文件上传 API** ```javascript // 在 handleUpload 函数中实现 const handleUpload = (options) => { // TODO: 调用文件上传 API }; ``` 3. **数据导入 API** ```javascript // 在 startImport 函数中实现 const startImport = async () => { // TODO: 调用数据导入 API }; ``` ## 注意事项 1. 确保后端支持对应的文件格式 2. 模板格式要与后端解析逻辑一致 3. 合理设置文件大小限制 4. 提供清晰的错误提示信息 5. 考虑网络异常情况的处理