Signed-off-by: chy <chy@163.com>
246
doc/docs/guide/community/AC1688/搭建aj-report开发环境.md
Normal 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 Roles),root密码设置为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中的依赖和插件爆红。可设置maven,File
|
||||
——\> Settings。找到Maven,相关的三项设置,包括:Maven home directory、User
|
||||
settings file、Local repository,可直接使用默认设置。
|
||||
|
||||
遇到个别顽固爆红的依赖和插件,可以直接在本地资料库.m2\\repository中查找,确认是否已经下载。确认已经下载的话,则可以尝试在该依赖或者插件中增加版本号(与资料库中的一致,org.springframework.boot对应的路径
|
||||
资料库路径\\org\\springframework\\boot,spring-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、端口。若都在同一台电脑,直接使用IP:127.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
|
||||
@@ -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>
|
||||
|
||||

|
||||
|
||||
#### 方式2 鼠标框选实现多选
|
||||
|
||||
- 1、鼠标 (按下,移动,释放)生成矩形框,跟矩形框相交的组件会被选中 <br>
|
||||
- 2、组合方式多选的情况下,框选之前已选中的组件不会加入(除非框选也有) <br>
|
||||
- 3、框选的组件,也支持按住Ctrl键取消选中 <br>
|
||||
- 4、点击大屏其他位置(非组件),会把选中的组件清空 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
### 2、多组件对齐
|
||||
|
||||
单选右键菜单 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
多选右键菜单 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
#### 左对齐/右对齐/居中对齐
|
||||
|
||||
选择左对齐 (以最上边的组件为标准对齐)---不合适自己可以修改代码 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
#### 上对齐/下对齐/居中对齐
|
||||
|
||||
选择上对齐(以最左边的组件为标准对齐)----不合适自己可以修改代码 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
 <br>
|
||||
|
||||
### 3、多组件移动拖拽
|
||||
|
||||
#### 多选状态
|
||||
|
||||
 <br>
|
||||
|
||||
#### 拖拽后
|
||||
|
||||
 <br>
|
||||
BIN
doc/docs/guide/community/JiangHH/picture/img_01.png
Normal file
|
After Width: | Height: | Size: 130 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_02.png
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_03.png
Normal file
|
After Width: | Height: | Size: 110 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_04.png
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_05.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_06.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_07.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_08.png
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_09.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_10.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_11.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_12.png
Normal file
|
After Width: | Height: | Size: 43 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_13.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_14.png
Normal file
|
After Width: | Height: | Size: 129 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_15.png
Normal file
|
After Width: | Height: | Size: 90 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_16.png
Normal file
|
After Width: | Height: | Size: 72 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_17.png
Normal file
|
After Width: | Height: | Size: 71 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_18.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_19.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_20.png
Normal file
|
After Width: | Height: | Size: 78 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_21.png
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
doc/docs/guide/community/JiangHH/picture/img_22.png
Normal file
|
After Width: | Height: | Size: 39 KiB |
116
doc/docs/guide/community/JiangHH/按钮组件控制多条件组件联动图表实现.md
Normal 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.数据集
|
||||
数据集设计
|
||||

|
||||
|
||||
### 5.大屏设计
|
||||
|
||||

|
||||
|
||||
按钮组件
|
||||
|
||||

|
||||
|
||||
按钮配置
|
||||

|
||||
|
||||
按钮联动图标
|
||||

|
||||
按钮联动图标参数信息
|
||||

|
||||
|
||||
条件组件联动按钮
|
||||

|
||||

|
||||
条件组件联动按钮参数信息
|
||||

|
||||

|
||||
|
||||
### 6.测试
|
||||

|
||||
|
||||
### 7. 注意事项
|
||||
|
||||
(1) http方式的数据集参数拼接的方式,不允许传递的参数为空,后端请求url解析后可能会带{}会报错,所以要求所有的条件输入都必须有值,不清楚最新不能把支不支持。
|
||||
(2) 建议增加默认联动开关,看需求自行二次修改。
|
||||
(3) 这里做了表单校验,如果存在未输入的,点击按钮会提示,提示语信息,有开发能力的自行增加配置信息。
|
||||
|
||||
|
||||
14
doc/docs/guide/community/report.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# 社区用户提交文档PR的简易说明
|
||||
|
||||
## 提交位置
|
||||
doc -- > docs --> guide -- > community 目录 <br>
|
||||
 <br>
|
||||
|
||||
## 具体操作
|
||||
- 请在community目录下新建属于你自己的文件目录,命名方式可以使用自己在gitee的名字作为命名,注意中文命名可能会存在的一些问题。<br>
|
||||
- 在你的个人目录下,你可以新建MD文件,需要用到图片可以直接放一个目录,如果md多,图片也多,建议再建下级目录存放。<br>
|
||||
|
||||
最后别忘了在config.js中添加配置,如图示。<br>
|
||||
 <br>
|
||||
|
||||
|
||||
BIN
doc/docs/guide/community/report/img.png
Normal file
|
After Width: | Height: | Size: 7.4 KiB |
BIN
doc/docs/guide/community/report/img_1.png
Normal file
|
After Width: | Height: | Size: 13 KiB |