Преглед изворни кода

!154 update V1.3.0
Merge pull request !154 from Foming/dev

Foming пре 1 година
родитељ
комит
19d3756484
100 измењених фајлова са 8892 додато и 2321 уклоњено
  1. 1 0
      doc/docs/.vuepress/config.js
  2. 12 3
      doc/docs/guide/briefUsing.md
  3. 1 1
      doc/docs/guide/charts.md
  4. 2 2
      doc/docs/guide/dataset.md
  5. 118 59
      doc/docs/guide/question.md
  6. 38 0
      doc/docs/guide/releases/1.3.0.md
  7. BIN
      doc/docs/picture/qusetion/img_10.png
  8. BIN
      doc/docs/picture/qusetion/img_11.png
  9. BIN
      doc/docs/picture/qusetion/img_12.png
  10. BIN
      doc/docs/picture/qusetion/img_13.png
  11. BIN
      doc/docs/picture/qusetion/img_14.png
  12. BIN
      doc/docs/picture/qusetion/img_15.png
  13. BIN
      doc/docs/picture/qusetion/img_8.png
  14. BIN
      doc/docs/picture/qusetion/img_9.png
  15. 1 1
      report-core/pom.xml
  16. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/base/HealthController.java
  17. 23 19
      report-core/src/main/java/com/anjiplus/template/gaea/business/filter/TokenFilter.java
  18. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/controller/AccessAuthorityController.java
  19. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/controller/dto/AccessAuthorityDto.java
  20. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/controller/param/AccessAuthorityParam.java
  21. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/dao/AccessAuthorityMapper.java
  22. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/dao/entity/AccessAuthority.java
  23. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/service/AccessAuthorityService.java
  24. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/service/impl/AccessAuthorityServiceImpl.java
  25. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/controller/AccessRoleController.java
  26. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/controller/dto/AccessRoleDto.java
  27. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/controller/param/AccessRoleParam.java
  28. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/AccessRoleAuthorityMapper.java
  29. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/AccessRoleMapper.java
  30. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/entity/AccessRole.java
  31. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/entity/AccessRoleAuthority.java
  32. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/service/AccessRoleService.java
  33. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/service/impl/AccessRoleServiceImpl.java
  34. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/AccessUserController.java
  35. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/dto/AccessUserDto.java
  36. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/param/AccessUserParam.java
  37. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserMapper.java
  38. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserRoleMapper.java
  39. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/entity/AccessUser.java
  40. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/entity/AccessUserRole.java
  41. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java
  42. 1 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java
  43. 2 1
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dashboard/service/impl/ReportDashboardServiceImpl.java
  44. 1 0
      report-core/src/main/java/com/anjiplus/template/gaea/business/modules/report/service/impl/ReportServiceImpl.java
  45. 8 0
      report-core/src/main/resources/db/migration/V1.3.0__update.sql
  46. 2 2
      report-ui/config/dev.env.js
  47. 1 0
      report-ui/src/App.vue
  48. 539 0
      report-ui/src/assets/iconfont2/demo.css
  49. 211 0
      report-ui/src/assets/iconfont2/demo_index.html
  50. 19 0
      report-ui/src/assets/iconfont2/iconfont.css
  51. 0 0
      report-ui/src/assets/iconfont2/iconfont.js
  52. 16 0
      report-ui/src/assets/iconfont2/iconfont.json
  53. BIN
      report-ui/src/assets/iconfont2/iconfont.ttf
  54. BIN
      report-ui/src/assets/iconfont2/iconfont.woff
  55. BIN
      report-ui/src/assets/iconfont2/iconfont.woff2
  56. 7 0
      report-ui/src/components/AnjiPlus/anji-autocomplete.vue
  57. 7 0
      report-ui/src/components/AnjiPlus/anji-cascader.vue
  58. 7 0
      report-ui/src/components/AnjiPlus/anji-checkbox.vue
  59. 7 0
      report-ui/src/components/AnjiPlus/anji-crud/anji-crud.vue
  60. 7 0
      report-ui/src/components/AnjiPlus/anji-crud/edit-form.vue
  61. 7 0
      report-ui/src/components/AnjiPlus/anji-crud/edit-table.vue
  62. 7 0
      report-ui/src/components/AnjiPlus/anji-crud/edit.vue
  63. 7 0
      report-ui/src/components/AnjiPlus/anji-dialog.vue
  64. 7 0
      report-ui/src/components/AnjiPlus/anji-fourLevel.vue
  65. 7 0
      report-ui/src/components/AnjiPlus/anji-input.vue
  66. 7 0
      report-ui/src/components/AnjiPlus/anji-select.vue
  67. 5 4
      report-ui/src/components/AnjiPlus/anji-tree.vue
  68. 7 0
      report-ui/src/components/AnjiPlus/anji-upload.vue
  69. 7 0
      report-ui/src/components/configForm.vue
  70. 7 0
      report-ui/src/components/eachForm.vue
  71. 48 6
      report-ui/src/mixins/queryform.js
  72. 6 6
      report-ui/src/router/index.js
  73. 2 2
      report-ui/src/store/modules/user.js
  74. 3 2
      report-ui/src/utils/request.js
  75. 2 2
      report-ui/src/utils/screenMixins.js
  76. 3 3
      report-ui/src/views/accessAuthority/index.vue
  77. 8 0
      report-ui/src/views/accessRole/components/RoleAuthority.vue
  78. 3 3
      report-ui/src/views/accessRole/index.vue
  79. 8 0
      report-ui/src/views/accessUser/components/UserRole.vue
  80. 2 2
      report-ui/src/views/accessUser/index.vue
  81. 7 0
      report-ui/src/views/bigscreenDesigner/designer/components/colorPicker.vue
  82. 7 0
      report-ui/src/views/bigscreenDesigner/designer/components/contentMenu.vue
  83. 7 0
      report-ui/src/views/bigscreenDesigner/designer/components/customColorComponents.vue
  84. 4 4
      report-ui/src/views/bigscreenDesigner/designer/components/dynamicAddRadar.vue
  85. 1 1
      report-ui/src/views/bigscreenDesigner/designer/components/dynamicAddTable.vue
  86. 9 4
      report-ui/src/views/bigscreenDesigner/designer/components/dynamicForm.vue
  87. 7 0
      report-ui/src/views/bigscreenDesigner/designer/index.vue
  88. 491 243
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-compare.js
  89. 487 251
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-double-yaxis-chart.js
  90. 1329 0
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-stack-more-show.js
  91. 581 202
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-stack.js
  92. 589 218
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-barchart.js
  93. 618 152
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-gradient-barchart.js
  94. 586 230
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-bar-line-stack.js
  95. 672 234
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-barlinechart.js
  96. 687 233
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-more-bar-line.js
  97. 8 0
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/form/widget-select.js
  98. 287 76
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/funnelCharts/widget-funnel.js
  99. 698 147
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/heatmap/widget-heatmap.js
  100. 608 182
      report-ui/src/views/bigscreenDesigner/designer/tools/configure/lineCharts/widget-line-compare.js

+ 1 - 0
doc/docs/.vuepress/config.js

