From c32e59cf64f318f0f92ed5d3cd892be3e022d43e Mon Sep 17 00:00:00 2001
From: JEECG <445654970@qq.com>
Date: Tue, 28 Apr 2026 15:28:00 +0800
Subject: [PATCH] =?UTF-8?q?v3.9.2=20=E7=8E=8B=E7=82=B8=EF=BC=81=E5=A4=A7?=
=?UTF-8?q?=E7=89=88=E6=9C=AC=E5=89=8D=E7=AB=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
jeecgboot-vue3/.claudeignore | 57 ++
jeecgboot-vue3/.env.development | 3 +
jeecgboot-vue3/.env.production | 3 +
jeecgboot-vue3/build/vite/plugin/pwa.ts | 23 +-
jeecgboot-vue3/index.html | 14 +-
.../src/assets/icons/js/iconfont2.js | 1 +
.../src/components/Application/index.ts | 17 +-
.../Form/src/components/ApiSelect.vue | 4 +-
.../src/jeecg/components/JAreaLinkage.vue | 96 ++-
.../Form/src/jeecg/components/JCascader.vue | 368 +++++++++
.../components/LinkTableListModal.vue | 4 +-
.../JLinkTableCard/hooks/useTableColumns.ts | 119 ++-
.../src/jeecg/components/JSelectMultiple.vue | 72 +-
.../src/jeecg/components/JSelectSingle.vue | 323 ++++++++
.../components/modal/DeptSelectModal.vue | 2 +-
.../modal/JSelectUserByDepartmentModal.vue | 93 ++-
.../hooks/useSelectMultipleScrollLoad.ts | 182 +++++
.../src/components/Form/src/types/index.ts | 2 +
.../src/components/Form/src/utils/Area.ts | 54 +-
.../src/components/JVxeCustom/index.ts | 4 +
.../src/components/JVxeLinkTableCell.vue | 105 +++
.../src/components/JVxePopupCell.vue | 4 +-
.../components/JVxeSelectDictSearchCell.ts | 8 +-
.../src/components/Menu/src/BasicMenu.vue | 6 +
.../src/components/Tinymce/src/Editor.vue | 36 +-
.../jeecg/JTabsSelectUser/SelectUserModal.vue | 722 ++++++++++++++++++
.../component/PostRankRelation.vue | 79 ++
.../jeecg/JTabsSelectUser/index.vue | 174 +++++
.../jeecg/JTabsSelectUser/useSelectUser.ts | 101 +++
.../jeecg/JVxeTable/src/JVxeTable.ts | 27 +-
.../jeecg/JVxeTable/src/componentMap.ts | 23 +-
.../jeecg/JVxeTable/src/componentMapStore.ts | 20 +
.../src/components/JVxeReloadEffect.ts | 2 +-
.../cells/JVxeCategorySelectCell.vue | 190 +++++
.../components/cells/JVxeTreeSelectCell.vue | 244 ++++++
.../jeecg/JVxeTable/src/hooks/useColumns.ts | 5 +
.../jeecg/JVxeTable/src/hooks/useData.ts | 7 +-
.../JVxeTable/src/hooks/useDataSource.ts | 5 +-
.../jeecg/JVxeTable/src/hooks/useDragSort.ts | 161 ++--
.../JVxeTable/src/hooks/useFinallyProps.ts | 3 -
.../JVxeTable/src/hooks/useJVxeComponent.ts | 6 +-
.../jeecg/JVxeTable/src/hooks/useMethods.ts | 9 +-
.../components/jeecg/JVxeTable/src/install.ts | 9 +-
.../jeecg/JVxeTable/src/style/index.less | 15 +-
.../jeecg/JVxeTable/src/types/JVxeTypes.ts | 8 +
.../JVxeTable/src/utils/registerUtils.ts | 7 +
.../jeecg/OnLine/types/onlineConfig.ts | 1 +
jeecgboot-vue3/src/design/index.less | 3 +
.../src/hooks/system/useListPage.ts | 4 +-
jeecgboot-vue3/src/hooks/web/usePrintJS.ts | 8 +-
.../src/layouts/default/content/index.vue | 26 +-
.../layouts/default/header/MultipleHeader.vue | 4 +
.../components/user-dropdown/DepartSelect.vue | 8 +-
.../src/layouts/default/header/index.less | 5 +
.../src/layouts/default/header/index.vue | 4 +-
jeecgboot-vue3/src/layouts/default/index.vue | 64 +-
.../src/layouts/default/tabs/index.vue | 8 +-
.../default/tabs/tabs.theme.simple.less | 237 ++++++
.../src/layouts/page/components/EmptyPage.vue | 174 +++++
jeecgboot-vue3/src/layouts/page/index.vue | 150 +---
jeecgboot-vue3/src/qiankun/apps.ts | 6 +-
jeecgboot-vue3/src/qiankun/index.ts | 49 +-
.../src/qiankun/micro/qiankunMicro.ts | 2 +-
jeecgboot-vue3/src/qiankun/route.ts | 45 ++
.../src/settings/registerThirdComp.ts | 32 +-
.../utils/factory/createAsyncComponent.tsx | 3 +-
jeecgboot-vue3/src/utils/iconfont2.ts | 4 +
.../src/views/demo/editor/tinymce/index.vue | 20 +-
.../src/views/demo/feat/icon/index.vue | 34 +-
.../demo/jeecg/JVxeTableDemo/JVxeDemo1.vue | 40 +
.../demo/jeecg/JVxeTableDemo/JVxeDemo3.vue | 1 -
.../src/views/demo/jeecg/JeecgComponents.vue | 6 +-
.../views/demo/jeecg/jeecgComponents.data.ts | 19 +-
.../src/views/demo/vextable/index3.vue | 46 ++
.../vextable/jvxetable/JVxeTableModal.vue | 3 +-
.../monitor/datalog/DataLogCompareModal.vue | 441 +++++++----
.../src/views/monitor/datalog/datalog.data.ts | 76 +-
.../src/views/monitor/datalog/index.vue | 52 +-
.../src/views/monitor/log/index.vue | 37 +-
.../src/views/monitor/log/log.data.ts | 38 +-
.../src/views/monitor/mynews/DetailModal.vue | 21 +-
.../src/views/monitor/mynews/XssWhiteList.ts | 8 +-
.../src/views/monitor/quartz/quartz.data.ts | 2 +-
.../src/views/monitor/redis/index.vue | 371 +++++----
.../src/views/monitor/redis/redis.data.ts | 17 +-
.../src/views/openapi/OpenApi.data.ts | 189 ++++-
.../src/views/openapi/OpenApiAuth.data.ts | 98 ++-
.../src/views/openapi/OpenApiAuthList.vue | 267 +++----
.../src/views/openapi/OpenApiList.vue | 54 +-
.../views/openapi/components/AuthDrawer.vue | 185 +++++
.../openapi/components/OpenApiAuthDrawer.vue | 75 ++
.../openapi/components/OpenApiAuthForm.vue | 14 +-
.../openapi/components/OpenApiDrawer.vue | 269 +++++++
.../views/openapi/components/OpenApiModal.vue | 1 -
.../src/views/super/airag/aiapp/AiApp.api.ts | 2 +-
.../views/super/airag/aiapp/chat/AiChat.vue | 1 +
.../src/views/super/airag/aiapp/chat/chat.vue | 100 +--
.../super/airag/aiapp/chat/chatMessage.vue | 2 +-
.../views/super/airag/aiapp/chat/chatText.vue | 2 +-
.../jeecg-tags/jeecg-chart/ChartRender.api.ts | 43 ++
.../jeecg-tags/jeecg-chart/ChartRender.vue | 461 ++++++++---
.../jeecg-tags/tool-exec/JeecgToolExec.vue | 2 +
.../aiapp/chat/portal/LeftPortalSession.vue | 7 +
.../components/AiAppPromptMarketModal.vue | 3 +
.../aiapp/components/AiAppSettingModal.vue | 37 +
.../aiapp/components/AiUserVariablesModal.vue | 2 -
.../super/airag/aicloth/AiClothChange.data.ts | 91 +++
.../super/airag/aicloth/AiClothChange.less | 372 +++++++++
.../super/airag/aicloth/AiClothChange.vue | 284 +++++++
.../airag/aiknowledge/AiKnowledgeBase.data.ts | 193 ++++-
.../airag/aiknowledge/AiKnowledgeBaseList.vue | 8 +-
.../components/AiKnowledgeBaseModal.vue | 52 +-
.../components/AiragKnowledgeDocListModal.vue | 29 +-
.../components/AiragKnowledgeDocTextModal.vue | 211 ++++-
.../views/super/airag/aimodel/AiModelList.vue | 22 +-
.../airag/aimodel/components/AiModelModal.vue | 116 ++-
.../super/airag/aimodel/components/model.json | 43 ++
.../views/super/airag/aimodel/icon/gemini.png | Bin 0 -> 9537 bytes
.../super/airag/aimodel/icon/imstdio.png | Bin 0 -> 43709 bytes
.../views/super/airag/aimodel/icon/vllm.png | Bin 0 -> 89976 bytes
.../super/airag/aimodel/icon/xinference.svg | 25 +
.../views/super/airag/aimodel/model.data.ts | 35 +-
.../views/super/airag/aiposter/AiPainting.vue | 414 ++++++++++
.../super/airag/aiposter/AiPoster.data.ts | 259 ++++++-
.../views/super/airag/aiposter/AiPoster.vue | 121 ++-
.../super/airag/aiprompts/AiragPrompts.api.ts | 8 +
.../airag/aiprompts/AiragPrompts.data.ts | 3 +-
.../views/super/airag/aivideo/AiVideo.api.ts | 37 +
.../views/super/airag/aivideo/AiVideo.data.ts | 76 ++
.../views/super/airag/aivideo/AiVideo.less | 375 +++++++++
.../src/views/super/airag/aivideo/AiVideo.vue | 415 ++++++++++
.../views/super/airag/aivideo2/AiVideo.api.ts | 22 +
.../super/airag/aivideo2/AiVideo.data.ts | 50 ++
.../views/super/airag/aivideo2/AiVideo.vue | 418 ++++++++++
.../views/super/airag/aivoice/AiVoice.api.ts | 34 +
.../views/super/airag/aivoice/AiVoice.data.ts | 117 +++
.../views/super/airag/aivoice/AiVoice.less | 382 +++++++++
.../src/views/super/airag/aivoice/AiVoice.vue | 332 ++++++++
.../src/views/sys/login/LoginForm.vue | 6 +-
.../src/views/system/depart/depart.api.ts | 4 +-
.../src/views/system/examples/demo/index.vue | 1 +
.../views/system/loginmini/MiniCodelogin.vue | 6 +-
.../src/views/system/loginmini/MiniLogin.vue | 35 +-
.../message/components/SysMessageList.vue | 9 +
.../message/components/SysMessageModal.vue | 9 +
.../src/views/system/notice/DetailModal.vue | 4 +-
.../src/views/system/ossfile/index.vue | 5 +-
.../src/views/system/role/role.data.ts | 4 +-
.../src/views/system/ugroup/SysUgroupList.vue | 176 +++++
.../ugroup/components/GroupUserTable.vue | 176 +++++
.../ugroup/components/SysUgroupModal.vue | 77 ++
.../src/views/system/ugroup/ugroup.api.ts | 107 +++
.../src/views/system/ugroup/ugroup.data.ts | 93 +++
.../system/usersetting/WeChatDingSetting.vue | 6 +-
jeecgboot-vue3/tsconfig.json | 3 +-
jeecgboot-vue3/types/global.d.ts | 2 +
jeecgboot-vue3/types/unplugin-icons.d.ts | 10 +
157 files changed, 11253 insertions(+), 1324 deletions(-)
create mode 100644 jeecgboot-vue3/.claudeignore
create mode 100644 jeecgboot-vue3/src/assets/icons/js/iconfont2.js
create mode 100644 jeecgboot-vue3/src/components/Form/src/jeecg/components/JCascader.vue
create mode 100644 jeecgboot-vue3/src/components/Form/src/jeecg/components/JSelectSingle.vue
create mode 100644 jeecgboot-vue3/src/components/Form/src/jeecg/hooks/useSelectMultipleScrollLoad.ts
create mode 100644 jeecgboot-vue3/src/components/JVxeCustom/src/components/JVxeLinkTableCell.vue
create mode 100644 jeecgboot-vue3/src/components/jeecg/JTabsSelectUser/SelectUserModal.vue
create mode 100644 jeecgboot-vue3/src/components/jeecg/JTabsSelectUser/component/PostRankRelation.vue
create mode 100644 jeecgboot-vue3/src/components/jeecg/JTabsSelectUser/index.vue
create mode 100644 jeecgboot-vue3/src/components/jeecg/JTabsSelectUser/useSelectUser.ts
create mode 100644 jeecgboot-vue3/src/components/jeecg/JVxeTable/src/componentMapStore.ts
create mode 100644 jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeCategorySelectCell.vue
create mode 100644 jeecgboot-vue3/src/components/jeecg/JVxeTable/src/components/cells/JVxeTreeSelectCell.vue
create mode 100644 jeecgboot-vue3/src/layouts/default/tabs/tabs.theme.simple.less
create mode 100644 jeecgboot-vue3/src/layouts/page/components/EmptyPage.vue
create mode 100644 jeecgboot-vue3/src/qiankun/route.ts
create mode 100644 jeecgboot-vue3/src/utils/iconfont2.ts
create mode 100644 jeecgboot-vue3/src/views/demo/vextable/index3.vue
create mode 100644 jeecgboot-vue3/src/views/openapi/components/AuthDrawer.vue
create mode 100644 jeecgboot-vue3/src/views/openapi/components/OpenApiAuthDrawer.vue
create mode 100644 jeecgboot-vue3/src/views/openapi/components/OpenApiDrawer.vue
create mode 100644 jeecgboot-vue3/src/views/super/airag/aiapp/chat/jeecg-tags/jeecg-chart/ChartRender.api.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aicloth/AiClothChange.data.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aicloth/AiClothChange.less
create mode 100644 jeecgboot-vue3/src/views/super/airag/aicloth/AiClothChange.vue
create mode 100644 jeecgboot-vue3/src/views/super/airag/aimodel/icon/gemini.png
create mode 100644 jeecgboot-vue3/src/views/super/airag/aimodel/icon/imstdio.png
create mode 100644 jeecgboot-vue3/src/views/super/airag/aimodel/icon/vllm.png
create mode 100644 jeecgboot-vue3/src/views/super/airag/aimodel/icon/xinference.svg
create mode 100644 jeecgboot-vue3/src/views/super/airag/aiposter/AiPainting.vue
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo/AiVideo.api.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo/AiVideo.data.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo/AiVideo.less
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo/AiVideo.vue
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo2/AiVideo.api.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo2/AiVideo.data.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivideo2/AiVideo.vue
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivoice/AiVoice.api.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivoice/AiVoice.data.ts
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivoice/AiVoice.less
create mode 100644 jeecgboot-vue3/src/views/super/airag/aivoice/AiVoice.vue
create mode 100644 jeecgboot-vue3/src/views/system/ugroup/SysUgroupList.vue
create mode 100644 jeecgboot-vue3/src/views/system/ugroup/components/GroupUserTable.vue
create mode 100644 jeecgboot-vue3/src/views/system/ugroup/components/SysUgroupModal.vue
create mode 100644 jeecgboot-vue3/src/views/system/ugroup/ugroup.api.ts
create mode 100644 jeecgboot-vue3/src/views/system/ugroup/ugroup.data.ts
create mode 100644 jeecgboot-vue3/types/unplugin-icons.d.ts
diff --git a/jeecgboot-vue3/.claudeignore b/jeecgboot-vue3/.claudeignore
new file mode 100644
index 000000000..dd1e0e9f0
--- /dev/null
+++ b/jeecgboot-vue3/.claudeignore
@@ -0,0 +1,57 @@
+# Git
+.git/
+.gitignore
+.gitmodules
+
+# SVN
+.svn/
+
+# IntelliJ IDEA
+.idea/
+*.iml
+*.iws
+*.ipr
+out/
+
+# Eclipse
+.classpath
+.project
+.settings/
+
+# VS Code
+.vscode/
+
+# Maven / Gradle build output
+target/
+build/
+!.mvn/wrapper/maven-wrapper.jar
+
+# OS files
+.DS_Store
+Thumbs.db
+desktop.ini
+
+# Logs
+*.log
+logs/
+
+# Node (frontend artifacts if any)
+node_modules/
+dist/
+
+# Docker volumes / data
+docker/data/
+
+# Compiled classes
+*.class
+
+# Custom
+*.qqy
+代码修改.log
+代码修改日志
+*.zip
+backup/
+.history/
+.cursor/
+doc/
+docs/
diff --git a/jeecgboot-vue3/.env.development b/jeecgboot-vue3/.env.development
index fb3498c90..97118e296 100644
--- a/jeecgboot-vue3/.env.development
+++ b/jeecgboot-vue3/.env.development
@@ -31,3 +31,6 @@ VITE_APP_SUB_jeecg-app-1 = '//localhost:8092'
# 在线文档编辑版本。可选属性:wps, offlineWps(离线版) ,onlyoffice
VITE_GLOB_ONLINE_DOCUMENT_VERSION=wps
+
+# icon组件的iconify图标库使用在线还是本地。可选属性:online, local
+VITE_GLOB_ICONIFY_USE_TYPE=online
diff --git a/jeecgboot-vue3/.env.production b/jeecgboot-vue3/.env.production
index f3553726f..ddb4d4bb5 100644
--- a/jeecgboot-vue3/.env.production
+++ b/jeecgboot-vue3/.env.production
@@ -32,3 +32,6 @@ VITE_GLOB_API_URL_PREFIX=
# 在线文档编辑版本。可选属性:wps, offlineWps(离线版), onlyoffice
VITE_GLOB_ONLINE_DOCUMENT_VERSION=wps
+
+# icon组件的iconify图标库使用在线还是本地。可选属性:online, local
+VITE_GLOB_ICONIFY_USE_TYPE=local
diff --git a/jeecgboot-vue3/build/vite/plugin/pwa.ts b/jeecgboot-vue3/build/vite/plugin/pwa.ts
index 2251b3e98..41d69ddd1 100644
--- a/jeecgboot-vue3/build/vite/plugin/pwa.ts
+++ b/jeecgboot-vue3/build/vite/plugin/pwa.ts
@@ -96,9 +96,10 @@ export function configPwaPlugin(isBuild: boolean): PluginOption | PluginOption[]
},
},
},
- // 图片资源
+ //update-begin---author:scott ---date:20260417 for:[issues/9564]PWA图片规则过宽导致/filereview/等业务接口走缓存-----------
+ // 图片资源(仅缓存构建产物,避免命中 /filereview/、/jeecgboot/ 等业务接口返回的图片)
{
- urlPattern: /\.(?:png|jpg|jpeg|svg|gif|webp)$/,
+ urlPattern: /\/(?:assets|img|static|resource)\/.*\.(?:png|jpg|jpeg|svg|gif|webp)$/i,
handler: 'CacheFirst',
options: {
cacheName: 'image-cache',
@@ -108,22 +109,12 @@ export function configPwaPlugin(isBuild: boolean): PluginOption | PluginOption[]
},
},
},
- // API 请求
+ // API 请求(JeecgBoot 实际前缀是 /jeecgboot/,原 /api/ 规则未生效)
{
- urlPattern: /\/api\/.*/i,
- handler: 'NetworkFirst',
- options: {
- cacheName: 'api-cache',
- networkTimeoutSeconds: 10,
- expiration: {
- maxEntries: 50,
- maxAgeSeconds: 60 * 5,
- },
- cacheableResponse: {
- statuses: [0, 200],
- },
- },
+ urlPattern: /\/jeecgboot\/.*/i,
+ handler: 'NetworkOnly',
},
+ //update-end---author:scott ---date:20260417 for:[issues/9564]PWA图片规则过宽导致/filereview/等业务接口走缓存-----------
],
// 启用立即更新:新 SW 立即激活并接管页面
skipWaiting: true,
diff --git a/jeecgboot-vue3/index.html b/jeecgboot-vue3/index.html
index 245a4a9d2..29726acd7 100644
--- a/jeecgboot-vue3/index.html
+++ b/jeecgboot-vue3/index.html
@@ -168,13 +168,15 @@