From 29461a856826fbb7726848982387ea78f8573754 Mon Sep 17 00:00:00 2001 From: vben Date: Tue, 8 Dec 2020 22:18:20 +0800 Subject: [PATCH] fix: file upload key loss #120 --- .env.development | 3 +++ .env.production | 4 ++++ CHANGELOG.zh_CN.md | 3 +++ src/api/sys/upload.ts | 7 +++---- src/components/Excel/src/Export2Excel.ts | 1 + src/components/Excel/src/ImportExcel.vue | 3 ++- src/components/Excel/src/types.ts | 1 + src/components/Form/src/types/index.ts | 1 - src/components/Menu/src/BasicMenu.tsx | 1 + src/components/Upload/src/FileList.tsx | 4 ++-- src/hooks/setting/index.ts | 2 ++ src/types/config.d.ts | 2 ++ src/views/demo/excel/ArrayExport.vue | 4 ++-- src/views/demo/excel/JsonExport.vue | 5 +++-- 14 files changed, 29 insertions(+), 12 deletions(-) diff --git a/.env.development b/.env.development index 6e117277..36595b60 100644 --- a/.env.development +++ b/.env.development @@ -14,5 +14,8 @@ VITE_DROP_CONSOLE = false # Basic interface address SPA VITE_GLOB_API_URL=/api +# File upload address, optional +VITE_GLOB_UPLOAD_URL=/upload + # Interface prefix VITE_GLOB_API_URL_PREFIX= diff --git a/.env.production b/.env.production index b181024e..2f6243c7 100644 --- a/.env.production +++ b/.env.production @@ -13,6 +13,10 @@ VITE_BUILD_GZIP = false # Basic interface address SPA VITE_GLOB_API_URL=/api +# File upload address, optional +# It can be forwarded by nginx or write the actual address directly +VITE_GLOB_UPLOAD_URL=/upload + # Interface prefix VITE_GLOB_API_URL_PREFIX= diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md index 03b5b27a..de17b1e9 100644 --- a/CHANGELOG.zh_CN.md +++ b/CHANGELOG.zh_CN.md @@ -11,6 +11,7 @@ - i18n 支持 vscode `i18n-ally`插件 - 新增多级路由缓存示例 - 打包代码拆分(试验) +- 提取上传地址到全局变量,打包可以动态配置 ### ⚡ Performance Improvements @@ -23,6 +24,7 @@ - 升级`ant-design-vue`到`2.0.0-rc.3` - 重新引入`vueuse` - 移除 route meta 内的`afterCloseLoading`属性 +- 文档更新 ### 🐛 Bug Fixes @@ -31,6 +33,7 @@ - 修复顶部菜单宽度计算问题 - 修复表格 tabSetting 问题 - 修复文件上传删除失效 +- 修复表格行编辑保存错误问题 ## 2.0.0-rc.12 (2020-11-30) diff --git a/src/api/sys/upload.ts b/src/api/sys/upload.ts index 1cdd5c48..c3a574a3 100644 --- a/src/api/sys/upload.ts +++ b/src/api/sys/upload.ts @@ -1,10 +1,9 @@ import { UploadApiResult } from './model/uploadModel'; import { defHttp } from '/@/utils/http/axios'; import { UploadFileParams } from '/@/utils/http/axios/types'; +import { useGlobSetting } from '/@/hooks/setting'; -enum Api { - UPLOAD_URL = '/upload', -} +const { uploadUrl = '' } = useGlobSetting(); /** * @description: Upload interface @@ -15,7 +14,7 @@ export function uploadApi( ) { return defHttp.uploadFile( { - url: Api.UPLOAD_URL, + url: uploadUrl, onUploadProgress, }, params diff --git a/src/components/Excel/src/Export2Excel.ts b/src/components/Excel/src/Export2Excel.ts index 049b9697..d1255538 100644 --- a/src/components/Excel/src/Export2Excel.ts +++ b/src/components/Excel/src/Export2Excel.ts @@ -31,6 +31,7 @@ export function jsonToSheetXlsx({ writeFile(workbook, filename, write2excelOpts); /* at this point, out.xlsb will have been downloaded */ } + export function aoaToSheetXlsx({ data, header, diff --git a/src/components/Excel/src/ImportExcel.vue b/src/components/Excel/src/ImportExcel.vue index b0439521..8e73225f 100644 --- a/src/components/Excel/src/ImportExcel.vue +++ b/src/components/Excel/src/ImportExcel.vue @@ -17,7 +17,7 @@ import type { ExcelData } from './types'; export default defineComponent({ name: 'ImportExcel', - emits: ['success'], + emits: ['success', 'error'], setup(_, { emit }) { const inputRef = ref(null); const loadingRef = ref(false); @@ -82,6 +82,7 @@ resolve(''); } catch (error) { reject(error); + emit('error'); } finally { loadingRef.value = false; } diff --git a/src/components/Excel/src/types.ts b/src/components/Excel/src/types.ts index e7622bb3..2ea08be1 100644 --- a/src/components/Excel/src/types.ts +++ b/src/components/Excel/src/types.ts @@ -17,6 +17,7 @@ export interface JsonToSheet { json2sheetOpts?: JSON2SheetOpts; write2excelOpts?: WritingOptions; } + export interface AoAToSheet { data: T[][]; header?: T[]; diff --git a/src/components/Form/src/types/index.ts b/src/components/Form/src/types/index.ts index 3a460f78..d6316dc8 100644 --- a/src/components/Form/src/types/index.ts +++ b/src/components/Form/src/types/index.ts @@ -93,7 +93,6 @@ export type ComponentType = | 'SelectOption' | 'TreeSelect' | 'Transfer' - // | 'Radio' | 'RadioButtonGroup' | 'RadioGroup' | 'Checkbox' diff --git a/src/components/Menu/src/BasicMenu.tsx b/src/components/Menu/src/BasicMenu.tsx index ac0a0512..044c9f0a 100644 --- a/src/components/Menu/src/BasicMenu.tsx +++ b/src/components/Menu/src/BasicMenu.tsx @@ -190,6 +190,7 @@ export default defineComponent({ const { appendClass } = props; const isAppendActiveCls = appendClass && level === 1 && menu.path === unref(currentParentPath); + const levelCls = [ `${prefixCls}-item__level${level}`, ` ${menuState.theme} `, diff --git a/src/components/Upload/src/FileList.tsx b/src/components/Upload/src/FileList.tsx index 4137537b..e93b6c84 100644 --- a/src/components/Upload/src/FileList.tsx +++ b/src/components/Upload/src/FileList.tsx @@ -38,9 +38,9 @@ export default defineComponent({ - {dataSource.map((record = {}) => { + {dataSource.map((record = {}, index) => { return ( - + {columnList.map((item) => { const { dataIndex = '', customRender, align = 'center' } = item; const render = customRender && isFunction(customRender); diff --git a/src/hooks/setting/index.ts b/src/hooks/setting/index.ts index dccf7d7a..464838da 100644 --- a/src/hooks/setting/index.ts +++ b/src/hooks/setting/index.ts @@ -18,6 +18,7 @@ const { VITE_GLOB_API_URL, VITE_GLOB_APP_SHORT_NAME, VITE_GLOB_API_URL_PREFIX, + VITE_GLOB_UPLOAD_URL, } = ENV; if (!reg.test(VITE_GLOB_APP_SHORT_NAME)) { @@ -33,6 +34,7 @@ export const useGlobSetting = (): Readonly => { apiUrl: VITE_GLOB_API_URL, shortName: VITE_GLOB_APP_SHORT_NAME, urlPrefix: VITE_GLOB_API_URL_PREFIX, + uploadUrl: VITE_GLOB_UPLOAD_URL, }; return glob as Readonly; }; diff --git a/src/types/config.d.ts b/src/types/config.d.ts index 99e20806..6639d57a 100644 --- a/src/types/config.d.ts +++ b/src/types/config.d.ts @@ -129,6 +129,7 @@ export interface GlobConfig { title: string; // 项目路径 apiUrl: string; + uploadUrl?: string; urlPrefix?: string; shortName: string; } @@ -139,6 +140,7 @@ export interface GlobEnvConfig { VITE_GLOB_API_URL: string; VITE_GLOB_API_URL_PREFIX?: string; VITE_GLOB_APP_SHORT_NAME: string; + VITE_GLOB_UPLOAD_URL?: string; } interface GlobWrap { diff --git a/src/views/demo/excel/ArrayExport.vue b/src/views/demo/excel/ArrayExport.vue index 0b383f7a..320ee811 100644 --- a/src/views/demo/excel/ArrayExport.vue +++ b/src/views/demo/excel/ArrayExport.vue @@ -11,11 +11,11 @@