Browse Source

筛选异步加载类别列数据/完善错误提示信息

zhuth 7 years ago
parent
commit
231e0c25ae

+ 1 - 1
src/components/chartDesigner/content.jsx

@@ -19,7 +19,7 @@ const { TabPane } = Tabs
 
 
 class ChartDesignerContent extends React.Component {
 class ChartDesignerContent extends React.Component {
     render() {
     render() {
-        const { chartDesigner, dispatch, loading } = this.props;
+        const { chartDesigner, dispatch } = this.props;
         const { baseConfig, autoRefresh } = chartDesigner;
         const { baseConfig, autoRefresh } = chartDesigner;
         const { viewType } = baseConfig;
         const { viewType } = baseConfig;
         const formItemLayout = {
         const formItemLayout = {

+ 58 - 12
src/components/chartDesigner/sections/filterBox.jsx

@@ -1,10 +1,12 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Modal, Form, Row, Col, Input, Icon, Button, Select, InputNumber, DatePicker } from 'antd';
+import React from 'react'
+import PropTypes from 'prop-types'
+import { Modal, Form, Row, Col, Input, Icon, Button, Select, InputNumber, DatePicker, Spin } from 'antd'
 import OPERATORS from './filterOperators.json';
 import OPERATORS from './filterOperators.json';
-import './filterBox.less';
-const FormItem = Form.Item;
-const SelectOption = Select.Option;
+import './filterBox.less'
+import * as service from '../../../services/index'
+import URLS from '../../../constants/url'
+const FormItem = Form.Item
+const SelectOption = Select.Option
 
 
 let uuid = 0;
 let uuid = 0;
 class FilterBox extends React.Component {
 class FilterBox extends React.Component {
@@ -14,7 +16,9 @@ class FilterBox extends React.Component {
         super(props);
         super(props);
         this.state = {
         this.state = {
             columns: props.columns || [],
             columns: props.columns || [],
-            filterData: props.filterData || []
+            filterData: props.filterData || [],
+            fetching: false, // 请求列数据状态
+            columnData: [], // 列数据
         }
         }
     }
     }
 
 
@@ -75,6 +79,7 @@ class FilterBox extends React.Component {
         const { form } = this.props;
         const { form } = this.props;
         const filters = form.getFieldValue('filters');
         const filters = form.getFieldValue('filters');
 
 
+        this.setState({ columnData: [] });
         form.setFieldsValue({
         form.setFieldsValue({
             filters: filters.map((f) => {
             filters: filters.map((f) => {
                 if (f.key === filter.key) {
                 if (f.key === filter.key) {
@@ -104,6 +109,7 @@ class FilterBox extends React.Component {
                     f.key = uuid++;
                     f.key = uuid++;
                     f.operator = value.key;
                     f.operator = value.key;
                     f.operatorLabel = value.label;
                     f.operatorLabel = value.label;
+                    f.value1 = f.value2 = undefined;
                 }
                 }
                 return f;
                 return f;
             })
             })
@@ -158,8 +164,45 @@ class FilterBox extends React.Component {
         hideFilterBox();
         hideFilterBox();
     }
     }
 
 
+    fetchColumnData = (column) => {
+        const { chartCode } = this.props;
+        const { columnData } = this.state;
+        if(!columnData || columnData.length === 0) {
+            this.setState({ columnData: [], fetching: true }, () => {
+                const body = {
+                    id: chartCode,
+                    columnName: column.name
+                };
+                service.fetch({
+                    url: URLS.CHART_QUERY_COLUMNDATA,
+                    body: body,
+                }).then(r => {
+                    if(!r.err && r.data.code > 0) {
+                        return r;
+                    }else {
+                        let obj = {};
+                        throw obj;
+                    }
+                }).then(r => {
+                    console.log('获得下拉数据', body, r);
+                    const resData = r.data.data || [];
+                    this.setState({
+                        columnData: resData.map(d => d || 'null'),
+                        fetching: false
+                    });
+                }).catch(ex => {
+                    this.setState({
+                        columnData: [],
+                        fetching: false
+                    });
+                    console.error('fetch error', ex);
+                });
+            });
+        }
+    }
+
     getFilterValueField = (key, type, operator, index) => {
     getFilterValueField = (key, type, operator, index) => {
-        const { columns } = this.state;
+        const { columns, fetching, columnData } = this.state;
         let field;
         let field;
         const { form } = this.props;
         const { form } = this.props;
         const filters = form.getFieldValue('filters');
         const filters = form.getFieldValue('filters');
@@ -174,14 +217,17 @@ class FilterBox extends React.Component {
         }else if(type === 'time') {
         }else if(type === 'time') {
             field = <DatePicker onChange={(value) => {this.changeFilterValue(filter, value, index)}}/>
             field = <DatePicker onChange={(value) => {this.changeFilterValue(filter, value, index)}}/>
         }else if(type === 'categorical') {
         }else if(type === 'categorical') {
-            field = <Select 
-                mode={operator==='in'?'multiple':''}
+            field = (<Select 
+                mode={(operator==='in' || operator === 'noIn' ) ? 'multiple' : ''}
+                showSearch
+                notFoundContent={fetching ? <Spin size="small" /> : '无'}
+                onFocus={() => {this.fetchColumnData(column)}}
                 onChange={(value) => {this.changeFilterValue(filter, value, index)}}
                 onChange={(value) => {this.changeFilterValue(filter, value, index)}}
             >
             >
-                { column.selection.map((s, i) => {
+                { columnData.map((s, i) => {
                     return <SelectOption key={i} value={s}>{s}</SelectOption>
                     return <SelectOption key={i} value={s}>{s}</SelectOption>
                 }) }
                 }) }
-            </Select>
+            </Select>)
         }else {
         }else {
             field = <Input onBlur={(e) => {this.changeFilterValue(filter, e.target.value, index)}}/> 
             field = <Input onBlur={(e) => {this.changeFilterValue(filter, e.target.value, index)}}/> 
         }
         }

+ 3 - 3
src/components/chartDesigner/sections/toolbar.jsx

@@ -88,8 +88,8 @@ class Toolbar extends React.Component {
     }
     }
 
 
     render() {
     render() {
-        const filters = this.props.chartDesigner.filters;
-        const columns = this.props.chartDesigner.columns;
+        const { chartDesigner } = this.props;
+        const { code, filters, columns } = chartDesigner;
         const { visibleFilterBox } = this.state;
         const { visibleFilterBox } = this.state;
 
 
         let tags = filters.map((f, i)=>{
         let tags = filters.map((f, i)=>{
@@ -129,7 +129,7 @@ class Toolbar extends React.Component {
                         })
                         })
                     }}>查看列</Button>
                     }}>查看列</Button>
                 </div>
                 </div>
-                <FilterBox key={Math.random()} columns={columns} filterData={filters} visibleFilterBox={visibleFilterBox} showFilterBox={this.showFilterBox} hideFilterBox={this.hideFilterBox} createFilters={this.createFilters} />  
+                <FilterBox key={Math.random()} chartCode={code} columns={columns} filterData={filters} visibleFilterBox={visibleFilterBox} showFilterBox={this.showFilterBox} hideFilterBox={this.hideFilterBox} createFilters={this.createFilters} />  
             </div>
             </div>
         );
         );
     }
     }

+ 9 - 5
src/components/common/loading.jsx

@@ -3,10 +3,13 @@ import { Spin } from 'antd'
 import { connect } from 'dva'
 import { connect } from 'dva'
 import './loading.less'
 import './loading.less'
 
 
-const Loading = ({ loading }) => {
+const Loading = ({ loading, loadModels }) => {
+    loadModels.unshift('loading...');
     return (
     return (
-        <div className='loading-box'style={{ display: loading ? 'block' : 'none' }}>
-            <Spin size="large"/>
+        <div className='loading-box' style={{ display: loading ? 'block' : 'none' }} >
+            <Spin size="large" tip={loadModels.map((m, i) => {
+                return <span key={i}>{m}</span>
+            })}/>
         </div>
         </div>
     );
     );
 }
 }
@@ -14,13 +17,14 @@ const Loading = ({ loading }) => {
 function mapStateToProps(state) {
 function mapStateToProps(state) {
     const models = state.present.loading.models;
     const models = state.present.loading.models;
     let loading = false;
     let loading = false;
+    let loadModels = [];
     for(let model in models) {
     for(let model in models) {
         if(models[model]) {
         if(models[model]) {
             loading = true;
             loading = true;
-            break;
+            loadModels.push(model);
         }
         }
     }
     }
-    return { loading: loading };
+    return { loading, loadModels };
 }
 }
 
 
 export default connect(mapStateToProps)(Loading)
 export default connect(mapStateToProps)(Loading)

+ 10 - 1
src/components/common/loading.less

@@ -3,5 +3,14 @@
     margin: 0 auto;
     margin: 0 auto;
     top: 60px;
     top: 60px;
     right: 20px;
     right: 20px;
-    z-index: 9999;
+    z-index: 4;
+    .ant-spin {
+        .ant-spin-text {
+            display: flex;
+            flex-direction: column;
+            span {
+                text-align: left;
+            }
+        }
+    }
 }
 }

+ 5 - 2
src/constants/url.js

@@ -1,3 +1,4 @@
+// const BASE_URL = 'http://192.168.253.189:8081/BI';
 const BASE_URL = 'http://192.168.253.129:8080';
 const BASE_URL = 'http://192.168.253.129:8080';
 
 
 /**后台接口地址 */
 /**后台接口地址 */
@@ -17,8 +18,6 @@ const URLS = {
 
 
     DATASOURCE_QUERY_SQLCOLUMNS: BASE_URL + '/implementSql', // 根据sql请求列数据信息
     DATASOURCE_QUERY_SQLCOLUMNS: BASE_URL + '/implementSql', // 根据sql请求列数据信息
 
 
-    DATASOURCE_QUERY_DATACOLUMNS: BASE_URL + '/getColumnData', // 获得数据源下的列数据
-
     /***************************************数据连接配置***************************************/
     /***************************************数据连接配置***************************************/
 
 
     DATACONNECT_ADD: BASE_URL + '/inputDatabases', // 新增数据连接配置
     DATACONNECT_ADD: BASE_URL + '/inputDatabases', // 新增数据连接配置
@@ -41,6 +40,10 @@ const URLS = {
 
 
     CHART_LIST: BASE_URL + '/getListCharts', // 获得图表列表
     CHART_LIST: BASE_URL + '/getListCharts', // 获得图表列表
 
 
+    DATASOURCE_QUERY_DATACOLUMNS: BASE_URL + '/getColumnData', // 获得数据源下的列
+
+    CHART_QUERY_COLUMNDATA: BASE_URL + '/showScreenData', // 获得列去重之后的数据
+
     CHART_DETAIL: BASE_URL + '/getChartsConfig', // 获得单个图表详细数据
     CHART_DETAIL: BASE_URL + '/getChartsConfig', // 获得单个图表详细数据
 
 
     CHART_BAR_OPTION: BASE_URL + '/showHistogram', // 请求柱状图展示数据
     CHART_BAR_OPTION: BASE_URL + '/showHistogram', // 请求柱状图展示数据

+ 17 - 27
src/models/chart.js

@@ -118,17 +118,6 @@ export default {
                 const res = yield call(service.fetch, {
                 const res = yield call(service.fetch, {
                     url: URLS.CHART_LIST
                     url: URLS.CHART_LIST
                 });
                 });
-                // let res = {data: {code:1,data: [
-                //     {
-                //         chartId:1,
-                //         chartName:'唱啊和你嘎哈噶沙发范德萨发生大发',
-                //         chartType: 'bar',
-                //         createBy:'azzz',
-                //         describes: '124132134111',
-                //         createDate:new Date(),
-                //         chartsGroup: -1
-                //     }
-                // ]}}
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     let list = res.data.data.map(d => {
                     let list = res.data.data.map(d => {
                         return {
                         return {
@@ -143,7 +132,7 @@ export default {
                     })
                     })
                     yield put({ type: 'list', list: list });
                     yield put({ type: 'list', list: list });
                 }else {
                 }else {
-                    message.error('请求图表列表失败');
+                    message.error('请求图表列表失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
@@ -249,7 +238,7 @@ export default {
                         viewType: data.baseConfig.viewType
                         viewType: data.baseConfig.viewType
                     } });
                     } });
                 }else {
                 }else {
-                    message.error('解析图表错误');
+                    message.error('解析图表错误: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
@@ -315,7 +304,7 @@ export default {
                     message.success('新增成功');
                     message.success('新增成功');
                     yield put({ type: 'fetchList', mandatory: true });
                     yield put({ type: 'fetchList', mandatory: true });
                 }else {
                 }else {
-                    message.error('新增失败');
+                    message.error('新增失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.error(e);
                 console.error(e);
@@ -383,7 +372,7 @@ export default {
                     message.success('修改成功');
                     message.success('修改成功');
                     yield put({ type: 'fetchList', mandatory: true });
                     yield put({ type: 'fetchList', mandatory: true });
                 }else {
                 }else {
-                    message.error('修改失败');
+                    message.error('修改失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.error(e);
                 console.error(e);
@@ -409,7 +398,7 @@ export default {
                     yield put({ type: 'list', list: list });
                     yield put({ type: 'list', list: list });
                     message.success('删除成功');
                     message.success('删除成功');
                 }else {
                 }else {
-                    message.error('删除失败');
+                    message.error('删除失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 message.error('删除失败');
                 message.error('删除失败');
@@ -440,10 +429,11 @@ export default {
                     });
                     });
                     yield put({ type: 'groupList', data });
                     yield put({ type: 'groupList', data });
                 }else {
                 }else {
-                    message.error('读取图表分组列表错误');
+                    message.error('读取图表分组列表错误: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
+                message.error('读取图表分组列表错误');
             }
             }
         },
         },
         /**
         /**
@@ -487,11 +477,11 @@ export default {
                     }
                     }
                     yield put({ type: 'addGroup', group });
                     yield put({ type: 'addGroup', group });
                 }else {
                 }else {
-                    message.error('新增失败');
+                    message.error('添加分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('新增失败');
+                message.error('添加分组失败');
             }
             }
         },
         },
         /**
         /**
@@ -521,11 +511,11 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'setGroupDirty', dirty: false });
                     yield put({ type: 'setGroupDirty', dirty: false });
                 }else {
                 }else {
-                    message.error('修改失败');
+                    message.error('修改分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('修改失败');
+                message.error('修改分组失败');
             }
             }
         },
         },
         /**
         /**
@@ -552,11 +542,11 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'modifyGroups', groups: groups });
                     yield put({ type: 'modifyGroups', groups: groups });
                 }else {
                 }else {
-                    message.error('批量更新时发生异常');
+                    message.error('修改分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('批量更新时发生异常');
+                message.error('修改分组失败');
             }
             }
         },
         },
         *remoteDeleteGroup(action, { select, call, put }) {
         *remoteDeleteGroup(action, { select, call, put }) {
@@ -578,15 +568,15 @@ export default {
                     body: [group.code]
                     body: [group.code]
                 });
                 });
                 
                 
-                console.log(group.code, res);
+                console.log('删除分组', group.code, res);
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'deleteGroup', group});
                     yield put({ type: 'deleteGroup', group});
                 }else {
                 }else {
-                    message.error('删除失败');
+                    message.error('删除分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('删除失败');
+                message.error('删除分组失败');
             }
             }
         },
         },
         *remoteMoveGroup(action, { select, call, put }) {
         *remoteMoveGroup(action, { select, call, put }) {
@@ -755,7 +745,7 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'setChartGroup', chartCode, groupCode });
                     yield put({ type: 'setChartGroup', chartCode, groupCode });
                 }else {
                 }else {
-                    message.error('设置分组失败');
+                    message.error('设置分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             } catch(e) {
             } catch(e) {
                 console.log(e);
                 console.log(e);

+ 40 - 11
src/models/chartDesigner.js

@@ -222,7 +222,7 @@ export default {
                     yield put({ type: 'main/redirect', path: '/chart/' + res.data.data });
                     yield put({ type: 'main/redirect', path: '/chart/' + res.data.data });
                     // yield put({ type: 'chart/remoteDetail', code: res.data.data });
                     // yield put({ type: 'chart/remoteDetail', code: res.data.data });
                 }else {
                 }else {
-                    message.error('新增失败');
+                    message.error('新增失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.error(e);
                 console.error(e);
@@ -294,7 +294,7 @@ export default {
                     yield put({ type: 'chart/fetchList', mandatory: true });
                     yield put({ type: 'chart/fetchList', mandatory: true });
                     yield put({ type: 'main/redirect', path: '/chart/' + res.data.data , reload: true});
                     yield put({ type: 'main/redirect', path: '/chart/' + res.data.data , reload: true});
                 }else {
                 }else {
-                    message.error('创建副本失败');
+                    message.error('创建副本失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.error(e);
                 console.error(e);
@@ -323,7 +323,7 @@ export default {
                     })
                     })
                     yield put({ type: 'silentSetField', name: 'columns', value: columns });
                     yield put({ type: 'silentSetField', name: 'columns', value: columns });
                 }else {
                 }else {
-                    message.error('请求列数据失败');
+                    message.error('请求列数据失败:' + (res.err || res.data.msg));
                     yield put({ type: 'silentSetField', name: 'columns', value: [] });
                     yield put({ type: 'silentSetField', name: 'columns', value: [] });
                 }
                 }
             }catch(e) {
             }catch(e) {
@@ -337,19 +337,40 @@ export default {
             const { viewType } = baseConfig;
             const { viewType } = baseConfig;
 
 
             if(viewType === 'bar') {
             if(viewType === 'bar') {
-                yield put({ type: 'fetchBarData' });
+                const { barConfig } = chartDesigner;
+                if(barConfig.xAxis.column.value && barConfig.yAxis.column.value) {
+                    yield put({ type: 'fetchBarData' });
+                }
             }else if(viewType === 'pie') {
             }else if(viewType === 'pie') {
-                yield put({ type: 'fetchPieData' });
+                const { pieConfig } = chartDesigner;
+                if(pieConfig.xAxis.column.value && pieConfig.yAxis.column.value) {
+                    yield put({ type: 'fetchPieData' });
+                }
             }else if(viewType === 'line') {
             }else if(viewType === 'line') {
-                yield put({ type: 'fetchLineData' });
+                const { lineConfig } = chartDesigner;
+                if(lineConfig.xAxis.column.value && lineConfig.yAxis.column.value) {
+                    yield put({ type: 'fetchLineData' });
+                }
             }else if(viewType === 'scatter') {
             }else if(viewType === 'scatter') {
-                yield put({ type: 'fetchScatterData' })
+                const { scatterConfig } = chartDesigner;
+                if(scatterConfig.xAxis.column.value && scatterConfig.yAxis.column.value) {
+                    yield put({ type: 'fetchScatterData' });
+                }
             }else if(viewType === 'dataView') {
             }else if(viewType === 'dataView') {
-                yield put({ type: 'fetchDataViewData' });
+                const { dataViewConfig } = chartDesigner;
+                if(dataViewConfig.viewColumns.length > 0 && 
+                    dataViewConfig.sortColumn.key && 
+                    dataViewConfig.sortType && 
+                    dataViewConfig.count) {
+                    yield put({ type: 'fetchDataViewData' });
+                }
             }else if(viewType === 'aggregateTable') {
             }else if(viewType === 'aggregateTable') {
-                yield put({ type: 'fetchAggregateTableData' });
+                const { aggregateTableConfig } = chartDesigner;
+                if(aggregateTableConfig.targetColumn.name && aggregateTableConfig.statistics.length > 0) {
+                    yield put({ type: 'fetchAggregateTableData' });
+                }
             }else {
             }else {
-                console.log('nothing.......')
+                console.log('no viewType......')
             }
             }
         },
         },
         *fetchBarData(action, { select, call, put }) {
         *fetchBarData(action, { select, call, put }) {
@@ -391,6 +412,7 @@ export default {
                     }
                     }
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                 }else {
                 }else {
+                    message.error(res.err || res.data.msg);
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                 }
                 }
             }catch(e) {
             }catch(e) {
@@ -434,6 +456,7 @@ export default {
                     }
                     }
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                 }else {
                 }else {
+                    message.error(res.err || res.data.msg);
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                 }
                 }
             }catch(e) {
             }catch(e) {
@@ -478,6 +501,7 @@ export default {
                     }
                     }
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                 }else {
                 }else {
+                    message.error(res.err || res.data.msg);
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                 }
                 }
             }catch(e) {
             }catch(e) {
@@ -522,6 +546,7 @@ export default {
                     }
                     }
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                 }else {
                 }else {
+                    message.error(res.err || res.data.msg);
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                 }
                 }
             }catch(e) {
             }catch(e) {
@@ -545,7 +570,7 @@ export default {
                     url: URLS.CHART_DATAVIEW_OPTION,
                     url: URLS.CHART_DATAVIEW_OPTION,
                     body: body
                     body: body
                 });
                 });
-                console.log('请求个体统计数据', body, res);
+                console.log('请求表格数据', body, res);
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     const resData = res.data.data;
                     const resData = res.data.data;
 
 
@@ -571,6 +596,9 @@ export default {
                         }
                         }
                     }
                     }
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
+                }else {
+                    message.error(res.err || res.data.msg);
+                    yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.error(e);
                 console.error(e);
@@ -648,6 +676,7 @@ export default {
                     }
                     }
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: config });
                 }else {
                 }else {
+                    message.error(res.err || res.data.msg);
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                     yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
                 }
                 }
             }catch(e) {
             }catch(e) {

+ 8 - 5
src/models/dataConnect.js

@@ -131,7 +131,7 @@ export default {
                     });
                     });
                     yield put({ type: 'list', data });
                     yield put({ type: 'list', data });
                 }else {
                 }else {
-                    message.error('读取数据连接配置列表错误');
+                    message.error('读取数据连接配置列表错误: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 message.error('读取数据连接配置列表错误');
                 message.error('读取数据连接配置列表错误');
@@ -154,7 +154,7 @@ export default {
                     userName: model.userName,
                     userName: model.userName,
                     passWord: model.password
                     passWord: model.password
                 }
                 }
-                const validRes = yield call(service.fetch, {
+                const res = yield call(service.fetch, {
                     url: URLS.DATACONNECT_VALIDATE,
                     url: URLS.DATACONNECT_VALIDATE,
                     body: validBody
                     body: validBody
                 });
                 });
@@ -162,15 +162,17 @@ export default {
                 // 设置validating为false
                 // 设置validating为false
                 yield put({ type: 'setNewModelField', name: 'validating', value: false });
                 yield put({ type: 'setNewModelField', name: 'validating', value: false });
 
 
-                if(!validRes.err && validRes.data.code > 0) {
+                if(!res.err && res.data.code > 0) {
                     // 如果合法
                     // 如果合法
                     // 设置valid为true
                     // 设置valid为true
                     yield put({ type: 'setNewModelInvalid', name: 'invalid', value: false });
                     yield put({ type: 'setNewModelInvalid', name: 'invalid', value: false });
                 }else {
                 }else {
+                    message.error('校验失败: ' + (res.err || res.data.msg));
                     yield put({ type: 'setNewModelInvalid', name: 'invalid', value: true });
                     yield put({ type: 'setNewModelInvalid', name: 'invalid', value: true });
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
+                message.error('校验失败');
             }
             }
         },
         },
         *remoteAdd(action, { select, call, put, takeEvery, takeLatest }) {
         *remoteAdd(action, { select, call, put, takeEvery, takeLatest }) {
@@ -235,6 +237,7 @@ export default {
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
+                message.error('新增失败');
             }
             }
         },
         },
         *remoteModify(action, { select, call, put }) {
         *remoteModify(action, { select, call, put }) {
@@ -330,11 +333,11 @@ export default {
                     yield put({ type: 'list', data: list });
                     yield put({ type: 'list', data: list });
                     message.success('删除成功');
                     message.success('删除成功');
                 }else {
                 }else {
-                    message.error('删除失败');
+                    message.error('删除失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
-                message.error('删除失败');
                 console.log(e);
                 console.log(e);
+                message.error('删除失败');
             }
             }
         }
         }
     },
     },

+ 22 - 23
src/models/dataSource.js

@@ -196,9 +196,10 @@ export default {
                     console.log('获得数据源list', res, data);
                     console.log('获得数据源list', res, data);
                     yield put({ type: 'list', data });
                     yield put({ type: 'list', data });
                 }else {
                 }else {
-                    message.error('读取数据源列表错误');
+                    message.error('读取数据源列表错误: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
+                console.log(e);
                 message.error('读取数据源列表错误');
                 message.error('读取数据源列表错误');
             }
             }
             
             
@@ -244,12 +245,12 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'fetchList', mandatory: true });
                     yield put({ type: 'fetchList', mandatory: true });
                     yield put({ type: 'main/redirect', path: { pathname: '/datasource' } });
                     yield put({ type: 'main/redirect', path: { pathname: '/datasource' } });
-                    message.success('新增成功!');
+                    message.success('新增成功');
                 }else {
                 }else {
-                    message.error('新增失败!');
+                    message.error('新增失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
-                message.error('新增失败!');
+                message.error('新增失败');
 
 
             }
             }
         },
         },
@@ -303,8 +304,7 @@ export default {
                     }
                     }
                     yield put({ type: 'setNewModel', model: data });
                     yield put({ type: 'setNewModel', model: data });
                 }else {
                 }else {
-                    message.error('数据源解析错误');
-                    console.log(res);
+                    message.error('数据源解析错误: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
@@ -329,7 +329,7 @@ export default {
                     return DEFAULT_COLUMN_TYPE[dataType] || 'string';
                     return DEFAULT_COLUMN_TYPE[dataType] || 'string';
                 }
                 }
     
     
-                console.log('请求数据源列数据', body, res);
+                console.log('请求列数据', body, res);
 
 
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     let columns = res.data.data.map((d, i) => {
                     let columns = res.data.data.map((d, i) => {
@@ -350,13 +350,12 @@ export default {
                 }else {
                 }else {
                     yield put({ type: 'setNewModelInvalidSQL', value: true });
                     yield put({ type: 'setNewModelInvalidSQL', value: true });
                     yield put({ type: 'setNewModelField', name: 'columns', value: [] });
                     yield put({ type: 'setNewModelField', name: 'columns', value: [] });
-                    // message.error('请求列数据错误');
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
                 yield put({ type: 'setNewModelInvalidSQL', value: true });
                 yield put({ type: 'setNewModelInvalidSQL', value: true });
                 yield put({ type: 'setNewModelField', name: 'columns', value: [] });
                 yield put({ type: 'setNewModelField', name: 'columns', value: [] });
-                // message.error('请求列数据错误');
+                message.error('请求列数据错误');
             }
             }
         },
         },
         *remoteDelete(action, { select, call, put }) {
         *remoteDelete(action, { select, call, put }) {
@@ -378,11 +377,11 @@ export default {
                     yield put({ type: 'list', data: list });
                     yield put({ type: 'list', data: list });
                     message.success('删除成功');
                     message.success('删除成功');
                 }else {
                 }else {
-                    message.error('删除失败');
+                    message.error('删除失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
-                message.error('删除失败');
                 console.log(e);
                 console.log(e);
+                message.error('删除失败');
             }
             }
         },
         },
         *remoteModify(action, { select, call, put }) {
         *remoteModify(action, { select, call, put }) {
@@ -430,7 +429,7 @@ export default {
                     yield put({ type: 'fetchList', mandatory: true });
                     yield put({ type: 'fetchList', mandatory: true });
                     message.success('修改成功');
                     message.success('修改成功');
                 }else {
                 }else {
-                    message.error('修改失败');
+                    message.error('修改失败: ' + (res.err || res.data.msg));
     
     
                 }
                 }
             }catch(e) {
             }catch(e) {
@@ -462,7 +461,7 @@ export default {
                     });
                     });
                     yield put({ type: 'groupList', data });
                     yield put({ type: 'groupList', data });
                 }else {
                 }else {
-                    message.error('读取数据源列表错误');
+                    message.error('读取数据源列表错误: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
@@ -509,11 +508,11 @@ export default {
                     }
                     }
                     yield put({ type: 'addGroup', group });
                     yield put({ type: 'addGroup', group });
                 }else {
                 }else {
-                    message.error('新增失败');
+                    message.error('新增分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('新增失败');
+                message.error('新增分组失败');
             }
             }
         },
         },
         /**
         /**
@@ -543,11 +542,11 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'setGroupDirty', dirty: false });
                     yield put({ type: 'setGroupDirty', dirty: false });
                 }else {
                 }else {
-                    message.error('修改失败');
+                    message.error('修改分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('修改失败');
+                message.error('修改分组失败');
             }
             }
         },
         },
         /**
         /**
@@ -574,11 +573,11 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'modifyGroups', groups: groups });
                     yield put({ type: 'modifyGroups', groups: groups });
                 }else {
                 }else {
-                    message.error('批量更新时发生异常');
+                    message.error('修改分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('批量更新时发生异常');
+                message.error('修改分组失败');
             }
             }
         },
         },
         *remoteDeleteGroup(action, { select, call, put }) {
         *remoteDeleteGroup(action, { select, call, put }) {
@@ -600,15 +599,15 @@ export default {
                     body: [group.code]
                     body: [group.code]
                 });
                 });
                 
                 
-                console.log(group.code, res);
+                console.log('删除分组', group.code, res);
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'deleteGroup', group});
                     yield put({ type: 'deleteGroup', group});
                 }else {
                 }else {
-                    message.error('删除失败');
+                    message.error('删除分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             }catch(e) {
             }catch(e) {
                 console.log(e);
                 console.log(e);
-                message.error('删除失败');
+                message.error('删除分组失败');
             }
             }
         },
         },
         *remoteMoveGroup(action, { select, call, put }) {
         *remoteMoveGroup(action, { select, call, put }) {
@@ -778,7 +777,7 @@ export default {
                 if(!res.err && res.data.code > 0) {
                 if(!res.err && res.data.code > 0) {
                     yield put({ type: 'setDataSourceGroup', dataSourceCode, groupCode });
                     yield put({ type: 'setDataSourceGroup', dataSourceCode, groupCode });
                 }else {
                 }else {
-                    message.error('设置分组失败');
+                    message.error('设置分组失败: ' + (res.err || res.data.msg));
                 }
                 }
             } catch(e) {
             } catch(e) {
                 console.log(e);
                 console.log(e);