From 7e6921c8dfe4592ceb2f8133ecca90f11eb19600 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=BC=95?= Date: Sat, 27 Dec 2025 14:27:33 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E6=A8=A1=E6=9D=BF=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- auto-imports.d.ts | 2 +- dev-dist/sw.js | 2 +- index.html | 4 +- public/logo.png | Bin 0 -> 66238 bytes public/version.json | 6 +- src/App.vue | 2 +- src/assets/scss/index.scss | 31 ++ src/excelHandle.lnk | Bin 1156 -> 0 bytes src/main.ts | 4 +- src/router/index.ts | 5 + src/services/excel-upload.ts | 71 ++++ src/services/home.ts | 38 +- src/{api => utils/request}/base-service.ts | 63 +-- src/views/excel-upload/index.vue | 437 +++++++++++++++++++++ vite.config.ts | 11 +- 16 files changed, 617 insertions(+), 61 deletions(-) create mode 100644 public/logo.png delete mode 100644 src/excelHandle.lnk create mode 100644 src/services/excel-upload.ts rename src/{api => utils/request}/base-service.ts (62%) create mode 100644 src/views/excel-upload/index.vue diff --git a/README.md b/README.md index 44c373e..d422e65 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Vue 3 + Typescript + Vite + ElementUI-Plus + DayJs + Pinia +# Vue 3 + Typescript + Vite + TDdesign + DayJs + Pinia diff --git a/auto-imports.d.ts b/auto-imports.d.ts index 9d24007..c2047c2 100644 --- a/auto-imports.d.ts +++ b/auto-imports.d.ts @@ -6,5 +6,5 @@ // biome-ignore lint: disable export {} declare global { - + const ElMessageBox: typeof import('element-plus/es')['ElMessageBox'] } diff --git a/dev-dist/sw.js b/dev-dist/sw.js index b5057da..3eafb5b 100644 --- a/dev-dist/sw.js +++ b/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-86c9b217'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "index.html", - "revision": "0.t9v2fs5c6io" + "revision": "0.o5uo4dculfk" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { diff --git a/index.html b/index.html index 1ba580c..b527dbb 100644 --- a/index.html +++ b/index.html @@ -2,12 +2,12 @@ - + - Vue项目模板 + Vue模板
diff --git a/public/logo.png b/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..caf8b1c939d4f9f5d8bdf7eaa32495975d2b913c GIT binary patch literal 66238 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 { z-index: 1000; display: flex; justify-content: center; - padding: 6px 8px; + padding: 16px 8px; font-size: 12px; color: #333; background: rgba(255, 255, 255, 0.85); diff --git a/src/assets/scss/index.scss b/src/assets/scss/index.scss index 1bdcade..48122c9 100644 --- a/src/assets/scss/index.scss +++ b/src/assets/scss/index.scss @@ -3,6 +3,37 @@ padding: 0; box-sizing: border-box !important; } + +/* 禁用移动端弹性滚动 */ +html, body { + height: 100%; + overflow: hidden; + position: fixed; + width: 100%; + -webkit-overflow-scrolling: touch; +} + +#app { + height: 100%; + overflow: auto; + -webkit-overflow-scrolling: auto; + position: relative; +} + +/* 禁用iOS橡皮筋效果 */ +body { + position: fixed; + width: 100%; + height: 100%; + overscroll-behavior: none; + -webkit-overflow-scrolling: touch; +} + +/* 防止下拉刷新和弹性滚动 */ +html { + overscroll-behavior: none; + -webkit-overflow-scrolling: touch; +} li { list-style: none; } diff --git a/src/excelHandle.lnk b/src/excelHandle.lnk deleted file mode 100644 index c2c4f994817c92b1f68b033ca2bc7ae8eac70f91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1156 zcmah|ZAepL6h1S{kD_MkNLeX?p_S`Sr*4aZ<(q^m88K$HLca_HDuA^*IiXnQHK8YC*2^;?kk;rm81 zlZ$Gpg1l5sH4^L5fL76VTP2XI-s$pK9988W7g+*&Cl2PTIm=p=VhrrcAgAnD$40?h zPfl15o^wEXIXoBA@jx-423QfVa(9S|;Ku?h0DYbQJa^yh@Hz->4Rp;OIH!HFG6>LM z+9k_`tBHDyFCN_5K2@;$ddlf(vFXXK3B=0)koQ=z@^E_vtu90M*|xU(rmK@C_uPCw z^yry;ZfG#9TRd6(CFBjTFSx{_$3(4 z01FXjlZIyU;+6fgA!Y5|AFr^~NG@O@Yk=kM0iS*yfD4Q9^-v`Le{pbw$6%+)^?jcK z-Q?=EfK(m)JF(}3vyRIroXMsOuc8LWXt;1 import('@/views/index.vue') + }, + { + path: '/excel-upload', + name: 'ExcelUpload', + component: () => import('@/views/excel-upload/index.vue') } ] diff --git a/src/services/excel-upload.ts b/src/services/excel-upload.ts new file mode 100644 index 0000000..4c0aad2 --- /dev/null +++ b/src/services/excel-upload.ts @@ -0,0 +1,71 @@ +import Axios from '../utils/request/base-service' // 导入配置好的axios文件 +import type { AxiosProgressEvent } from 'axios' + +// 封装axios请求函数,并用export导出 +export function uploadExcel( + file: FormData, + onUploadProgress?: (progressEvent: AxiosProgressEvent) => void +) { + return Axios({ + url: '/upload', + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data' + }, + data: file, + responseType: 'blob', + onUploadProgress + }) +} + +export function checkHealth() { + return Axios({ + url: '/health', + method: 'get', + headers: { + 'Cache-Control': 'no-cache', + Pragma: 'no-cache' + }, + params: { + _t: Date.now() + } + }) +} + +export function checkDataSourceStatus() { + return Axios({ + url: '/data-source-status', + method: 'get', + headers: { + 'Cache-Control': 'no-cache', + Pragma: 'no-cache' + }, + params: { + _t: Date.now() + } + }) +} + +export function testConnection() { + return Axios({ + url: '/test', + method: 'get', + params: { + _t: Date.now() + } + }) +} + +export function getProcessingProgress() { + return Axios({ + url: '/progress', + method: 'get', + headers: { + 'Cache-Control': 'no-cache', + Pragma: 'no-cache' + }, + params: { + _t: Date.now() + } + }) +} \ No newline at end of file diff --git a/src/services/home.ts b/src/services/home.ts index 24975b7..ce3b4bc 100644 --- a/src/services/home.ts +++ b/src/services/home.ts @@ -7,41 +7,41 @@ * @LastEditTime: 2022-01-25 18:04:29 */ -import Axios from "../api/base-service"; // 导入配置好的axios文件 +import Axios from '../utils/request/base-service' // 导入配置好的axios文件 // 封装axios请求函数,并用export导出 export function getInfo(datas: unknown) { return Axios({ - url: "/api.php?key=free&appid=0&msg=鹅鹅鹅", - method: "GET", + url: '/api.php?key=free&appid=0&msg=鹅鹅鹅', + method: 'GET', headers: { - "content-type": "application/json", + 'content-type': 'application/json' }, - data: datas, - }); + data: datas + }) } export function getInfoA(datas: unknown) { return Axios({ - url: "/api/getbooks", - method: "get", + url: '/api/getbooks', + method: 'get', headers: { - "Content-Type": "application/x-www-form-urlencoded", //设置请求头请求格式form + 'Content-Type': 'application/x-www-form-urlencoded' //设置请求头请求格式form }, - data: datas, - }); + data: datas + }) } export function getItem(datas: unknown) { return Axios({ - url: "/api/getItem", - method: "post", + url: '/api/getItem', + method: 'post', headers: { - "Content-Type": "application/json", //设置请求头请求格式为json + 'Content-Type': 'application/json' //设置请求头请求格式为json }, - data: datas, - }); + data: datas + }) } export function getItemInfo(datas: unknown) { return Axios({ - url: "/api/getItemInfo" + datas, - method: "get", - }); + url: '/api/getItemInfo' + datas, + method: 'get' + }) } diff --git a/src/api/base-service.ts b/src/utils/request/base-service.ts similarity index 62% rename from src/api/base-service.ts rename to src/utils/request/base-service.ts index e48a6c2..d66cac9 100644 --- a/src/api/base-service.ts +++ b/src/utils/request/base-service.ts @@ -1,5 +1,5 @@ import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios' -import { ElMessage, ElMessageBox } from 'element-plus' +import { DialogPlugin } from 'tdesign-vue-next' // 获取浏览器中的url地址和端口号并拼接 /* import { config } from 'public/config.js' const getBaseUrl = () => { @@ -13,8 +13,8 @@ const getBaseUrl = () => { } */ // 创建一个新的axios实例 const instance: AxiosInstance = axios.create({ - baseURL: import.meta.env.VITE_BASE_API, - timeout: 30000, + baseURL: '/api', + timeout: 3000000, withCredentials: false, headers: { 'Content-Type': 'application/json' @@ -46,14 +46,31 @@ instance.interceptors.response.use( const data = response.data console.log('接口返回', data) - // 判断接口返回的 Message 字段是否为 Success - if (!data?.Message.includes('Success')) { + + // 对于健康检查和数据源状态检查接口,直接返回数据 + if ( + response.config.url?.includes('/health') || + response.config.url?.includes('/data-source-status') + ) { + return response + } + + // 判断接口返回的 Message 字段是否为 Success(对于其他接口) + if (data && data.Message && !data.Message.includes('Success')) { // 如果不是 Success,则将请求视为失败 - ElMessageBox.alert(JSON.stringify(data), '错误', { - confirmButtonText: '确定', - type: 'error', - dangerouslyUseHTMLString: false + const errorDia = DialogPlugin({ + header: '错误', + body: `接口${data.config.url}报错!【${JSON.stringify(data) || '未知错误'}】`, + confirmBtn: null, + cancelBtn: null, + destroyOnClose: true, + theme: 'danger', + zIndex: 10000, + onClose: () => { + errorDia.destroy() + } }) + return Promise.reject({ response: { status: 200, @@ -62,8 +79,8 @@ instance.interceptors.response.use( } }) } - // 如果是 Success,则返回数据 - return data + // 如果是 Success,或者没有Message字段,则返回数据 + return response }, (error: any) => { // 对响应错误做点什么 @@ -81,19 +98,19 @@ instance.interceptors.response.use( } console.error('报错', error) - - ElMessageBox.alert( - `接口:【${error.config.url}】报错 - ${error.message} - ${JSON.stringify(error?.response?.data)} - `, - '报错', - { - confirmButtonText: '确定', - type: 'error', - dangerouslyUseHTMLString: false + const errorDia = DialogPlugin({ + header: '错误', + body: `接口${error.config.url}报错!【${JSON.stringify(error.message) || '未知错误'}】`, + confirmBtn: null, + cancelBtn: null, + destroyOnClose: true, + theme: 'danger', + zIndex: 10000, + onClose: () => { + errorDia.destroy() } - ) + }) + return Promise.reject(error) } ) diff --git a/src/views/excel-upload/index.vue b/src/views/excel-upload/index.vue new file mode 100644 index 0000000..962a022 --- /dev/null +++ b/src/views/excel-upload/index.vue @@ -0,0 +1,437 @@ + + + + + diff --git a/vite.config.ts b/vite.config.ts index 63c28fa..c4abe31 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -26,8 +26,8 @@ export default defineConfig({ globPatterns: ['**/*.{js,css,html,svg,jpg,ico}'] }, manifest: { - name: 'vue模板', - short_name: 'vue模板', + name: 'Excel处理工具', + short_name: '处理工具', theme_color: '#fff', // 浏览器状态栏主题 start_url: './', display: 'standalone', @@ -39,7 +39,6 @@ export default defineConfig({ type: 'image/png', purpose: 'any' }, - { src: 'logo.png', sizes: '512x512', @@ -67,17 +66,13 @@ export default defineConfig({ open: true, proxy: { '/api': { - // 7566 - // target: 'http://192.168.39.120:7566', - target: 'http://127.0.0.1:8066', + target: 'http://10.2.0.32:5000', changeOrigin: true, rewrite: p => p.replace(/^\/api/, ''), bypass: (req, res, options) => { - // @ts-ignore const proxyURL = options.target + options.rewrite(req.url) // console.log('proxyURL', proxyURL) req.headers['x-req-proxyURL'] = proxyURL // 设置未生效 - // @ts-ignore res.setHeader('x-req-proxyURL', proxyURL) // 设置响应头可以看到 } }