|
@@ -785,13 +785,13 @@ export default {
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- *exportToImage(action, { select }) {
|
|
|
+ *exportToImage(action, { select, put }) {
|
|
|
const dashboardDesigner = yield select(state => state.dashboardDesigner);
|
|
|
const { name } = dashboardDesigner;
|
|
|
|
|
|
let viewcontent = document.querySelector('.dashboard-viewcontent');
|
|
|
let reactGridLayout = viewcontent.children[0];
|
|
|
- let items = reactGridLayout.children;
|
|
|
+ let itemEls = reactGridLayout.children;
|
|
|
let classList = reactGridLayout.children[0].classList;
|
|
|
let classListBackup = [];
|
|
|
|
|
@@ -803,40 +803,86 @@ export default {
|
|
|
classListBackup.push(classList[i]);
|
|
|
}
|
|
|
|
|
|
- for(let i = 0; i< items.length;i++) {
|
|
|
+ for(let i = 0; i< itemEls.length;i++) {
|
|
|
classListBackup.forEach(c => {
|
|
|
- items[i].classList.remove(c);
|
|
|
- items[i].querySelector('.chart-title .tools').style.display = 'none';
|
|
|
+ itemEls[i].classList.remove(c);
|
|
|
+ itemEls[i].querySelector('.chart-title .tools').style.display = 'none';
|
|
|
+ itemEls[i].querySelector('.chart-tools').style.display = 'none';
|
|
|
});
|
|
|
}
|
|
|
|
|
|
- yield html2canvas(reactGridLayout).then(canvas => {
|
|
|
- for(let i = 0; i< items.length;i++) {
|
|
|
+ try {
|
|
|
+ yield put({ type: 'setField', name: 'loading', value: false });
|
|
|
+
|
|
|
+ yield html2canvas(reactGridLayout, { useCORS: true }).then(canvas => {
|
|
|
+ let aLink = document.createElement('a');
|
|
|
+ let blob = base64ToBlob(canvas.toDataURL());
|
|
|
+
|
|
|
+ let evt = document.createEvent("HTMLEvents");
|
|
|
+ evt.initEvent("click", true, true);
|
|
|
+ aLink.download = name;
|
|
|
+ aLink.href = URL.createObjectURL(blob);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ aLink.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
|
|
|
+ })
|
|
|
+ }catch(e) {
|
|
|
+ message.error('报表图片错误: ' + e);
|
|
|
+ }finally {
|
|
|
+ for(let i = 0; i< itemEls.length;i++) {
|
|
|
classListBackup.forEach(c => {
|
|
|
- items[i].classList.add(c);
|
|
|
- items[i].querySelector('.chart-title .tools').style.display = '';
|
|
|
+ itemEls[i].classList.add(c);
|
|
|
+ itemEls[i].querySelector('.chart-title .tools').style.display = '';
|
|
|
+ itemEls[i].querySelector('.chart-tools').style.display = '';
|
|
|
});
|
|
|
}
|
|
|
+ yield put({ type: 'setField', name: 'loading', value: false });
|
|
|
+ }
|
|
|
+ },
|
|
|
|
|
|
- let aLink = document.createElement('a');
|
|
|
- let blob = base64ToBlob(canvas.toDataURL());
|
|
|
+ *exportItemToImage(action, { select, put }) {
|
|
|
+ const { itemEl, item } = action;
|
|
|
+ const { name } = item;
|
|
|
+ let classListBackup = [];
|
|
|
|
|
|
- let evt = document.createEvent("HTMLEvents");
|
|
|
- evt.initEvent("click", true, true);
|
|
|
- aLink.download = name;
|
|
|
- aLink.href = URL.createObjectURL(blob);
|
|
|
+ let classList = itemEl.classList;
|
|
|
+ for(let i = 0; i < classList.length; i++) {
|
|
|
+ classListBackup.push(classList[i]);
|
|
|
+ }
|
|
|
|
|
|
-
|
|
|
-
|
|
|
- aLink.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
|
|
|
- }).catch(e => {
|
|
|
- for(let i = 0; i< items.length;i++) {
|
|
|
- classListBackup.forEach(c => {
|
|
|
- items[i].classList.add(c);
|
|
|
- items[i].querySelector('.chart-title .tools').style.display = '';
|
|
|
- });
|
|
|
- }
|
|
|
+ classListBackup.forEach(c => {
|
|
|
+ itemEl.classList.remove(c);
|
|
|
});
|
|
|
+ itemEl.querySelector('.chart-title .tools').style.display = 'none';
|
|
|
+ itemEl.querySelector('.chart-tools').style.display = 'none';
|
|
|
+
|
|
|
+ try {
|
|
|
+ yield put({ type: 'setField', name: 'loading', value: false });
|
|
|
+
|
|
|
+ yield html2canvas(itemEl, { useCORS: true }).then(canvas => {
|
|
|
+ let aLink = document.createElement('a');
|
|
|
+ let blob = base64ToBlob(canvas.toDataURL());
|
|
|
+
|
|
|
+ let evt = document.createEvent("HTMLEvents");
|
|
|
+ evt.initEvent("click", true, true);
|
|
|
+ aLink.download = name;
|
|
|
+ aLink.href = URL.createObjectURL(blob);
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ aLink.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));
|
|
|
+ })
|
|
|
+ }catch(e) {
|
|
|
+ message.error('导出图片错误:' + e);
|
|
|
+ }finally {
|
|
|
+ classListBackup.forEach(c => {
|
|
|
+ itemEl.classList.add(c);
|
|
|
+ });
|
|
|
+ itemEl.querySelector('.chart-title .tools').style.display = '';
|
|
|
+ itemEl.querySelector('.chart-tools').style.display = '';
|
|
|
+ yield put({ type: 'setField', name: 'loading', value: false });
|
|
|
+ }
|
|
|
}
|
|
|
},
|
|
|
subscriptions: {
|