|
@@ -200,6 +200,7 @@ export default {
|
|
|
*/
|
|
|
//获取图表数据
|
|
|
async getchartData(id,lang='ch') {
|
|
|
+ console.log('getChartData')
|
|
|
const currentLang = this.currentLang || lang
|
|
|
const res = await dataBaseInterface.getChartByCode({
|
|
|
UniqueCode: id,
|
|
@@ -453,7 +454,7 @@ export default {
|
|
|
this.$store.commit('SET_CHART_INFO_MAP',chartInfoMap)
|
|
|
this.addMyChartShow = false
|
|
|
},
|
|
|
- //编辑ppt时,初始化相关
|
|
|
+ //编辑ppt时,按页初始化相关
|
|
|
async initPageElements(page,type="edit",only=false) {
|
|
|
this.pptInitType = type
|
|
|
const chartElements = page.elements.filter((item) => {
|
|
@@ -477,22 +478,83 @@ export default {
|
|
|
await this.listHandle(chartElements);
|
|
|
this.initCharts(chartElements, page);
|
|
|
},
|
|
|
+ //图表,表格数据统一加载,不按照页
|
|
|
+ async initPPTAllPage(pageList){
|
|
|
+ let chartElements = []
|
|
|
+ let sheetElements = []
|
|
|
+ pageList.forEach(page=>{
|
|
|
+ const pageChartElements = page.elements.filter((item) => {
|
|
|
+ return item.type === "chart";
|
|
|
+ });
|
|
|
+ const pageSheetElements = page.elements.filter((item)=>{
|
|
|
+ return item.type === 'sheet'
|
|
|
+ })
|
|
|
+ chartElements.push(...pageChartElements)
|
|
|
+ sheetElements.push(...pageSheetElements)
|
|
|
+ })
|
|
|
+
|
|
|
+ await this.sheetListHandle(sheetElements);
|
|
|
+ await this.listHandle(chartElements);
|
|
|
+ },
|
|
|
async listHandle(chartElements,fromType='') {
|
|
|
+ let needGetDataArr = []
|
|
|
for(let i=0;i<chartElements.length;i++) {
|
|
|
- if(!this.optionMap[chartElements[i].chartId])
|
|
|
- await this.getchartData(chartElements[i].chartId);
|
|
|
- //由于演示页的图表没有await加载,在这里更新每一张图表的信息
|
|
|
- if(fromType==='present'){
|
|
|
+ if(!this.optionMap[chartElements[i].chartId]){
|
|
|
+ /* needGetDataArr.push(new Promise((res,rej)=>{
|
|
|
+ res(this.getchartData(chartElements[i].chartId))
|
|
|
+ })) */
|
|
|
+ needGetDataArr.push(chartElements[i].chartId)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(needGetDataArr.length){
|
|
|
+ //由于存在加载过程中会切换PPT/页面的情况,不能一股脑加载
|
|
|
+ const chunkArray = (array, chunkSize)=>{
|
|
|
+ let result = [];
|
|
|
+ for (let i = 0; i < array.length; i += chunkSize) {
|
|
|
+ result.push(array.slice(i, i + chunkSize));
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ //将需要加载的数据分组
|
|
|
+ const chunkedArray = chunkArray(needGetDataArr, 6);
|
|
|
+ for(let i=0;i<chunkedArray.length;i++){
|
|
|
+ if(!chunkedArray[i].length) continue
|
|
|
+ if(this.interruptLoad) return
|
|
|
+ const promisesList = chunkedArray[i].map(chartId=>{
|
|
|
+ return new Promise((res,rej)=>{
|
|
|
+ res(this.getchartData(chartId))
|
|
|
+ })
|
|
|
+ })
|
|
|
+ await Promise.all(promisesList).then(()=>{}).catch((e)=>{
|
|
|
+ console.log('catch',e)
|
|
|
+ })
|
|
|
+ console.log(`第${i}组加载完成`)
|
|
|
+ }
|
|
|
+ console.log('全部加载完成')
|
|
|
+ if(fromType==='present'){
|
|
|
+ for(let i=0;i<chartElements.length;i++) {
|
|
|
let temp = getChartInfo(this.optionMap[chartElements[i].chartId])
|
|
|
this.$store.commit('SET_CHART_INFO',{chartId:chartElements[i].chartId,chartInfo:temp})
|
|
|
}
|
|
|
}
|
|
|
- },
|
|
|
+ }
|
|
|
+ },
|
|
|
async sheetListHandle(sheetElements){
|
|
|
+ let needGetDataArr = []
|
|
|
for(let i=0;i<sheetElements.length;i++){
|
|
|
- if(!this.sheetDataMap[sheetElements[i].sheetId])
|
|
|
- await this.getsheetData(sheetElements[i].sheetId)
|
|
|
+ if(!this.sheetDataMap[sheetElements[i].sheetId]){
|
|
|
+ needGetDataArr.push(new Promise((res,rej)=>{
|
|
|
+ res(this.getsheetData(sheetElements[i].sheetId))
|
|
|
+ }))
|
|
|
+ }
|
|
|
+ /* await this.getsheetData(sheetElements[i].sheetId) */
|
|
|
}
|
|
|
+ if(needGetDataArr.length)
|
|
|
+ await Promise.all(needGetDataArr).then(()=>{
|
|
|
+ //console.log('promise all then sheet')
|
|
|
+ }).catch((e)=>{
|
|
|
+ console.log('catch',e)
|
|
|
+ })
|
|
|
},
|
|
|
async getsheetData(id){
|
|
|
const res = await sheetInterface.getSheetData({
|
|
@@ -500,11 +562,12 @@ export default {
|
|
|
})
|
|
|
if(res.Ret !== 200) return 0
|
|
|
const {TableInfo} = res.Data
|
|
|
- console.log('get')
|
|
|
+ //console.log('get')
|
|
|
this.sheetDataMap[id] = _.cloneDeep(TableInfo.TableDataList)
|
|
|
return 1
|
|
|
},
|
|
|
initCharts(elements, page) {
|
|
|
+ console.log('initCharts')
|
|
|
const index = this.pageList.findIndex((i) => i.id === page.id)
|
|
|
if(index===-1) return
|
|
|
elements.forEach((item) => {
|
|
@@ -547,7 +610,7 @@ export default {
|
|
|
/* 主题样式*/
|
|
|
const chartTheme = ChartThemeStyle ? JSON.parse(ChartThemeStyle) : null;
|
|
|
|
|
|
- console.log(options)
|
|
|
+ //console.log(options)
|
|
|
this.$nextTick(() => {
|
|
|
let is_linear = options.series
|
|
|
? options.series.some(_ => _.chartType === 'linear')
|