qianlishi 3 years ago
commit 12e6ab0020

@ -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: [

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

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

@ -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. 丰富的大屏组件。拖拽配置实现动态大屏

@ -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. 丰富的大屏组件。拖拽配置实现动态大屏

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

@ -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>

@ -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,
})

@ -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 li .three-level li {
// display: none;
// }
.nav > li > ul > li:hover > a {
display: block;
background-color: #182e42;
color: #fff;
.nav ul a:hover {
border: 1px solid #3c5e88;
}
.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>

@ -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-popconfirm :title="'确定删除' + scope.row.sourceNameCode + '吗?'"
@onConfirm="delData(scope.row)"> -->
<el-button slot="reference"
@click="delData(scope.row)"
type="text">删除</el-button>
</el-popconfirm>
<!-- </el-popconfirm> -->
</template>
</el-table-column>
</el-table>
@ -376,9 +377,29 @@ export default {
})
},
async delData (val) {
const { code } = await deleteDataSource(val)
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) {

@ -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-popconfirm :title="'确定删除' + scope.row.setName + '吗?'"
@onConfirm="delect(scope.row)"> -->
<el-button slot="reference"
type="text">删除</el-button>
</el-popconfirm>
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) {
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 {

Loading…
Cancel
Save