diff --git a/src/api/tools.js b/src/api/tools.js new file mode 100644 index 0000000..811a95b --- /dev/null +++ b/src/api/tools.js @@ -0,0 +1,25 @@ +import {mande} from "mande"; + +const tools = mande('/api/v2/tools') + +// 下载Coach Outlet Excel文件 +export const DownloadCoachOutletExcel = (providerId) => { + // return tools.get(`/excel/coach-outlet/${providerId}`, { + // responseType: 'blob' // 指定响应类型为blob,用于文件下载 + // }) + return fetch(`/api/v2/tools/excel/coach-outlet/${providerId}`, { + method: "get", + mode: "no-cors", + referrerPolicy: "no-referrer", + }) + .then((res) => res.blob()) + .then((res) => { + const aElement = document.createElement("a"); + aElement.setAttribute("download", providerId + ".xlsx"); + const href = URL.createObjectURL(res); + aElement.href = href; + aElement.setAttribute("target", "_blank"); + aElement.click(); + URL.revokeObjectURL(href); + }); +} \ No newline at end of file diff --git a/src/componse/tools/ExportCheaper.vue b/src/componse/tools/ExportCheaper.vue new file mode 100644 index 0000000..875b14a --- /dev/null +++ b/src/componse/tools/ExportCheaper.vue @@ -0,0 +1,56 @@ +<template> + <a-card bordered hoverable class="w-150px" @click="downloadExcel"> + <template #title> + <div class="text-xxl"> + 导出{{ providerName }}优惠商品 + </div> + </template> + <div class="flex space-x-2 items-center"> + <FileExcelOutlined class="text-lg" /> + <span>Excel导出</span> + </div> + </a-card> +</template> + +<script setup> +import { FileExcelOutlined } from "@ant-design/icons-vue"; +import { computed } from "vue"; +import { DownloadCoachOutletExcel } from "@/api/tools.js"; +import { message } from "ant-design-vue"; + +const props = defineProps({ + providerId: { + type: String, + required: true + }, +}); + +const loading = defineModel('loading') + + +// 根据providerId显示不同的名称 +const providerName = computed(() => { + if (props.providerId === 'us-coach-outlet') { + return '美国Coach Outlet'; + } else if (props.providerId === 'ca-coach-outlet') { + return '加拿大Coach Outlet'; + } + return 'Coach Outlet'; +}); + +// 下载Excel文件 +const downloadExcel = () => { + loading.value = true; + DownloadCoachOutletExcel(props.providerId) + .catch(err => { + console.error(err); + message.error('导出失败'); + }) + .finally(() => { + loading.value = false; + }); +}; +</script> + +<style scoped> +</style> \ No newline at end of file diff --git a/src/views/tools/index.vue b/src/views/tools/index.vue index 749589d..8662e67 100644 --- a/src/views/tools/index.vue +++ b/src/views/tools/index.vue @@ -1,15 +1,23 @@ <template> - <div class="h-full m-4 bg-gray-50 rounded-2 shadow-lg p-8 flex flex-col justify-between space-y-4"> - <a-flex wrap="wrap" > - <call-ats-tool></call-ats-tool> - </a-flex> + <div class="h-full m-4 bg-white rounded-2 shadow-lg p-8 flex flex-col space-y-4 overscroll-auto"> + <div class="text-2xl font-bold mb-4">工具箱</div> + <a-spin tip="Loading..." :spinning="loading"> + <div class="flex space-x-4"> + <call-ats-tool></call-ats-tool> + <ExportCheaper providerId="us-coach-outlet" v-model:loading="loading"></ExportCheaper> + <ExportCheaper providerId="ca-coach-outlet" v-model:loading="loading"></ExportCheaper> + </div> + </a-spin> </div> </template> -<script setup> +<script setup> import CallAtsTool from "@/componse/tools/call-ats-tool.vue"; +import ExportCheaper from "@/componse/tools/ExportCheaper.vue"; +import {ref} from "vue"; + +const loading = ref(false) </script> <style scoped> - </style> \ No newline at end of file diff --git a/vite.config.js b/vite.config.js index 53da80f..f750890 100644 --- a/vite.config.js +++ b/vite.config.js @@ -82,7 +82,14 @@ export default defineConfig({ changeOrigin: true, secure: false, ws: true, - } + }, + '/api/v2/tools': { + // target: 'https://ht.timerzz.com:20443/', + target: 'http://localhost:8085/', + changeOrigin: true, + secure: false, + ws: true, + }, }, }, resolve: {