|
|
@@ -514,16 +514,16 @@ export default {
|
|
|
try {
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
const { code, dataViewConfig, filters } = chartDesigner;
|
|
|
+ const { page, pageSize } = action;
|
|
|
const body = {
|
|
|
id: code,
|
|
|
columnListName: dataViewConfig.viewColumns.map(c => c.name),
|
|
|
sortColumn: dataViewConfig.sortColumn.key,
|
|
|
sort: dataViewConfig.sortType,
|
|
|
- showLine: 999999,
|
|
|
filters: getBodyFilters(filters),
|
|
|
testPage: {
|
|
|
- pageNum: 1,
|
|
|
- pageSize: 999999,
|
|
|
+ pageNum: page || 1,
|
|
|
+ pageSize: pageSize || 25,
|
|
|
}
|
|
|
};
|
|
|
|
|
|
@@ -537,14 +537,20 @@ export default {
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
let option = parseChartOption('dataView', res.data.data, dataViewConfig);
|
|
|
yield put({ type: 'silentSetField', name: 'chartOption', value: option });
|
|
|
+ // 主动触发一次window的resize事件
|
|
|
+ yield window.setTimeout(() => {
|
|
|
+ var e = document.createEvent("Event");
|
|
|
+ e.initEvent("resize", true, true);
|
|
|
+ window.dispatchEvent(e);
|
|
|
+ }, 200);
|
|
|
}else {
|
|
|
message.error('请求列表数据失败: ' + (res.err || res.data.msg));
|
|
|
- yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
+ // yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
}
|
|
|
yield put({ type: 'silentSetField', name: 'fetchConfig', value: body });
|
|
|
}catch(e) {
|
|
|
console.error(e);
|
|
|
- yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
+ // yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
message.error('请求列表数据失败: ' + e);
|
|
|
}
|
|
|
},
|
|
|
@@ -586,7 +592,172 @@ export default {
|
|
|
yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
message.error('请求统计数据失败: ' + e);
|
|
|
}
|
|
|
- }
|
|
|
+ },
|
|
|
+ /**
|
|
|
+ * 将图表数据以表格的方式作为预览
|
|
|
+ */
|
|
|
+ *remoteChartDataList(action, { select, call, put }) {
|
|
|
+ try {
|
|
|
+ const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
+ const { code, baseConfig, aggregateTableConfig, lineConfig, barConfig, pieConfig, scatterConfig, dataViewConfig, filters } = chartDesigner;
|
|
|
+ const { viewType } = baseConfig;
|
|
|
+ const { page, pageSize } = action;
|
|
|
+
|
|
|
+ let columns = [];
|
|
|
+ let columnListName = [];
|
|
|
+ let sortColumn = null;
|
|
|
+
|
|
|
+ if(viewType === 'aggregateTable') {
|
|
|
+ const { groupBy, targetColumn } = aggregateTableConfig;
|
|
|
+ groupBy.map(g => ({
|
|
|
+ title: g.label,
|
|
|
+ dataIndex: g.key,
|
|
|
+ // render: g.columnType === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ })).concat({
|
|
|
+ title: targetColumn.label,
|
|
|
+ dataIndex: targetColumn.name,
|
|
|
+ render: targetColumn.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }).filter(x => !!x.dataIndex).forEach(x => {
|
|
|
+ if(!columns.find(c => c.dataIndex === x.dataIndex)) {
|
|
|
+ columns.push(x);
|
|
|
+ }
|
|
|
+ });;
|
|
|
+ sortColumn = targetColumn.name;
|
|
|
+ }else if(viewType === 'line') {
|
|
|
+ const { groupBy, xAxis, yAxis } = lineConfig;
|
|
|
+ [{
|
|
|
+ title: groupBy ? groupBy.label : '',
|
|
|
+ dataIndex: groupBy ?groupBy.key : '',
|
|
|
+ // render: g.columnType === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: xAxis.column.label,
|
|
|
+ dataIndex: xAxis.column.value,
|
|
|
+ render: xAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: yAxis.column.label,
|
|
|
+ dataIndex: yAxis.column.value,
|
|
|
+ render: yAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }].filter(x => !!x.dataIndex).forEach(x => {
|
|
|
+ if(!columns.find(c => c.dataIndex === x.dataIndex)) {
|
|
|
+ columns.push(x);
|
|
|
+ }
|
|
|
+ });;
|
|
|
+ sortColumn = xAxis.column.value;
|
|
|
+ }else if(viewType === 'bar') {
|
|
|
+ const { groupBy, xAxis, yAxis } = barConfig;
|
|
|
+ [{
|
|
|
+ title: groupBy ? groupBy.label : '',
|
|
|
+ dataIndex: groupBy ? groupBy.key : '',
|
|
|
+ // render: g.columnType === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: xAxis.column.label,
|
|
|
+ dataIndex: xAxis.column.value,
|
|
|
+ render: xAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: yAxis.column.label,
|
|
|
+ dataIndex: yAxis.column.value,
|
|
|
+ render: yAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }].filter(x => !!x.dataIndex).forEach(x => {
|
|
|
+ if(!columns.find(c => c.dataIndex === x.dataIndex)) {
|
|
|
+ columns.push(x);
|
|
|
+ }
|
|
|
+ });;
|
|
|
+ sortColumn = xAxis.column.value;
|
|
|
+ }else if(viewType === 'pie') {
|
|
|
+ const { xAxis, yAxis } = pieConfig;
|
|
|
+ [{
|
|
|
+ title: xAxis.column.label,
|
|
|
+ dataIndex: xAxis.column.value,
|
|
|
+ render: xAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: yAxis.column.label,
|
|
|
+ dataIndex: yAxis.column.value,
|
|
|
+ render: yAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }].filter(x => !!x.dataIndex).forEach(x => {
|
|
|
+ if(!columns.find(c => c.dataIndex === x.dataIndex)) {
|
|
|
+ columns.push(x);
|
|
|
+ }
|
|
|
+ });;
|
|
|
+ sortColumn = xAxis.column.value;
|
|
|
+ }else if(viewType === 'scatter') {
|
|
|
+ const { groupBy, xAxis, yAxis } = scatterConfig;
|
|
|
+ [{
|
|
|
+ title: groupBy ? groupBy.label : '',
|
|
|
+ dataIndex: groupBy ? groupBy.key : '',
|
|
|
+ // render: g.columnType === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: xAxis.column.label,
|
|
|
+ dataIndex: xAxis.column.value,
|
|
|
+ render: xAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }, {
|
|
|
+ title: yAxis.column.label,
|
|
|
+ dataIndex: yAxis.column.value,
|
|
|
+ render: yAxis.column.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }].filter(x => !!x.dataIndex).forEach(x => {
|
|
|
+ if(!columns.find(c => c.dataIndex === x.dataIndex)) {
|
|
|
+ columns.push(x);
|
|
|
+ }
|
|
|
+ });;
|
|
|
+ sortColumn = xAxis.column.value;
|
|
|
+ }else if(viewType === 'dataView') {
|
|
|
+ columns = dataViewConfig.viewColumns.map(c => ({
|
|
|
+ title: c.label,
|
|
|
+ dataIndex: c.name,
|
|
|
+ render: c.type === 'time' ? ((v, r, i) => moment(v).format('YYYY-MM-DD')) : v => v
|
|
|
+ }));
|
|
|
+ sortColumn = dataViewConfig.sortColumn.key;
|
|
|
+ }
|
|
|
+ columnListName = columns.map(c => c.dataIndex);
|
|
|
+
|
|
|
+ const body = {
|
|
|
+ id: code,
|
|
|
+ columnListName: columnListName,
|
|
|
+ sortColumn: sortColumn,
|
|
|
+ sort: 'asc',
|
|
|
+ filters: getBodyFilters(filters),
|
|
|
+ testPage: {
|
|
|
+ pageNum: page || 1,
|
|
|
+ pageSize: pageSize || 25,
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ yield put({ type: 'dataList/setField', name: 'loading', value: true });
|
|
|
+ console.log('请求数据列表', body);
|
|
|
+ let res = yield call(service.fetch, {
|
|
|
+ url: URLS.CHART_DATAVIEW_OPTION,
|
|
|
+ body: body,
|
|
|
+ timeout: 30000
|
|
|
+ });
|
|
|
+ console.log('请求数据列表', body, res);
|
|
|
+ if(!res.err && res.data.code > 0) {
|
|
|
+
|
|
|
+ const { valueList } = res.data.data;
|
|
|
+ const { list: dataSource, pageSize, total } = valueList;
|
|
|
+
|
|
|
+ yield put({ type: 'dataList/setFields', fields: [
|
|
|
+ { name: 'columns', value: columns },
|
|
|
+ { name: 'dataSource', value: dataSource },
|
|
|
+ { name: 'pageSize', value: pageSize },
|
|
|
+ { name: 'total', value: total }
|
|
|
+ ] });
|
|
|
+ // 主动触发一次window的resize事件
|
|
|
+ yield window.setTimeout(() => {
|
|
|
+ var e = document.createEvent("Event");
|
|
|
+ e.initEvent("resize", true, true);
|
|
|
+ window.dispatchEvent(e);
|
|
|
+ }, 20);
|
|
|
+
|
|
|
+ }else {
|
|
|
+ // message.error('请求列表数据失败: ' + (res.err || res.data.msg));
|
|
|
+ // yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
+ }
|
|
|
+ }catch(e) {
|
|
|
+ console.error(e);
|
|
|
+ message.error('请求数据列表失败: ' + e);
|
|
|
+ }finally {
|
|
|
+ yield put({ type: 'dataList/setField', name: 'loading', value: false });
|
|
|
+ }
|
|
|
+ },
|
|
|
},
|
|
|
subscriptions: {
|
|
|
setup({ dispatch, history }) {
|