@@ -36,6 +36,7 @@ module.exports = {
                         {title: 'V1.0.0', path: '/guide/releases/1.0.0'},
                         {title: 'V1.1.0', path: '/guide/releases/1.1.0'},
                         {title: 'V1.2.0', path: '/guide/releases/1.2.0'},
+                        {title: 'V1.3.0', path: '/guide/releases/1.3.0'},
                     ]
                 },
                 {

+ 12 - 3
doc/docs/guide/briefUsing.md

@@ -1,17 +1,26 @@
 希望你们的logo出现在此,[请点此Issue进行登记](https://gitee.com/anji-plus/report/issues/I3ZXT4) <br>
 
 <a href='http://www.anji-plus.com/'> <img src="https://ajreport.beliefteam.cn/file/download/d287d4d3-d30b-4850-9bac-a6c991409251" width = "130" height = "50" align=left/> </a>
-<a href='https://www.yunstech.cn/'><img src="https://www.yunstech.cn/images/logo.png" width = "130" height = "50" /> </a>
+<a href='https://www.yunstech.cn/'><img src="https://ajreport.beliefteam.cn/file/download/d9020e78-cd51-404d-9996-ef32a3654beb" width = "130" height = "50" /> </a>
 <a href='http://www.fgkb.net/'><img src="https://ajreport.beliefteam.cn/file/download/9ee5b709-5033-4cd5-a784-ebd2877fd373" width = "130" height = "50" /> </a>
 <a href='http://www.turingoal.com/'><img src="https://ajreport.beliefteam.cn/file/download/cda7bf68-376b-45dc-9a55-c52b21e4a8c8" width = "130" height = "50" /> </a>
 <a href='http://www.plian.net/'><img src="https://ajreport.beliefteam.cn/file/download/7838f2c2-fdce-4ca7-8373-14d13dcda5cc" width = "130" height = "50" /> </a>
+<br>
 <a href='https://www.gykjweb.com/'><img src="https://ajreport.beliefteam.cn/file/download/d13b03f5-0c20-4878-9a79-f3c76b44bfd9" width = "130" height = "130" /> </a> 
-<img src="https://ajreport.beliefteam.cn/file/download/7fb4731c-a697-4049-b386-396a6c1f9270" width = "130" height = "130" /> <br>
+<img src="https://ajreport.beliefteam.cn/file/download/7fb4731c-a697-4049-b386-396a6c1f9270" width = "130" height = "130" /> 
+<img src="https://foruda.gitee.com/images/1694349610486939594/f2cd89ab_7349845.png" width = "130" height = "130" /> 
+<a href='https://soft.pusdn.com/'><img src="https://foruda.gitee.com/images/1694967000938437067/9f2f7fcf_868742.png" width = "130" height = "130" /> </a>
+<img src="https://foruda.gitee.com/images/1696254998043055555/67afe17a_4817562.png" width = "130" height = "130" />
+<br>
 <a href='https://www.zjjcl.cn/'><img src="https://ajreport.beliefteam.cn/file/download/8df07663-60c9-4e32-a0f2-0ea7d5c46ff9" width = "130" height = "50" /> </a>
 <a href='http://www.jiuyinkj.com/'><img src="https://ajreport.beliefteam.cn/file/download/5889f0e6-ba08-4990-ac89-eabfbb8af8bd" width = "130" height = "50" /> </a>
 <a href='http://www.yourongyun.cn/'><img src="https://ajreport.beliefteam.cn/file/download/90e15ed9-5594-4c14-b318-72aeb6816fb9" width = "130" height = "50" /> </a>
 <a href='https://www.wenkai.net/'><img src="https://ajreport.beliefteam.cn/file/download/ec788c55-bffd-4809-ae3c-0ce2cbd1a9d0" width = "130" height = "50" /> </a>
-<a href='http://www.sungcor.com/'><img src="https://ajreport.beliefteam.cn/file/download/0514a4a6-787b-4e25-be94-03ff94309553" width = "130" height = "50" /> </a> <br>
+<a href='http://www.sungcor.com/'><img src="https://ajreport.beliefteam.cn/file/download/0514a4a6-787b-4e25-be94-03ff94309553" width = "130" height = "50" /> </a> 
+<br>
 <a href='http://www.jtit.com.cn/'><img src="https://ajreport.beliefteam.cn/file/download/1dc47a36-a515-4775-af44-262225b3662b" width = "130" height = "50" /> </a>
 <img src="https://foruda.gitee.com/images/1674127216326288249/5a251727_10057706.png" width = "130" height = "50" />
 <img src="https://foruda.gitee.com/images/1691410310696414681/4d929a1f_9924966.png" width = "130" height = "50" />
+<img src="https://foruda.gitee.com/images/1699350359035432620/d6f9fe27_12173106.jpeg" width = "130" height = "50" />
+<br>
+<img src="https://ajreport.beliefteam.cn/file/download/38efc241-02db-404e-a181-e5f7632ff2f6" width = "130" height = "130" />

+ 1 - 1
doc/docs/guide/charts.md

@@ -255,7 +255,7 @@
 
 **如有问题,请提交 [Issue](https://gitee.com/anji-plus/report/issues) <br>**
 
-## 中国地图
+## 地图
 
 ### 路线地图
 

+ 2 - 2
doc/docs/guide/dataset.md

@@ -154,7 +154,7 @@ function dataTransform(data) {
 
 写法就是就URL链接后面拼接参数,唯一要注意的就是**参数名**要和数据集配置的**查询参数名**一致,多个参数则用 & 号。
 
-例如:原始的大屏链接
+例如:原始的大屏链接 <br>
 https://xxx.xxx.xxx/index.html#/bigscreen/viewer?reportCode=testForm
-假设大屏里面部分数据集查询参数名是 startTime 
+假设大屏里面部分数据集查询参数名是 startTime <br>
 https://xxx.xxx.xxx/index.html#/bigscreen/viewer?reportCode=testForm&startTime=2023-05-05

+ 118 - 59
doc/docs/guide/question.md

@@ -12,7 +12,7 @@
 
 <br>
 
-## 版本问题
+## 版本Q&A
 
 [开发环境参考](https://ajreport.beliefteam.cn/report-doc/guide/quicklyDevelop.html)
 
@@ -24,107 +24,166 @@
 
 <br>
 
-## 访问相关
+## 编译Q&A
 
-- 浏览器兼容性  <br>
-  当前未对部分浏览器做兼容性适配,推荐使用谷歌浏览器进行访问。<br>
-  已知:IE白屏、部分版本的火狐浏览器拖动组件出现跳转新页面及无法返回的情况 <br>
-
-<br>
-
-- 部署完进入系统,点击预览大屏,大屏提示:“执行sql失败“ <br>
-  ![img](../picture/qusetion/img_3.png) <br>
-  请先重置mysql数据源,将mysql数据源的账号密码修改为你当前系统的账号密码。<br>
-
-<br>
+- 前端npm install失败
 
-- 页面提示“404” <br>
-  1、确保访问地址无误,根据部署方式的不同 9095/9528 端口皆可以进入项目,如果一个不行试另一个端口 <br>
-  2、确定前端(端口号9528)是否启动 <br>
-  3、确定后端(端口号9095)是否启动 <br>
-  4、如果你是前后端分离部署,看看你前端config配置文件中的BASE_API有没有改成你后端的IP端口 <br>
-  5、使用nginx转发遇到问题也是同上 <br>
+  1、使用node -v检查你的node.js版本,不要使用Node.js16及以上版本。<br>
+  2、使用npm get registry查看npm镜像源,将npm镜像设置为淘宝镜像源(百度查具体步骤)。<br>
+  3、使用cnpm install命令替换npm install命令进行编译。<br>
 
 <br>
 
-## 前端npm install失败
-
-1、使用node -v检查你的node.js版本,不要使用Node.js16及以上版本。<br>
-2、使用npm get registry查看npm镜像源,将npm镜像设置为淘宝镜像源(百度查具体步骤)。<br>
-3、使用cnpm install命令替换npm install命令进行编译。<br>
-如果以上3步皆无法解决npm编译问题,请直接使用**发行版**。<br>
-
-## 执行源码编译脚本(build.sh)报错
-
-- 提示:“*** report-ui/dist/* *** No such file or directory” <br>
+- 执行源码编译脚本(build.sh)提示:“*** report-ui/dist/* *** No such file or directory” <br>
   前端编译失败。<br>
-  大部分原因是Node.js版本过高(高于V14),导致前端编译失败(npm install失败),可参考上面**前端npm install失败**进行解决。 <br>
+
+  大部分原因是Node.js版本过高(高于V14),导致前端编译失败(npm install失败)。 <br>
   另一部分是Nodejs在编译执行初始化时会去下载一些依赖,如果依赖下载不下来,也会导致失败。<br>
 
 <br>
 
-- 提示:“report-core/target/aj-report-*.zip *** No such file or directory” <br>
+- 执行源码编译脚本(build.sh)提示:“report-core/target/aj-report-*.zip *** No such file or directory” <br>
   后端编译失败。<br>
+
   可能原因有:Maven版本过低/过高,导致后端编译失败。可尝试重新执行编译脚本 <br>
 
 <br>
 
 - 使用eclipse进行源码编译时失败 <br>
+
   失败的提示有很多,这里建议换成IDEA  <br>
 
 <br>
 
 - 使用IDEA进行源码编译时提示:“*** openjdk-***” <br>
-  请使用jdk1.8
+
+  请使用jdk1.8 <br>
+
+<br>
+
+## 启动Q&A
+
+- 双击启动start.bat,提示:“xxx 不是内部或外部命令,也不是可运行的程序 xxx” <br>
+
+  1、不要将文件放到一个带有空格的目录下 <br>
+  2、如果文件放在C盘,那么请注意权限 <br>
 
 <br>
 
-## 启动服务相关
+- 日志提示“xxx The driver has not received any packets from the server” <br>
+  驱动缺失或者对应数据库连接不上<br>
 
-- 提示“xxx The driver has not received any packets from the server” <br>
-  连不上mysql。<br>
   1、确保软件打包正常 <br>
   2、mysql版本不兼容,详细看上面关于版本兼容性 <br>
   3、bootstrap.yml中配置的mysql地址ip不对 <br>
+  4、如果通过IDEA启动后端的话,几个bootstrap.yml配置文件的内容都要修改 <br>
 
 <br>
 
-- flyway执行sql相关错误 <br>
-  错误提示:**Error creating bean with name 'flywayInitializer' defined in class XXX migration to version V1.0.XXX.sql
-  failed** <br>
-  解析:flyway在执行某个版本里面包含的sql时报错了 <br>
+- flyway相关错误
 
-  可能原因:<br>
-  1、mysql版本问题,在不同版本的mysql中,部分语法可能存在异同 <br>
-  2、mysql配置问题 <br>
+错误提示:**Error creating bean with name 'flywayInitializer' defined in class XXX migration to version V1.0.XXX.sql
+failed** <br>
+解析:flyway在执行某个版本里面包含的sql时报错了 <br>
 
-  解决方案:<br>
-  一、禁用flyway,手动执行已有的各版本sql文件 <br>
-  1、在bootstrap.yml配置文件中找到flyway配置项,如图示 <br>
-  ![img6.png](../picture/qusetion/img_6.png) <br>
-  2、将report-core/src/main/resources/db.migration目录下所有的sql文件都执行一次,遇到报错,手动修改sql文件。<br>
-  3、sql文件中,只有** aj_report **数据库相关的sql是必须的依赖,在确保和aj_report数据库相关sql都执行后在启动服务。<br>
-
-  二、保持flyway开启状态,手动执行报错的那个版本sql文件 <br>
-  1、在report-core/src/main/resources/db.migration目录下找到报错的那个版本sql <br>
-  2、根据报错提示找到sql文件中具体报错的那一段sql,或者和数据库已有的数据对比,找到没有执行成功的那部分sql <br>
-  3、手动执行flyway没执行成功的那部分,根据提示,对sql进行修改调整 <br>
-  4、执行完毕后,在aj_report数据库下flyway_schema_history表中找到报错对应的sql文件版本,将对应的success改完1 <br>
-  ![img7.png](../picture/qusetion/img_7.png) <br>
+可能原因:<br>
+1、mysql版本问题,在不同版本的mysql中,部分语法可能存在异同 <br>
+2、mysql配置问题 <br>
+
+解决方案:<br>
+一、禁用flyway,手动执行已有的各版本sql文件 <br>
+1、在bootstrap.yml配置文件中找到flyway配置项,如图示 <br>
+![img6.png](../picture/qusetion/img_6.png) <br>
+2、将report-core/src/main/resources/db.migration目录下所有的sql文件都执行一次,遇到报错,手动修改sql文件。<br>
+3、sql文件中,只有** aj_report **数据库相关的sql是必须的依赖,在确保和aj_report数据库相关sql都执行后在启动服务。<br>
+
+二、保持flyway开启状态,手动执行报错的那个版本sql文件 <br>
+1、在report-core/src/main/resources/db.migration目录下找到报错的那个版本sql <br>
+2、根据报错提示找到sql文件中具体报错的那一段sql,或者和数据库已有的数据对比,找到没有执行成功的那部分sql <br>
+3、手动执行flyway没执行成功的那部分,根据提示,对sql进行修改调整 <br>
+4、执行完毕后,在aj_report数据库下flyway_schema_history表中找到报错对应的sql文件版本,将对应的success改完1 <br>
+![img7.png](../picture/qusetion/img_7.png) <br>
+
+## 访问Q&A
+
+- 浏览器兼容性  <br>
+
+  当前未对部分浏览器做兼容性适配,推荐使用谷歌浏览器进行访问。<br>
+  已知:IE白屏、部分版本的火狐浏览器拖动组件出现跳转新页面及无法返回的情况 <br>
+
+<br>
+
+- 部署完进入系统,点击预览大屏,大屏提示:“执行sql失败“ <br>
+
+  ![img](../picture/qusetion/img_3.png) <br>
+  根据图示,将mysql数据源的账号密码修改为你当前系统的账号密码。<br>
+
+<br>
+
+- 页面提示“404” <br>
+
+  1、确保访问地址无误,根据部署方式的不同 9095/9528 端口皆可以进入项目,如果一个不行试另一个端口 <br>
+  2、确定前端(端口号9528)是否启动 <br>
+  3、确定后端(端口号9095)是否启动 <br>
+  4、如果你是前后端分离部署,看看你前端config配置文件中的BASE_API有没有改成你后端的IP端口 <br>
+  5、使用nginx转发遇到问题也是同上 <br>
 
 <br>
 
-## 数据集相关
+## 数据集Q&A
+
+## 大屏图表组件Q&A
 
-## 大屏图表组件相关
+- 访问大屏,发现图表X轴、Y轴等显示不出来,但数值、柱子、折线等又能显示 <br>
 
-- 访问大屏,发现图表X轴、Y轴等显示不出来,但数值、柱子、折线又能显示 <br>
-  问题原因:每个图表,比如X轴、Y轴颜色默认就是白色,当背景色也设置为白色时,就无法显示,其他同理。<br>
+  原因:每个图表,比如X轴、Y轴颜色默认就是白色,当背景色也设置为白色时,就无法显示,其他同理。<br>
 
 <br>
 
+## 1.2升级V1.3.0
 
+V1.3.0为多张图表新增了配置项,有部分配置项直接和图表渲染相关联,当旧版本升级至此版本后会有部分图表不能正常显示,可参考以下内容进行调整。<br>
+以下方式本质上都是重新载入新图表的配置,对于没提到的图表也可按照相同的方式尝试处理。<br>
+如果按以下等方式对图表进行编辑仍不能正常显示图表,建议删了旧图表从新配置。<br>
 
+- X轴,Y轴不显示-柱体,折线图等含有Y轴配置的的图表 <br>
+  ![img8](../picture/qusetion/img_8.png) <br>
+  解决方案:<br>
+  打开Y轴配置项,左Y轴,右Y轴都可以,按图切换“显示”按钮,直到图表Y轴显示,X轴同理。<br>
+  ![img9](../picture/qusetion/img_9.png)
+
+  <br>
+
+- 柱状图柱子不显示,或整个图表空白 <br>
+  ![img10](../picture/qusetion/img_10.png) <br>
+  解决方案:<br>
+  打开柱体设置,找到“间距”,来回拖动,默认间距值:10。<br>
+  ![img11](../picture/qusetion/img_11.png)
+
+  <br>
+
+- 饼图图不显示 <br>
+  如图示,整个图表空白。<br>
+  ![img12](../picture/qusetion/img_12.png) <br>
+  解决方案:<br>
+  打开饼图设置,拖动"内半径"或者"外半径"。<br>
+  ![img13](../picture/qusetion/img_13.png)
 
+  <br>
+
+- 堆叠图图不显示 <br>
+  解决方案:<br>
+  选择堆叠样式,进行切换. <br>
+  ![img14](../picture/qusetion/img_14.png)
+
+  <br>
+
+- 地图图不显示 <br>
+  解决方案:<br>
+  打开地图设置,切换文字显示。<br>
+  ![img15](../picture/qusetion/img_15.png)
+
+  <br>
 
+  如果你的图表配了动态数据,在尝试了上面这些配置修改后依旧没显示图表,手动切到动态数据,点击‘刷新’。<br>
 

+ 38 - 0
doc/docs/guide/releases/1.3.0.md

@@ -0,0 +1,38 @@
+## 注意事项
+
+- 之前版本更新至本版本时,可能会遇到图表不显示静态、动态数据,需对该图表重新配置;如果已对旧版本进行二次开发,请谨慎更新。<br>
+  跨版本更新可查对应版本的[releases](https://gitee.com/anji-plus/report/releases)。<br>
+
+## 新增
+
+1、增加xAxis数据自动换行开关,默认不换行 -V1.2.1 <br>
+2、增加yAxis轴最大值配置显示 <br>
+3、大屏-新增柱状图-堆叠图-占比多显 <br>
+4、大屏-增加整个页面定时刷新功能(默认不刷新,页面刷新会重新请求数据) <br>
+5、大屏-地图组件,支持配置项切换省市区 <br>
+6、大屏-图表配置项-字体相关-可选echarts的几种字体 <br>
+7、大屏-表单-下拉框默认提示语可修改 <br>
+
+## 优化
+
+1、大屏-表格组件单元格内容超长自动换行显示(数据中出现部分英文字符将会导致无法换行,例:,;|等) <br>
+2、注销登陆优化-现在同一浏览器登陆系统和打开分享链接,系统登陆失效也不会导致分享链接失效了 <br>
+3、大屏-柱状图/折线图提示语/数值设定优化 <br>
+4、大屏-柱状图-柱体间距可调整(柱体设置) <br>
+5、大屏-饼图、百分比图、漏斗图等系列图表优化 <br>
+
+## 修复
+
+1、修复柱状图-竖展示功能显示异常 -V1.2.1 <br>
+
+## 其他
+
+1、文档更新 <br>
+
+## 示例数据
+
+- 从1.0版本调整了底层sql,具体位置是:report-core/src/main/resource/db.migration,
+  删除了过往所有的sql,现在此目录下sql仅包含aj_report基础信息库的相关sql,sql文件的命名也会和版本号保持一致,
+  提供的示例数据(aj_report_init数据库的sql),aj_report_init_example.sql 文件放置在 doc/example目录下。
+
+- 如果需要将之前版本的示例数据删除,delete_aj_report_init_example.sql 文件放置在 doc/example目录下。

BIN
doc/docs/picture/qusetion/img_10.png


BIN
doc/docs/picture/qusetion/img_11.png


BIN
doc/docs/picture/qusetion/img_12.png


BIN
doc/docs/picture/qusetion/img_13.png


BIN
doc/docs/picture/qusetion/img_14.png


BIN
doc/docs/picture/qusetion/img_15.png


BIN
doc/docs/picture/qusetion/img_8.png


BIN
doc/docs/picture/qusetion/img_9.png


+ 1 - 1
report-core/pom.xml

@@ -14,7 +14,7 @@
 
     <groupId>com.anji-plus</groupId>
     <artifactId>aj-report</artifactId>
-    <version>1.2.1.RELEASE</version>
+    <version>1.3.0.RELEASE</version>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/base/HealthController.java

@@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 /**
  * @desc 用户管理 controller
- * @author 木子李·De <lide1202@hotmail.com>
+ * @author Devli
  * @date 2019-02-17 08:50:11.902
  **/
 @RestController

+ 23 - 19
report-core/src/main/java/com/anjiplus/template/gaea/business/filter/TokenFilter.java

@@ -105,34 +105,38 @@ public class TokenFilter implements Filter {
         String token = request.getHeader("Authorization");
         //针对大屏分享,优先处理
         String shareToken = request.getHeader("Share-Token");
-        if (StringUtils.isNotBlank(shareToken) && StringUtils.isBlank(token)) {
-            //需要处理
-            //  /reportDashboard/getData
-            //  /reportDashboard/{reportCode}
-            //  /reportExcel/preview
-            List<String> reportCodeList = JwtUtil.getReportCodeList(shareToken);
-            if (!uri.endsWith("/reportDashboard/getData") && !uri.endsWith("/reportExcel/preview") && reportCodeList.stream().noneMatch(uri::contains)) {
-                ResponseBean responseBean = ResponseBean.builder().code("50014")
-                        .message("分享链接已过期").build();
-                response.getWriter().print(JSONObject.toJSONString(responseBean));
-                return;
-            }
-            filterChain.doFilter(request, response);
-            return;
-        }
 
-
-
-        if (StringUtils.isBlank(token)) {
+        if (StringUtils.isBlank(token) && StringUtils.isBlank(shareToken)) {
             error(response);
             return;
         }
 
         // 判断token是否过期
-        String loginName = jwtBean.getUsername(token);
+        String loginName;
+        try {
+            loginName = jwtBean.getUsername(token);
+        } catch (Exception e) {
+            loginName = "";
+        }
         String tokenKey = String.format(BusinessConstant.GAEA_SECURITY_LOGIN_TOKEN, loginName);
         String userKey = String.format(BusinessConstant.GAEA_SECURITY_LOGIN_USER, loginName);
         if (!cacheHelper.exist(tokenKey)) {
+            //代表token过期
+            if (StringUtils.isNotBlank(shareToken)) {
+                //需要处理
+                //  /reportDashboard/getData
+                //  /reportDashboard/{reportCode}
+                //  /reportExcel/preview
+                List<String> reportCodeList = JwtUtil.getReportCodeList(shareToken);
+                if (!uri.endsWith("/reportDashboard/getData") && !uri.endsWith("/reportExcel/preview") && reportCodeList.stream().noneMatch(uri::contains)) {
+                    ResponseBean responseBean = ResponseBean.builder().code("50014")
+                            .message("分享链接已过期").build();
+                    response.getWriter().print(JSONObject.toJSONString(responseBean));
+                    return;
+                }
+                filterChain.doFilter(request, response);
+                return;
+            }
             error(response);
             return;
         }

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/controller/AccessAuthorityController.java

@@ -26,7 +26,7 @@ import java.util.Map;
 
 /**
 * @desc 权限管理 controller
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 @RestController

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/controller/dto/AccessAuthorityDto.java

@@ -15,7 +15,7 @@ import lombok.Data;
 /**
 *
 * @description 权限管理 dto
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 @Data

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/controller/param/AccessAuthorityParam.java

@@ -12,7 +12,7 @@ import java.util.Date;
 
 /**
 * @desc AccessAuthority 权限管理查询输入类
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 @Data

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/dao/AccessAuthorityMapper.java

@@ -8,7 +8,7 @@ import java.util.List;
 
 /**
 * AccessAuthority Mapper
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 @Mapper

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/dao/entity/AccessAuthority.java

@@ -9,7 +9,7 @@ import javax.validation.constraints.*;
 import java.util.Date;
 /**
 * @description 权限管理 entity
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 @TableName(keepGlobalPrefix=true, value="access_authority")

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/service/AccessAuthorityService.java

@@ -10,7 +10,7 @@ import java.util.List;
 
 /**
 * @desc AccessAuthority 权限管理服务接口
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 public interface AccessAuthorityService extends GaeaBaseService<AccessAuthorityParam, AccessAuthority> {

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessauthority/service/impl/AccessAuthorityServiceImpl.java

@@ -25,7 +25,7 @@ import java.util.stream.Collectors;
 
 /**
 * @desc AccessAuthority 权限管理服务实现
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:10.009
 **/
 @Service

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/controller/AccessRoleController.java

@@ -23,7 +23,7 @@ import java.util.Map;
 
 /**
 * @desc 角色管理 controller
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @RestController

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/controller/dto/AccessRoleDto.java

@@ -16,7 +16,7 @@ import lombok.Data;
 /**
 *
 * @description 角色管理 dto
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @Data

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/controller/param/AccessRoleParam.java

@@ -12,7 +12,7 @@ import java.util.Date;
 
 /**
 * @desc AccessRole 角色管理查询输入类
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @Data

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/AccessRoleAuthorityMapper.java

@@ -6,7 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
 * AccessRoleAuthority Mapper
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @Mapper

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/AccessRoleMapper.java

@@ -12,7 +12,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 /**
 * AccessRole Mapper
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @Mapper

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/entity/AccessRole.java

@@ -8,7 +8,7 @@ import javax.validation.constraints.*;
 import java.util.Date;
 /**
 * @description 角色管理 entity
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @TableName(keepGlobalPrefix=true, value="access_role")

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/dao/entity/AccessRoleAuthority.java

@@ -11,7 +11,7 @@ import java.util.Date;
 
 /**
  * @description 角色--菜单--按钮关联关系 entity
- * @author 木子李·De <lide1202@hotmail.com>
+ * @author Devli
  * @date 2019-02-17 08:50:14.136
  **/
 @TableName(keepGlobalPrefix=true, value="access_role_authority")

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/service/AccessRoleService.java

@@ -13,7 +13,7 @@ import java.util.Map;
 
 /**
 * @desc AccessRole 角色管理服务接口
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 public interface AccessRoleService extends GaeaBaseService<AccessRoleParam, AccessRole> {

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessrole/service/impl/AccessRoleServiceImpl.java

@@ -25,7 +25,7 @@ import java.util.stream.Collectors;
 
 /**
 * @desc AccessRole 角色管理服务实现
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:14.136
 **/
 @Service

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/AccessUserController.java

@@ -26,7 +26,7 @@ import java.util.Map;
 
 /**
 * @desc 用户管理 controller
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @RestController

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/dto/AccessUserDto.java

@@ -16,7 +16,7 @@ import java.util.List;
 /**
 *
 * @description 用户管理 dto
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @Data

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/controller/param/AccessUserParam.java

@@ -12,7 +12,7 @@ import java.util.Date;
 
 /**
 * @desc AccessUser 用户管理查询输入类
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @Data

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserMapper.java

@@ -12,7 +12,7 @@ import org.apache.ibatis.annotations.Param;
 import java.util.List;
 /**
 * AccessUser Mapper
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @Mapper

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/AccessUserRoleMapper.java

@@ -6,7 +6,7 @@ import org.apache.ibatis.annotations.Mapper;
 
 /**
 * AccessUser Mapper
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @Mapper

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/entity/AccessUser.java

@@ -8,7 +8,7 @@ import javax.validation.constraints.*;
 import java.util.Date;
 /**
 * @description 用户管理 entity
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @TableName(keepGlobalPrefix=true, value="access_user")

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/dao/entity/AccessUserRole.java

@@ -10,7 +10,7 @@ import java.util.Date;
 
 /**
 * @description 用户--角色关联关系 entity
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @TableName(keepGlobalPrefix=true, value="access_user_role")

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/AccessUserService.java

@@ -12,7 +12,7 @@ import java.util.Map;
 
 /**
 * @desc AccessUser 用户管理服务接口
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 public interface AccessUserService extends GaeaBaseService<AccessUserParam, AccessUser> {

+ 1 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/accessuser/service/impl/AccessUserServiceImpl.java

@@ -39,7 +39,7 @@ import java.util.stream.Collectors;
 
 /**
 * @desc AccessUser 用户管理服务实现
-* @author 木子李·De <lide1202@hotmail.com>
+* @author Devli
 * @date 2019-02-17 08:50:11.902
 **/
 @Service

+ 2 - 1
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/dashboard/service/impl/ReportDashboardServiceImpl.java

@@ -152,6 +152,7 @@ public class ReportDashboardServiceImpl implements ReportDashboardService, Initi
         dashboard.setReportCode(reportCode);
         if (null == reportDashboard) {
             //新增
+            dashboard.setId(null);
             this.insert(dashboard);
         } else {
             //更新
@@ -181,7 +182,7 @@ public class ReportDashboardServiceImpl implements ReportDashboardService, Initi
             reportDashboardWidget.setEnableFlag(1);
             reportDashboardWidget.setDeleteFlag(0);
             reportDashboardWidget.setSort((long) (i + 1));
-
+            reportDashboardWidget.setId(null);
             //兼容底层,不采用批量插入
             reportDashboardWidgetService.insert(reportDashboardWidget);
 

+ 1 - 0
report-core/src/main/java/com/anjiplus/template/gaea/business/modules/report/service/impl/ReportServiceImpl.java

@@ -165,6 +165,7 @@ public class ReportServiceImpl implements ReportService {
         GaeaBeanUtils.copyAndFormatter(report, copyReport);
         copyReport.setReportCode(dto.getReportCode());
         copyReport.setReportName(dto.getReportName());
+        copyReport.setId(null);
         return copyReport;
     }
 

+ 8 - 0
report-core/src/main/resources/db/migration/V1.3.0__update.sql

@@ -0,0 +1,8 @@
+-- 增加堆叠图占比多值显示解析属性
+INSERT INTO `aj_report`.`gaea_dict`(`dict_name`, `dict_code`, `remark`, `create_by`, `create_time`, `update_by`, `update_time`, `version`) VALUES ('堆叠多值显示属性', 'STACK_MORESHOW_PROPERTIES', '堆叠多值属性', 'admin', '2021-04-29 10:28:15', 'admin', '2021-06-23 10:47:20', 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 ('STACK_MORESHOW_PROPERTIES', 'x轴字段', 'xAxis', NULL, 1, 'zh', NULL, 1, 'admin', '2021-08-20 10:31:51', 'admin', '2021-08-20 10:31:51', 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 ('STACK_MORESHOW_PROPERTIES', 'y轴字段', 'yAxis', NULL, 1, 'zh', NULL, 6, 'admin', '2021-08-20 10:32:52', 'admin', '2021-08-20 10:32:52', 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 ('STACK_MORESHOW_PROPERTIES', '柱状', 'bar', NULL, 1, 'zh', NULL, 7, 'admin', '2021-08-20 10:33:02', 'admin', '2021-08-20 10:33:02', 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 ('STACK_MORESHOW_PROPERTIES', '显示值1', 'display1', NULL, 1, 'zh', NULL, 8, 'admin', '2021-08-20 10:33:11', 'admin', '2021-08-20 10:33:11', 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 ('STACK_MORESHOW_PROPERTIES', '显示值2', 'display2', NULL, 1, 'zh', NULL, 8, 'admin', '2021-08-20 10:33:11', 'admin', '2021-08-20 10:33:11', 1);

+ 2 - 2
report-ui/config/dev.env.js

@@ -4,6 +4,6 @@ const prodEnv = require('./prod.env')
 
 module.exports = merge(prodEnv, {
   NODE_ENV: '"development"',
-  // BASE_API: '"http://127.0.0.1:9095"'
-  BASE_API: '"http://10.108.26.197:9095"'
+  BASE_API: '"http://127.0.0.1:9095"'
+  //BASE_API: '"http://10.108.26.197:9095"'
 })

+ 1 - 0
report-ui/src/App.vue

@@ -6,6 +6,7 @@
 
 <script>
 import "@/assets/iconfont/iconfont.css";
+import "@/assets/iconfont2/iconfont.css";
 import { initDictToLocalstorage } from "@/api/dict-data";
 export default {
   name: "App",

+ 539 - 0
report-ui/src/assets/iconfont2/demo.css

@@ -0,0 +1,539 @@
+/* Logo 字体 */
+@font-face {
+  font-family: "iconfont logo";
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
+  src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
+    url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
+}
+
+.logo {
+  font-family: "iconfont logo";
+  font-size: 160px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+/* tabs */
+.nav-tabs {
+  position: relative;
+}
+
+.nav-tabs .nav-more {
+  position: absolute;
+  right: 0;
+  bottom: 0;
+  height: 42px;
+  line-height: 42px;
+  color: #666;
+}
+
+#tabs {
+  border-bottom: 1px solid #eee;
+}
+
+#tabs li {
+  cursor: pointer;
+  width: 100px;
+  height: 40px;
+  line-height: 40px;
+  text-align: center;
+  font-size: 16px;
+  border-bottom: 2px solid transparent;
+  position: relative;
+  z-index: 1;
+  margin-bottom: -1px;
+  color: #666;
+}
+
+
+#tabs .active {
+  border-bottom-color: #f00;
+  color: #222;
+}
+
+.tab-container .content {
+  display: none;
+}
+
+/* 页面布局 */
+.main {
+  padding: 30px 100px;
+  width: 960px;
+  margin: 0 auto;
+}
+
+.main .logo {
+  color: #333;
+  text-align: left;
+  margin-bottom: 30px;
+  line-height: 1;
+  height: 110px;
+  margin-top: -50px;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.main .logo a {
+  font-size: 160px;
+  color: #333;
+}
+
+.helps {
+  margin-top: 40px;
+}
+
+.helps pre {
+  padding: 20px;
+  margin: 10px 0;
+  border: solid 1px #e7e1cd;
+  background-color: #fffdef;
+  overflow: auto;
+}
+
+.icon_lists {
+  width: 100% !important;
+  overflow: hidden;
+  *zoom: 1;
+}
+
+.icon_lists li {
+  width: 100px;
+  margin-bottom: 10px;
+  margin-right: 20px;
+  text-align: center;
+  list-style: none !important;
+  cursor: default;
+}
+
+.icon_lists li .code-name {
+  line-height: 1.2;
+}
+
+.icon_lists .icon {
+  display: block;
+  height: 100px;
+  line-height: 100px;
+  font-size: 42px;
+  margin: 10px auto;
+  color: #333;
+  -webkit-transition: font-size 0.25s linear, width 0.25s linear;
+  -moz-transition: font-size 0.25s linear, width 0.25s linear;
+  transition: font-size 0.25s linear, width 0.25s linear;
+}
+
+.icon_lists .icon:hover {
+  font-size: 100px;
+}
+
+.icon_lists .svg-icon {
+  /* 通过设置 font-size 来改变图标大小 */
+  width: 1em;
+  /* 图标和文字相邻时,垂直对齐 */
+  vertical-align: -0.15em;
+  /* 通过设置 color 来改变 SVG 的颜色/fill */
+  fill: currentColor;
+  /* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
+      normalize.css 中也包含这行 */
+  overflow: hidden;
+}
+
+.icon_lists li .name,
+.icon_lists li .code-name {
+  color: #666;
+}
+
+/* markdown 样式 */
+.markdown {
+  color: #666;
+  font-size: 14px;
+  line-height: 1.8;
+}
+
+.highlight {
+  line-height: 1.5;
+}
+
+.markdown img {
+  vertical-align: middle;
+  max-width: 100%;
+}
+
+.markdown h1 {
+  color: #404040;
+  font-weight: 500;
+  line-height: 40px;
+  margin-bottom: 24px;
+}
+
+.markdown h2,
+.markdown h3,
+.markdown h4,
+.markdown h5,
+.markdown h6 {
+  color: #404040;
+  margin: 1.6em 0 0.6em 0;
+  font-weight: 500;
+  clear: both;
+}
+
+.markdown h1 {
+  font-size: 28px;
+}
+
+.markdown h2 {
+  font-size: 22px;
+}
+
+.markdown h3 {
+  font-size: 16px;
+}
+
+.markdown h4 {
+  font-size: 14px;
+}
+
+.markdown h5 {
+  font-size: 12px;
+}
+
+.markdown h6 {
+  font-size: 12px;
+}
+
+.markdown hr {
+  height: 1px;
+  border: 0;
+  background: #e9e9e9;
+  margin: 16px 0;
+  clear: both;
+}
+
+.markdown p {
+  margin: 1em 0;
+}
+
+.markdown>p,
+.markdown>blockquote,
+.markdown>.highlight,
+.markdown>ol,
+.markdown>ul {
+  width: 80%;
+}
+
+.markdown ul>li {
+  list-style: circle;
+}
+
+.markdown>ul li,
+.markdown blockquote ul>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown>ul li p,
+.markdown>ol li p {
+  margin: 0.6em 0;
+}
+
+.markdown ol>li {
+  list-style: decimal;
+}
+
+.markdown>ol li,
+.markdown blockquote ol>li {
+  margin-left: 20px;
+  padding-left: 4px;
+}
+
+.markdown code {
+  margin: 0 3px;
+  padding: 0 5px;
+  background: #eee;
+  border-radius: 3px;
+}
+
+.markdown strong,
+.markdown b {
+  font-weight: 600;
+}
+
+.markdown>table {
+  border-collapse: collapse;
+  border-spacing: 0px;
+  empty-cells: show;
+  border: 1px solid #e9e9e9;
+  width: 95%;
+  margin-bottom: 24px;
+}
+
+.markdown>table th {
+  white-space: nowrap;
+  color: #333;
+  font-weight: 600;
+}
+
+.markdown>table th,
+.markdown>table td {
+  border: 1px solid #e9e9e9;
+  padding: 8px 16px;
+  text-align: left;
+}
+
+.markdown>table th {
+  background: #F7F7F7;
+}
+
+.markdown blockquote {
+  font-size: 90%;
+  color: #999;
+  border-left: 4px solid #e9e9e9;
+  padding-left: 0.8em;
+  margin: 1em 0;
+}
+
+.markdown blockquote p {
+  margin: 0;
+}
+
+.markdown .anchor {
+  opacity: 0;
+  transition: opacity 0.3s ease;
+  margin-left: 8px;
+}
+
+.markdown .waiting {
+  color: #ccc;
+}
+
+.markdown h1:hover .anchor,
+.markdown h2:hover .anchor,
+.markdown h3:hover .anchor,
+.markdown h4:hover .anchor,
+.markdown h5:hover .anchor,
+.markdown h6:hover .anchor {
+  opacity: 1;
+  display: inline-block;
+}
+
+.markdown>br,
+.markdown>p>br {
+  clear: both;
+}
+
+
+.hljs {
+  display: block;
+  background: white;
+  padding: 0.5em;
+  color: #333333;
+  overflow-x: auto;
+}
+
+.hljs-comment,
+.hljs-meta {
+  color: #969896;
+}
+
+.hljs-string,
+.hljs-variable,
+.hljs-template-variable,
+.hljs-strong,
+.hljs-emphasis,
+.hljs-quote {
+  color: #df5000;
+}
+
+.hljs-keyword,
+.hljs-selector-tag,
+.hljs-type {
+  color: #a71d5d;
+}
+
+.hljs-literal,
+.hljs-symbol,
+.hljs-bullet,
+.hljs-attribute {
+  color: #0086b3;
+}
+
+.hljs-section,
+.hljs-name {
+  color: #63a35c;
+}
+
+.hljs-tag {
+  color: #333333;
+}
+
+.hljs-title,
+.hljs-attr,
+.hljs-selector-id,
+.hljs-selector-class,
+.hljs-selector-attr,
+.hljs-selector-pseudo {
+  color: #795da3;
+}
+
+.hljs-addition {
+  color: #55a532;
+  background-color: #eaffea;
+}
+
+.hljs-deletion {
+  color: #bd2c00;
+  background-color: #ffecec;
+}
+
+.hljs-link {
+  text-decoration: underline;
+}
+
+/* 代码高亮 */
+/* PrismJS 1.15.0
+https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
+/**
+ * prism.js default theme for JavaScript, CSS and HTML
+ * Based on dabblet (http://dabblet.com)
+ * @author Lea Verou
+ */
+code[class*="language-"],
+pre[class*="language-"] {
+  color: black;
+  background: none;
+  text-shadow: 0 1px white;
+  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+  text-align: left;
+  white-space: pre;
+  word-spacing: normal;
+  word-break: normal;
+  word-wrap: normal;
+  line-height: 1.5;
+
+  -moz-tab-size: 4;
+  -o-tab-size: 4;
+  tab-size: 4;
+
+  -webkit-hyphens: none;
+  -moz-hyphens: none;
+  -ms-hyphens: none;
+  hyphens: none;
+}
+
+pre[class*="language-"]::-moz-selection,
+pre[class*="language-"] ::-moz-selection,
+code[class*="language-"]::-moz-selection,
+code[class*="language-"] ::-moz-selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+pre[class*="language-"]::selection,
+pre[class*="language-"] ::selection,
+code[class*="language-"]::selection,
+code[class*="language-"] ::selection {
+  text-shadow: none;
+  background: #b3d4fc;
+}
+
+@media print {
+
+  code[class*="language-"],
+  pre[class*="language-"] {
+    text-shadow: none;
+  }
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+  padding: 1em;
+  margin: .5em 0;
+  overflow: auto;
+}
+
+:not(pre)>code[class*="language-"],
+pre[class*="language-"] {
+  background: #f5f2f0;
+}
+
+/* Inline code */
+:not(pre)>code[class*="language-"] {
+  padding: .1em;
+  border-radius: .3em;
+  white-space: normal;
+}
+
+.token.comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+  color: slategray;
+}
+
+.token.punctuation {
+  color: #999;
+}
+
+.namespace {
+  opacity: .7;
+}
+
+.token.property,
+.token.tag,
+.token.boolean,
+.token.number,
+.token.constant,
+.token.symbol,
+.token.deleted {
+  color: #905;
+}
+
+.token.selector,
+.token.attr-name,
+.token.string,
+.token.char,
+.token.builtin,
+.token.inserted {
+  color: #690;
+}
+
+.token.operator,
+.token.entity,
+.token.url,
+.language-css .token.string,
+.style .token.string {
+  color: #9a6e3a;
+  background: hsla(0, 0%, 100%, .5);
+}
+
+.token.atrule,
+.token.attr-value,
+.token.keyword {
+  color: #07a;
+}
+
+.token.function,
+.token.class-name {
+  color: #DD4A68;
+}
+
+.token.regex,
+.token.important,
+.token.variable {
+  color: #e90;
+}
+
+.token.important,
+.token.bold {
+  font-weight: bold;
+}
+
+.token.italic {
+  font-style: italic;
+}
+
+.token.entity {
+  cursor: help;
+}

+ 211 - 0
report-ui/src/assets/iconfont2/demo_index.html

@@ -0,0 +1,211 @@
+<!DOCTYPE html>
+<html>
+<head>
+  <meta charset="utf-8"/>
+  <title>iconfont Demo</title>
+  <link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
+  <link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
+  <link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
+  <link rel="stylesheet" href="demo.css">
+  <link rel="stylesheet" href="iconfont.css">
+  <script src="iconfont.js"></script>
+  <!-- jQuery -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
+  <!-- 代码高亮 -->
+  <script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
+  <style>
+    .main .logo {
+      margin-top: 0;
+      height: auto;
+    }
+
+    .main .logo a {
+      display: flex;
+      align-items: center;
+    }
+
+    .main .logo .sub-title {
+      margin-left: 0.5em;
+      font-size: 22px;
+      color: #fff;
+      background: linear-gradient(-45deg, #3967FF, #B500FE);
+      -webkit-background-clip: text;
+      -webkit-text-fill-color: transparent;
+    }
+  </style>
+</head>
+<body>
+  <div class="main">
+    <h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
+      <img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
+      
+    </a></h1>
+    <div class="nav-tabs">
+      <ul id="tabs" class="dib-box">
+        <li class="dib active"><span>Unicode</span></li>
+        <li class="dib"><span>Font class</span></li>
+        <li class="dib"><span>Symbol</span></li>
+      </ul>
+      
+      <a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=4369261" target="_blank" class="nav-more">查看项目</a>
+      
+    </div>
+    <div class="tab-container">
+      <div class="content unicode" style="display: block;">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+              <span class="icon iconfont">&#xe627;</span>
+                <div class="name">地图</div>
+                <div class="code-name">&amp;#xe627;</div>
+              </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="unicode-">Unicode 引用</h2>
+          <hr>
+
+          <p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
+          <ul>
+            <li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
+            <li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
+          </ul>
+          <blockquote>
+            <p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
+          </blockquote>
+          <p>Unicode 使用步骤如下:</p>
+          <h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
+<pre><code class="language-css"
+>@font-face {
+  font-family: 'iconfont';
+  src: url('iconfont.woff2?t=1702540060096') format('woff2'),
+       url('iconfont.woff?t=1702540060096') format('woff'),
+       url('iconfont.ttf?t=1702540060096') format('truetype');
+}
+</code></pre>
+          <h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
+<pre><code class="language-css"
+>.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
+<pre>
+<code class="language-html"
+>&lt;span class="iconfont"&gt;&amp;#x33;&lt;/span&gt;
+</code></pre>
+          <blockquote>
+            <p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+          </blockquote>
+          </div>
+      </div>
+      <div class="content font-class">
+        <ul class="icon_lists dib-box">
+          
+          <li class="dib">
+            <span class="icon iconfont icon-ditu1"></span>
+            <div class="name">
+              地图
+            </div>
+            <div class="code-name">.icon-ditu1
+            </div>
+          </li>
+          
+        </ul>
+        <div class="article markdown">
+        <h2 id="font-class-">font-class 引用</h2>
+        <hr>
+
+        <p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
+        <p>与 Unicode 使用方式相比,具有如下特点:</p>
+        <ul>
+          <li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
+          <li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
+        </ul>
+        <p>使用步骤如下:</p>
+        <h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
+<pre><code class="language-html">&lt;link rel="stylesheet" href="./iconfont.css"&gt;
+</code></pre>
+        <h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;span class="iconfont icon-xxx"&gt;&lt;/span&gt;
+</code></pre>
+        <blockquote>
+          <p>"
+            iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
+        </blockquote>
+      </div>
+      </div>
+      <div class="content symbol">
+          <ul class="icon_lists dib-box">
+          
+            <li class="dib">
+                <svg class="icon svg-icon" aria-hidden="true">
+                  <use xlink:href="#icon-ditu1"></use>
+                </svg>
+                <div class="name">地图</div>
+                <div class="code-name">#icon-ditu1</div>
+            </li>
+          
+          </ul>
+          <div class="article markdown">
+          <h2 id="symbol-">Symbol 引用</h2>
+          <hr>
+
+          <p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
+            这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
+          <ul>
+            <li>支持多色图标了,不再受单色限制。</li>
+            <li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
+            <li>兼容性较差,支持 IE9+,及现代浏览器。</li>
+            <li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
+          </ul>
+          <p>使用步骤如下:</p>
+          <h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
+<pre><code class="language-html">&lt;script src="./iconfont.js"&gt;&lt;/script&gt;
+</code></pre>
+          <h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
+<pre><code class="language-html">&lt;style&gt;
+.icon {
+  width: 1em;
+  height: 1em;
+  vertical-align: -0.15em;
+  fill: currentColor;
+  overflow: hidden;
+}
+&lt;/style&gt;
+</code></pre>
+          <h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
+<pre><code class="language-html">&lt;svg class="icon" aria-hidden="true"&gt;
+  &lt;use xlink:href="#icon-xxx"&gt;&lt;/use&gt;
+&lt;/svg&gt;
+</code></pre>
+          </div>
+      </div>
+
+    </div>
+  </div>
+  <script>
+  $(document).ready(function () {
+      $('.tab-container .content:first').show()
+
+      $('#tabs li').click(function (e) {
+        var tabContent = $('.tab-container .content')
+        var index = $(this).index()
+
+        if ($(this).hasClass('active')) {
+          return
+        } else {
+          $('#tabs li').removeClass('active')
+          $(this).addClass('active')
+
+          tabContent.hide().eq(index).fadeIn()
+        }
+      })
+    })
+  </script>
+</body>
+</html>

+ 19 - 0
report-ui/src/assets/iconfont2/iconfont.css

@@ -0,0 +1,19 @@
+@font-face {
+  font-family: "iconfont"; /* Project id 4369261 */
+  src: url('iconfont.woff2?t=1702540060096') format('woff2'),
+       url('iconfont.woff?t=1702540060096') format('woff'),
+       url('iconfont.ttf?t=1702540060096') format('truetype');
+}
+
+.iconfont {
+  font-family: "iconfont" !important;
+  font-size: 16px;
+  font-style: normal;
+  -webkit-font-smoothing: antialiased;
+  -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-ditu1:before {
+  content: "\e627";
+}
+

Разлика између датотеке није приказан због своје велике величине
+ 0 - 0
report-ui/src/assets/iconfont2/iconfont.js


+ 16 - 0
report-ui/src/assets/iconfont2/iconfont.json

@@ -0,0 +1,16 @@
+{
+  "id": "4369261",
+  "name": "report",
+  "font_family": "iconfont",
+  "css_prefix_text": "icon-",
+  "description": "",
+  "glyphs": [
+    {
+      "icon_id": "7463933",
+      "name": "地图",
+      "font_class": "ditu1",
+      "unicode": "e627",
+      "unicode_decimal": 58919
+    }
+  ]
+}

BIN
report-ui/src/assets/iconfont2/iconfont.ttf


BIN
report-ui/src/assets/iconfont2/iconfont.woff


BIN
report-ui/src/assets/iconfont2/iconfont.woff2


+ 7 - 0
report-ui/src/components/AnjiPlus/anji-autocomplete.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-12-13 10:17:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 10:17:24
+ !-->
 <template>
   <el-autocomplete
     v-model.trim="inputValue"

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-cascader.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-12-13 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2022-3-9 10:04:24
+ !-->
 <template>
   <div>
     <el-row>

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-checkbox.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-12-13 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2022-5-4 10:04:24
+ !-->
 <template>
   <el-checkbox-group v-model="selectValue" class="filter-item" @change="change">
     <el-checkbox

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-crud/anji-crud.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 增删改查列表查询组件
+ * @Author: Devli
+ * @Date: 2021-7-17 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-3-9 10:04:24
+ !-->
 <template>
   <div :class="[hasTreeFieldInQueryForm ? 'page-container' : 'app-container']">
     <div v-if="hasTreeFieldInQueryForm" class="left-container">

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-crud/edit-form.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 增删改查列表查询页-新增编辑组件
+ * @Author: Devli
+ * @Date: 2021-7-17 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 10:40:24
+ !-->
 <template>
   <div
     v-if="option['hide'] == null || option['hide'] == false"

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-crud/edit-table.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 增删改查列表查询页-表格行编辑组件
+ * @Author: Devli
+ * @Date: 2021-7-17 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 11:04:24
+ !-->
 <template>
   <div
     v-if="option['hide'] == null || option['hide'] == false"

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-crud/edit.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 增删改查列表查询页-编辑组件
+ * @Author: Devli
+ * @Date: 2021-7-17 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 11:20:24
+ !-->
 <template>
   <el-dialog
     :width="dialogWidth"

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-dialog.vue

@@ -1,3 +1,10 @@
+ <!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-12-13 10:17:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 11:20:24
+ !-->
 <template>
   <el-dialog
     :width="dialogWidth"

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-fourLevel.vue

@@ -1,3 +1,10 @@
+ <!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-12-13 10:17:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 11:20:24
+ !-->
 <template>
   <el-cascader ref="country" v-model="countryValue" size="mini" :props="props" :options="countryOptions" style="width: 100%" clearable @change="handleChange" />
 </template>

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-input.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-12-13 10:17:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 11:20:24
+ !-->
 <template>
   <div class="anji-input">
     <el-input v-model="inputValue" type="number" :placeholder="placeholder" :disabled="disabled" clearable @change="change">

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-select.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 
+ * @Author: Devli
+ * @Date: 2021-7-17 10:42:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2023-1-10 13:04:24
+ !-->
 <!--element下拉列表封装
   使用:
    <hyb-select ref="hybSelect"

+ 5 - 4
report-ui/src/components/AnjiPlus/anji-tree.vue

@@ -1,8 +1,9 @@
 <!--
- * @Author: lide1202@hotmail.com
- * @Date: 2021-5-4 11:04:24 
- * @Last Modified by:   lide1202@hotmail.com
- * @Last Modified time: 2021-5-5 11:04:24 
+ * @Descripttion: 
+ * @Author: Devli
+ * @Date: 2021-7-17 10:45:24 
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2021-12-13 11:04:24 
  !-->
 <template>
   <div>

+ 7 - 0
report-ui/src/components/AnjiPlus/anji-upload.vue

@@ -1,3 +1,10 @@
+ <!--
+ * @Descripttion: 
+ * @Author: qianlishi
+ * @Date: 2021-8-4 10:17:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2022-5-14 11:20:24
+ !-->
 <template>
   <div class="uploadImage">
     <el-upload

+ 7 - 0
report-ui/src/components/configForm.vue

@@ -4,6 +4,13 @@
 * @property placeholder
 * @property style
 */
+ <!--
+ * @Descripttion: 动态表单组件
+ * @Author: Devli
+ * @Date: 2021-2-10 10:17:24
+ * @Last Modified by:   yanzili
+ * @Last Modified time: 2021-6-24 11:20:24
+ !-->
 <template>
 <span>
   <span class="grid-content" v-for="(item, index) in formItemsArr" :key="index" style="">

+ 7 - 0
report-ui/src/components/eachForm.vue

@@ -1,3 +1,10 @@
+ <!--
+ * @Descripttion: 参数-动态表单组件
+ * @Author: Devli
+ * @Date: 2021-2-10 10:17:24
+ * @Last Modified by:   yanzili
+ * @Last Modified time: 2021-6-24 11:20:24
+ !-->
 <template>
   <span>
     <!-- input 输入框-->

+ 48 - 6
report-ui/src/mixins/queryform.js

@@ -98,7 +98,7 @@ export default {
     queryEchartsData(params) {
       const queryParams = this.toEchartsDataQueryParams(params)
       return new Promise(async (resolve) => {
-        const { code, data } = await getData(queryParams);
+        const {code, data} = await getData(queryParams);
         if (code != 200) return
         const analysisData = this.analysisChartsData(params, data);
         resolve(analysisData)
@@ -116,17 +116,17 @@ export default {
     toEchartsDataQueryParams(params) {
       const queryParams = this.deepClone(params)
       const query = this.$route.query
-      if(!this.isIncludePoints(query)) {
-        queryParams.contextData = { ...queryParams.contextData, ...query }
+      if (!this.isIncludePoints(query)) {
+        queryParams.contextData = {...queryParams.contextData, ...query}
       } else {
         Object.keys(query).forEach(item => {
-          if(item.indexOf('.') > -1) {
+          if (item.indexOf('.') > -1) {
             const obj = {}
             const key1 = item.split('.')[0]
             const key2 = item.split('.')[1]
             obj[key2] = query[item]
             if (queryParams.setCode == key1) {
-              const newObj = { ...queryParams.contextData, ...obj }
+              const newObj = {...queryParams.contextData, ...obj}
               queryParams.contextData = newObj
             }
           }
@@ -139,7 +139,7 @@ export default {
     isIncludePoints(query) {
       let isPoints = false
       Object.keys(query).forEach(item => {
-        if(item.indexOf('.') > -1) {
+        if (item.indexOf('.') > -1) {
           isPoints = true
         }
       })
@@ -156,6 +156,7 @@ export default {
       // widget-mapline 中国地图-路线图
       // widget-radar 雷达图
       // widget-select 下拉框
+      // widget-stackMoreShowChart 堆叠多显图
       const chartType = params.chartType
       if (
         chartType == "widget-barchart" ||
@@ -183,6 +184,8 @@ export default {
         return this.selectChartFn(params.chartProperties, data)
       } else if (chartType == "widget-mapv2chart") {
         return this.mapLLChartFn(params.chartProperties, data)
+      } else if (chartType == "widget-stackMoreShowChart") {
+        return this.stackMoreShowFn(params.chartProperties, data);
       } else {
         return data
       }
@@ -389,6 +392,45 @@ export default {
       }
       return analysisData;
     },
+    // 堆叠图多显示
+    stackMoreShowFn(chartProperties, data) {
+      console.log(data)
+      const analysisData = {};
+      //全部字段字典值
+      const types = Object.values(chartProperties)
+      //x轴字段、y轴字段名、数值
+      const xAxisField = Object.keys(chartProperties)[types.indexOf('xAxis')]
+      const yAxisField = Object.keys(chartProperties)[types.indexOf('yAxis')]
+      const bar = Object.keys(chartProperties)[types.indexOf('bar')]
+      // 显示值1、显示值2
+      const display1 = Object.keys(chartProperties)[types.indexOf('display1')]
+      const display2 = Object.keys(chartProperties)[types.indexOf('display2')]
+      const displayName = [display1, display2, bar];
+      const legendName = [];
+      const axisList = Array.from(new Set(data.map((item) => item[xAxisField])))
+      const names = Array.from(new Set(data.map((item) => item[yAxisField])))
+      const dataValue = []
+      for (let i = 0; i < names.length; i++) {
+        const list = []
+        const name = names[i]
+        for (let j = 0; j < axisList.length; j++) {
+          const date = axisList[j]
+          const find = data.find((item) => item[xAxisField] == date && item[yAxisField] == name)
+          if (find) {
+            list.push({data: find[bar], display1: find[display1], display2: find[display2]})
+          } else {
+            list.push({})
+          }
+        }
+        legendName.push(name)
+        dataValue.push({prod: name, list: list})
+      }
+      analysisData['displayName'] = displayName;
+      analysisData['legendName'] = legendName;
+      analysisData['xAxis'] = axisList;
+      analysisData['series'] = dataValue;
+      return analysisData;
+    },
     setUnique(arr) {
       let newArr = [];
       arr.forEach(item => {

+ 6 - 6
report-ui/src/router/index.js

@@ -32,12 +32,12 @@ export const constantRouterMap = [
   },
   {
     path: '/aj/**',
-    component: () => import('@/views/bigScreenReport/aj'),
+    component: () => import('@/views/bigScreenDesigner/share/shareLink'),
     hidden: true
   },
   {
     path: '/el/**',
-    component: () => import('@/views/excelreport/el'),
+    component: () => import('@/views/excelreport/share/shareLink'),
     hidden: true
   },
   {
@@ -160,7 +160,7 @@ export const constantRouterMap = [
       {
         path: 'bigscreen',
         name: 'bigscreen',
-        component: () => import('@/views/bigScreenReport/index'),
+        component: () => import('@/views/bigScreenDesigner/index'),
         meta: {
           title: '大屏报表',
           icon: 'iconchufaqipeizhi-hui',
@@ -182,9 +182,9 @@ export const constantRouterMap = [
         }
       },
       {
-        path: 'reportshare',
-        name: 'reportshare',
-        component: () => import('@/views/reportShare/index'),
+        path: 'shareManage',
+        name: 'shareManage',
+        component: () => import('@/views/shareManage/index'),
         meta: {
           title: '报表分享',
           icon: 'iconfenxiang1',

+ 2 - 2
report-ui/src/store/modules/user.js

@@ -51,7 +51,7 @@ const user = {
           commit('SET_TOKEN', '')
           commit('SET_ACCESSUSER', {})
           delToken()
-          delShareToken()
+//          delShareToken()
           delAccessUser()
           resolve()
         }).catch(error => {
@@ -66,7 +66,7 @@ const user = {
         commit('SET_TOKEN', '')
         commit('SET_ACCESSUSER', {})
         delToken()
-        delShareToken()
+//        delShareToken()
         delAccessUser()
         resolve()
       })

+ 3 - 2
report-ui/src/utils/request.js

@@ -38,8 +38,9 @@ service.interceptors.response.use(
           type: 'warning'
         }
       ).then(() => {
-        sessionStorage.clear()
-        localStorage.clear()
+        // sessionStorage.clear()
+        // localStorage.clear()
+        localStorage.removeItem('AJReportToken')
         window.location.href = "/";
       })
     }

+ 2 - 2
report-ui/src/utils/screenMixins.js

@@ -177,10 +177,10 @@ const mixin = {
       if (!this.widgets || this.widgets.length == 0) {
         return this.$message.error("请添加组件");
       }
-      const { title, width, height, backgroundColor, backgroundImage } = { ...this.dashboard }
+      const { title, width, height, backgroundColor, backgroundImage, refreshSeconds } = { ...this.dashboard }
       const screenData = {
         reportCode: this.reportCode,
-        dashboard: { title, width, height, backgroundColor, backgroundImage },
+        dashboard: { title, width, height, backgroundColor, backgroundImage, refreshSeconds },
         widgets: this.widgets,
       };
       screenData.widgets.forEach((widget) => {

+ 3 - 3
report-ui/src/views/accessAuthority/index.vue

@@ -1,10 +1,10 @@
 <!--
  * @Descripttion: 用户权限--权限管理
  * @version:
- * @Author: qianlishi
- * @Date: 2021-12-11 14:48:27
+ * @Author: Devli
+ * @Date: 2021-7-17 10:46:31
  * @LastEditors: qianlishi
- * @LastEditTime: 2022-03-09 09:22:40
+ * @LastEditTime: 2023-11-23 14:52:17
 -->
 <template>
   <anji-crud ref="listPage" :option="crudOption" />

+ 8 - 0
report-ui/src/views/accessRole/components/RoleAuthority.vue

@@ -1,3 +1,11 @@
+<!--
+ * @Descripttion: 为角色分配权限
+ * @version:
+ * @Author: Devli
+ * @Date: 2021-7-17 10:46:31
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2021-12-13 12:14:58
+-->
 <template>
   <el-dialog
     class="tree_dialog"

+ 3 - 3
report-ui/src/views/accessRole/index.vue

@@ -1,10 +1,10 @@
 <!--
  * @Descripttion: 用户权限--角色管理
  * @version: 
- * @Author: qianlishi
- * @Date: 2021-12-11 14:48:27
+ * @Author: Devli
+ * @Date: 2021-7-17 10:46:27
  * @LastEditors: qianlishi
- * @LastEditTime: 2022-03-09 09:40:01
+ * @LastEditTime: 2022-3-9 10:53:57
 -->
 <template>
   <anji-crud ref="listPage" :option="crudOption">

+ 8 - 0
report-ui/src/views/accessUser/components/UserRole.vue

@@ -1,3 +1,11 @@
+<!--
+ * @Descripttion: 为用户分配角色
+ * @version:
+ * @Author: Devli
+ * @Date: 2021-7-17 10:48:27
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2021-12-13 14:56:58
+-->
 <template>
   <el-dialog
     class="tree_dialog"

+ 2 - 2
report-ui/src/views/accessUser/index.vue

@@ -1,10 +1,10 @@
 <!--
  * @Descripttion: 用户权限--用户管理
  * @version:
- * @Author: qianlishi
+ * @Author: Devli
  * @Date: 2021-12-11 14:48:27
  * @LastEditors: qianlishi
- * @LastEditTime: 2022-03-09 09:40:56
+ * @LastEditTime: 2022-3-9 14:56:10
 -->
 <template>
   <anji-crud ref="listPage" :option="crudOption">

+ 7 - 0
report-ui/src/views/bigscreenDesigner/designer/components/colorPicker.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 报表设计--报表管理
+ * @Author: Devli
+ * @Date: 2021-4-9 14:48:27
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2022-05-17 17:38:44
+-->
 <template>
   <el-input
     clearable

+ 7 - 0
report-ui/src/views/bigscreenDesigner/designer/components/contentMenu.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 组件右键菜单
+ * @Author: qianlishi
+ * @Date: 2021-6-25 14:48:27
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2023-3-6 17:38:44
+-->
 <template>
   <div v-show="visible" class="contentmenu" :style="styleObj">
     <div class="contentmenu__item" @click="deleteLayer">

+ 7 - 0
report-ui/src/views/bigscreenDesigner/designer/components/customColorComponents.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 组件右键菜单
+ * @Author: qianlishi
+ * @Date: 2021-6-25 14:48:27
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2021-12-13 17:38:44
+-->
 <template>
   <div>
     <el-button

+ 4 - 4
report-ui/src/views/bigscreenDesigner/designer/components/dynamicAddRadar.vue

@@ -9,10 +9,10 @@
     >新增</el-button
     >
     <el-table :data="formData" style="width: 100%">
-      <el-table-column prop="name" label="名称" width="100" />
-      <el-table-column prop="key" label="key值" width="100" />
-      <el-table-column prop="max" label="最大值" width="100" />
-      <el-table-column label="操作" width="100">
+      <el-table-column prop="name" label="名称" width="90" />
+      <el-table-column prop="key" label="key值" width="90" />
+      <el-table-column prop="max" label="最大值" width="70" />
+      <el-table-column label="操作" width="90">
         <template slot-scope="scope">
           <div class="button-group">
             <el-button

+ 1 - 1
report-ui/src/views/bigscreenDesigner/designer/components/dynamicAddTable.vue

@@ -12,7 +12,7 @@
       <el-table-column prop="name" label="名称" width="60" />
       <el-table-column prop="key" label="key值" width="70" />
       <el-table-column prop="width" label="宽度" width="50" />
-      <el-table-column label="操作" width="100">
+      <el-table-column label="操作" width="90">
         <template slot-scope="scope">
           <div class="button-group">
             <el-button

+ 9 - 4
report-ui/src/views/bigscreenDesigner/designer/components/dynamicForm.vue

@@ -1,8 +1,9 @@
 <!--
- * @Author: lide1202@hotmail.com
- * @Date: 2021-4-6 11:04:24
- * @Last Modified by:   lide1202@hotmail.com
- * @Last Modified time: 2021-3-13 11:04:24
+ * @Descripttion: 大屏设计器-右区动态表单
+ * @Author: Devli
+ * @Date: 2021-3-13 11:04:24
+ * @Last Modified by:   qianlishi
+ * @Last Modified time: 2022-3-14 14:04:24
  !-->
 <template>
   <div class="collapse-input-style">
@@ -105,6 +106,10 @@
               v-if="item.type == 'el-slider'"
               v-model="formData[item.name]"
               @change="(val) => changed(val, item.name)"
+              :step="item.options==null?1:item.options.step"
+              :min="item.options==null?1:item.options.min"
+              :max="item.options==null?100:item.options.max"
+              :show-stops="item.options==null?false:item.options.showStops"
             />
 
             <el-button

+ 7 - 0
report-ui/src/views/bigscreenDesigner/designer/index.vue

@@ -1,3 +1,10 @@
+<!--
+ * @Descripttion: 大屏报表设计器-主体页面
+ * @Author: Devli
+ * @Date: 2021-3-19 10:23:27
+ * @LastEditors: qianlishi
+ * @LastEditTime: 2023-03-17 17:38:44
+-->
 <template>
   <div class="layout">
     <div

Разлика између датотеке није приказан због своје велике величине
+ 491 - 243
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-compare.js


Разлика између датотеке није приказан због своје велике величине
+ 487 - 251
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-double-yaxis-chart.js


+ 1329 - 0
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-stack-more-show.js

@@ -0,0 +1,1329 @@
+export const widgetBarStackMoreShow = {
+  code: 'widgetBarStackMoreShowChart',
+  type: 'barChart',
+  tabName: '柱状图',
+  label: '堆叠图-占比多显',
+  icon: 'iconbianzu23',
+  options: {
+    // 配置
+    setup: [
+      {
+        type: 'el-input-text',
+        label: '图层名称',
+        name: 'layerName',
+        required: false,
+        placeholder: '',
+        value: '柱状堆叠-占比多显',
+      },
+      {
+        type: 'vue-color',
+        label: '背景颜色',
+        name: 'background',
+        required: false,
+        placeholder: '',
+        value: ''
+      },
+      [
+        {
+          name: '标题设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '标题显示',
+              name: 'isShowTitle',
+              required: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-input-text',
+              label: '标题名',
+              name: 'text',
+              required: false,
+              placeholder: '',
+              value: '',
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'textColor',
+              required: false,
+              placeholder: '',
+              value: '#FFD700'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'textFontSize',
+              required: false,
+              placeholder: '',
+              value: 20
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'textFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'textFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'textFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-input-text',
+              label: '副标题名',
+              name: 'subtext',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'subtextColor',
+              required: false,
+              placeholder: '',
+              value: 'rgba(30, 144, 255, 1)'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'subtextFontSize',
+              required: false,
+              placeholder: '',
+              value: 20
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'subtextFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'subtextFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'subtextFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-select',
+              label: '左右位置',
+              name: 'titleLeft',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'center'
+            },
+            {
+              type: 'el-slider',
+              label: '上下间距',
+              name: 'titleTop',
+              required: false,
+              placeholder: '',
+              value: 5,
+            },
+            {
+              type: 'el-input-number',
+              label: '主副标题间距',
+              name: 'titleItemGap',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+          ],
+        },
+        {
+          name: '柱体设置',
+          list: [
+            {
+              type: 'el-slider',
+              label: '最大宽度',
+              name: 'maxWidth',
+              required: false,
+              placeholder: '',
+              value: 15,
+            },
+            {
+              type: 'el-slider',
+              label: '圆角',
+              name: 'radius',
+              require: false,
+              placeholder: '',
+              value: 5,
+            },
+            {
+              type: 'el-slider',
+              label: '间距',
+              name: 'barGap',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'el-slider',
+              label: '最小高度',
+              name: 'minHeight',
+              require: false,
+              placeholder: '',
+              value: 0,
+            },
+            {
+              type: 'el-select',
+              label: '堆叠样式',
+              name: 'stackStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'leftRight', name: '左右堆叠'},
+                {code: 'upDown', name: '上下堆叠'},
+              ],
+              value: 'leftRight'
+            },
+            {
+              type: 'el-switch',
+              label: '背景显示',
+              name: 'isShowBackground',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'vue-color',
+              label: '背景颜色',
+              name: 'backgroundStyleColor',
+              required: false,
+              placeholder: '',
+              value: 'rgba(180, 180, 180, 0.2)',
+            },
+            {
+              type: 'vue-color',
+              label: '描边颜色',
+              name: 'backgroundStyleBorderColor',
+              required: false,
+              placeholder: '',
+              value: '#000',
+            },
+            {
+              type: 'el-input-number',
+              label: '描边宽度',
+              name: 'backgroundStyleBorderWidth',
+              required: false,
+              placeholder: '',
+              value: 0,
+            },
+            {
+              type: 'el-select',
+              label: '描边类型',
+              name: 'backgroundStyleBorderType',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'solid', name: '实线'},
+                {code: 'dashed', name: '虚线'},
+                {code: 'dotted', name: '斑点'},
+              ],
+              value: 'dashed'
+            },
+            {
+              type: 'el-input-number',
+              label: '阴影模糊',
+              name: 'backgroundStyleShadowBlur',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'vue-color',
+              label: '阴影颜色',
+              name: 'backgroundStyleShadowColor',
+              required: false,
+              placeholder: '',
+              value: 'rgba(0, 0, 0, 0.5)',
+            },
+            {
+              type: 'el-slider',
+              label: '透明度',
+              name: 'backgroundStyleOpacity',
+              require: false,
+              placeholder: '',
+              value: 100,
+            },
+          ],
+        },
+        {
+          name: 'X轴设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: 'X轴显示',
+              name: 'isShowX',
+              required: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-switch',
+              label: '数值显示',
+              name: 'isShowAxisLabelX',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-select',
+              label: '数值位置',
+              name: 'positionX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'top', name: '顶'},
+                {code: 'bottom', name: '底'},
+              ],
+              value: 'bottom'
+            },
+            {
+              type: 'el-input-number',
+              label: '数值距离',
+              name: 'offsetX',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'vue-color',
+              label: '数值颜色',
+              name: 'textColorX',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '数值字号',
+              name: 'textFontSizeX',
+              required: false,
+              placeholder: '',
+              value: 14,
+            },
+            {
+              type: 'el-select',
+              label: '数值粗细',
+              name: 'textFontWeightX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'textFontStyleX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'textFontFamilyX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-switch',
+              label: '数值自动换行',
+              name: 'textRowsBreakAuto',
+              required: false,
+              placeholder: '',
+              value: false,
+            },
+            {
+              type: 'el-input-text',
+              label: '数值行数',
+              name: 'textRowsNum',
+              required: false,
+              placeholder: '',
+              value: '',
+            },
+            {
+              type: 'el-input-number',
+              label: '数值间隔',
+              name: 'textIntervalX',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-input-number',
+              label: '数值角度',
+              name: 'textAngleX',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'el-switch',
+              label: '坐标轴显示',
+              name: 'isShowAxisLineX',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-switch',
+              label: '坐标轴反转',
+              name: 'reversalX',
+              required: false,
+              placeholder: '',
+              value: false
+            },
+            {
+              type: 'vue-color',
+              label: '坐标轴颜色',
+              name: 'lineColorX',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '坐标轴宽度',
+              name: 'lineWidthX',
+              required: false,
+              placeholder: '',
+              value: 1,
+            },
+            {
+              type: 'el-input-text',
+              label: '坐标名',
+              name: 'nameX',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '坐标名位置',
+              name: 'nameLocationX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'start', name: '起点'},
+                {code: 'center', name: '中间'},
+                {code: 'end', name: '终点'},
+              ],
+              value: 'end'
+            },
+            {
+              type: 'vue-color',
+              label: '坐标名颜色',
+              name: 'nameColorX',
+              required: false,
+              placeholder: '',
+              value: '#fff'
+            },
+            {
+              type: 'el-input-number',
+              label: '坐标名字号',
+              name: 'nameFontSizeX',
+              required: false,
+              placeholder: '',
+              value: 14
+            },
+            {
+              type: 'el-select',
+              label: '坐标名粗细',
+              name: 'nameFontWeightX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '坐标名风格',
+              name: 'nameFontStyleX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '坐标名字体',
+              name: 'nameFontFamilyX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-switch',
+              label: '分割线显示',
+              name: 'isShowSplitLineX',
+              require: false,
+              placeholder: '',
+              value: false,
+            },
+            {
+              type: 'vue-color',
+              label: '分割线颜色',
+              name: 'splitLineColorX',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '分割线宽度',
+              name: 'splitLineWidthX',
+              required: false,
+              placeholder: '',
+              value: 1,
+            },
+          ],
+        },
+        {
+          name: 'Y轴设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: 'Y轴显示',
+              name: 'isShowY',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-switch',
+              label: '数值显示',
+              name: 'isShowAxisLabelY',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-input-text',
+              label: '最大值',
+              name: 'maxY',
+              required: false,
+              placeholder: '',
+              value: '',
+            },
+            {
+              type: 'el-select',
+              label: '数值位置',
+              name: 'positionY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'left', name: '左'},
+                {code: 'right', name: '右'},
+              ],
+              value: 'left'
+            },
+            {
+              type: 'el-input-number',
+              label: '数值距离',
+              name: 'offsetY',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'vue-color',
+              label: '数值颜色',
+              name: 'textColorY',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '数值字号',
+              name: 'textFontSizeY',
+              required: false,
+              placeholder: '',
+              value: 14,
+            },
+            {
+              type: 'el-select',
+              label: '数值粗细',
+              name: 'textFontWeightY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'textFontStyleY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'textFontFamilyY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            /*            {
+                          type: 'el-input-number',
+                          label: '数值间隔',
+                          name: 'textIntervalY',
+                          required: false,
+                          placeholder: '',
+                          value: 0
+                        },*/
+            {
+              type: 'el-switch',
+              label: '缩放',
+              name: 'scale',
+              require: false,
+              placeholder: '',
+              value: false,
+            },
+            {
+              type: 'el-input-number',
+              label: '均分',
+              name: 'splitNumberY',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-input-number',
+              label: '数值角度',
+              name: 'textAngleY',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'el-switch',
+              label: '坐标轴显示',
+              name: 'isShowAxisLineY',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-switch',
+              label: '坐标轴反转',
+              name: 'reversalY',
+              required: false,
+              placeholder: '',
+              value: false
+            },
+            {
+              type: 'vue-color',
+              label: '坐标轴颜色',
+              name: 'lineColorY',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '坐标轴宽度',
+              name: 'lineWidthY',
+              required: false,
+              placeholder: '',
+              value: 1,
+            },
+            {
+              type: 'el-input-text',
+              label: '坐标名',
+              name: 'textNameY',
+              require: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '坐标名位置',
+              name: 'nameLocationY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'start', name: '起点'},
+                {code: 'center', name: '中间'},
+                {code: 'end', name: '终点'},
+              ],
+              value: 'end'
+            },
+            {
+              type: 'vue-color',
+              label: '坐标名颜色',
+              name: 'nameColorY',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '坐标名字号',
+              name: 'nameFontSizeY',
+              required: false,
+              placeholder: '',
+              value: 14,
+            },
+            {
+              type: 'el-select',
+              label: '坐标名粗细',
+              name: 'nameFontWeightY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '坐标名风格',
+              name: 'nameFontStyleY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '坐标名字体',
+              name: 'nameFontFamilyY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-switch',
+              label: '分割线显示',
+              name: 'isShowSplitLineY',
+              require: false,
+              placeholder: '',
+              value: false,
+            },
+            {
+              type: 'vue-color',
+              label: '分割线颜色',
+              name: 'splitLineColorY',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '分割线宽度',
+              name: 'splitLineWidthY',
+              required: false,
+              placeholder: '',
+              value: 1,
+            },
+          ],
+        },
+        {
+          name: '图例操作',
+          list: [
+            {
+              type: 'el-switch',
+              label: '图例显示',
+              name: 'isShowLegend',
+              required: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-input-text',
+              label: '名称( | 分隔)',
+              name: 'legendName',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'legendColor',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'legendFontSize',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'legendFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'legendFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'legendFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-input-number',
+              label: '图例宽度',
+              name: 'legendWidth',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'el-input-number',
+              label: '图例高度',
+              name: 'legendHeight',
+              required: false,
+              placeholder: '',
+              value: 12,
+            },
+            {
+              type: 'el-select',
+              label: '横向位置',
+              name: 'lateralPosition',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'center'
+            },
+            {
+              type: 'el-select',
+              label: '纵向位置',
+              name: 'longitudinalPosition',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'top', name: '顶部'},
+                {code: 'bottom', name: '底部'},
+              ],
+              value: 'top'
+            },
+            {
+              type: 'el-select',
+              label: '布局前置',
+              name: 'layoutFront',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'vertical', name: '竖排'},
+                {code: 'horizontal', name: '横排'},
+              ],
+              value: 'horizontal'
+            },
+          ],
+        },
+        {
+          name: '数值设定',
+          list: [
+            {
+              type: 'el-switch',
+              label: '显示',
+              name: 'isShow',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-text',
+              label: '名称( | 分隔)',
+              name: 'fontDataName',
+              required: false,
+              placeholder: '多值以' | '隔开',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '位置',
+              name: 'fontPosition',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'top', name: '上'},
+                {code: 'left', name: '左'},
+                {code: 'right', name: '右'},
+                {code: 'inside', name: '里'},
+                {code: 'insideTop', name: '里顶'},
+                {code: 'insideLeft', name: '里左'},
+                {code: 'insideRight', name: '里右'},
+                {code: 'insideBottom', name: '里底'},
+              ],
+              value: 'insideTop'
+            },
+            {
+              type: 'el-input-number',
+              label: '距离',
+              name: 'fontDistance',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'fontColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'fontSize',
+              required: false,
+              placeholder: '',
+              value: 12
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'fontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'fontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'fontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+          ],
+        },
+        {
+          name: '提示语设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '显示',
+              name: 'isShowTooltip',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-select',
+              label: '触发类型',
+              name: 'tooltipTrigger',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'item', name: '数据项'},
+                {code: 'axis', name: '坐标轴'},
+              ],
+              value: 'axis'
+            },
+            {
+              type: 'el-select',
+              label: '指示器类型',
+              name: 'tooltipAxisPointerType',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'none', name: '无'},
+                {code: 'line', name: '直线'},
+                {code: 'shadow', name: '阴影'},
+                {code: 'cross', name: '十字准星'},
+              ],
+              value: 'shadow'
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'tooltipFontSize',
+              required: false,
+              placeholder: '',
+              value: 16
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'tooltipColor',
+              required: false,
+              placeholder: '',
+              value: '#00FEFF'
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'tooltipFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'tooltipFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'tooltipFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+          ],
+        },
+        {
+          name: '坐标轴边距设置',
+          list: [
+            {
+              type: 'el-slider',
+              label: '左边距(像素)',
+              name: 'marginLeft',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+            {
+              type: 'el-slider',
+              label: '右边距(像素)',
+              name: 'marginRight',
+              required: false,
+              placeholder: '',
+              value: 50,
+            },
+            {
+              type: 'el-slider',
+              label: '顶边距(像素)',
+              name: 'marginTop',
+              required: false,
+              placeholder: '',
+              value: 50,
+            },
+            {
+              type: 'el-slider',
+              label: '底边距(像素)',
+              name: 'marginBottom',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+          ],
+        },
+        {
+          name: '自定义配色',
+          list: [
+            {
+              type: 'customColor',
+              label: '',
+              name: 'customColor',
+              required: false,
+              value: [{color: '#ff7f50'}, {color: '#87cefa'}, {color: '#da70d6'}, {color: '#32cd32'}, {color: '#6495ed'}],
+            },
+          ],
+        },
+      ],
+    ],
+    // 数据
+    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: [
+          {"axis": "2021-07-25", "name": "A", "data": 32, "plan": 1200, "real": 3600},
+          {"axis": "2021-07-25", "name": "B", "data": 50, "plan": 1800, "real": 6000},
+          {"axis": "2021-07-26", "name": "B", "data": 70, "plan": 2000, "real": 4000},
+          {"axis": "2021-07-27", "name": "A", "data": 85, "plan": 1500, "real": 8000},
+          {"axis": "2021-07-27", "name": "B", "data": 90, "plan": 1200, "real": 3000},
+        ],
+      },
+      {
+        type: 'dycustComponents',
+        label: '',
+        name: 'dynamicData',
+        required: false,
+        placeholder: '',
+        relactiveDom: 'dataType',
+        relactiveDomValue: 'dynamicData',
+        chartType: 'widget-stackMoreShowChart',
+        dictKey: 'STACK_MORESHOW_PROPERTIES',
+        value: '',
+      },
+    ],
+    // 坐标
+    position: [
+      {
+        type: 'el-input-number',
+        label: '左边距',
+        name: 'left',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '上边距',
+        name: 'top',
+        required: false,
+        placeholder: '',
+        value: 0,
+      },
+      {
+        type: 'el-input-number',
+        label: '宽度',
+        name: 'width',
+        required: false,
+        placeholder: '该容器在1920px大屏中的宽度',
+        value: 500,
+      },
+      {
+        type: 'el-input-number',
+        label: '高度',
+        name: 'height',
+        required: false,
+        placeholder: '该容器在1080px大屏中的高度',
+        value: 250,
+      },
+    ],
+  }
+}

Разлика између датотеке није приказан због своје велике величине
+ 581 - 202
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-bar-stack.js


Разлика између датотеке није приказан због своје велике величине
+ 589 - 218
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-barchart.js


Разлика између датотеке није приказан због своје велике величине
+ 618 - 152
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barCharts/widget-gradient-barchart.js


Разлика између датотеке није приказан због своје велике величине
+ 586 - 230
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-bar-line-stack.js


Разлика између датотеке није приказан због своје велике величине
+ 672 - 234
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-barlinechart.js


Разлика између датотеке није приказан због своје велике величине
+ 687 - 233
report-ui/src/views/bigscreenDesigner/designer/tools/configure/barlineCharts/widget-more-bar-line.js


+ 8 - 0
report-ui/src/views/bigscreenDesigner/designer/tools/configure/form/widget-select.js

@@ -22,6 +22,14 @@ export const widgetSelect = {
         placeholder: '',
         value: '下拉框',
       },
+      {
+        type: 'el-input-text',
+        label: '提示内容',
+        name: 'select_text',
+        require: false,
+        placeholder: '',
+        value: '请选择'
+      },
       {
         type: 'vue-color',
         label: '字体颜色',

+ 287 - 76
report-ui/src/views/bigscreenDesigner/designer/tools/configure/funnelCharts/widget-funnel.js

@@ -46,7 +46,7 @@ export const widgetFunnel = {
             {
               type: 'el-switch',
               label: '标题显示',
-              name: 'isNoTitle',
+              name: 'isShowTitle',
               required: false,
               placeholder: '',
               value: true,
@@ -54,7 +54,7 @@ export const widgetFunnel = {
             {
               type: 'el-input-text',
               label: '标题名',
-              name: 'titleText',
+              name: 'text',
               required: false,
               placeholder: '',
               value: '',
@@ -82,10 +82,10 @@ export const widgetFunnel = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'bold', name: '粗体' },
-                { code: 'bolder', name: '特粗体' },
-                { code: 'lighter', name: '细体' }
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
               ],
               value: 'normal'
             },
@@ -96,29 +96,30 @@ export const widgetFunnel = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'italic', name: 'italic斜体' },
-                { code: 'oblique', name: 'oblique斜体' },
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
               ],
               value: 'normal'
             },
             {
               type: 'el-select',
-              label: '字体位置',
-              name: 'textAlign',
+              label: '字体系列',
+              name: 'textFontFamily',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'center', name: '居中' },
-                { code: 'left', name: '左对齐' },
-                { code: 'right', name: '右对齐' },
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
               ],
-              value: 'center'
+              value: 'sans-serif'
             },
             {
               type: 'el-input-text',
               label: '副标题名',
-              name: 'subText',
+              name: 'subtext',
               required: false,
               placeholder: '',
               value: ''
@@ -126,7 +127,7 @@ export const widgetFunnel = {
             {
               type: 'vue-color',
               label: '字体颜色',
-              name: 'subTextColor',
+              name: 'subtextColor',
               required: false,
               placeholder: '',
               value: 'rgba(30, 144, 255, 1)'
@@ -134,7 +135,7 @@ export const widgetFunnel = {
             {
               type: 'el-input-number',
               label: '字体字号',
-              name: 'subTextFontSize',
+              name: 'subtextFontSize',
               required: false,
               placeholder: '',
               value: 20
@@ -142,72 +143,72 @@ export const widgetFunnel = {
             {
               type: 'el-select',
               label: '字体粗细',
-              name: 'subTextFontWeight',
+              name: 'subtextFontWeight',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'bold', name: '粗体' },
-                { code: 'bolder', name: '特粗体' },
-                { code: 'lighter', name: '细体' }
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
               ],
               value: 'normal'
             },
             {
               type: 'el-select',
               label: '字体风格',
-              name: 'subTextFontStyle',
+              name: 'subtextFontStyle',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'italic', name: 'italic斜体' },
-                { code: 'oblique', name: 'oblique斜体' },
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
               ],
               value: 'normal'
             },
-          ],
-        },
-        {
-          name: '数值设置',
-          list: [
             {
-              type: 'el-switch',
-              label: '显示',
-              name: 'isShow',
-              require: false,
+              type: 'el-select',
+              label: '字体系列',
+              name: 'subtextFontFamily',
+              required: false,
               placeholder: '',
-              value: true,
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
             },
             {
-              type: 'el-input-number',
-              label: '字体字号',
-              name: 'fontSize',
-              require: false,
+              type: 'el-select',
+              label: '左右位置',
+              name: 'titleLeft',
+              required: false,
               placeholder: '',
-              value: 14,
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'center'
             },
             {
-              type: 'vue-color',
-              label: '字体颜色',
-              name: 'color',
-              require: false,
+              type: 'el-slider',
+              label: '上下间距',
+              name: 'titleTop',
+              required: false,
               placeholder: '',
-              value: '#fff',
+              value: 5,
             },
             {
-              type: 'el-select',
-              label: '字体粗细',
-              name: 'fontWeight',
-              require: false,
+              type: 'el-input-number',
+              label: '主副标题间距',
+              name: 'titleItemGap',
+              required: false,
               placeholder: '',
-              selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'bold', name: '粗体' },
-                { code: 'bolder', name: '特粗体' },
-                { code: 'lighter', name: '细体' }
-              ],
-              value: 'normal'
+              value: 0
             },
           ],
         },
@@ -216,12 +217,20 @@ export const widgetFunnel = {
           list: [
             {
               type: 'el-switch',
-              label: '显示',
+              label: '图例显示',
               name: 'isShowLegend',
               required: false,
               placeholder: '',
               value: true,
             },
+            {
+              type: 'el-input-text',
+              label: '名称( | 分隔)',
+              name: 'legendName',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
             {
               type: 'vue-color',
               label: '字体颜色',
@@ -236,7 +245,48 @@ export const widgetFunnel = {
               name: 'legendFontSize',
               required: false,
               placeholder: '',
-              value: 16,
+              value: 12,
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'legendFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'legendFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'legendFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
             },
             {
               type: 'el-input-number',
@@ -244,7 +294,15 @@ export const widgetFunnel = {
               name: 'legendWidth',
               required: false,
               placeholder: '',
-              value: 15,
+              value: 12,
+            },
+            {
+              type: 'el-input-number',
+              label: '图例高度',
+              name: 'legendHeight',
+              required: false,
+              placeholder: '',
+              value: 12,
             },
             {
               type: 'el-select',
@@ -253,9 +311,9 @@ export const widgetFunnel = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'center', name: '居中' },
-                { code: 'left', name: '左对齐' },
-                { code: 'right', name: '右对齐' },
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
               ],
               value: 'center'
             },
@@ -266,8 +324,8 @@ export const widgetFunnel = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'top', name: '顶部' },
-                { code: 'bottom', name: '底部' },
+                {code: 'top', name: '顶部'},
+                {code: 'bottom', name: '底部'},
               ],
               value: 'top'
             },
@@ -278,20 +336,132 @@ export const widgetFunnel = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'vertical', name: '竖排' },
-                { code: 'horizontal', name: '横排' },
+                {code: 'vertical', name: '竖排'},
+                {code: 'horizontal', name: '横排'},
               ],
               value: 'horizontal'
             },
           ],
         },
+        {
+          name: '数值设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '显示',
+              name: 'isShow',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
+            {
+              type: 'el-switch',
+              label: '百分比符号显示',
+              name: 'percentSign',
+              required: false,
+              placeholder: '',
+              value: false
+            },
+            {
+              type: 'el-select',
+              label: '位置',
+              name: 'fontPosition',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'top', name: '上'},
+                {code: 'left', name: '左'},
+                {code: 'right', name: '右'},
+                {code: 'inside', name: '里'},
+                {code: 'insideTop', name: '里顶'},
+                {code: 'insideLeft', name: '里左'},
+                {code: 'insideRight', name: '里右'},
+                {code: 'insideBottom', name: '里底'},
+              ],
+              value: 'inside'
+            },
+            {
+              type: 'el-input-number',
+              label: '距离',
+              name: 'fontDistance',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'fontColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'fontSize',
+              required: false,
+              placeholder: '',
+              value: 12
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'fontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'fontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'fontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+          ],
+        },
         {
           name: '提示语设置',
           list: [
+            {
+              type: 'el-switch',
+              label: '显示',
+              name: 'isShowTooltip',
+              required: false,
+              placeholder: '',
+              value: true
+            },
             {
               type: 'el-input-number',
               label: '字体字号',
-              name: 'tipsFontSize',
+              name: 'tooltipFontSize',
               required: false,
               placeholder: '',
               value: 16
@@ -299,11 +469,52 @@ export const widgetFunnel = {
             {
               type: 'vue-color',
               label: '字体颜色',
-              name: 'tipsColor',
+              name: 'tooltipColor',
               required: false,
               placeholder: '',
               value: '#00FEFF'
             },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'tooltipFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'tooltipFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'tooltipFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
           ],
         },
         {
@@ -314,7 +525,7 @@ export const widgetFunnel = {
               label: '',
               name: 'customColor',
               required: false,
-              value: [{ color: '#0CD2E6' }, { color: '#00BFA5' }, { color: '#FFC722' }, { color: '#886EFF' }, { color: '#008DEC' }],
+              value: [{color: '#0CD2E6'}, {color: '#00BFA5'}, {color: '#FFC722'}, {color: '#886EFF'}, {color: '#008DEC'}],
             },
           ],
         },
@@ -358,11 +569,11 @@ export const widgetFunnel = {
         relactiveDom: 'dataType',
         relactiveDomValue: 'staticData',
         value: [
-          { "value": 2, "name": "访问" },
-          { "value": 5, "name": "咨询" },
-          { "value": 20, "name": "订单" },
-          { "value": 40, "name": "点击" },
-          { "value": 125, "name": "展现" }
+          {"value": 2, "name": "访问"},
+          {"value": 5, "name": "咨询"},
+          {"value": 20, "name": "订单"},
+          {"value": 40, "name": "点击"},
+          {"value": 125, "name": "展现"}
         ],
       },
       {

+ 698 - 147
report-ui/src/views/bigscreenDesigner/designer/tools/configure/heatmap/widget-heatmap.js

@@ -38,7 +38,7 @@ export const widgetHeatmap = {
             {
               type: 'el-switch',
               label: '标题显示',
-              name: 'isNoTitle',
+              name: 'isShowTitle',
               required: false,
               placeholder: '',
               value: true,
@@ -46,7 +46,7 @@ export const widgetHeatmap = {
             {
               type: 'el-input-text',
               label: '标题名',
-              name: 'titleText',
+              name: 'text',
               required: false,
               placeholder: '',
               value: '',
@@ -74,10 +74,10 @@ export const widgetHeatmap = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'bold', name: '粗体' },
-                { code: 'bolder', name: '特粗体' },
-                { code: 'lighter', name: '细体' }
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
               ],
               value: 'normal'
             },
@@ -88,29 +88,30 @@ export const widgetHeatmap = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'italic', name: 'italic斜体' },
-                { code: 'oblique', name: 'oblique斜体' },
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
               ],
               value: 'normal'
             },
             {
               type: 'el-select',
-              label: '字体位置',
-              name: 'textAlign',
+              label: '字体系列',
+              name: 'textFontFamily',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'center', name: '居中' },
-                { code: 'left', name: '左对齐' },
-                { code: 'right', name: '右对齐' },
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
               ],
-              value: 'center'
+              value: 'sans-serif'
             },
             {
               type: 'el-input-text',
               label: '副标题名',
-              name: 'subText',
+              name: 'subtext',
               required: false,
               placeholder: '',
               value: ''
@@ -118,7 +119,7 @@ export const widgetHeatmap = {
             {
               type: 'vue-color',
               label: '字体颜色',
-              name: 'subTextColor',
+              name: 'subtextColor',
               required: false,
               placeholder: '',
               value: 'rgba(30, 144, 255, 1)'
@@ -126,7 +127,7 @@ export const widgetHeatmap = {
             {
               type: 'el-input-number',
               label: '字体字号',
-              name: 'subTextFontSize',
+              name: 'subtextFontSize',
               required: false,
               placeholder: '',
               value: 20
@@ -134,30 +135,94 @@ export const widgetHeatmap = {
             {
               type: 'el-select',
               label: '字体粗细',
-              name: 'subTextFontWeight',
+              name: 'subtextFontWeight',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'bold', name: '粗体' },
-                { code: 'bolder', name: '特粗体' },
-                { code: 'lighter', name: '细体' }
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
               ],
               value: 'normal'
             },
             {
               type: 'el-select',
               label: '字体风格',
-              name: 'subTextFontStyle',
+              name: 'subtextFontStyle',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'italic', name: 'italic斜体' },
-                { code: 'oblique', name: 'oblique斜体' },
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
               ],
               value: 'normal'
             },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'subtextFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-select',
+              label: '左右位置',
+              name: 'titleLeft',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
+              ],
+              value: 'center'
+            },
+            {
+              type: 'el-slider',
+              label: '上下间距',
+              name: 'titleTop',
+              required: false,
+              placeholder: '',
+              value: 5,
+            },
+            {
+              type: 'el-input-number',
+              label: '主副标题间距',
+              name: 'titleItemGap',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+          ],
+        },
+        {
+          name: '热力图设置',
+          list: [
+            {
+              type: 'el-input-number',
+              label: '最小值',
+              name: 'dataMin',
+              required: false,
+              placeholder: '',
+              value: 0,
+            },
+            {
+              type: 'el-input-number',
+              label: '最大值',
+              name: 'dataMax',
+              required: false,
+              placeholder: '',
+              value: 5000,
+            },
           ],
         },
         {
@@ -165,40 +230,44 @@ export const widgetHeatmap = {
           list: [
             {
               type: 'el-switch',
-              label: '显示',
-              name: 'hideX',
+              label: 'X轴显示',
+              name: 'isShowX',
               required: false,
               placeholder: '',
               value: true,
             },
             {
-              type: 'el-input-text',
-              label: '坐标名',
-              name: 'nameX',
-              required: false,
+              type: 'el-switch',
+              label: '数值显示',
+              name: 'isShowAxisLabelX',
+              require: false,
               placeholder: '',
-              value: ''
+              value: true,
             },
             {
-              type: 'vue-color',
-              label: '坐标名颜色',
-              name: 'nameColorX',
+              type: 'el-select',
+              label: '数值位置',
+              name: 'positionX',
               required: false,
               placeholder: '',
-              value: '#fff'
+              selectOptions: [
+                {code: 'top', name: '顶'},
+                {code: 'bottom', name: '底'},
+              ],
+              value: 'bottom'
             },
             {
               type: 'el-input-number',
-              label: '坐标名字号',
-              name: 'nameFontSizeX',
+              label: '数值距离',
+              name: 'offsetX',
               required: false,
               placeholder: '',
-              value: 14
+              value: 0
             },
             {
               type: 'vue-color',
               label: '数值颜色',
-              name: 'colorX',
+              name: 'textColorX',
               required: false,
               placeholder: '',
               value: '#fff',
@@ -206,27 +275,92 @@ export const widgetHeatmap = {
             {
               type: 'el-input-number',
               label: '数值字号',
-              name: 'fontSizeX',
+              name: 'textFontSizeX',
               required: false,
               placeholder: '',
               value: 14,
             },
+            {
+              type: 'el-select',
+              label: '数值粗细',
+              name: 'textFontWeightX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'textFontStyleX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'textFontFamilyX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-switch',
+              label: '数值自动换行',
+              name: 'textRowsBreakAuto',
+              required: false,
+              placeholder: '',
+              value: false,
+            },
+            {
+              type: 'el-input-text',
+              label: '数值行数',
+              name: 'textRowsNum',
+              required: false,
+              placeholder: '',
+              value: '',
+            },
             {
               type: 'el-input-number',
               label: '数值间隔',
-              name: 'textInterval',
+              name: 'textIntervalX',
               required: false,
               placeholder: '',
               value: ''
             },
             {
-              type: 'el-slider',
+              type: 'el-input-number',
               label: '数值角度',
               name: 'textAngleX',
               required: false,
               placeholder: '',
               value: 0
             },
+            {
+              type: 'el-switch',
+              label: '坐标轴显示',
+              name: 'isShowAxisLineX',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
             {
               type: 'el-switch',
               label: '坐标轴反转',
@@ -251,6 +385,108 @@ export const widgetHeatmap = {
               placeholder: '',
               value: 1,
             },
+            {
+              type: 'el-input-text',
+              label: '坐标名',
+              name: 'nameX',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-select',
+              label: '坐标名位置',
+              name: 'nameLocationX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'start', name: '起点'},
+                {code: 'center', name: '中间'},
+                {code: 'end', name: '终点'},
+              ],
+              value: 'end'
+            },
+            {
+              type: 'vue-color',
+              label: '坐标名颜色',
+              name: 'nameColorX',
+              required: false,
+              placeholder: '',
+              value: '#fff'
+            },
+            {
+              type: 'el-input-number',
+              label: '坐标名字号',
+              name: 'nameFontSizeX',
+              required: false,
+              placeholder: '',
+              value: 14
+            },
+            {
+              type: 'el-select',
+              label: '坐标名粗细',
+              name: 'nameFontWeightX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '坐标名风格',
+              name: 'nameFontStyleX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '坐标名字体',
+              name: 'nameFontFamilyX',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            {
+              type: 'el-switch',
+              label: '分割线显示',
+              name: 'isShowSplitLineX',
+              require: false,
+              placeholder: '',
+              value: false,
+            },
+            {
+              type: 'vue-color',
+              label: '分割线颜色',
+              name: 'splitLineColorX',
+              required: false,
+              placeholder: '',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '分割线宽度',
+              name: 'splitLineWidthX',
+              required: false,
+              placeholder: '',
+              value: 1,
+            },
           ],
         },
         {
@@ -258,40 +494,52 @@ export const widgetHeatmap = {
           list: [
             {
               type: 'el-switch',
-              label: '显示',
+              label: 'Y轴显示',
               name: 'isShowY',
               require: false,
               placeholder: '',
               value: true,
             },
             {
-              type: 'el-input-text',
-              label: '坐标名',
-              name: 'textNameY',
+              type: 'el-switch',
+              label: '数值显示',
+              name: 'isShowAxisLabelY',
               require: false,
               placeholder: '',
-              value: ''
+              value: true,
             },
             {
-              type: 'vue-color',
-              label: '坐标名颜色',
-              name: 'nameColorY',
+              type: 'el-input-text',
+              label: '最大值',
+              name: 'maxY',
               required: false,
               placeholder: '',
-              value: '#fff',
+              value: '',
+            },
+            {
+              type: 'el-select',
+              label: '数值位置',
+              name: 'positionY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'left', name: '左'},
+                {code: 'right', name: '右'},
+              ],
+              value: 'left'
             },
             {
               type: 'el-input-number',
-              label: '坐标名字号',
-              name: 'nameFontSizeY',
+              label: '数值距离',
+              name: 'offsetY',
               required: false,
               placeholder: '',
-              value: 14,
+              value: 0
             },
             {
               type: 'vue-color',
               label: '数值颜色',
-              name: 'colorY',
+              name: 'textColorY',
               required: false,
               placeholder: '',
               value: '#fff',
@@ -299,11 +547,60 @@ export const widgetHeatmap = {
             {
               type: 'el-input-number',
               label: '数值字号',
-              name: 'fontSizeY',
+              name: 'textFontSizeY',
               required: false,
               placeholder: '',
               value: 14,
             },
+            {
+              type: 'el-select',
+              label: '数值粗细',
+              name: 'textFontWeightY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'textFontStyleY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'textFontFamilyY',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+            /*            {
+                          type: 'el-input-number',
+                          label: '数值间隔',
+                          name: 'textIntervalY',
+                          required: false,
+                          placeholder: '',
+                          value: 0
+                        },*/
             {
               type: 'el-switch',
               label: '缩放',
@@ -321,13 +618,21 @@ export const widgetHeatmap = {
               value: ''
             },
             {
-              type: 'el-slider',
+              type: 'el-input-number',
               label: '数值角度',
               name: 'textAngleY',
               required: false,
               placeholder: '',
               value: 0
             },
+            {
+              type: 'el-switch',
+              label: '坐标轴显示',
+              name: 'isShowAxisLineY',
+              require: false,
+              placeholder: '',
+              value: true,
+            },
             {
               type: 'el-switch',
               label: '坐标轴反转',
@@ -352,136 +657,136 @@ export const widgetHeatmap = {
               placeholder: '',
               value: 1,
             },
-          ],
-        },
-        {
-          name: '数值设定',
-          list: [
             {
-              type: 'el-switch',
-              label: '显示',
-              name: 'isShow',
-              required: false,
+              type: 'el-input-text',
+              label: '坐标名',
+              name: 'textNameY',
+              require: false,
               placeholder: '',
-              value: true
+              value: ''
             },
             {
-              type: 'el-input-number',
-              label: '字体字号',
-              name: 'fontSize',
+              type: 'el-select',
+              label: '坐标名位置',
+              name: 'nameLocationY',
               required: false,
               placeholder: '',
-              value: 14
+              selectOptions: [
+                {code: 'start', name: '起点'},
+                {code: 'center', name: '中间'},
+                {code: 'end', name: '终点'},
+              ],
+              value: 'end'
             },
             {
               type: 'vue-color',
-              label: '字体颜色',
-              name: 'dataColor',
+              label: '坐标名颜色',
+              name: 'nameColorY',
               required: false,
               placeholder: '',
-              value: '#fff'
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '坐标名字号',
+              name: 'nameFontSizeY',
+              required: false,
+              placeholder: '',
+              value: 14,
             },
             {
               type: 'el-select',
-              label: '字体粗细',
-              name: 'fontWeight',
+              label: '坐标名粗细',
+              name: 'nameFontWeightY',
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'normal', name: '正常' },
-                { code: 'bold', name: '粗体' },
-                { code: 'bolder', name: '特粗体' },
-                { code: 'lighter', name: '细体' }
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
               ],
               value: 'normal'
             },
-          ],
-        },
-        {
-          name: '提示语设置',
-          list: [
             {
-              type: 'el-input-number',
-              label: '字体字号',
-              name: 'tipsFontSize',
+              type: 'el-select',
+              label: '坐标名风格',
+              name: 'nameFontStyleY',
               required: false,
               placeholder: '',
-              value: 16
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
             },
             {
-              type: 'vue-color',
-              label: '字体颜色',
-              name: 'tipsColor',
+              type: 'el-select',
+              label: '坐标名字体',
+              name: 'nameFontFamilyY',
               required: false,
               placeholder: '',
-              value: '#00FEFF'
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
             },
-          ],
-        },
-        {
-          name: '坐标轴边距设置',
-          list: [
             {
-              type: 'el-slider',
-              label: '左边距(像素)',
-              name: 'marginLeft',
-              required: false,
-              placeholder: '',
-              value: 10,
-            }, {
-              type: 'el-slider',
-              label: '顶边距(像素)',
-              name: 'marginTop',
-              required: false,
+              type: 'el-switch',
+              label: '分割线显示',
+              name: 'isShowSplitLineY',
+              require: false,
               placeholder: '',
-              value: 50,
-            }, {
-              type: 'el-slider',
-              label: '右边距(像素)',
-              name: 'marginRight',
+              value: false,
+            },
+            {
+              type: 'vue-color',
+              label: '分割线颜色',
+              name: 'splitLineColorY',
               required: false,
               placeholder: '',
-              value: 40,
-            }, {
-              type: 'el-slider',
-              label: '底边距(像素)',
-              name: 'marginBottom',
+              value: '#fff',
+            },
+            {
+              type: 'el-input-number',
+              label: '分割线宽度',
+              name: 'splitLineWidthY',
               required: false,
               placeholder: '',
-              value: 10,
+              value: 1,
             },
           ],
         },
         {
-          name: '图设置',
+          name: '图例操作',
           list: [
             {
               type: 'el-switch',
-              label: '图例',
+              label: '图例显示',
               name: 'isShowLegend',
               required: false,
               placeholder: '',
-              value: false,
-            },
-            {
-              type: 'el-input-number',
-              label: '最小值',
-              name: 'dataMin',
-              required: false,
-              placeholder: '',
-              value: 0,
+              value: true,
             },
             {
-              type: 'el-input-number',
-              label: '最大值',
-              name: 'dataMax',
+              type: 'el-select',
+              label: '图例类型',
+              name: 'visualMapType',
               required: false,
               placeholder: '',
-              value: 5000,
+              selectOptions: [
+                {code: 'continuous', name: '连续型'},
+                {code: 'piecewise', name: '分段型'},
+              ],
+              value: 'continuous'
             },
             {
               type: 'vue-color',
-              label: '数值颜色',
+              label: '字体颜色',
               name: 'legendColor',
               required: false,
               placeholder: '',
@@ -489,12 +794,53 @@ export const widgetHeatmap = {
             },
             {
               type: 'el-input-number',
-              label: '图例大小',
+              label: '字体字号',
               name: 'legendFontSize',
               required: false,
               placeholder: '',
               value: 12,
             },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'legendFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'legendFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'legendFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
             {
               type: 'el-input-number',
               label: '图例宽度',
@@ -503,6 +849,14 @@ export const widgetHeatmap = {
               placeholder: '',
               value: 12,
             },
+            {
+              type: 'el-input-number',
+              label: '图例高度',
+              name: 'legendHeight',
+              required: false,
+              placeholder: '',
+              value: 120,
+            },
             {
               type: 'el-select',
               label: '横向位置',
@@ -510,9 +864,9 @@ export const widgetHeatmap = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'center', name: '居中' },
-                { code: 'left', name: '左对齐' },
-                { code: 'right', name: '右对齐' },
+                {code: 'center', name: '居中'},
+                {code: 'left', name: '左对齐'},
+                {code: 'right', name: '右对齐'},
               ],
               value: 'center'
             },
@@ -523,8 +877,8 @@ export const widgetHeatmap = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'top', name: '顶部' },
-                { code: 'bottom', name: '底部' },
+                {code: 'top', name: '顶部'},
+                {code: 'bottom', name: '底部'},
               ],
               value: 'top'
             },
@@ -535,13 +889,210 @@ export const widgetHeatmap = {
               required: false,
               placeholder: '',
               selectOptions: [
-                { code: 'vertical', name: '竖排' },
-                { code: 'horizontal', name: '横排' },
+                {code: 'vertical', name: '竖排'},
+                {code: 'horizontal', name: '横排'},
               ],
               value: 'horizontal'
             },
           ],
         },
+        {
+          name: '数值设定',
+          list: [
+            {
+              type: 'el-switch',
+              label: '显示',
+              name: 'isShow',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-select',
+              label: '位置',
+              name: 'fontPosition',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'inside', name: '里'},
+                {code: 'insideTop', name: '里顶'},
+                {code: 'insideLeft', name: '里左'},
+                {code: 'insideRight', name: '里右'},
+                {code: 'insideBottom', name: '里底'},
+              ],
+              value: 'inside'
+            },
+            {
+              type: 'el-input-number',
+              label: '距离',
+              name: 'fontDistance',
+              required: false,
+              placeholder: '',
+              value: 0
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'fontColor',
+              required: false,
+              placeholder: '',
+              value: ''
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'fontSize',
+              required: false,
+              placeholder: '',
+              value: 12
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'fontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值风格',
+              name: 'fontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '数值字体',
+              name: 'fontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+          ],
+        },
+        {
+          name: '提示语设置',
+          list: [
+            {
+              type: 'el-switch',
+              label: '显示',
+              name: 'isShowTooltip',
+              required: false,
+              placeholder: '',
+              value: true
+            },
+            {
+              type: 'el-input-number',
+              label: '字体字号',
+              name: 'tooltipFontSize',
+              required: false,
+              placeholder: '',
+              value: 16
+            },
+            {
+              type: 'vue-color',
+              label: '字体颜色',
+              name: 'tooltipColor',
+              required: false,
+              placeholder: '',
+              value: '#00FEFF'
+            },
+            {
+              type: 'el-select',
+              label: '字体粗细',
+              name: 'tooltipFontWeight',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'bold', name: '粗体'},
+                {code: 'bolder', name: '特粗体'},
+                {code: 'lighter', name: '细体'}
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体风格',
+              name: 'tooltipFontStyle',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'normal', name: '正常'},
+                {code: 'italic', name: 'italic斜体'},
+                {code: 'oblique', name: 'oblique斜体'},
+              ],
+              value: 'normal'
+            },
+            {
+              type: 'el-select',
+              label: '字体系列',
+              name: 'tooltipFontFamily',
+              required: false,
+              placeholder: '',
+              selectOptions: [
+                {code: 'sans-serif', name: 'sans-serif'},
+                {code: 'serif', name: 'serif'},
+                {code: 'Arial', name: 'Arial'},
+                {code: 'Courier New', name: 'Courier New'},
+              ],
+              value: 'sans-serif'
+            },
+          ],
+        },
+        {
+          name: '坐标轴边距设置',
+          list: [
+            {
+              type: 'el-slider',
+              label: '左边距(像素)',
+              name: 'marginLeft',
+              required: false,
+              placeholder: '',
+              value: 10,
+            }, {
+              type: 'el-slider',
+              label: '顶边距(像素)',
+              name: 'marginTop',
+              required: false,
+              placeholder: '',
+              value: 50,
+            }, {
+              type: 'el-slider',
+              label: '右边距(像素)',
+              name: 'marginRight',
+              required: false,
+              placeholder: '',
+              value: 50,
+            }, {
+              type: 'el-slider',
+              label: '底边距(像素)',
+              name: 'marginBottom',
+              required: false,
+              placeholder: '',
+              value: 10,
+            },
+          ],
+        },
         {
           name: '自定义配色',
           list: [

Разлика између датотеке није приказан због своје велике величине
+ 608 - 182
report-ui/src/views/bigscreenDesigner/designer/tools/configure/lineCharts/widget-line-compare.js


Неке датотеке нису приказане због велике количине промена