|
|
@@ -2,6 +2,10 @@ import { message } from 'antd'
|
|
|
import * as service from '../services/index'
|
|
|
import URLS from '../constants/url'
|
|
|
|
|
|
+const generateShareCode = () => {
|
|
|
+ return Math.random().toString(36).substr(2).toUpperCase();
|
|
|
+}
|
|
|
+
|
|
|
export default {
|
|
|
namespace: 'dashboard',
|
|
|
state: {
|
|
|
@@ -51,12 +55,31 @@ export default {
|
|
|
method: 'GET',
|
|
|
body
|
|
|
});
|
|
|
- console.log('请求看板列表', body, res);
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
const resData = res.data.data.list;
|
|
|
let list = resData.map(d => {
|
|
|
let items = d.bdConfiguration ? JSON.parse(d.bdConfiguration) : [];
|
|
|
+
|
|
|
+ const allDataSources = items.map(item => {
|
|
|
+ if(item.viewType === 'chart') {
|
|
|
+ return {
|
|
|
+ code: item.dataSourceCode,
|
|
|
+ name: item.dataSourceName
|
|
|
+ }
|
|
|
+ }else {
|
|
|
+ return null
|
|
|
+ }
|
|
|
+ }).filter(item => !!item);
|
|
|
+
|
|
|
+ const dataSources = [];
|
|
|
+ allDataSources.forEach(ad => {
|
|
|
+ if(!dataSources.find(d => d.code === ad.code)) {
|
|
|
+ dataSources.push(ad);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
return {
|
|
|
+ key: d.id + '',
|
|
|
code: d.id+'',
|
|
|
name: d.bdName,
|
|
|
items: items,
|
|
|
@@ -65,6 +88,8 @@ export default {
|
|
|
creatorName: d.createBy,
|
|
|
createTime: d.createDate,
|
|
|
shareCode: d.bdCode,
|
|
|
+ dataSources: dataSources,
|
|
|
+ chartCodes: d.chartIds ? d.chartIds.split(',') : [],
|
|
|
demo: d.demo
|
|
|
}
|
|
|
})
|
|
|
@@ -91,7 +116,6 @@ export default {
|
|
|
id: code
|
|
|
}
|
|
|
});
|
|
|
- console.log('解析看板数据', code, res);
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
const resData = res.data.data;
|
|
|
let items = resData.bdConfiguration ? JSON.parse(resData.bdConfiguration) : [];
|
|
|
@@ -147,7 +171,6 @@ export default {
|
|
|
message.error('解析看板错误: ' + (res.err || res.data.msg));
|
|
|
}
|
|
|
}catch(e) {
|
|
|
- console.log(e);
|
|
|
message.error('解析看板错误: ' + e);
|
|
|
}finally {
|
|
|
yield put({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: false });
|
|
|
@@ -156,22 +179,21 @@ export default {
|
|
|
*remoteAdd(action, { select, call, put }) {
|
|
|
try {
|
|
|
const dashboardDesigner = yield select(state => state.present.dashboardDesigner);
|
|
|
- const { name, items, relationColumns, filters, shareCode } = dashboardDesigner;
|
|
|
+ const { name, items, description, relationColumns, filters, shareCode, chartCodes } = dashboardDesigner;
|
|
|
let body = {
|
|
|
bdName: name,
|
|
|
- bdNote: '',
|
|
|
+ bdNote: description,
|
|
|
bdConfiguration: JSON.stringify(items),
|
|
|
relationColumns: JSON.stringify(relationColumns),
|
|
|
filters: JSON.stringify(filters) || '',
|
|
|
- bdCode: shareCode,
|
|
|
- chartCodes: []
|
|
|
+ bdCode: shareCode || generateShareCode(),
|
|
|
+ thumbnail: '',
|
|
|
+ chartIds: chartCodes.join(',')
|
|
|
}
|
|
|
- console.log('新增看板', body);
|
|
|
const res = yield call(service.fetch, {
|
|
|
url: URLS.DASHBOARD_ADD,
|
|
|
body: body
|
|
|
});
|
|
|
- console.log('新增看板', body, res);
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
yield put({ type: 'fetchList', mandatory: true });
|
|
|
message.success('保存成功');
|
|
|
@@ -179,29 +201,27 @@ export default {
|
|
|
message.error('保存失败: ' + (res.err || res.data.msg));
|
|
|
}
|
|
|
}catch(e) {
|
|
|
- console.log(e);
|
|
|
message.error('保存失败: ' + e);
|
|
|
}
|
|
|
},
|
|
|
*remoteQucikAdd(action, { select, call, put }) {
|
|
|
try {
|
|
|
const dashboardDesigner = yield select(state => state.present.dashboardDesigner);
|
|
|
- const { name, items, description, relationColumns, filters, shareCode } = dashboardDesigner;
|
|
|
+ const { name, items, description, relationColumns, filters } = dashboardDesigner;
|
|
|
let body = {
|
|
|
bdName: name,
|
|
|
bdNote: description,
|
|
|
bdConfiguration: JSON.stringify(items),
|
|
|
relationColumns: JSON.stringify(relationColumns),
|
|
|
filters: JSON.stringify(filters) || "",
|
|
|
- bdCode: shareCode,
|
|
|
- chartCodes: []
|
|
|
+ bdCode: generateShareCode(),
|
|
|
+ thumbnail: '',
|
|
|
+ chartIds: ''
|
|
|
}
|
|
|
- console.log('快速新增看板', body);
|
|
|
const res = yield call(service.fetch, {
|
|
|
url: URLS.DASHBOARD_ADD,
|
|
|
body: body
|
|
|
});
|
|
|
- console.log('快速新增看板', body, res);
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
yield put({ type: 'fetchList', mandatory: true });
|
|
|
yield put({ type: 'main/redirect', path: '/dashboard/' + res.data.data });
|
|
|
@@ -209,7 +229,6 @@ export default {
|
|
|
message.error('保存失败: ' + (res.err || res.data.msg));
|
|
|
}
|
|
|
}catch(e) {
|
|
|
- console.log(e);
|
|
|
message.error('保存失败: ' + e);
|
|
|
}
|
|
|
},
|
|
|
@@ -231,7 +250,6 @@ export default {
|
|
|
url: URLS.DASHBOARD_UPDATE,
|
|
|
body: body
|
|
|
});
|
|
|
- console.log('修改看板', body, res);
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
yield put({ type: 'fetchList', mandatory: true });
|
|
|
yield put({ type: 'dashboardDesigner/silentSetField', name: 'dirty', value: false });
|
|
|
@@ -240,7 +258,6 @@ export default {
|
|
|
message.error('保存失败: ' + (res.err || res.data.msg));
|
|
|
}
|
|
|
}catch(e) {
|
|
|
- console.error(e);
|
|
|
message.error('保存失败: ' + e);
|
|
|
}
|
|
|
},
|
|
|
@@ -358,7 +375,7 @@ export default {
|
|
|
const resData = res.data.data;
|
|
|
let items = resData.bdConfiguration ? JSON.parse(resData.bdConfiguration) : [];
|
|
|
let relationColumns = resData.relationColumns ? JSON.parse(resData.relationColumns) : [];
|
|
|
- let chartCodes = resData.chartCodes ? resData.chartCodes.split(',') : [];
|
|
|
+ let chartCodes = resData.chartIds ? resData.chartIds.split(',') : [];
|
|
|
const main = yield select(state => state.present.main);
|
|
|
const { currentUser } = main;
|
|
|
|
|
|
@@ -458,7 +475,7 @@ export default {
|
|
|
const resData = res.data.data;
|
|
|
let items = resData.bdConfiguration ? JSON.parse(resData.bdConfiguration) : [];
|
|
|
let relationColumns = resData.relationColumns ? JSON.parse(resData.relationColumns) : [];
|
|
|
- let chartCodes = resData.chartCodes ? resData.chartCodes.split(',') : [];
|
|
|
+ let chartCodes = resData.chartIds ? resData.chartIds.split(',') : [];
|
|
|
const main = yield select(state => state.present.main);
|
|
|
const { currentUser } = main;
|
|
|
|
|
|
@@ -514,6 +531,24 @@ export default {
|
|
|
yield put({ type: 'dashboardDesigner/silentSetField', name: 'loading', value: false });
|
|
|
}
|
|
|
},
|
|
|
+ *copy(action, { select, call, put }) {
|
|
|
+ const { dashboardCode, dataSourceCode } = action;
|
|
|
+
|
|
|
+ const res = yield call(service.fetch, {
|
|
|
+ url: URLS.DASHBOARD_COPY,
|
|
|
+ body: {
|
|
|
+ dashboardId: dashboardCode,
|
|
|
+ dataSourceId: dataSourceCode
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if(!res.err && res.data.code > 0) {
|
|
|
+ message.success('复制成功');
|
|
|
+ return true;
|
|
|
+ }else {
|
|
|
+ message.error('复制失败: ' + (res.err || res.data.msg));
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
},
|
|
|
subscriptions: {
|
|
|
setup({ dispatch, history}) {
|