瀏覽代碼

登录loading/错误提示详情/请求超时默认设为8s并允许自定义/数据源请求数据列类型【Double】添加

zhuth 7 年之前
父節點
當前提交
c9cc42b824

+ 23 - 12
src/components/common/login/login.jsx

@@ -1,6 +1,6 @@
 import React from 'react'
 import Login from 'ant-design-pro/lib/Login'
-import { Alert, Checkbox, message } from 'antd'
+import { Alert, Checkbox, Icon, message } from 'antd'
 import { Link, Redirect } from 'dva/router'
 import { connect } from 'dva'
 import * as service from '../../../services/index'
@@ -27,7 +27,8 @@ class LoginComponent extends React.Component {
     state = {
         notice: '',
         autoLogin: window.localStorage.getItem('autoLogin') ? window.localStorage.getItem('autoLogin') === 'true' : true,
-        redirectToReferrer: false
+        redirectToReferrer: false,
+        fetching: false
     };
 
     onSubmit = (err, values) => {
@@ -54,7 +55,9 @@ class LoginComponent extends React.Component {
             userName: username,
             passWord: password
         };
-        try{
+        this.setState({
+            fetching: true
+        }, () => {
             service.fetch({
                 url: URLS.LOGIN,
                 body: body
@@ -82,19 +85,24 @@ class LoginComponent extends React.Component {
                 };
                 dispatch({ type: 'main/setCurrentUser', user: currentUser });
                 authenticate(token, expireTime, currentUser, autoLogin, () => {
-                    this.setState({ redirectToReferrer: true });
+                    this.setState({
+                        redirectToReferrer: true,
+                        fetching: false
+                    });
                 });
             }).catch(ex => {
-                console.error('fetch error', ex);
+                this.setState({
+                    fetching: false
+                });
+                message.error('登录失败: ' + ex);
+                console.error('登录失败', ex);
             });
-        }catch(e) {
-            message.error('登录失败');
-        }
+        });
     };
 
     render() {
         const { from } = this.props.location.state || { from: { pathname: "/" } };
-        const { notice, autoLogin, redirectToReferrer } = this.state;
+        const { notice, autoLogin, fetching, redirectToReferrer } = this.state;
 
         const defaultAccount = window.localStorage.getItem('account');
         const defaultPassword = window.localStorage.getItem('password');
@@ -116,7 +124,7 @@ class LoginComponent extends React.Component {
                                 notice &&
                                 <Alert style={{ marginBottom: 24 }} message={notice} type="error" showIcon closable />
                             }
-                            <UserName name="username" placeholder='输入用户名' defaultValue={autoLogin ? defaultAccount : ''} onChange={() => {
+                            <UserName name="username" disabled={fetching} placeholder='输入用户名' defaultValue={autoLogin ? defaultAccount : ''} onChange={() => {
                                 this.setState({
                                     notice: ''
                                 });
@@ -124,7 +132,7 @@ class LoginComponent extends React.Component {
                                 required: true,
                                 message: '用户名不能为空'
                             }]}/>
-                            <Password name="password" placeholder='输入密码' defaultValue={autoLogin ? defaultPassword : ''} onChange={() => {
+                            <Password name="password" disabled={fetching} placeholder='输入密码' defaultValue={autoLogin ? defaultPassword : ''} onChange={() => {
                                 this.setState({
                                     notice: ''
                                 });
@@ -136,7 +144,10 @@ class LoginComponent extends React.Component {
                                 <Checkbox defaultChecked={autoLogin} onChange={this.changeAutoLogin}>记住密码</Checkbox>
                                 <a style={{ float: 'right' }} href="">忘记密码</a>
                             </div>
-                            <Submit>登录</Submit>
+                            <Submit disabled={fetching}>
+                                {fetching && <Icon type="loading" theme="outlined" />}
+                                {fetching ? '登录中...' : '登录'}
+                            </Submit>
                             <div>
                                 <Link to="/register">
                                     <span style={{ float: 'right' }} href="">注册</span>

+ 5 - 0
src/components/dashboardDesigner/chartView.jsx

@@ -47,6 +47,11 @@ class ChartView extends React.Component {
                     const { columns, dataSource } = chartOption;
                     const tableRowHeight = 38;
                     children = <Table
+                        key={hashcode({
+                            columns,
+                            dataSource,
+                            tableBodyHeight
+                        })}
                         className='dashboard-table'
                         size='small'
                         scroll={{

+ 0 - 8
src/components/dashboardDesigner/configForm.jsx

@@ -16,14 +16,6 @@ class ConfigForm extends React.Component {
         };
     }
 
-    componentDidMount() {
-        const { reset, dispatch } = this.props;
-        dispatch({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: true });
-        window.setTimeout(() => {
-            reset(true);
-            dispatch({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: false });
-        }, 900);
-    }
 
     addRelationColumn = () => {
         const { dispatch } = this.props;

+ 5 - 1
src/components/dashboardDesigner/content.jsx

@@ -24,6 +24,10 @@ class DashboardDesignerContent extends React.Component {
     }
 
     componentDidMount() {
+        // 这里强制延迟2.5s等待页面渲染结束,也许有更好的办法。
+        window.setTimeout(() => {
+            this.refreshContentSize(true);
+        }, 2500);
         window.addEventListener("resize", () => {
             this.refreshContentSize(true);
         });
@@ -207,7 +211,7 @@ class DashboardDesignerContent extends React.Component {
                         <ViewLayout contentSize={contentSize} reset={this.refreshContentSize} editMode={editMode}/>
                     </Content>
                     <Sider className='config-sider' width={(isOwner && editMode) ? 380 : 0}>
-                        <ConfigForm reset={this.refreshContentSize}/>
+                        <ConfigForm/>
                     </Sider>
                 </Layout>
             </Content>

+ 5 - 5
src/components/datasource/columnType.json

@@ -1,5 +1,5 @@
 [{
-    "dataType": ["String", "BigDecimal"],
+    "dataType": ["String", "BigDecimal", "Double"],
     "columnType": "index",
     "label": "索引"
 }, {
@@ -7,19 +7,19 @@
     "columnType": "time",
     "label": "时间"
 }, {
-    "dataType": ["String", "BigDecimal"],
+    "dataType": ["String", "BigDecimal", "Double"],
     "columnType": "categorical",
     "label": "类别"
 }, {
-    "dataType": ["BigDecimal"],
+    "dataType": ["BigDecimal", "Double"],
     "columnType": "scale",
     "label": "标量"
 }, {
-    "dataType": ["BigDecimal", "String"],
+    "dataType": ["BigDecimal", "String", "Double"],
     "columnType": "ordinal",
     "label": "序值"
 }, {
-    "dataType": ["String", "BigDecimal"],
+    "dataType": ["String", "BigDecimal", "Double"],
     "columnType": "string",
     "label": "文本"
 }]

+ 14 - 14
src/models/chart.js

@@ -161,7 +161,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('请求图表列表失败');
+                message.error('请求图表列表失败: ' + e);
             }
         },
         *remoteDetail(action, { select, call, put }) {
@@ -256,7 +256,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('解析图表错误');
+                message.error('解析图表错误: ' + e);
             }
         },
         *remoteAdd(action, { select, call, put }) {
@@ -327,7 +327,7 @@ export default {
                 }
             }catch(e) {
                 console.error(e);
-                message.error('新增失败');
+                message.error('新增失败: ' + e);
             }
         },
         *remoteModify(action, { select, call, put }) {
@@ -398,7 +398,7 @@ export default {
                 }
             }catch(e) {
                 console.error(e);
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         },
         *remoteDelete(action, { select, call, put, takeEvery, takeLatest }) {
@@ -425,7 +425,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
         
@@ -456,7 +456,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('读取图表分组列表错误');
+                message.error('读取图表分组列表错误: ' + e);
             }
         },
         /**
@@ -502,7 +502,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('添加分组失败');
+                message.error('添加分组失败: ' + e);
             }
         },
         /**
@@ -535,7 +535,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('修改分组失败');
+                message.error('修改分组失败: ' + e);
             }
         },
         /**
@@ -565,7 +565,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('修改分组失败');
+                message.error('修改分组失败: ' + e);
             }
         },
         *remoteDeleteGroup(action, { select, call, put }) {
@@ -595,7 +595,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('删除分组失败');
+                message.error('删除分组失败: ' + e);
             }
         },
         *remoteMoveGroup(action, { select, call, put }) {
@@ -741,7 +741,7 @@ export default {
                 yield put({ type: 'remoteModifyGroups', groups: modifyGroups });
             }catch(e) {
                 console.log(e);
-                message.error('位置调整失败');
+                message.error('位置调整失败: ' + e);
             }
         },
         /**
@@ -768,7 +768,7 @@ export default {
                 }
             } catch(e) {
                 console.log(e);
-                message.error('设置分组失败');
+                message.error('设置分组失败: ' + e);
             }
         },
         *transfer(action, { put, call, select }) {
@@ -796,11 +796,11 @@ export default {
                     message.success('移交成功');
                 }else {
                     console.log(body, (res.err || res.data.msg));
-                    message.error('移交失败');
+                    message.error('移交失败: ' + (res.err || res.data.msg));
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('移交失败');
+                message.error('移交失败: ' + e);
             }
         }
     },

+ 21 - 15
src/models/chartDesigner.js

@@ -210,7 +210,7 @@ export default {
                 }
             }catch(e) {
                 console.error(e);
-                message.error('新增失败');
+                message.error('新增失败: ' + e);
             }
         },
         /**
@@ -284,7 +284,7 @@ export default {
                 }
             }catch(e) {
                 console.error(e);
-                message.error('创建副本失败');
+                message.error('创建副本失败: ' + e);
             }
         },
         *remoteDataColumn(action, { select, call, put }) {
@@ -316,7 +316,7 @@ export default {
                     yield put({ type: 'silentSetField', name: 'columns', value: [] });
                 }
             }catch(e) {
-                message.error('请求列数据失败');
+                message.error('请求列数据失败: ' + e);
                 yield put({ type: 'silentSetField', name: 'columns', value: [] });
             }
         },
@@ -396,7 +396,8 @@ export default {
                 
                 let res = yield call(service.fetch, {
                     url: URLS.CHART_BAR_OPTION,
-                    body: body
+                    body: body,
+                    timeout: 30000
                 });
                 console.log('请求柱状图数据', body, res);
                 if(!res.err && res.data.code > 0) {
@@ -410,7 +411,7 @@ export default {
             }catch(e) {
                 console.error(e);
                 yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
-                message.error('请求柱状图数据失败');
+                message.error('请求柱状图数据失败: ' + e);
             }
         },
         *fetchPieData(action, { select, call, put }) {
@@ -433,7 +434,8 @@ export default {
                 };
                 let res = yield call(service.fetch, {
                     url: URLS.CHART_PIE_OPTION,
-                    body: body
+                    body: body,
+                    timeout: 30000
                 });
                 console.log('请求饼图数据', body, res);
                 if(!res.err && res.data.code > 0) {
@@ -447,7 +449,7 @@ export default {
             }catch(e) {
                 console.error(e);
                 yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
-                message.error('请求饼图数据失败');
+                message.error('请求饼图数据失败: ' + e);
             }
         },
         *fetchLineData(action, { select, call, put }) {
@@ -469,7 +471,8 @@ export default {
                 };
                 let res = yield call(service.fetch, {
                     url: URLS.CHART_LINE_OPTION,
-                    body: body
+                    body: body,
+                    timeout: 30000
                 });
                 console.log('请求折线图数据', body, res);
                 if(!res.err && res.data.code > 0) {
@@ -483,7 +486,7 @@ export default {
             }catch(e) {
                 console.error(e);
                 yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
-                message.error('请求折线图数据失败');
+                message.error('请求折线图数据失败: ' + e);
             }
         },
         *fetchScatterData(action, { select, call, put }) {
@@ -505,7 +508,8 @@ export default {
                 };
                 let res = yield call(service.fetch, {
                     url: URLS.CHART_SCATTER_OPTION,
-                    body: body
+                    body: body,
+                    timeout: 30000
                 });
                 console.log('请求散点图数据', body, res);
                 if(!res.err && res.data.code > 0) {
@@ -519,7 +523,7 @@ export default {
             }catch(e) {
                 console.error(e);
                 yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
-                message.error('请求散点图数据失败');
+                message.error('请求散点图数据失败: ' + e);
             }
         },
         *fetchDataViewData(action, { select, call, put }) {
@@ -536,7 +540,8 @@ export default {
                 };
                 let res = yield call(service.fetch, {
                     url: URLS.CHART_DATAVIEW_OPTION,
-                    body: body
+                    body: body,
+                    timeout: 30000
                 });
                 console.log('请求表格数据', body, res);
                 if(!res.err && res.data.code > 0) {
@@ -550,7 +555,7 @@ export default {
             }catch(e) {
                 console.error(e);
                 yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
-                message.error('请求列表数据失败');
+                message.error('请求列表数据失败: ' + e);
             }
         },
         *fetchAggregateTableData(action, { select, call, put }) {
@@ -568,7 +573,8 @@ export default {
                 };
                 let res = yield call(service.fetch, {
                     url: URLS.CHART_AGGREGATETABLE_OPTION,
-                    body: body
+                    body: body,
+                    timeout: 30000
                 });
                 console.log('获得总体统计数据', body, res);
                 if(!res.err && res.data.code > 0) {
@@ -582,7 +588,7 @@ export default {
             }catch(e) {
                 console.error(e);
                 yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
-                message.error('请求统计数据失败');
+                message.error('请求统计数据失败: ' + e);
             }
         }
     },

+ 6 - 6
src/models/chartPolicy.js

@@ -124,7 +124,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('读取图表策略列表错误');
+                message.error('读取图表策略列表错误: ' + e);
             }
         },
         *remoteAdd(action, { put, call, select }) {
@@ -156,7 +156,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('添加失败');
+                message.error('添加失败: ' + e);
             }
         },
         *remoteModify(action, { put, call, select }) {
@@ -183,7 +183,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         },
         *remoteDelete(action, { put, call, select }) {
@@ -210,7 +210,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
         *remoteSetTarget(action, { put, call, select }) {
@@ -239,7 +239,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('设置对象失败');
+                message.error('设置对象失败: ' + e);
             }
         },
         /**
@@ -265,7 +265,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('获得图表列数据失败');
+                message.error('获得图表列数据失败: ' + e);
             }
         }
     },

+ 25 - 0
src/models/columnType.json

@@ -0,0 +1,25 @@
+[{
+    "dataType": ["String", "BigDecimal"],
+    "columnType": "index",
+    "label": "索引"
+}, {
+    "dataType": ["Date"],
+    "columnType": "time",
+    "label": "时间"
+}, {
+    "dataType": ["String", "BigDecimal"],
+    "columnType": "categorical",
+    "label": "类别"
+}, {
+    "dataType": ["BigDecimal", "Double"],
+    "columnType": "scale",
+    "label": "标量"
+}, {
+    "dataType": ["BigDecimal", "String"],
+    "columnType": "ordinal",
+    "label": "序值"
+}, {
+    "dataType": ["String", "BigDecimal"],
+    "columnType": "string",
+    "label": "文本"
+}]

+ 21 - 12
src/models/dashboard.js

@@ -57,7 +57,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('请求看板列表失败')
+                message.error('请求看板列表失败: ' + e)
             }
         },
         *remoteDetail(action, { select, call, put }) {
@@ -66,6 +66,7 @@ export default {
                 return
             }
             try {
+                yield put({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: true });
                 const res = yield call(service.fetch, {
                     url: URLS.DASHBOARD_DETAIL,
                     body: code
@@ -87,10 +88,16 @@ export default {
                         creatorCode: resData.createId + '',
                         creatorName: resData.createBy,
                         createTime: resData.createDate,
-                        dataSources: items.map(item => ({
-                            code: item.dataSourceCode,
-                            name: item.dataSourceName
-                        })),
+                        dataSources: items.map(item => {
+                            if(item.viewType === 'chart') {
+                                return {
+                                    code: item.dataSourceCode,
+                                    name: item.dataSourceName
+                                }
+                            }else {
+                                return null
+                            }
+                        }).filter(item => !!item),
                         relationColumns: relationColumns,
                         editMode: currentUser.code === resData.createId + ''
                     }
@@ -108,7 +115,9 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('解析看板错误');
+                message.error('解析看板错误: ' + e);
+            }finally {
+                yield put({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: false });
             }
         },
         *remoteAdd(action, { select, call, put }) {
@@ -136,7 +145,7 @@ export default {
                 } 
             }catch(e) {
                 console.log(e);
-                message.error('保存失败');
+                message.error('保存失败: ' + e);
             }
         },
         *remoteQucikAdd(action, { select, call, put }) {
@@ -164,7 +173,7 @@ export default {
                 } 
             }catch(e) {
                 console.log(e);
-                message.error('保存失败');
+                message.error('保存失败: ' + e);
             }
         },
         *remoteModify(action, { select, call, put }) {
@@ -193,7 +202,7 @@ export default {
                 } 
             }catch(e) {
                 console.error(e);
-                message.error('保存失败');
+                message.error('保存失败: ' + e);
             }
         },
         *remoteDelete(action, { select, call, put }) {
@@ -220,7 +229,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
         *share(action, { put, call, select }) {
@@ -246,7 +255,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('分发失败');
+                message.error('分发失败: ' + e);
             }
         },
         *transfer(action, { put, call, select }) {
@@ -278,7 +287,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('移交失败');
+                message.error('移交失败: ' + e);
             }
         }
     },

+ 5 - 3
src/models/dashboardDesigner.js

@@ -340,7 +340,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e, body);
-                message.error('请求列数据失败');
+                message.error('请求列数据失败: ' + e);
             }
         },
         *changeFilters(action, { put, call, select }) {
@@ -380,6 +380,7 @@ export default {
             }
 
             try {
+                yield put({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: true });
                 yield put({ type: 'setItemFetching', code: chartCode, fetching: true });
                 const res = yield call(service.fetch, {
                     url: URLS.CHART_OPTION,
@@ -399,8 +400,9 @@ export default {
             }catch(e) {
                 console.error(body, e);
                 yield put({ type: 'setItemChartOption', code: chartCode, chartOption: {} });
-                message.error('请求图表展示数据失败');
+                message.error('请求图表展示数据失败: ' + e);
             }finally {
+                yield put({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: false });
                 yield put({ type: 'setItemFetching', code: chartCode, fetching: false });
             }
         },
@@ -415,7 +417,7 @@ export default {
                 yield put({ type: 'silentSetField', name: 'loading', value: false });
             }catch(e) {
                 console.log(e);
-                message.error('生成缩略图失败');
+                message.error('生成缩略图失败: ' + e);
             }
         }
     },

+ 5 - 5
src/models/dataConnect.js

@@ -130,7 +130,7 @@ export default {
                     message.error('读取数据连接配置列表错误: ' + (res.err || res.data.msg));
                 }
             }catch(e) {
-                message.error('读取数据连接配置列表错误');
+                message.error('读取数据连接配置列表错误: ' + e);
                 console.log(e);
             }
         },
@@ -171,7 +171,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('校验失败');
+                message.error('校验失败: ' + e);
             }
         },
         *remoteAdd(action, { select, call, put, takeEvery, takeLatest }) {
@@ -237,7 +237,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('新增失败');
+                message.error('新增失败: ' + e);
             }
         },
         *remoteModify(action, { select, call, put }) {
@@ -312,7 +312,7 @@ export default {
                     yield put({ type: 'setNewModelInvalid', name: 'invalid', value: true });
                 }
             }catch(e) {
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         },
         *remoteDelete(action, { select, call, put, takeEvery, takeLatest }) {
@@ -339,7 +339,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         }
     },

+ 1 - 1
src/models/dataList.js

@@ -48,7 +48,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('请求数据列表失败');
+                message.error('请求数据列表失败: ' + e);
             }
         }
     },

+ 16 - 15
src/models/dataSource.js

@@ -192,7 +192,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('读取数据源列表错误');
+                message.error('读取数据源列表错误: ' + e);
             }
             
         },
@@ -244,7 +244,7 @@ export default {
                     message.error('新增失败: ' + (res.err || res.data.msg));
                 }
             }catch(e) {
-                message.error('新增失败');
+                message.error('新增失败: ' + e);
 
             }
         },
@@ -305,7 +305,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('数据源解析错误');
+                message.error('数据源解析错误: ' + e);
                 yield put({ type: 'list', list: [] });
             }
         },
@@ -321,7 +321,8 @@ export default {
             try{
                 const res = yield call(service.fetch, {
                     url: URLS.DATASOURCE_QUERY_SQLCOLUMNS,
-                    body: body
+                    body: body,
+                    timeout: 120000
                 });
     
                 const getColumnType = (dataType) => {
@@ -383,7 +384,7 @@ export default {
                 console.log(body)
                 yield put({ type: 'setNewModelInvalidSQL', value: true });
                 yield put({ type: 'setNewModelField', name: 'columns', value: [] });
-                message.error('请求列数据错误');
+                message.error('请求列数据错误: ' + e);
             }
         },
         *remoteDelete(action, { select, call, put }) {
@@ -409,7 +410,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
         *remoteModify(action, { select, call, put }) {
@@ -463,7 +464,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         },
 
@@ -494,7 +495,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('请求数据源列表错误');
+                message.error('请求数据源列表错误: ' + e);
             }
         },
         /**
@@ -540,7 +541,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('新增分组失败');
+                message.error('新增分组失败: ' + e);
             }
         },
         /**
@@ -573,7 +574,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('修改分组失败');
+                message.error('修改分组失败: ' + e);
             }
         },
         /**
@@ -604,7 +605,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('修改分组失败');
+                message.error('修改分组失败: ' + e);
             }
         },
         *remoteDeleteGroup(action, { select, call, put }) {
@@ -634,7 +635,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('删除分组失败');
+                message.error('删除分组失败: ' + e);
             }
         },
         *remoteMoveGroup(action, { select, call, put }) {
@@ -780,7 +781,7 @@ export default {
                 yield put({ type: 'remoteModifyGroups', groups: modifyGroups });
             }catch(e) {
                 console.log(e);
-                message.error('位置调整失败');
+                message.error('位置调整失败: ' + e);
             }
         },
         /**
@@ -808,7 +809,7 @@ export default {
                 }
             } catch(e) {
                 console.log(e);
-                message.error('设置分组失败');
+                message.error('设置分组失败: ' + e);
             }
         },
         *transfer(action, { put, call, select }) {
@@ -841,7 +842,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('移交失败');
+                message.error('移交失败: ' + e);
             }
         }
     },

+ 5 - 5
src/models/dataSourcePolicy.js

@@ -114,7 +114,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('读取数据源策略列表错误');
+                message.error('读取数据源策略列表错误: ' + e);
             }
         },
         *remoteAdd(action, { put, call, select }) {
@@ -147,7 +147,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('添加失败');
+                message.error('添加失败: ' + e);
             }
         },
         *remoteModify(action, { put, call, select }) {
@@ -175,7 +175,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         },
         *remoteDelete(action, { put, call, select }) {
@@ -202,7 +202,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
         *remoteSetTarget(action, { put, call, select }) {
@@ -231,7 +231,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('设置对象失败');
+                message.error('设置对象失败: ' + e);
             }
         }
     },

+ 2 - 1
src/models/defaultColumnType.json

@@ -1,5 +1,6 @@
 {
     "String": "categorical",
     "Date": "time",
-    "BigDecimal": "scale"
+    "BigDecimal": "scale",
+    "Double": "scale"
 }

+ 1 - 1
src/models/main.js

@@ -68,7 +68,7 @@ export default {
                 yield put({ type: 'userGroup/list', list: [] });
             }catch(e) {
                 console.log(e);
-                message.error('注销失败');
+                message.error('注销失败: ' + e);
             }
         }
     },

+ 4 - 1
src/models/parseChartOption.js

@@ -1,6 +1,7 @@
 /**
  * 将请求返回的图表展示数据解析为前台展示用的config
  */
+import moment from 'moment'
 import STATISTICS_OPTION from '../components/chartDesigner/sections/statisticsOption.json'
 
 export default function(viewType, data, chartConfig) {
@@ -288,11 +289,13 @@ function dataViewOption(data, dataViewConfig) {
     let columns = dataViewConfig.viewColumns || [];
     let dataSource = resData || [];
 
+    console.log(columns);
     let option = {
         columns: columns.map(c => ({
             title: c.label,
             dataIndex: c.name,
-            width: 200
+            width: 200,
+            render: c.type === 'time' ? (v, r, i) => moment(v).format('YYYY-MM-DD') : void(0)
         })),
         dataSource: dataSource.map((d, i) => {
             return { ...d, key: i}

+ 2 - 2
src/models/user.js

@@ -42,7 +42,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('请求用户列表失败');
+                message.error('请求用户列表失败: ' + e);
             }
         },
         *remoteModify(action, { put, call, select }) {
@@ -61,7 +61,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         }
     },

+ 7 - 7
src/models/userGroup.js

@@ -112,7 +112,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('请求用户组列表失败');
+                message.error('请求用户组列表失败: ' + e);
             }
         },
         *remoteAdd(action, { put, call, select }) {
@@ -142,7 +142,7 @@ export default {
                 }
             }catch(e) {
                 console.log(e);
-                message.error('新增失败');
+                message.error('新增失败: ' + e);
             }
         },
         *remoteModify(action, { put, call, select }) {
@@ -168,7 +168,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('修改失败');
+                message.error('修改失败: ' + e);
             }
         },
         *remoteDelete(action, { put, call, select }) {
@@ -188,7 +188,7 @@ export default {
                 }
             }catch(e) {
                 console.log([group.code], e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
         *chageSelectedGroup(action, { put, call, select }) {
@@ -224,7 +224,7 @@ export default {
                 }
             }catch(e) {
                 console.log(groupCode, e);
-                message.error('请求用户组成员列表失败');
+                message.error('请求用户组成员列表失败: ' + e);
             }
         },
         *remoteMemberAdd(action, { put, call, select }) {
@@ -247,7 +247,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('添加失败');
+                message.error('添加失败: ' + e);
             }
         },
         *remoteMemberDelete(action, { put, call, select }) {
@@ -269,7 +269,7 @@ export default {
                 }
             }catch(e) {
                 console.log(body, e);
-                message.error('删除失败');
+                message.error('删除失败: ' + e);
             }
         },
     },

+ 1 - 1
src/routes/mainLayout.less

@@ -20,7 +20,7 @@ html,body,#root{
     }
     .main-content {
         height: 100%;
-        padding: 10px 10%;
+        padding: 10px 5%;
         background-color: white;
         overflow: auto;
     }

+ 3 - 2
src/services/index.js

@@ -5,7 +5,7 @@ export function fetch(option) {
   // client.open('POST', 'http://192.168.253.129:8080/showHistogram');
   // client.setRequestHeader('Content-Type', 'application/json');
   // client.send(JSON.stringify(values));
-  const { url, body } = option;
+  const { url, body, timeout } = option;
   const token = window.localStorage.getItem("token");
   // if(token === 'false') {
   //   return {err: 'token已过期'}
@@ -16,7 +16,8 @@ export function fetch(option) {
       token: token,
       'Content-Type': 'application/json'
     },
-    body: JSON.stringify(body)
+    body: JSON.stringify(body),
+    timeout
   });
   // return request(`http://localhost:8001/api/users?_page=1&_limit=3`);
 }

+ 1 - 1
src/utils/request.js

@@ -47,7 +47,7 @@ export default function request(url, options) {
     }) {
       this.url = url;
       this.retry = retry || 0;
-      this.timeout = timeout || 60000;
+      this.timeout = timeout || 8 * 1000;
       this.options = options;
     }