diff --git a/README.md b/README.md
index 11e7bcd..459f0a6 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,9 @@
-
+
-
-
+
+
diff --git a/config/router.config.js b/config/router.config.js
index 25a60c8..bc1f472 100644
--- a/config/router.config.js
+++ b/config/router.config.js
@@ -236,6 +236,15 @@ export default [
},
],
},
+ {
+ path: '/report',
+ routes: [
+ {
+ path: '/report/reportlist',
+ routes: [{ path: '/report/reportlist', component: './Report/Report' }],
+ },
+ ],
+ },
{
path: '/tool',
routes: [
diff --git a/package.json b/package.json
index b2aed54..86ed2f5 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "sword",
- "version": "2.7.3",
+ "version": "2.8.0",
"description": "An out-of-box UI solution for enterprise applications",
"private": true,
"scripts": {
diff --git a/src/actions/report.js b/src/actions/report.js
new file mode 100644
index 0000000..cd209cb
--- /dev/null
+++ b/src/actions/report.js
@@ -0,0 +1,8 @@
+export const REPORT_NAMESPACE = 'report';
+
+export function REPORT_LIST(payload) {
+ return {
+ type: `${REPORT_NAMESPACE}/fetchList`,
+ payload,
+ };
+}
diff --git a/src/components/ThirdRegister/index.js b/src/components/ThirdRegister/index.js
index bcfdb22..d879704 100644
--- a/src/components/ThirdRegister/index.js
+++ b/src/components/ThirdRegister/index.js
@@ -114,7 +114,7 @@ class ThirdRegister extends PureComponent {
message: '请输入租户编号',
},
],
- })()}
+ })()}
@@ -130,7 +130,7 @@ class ThirdRegister extends PureComponent {
},
],
initialValue: user.name,
- })()}
+ })()}
@@ -143,7 +143,7 @@ class ThirdRegister extends PureComponent {
},
],
initialValue: user.account,
- })()}
+ })()}
@@ -157,7 +157,7 @@ class ThirdRegister extends PureComponent {
message: '请输入密码',
},
],
- })()}
+ })()}
@@ -169,7 +169,7 @@ class ThirdRegister extends PureComponent {
message: '请输入确认密码',
},
],
- })()}
+ })()}
diff --git a/src/defaultSettings.js b/src/defaultSettings.js
index 054a86a..50d34c9 100644
--- a/src/defaultSettings.js
+++ b/src/defaultSettings.js
@@ -18,4 +18,6 @@ module.exports = {
pwa: true,
// 第三方登陆授权地址
authUrl: 'http://localhost/blade-auth/oauth/render',
+ // 报表设计器地址(cloud端口为8108,boot端口为80)
+ reportUrl: 'http://localhost:8108/ureport',
};
diff --git a/src/locales/en-US/menu.js b/src/locales/en-US/menu.js
index af66b88..a4feaf3 100644
--- a/src/locales/en-US/menu.js
+++ b/src/locales/en-US/menu.js
@@ -25,6 +25,9 @@ export default {
'menu.monitor.log.log_error': 'error log',
'menu.monitor.admin': 'service admin',
'menu.monitor.doc': 'api doc',
+ 'menu.report': 'report',
+ 'menu.report.report_setting': 'report setting',
+ 'menu.report.report_list': 'report list',
'menu.tool': 'develop',
'menu.tool.code': 'code generate',
'menu.tool.datasource': 'datasource',
diff --git a/src/locales/zh-CN/menu.js b/src/locales/zh-CN/menu.js
index 2b3e64a..650b42a 100644
--- a/src/locales/zh-CN/menu.js
+++ b/src/locales/zh-CN/menu.js
@@ -25,6 +25,9 @@ export default {
'menu.monitor.log.log_error': '错误日志',
'menu.monitor.admin': '服务治理',
'menu.monitor.doc': '接口文档',
+ 'menu.report': '报表管理',
+ 'menu.report.report_setting': '报表配置',
+ 'menu.report.report_list': '报表列表',
'menu.tool': '研发工具',
'menu.tool.code': '代码生成',
'menu.tool.datasource': '数据源管理',
diff --git a/src/locales/zh-TW/menu.js b/src/locales/zh-TW/menu.js
index 6a4e899..77e71b0 100644
--- a/src/locales/zh-TW/menu.js
+++ b/src/locales/zh-TW/menu.js
@@ -25,6 +25,9 @@ export default {
'menu.monitor.log.log_error': '錯誤日志',
'menu.monitor.admin': '服務治理',
'menu.monitor.doc': '接口文檔',
+ 'menu.report': '報表管理',
+ 'menu.report.report_setting': '報表配置',
+ 'menu.report.report_list': '報表列表',
'menu.tool': '研發工具',
'menu.tool.code': '代碼生成',
'menu.tool.datasource': '數據源管理',
diff --git a/src/models/report.js b/src/models/report.js
new file mode 100644
index 0000000..d547ac8
--- /dev/null
+++ b/src/models/report.js
@@ -0,0 +1,39 @@
+import { REPORT_NAMESPACE } from '../actions/report';
+import { list } from '../services/report';
+
+export default {
+ namespace: REPORT_NAMESPACE,
+ state: {
+ data: {
+ list: [],
+ pagination: false,
+ },
+ detail: {},
+ },
+ effects: {
+ *fetchList({ payload }, { call, put }) {
+ const response = yield call(list, payload);
+ if (response.success) {
+ yield put({
+ type: 'saveList',
+ payload: {
+ list: response.data.records,
+ pagination: {
+ total: response.data.total,
+ current: response.data.current,
+ pageSize: response.data.size,
+ },
+ },
+ });
+ }
+ },
+ },
+ reducers: {
+ saveList(state, action) {
+ return {
+ ...state,
+ data: action.payload,
+ };
+ },
+ },
+};
diff --git a/src/pages/Dashboard/Workplace.js b/src/pages/Dashboard/Workplace.js
index 7daf8bc..58669e7 100644
--- a/src/pages/Dashboard/Workplace.js
+++ b/src/pages/Dashboard/Workplace.js
@@ -20,14 +20,14 @@ class Workplace extends PureComponent {
-
+
@@ -212,7 +212,25 @@ class Workplace extends PureComponent {
-
+
+
+ 1.升级 SpringBoot 至 2.2.11.RELEASE
+ 2.升级 SpringCloud 至 Hoxton.SR8
+ 3.升级 AlibabaCloud 至 2.2.3.RELEASE
+ 4.升级 Knife4j 至 2.0.6
+ 5.升级 Swagger 至 2.10.5
+ 6.升级 SwaggerModel 至 1.6.2
+ 7.升级 SpringPlugin 至 2.2.0.RELEASE
+ 8.升级 JustAuth 至 1.15.8
+ 9.升级 FastJson 至 1.2.74
+ 10.升级 Guava 至 30.0-jre
+ 11.升级 JJWT 至 0.11.2
+ 12.集成UReport2,新增在线报表模块
+ 13.优化Swagger封装以支持Knife4j最新API
+ 14.引入Knife4j增强配置,生产环境将完全隔离文档访问
+ 15.优化架构,适配最新版本API
+ 16.优化部署脚本
+
1.升级至 SpringCloud Hoxton.SR8
2.升级至 Mybatis-Plus 3.4.0
diff --git a/src/pages/Login/Login.js b/src/pages/Login/Login.js
index 588f464..d67906a 100644
--- a/src/pages/Login/Login.js
+++ b/src/pages/Login/Login.js
@@ -78,8 +78,10 @@ class LoginPage extends Component {
handleSubmit = (err, values) => {
const { type } = this.state;
if (!err) {
- const { dispatch,
- tenant: { info } } = this.props;
+ const {
+ dispatch,
+ tenant: { info },
+ } = this.props;
const { tenantId } = info;
dispatch({
type: 'login/login',
diff --git a/src/pages/Report/Report.js b/src/pages/Report/Report.js
new file mode 100644
index 0000000..b25fea1
--- /dev/null
+++ b/src/pages/Report/Report.js
@@ -0,0 +1,161 @@
+import React, { Fragment, PureComponent } from 'react';
+import { connect } from 'dva';
+import { Button, Col, Divider, Form, Input, message, Modal, Row, Tag } from 'antd';
+import Panel from '../../components/Panel';
+import { REPORT_LIST } from '../../actions/report';
+import Grid from '../../components/Sword/Grid';
+import { reportUrl } from '../../defaultSettings';
+import { remove } from '../../services/report';
+
+const FormItem = Form.Item;
+
+@connect(({ report, loading }) => ({
+ report,
+ loading: loading.models.report,
+}))
+@Form.create()
+class Report extends PureComponent {
+ state = {
+ params: {},
+ };
+
+ // ============ 查询 ===============
+ handleSearch = params => {
+ const { dispatch } = this.props;
+ this.setState({ params });
+ dispatch(REPORT_LIST(params));
+ };
+
+ handleRemove = id => {
+ const { params } = this.state;
+ const refresh = this.handleSearch;
+ Modal.confirm({
+ title: '删除确认',
+ content: '确定删除该条记录?',
+ okText: '确定',
+ okType: 'danger',
+ cancelText: '取消',
+ onOk() {
+ remove({ ids: id }).then(resp => {
+ if (resp.success) {
+ message.success(resp.msg);
+ refresh(params);
+ } else {
+ message.error(resp.msg || '删除失败');
+ }
+ });
+ },
+ onCancel() {},
+ });
+ };
+
+ handleDesign = name => {
+ window.open(`${reportUrl}/designer?_u=blade-${name}`);
+ };
+
+ handlePreview = name => {
+ window.open(`${reportUrl}/preview?_u=blade-${name}`);
+ };
+
+ // ============ 查询表单 ===============
+ renderSearchForm = onReset => {
+ const { form } = this.props;
+ const { getFieldDecorator } = form;
+
+ return (
+
+
+
+ {getFieldDecorator('name')()}
+
+
+
+
+
+
+
+
+
+ );
+ };
+
+ renderActionButton = (keys, rows) => (
+
+ {
+ this.handleRemove(keys[0]);
+ }}
+ >
+ 删除
+
+
+ {
+ this.handleDesign(rows[0].name);
+ }}
+ >
+ 设计
+
+
+ {
+ this.handlePreview(rows[0].name);
+ }}
+ >
+ 预览
+
+
+ );
+
+ render() {
+ const code = 'report';
+
+ const {
+ form,
+ loading,
+ report: { data },
+ } = this.props;
+
+ const columns = [
+ {
+ title: '文件名',
+ dataIndex: 'name',
+ render: name => (
+
+
+ v{name}
+
+
+ ),
+ },
+ {
+ title: '创建时间',
+ dataIndex: 'createTime',
+ },
+ {
+ title: '更新时间',
+ dataIndex: 'updateTime',
+ },
+ ];
+
+ return (
+
+
+
+ );
+ }
+}
+export default Report;
diff --git a/src/services/report.js b/src/services/report.js
new file mode 100644
index 0000000..05084d4
--- /dev/null
+++ b/src/services/report.js
@@ -0,0 +1,14 @@
+import { stringify } from 'qs';
+import func from '../utils/Func';
+import request from '../utils/request';
+
+export async function list(params) {
+ return request(`/api/blade-report/report/rest/list?${stringify(params)}`);
+}
+
+export async function remove(params) {
+ return request('/api/blade-report/report/rest/remove', {
+ method: 'POST',
+ body: func.toFormData(params),
+ });
+}