qianlishi 3 years ago
commit 12e6ab0020

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

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

@ -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> <properties>
<gaea.version>6.0.0-SNAPSHOT</gaea.version> <gaea.version>6.0.0-SNAPSHOT</gaea.version>
<gaea.security.version>1.0.0-SNAPSHOT</gaea.security.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.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> <maven.test.skip>true</maven.test.skip>
</properties> </properties>

@ -167,7 +167,7 @@ export function editReportExcel (data) {
// /dataSet/pageList // /dataSet/pageList
export function dataSetPageList (data) { export function dataSetPageList (data) {
return request({ 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', method: 'GET',
data, data,
}) })

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

@ -106,11 +106,12 @@
<template slot-scope="scope"> <template slot-scope="scope">
<el-button type="text" <el-button type="text"
@click="showAddLogModel(scope.row)">编辑</el-button> @click="showAddLogModel(scope.row)">编辑</el-button>
<el-popconfirm :title="'确定删除' + scope.row.sourceNameCode + '吗?'" <!-- <el-popconfirm :title="'确定删除' + scope.row.sourceNameCode + '吗?'"
@onConfirm="delData(scope.row)"> @onConfirm="delData(scope.row)"> -->
<el-button slot="reference" <el-button slot="reference"
@click="delData(scope.row)"
type="text">删除</el-button> type="text">删除</el-button>
</el-popconfirm> <!-- </el-popconfirm> -->
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
@ -376,9 +377,29 @@ export default {
}) })
}, },
async delData (val) { 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 if (code != '200') return
this.queryByPage() this.queryByPage()
this.$message({
type: 'success',
message: '删除成功!',
})
})
.catch(() => {
this.$message({
type: 'info',
message: '已取消删除',
})
})
}, },
// //
async UserConfirm (formName) { async UserConfirm (formName) {

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

Loading…
Cancel
Save