Merge remote-tracking branch 'origin/dev' into dev

Raod 1 year ago
commit f4f4a6775d

@ -50,7 +50,7 @@ module.exports = {
title: '用户权限',
collapsable: false,
children: [
{title: '权限管理', path: '/guide/authmanager'},
{title: '权限管理', path: '/guide/authManager'},
]
},
{
@ -59,12 +59,13 @@ module.exports = {
children: [
{title: '数据源', path: '/guide/datasource'},
{title: '数据集', path: '/guide/dataset'},
{title: '报表管理', path: '/guide/reportmanager'},
{title: '报表管理', path: '/guide/reportManager'},
{title: '大屏报表', path: '/guide/dashboard'},
{title: '表格报表', path: '/guide/excel'},
{title: '导入导出', path: '/guide/importexport'},
{title: '图表配置项', path: '/guide/chartsconfig'},
{title: '导入导出', path: '/guide/importExport'},
{title: '图表配置项', path: '/guide/chartsConfig'},
{title: '图表组件', path: '/guide/charts'},
{title: '图表联动', path: '/guide/chartsLinkage'},
]
},
{

@ -95,6 +95,17 @@
**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**
### 双Y柱图
数据集需要3个字段其中一个字段作为“X轴”另外两个数值字段选择“柱状”左右Y轴分别代表选择柱状的俩种数值。 <br>
![img33](../picture/charts/img_33.png) <br>
#### 数据格式
![img34](../picture/charts/img_34.png) <br>
**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**
## 折线图
### 折线图
@ -298,7 +309,7 @@
基本操作和表格一致通过配置栏的新增按钮和操作按钮对雷达顶点数量进行修改可生成5边雷达6边雷达等等”key值“和”雷达顶点“保持一致从最上端顶点逆时针规划其他顶点。<br>
![img26](../picture/charts/img_26.png) <br>
### 数据格式
#### 数据格式
数据格式和柱线、多柱线都是类似的注意实际作为”名称“的字段比如时间字段有且只能有1个其余是”雷达顶点“字段不明白可以看静态数据格式。<br>
![img27](../picture/charts/img_27.png) <br>
@ -306,13 +317,46 @@
**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**
## 刻度尺
### 竖刻度尺
刻度尺数值的颜色来源于配置的渐变色渐变色分为0%-30%-50%-70%-100%数值颜色的变化会随着数值所在颜色区间的变化而变化。通过刻度设定可以调整最大刻度默认刻度是100。<br>
![img35](../picture/charts/img_35.png) <br>
![img36](../picture/charts/img_36.png) <br>
#### 数据格式
单一的数值字段,可看静态数据。
### 横刻度尺
同竖刻度尺。<br>
![img37](../picture/charts/img_37.png) <br>
#### 数据格式
单一的数值字段,可看静态数据。
## 表单
### 下拉框
下拉框组件联动的使用方式请看图表联动里面的详细描述。<br>
![img38](../picture/charts/img_38.png) <br>
#### 数据格式
### 输入框
“提交值”指的是下拉框提交给联动的组件字段名和字段值“显示值”是指下拉框自身下拉按钮显示的值。动态数据需要至少1个字段如果只有一个字段请选择“提交值”最多2个字段“提交值”“显示值”只能选择一个不能同时都选。<br>
注意下拉框的静态数据只是作为参考用的,并不参与解析。<br>
![img39](../picture/charts/img_39.png) <br>
**如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**
### 时间筛选器
默认支持的时间格式是"yyyy-MM-dd HH:mm:ss",其他日期格式暂不支持,需要自己把自己数据集中时间字段格式化成同种格式。<br>
时间筛选器组件联动的使用方式请看图表联动里面的详细描述。<br>
![img40](../picture/charts/img_40.png) <br>
![img41](../picture/charts/img_41.png) <br>
#### 数据格式

@ -0,0 +1,190 @@
## 简要说明
现有系统联动的本质是数据集查询参数“示例值”的替换, 现在联动有两种。<br>
- 表单联动 <br>
目前支持的有下拉框、时间筛选器。<br>
- 图表联动:<br>
目前联动主要集中在柱状图、折线图、饼图等这种二维图表二维图表是指图表只支持2个字段的数据集当然并不是说需要3个字段的堆叠图柱状/折线)不支持联动,而是这种三维图表去联动二维图表会带来一些问题,反之二维的去联动三维的同样存在问题,因此目前源代码中只添加了部分二维图表的联动。<br>
**注:**
没有多级联动联动都是一对一的。例如时间筛选器绑定了A柱图A柱图绑定了B饼图当使用时间筛选器更改时间后只会更新绑定的A柱图A绑定的B饼图并不会更新数据。<br>
## 表单联动
### 下拉框
- 简介-数据格式 <br>
下拉框最多两个字段数据字典对应“显示值label”、“提交值value“提交值”是必须选择的当动态数据只有一个字段的时候选择“提交值”也会将其默认展示为“显示值”。<br>
- 联动说明 <br>
被联动的组件:当前大屏中除自身以外的其他图表组件,这里获取的是图表的图层名称,每个图表都有默认的图层名称,因此有相同图表存在的话,记得修改图层名称。<br>
![img](../picture/chartsLinkage/img.png) <br>
参数配置label和value是下拉框自身字典属性。<br>
![img1](../picture/chartsLinkage/img_1.png) <br>
选择联动的图表后可以获得该图表配置的数据集并获得数据集中的查询参数然后将该查询参数进行绑定label、value。 <br>
![img2](../picture/chartsLinkage/img_2.png) <br>
下拉联动的时候就是将下拉框label/value的数据提交给联动图表的查询参数绑定label就是将下拉框label的值传递给图表的查询参数同理value只有一个查询参数的情况下肯定不能同时绑定label、value。<br>
![img3](../picture/chartsLinkage/img_3.png) <br>
- **使用注意 ** <br>
首先每个有查询参数的数据集都有对应查询参数的示例值,那么此数据集的数据则是根据此查询参数执行后的结果; <br>
下拉框在使用时,则是将下拉选择的值传递给此查询参数来获得新的数据; <br>
当使用下拉框后,已经将值传递给了某数据集的查询参数,这时候将下拉框的值清空并不会意味着传了空值给查询参数,且当数据集的刷新时间到了后也只会按下拉框传递的参数值进行查询; <br>
那么在使用下拉框查询后,想恢复原本数据集的数据只需要刷新浏览器即可。<br>
- 示例 <br>
示例中的数据集相关的sql写在 aj_report_init.sql文件中请自行查看。<br>
1、先准备两个数据集 <br>
按城市名称过滤筛选的数据集,可用于柱图、折线图等二字段图表。<br>
![img5](../picture/chartsLinkage/img_5.png) <br>
```
SELECT DATE_FORMAT(create_time,'%Y-%m-%d') create_time,sum(nums) sum_nums FROM aj_report_city where city_name ='${city_name}' group by create_time ;
```
获得城市名称对应的数据集,用于下拉框筛选。<br>
![img4](../picture/chartsLinkage/img_4.png) <br>
```
SELECT DISTINCT(city_code)city_code ,city_name FROM aj_report_city group by city_code,city_name;
```
<br>
2、给下拉框配置动态数据并设置好“提交值”、“显示值”字段 <br>
![img6](../picture/chartsLinkage/img_6.png) <br>
3、联动配置-参数配置 <br>
下拉框数据集绑定的是“提交值”也就是label这里也就是将label的值传递给柱状图数据集的查询参数city_name。<br>
当然在给下拉框绑定数据集的时候因为只绑定了“提交值”这一个字段因此这个字段的值同时作为“label、value”参数配置的时候选择value绑定city_name也是有结果。<br>
![img7](../picture/chartsLinkage/img_7.png) <br>
4、使用 <br>
注意内容看上面说明。<br>
![img8](../picture/chartsLinkage/img_8.png) <br>
<br>
### 时间筛选器
- 简介 <br>
时间筛选器组件底层定义了“startTime、endTime”字典值即开始时间、结束时间和下拉框一样使用时也是传值给绑定图表的查询参数。<br>
- 联动说明 <br>
和下拉框的操作是一样的,这里也是绑定查询参数。<br>
![img9](../picture/chartsLinkage/img_9.png) <br>
- **注意事项!!!** <br>
1、绑定的数据集的查询参数的时间格式目前必须是 "yyyy-MM-dd HH:mm:ss",其他日期格式,暂不支持。<br>
2、绑定的数据集的查询参数至少有一个是和时间有关最多两个和时间有关。<br>
3、注意sql里面时间的比较比如时间筛选器的今天是指当天的00:00:00 ~ 23:59:59 。<br>
4、如果数据集的查询参数只有开始时间/结束时间其一,那么在用时间筛选器绑定的时候注意只绑定一个。<br>
5、使用后的情况和下拉框使用后情况一致。<br>
<br>
- 数据集示例-查近7天数据并进行联动 <br>
![img10](../picture/chartsLinkage/img_10.png) <br>
```
SELECT city_name,sum(nums) sum_nums FROM aj_report_city where create_time>='${startTime}' and create_time < '${endTime}' group by city_name
```
startTime、endTime的示例值不用带上时分秒
```js
// startTime
function verification(data) {
//自定义脚本内容
//可返回true/false单纯校验键入的data正确性
//可返回文本,实时替换,比如当前时间等
//return "2099-01-01 00:00:00";
//设置日期,当前日期的前七天\
data = data.sampleItem;
//示例值不能为空,因此这里判断示例值,保证示例值和时间筛选器返回值不一样就行,
if (data.length == 10) {
// 获取7天前日期
return getDay(-7);
}
return data;
}
// 时间处理公用方法
function getDay(day) {
var today = new Date();
var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
today.setTime(targetday_milliseconds); //注意,这行是关键代码
var tYear = today.getFullYear();
var tMonth = today.getMonth();
var tDate = today.getDate();
tMonth = doHandleMonth(tMonth + 1);
tDate = doHandleMonth(tDate);
return tYear + "-" + tMonth + "-" + tDate + " 00:00:00";
}
function doHandleMonth(month) {
var m = month;
if (month.toString().length == 1) {
m = "0" + month;
}
return m;
}
```
```js
// endTime
function verification(data) {
//自定义脚本内容
//可返回true/false单纯校验键入的data正确性
//可返回文本,实时替换,比如当前时间等
//return "2099-01-01 00:00:00";
//设置日期,当前日期的前七天
data = data.sampleItem;
if (data.length == 10) {
return getDay(1);
}
return data;
}
function getDay(day) {
var today = new Date();
var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
today.setTime(targetday_milliseconds); //注意,这行是关键代码
var tYear = today.getFullYear();
var tMonth = today.getMonth();
var tDate = today.getDate();
tMonth = doHandleMonth(tMonth + 1);
tDate = doHandleMonth(tDate);
return tYear + "-" + tMonth + "-" + tDate + " 00:00:00";
}
function doHandleMonth(month) {
var m = month;
if (month.toString().length == 1) {
m = "0" + month;
}
return m;
}
```
## 图表联动
- 简介 <br>
图表联动是将联动图表的某些值覆盖到被联动的图表中,因此能否联动成功的关键在于,联动图表的数据格式是否满足被联动的图表。比如柱状图联动折线图,这俩图的数据格式是一模一样的,能联动成功,但是用柱状图去联动柱状堆叠图,数据格式不一致,那无法成功。<br>
- 联动参数说明 <br>
图表联动的界面和表单联动界面都是一样的不同的在于参数配置名称的不同。在二维的图表中比如name在柱状图中代表柱图动态数据集的X轴字段value则代表数值在饼图中name对应饼图动态数据集的namevalue同样对应数值。<br>
![img11](../picture/chartsLinkage/img_11.png) <br>
- **注意事项!!!** <br>
1、用于被联动的动态数据集比如上面的示例数据集查询参数在sql里面需要用 '' 或者 ""
因为时间筛选器格式传递的数据中间有空格的。当然如果不绑定时间筛选器那么sql里面直接使用数据库时间函数就行例如DATE_FORMAT。<br>
2、联动与被联动的图表必须有相同的数据格式。理论上多维向低维填充数据是没问题的但实际操作时带来的问题会很多因此当前版本高维图表都不支持图表组件联动。<br>
3、被联动的图表的动态数据集必须得有查询参数。说的简单一点就是联动始终都是数据集参数的传递图表只是数据的载体表象。<br>
4、使用后的情况和表单组件使用后情况一致。<br>

@ -6,15 +6,24 @@
- 如果需要将之前版本的示例数据删除delete_aj_report_init.sql 文件放置在 doc/example目录下。
- 对于从之前版本升级到1.0.0版本,为避免sql重复执行覆盖等问题1.0.0版本的配置项bootstrap.yml将默认禁用flyway
从0.9.9版本更新到1.0.0版本的更新sqlV0.9.9_U_V1.0.0.sql 文件放置在 doc/update1.0目录下,请参照下面的步骤内容进行操作,
- 对于从之前版本升级到1.0.0版本,必需解决新旧sql的冲突问题因为V1.0.0版本同样默认启用flyway如果不解决冲突代码启动就会报错
从0.9.9版本更新到1.0.0版本的更新sql请参照下面的步骤内容进行操作
如果从更低的版本升级到V1.0.0请先升级到V0.9.9版本,可参考之前版本的[releases](https://gitee.com/anji-plus/report/releases)。
**如果从V0.9.9版本更新至V1.0.0版本后需要继续使用flyway功能必需解决新旧sql的冲突问题**
- 0.将自己系统的数据库数据进行备份
- 1.手动执行V0.9.9_U_V1.0.0.sqldoc/update1.0 目录下)
- 2.插入一条数据到flyway_schema_history表中sql如下
- 1、将自己系统的数据库数据进行备份
- 2、手动执行V0.9.9更新的V1.0.0增量sql
```
INSERT INTO `aj_report`.`gaea_dict`(`dict_name`, `dict_code`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('下拉框属性', 'SELECT_PROPERTIES', '下拉框属性', 'admin', NOW(), 'admin', NOW(), 1);
INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SELECT_PROPERTIES', '显示值', 'label', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);
INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SELECT_PROPERTIES', '提交值', 'value', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);
```
- 3.清空flyway_schema_history表并插入一条数据到表中sql如下
```
truncate table aj_report.flyway_schema_history;
@ -24,8 +33,8 @@ VALUES (1, '1.0.0', 'init', 'SQL', 'V1.0.0__init.sql', -1762151859, 'root', '202
```
- 3.将配置项bootstrap.yml中的flyway改为true
<br>
**如果是直接使用1.0.0版本,只需要将配置项bootstrap.yml中的flyway改为true即可**
**如果是直接使用1.0.0版本,以上都不需要处理**
## 新增/修复

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

File diff suppressed because one or more lines are too long

@ -15,6 +15,7 @@ DROP TABLE IF EXISTS `aj_report_init`.`aj_report_manus`;
DROP TABLE IF EXISTS `aj_report_init`.`aj_report_nums`;
DROP TABLE IF EXISTS `aj_report_init`.`aj_report_table`;
DROP TABLE IF EXISTS `aj_report_init`.`aj_report_wifiamount`;
DROP TABLE IF EXISTS `aj_report_init`.`aj_report_init`;
DROP DATABASE `aj_report_init`;
DELETE FROM `aj_report`.`gaea_report` WHERE `report_code` = 'log_ajreport';
@ -33,75 +34,9 @@ DELETE FROM `aj_report`.`gaea_report_dashboard` WHERE `report_code` = 'logistics
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'test';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'acc_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'car_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'blank';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'blank';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'blank';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logn_ajreport';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_dashboard_widget` WHERE `report_code` = 'logistics_one';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'log_ajdevices';
@ -130,6 +65,13 @@ DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'logis_table';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'per';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'barstack_ajreport';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'compare_ajreport';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'aj_report_city_total';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'aj_report_single_city';
DELETE FROM `aj_report`.`gaea_report_data_set` WHERE `set_code` = 'aj_report_city_select';
DELETE FROM `aj_report`.`gaea_report_data_set_param` WHERE `set_code` = 'aj_report_city_total';
DELETE FROM `aj_report`.`gaea_report_data_set_param` WHERE `set_code` = 'aj_report_single_city';
DELETE FROM `aj_report`.`gaea_report_data_set_param` WHERE `set_code` = 'aj_report_city_select';
DELETE FROM `aj_report`.`gaea_report_data_source` WHERE `source_code` = 'mysql_ajreport';

@ -1,4 +0,0 @@
INSERT INTO `aj_report`.`gaea_dict`(`dict_name`, `dict_code`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('下拉框属性', 'SELECT_PROPERTIES', '下拉框属性', 'admin', NOW(), 'admin', NOW(), 1);
INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SELECT_PROPERTIES', '显示值', 'label', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);
INSERT INTO `aj_report`.`gaea_dict_item`(`dict_code`, `item_name`, `item_value`, `item_extend`, `enabled`, `locale`, `remark`, `sort`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('SELECT_PROPERTIES', '提交值', 'value', NULL, 1, 'zh', NULL, NULL, 'admin', NOW(), 'admin', NOW(), 1);

@ -45,8 +45,8 @@ spring:
user: ${spring.datasource.username}
password: ${spring.datasource.password}
placeholder-replacement: false
#init-sqls:
#- CREATE DATABASE IF NOT EXISTS `aj_report` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
init-sqls:
- CREATE DATABASE IF NOT EXISTS `aj_report` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
gaea:
subscribes:
oss: #文件存储 都配置的情况下优先级minio->amazonS3->nfs

@ -43,6 +43,16 @@ export const lickageParamsConfig = [
code: 'widgetPiePercentageChart',
paramsKey: ['value']
},
{
name: '饼图',
code: 'widget-piechart',
paramsKey: ['name', 'value']
},
{
name: '南丁格尔玫瑰图',
code: 'WidgetPieNightingaleRoseArea',
paramsKey: ['name', 'value']
},
]
export const getOneConfigByCode = function (code) {

@ -861,7 +861,7 @@ export const widgetBarDoubleYaxis = {
placeholder: '',
relactiveDom: 'dataType',
chartType: 'widget-barlinechart',
dictKey: 'BAR_LINE_PROPERTIES',
dictKey: 'BAR_PROPERTIES',
relactiveDomValue: 'dynamicData',
},
],

@ -20,21 +20,13 @@ export const widgetFormTime = {
},
{
type: 'vue-color',
label: '字体颜色',
name: 'select_color',
required: false,
placeholder: '',
value: '#FAD400',
},
{
type: 'vue-color',
label: '字体背景',
name: 'select_fontSize',
label: '背景',
name: 'select_background',
required: false,
placeholder: '',
value: 'rgba(115,170,229,.5)',
},
{
/* {
type: 'el-select',
label: '触发事件',
name: 'event',
@ -46,7 +38,7 @@ export const widgetFormTime = {
{ code: 'focus', name: 'focus' },
],
value: 'change',
},
},*/
[{
name: '组件联动',
list: [
@ -60,57 +52,7 @@ export const widgetFormTime = {
]
}]
],
data: [
{
type: 'el-radio-group',
label: '数据类型',
name: 'dataType',
require: false,
placeholder: '',
selectValue: true,
selectOptions: [
{
code: 'staticData',
name: '静态数据',
},
{
code: 'dynamicData',
name: '动态数据',
},
],
value: 'staticData',
},
{
type: 'el-input-number',
label: '刷新时间(毫秒)',
name: 'refreshTime',
relactiveDom: 'dataType',
relactiveDomValue: 'dynamicData',
value: 600000
},
{
type: 'el-button',
label: '静态数据',
name: 'staticData',
required: false,
placeholder: '',
relactiveDom: 'dataType',
relactiveDomValue: 'staticData',
value: [],
},
{
type: 'dycustComponents',
label: '',
name: 'dynamicData',
required: false,
placeholder: '',
relactiveDom: 'dataType',
relactiveDomValue: 'dynamicData',
chartType: 'widget-select',
dictKey: 'SELECT_PROPERTIES',
value: '',
},
],
data: [],
position: [
{
type: 'el-input-number',
@ -134,7 +76,7 @@ export const widgetFormTime = {
name: 'width',
required: false,
placeholder: '该容器在1920px大屏中的宽度',
value: 200,
value: 400,
},
{
type: 'el-input-number',

@ -25,12 +25,12 @@ export const widgetInput = {
{
type: 'vue-color',
label: '字体背景',
name: 'select_fontSize',
name: 'select_background',
required: false,
placeholder: '',
value: 'rgba(115,170,229,.5)',
},
{
/* {
type: 'el-select',
label: '触发事件',
name: 'event',
@ -42,7 +42,7 @@ export const widgetInput = {
{ code: 'focus', name: 'focus' },
],
value: 'change',
}
}*/
],
position: [
{

@ -33,12 +33,12 @@ export const widgetSelect = {
{
type: 'vue-color',
label: '字体背景',
name: 'select_fontSize',
name: 'select_background',
required: false,
placeholder: '',
value: 'rgba(115,170,229,.5)',
},
{
/* {
type: 'el-select',
label: '触发事件',
name: 'event',
@ -50,7 +50,7 @@ export const widgetSelect = {
{ code: 'focus', name: 'focus' },
],
value: 'change',
},
},*/
[{
name: '组件联动',
list: [
@ -144,7 +144,7 @@ export const widgetSelect = {
name: 'width',
required: false,
placeholder: '该容器在1920px大屏中的宽度',
value: 100,
value: 200,
},
{
type: 'el-input-number',

@ -338,6 +338,18 @@ export const widgetPieNightingale = {
},
],
},
{
name: '组件联动',
list: [
{
type: 'componentLinkage',
label: '',
name: 'componentLinkage',
required: false,
value: []
}
]
}
],
],
// 数据

@ -1,10 +1,12 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetBarCompareChart",
// https://www.makeapie.com/editor.html?c=xrJwcCF3NZ
@ -12,6 +14,7 @@ export default {
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -258,6 +261,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -277,6 +283,7 @@ export default {
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -567,9 +574,26 @@ export default {
this.options.series[1].itemStyle = itemStyleRight;
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsSetup = this.optionsSetup;
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetBarDoubleYaxisChart",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -108,6 +111,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -127,6 +133,7 @@ export default {
this.optionsCollapse = this.value.collapse;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -426,8 +433,25 @@ export default {
this.options = Object.assign({}, this.options);
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetBarStackchart",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -70,6 +73,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -89,6 +95,7 @@ export default {
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -272,10 +279,27 @@ export default {
}
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsSetup = this.optionsSetup;
// or
const optionsData = this.optionsData;
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "widgetBarLineStackChart",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -105,6 +108,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -124,6 +130,7 @@ export default {
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -353,10 +360,27 @@ export default {
}
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsSetup = this.optionsSetup;
// or
const optionsData = this.optionsData;
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetBarlinechart",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -108,6 +111,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -127,6 +133,7 @@ export default {
this.optionsCollapse = this.value.collapse;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -426,8 +433,25 @@ export default {
this.options = Object.assign({}, this.options);
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,10 +1,12 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
import echarts from "echarts";
export default {
name: "widgetMoreBarLineChart",
@ -12,6 +14,7 @@ export default {
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -167,6 +170,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -186,6 +192,7 @@ export default {
this.optionsCollapse = this.value.collapse;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -414,8 +421,25 @@ export default {
}
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -41,8 +41,8 @@ export default {
shortcuts: [{
text: '今天',
onClick(picker) {
const end = new Date();
const start = new Date(new Date(new Date().getTime()).setHours(0, 0, 0, 0));
const end = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999));
picker.$emit('pick', [start, end]);
}
},{
@ -55,25 +55,28 @@ export default {
},{
text: '最近一周',
onClick(picker) {
const end = new Date();
const start = new Date();
start.setTime(miment().add(-1, 'ww').stamp());
const end = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999));
const start = new Date(new Date(new Date().getTime()+24*60*60*1000));
start.setTime(miment().add(-6, 'DD').stamp());
new Date(start.setHours(0,0,0,0));
picker.$emit('pick', [start, end]);
}
}, {
text: '最近一个月',
onClick(picker) {
const end = new Date();
const end = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999));
const start = new Date();
start.setTime(miment().add(-1, 'MM').stamp());
new Date(start.setHours(0,0,0,0));
picker.$emit('pick', [start, end]);
}
}, {
text: '最近三个月',
onClick(picker) {
const end = new Date();
const end = new Date(new Date(new Date().getTime()).setHours(23, 59, 59, 999));
const start = new Date();
start.setTime(miment().add(-3, 'MM').stamp());
new Date(start.setHours(0,0,0,0));
picker.$emit('pick', [start, end]);
}
}],
@ -91,12 +94,11 @@ export default {
height: this.optionsStyle.height + "px",
left: this.optionsStyle.left + "px",
top: this.optionsStyle.top + "px",
background: this.optionsSetup.select_fontSize,
color: this.optionsSetup.select_color,
background: this.optionsSetup.select_background,
};
},
eventChange() {
return this.optionsSetup.event || "change";
return "change";
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
@ -108,7 +110,6 @@ export default {
this.optionsSetup = val.setup;
this.optionsData = val.data;
this.optionsStyle = val.position;
this.setOptions();
},
deep: true,
},
@ -117,13 +118,11 @@ export default {
this.optionsSetup = this.value.setup;
this.optionsData = this.value.data;
this.optionsStyle = this.value.position;
this.setOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
change(event) {
console.log(event);
const formTimeData = {}
formTimeData['startTime'] = event[0] //startTime
formTimeData['endTime'] = event[1] //endTime
@ -131,36 +130,6 @@ export default {
currentData: formTimeData,
}); // -
},
setOptions() {
const optionsData = this.optionsData;
return optionsData.dataType == "staticData"
? this.staticData(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);
},
staticData(data) {
this.options = data;
},
//
dynamicDataFn(val, refreshTime) {
if (!val) return;
if (this.ispreview) {
this.getEchartData(val);
this.flagInter = setInterval(() => {
this.getEchartData(val);
}, refreshTime);
} else {
this.getEchartData(val);
}
},
getEchartData(val) {
const data = this.queryEchartsData(val);
data.then((res) => {
this.renderingFn(res);
});
},
renderingFn(val) {
this.options = val;
},
},
};
</script>

@ -32,12 +32,12 @@ export default {
height: this.optionsStyle.height + "px",
left: this.optionsStyle.left + "px",
top: this.optionsStyle.top + "px",
background: this.optionsSetup.select_fontSize,
background: this.optionsSetup.select_background,
color: this.optionsSetup.select_color,
};
},
eventChange() {
return this.optionsSetup.event || "change";
return "change";
},
},
watch: {

@ -42,12 +42,12 @@ export default {
height: this.optionsStyle.height + "px",
left: this.optionsStyle.left + "px",
top: this.optionsStyle.top + "px",
background: this.optionsSetup.select_fontSize,
background: this.optionsSetup.select_background,
color: this.optionsSetup.select_color,
};
},
eventChange() {
return this.optionsSetup.event || "change";
return "change";
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetFunnel",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -88,6 +91,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -107,6 +113,7 @@ export default {
this.optionsCollapse = this.value.collapse;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -207,8 +214,25 @@ export default {
this.options.color = arrColor;
this.options = Object.assign({}, this.options);
},
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "widgetHeatmap",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -116,6 +119,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -135,6 +141,7 @@ export default {
this.optionsCollapse = this.value.collapse;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -303,8 +310,25 @@ export default {
visualMap.orient = optionsSetup.layoutFront;
visualMap.itemWidth = optionsSetup.legendWidth;
},
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,10 +1,12 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetBarCompareChart",
// https://www.makeapie.com/editor.html?c=xOjLyozu2W
@ -12,6 +14,7 @@ export default {
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -259,6 +262,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -278,6 +284,7 @@ export default {
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -617,9 +624,26 @@ export default {
}
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsSetup = this.optionsSetup;
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(

@ -1,16 +1,19 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetBarStackchart",
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -70,6 +73,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -89,6 +95,7 @@ export default {
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -299,10 +306,27 @@ export default {
this.options = Object.assign({}, this.options);
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsSetup = this.optionsSetup;
// or
const optionsData = this.optionsData;
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData, optionsSetup)
: this.dynamicDataFn(

@ -1,9 +1,11 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
import echarts from "echarts";
import "../../../../../../node_modules/echarts/map/js/china.js";
//https://www.makeapie.com/editor.html?c=x2yaz6dfRw
@ -209,6 +211,7 @@ export default {
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -405,6 +408,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -432,6 +438,7 @@ export default {
this.getEchartData(dynamicData, optionsSetup);
}
);
targetWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -528,8 +535,25 @@ export default {
minSize4Pin = this.optionsSetup.fontminSize4Pin;
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,9 +1,11 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
import "echarts/map/js/china.js";
import echarts from "echarts";
import { conversionCity } from "@/utils/china";
@ -131,6 +133,7 @@ export default {
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -303,6 +306,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -322,6 +328,7 @@ export default {
},
mounted() {
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
convertData(data) {
@ -476,8 +483,25 @@ export default {
this.options.geo["itemStyle"] = itemStyle;
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,16 +1,22 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {
originWidgetLinkageLogic,
targetWidgetLinkageLogic,
} from "@/views/bigscreenDesigner/designer/linkageLogic";
export default {
name: "WidgetPieNightingaleRoseArea", // https://echarts.apache.org/examples/zh/editor.html?c=pie-roseType-simple
components: {},
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -55,6 +61,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -74,6 +83,8 @@ export default {
this.optionsCollapse = this.value.setup;
this.optionsSetup = this.value.setup;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
originWidgetLinkageLogic(this); // -
},
methods: {
// options
@ -195,8 +206,25 @@ export default {
this.options = Object.assign({}, this.options);
},
//
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

@ -1,9 +1,11 @@
<template>
<div :style="styleObj">
<v-chart :options="options" autoresize />
<v-chart ref="myVChart" :options="options" autoresize />
</div>
</template>
<script>
import {targetWidgetLinkageLogic} from "@/views/bigscreenDesigner/designer/linkageLogic";
import vue from "vue";
import VueSuperSlide from "vue-superslide";
vue.use(VueSuperSlide);
@ -11,6 +13,7 @@ export default {
props: {
value: Object,
ispreview: Boolean,
flagInter: null,
},
data() {
return {
@ -40,6 +43,9 @@ export default {
background: this.optionsSetup.background,
};
},
allComponentLinkage() {
return this.$store.state.designer.allComponentLinkage;
},
},
watch: {
value: {
@ -57,6 +63,7 @@ export default {
this.optionsPosition = this.value.position;
this.optionsData = this.value.data;
this.editorOptions();
targetWidgetLinkageLogic(this); // -
},
methods: {
editorOptions() {
@ -173,8 +180,25 @@ export default {
setOptionsMargin() {
this.options.radar.radius = "70%";
},
setOptionsData() {
setOptionsData(e, paramsConfig) {
const optionsData = this.optionsData; // or
//
optionsData.dynamicData = optionsData.dynamicData || {}; // dynamicData undefined
const myDynamicData = optionsData.dynamicData;
clearInterval(this.flagInter); //
if (
e &&
optionsData.dataType !== "staticData" &&
Object.keys(myDynamicData.contextData).length
) {
const keyArr = Object.keys(myDynamicData.contextData);
paramsConfig.forEach((conf) => {
if (keyArr.includes(conf.targetKey)) {
myDynamicData.contextData[conf.targetKey] = e[conf.originKey];
}
});
}
//
optionsData.dataType == "staticData"
? this.staticDataFn(optionsData.staticData)
: this.dynamicDataFn(optionsData.dynamicData, optionsData.refreshTime);

Loading…
Cancel
Save