From d86bc810ccfe8a275d0d1e05619aa2231c02c22e Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Thu, 29 Oct 2026 14:26:56 +0800 Subject: [PATCH 1/2] =?UTF-8?q?fix:=E5=9B=BE=E7=89=87=E8=AE=BF=E9=97=AE=20?= =?UTF-8?q?fix:=E6=9D=83=E9=99=90=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 5 +- src/api/admin/dept.ts | 3 + src/api/admin/dict.ts | 106 +++++----- src/api/admin/log.ts | 3 + src/components/Editor/index.vue | 19 +- src/components/FileImage/index.vue | 72 +++++++ src/components/Material/file.vue | 6 +- src/components/Material/index.vue | 8 +- src/components/Material/preview.vue | 9 +- src/components/NameAvatar/index.vue | 2 +- src/components/PreviewImage/index.vue | 13 +- src/components/SvgIcon/index.vue | 2 +- src/components/Upload/Image.vue | 4 +- src/components/Upload/Images.vue | 31 +-- src/components/Upload/qnImages.vue | 2 +- src/components/UserInfoCell/index.vue | 2 +- .../Verifition/Verify/VerifyPoints.vue | 4 +- .../Verifition/Verify/VerifySlide.vue | 6 +- src/components/VideoPlayer/index.vue | 4 +- .../Wechat/wx-material-select/main.vue | 2 +- src/components/Wechat/wx-msg/index.vue | 24 ++- src/components/Wechat/wx-news/index.vue | 8 +- src/components/Wechat/wx-reply/index.vue | 6 +- src/components/index.ts | 2 + src/layout/component/columnsAside.vue | 2 +- src/layout/lockScreen/index.vue | 2 +- src/layout/logo/index.vue | 2 +- src/layout/navBars/breadcrumb/user.vue | 2 +- src/main.ts | 3 + src/types/file-access.d.ts | 11 ++ src/utils/file-access-core.ts | 131 +++++++++++++ src/utils/file-access-dom.ts | 39 ++++ src/utils/file-access.ts | 108 +++++++++++ src/utils/other.ts | 10 +- src/views/admin/dict/index.vue | 36 ++-- src/views/admin/log/index.vue | 17 +- src/views/admin/sensitive/match.vue | 2 +- src/views/admin/system/dept/index.vue | 13 +- src/views/admin/system/user/index.vue | 183 ++++++------------ .../biz/app/page/component/decoration-img.vue | 4 +- .../page/component/widgets/news/content.vue | 2 +- src/views/biz/app/tabbar/index.vue | 2 +- src/views/biz/mp/wx-fans-msg/index.vue | 4 +- .../mp/wx-material/components/news-form.vue | 8 +- src/views/biz/mp/wx-material/index.vue | 4 +- .../canteen/boxesInfo/scheduleDetail.vue | 6 +- src/views/canteen/canteenDailyMenu/form.vue | 2 +- src/views/canteen/canteenDailyMenu/index.vue | 6 +- src/views/canteenDailyDishes/index.vue | 4 +- src/views/flow/form/RichEditor.vue | 2 +- src/views/flow/form/Sign.vue | 2 +- .../hard/hard-after-sale/order-refund.vue | 6 +- src/views/home/navMenu/index.vue | 6 +- src/views/home/news/content.vue | 2 +- .../home/widgets/components/current-user.vue | 4 +- src/views/integrated/app-version/index.vue | 7 +- src/views/integrated/dp/index.vue | 2 +- src/views/login/component/password.vue | 2 +- src/views/login/component/qrcode.vue | 4 +- src/views/login/index.vue | 4 +- src/views/wallet/wallet-manage/index.vue | 108 +++-------- src/views/wallet/wallet-qb/index.vue | 100 +++------- test-vectors/file-access.json | 29 +++ tests/dept-export.test.cjs | 67 +++++++ tests/file-access.test.cjs | 131 +++++++++++++ tests/file-image.test.cjs | 164 ++++++++++++++++ tests/helpers/file-access-runtime.cjs | 36 ++++ tests/log-export.test.cjs | 93 +++++++++ vite.config.ts | 7 + 69 files changed, 1264 insertions(+), 458 deletions(-) create mode 100644 src/components/FileImage/index.vue create mode 100644 src/types/file-access.d.ts create mode 100644 src/utils/file-access-core.ts create mode 100644 src/utils/file-access-dom.ts create mode 100644 src/utils/file-access.ts create mode 100644 test-vectors/file-access.json create mode 100644 tests/dept-export.test.cjs create mode 100644 tests/file-access.test.cjs create mode 100644 tests/file-image.test.cjs create mode 100644 tests/helpers/file-access-runtime.cjs create mode 100644 tests/log-export.test.cjs diff --git a/.gitignore b/.gitignore index 0aa81c4..161ff6e 100644 --- a/.gitignore +++ b/.gitignore @@ -52,4 +52,7 @@ coverage/ .video_agent/ .mimosa/ .zcode/ -.zcodeignore \ No newline at end of file +.zcodeignore + +# Local file-access credentials +.env.*.local diff --git a/src/api/admin/dept.ts b/src/api/admin/dept.ts index e170e8a..6bf61cd 100644 --- a/src/api/admin/dept.ts +++ b/src/api/admin/dept.ts @@ -1,4 +1,7 @@ import request from "/@/utils/request" +import { submitExportTask } from "/@/api/asyncTask" + +export const submitDeptExport = (query: Record) => submitExportTask("/admin/dept/export-async", query) export const deptTree = (params?: Object) => { return request({ diff --git a/src/api/admin/dict.ts b/src/api/admin/dict.ts index a821eac..2bc50bd 100644 --- a/src/api/admin/dict.ts +++ b/src/api/admin/dict.ts @@ -1,138 +1,138 @@ -import request from '/@/utils/request'; +import request from "/@/utils/request" export const getDicts = (type: String) => { return request({ url: `/admin/dict/type/${type}`, - method: 'get', - }); -}; + method: "get", + }) +} export function fetchList(query: any) { return request({ - url: '/admin/dict/list', - method: 'get', + url: "/admin/dict/list", + method: "get", params: query, - }); + }) } export function fetchItemList(query: any) { return request({ - url: '/admin/dict/item/page', - method: 'get', + url: "/admin/dict/item/page", + method: "get", params: query, - }); + }) } export function addItemObj(obj: any) { return request({ - url: '/admin/dict/item', - method: 'post', + url: "/admin/dict/item", + method: "post", data: obj, - }); + }) } export function getItemObj(id: string) { return request({ - url: '/admin/dict/item/details/' + id, - method: 'get', - }); + url: "/admin/dict/item/details/" + id, + method: "get", + }) } export function getItemDetails(obj: object) { return request({ - url: '/admin/dict/item/details', - method: 'get', + url: "/admin/dict/item/details", + method: "get", params: obj, - }); + }) } export function delItemObj(id: string) { return request({ - url: '/admin/dict/item/' + id, - method: 'delete', - }); + url: "/admin/dict/item/" + id, + method: "delete", + }) } export function putItemObj(obj: any) { return request({ - url: '/admin/dict/item', - method: 'put', + url: "/admin/dict/item", + method: "put", data: obj, - }); + }) } export function addObj(obj: any) { return request({ - url: '/admin/dict', - method: 'post', + url: "/admin/dict", + method: "post", data: obj, - }); + }) } export function getObj(id: string) { return request({ - url: '/admin/dict/details/' + id, - method: 'get', - }); + url: "/admin/dict/details/" + id, + method: "get", + }) } export function getObjDetails(obj: object) { return request({ - url: '/admin/dict/details', - method: 'get', + url: "/admin/dict/details", + method: "get", params: obj, - }); + }) } export function delObj(ids: Object) { return request({ - url: '/admin/dict', - method: 'delete', + url: "/admin/dict", + method: "delete", data: ids, - }); + }) } export function putObj(obj: any) { return request({ - url: '/admin/dict', - method: 'put', + url: "/admin/dict", + method: "put", data: obj, - }); + }) } export function refreshCache() { return request({ - url: '/admin/dict/sync', - method: 'put', - }); + url: "/admin/dict/sync", + method: "put", + }) } export function validateDictType(rule: any, value: any, callback: any, isEdit: boolean) { if (isEdit) { - return callback(); + return callback() } getObjDetails({ dictType: value }).then((response) => { - const result = response.data; + const result = response.data if (result !== null) { - callback(new Error('字典已经存在')); + callback(new Error("字典已经存在")) } else { - callback(); + callback() } - }); + }) } export function validateDictItemLabel(rule: any, value: any, callback: any, type: string, isEdit: boolean) { if (isEdit) { - return callback(); + return callback() } getItemDetails({ dictType: type, label: value }).then((response) => { - const result = response.data; + const result = response.data if (result !== null) { - callback(new Error('标签已经存在')); + callback(new Error("标签已经存在")) } else { - callback(); + callback() } - }); + }) } diff --git a/src/api/admin/log.ts b/src/api/admin/log.ts index 5b3b7c0..089c271 100644 --- a/src/api/admin/log.ts +++ b/src/api/admin/log.ts @@ -1,4 +1,7 @@ import request from '/@/utils/request'; +import { submitExportTask } from '/@/api/asyncTask'; + +export const submitLogExport = (query: Record) => submitExportTask('/admin/log/export-async', query); export const pageList = (params?: Object) => { return request({ diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue index 5ab7b8a..891ed5a 100644 --- a/src/components/Editor/index.vue +++ b/src/components/Editor/index.vue @@ -1,5 +1,5 @@