diff --git a/ui/dv/AiDvViewer.vue b/ui/dv/AiDvViewer.vue index d60bbb8f..52bff170 100644 --- a/ui/dv/AiDvViewer.vue +++ b/ui/dv/AiDvViewer.vue @@ -86,27 +86,28 @@ export default { this.component = config.custom this.meta = config?.meta || {} } else { - this.componentList = JSON.parse(res.data.config).config + const layers = JSON.parse(res.data.config).config this.dashboard = JSON.parse(res.data.config).dashboard - - this.componentList.forEach((item, index) => { + Promise.all(layers.map(item => Promise.resolve().then(() => { if (item.dataType !== 'staticData' && ((item.type.indexOf('Chart') > -1) || ['display', 'table', 'map', 'summary', 'AiRanking', 'AiDvTable'].includes(item.type))) { - this.getSourceData(item, index) + return this.getSourceData(item, index) } if (item.type === 'monitor' && item.monitorType === 'cmcc') { - item.moniterId && this.instance.post(`${this.urlPrefix}/appzyvideoequipment/getWebSdkUrl?deviceId=${item.moniterId}`).then(res => { + return item.moniterId && this.instance.post(`${this.urlPrefix}/appzyvideoequipment/getWebSdkUrl?deviceId=${item.moniterId}`).then(res => { if (res.code == 0) { - this.$set(this.componentList[index], 'src', JSON.parse(res.data).url) + return item.src = JSON.parse(res.data).url } }) } if (item.type === 'monitor' && item.monitorType === 'slw') { - item.moniterId && this.instance.post(`${this.urlPrefix}/appzyvideoequipment/getWebSdkUrl?deviceId=${item.moniterId}`).then(res => { + return item.moniterId && this.instance.post(`${this.urlPrefix}/appzyvideoequipment/getWebSdkUrl?deviceId=${item.moniterId}`).then(res => { if (res.code == 0) { - this.$set(this.componentList[index], 'src', res.data) + return item.src = res.data } }) } + }))).then(() => { + this.componentList = layers }) } } @@ -114,7 +115,7 @@ export default { }, getSourceData(item, index) { const api = item.dataType === 'apiData' ? item.api : `${this.urlPrefix}/appdiylargescreen/statisticsByLsid?id=${item.sourceDataId}` - this.instance.post(api).then(res => { + return this.instance.post(api).then(res => { if (res?.data) { if (res.data.length) { const keys = Object.keys(res.data[0])