完善导入导出功能

This commit is contained in:
yuxin-pc 2025-06-08 15:33:44 +08:00
parent 3a4430dcdc
commit 8263f74a2c
2 changed files with 86 additions and 1 deletions

View File

@ -38,5 +38,25 @@ export default {
console.log(error)
})
},
export(callback) {
axios.get('/api/target/website/export', {
responseType: 'blob' // 重要指定响应类型为blob
}).then((response) => {
callback(response);
}).catch((error) => {
console.log(error)
})
},
import(formData, callback) {
axios.post('/api/target/website/import', formData, {
headers: {
'Content-Type': 'multipart/form-data'
}
}).then((response) => {
callback(response);
}).catch((error) => {
console.log(error)
})
}
}

View File

@ -12,6 +12,13 @@
<el-button type="warning" style="margin-left:20px;" size="mini" @click="handleImport"><i
class="el-icon-upload2"></i> 导入
</el-button>
<input
type="file"
ref="fileInput"
style="display: none"
accept=".json"
@change="handleFileChange"
/>
</el-col>
<el-col :span="20">
<div style="text-align: right;">
@ -407,6 +414,64 @@ export default {
this.showDepthList = false;
this.formData.depth = '';
}
},
async handleExport() {
try {
// GET
await targetWebsiteApi.export((response) => {
//
const url = window.URL.createObjectURL(new Blob([response.data]))
const link = document.createElement('a')
link.href = url
link.setAttribute('download', 'target_websites.json') //
document.body.appendChild(link)
link.click()
//
document.body.removeChild(link)
window.URL.revokeObjectURL(url)
Message.success('导出成功')
})
} catch (error) {
console.error('导出失败:', error)
Message.error('导出失败: ' + (error.response?.data?.message || error.message))
}
},
//
handleImport() {
this.$refs.fileInput.click()
},
//
async handleFileChange(event) {
const file = event.target.files[0]
if (!file) return
//
if (!file.name.endsWith('.json')) {
Message.error('请选择JSON文件')
return
}
try {
// FormData
const formData = new FormData()
formData.append('file', file)
// POST
await targetWebsiteApi.import(formData, (response) => {
Message.success(response.data)
// 便
event.target.value = ''
//
this.resetSearch()
})
} catch (error) {
console.error('导入失败:', error)
Message.error('导入失败: ' + (error.response?.data?.message || error.message))
}
}
},
mounted: function () {