Signed-off-by: chy <chy@163.com>

This commit is contained in:
chy
2026-02-02 23:31:39 +08:00
commit f6d2459f1f
1499 changed files with 289491 additions and 0 deletions

View File

@@ -0,0 +1,246 @@
**搭建ld-report开发环境**
**注意前端版本只适用report1.4.2及以下版本**
# 工具版本
参考
[Mysql] 5.7
[Jdk] 1.8
[Spring Boot] 2.3.5
[Mybatis-plus] 3.3.2
[flyway] 5.2.1
[Apache Maven] 3.5
[Node.js] 14.16.0
[Windows 10]
实际
Mysql 5.7.34
JDK 1.8u291
IdeaJ 2020.2.1
Spring Boot DTD
Maven 3.5.4
Windows7
Git 2.33.0 x64
Node 13.14.0-x64
Vscode 1.59.0
# 环境准备
共分前端、公共、后端。
## 后端
### Mysql
下载mysql数据库
下载地址
<https://dev.mysql.com/downloads/installer/>
步骤【选择安装类型】即Choosing a Setup Type选择【仅服务器】即Server
only
步骤【类型和网络】即Type and Networking选择【开发电脑】即Development
Computer
步骤【账户和角色】即Account and Rolesroot密码设置为root。
步骤【Windows服务】即Windows
Service勾选【配置MySQL服务作为一个Windows服务】即Configure MySQL Server as
a Windows Service
除以上外,都采用默认,一直下一步,直至安装完成。
### JDK
采用默认安装,一直下一步,直至完成。
配置环境变量
JAVA_HOME C:\\Program Files\\Java\\jdk1.8.0_291
### IdeaJ
采用默认安装,一直下一步,直至完成。
### Maven
下载地址
https://dlcdn.apache.org/maven/maven-3/3.5.4/binaries/
将压缩包解压到路径C:\\Program Files\\
添加环境变量M2_HOME C:\\Program Files\\apache-maven-3.5.4
旧版变量写法MAVEN_HOME
调整Path环境变量增加 ;%M2_HOME%C:\\bin
### 插件
IdeaJ安装spring boot开发插件
已自带,不用再安装。
安装lombok
## 公共
### Git
#### 安装
采用默认安装,一直下一步,直至完成。
#### 拉代码
为idea指定git路径
默认情况下IDEA是不自带git运行程序的所以需要通过
菜单-\>settings-\>Version Control-\>Git-\>Path to Git executable:
设置为安装git中所安装的git.exe
获取gitee上面的要拉取项目的url即页面左上方【可隆/下载】单击选择【复制】即可获得url。
在ideaj中选择路径file -\> new -\> Project from Version Control -\> Git
将url复制到URL后的方框
选择本地目录即Directory
点击【Clone】开始拉代码。
## 前端
### Node
采用默认安装,一直下一步,直至完成。
### Vscode
步骤【选择附件任务】勾选【添加到PATH重启后生效
其余采用默认安装,一直下一步,直至完成。
# 开发环境
## 后端
新建文件夹用于存放后端代码C:\\ijproj将git下载的代码解压至该目录。
### 下载源码
具体步骤见Git2.2.1.2拉代码
### 依赖插件
下载依赖和插件。Git完代码后会自动下载依赖和插件。如果pom中的依赖和插件爆红。可设置mavenFile
——\> Settings。找到Maven相关的三项设置包括Maven home directory、User
settings file、Local repository可直接使用默认设置。
遇到个别顽固爆红的依赖和插件,可以直接在本地资料库.m2\\repository中查找确认是否已经下载。确认已经下载的话则可以尝试在该依赖或者插件中增加版本号与资料库中的一致org.springframework.boot对应的路径
资料库路径\\org\\springframework\\bootspring-boot-maven-plugin对应上述路径的子文件夹spring-boot-maven-plugin此文件夹即spring-boot-maven-plugin的子文件夹是版本号2.3.5.RELEASE打开2.3.5.RELEASE就是对应的jar包等内容
### 设置Mysql
设置好mysql以便运行时自动进行初始化。
配置文件路径:/src/main/resources/bootstrap.yml在此文件中找到datasource
mysql的配置信息修改IP地址为mysql所在机器的IP调整用户密码。本文中为本地即localhost或者用127.0.0.1用户为root密码为root。
### 运行后端
确认启动了Mysql服务
然后运行后端程序
## 前端
### 下载源码
新建文件夹C:\\vsproj用于存放前端项目源码
下载源码在vscode使用【ctrl】+【\`】或者【Terminal】-\>【New
Terminal】。用cd命令进入相应的文件夹。
执行git clone https://gitee.com/anji-plus/report.git拉代码。
### 设置环境
调整配置文件配置文件路径REPORT-UI/config/dev.env.js调整BASE_API后URL地址中的IP、端口。若都在同一台电脑直接使用IP127.0.0.1端口使用默认9095。
连接后端的IP改为后端API代码所在的IP、所使用的端口。
### 编译运行
在vscode使用【ctrl】+【\`】或者【Terminal】-\>【New
Terminal】。用cd命令进入前端代码文件夹执行如下命令
命令一cd C:\\vsproj\\report\\report-ui
命令二npm init -y
命令三npm install
命令四npm run dev
命令四执行后启动了前端在浏览器中输入http://localhost:9528/\#/login
## 启动
启动顺序:确保数据库启动、确保后端启动、最后启动前端
1确保mysql已经启动
2运行后端代码
3运行前端代码
4浏览器输入http://localhost:9528/\#/login
用户admin
密码123456
# 错误
## 问题一
遇到Error creating bean with name 'flywayInitializer' defined in class path
resource解决办法
将这个Resolved
locally后面的**版本号复制**下来,连着符号一起复制,然后找到你数据库中的**flyway_schema
\_history**这个表,在最下面那一行数据中把刚刚复制的版本号替换进去就可以了。
## 问题二
问题现象:报表设计界面中看不到图表,
查看日志Access denied for user 'ajreport'@'localhost' (using password: YES)
在系统【数据源】中调整设置将IP、用户、密码等调整为在用的。
默认用户ajreport密码ajreport
改为初始化时的用户root密码root

View File

@@ -0,0 +1,69 @@
## 多组件对齐和拖拽移动功能
注意前端版本、vue版本 <br>
- 1、多组件选中实现 <br>
- 2、对齐实现 <br>
- 3、拖拽实现 <br>
### 1、多组件选中
- 1、Ctrl键 <br>
- 2、鼠标框选 <br>
- 3、组合 <br>
#### 方式1 Ctrl键实现多选
- 1、第一次单击组件会默认把选中的组件加入到已选中的组件集合中 <br>
- 2、按住Ctrl键选中的组件会加入到已选中的组件集合中 <br>
- 3、按住Ctrl键选中的组件如果已选中的组件中包含该组件则该组件取消选中 <br>
- 4、点击大屏其他位置非组件会把选中的组件清空 <br>
![01](./picture/img_01.png)
#### 方式2 鼠标框选实现多选
- 1、鼠标 (按下,移动,释放)生成矩形框,跟矩形框相交的组件会被选中 <br>
- 2、组合方式多选的情况下框选之前已选中的组件不会加入除非框选也有 <br>
- 3、框选的组件也支持按住Ctrl键取消选中 <br>
- 4、点击大屏其他位置非组件会把选中的组件清空 <br>
![02](./picture/img_02.png) <br>
![03](./picture/img_03.png) <br>
![04](./picture/img_04.png) <br>
### 2、多组件对齐
单选右键菜单 <br>
![05](./picture/img_05.png) <br>
多选右键菜单 <br>
![06](./picture/img_06.png) <br>
#### 左对齐/右对齐/居中对齐
选择左对齐 (以最上边的组件为标准对齐)---不合适自己可以修改代码 <br>
![07](./picture/img_07.png) <br>
#### 上对齐/下对齐/居中对齐
选择上对齐(以最左边的组件为标准对齐)----不合适自己可以修改代码 <br>
![08](./picture/img_08.png) <br>
![09](./picture/img_09.png) <br>
### 3、多组件移动拖拽
#### 多选状态
![10](./picture/img_10.png) <br>
#### 拖拽后
![11](./picture/img_11.png) <br>

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

@@ -0,0 +1,116 @@
## 1.需求:
多个下拉框联动一个图表,图表只查询最后一次选择的下拉框内容
https://gitee.com/anji-plus/report/issues/IC2TFP
## 2.分析:
由于目前设计的组件组件联动,都是在条件组件完成选择或者输入之后就直接触发联动了,
针对多个条件组件共同作用同一个图表的情况下,用户可能想要在最后一个组件完成输入的情况下才会触发联动
所以,设计一个按钮组件,在条件组件都输入完成的情况下,有按钮组件触发联动。
图表组件所需要的参数均有按钮组件提供,而按钮组件的参数由条件组件(表单组件)传递,形成一个提交表单。
按钮组件的数据集跟图表的数据集选择保持一致,即参数保持一直.
** 原先联动逻辑无需改变 **
1.按钮组件 联动 图表组件;
2.条件组件 联动 按钮组件;
## 3.设计示例:
#### 1.测试数据库表 test_user_expenses
```sql
create table test_user_expenses
(
id bigint auto_increment comment '主键'
primary key,
user varchar(32) not null comment '用户',
year int null comment '年份',
rq date null comment '日期',
category varchar(50) null comment '分类',
expenses decimal null comment '支出'
)
comment '测试表' collate = utf8mb4_unicode_ci;
```
#### 2.测试数据
```sql
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (1, '住房物业', 23460, 2023, 'jhh', '2023-04-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (2, '日用百货', 6496, 2023, 'jhh', '2023-04-15');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (3, '交通出行', 5592, 2023, 'jhh', '2023-05-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (4, '餐饮美食', 3218, 2023, 'jhh', '2023-06-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (5, '充值缴费', 1953, 2023, 'jhh', '2023-08-08');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (7, '其他', 1888, 2023, 'jhh', '2023-10-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (8, '住房物业', 23550, 2022, 'jhh', '2022-04-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (9, '日用百货', 2846, 2022, 'jhh', '2022-04-15');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (10, '交通出行', 2108, 2022, 'jhh', '2022-05-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (11, '餐饮美食', 2634, 2022, 'jhh', '2022-06-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (12, '充值缴费', 5280, 2022, 'jhh', '2022-08-08');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (13, '其他', 11553, 2022, 'jhh', '2022-10-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (14, '住房物业', 40000, 2024, 'jhh', '2024-04-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (15, '日用百货', 5000, 2024, 'jhh', '2024-04-15');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (16, '交通出行', 3000, 2024, 'jhh', '2024-05-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (17, '餐饮美食', 3000, 2024, 'jhh', '2024-06-01');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (18, '充值缴费', 5000, 2024, 'jhh', '2024-08-08');
INSERT INTO test_user_expenses (id, category, expenses, year, user, rq)VALUES (19, '其他', 10000, 2024, 'jhh', '2024-10-01');
```
#### 3.测试用的存储过程
```sql
create
definer = root@localhost procedure get_data(IN p_year varchar(255), IN p_category varchar(255))
BEGIN
SET @sql = 'SELECT id, user, year,rq, category,expenses FROM test_user_expenses WHERE 1 = 1';
IF p_year IS NOT NULL AND p_year != '' AND p_year != '全部' THEN
SET @sql = CONCAT(@sql, ' AND year = "', p_year, '"');
END IF;
IF p_category IS NOT NULL AND p_category != '' AND p_category != '全部' THEN
SET @sql = CONCAT(@sql, ' AND category = "', p_category, '"');
END IF;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END;
```
#### 4.数据集
数据集设计
![](./picture/img_12.png)
### 5.大屏设计
![](./picture/img_13.png)
按钮组件
![](./picture/img_14.png)
按钮配置
![](./picture/img_15.png)
按钮联动图标
![](./picture/img_16.png)
按钮联动图标参数信息
![](./picture/img_17.png)
条件组件联动按钮
![](./picture/img_18.png)
![](./picture/img_20.png)
条件组件联动按钮参数信息
![](./picture/img_19.png)
![](./picture/img_21.png)
### 6.测试
![](./picture/img_22.png)
### 7. 注意事项
(1) http方式的数据集参数拼接的方式不允许传递的参数为空后端请求url解析后可能会带{}会报错,所以要求所有的条件输入都必须有值,不清楚最新不能把支不支持。
(2) 建议增加默认联动开关,看需求自行二次修改。
(3) 这里做了表单校验,如果存在未输入的,点击按钮会提示,提示语信息,有开发能力的自行增加配置信息。

View File

@@ -0,0 +1,14 @@
# 社区用户提交文档PR的简易说明
## 提交位置
doc -- > docs --> guide -- > community 目录 <br>
![img](../../guide/community/report/img.png) <br>
## 具体操作
- 请在community目录下新建属于你自己的文件目录命名方式可以使用自己在gitee的名字作为命名注意中文命名可能会存在的一些问题。<br>
- 在你的个人目录下你可以新建MD文件需要用到图片可以直接放一个目录如果md多图片也多建议再建下级目录存放。<br>
最后别忘了在config.js中添加配置如图示。<br>
![img](../../guide/community/report/img_1.png) <br>

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB