diff --git a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java index 1448abeb..8cd8b082 100644 --- a/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java +++ b/DataRoom/dataroom-core/src/main/java/com/gccloud/dataroom/core/module/manage/service/impl/DataRoomPagePreviewServiceImpl.java @@ -6,6 +6,7 @@ import com.gccloud.common.exception.GlobalException; import com.gccloud.common.utils.BeanConvertUtils; import com.gccloud.dataroom.core.module.basic.dao.DataRoomPagePreviewDao; import com.gccloud.dataroom.core.module.basic.entity.PagePreviewEntity; +import com.gccloud.dataroom.core.module.chart.bean.Chart; import com.gccloud.dataroom.core.module.manage.dto.DataRoomPageDTO; import com.gccloud.dataroom.core.module.manage.service.IDataRoomPagePreviewService; import com.gccloud.dataroom.core.utils.CodeGenerateUtils; @@ -32,6 +33,7 @@ public class DataRoomPagePreviewServiceImpl extends ServiceImpl { + if (index === 0) { + option = option[field] + } else if (index === 1) { + // 根据id找到对应的type + changeObject = option.find(obj => obj.id === field) + changedObject = changeObject + option = option.filter(obj => obj.id !== field) + } else if (index === optionField.length - 1) { + // 数据配置时,必须有值才更新 + if ((set.tabName === type && type === 'data' && set.value) || (set.tabName === type && type === 'custom')) { + changeObject[field] = set.value + } + } else { + changeObject = changeObject[field] + } + }) + changeObject = { ...changeObject, ...changedObject } + option.push(changeObject) } else { optionField.forEach((field, index) => { if (index === optionField.length - 1) { @@ -261,8 +285,6 @@ export default { const yField = config.setting.find(item => item.optionField === 'yField')?.value const hasSeries = config.setting.find(item => item.optionField === 'seriesField' && item.value !== '') const { xData, yData } = this.getxDataAndYData(xField, yField, data, hasSeries) - // const xData = [...new Set(data.map(item => item[xField]))] - // const yData = data.map(item => item[yField]) const maxY = Math.max(...yData) + Math.max(...yData) * 0.2 // 生成阴影柱子的值 const shadowData = Array.from({ length: xData.length }, () => maxY) @@ -390,110 +412,14 @@ export default { option.series.push(...seriesItem) } } else { - option.series = [ - { - id: 'barTopColor', // 用于区分是图表的什么部分 - type: 'pictorialBar', // 象形柱图 - symbol: 'diamond', - symbolOffset: [0, '-50%'], // 上部菱形 - symbolSize: [30, 15], - // symbolOffset: [0, -6], // 上部椭圆 - symbolPosition: 'end', - z: 12, - label: { - normal: { - show: true, - position: 'top', - fontSize: 15, - fontWeight: 'bold', - color: '#27a7ce' - } - }, - color: option.seriesCustom.barTopColor, - data: yData - }, - { - id: 'barBottomColor', // 用于区分是图表的什么部分 - type: 'pictorialBar', - symbol: 'diamond', - symbolSize: [30, 15], - symbolOffset: ['0%', '50%'], // 下部菱形 - // symbolOffset: [0, 7], // 下部椭圆 - z: 12, - color: option.seriesCustom.barBottomColor, - data: yData - }, - { - id: 'barColor', // 用于区分是图表的什么部分 - type: 'bar', - barWidth: 30, - z: 10, - itemStyle: { - normal: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ - { - offset: 0, - color: option.seriesCustom.barColor1 - }, - { - offset: 1, - color: option.seriesCustom.barColor2 - } - ]), - opacity: 0.8, - shadowColor: 'rgba(0, 0, 0, 0.5)', // 阴影颜色 - shadowBlur: 0 // 阴影模糊值 - } - }, - data: yData - }, - { - id: 'shadowColor', // 用于区分是图表的什么部分 - type: 'bar', - barWidth: 30, - xAxisIndex: 1, - itemStyle: { - normal: { - color: option.seriesCustom.shadowColor, - opacity: 0.8, - shadowColor: 'rgba(0, 0, 0, 0.5)', // 阴影颜色 - shadowBlur: 0 // 阴影模糊值 - } - }, - label: { - show: false - }, - tooltip: { - show: false - }, - data: shadowData - }, - { - id: 'shadowTopColor', // 用于区分是图表的什么部分 - type: 'pictorialBar', // 象形柱图 - xAxisIndex: 1, - symbol: 'diamond', - symbolOffset: [0, '-50%'], // 上部菱形 - symbolSize: [30, 15], - // symbolOffset: [0, -6], // 上部椭圆 - symbolPosition: 'end', - z: 12, - label: { - normal: { - show: false, - position: 'top', - fontSize: 15, - fontWeight: 'bold', - color: '#27a7ce' - } - }, - color: option.seriesCustom.shadowTopColor, - tooltip: { - show: false - }, - data: shadowData + // 没有分组,不需要修改配置,直接修改series中每个对象的series + option.series.forEach(item => { + if (item.id.includes('shadow')) { + item.data = shadowData + } else { + item.data = yData } - ] + }) } return option },