Explorar o código

Merge branch 'master' of https://gitee.com/anji-plus/report

qianlishi %!s(int64=4) %!d(string=hai) anos
pai
achega
12e6ab0020

+ 8 - 14
doc/docs/.vuepress/config.js

@@ -12,7 +12,6 @@ module.exports = {
         nav: [
             {text: '首页', link: '/'},
             {text: '指南', link: '/guide/'},
-            {text: '操作手册', link: '/operation/'},
             {text: 'GitHub', link: 'https://github.com/anji-plus/report'},
             {text: 'Gitee', link: 'https://gitee.com/anji-plus/report'},
         ],
@@ -24,29 +23,24 @@ module.exports = {
                     children: [
                         {title: '介绍', path: '/guide/'},
                         {title: '快速入门', path: '/guide/quickly'},
-                        // {title: '系统运行', path: '/guide/deploy'}
                     ]
                 },
                 {
-                    title: '其他',
+                    title: '操作手册',
                     collapsable: false,
                     children: [
-                        {title: '常见问题', path: '/guide/question'}
+                        {title: '数据源', path: '/guide/datasource'},
+                        {title: '数据集', path: '/guide/dataset'},
+                        {title: '大屏设计', path: '/guide/dashboard'},
                     ]
-                }],
-            '/operation/': [
+                },
                 {
-                    title: '操作手册',
+                    title: '其他',
                     collapsable: false,
                     children: [
-                        {title: '数据源', path: '/operation/datasource'},
-                        {title: '数据集', path: '/operation/dataset'},
-                        {title: '大屏设计', path: '/operation/dashboard'},
-                        {title: '国际化', path: '/operation/i18n'},
-                        {title: '字典', path: '/operation/dict'},
+                        {title: '常见问题', path: '/guide/question'}
                     ]
-                }
-            ]
+                }],
         }
     },
     plugins: [

+ 0 - 0
doc/docs/operation/dashboard.md → doc/docs/guide/dashboard.md


+ 0 - 0
doc/docs/operation/dataset.md → doc/docs/guide/dataset.md


+ 2 - 1
doc/docs/operation/datasource.md → doc/docs/guide/datasource.md

@@ -1,3 +1,4 @@
-# 数据源
+## 数据源
 
 ## 标题一
+

+ 6 - 1
doc/docs/guide/question.md

@@ -1,4 +1,9 @@
-# 常见问题
+## 常见问题
+- 没有找到新增数据源类型?<br>
+  字典管理目前暂未有页面维护,可自行去数据库中增加你需要的数据源类型。<br>
+  表gaea_dict,字段dict_type:SOURCE_TYPE<br>
+  表gaea_dict_item, item_extend字段是下拉选择后动态表单渲染的json数据<br>
+  
 
 ## 其他
 

+ 0 - 25
doc/docs/operation/README.md

@@ -1,25 +0,0 @@
-# 介绍
----
-
-**大屏设计**
-
-大屏设计(Report)是一个JavaEE微服务架构平台,采用经典组合(SpringBoot,SpringCloud,Vue,ElementUI)。目前提供两种架构,单体架构和微服务架构。
-内置的基础功能包括数据源,数据集,报表管理
-
-**功能架构**
-- 前端
-
-
-- 后端
-
-
-**在线体验**
-- 访问地址
-
-- 默认账号密码
-
-
-**联系我们**
-
-
-

+ 0 - 32
doc/docs/operation/dict.md

@@ -1,32 +0,0 @@
-# 快速了解
----
-## 项目简介
-- 项目源代码地址: <https://gitee.com/anji-plus/report>
-- 在线提问: <https://gitee.com/anji-plus/report/issues>
-- 在线文档: 
-
-大屏设计(Report)是一个可视化拖拽编辑的,直观,酷炫,具有科技感的图表工具项目。
-内置的基础功能包括数据源,数据集,国际化,字典管理,报表管理
-
-
-## 技术选型
-
-**1.环境**
--  JavaEE 8
--  Apache Maven 3
-
-**2.主框架**
--  Spring Boot 2.3.x
-
-**3.持久层**
--  Apache MyBatis 3.5.x
-
-**4.视图层**
--  Vue 2.6.10+
--  ElementUI 2.13.0+
-
-
-## 系统特性
-1. 最新最稳定的技术栈;
-2. 支持多数据源配置
-3. 丰富的大屏组件。拖拽配置实现动态大屏

+ 0 - 32
doc/docs/operation/i18n.md

@@ -1,32 +0,0 @@
-# 快速了解
----
-## 项目简介
-- 项目源代码地址: <https://gitee.com/anji-plus/report>
-- 在线提问: <https://gitee.com/anji-plus/report/issues>
-- 在线文档: 
-
-大屏设计(Report)是一个可视化拖拽编辑的,直观,酷炫,具有科技感的图表工具项目。
-内置的基础功能包括数据源,数据集,国际化,字典管理,报表管理
-
-
-## 技术选型
-
-**1.环境**
--  JavaEE 8
--  Apache Maven 3
-
-**2.主框架**
--  Spring Boot 2.3.x
-
-**3.持久层**
--  Apache MyBatis 3.5.x
-
-**4.视图层**
--  Vue 2.6.10+
--  ElementUI 2.13.0+
-
-
-## 系统特性
-1. 最新最稳定的技术栈;
-2. 支持多数据源配置
-3. 丰富的大屏组件。拖拽配置实现动态大屏

BIN=BIN
doc/docs/operation/img.png


+ 7 - 0
doc/docs/operation/pie.md

@@ -0,0 +1,7 @@
+# 快速了解
+饼图配置
+## 1、添加饼图
+![img.png](img.png)
+## 2、饼图设置
+
+## 3、数据格式

BIN=BIN
doc/docs/picture/img.png


BIN=BIN
doc/docs/picture/img_1.png


+ 2 - 2
pom.xml

@@ -23,9 +23,9 @@
     <properties>
         <gaea.version>6.0.0-SNAPSHOT</gaea.version>
         <gaea.security.version>1.0.0-SNAPSHOT</gaea.security.version>
-        <gaea.export.version>1.0.0-SNAPSHOT</gaea.export.version>
+        <gaea.export.version>1.0.0.RELEASE</gaea.export.version>
         <gaea.generator.version>1.0.0-SNAPSHOT</gaea.generator.version>
-        <gaea.log.version>1.0.0-SNAPSHOT</gaea.log.version>
+        <gaea.log.version>1.0.0.RELEASE</gaea.log.version>
         <maven.test.skip>true</maven.test.skip>
     </properties>
 

+ 1 - 1
report-ui/src/api/report.js

@@ -167,7 +167,7 @@ export function editReportExcel (data) {
 // /dataSet/pageList
 export function dataSetPageList (data) {
   return request({
-    url: '/dataSet/pageList',
+    url: '/dataSet/pageList?page=' + data.page + '&size=' + data.size + '&sort=' + data.sort + '&order=' + data.order + '&pageNumber=' + data.pageNumber + '&pageSize=' + data.pageSize,
     method: 'GET',
     data,
   })

+ 73 - 59
report-ui/src/views/report/bigscreen/designer/index.vue

@@ -59,21 +59,15 @@
                 <li>
                   <div><i class="el-icon-full-screen mr10"></i>边框 <i class="el-icon-arrow-right ml20"></i></div>
                   <ul class="three-level">
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
+                    <li><a href="#">边框1</a></li>
+                    <li><a href="#">边框2</a></li>
+                    <li><a href="#">边框3</a></li>
                   </ul>
                 </li>
                 <li>
                   <div><i class="el-icon-magic-stick mr10"></i>装饰<i class="el-icon-arrow-right ml20"></i></div>
                   <ul class="three-level">
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
-                    <li><a href="#">三级菜单项</a></li>
+                    <li><a href="#">装饰1</a></li>
                   </ul>
                 </li>
               </ul>
@@ -848,73 +842,93 @@ li {
   padding: 0;
 }
 .nav {
+  width: 40px;
+  padding: 0;
+  list-style: none;
+  /* overflow: hidden; */
 }
-.nav > li {
-  display: inline-block;
-  position: relative;
+.nav {
+  zoom: 1;
 }
-.nav > li > a {
-  text-decoration: none;
+.nav:before,
+.nav:after {
+  content: "";
+  display: table;
 }
-.nav > li:hover > a {
-  color: rgb(0, 136, 214);
+.nav:after {
+  clear: both;
 }
-.nav a {
-  color: #cde8ff;
-  display: block;
+.nav li {
+  width: 40px;
+  text-align: center;
+  position: relative;
+}
+.nav li a {
+  float: left;
+  padding: 12px 30px;
+  color: #999;
+  font: bold 12px;
   text-decoration: none;
 }
-
-.nav ul {
-  display: none;
-  background: #00113a;
+.nav li:hover {
+  color: #6dc5ff;
+}
+.nav li ul {
+  visibility: hidden;
   position: absolute;
-  z-index: 10000;
+  z-index: 1000;
+  list-style: none;
+  top: 38px;
+  left: 0;
+  padding: 0;
+  background-color: #263445;
+  opacity: 0;
+  _margin: 0;
   width: 120px;
-  margin-left: -20px;
+  transition: all 0.2s ease-in-out;
+}
+.nav li:hover > ul {
+  opacity: 1;
+  visibility: visible;
+  margin: 0;
 }
 .nav ul li {
-  position: relative;
+  float: left;
+  display: block;
+  border: 0;
+  width: 100%;
   font-size: 12px;
 }
-.nav > li:hover > ul {
+.nav ul a {
+  padding: 10px;
+  width: 100%;
   display: block;
+  float: none;
+  height: 120px;
+  border: 1px solid #30445c;
+  transition: all 0.2s ease-in-out;
 }
-.nav > li > .three-level > li > a {
-  width: 10em;
-  padding-left: 1em;
-  padding-right: 1em;
-  background-color: #0f2030;
+.nav ul a:hover {
+  border: 1px solid #3c5e88;
 }
-// .nav li .three-level li {
-//   display: none;
-// }
-.nav > li > ul > li:hover > a {
-  display: block;
-  background-color: #182e42;
-  color: #fff;
-}
-.nav > li > ul > li > ul {
-  left: 100%;
-  top: 0;
+.nav ul li:first-child > a:hover:before {
+  border-bottom-color: #04acec;
 }
-.nav > li:last-child > ul > li > ul {
-  left: -100%;
+.nav ul ul {
   top: 0;
+  left: 120px;
+  width: 400px;
+  height: 300px;
+  overflow: auto;
+  padding: 10px;
+  box-shadow: -1px 0 0 #30445c;
+  _margin: 0;
 }
-.nav > li > ul > li:hover > ul {
+.nav ul ul li {
+  width: 120px;
+  height: 120px;
+  margin-right: 3px;
   display: block;
-}
-.nav > li > ul > li > ul > li > a {
-  padding-top: 0.4em;
-  padding-bottom: 0.4em;
-  width: 10em;
-  padding-left: 1em;
-  padding-right: 1em;
-  background-color: rgb(50, 50, 50);
-}
-.nav > li > ul > li > ul > li:hover > a {
-  background-color: rgb(255, 255, 0);
-  color: rgb(0, 0, 0);
+  float: left;
 }
 </style>

+ 29 - 8
report-ui/src/views/report/datasource/index.vue

@@ -106,11 +106,12 @@
         <template slot-scope="scope">
           <el-button type="text"
                      @click="showAddLogModel(scope.row)">编辑</el-button>
-          <el-popconfirm :title="'确定删除' + scope.row.sourceNameCode + '吗?'"
-                         @onConfirm="delData(scope.row)">
-            <el-button slot="reference"
-                       type="text">删除</el-button>
-          </el-popconfirm>
+          <!-- <el-popconfirm :title="'确定删除' + scope.row.sourceNameCode + '吗?'"
+                         @onConfirm="delData(scope.row)"> -->
+          <el-button slot="reference"
+                     @click="delData(scope.row)"
+                     type="text">删除</el-button>
+          <!-- </el-popconfirm> -->
         </template>
       </el-table-column>
     </el-table>
@@ -376,9 +377,29 @@ export default {
       })
     },
     async delData (val) {
-      const { code } = await deleteDataSource(val)
-      if (code != '200') return
-      this.queryByPage()
+      this.$confirm('确定删除?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(async () => {
+          this.$emit('deletelayer')
+          this.visible = false
+          const { code, data } = await deleteDataSource(val)
+          if (code != '200') return
+          this.queryByPage()
+          this.$message({
+            type: 'success',
+            message: '删除成功!',
+          })
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除',
+          })
+        })
+
     },
     // 提交
     async UserConfirm (formName) {

+ 68 - 31
report-ui/src/views/report/resultset/index.vue

@@ -14,12 +14,12 @@
                 :md="6"
                 :lg="6"
                 :xl="6">
-          <el-form-item label="数据集名称"
+          <el-form-item label="数据集编码"
                         label-width="120px">
-            <el-input v-model.trim="query.setName"
+            <el-input v-model.trim="query.setCode"
                       size="mini"
                       clearable
-                      placeholder="数据源名称"
+                      placeholder="数据集编码"
                       class="filter-item" />
           </el-form-item>
         </el-col>
@@ -28,12 +28,12 @@
                 :md="6"
                 :lg="6"
                 :xl="6">
-          <el-form-item label="数据集编码"
+          <el-form-item label="数据集名称"
                         label-width="120px">
-            <el-input v-model.trim="query.setCode"
+            <el-input v-model.trim="query.setName"
                       size="mini"
                       clearable
-                      placeholder="数据集编码"
+                      placeholder="数据源名称"
                       class="filter-item" />
           </el-form-item>
         </el-col>
@@ -97,16 +97,25 @@
           <el-button size="mini"
                      type="text"
                      @click="addOrEditDataSet(scope.row)">编辑</el-button>
-          <el-popconfirm :title="'确定删除' + scope.row.setName + '吗?'"
-                         @onConfirm="delect(scope.row)">
-            <el-button slot="reference"
-                       type="text">删除</el-button>
-          </el-popconfirm>
+          <!-- <el-popconfirm :title="'确定删除' + scope.row.setName + '吗?'"
+                         @onConfirm="delect(scope.row)"> -->
+          <el-button slot="reference"
+                     type="text"
+                     @click="delect(scope.row)">删除</el-button>
+          <!-- </el-popconfirm> -->
         </template>
       </el-table-column>
     </el-table>
     <!--分页组件-->
-    <!-- <pagination /> -->
+    <div class="block">
+      <el-pagination :total="totalCount"
+                     :page-sizes="[10, 20, 50, 100]"
+                     :page-size="params.pageSize"
+                     :current-page="params.pageNumber"
+                     layout="total, sizes, prev, pager, next, jumper"
+                     @size-change="handleSizeChange"
+                     @current-change="handleCurrentChange" />
+    </div>
 
     <!--表单组件-->
     <el-dialog :visible.sync="dialogFormVisible"
@@ -119,7 +128,7 @@
                :model="formData"
                :rules="formRules"
                size="small"
-               label-width="100px">
+               label-width="130px">
         <el-row :gutter="10">
           <el-col :xs="24"
                   :sm="20"
@@ -144,9 +153,9 @@
                   :md="8"
                   :lg="8"
                   :xl="8">
-            <el-form-item label="数据集名称"
-                          prop="setName">
-              <el-input v-model.trim="formData.setName"
+            <el-form-item label="数据集编码"
+                          prop="setCode">
+              <el-input v-model.trim="formData.setCode"
                         size="mini" />
             </el-form-item>
           </el-col>
@@ -155,9 +164,9 @@
                   :md="8"
                   :lg="8"
                   :xl="8">
-            <el-form-item label="数据集编码"
-                          prop="setCode">
-              <el-input v-model.trim="formData.setCode"
+            <el-form-item label="数据集名称"
+                          prop="setName">
+              <el-input v-model.trim="formData.setName"
                         size="mini" />
             </el-form-item>
           </el-col>
@@ -178,8 +187,7 @@
                   :lg="22"
                   :xl="22"
                   class="code-mirror-form">
-            <el-form-item label="查询SQL或请求体"
-                          label-width="140px">
+            <el-form-item label="查询SQL或请求体">
               <div class="codemirror">
                 <codemirror v-model.trim="formData.dynSentence"
                             :options="optionsSql"
@@ -498,6 +506,8 @@ export default {
         }`,
       itemFilterScriptId: '',
       title: '自定义高级规则',
+      totalCount: 0,
+      totalPage: 0,
       params: {
         pageNumber: 1,
         pageSize: 10,
@@ -570,24 +580,30 @@ export default {
     },
     async queryByPage () {
       let params = {
-        page: 0,
-        size: 10,
+        page: this.params.pageNumber,
+        size: this.params.pageSize,
         sort: "update_time",
         order: "DESC",
-        pageNumber: 1,
-        pageSize: 10
+        pageNumber: this.params.pageNumber,
+        pageSize: this.params.pageSize
       }
       const res = await dataSetPageList(params)
       if (res.code != '200') return
       this.listLoading = true
       this.data = res.data.records
-
       this.totalCount = res.data.total
       this.totalPage = res.data.pages
       this.listLoading = false
     },
 
-
+    handleSizeChange (val) {
+      this.params.pageSize = val
+      this.queryByPage()
+    },
+    handleCurrentChange (val) {
+      this.params.pageNumber = val
+      this.queryByPage()
+    },
 
     onJsonChange (value) { },
     onJsonSave (value) { },
@@ -599,10 +615,29 @@ export default {
       this.caseResultTitle = item.setName
       this.caseResultContent = JSON.parse(item.caseResult)
     },
-    async delect (row) {
-      this.visible = false
-      const { code, data } = await deleteDataSet(row)
-      if (code != '200') return
+    delect (row) {
+      this.$confirm('确定删除?', '提示', {
+        confirmButtonText: '确定',
+        cancelButtonText: '取消',
+        type: 'warning',
+      })
+        .then(async () => {
+          this.$emit('deletelayer')
+          this.visible = false
+          const { code, data } = await deleteDataSet(row)
+          if (code != '200') return
+          this.queryByPage()
+          this.$message({
+            type: 'success',
+            message: '删除成功!',
+          })
+        })
+        .catch(() => {
+          this.$message({
+            type: 'info',
+            message: '已取消删除',
+          })
+        })
     },
     // 编辑数据集,获取单条数据详情
     addOrEditDataSet (row) {
@@ -886,9 +921,11 @@ export default {
             if (this.dialogFormVisibleTitle === '新增数据集') {
               const { code } = await addDataSet(this.formData)
               if (code != '200') return
+              this.queryByPage()
             } else {
               const { code } = await editDataSet(this.formData)
               if (code != '200') return
+              this.queryByPage()
             }
             this.dialogFormVisible = false
           } else {