117 lines
5.3 KiB
Markdown
117 lines
5.3 KiB
Markdown
|
|
|
|||
|
|
## 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) 这里做了表单校验,如果存在未输入的,点击按钮会提示,提示语信息,有开发能力的自行增加配置信息。
|
|||
|
|
|
|||
|
|
|