Compare commits

...

5 Commits

Author SHA1 Message Date
5cec5879af Bump org.apache.tika:tika-core
Bumps [org.apache.tika:tika-core](https://github.com/apache/tika) from 2.9.1 to 3.2.2.
- [Changelog](https://github.com/apache/tika/blob/main/CHANGES.txt)
- [Commits](https://github.com/apache/tika/compare/2.9.1...3.2.2)

---
updated-dependencies:
- dependency-name: org.apache.tika:tika-core
  dependency-version: 3.2.2
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-05 02:27:36 +00:00
26087172df 更新文档说明 2025-12-04 14:57:41 +08:00
281c3ff3c8 措辞优化 2025-12-04 13:55:53 +08:00
38d44c2487 修改一个参数,就实现默认的四个系统主题快速切换 2025-12-03 19:55:13 +08:00
8c88f8adf5 【issues/9098】tabs标签页关闭异常 2025-12-03 19:06:21 +08:00
10 changed files with 81 additions and 194 deletions

View File

@ -3,9 +3,6 @@ AIGC应用平台介绍
一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。
> JDK说明AI流程编排引擎暂时不支持jdk21所以目前只能使用jdk8或者jdk17启动项目。
JeecgBoot平台的AIGC功能模块是一套类似`Dify``AIGC应用开发平台`+`知识库问答`是一款基于LLM大语言模型AI应用平台和 RAG 的知识库问答系统。
其直观的界面结合了 AI 流程编排、RAG 管道、知识库管理、模型管理、对接向量库、实时运行可观察等让您可以快速从原型到生产拥有AI服务能力。

View File

@ -1,126 +0,0 @@
JeecgBoot低代码平台(商业版介绍)
===============
项目介绍
-----------------------------------
<h3 align="center">企业级AI低代码平台</h3>
JeecgBoot是一款集成AI应用的基于BPM流程的低代码平台旨在帮助企业快速实现低代码开发和构建个性化AI应用支持MCP和插件实现聊天式业务操作如 “一句话创建用户”)!
前后端分离架构Ant Design&Vue3SpringBootSpringCloud AlibabaMybatis-plusShiro。强大的代码生成器让前后端代码一键生成无需写任何代码 引领AI低代码开发模式: AI生成->OnlineCoding-> 代码生成-> 手工MERGE 帮助Java项目解决80%的重复工作让开发更多关注业务提高效率、节省成本同时又不失灵活性低代码能力Online表单、表单设计、流程设计、Online报表、大屏/仪表盘设计、报表设计; AI应用平台功能AI知识库问答、AI模型管理、AI流程编排、AI聊天等支持含ChatGPT、DeepSeek、Ollama等多种AI大模型
JeecgBoot 提供了一系列 `低代码能力`,实现`真正的零代码`在线开发Online表单开发、Online报表、复杂报表设计、打印设计、在线图表设计、仪表盘设计、大屏设计、移动图表能力、表单设计器、在线设计流程、流程自动化配置、插件能力可插拔
`AI赋能低代码:` 目前提供了AI应用、AI模型管理、AI流程编排、AI对话助手AI建表、AI写文章、AI知识库问答、AI字段建议等功能;支持各种AI大模型ChatGPT、DeepSeek、Ollama、智普、千问等.
`JEECG宗旨是:` 简单功能由OnlineCoding配置实现做到`零代码开发`复杂功能由代码生成器生成进行手工Merge 实现`低代码开发`,既保证了`智能`又兼顾`灵活`;实现了低代码开发的同时又支持灵活编码,解决了当前低代码产品普遍不灵活的弊端!
`JEECG业务流程:` 采用工作流来实现、扩展出任务接口,供开发编写业务逻辑,表单提供多种解决方案: 表单设计器、online配置表单、编码表单。同时实现了流程与表单的分离设计松耦合、并支持任务节点灵活配置既保证了公司流程的保密性又减少了开发人员的工作量。
#### JeecgBoot商业版与同类产品区别
-----------------------------------
- 灵活性jeecgboot基于开源技术栈设计初考虑到可插拔性和集成灵活性确保平台的智能性与灵活性避免因平台过于庞大而导致的扩展困难。
- 流程管理:支持一个表单挂接多个流程,同时一个流程可以连接多个表单,增强了流程的灵活性和复杂性管理。
- 符合中国国情的流程针对中国市场的特定需求jeecgboot能够实现各种符合中国国情的业务流程。
- 强大的表单设计器jeecgboot的表单设计器与敲敲云共享具备高质量和智能化的特点能够满足零代码应用的需求业内同类产品中不多见。
- 报表功能:自主研发的报表工具,拥有独立知识产权,功能上比业内老牌产品如帆软更智能,操作简便。
- BI产品整合提供大屏、仪表盘、门户等功能完美解决这些需求并支持移动面板的设计与渲染。
- 自主研发的模块jeecgboot的所有模块均为自主研发具有独立的知识产权。
- 颗粒度和功能细致在功能细致度和颗粒度上jeecgboot远超同类产品尤其在零代码能力方面表现突出。
- 零代码应用管理最新版支持与敲敲云的零代码应用管理能力的集成使得jeecgboot既具备低代码又具备零代码的应用能力业内独一无二。
- 强大的代码生成器作为开源代码生成器的先锋jeecgboot在代码生成的智能化和在线低代码与代码生成的结合方面优势明显。
- 精细化权限管理提供行级和列级的数据权限控制满足企业在ERP和OA领域对权限管理的严格需求。
- 多平台支持的APP目前采用uniapp3实现支持小程序、H5、App及鸿蒙、鸿蒙Next、Electron桌面应用等多种终端。
> 综上所述jeecgboot不仅在功能上具备丰富性和灵活性还在技术架构、权限管理和用户体验等方面展现出明显的优势是一个综合性能强大的低代码平台。
商业版演示
-----------------------------------
JeecgBoot vs 敲敲云
> - JeecgBoot是低代码产品拥有系列低代码能力比如流程设计、表单设计、大屏设计代码生成器适合半开发模式开发+低代码结合),也可以集成零代码应用管理模块.
> - 敲敲云是零代码产品完全不写代码通过配置搭建业务系统其在jeecgboot基础上研发而成删除了online、代码生成、OA等需要编码功能只保留应用管理功能和聊天、日程、文件三个OA组件.
- JeecgBoot低代码 https://boot3.jeecg.com
- 敲敲云零代码https://app.qiaoqiaoyun.com
- APP演示(多端): http://jeecg.com/appIndex
### 流程视频介绍
[![](https://jeecgos.oss-cn-beijing.aliyuncs.com/files/flow_video.png)](https://www.bilibili.com/video/BV1Nk4y1o7Qc)
### 商业版功能简述
> 详细的功能介绍,[请联系官方](https://jeecg.com/vip)
```
│─更多商业功能
│ ├─流程设计器
│ ├─简流设计器(类钉钉版)
│ ├─门户设计NEW
│ ├─表单设计器
│ ├─大屏设计器
│ └─我的任务
│ └─历史流程
│ └─历史流程
│ └─流程实例管理
│ └─流程监听管理
│ └─流程表达式
│ └─我发起的流程
│ └─我的抄送
│ └─流程委派、抄送、跳转
│ └─OA办公组件
│ └─零代码应用管理(无需编码,在线搭建应用系统)
│ ├─积木报表企业版含jimureport、jimubi
│ ├─AI流程设计器源码
│ ├─Online全模块功能和源码
│ ├─AI写文章CMS
│ ├─AI表单字段建议表单设计器
│ ├─OA办公协同组件
│ ├─在线聊天功能
│ ├─设计表单移动适配
│ ├─设计表单支持外部填报
│ ├─设计表单AI字段建议
│ ├─设计表单视图功能(支持多种类型含日历、表格、看板、甘特图)
│ └─。。。
```
##### 流程设计
![](https://oscimg.oschina.net/oscnet/up-981ce174e4fbb48c8a2ce4ccfd7372e2994.png)
![](https://oscimg.oschina.net/oscnet/up-1dc0d052149ec675f3e4fad632b82b48add.png)
![](https://oscimg.oschina.net/oscnet/up-de31bc2f9d9b8332c554b0954cc73d79593.png)
![输入图片说明](https://static.oschina.net/uploads/img/201907/05165142_yyQ7.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160917_9Ftz.png "在这里输入图片标题")
![输入图片说明](https://static.oschina.net/uploads/img/201904/14160633_u59G.png "在这里输入图片标题")
##### 表单设计器
![](https://oscimg.oschina.net/oscnet/up-5f8cb657615714b02190b355e59f60c5937.png)
![](https://oscimg.oschina.net/oscnet/up-d9659b2f324e33218476ec98c9b400e6508.png)
![](https://oscimg.oschina.net/oscnet/up-4868615395272d3206dbb960ade02dbc291.png)

View File

@ -232,20 +232,6 @@ JeecgBoot平台提供了一套完善的AI应用管理系统模块是一套类
开源版与企业版区别?
-----------------------------------
- JeecgBoot开源版采用 [Apache-2.0 license](LICENSE) 协议附加补充条款:允许商用使用,不会造成侵权行为,允许基于本平台软件开展业务系统开发(但在任何情况下,您不得使用本软件开发可能被认为与本软件竞争的软件).
- 商业版与开源版主要区别在于商业版提供了技术支持 和 更多的企业级功能(例如Online图表、流程监控、流程设计、流程审批、表单设计器、表单视图、积木报表企业版、OA办公、商业APP、零代码应用、Online模块源码等功能). [更多商业功能介绍,点击查看](README-Enterprise.md)
- JeecgBoot未来发展方向是零代码平台的建设也就是团队的另外一款产品 [敲敲云零代码](https://www.qiaoqiaoyun.com) 无需编码即可通过拖拽快速搭建企业级应用与JeecgBoot低代码平台形成互补满足从简单业务到复杂系统的全场景开发需求目前已经开源[欢迎下载](https://qiaoqiaoyun.com/downloadCode)
### Jeecg Boot 产品功能蓝图
![功能蓝图](https://jeecgos.oss-cn-beijing.aliyuncs.com/upload/test/Jeecg-Boot-lantu202005_1590912449914.jpg "在这里输入图片标题")

View File

@ -33,7 +33,7 @@
<properties>
<kotlin.version>2.2.0</kotlin.version>
<liteflow.version>2.15.0</liteflow.version>
<apache-tika.version>2.9.1</apache-tika.version>
<apache-tika.version>3.2.2</apache-tika.version>
</properties>
<dependencyManagement>

View File

@ -1,14 +1,14 @@
/**
* @description: menu type
* @description: 默认四种菜单主题
*/
export enum MenuTypeEnum {
// left menu
// 左侧边菜单导航风格
SIDEBAR = 'sidebar',
MIX_SIDEBAR = 'mix-sidebar',
// mixin menu
// 顶部栏导航风格
MIX = 'mix',
// top menu
// 侧边折叠导航风格
MIX_SIDEBAR = 'mix-sidebar',
//顶部混合导航风格
TOP_MENU = 'top-menu',
}

View File

@ -9,8 +9,7 @@ import { changeTheme } from '/@/logics/theme';
import { updateDarkTheme } from '/@/logics/theme/dark';
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
import { MenuModeEnum, MenuTypeEnum } from '/@/enums/menuEnum';
import { HEADER_PRESET_BG_COLOR_LIST, SIDE_BAR_BG_COLOR_LIST } from '/@/settings/designSetting';
import { getThemeColorByMenuType } from '/@/utils/getThemeColorByMenuType';
import { getConfigByMenuType } from '../../../utils/getConfigByMenuType';
import { isObject } from '/@/utils/is';
import { ThemeEnum } from '/@/enums/appEnum';
import { APP__THEME__COLOR } from '/@/enums/cacheEnum';
@ -27,10 +26,10 @@ export function layoutHandler(event: HandlerEnum, value: any) {
const appStore = useAppStore();
const darkMode = appStore.getDarkMode === ThemeEnum.DARK;
// 根据菜单类型动态获取主题色
const dynamicThemeColor = getThemeColorByMenuType(value.type);
const {themeColor: dynamicThemeColor, headerBgColor, sideBgColor } = getConfigByMenuType(value.type);
if (isHTopMenu) {
baseHandler(event, value);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[4]);
baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.CHANGE_THEME_COLOR, dynamicThemeColor);
if (darkMode) {
updateHeaderBgColor();
@ -39,8 +38,8 @@ export function layoutHandler(event: HandlerEnum, value: any) {
baseHandler(HandlerEnum.TABS_THEME, tabsThemeOptions[1].value);
} else if (isMixMenu) {
baseHandler(event, value);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[2]);
baseHandler(HandlerEnum.MENU_THEME, SIDE_BAR_BG_COLOR_LIST[3]);
baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.MENU_THEME, sideBgColor);
if (darkMode) {
updateHeaderBgColor();
updateSidebarBgColor();
@ -51,8 +50,8 @@ export function layoutHandler(event: HandlerEnum, value: any) {
} else if (isMixSidebarMenu) {
baseHandler(event, value);
baseHandler(HandlerEnum.CHANGE_THEME_COLOR, dynamicThemeColor);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[0]);
baseHandler(HandlerEnum.MENU_THEME, SIDE_BAR_BG_COLOR_LIST[0]);
baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.MENU_THEME, sideBgColor);
if (darkMode) {
updateHeaderBgColor();
updateSidebarBgColor();
@ -60,8 +59,8 @@ export function layoutHandler(event: HandlerEnum, value: any) {
baseHandler(HandlerEnum.TABS_THEME, tabsThemeOptions[1].value);
} else {
baseHandler(event, value);
baseHandler(HandlerEnum.HEADER_THEME, HEADER_PRESET_BG_COLOR_LIST[4]);
baseHandler(HandlerEnum.MENU_THEME, SIDE_BAR_BG_COLOR_LIST[7]);
baseHandler(HandlerEnum.HEADER_THEME, headerBgColor);
baseHandler(HandlerEnum.MENU_THEME, sideBgColor);
if (darkMode) {
updateHeaderBgColor();
updateSidebarBgColor();

View File

@ -50,7 +50,9 @@ export function useTabDropdown(tabContentProps: TabContentProps, getIsTabs: Comp
} else {
// 【TV360X-1039】当只有首页和另一个tab页时关闭左侧禁用
const validTabList = tabStore.getTabList.filter((item) => !item?.meta?.affix);
return validTabList[0].path === state.current?.path;
// update-begin--author:liaozhiyang---date:20251128---for【issues/9098】tabs标签页关闭异常
return validTabList[0]?.path === state.current?.path;
// update-end--author:liaozhiyang---date:20251128---for【issues/9098】tabs标签页关闭异常
}
};
// Close other

View File

@ -10,11 +10,14 @@ import {
SessionTimeoutProcessingEnum,
TabsThemeEnum,
} from '/@/enums/appEnum';
import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting';
import { darkMode } from '/@/settings/designSetting';
import { getThemeColorByMenuType } from '/@/utils/getThemeColorByMenuType';
import { getConfigByMenuType } from '../utils/getConfigByMenuType';
// 修改此属性,实现默认的四个系统主题快速切换
const menuType = MenuTypeEnum.SIDEBAR;
// update-begin--author:liaozhiyang---date:20251201---for【QQYUN-14176】修改一个配置就能切换默认四个主题不需要额外修改颜色等
const { themeColor, headerBgColor, sideBgColor, split, mode } = getConfigByMenuType(menuType);
// update-end--author:liaozhiyang---date:20251201---for【QQYUN-14176】修改一个配置就能切换默认四个主题不需要额外修改颜色等
// ! 改动后需要清空浏览器缓存
const setting: ProjectConfig = {
// 是否显示SettingButton
@ -43,7 +46,7 @@ const setting: ProjectConfig = {
// SessionTimeoutProcessingEnum.PAGE_COVERAGE: 生成登录弹窗,覆盖当前页面
sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP,
// 项目主题色 - 根据导航栏模式确定主题色动态设置
themeColor: getThemeColorByMenuType(menuType),
themeColor: themeColor,
// 项目主题模式
themeMode: darkMode,
@ -71,7 +74,7 @@ const setting: ProjectConfig = {
// 头部配置
headerSetting: {
// 背景色
bgColor: HEADER_PRESET_BG_COLOR_LIST[4],
bgColor: headerBgColor,
// 固定头部
fixed: true,
// 是否显示顶部
@ -93,7 +96,7 @@ const setting: ProjectConfig = {
// 菜单配置
menuSetting: {
// 背景色
bgColor: SIDE_BAR_BG_COLOR_LIST[0],
bgColor: sideBgColor,
// 是否固定住左侧菜单
fixed: true,
// 菜单折叠
@ -110,15 +113,15 @@ const setting: ProjectConfig = {
// 菜单宽度
menuWidth: 210,
// 菜单模式
mode: MenuModeEnum.INLINE,
mode,
// 菜单类型
type: MenuTypeEnum.SIDEBAR,
type: menuType,
// 菜单主题
theme: ThemeEnum.DARK,
theme: ThemeEnum.LIGHT,
// 左侧导航栏文字颜色调整区分彩色和暗黑 (不对应配置)
isThemeBright: false,
// 分割菜单
split: false,
split,
// 顶部菜单布局
topMenuAlign: 'center',
// 折叠触发器的位置

View File

@ -0,0 +1,49 @@
import { MenuTypeEnum, MenuModeEnum } from '/@/enums/menuEnum';
import { APP_PRESET_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST, SIDE_BAR_BG_COLOR_LIST } from '/@/settings/designSetting';
/**
* 根据菜单类型和模式获取对应的主题色
* @param menuType 菜单类型
*/
export function getConfigByMenuType(menuType: MenuTypeEnum): {
themeColor: string;
headerBgColor: string;
sideBgColor: string;
split: boolean;
mode: MenuModeEnum;
} {
let themeColor;
let headerBgColor;
let sideBgColor;
let split = false;
let mode: MenuModeEnum = MenuModeEnum.INLINE;
if (menuType === MenuTypeEnum.TOP_MENU) {
// 顶部栏导航
themeColor = APP_PRESET_COLOR_LIST[1];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[4];
mode = MenuModeEnum.HORIZONTAL;
} else if (menuType === MenuTypeEnum.MIX) {
// 顶部混合菜单模式
themeColor = APP_PRESET_COLOR_LIST[2];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[2];
sideBgColor = SIDE_BAR_BG_COLOR_LIST[3];
split = true;
} else if (menuType === MenuTypeEnum.MIX_SIDEBAR) {
// 侧边折叠导航模式
themeColor = APP_PRESET_COLOR_LIST[1];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[0];
sideBgColor = SIDE_BAR_BG_COLOR_LIST[0];
} else if (menuType === MenuTypeEnum.SIDEBAR) {
// 侧边栏导航
themeColor = APP_PRESET_COLOR_LIST[1];
headerBgColor = HEADER_PRESET_BG_COLOR_LIST[4];
sideBgColor = SIDE_BAR_BG_COLOR_LIST[7];
}
return {
themeColor,
headerBgColor,
sideBgColor,
split,
mode,
};
}

View File

@ -1,23 +0,0 @@
import { MenuTypeEnum } from '/@/enums/menuEnum';
import { APP_PRESET_COLOR_LIST } from '/@/settings/designSetting';
/**
* 根据菜单类型和模式获取对应的主题色
* @param menuType 菜单类型
*/
export function getThemeColorByMenuType(menuType: MenuTypeEnum): string {
if (menuType === MenuTypeEnum.TOP_MENU) {
// 顶部栏导航
return APP_PRESET_COLOR_LIST[1];
} else if (menuType === MenuTypeEnum.MIX) {
// 顶部混合菜单使用青绿色主题
return APP_PRESET_COLOR_LIST[2];
} else if (menuType === MenuTypeEnum.MIX_SIDEBAR) {
// 侧边折叠导航模式
return APP_PRESET_COLOR_LIST[1];
} else if (menuType === MenuTypeEnum.SIDEBAR) {
// 侧边栏导航
return APP_PRESET_COLOR_LIST[1];
}
return APP_PRESET_COLOR_LIST[1];
}