|
|
@@ -274,12 +274,21 @@ export const comprehensiveMixin = {
|
|
|
|
|
|
if (data && String(data.parentId ?? '').trim() === '-1') {
|
|
|
// 根节点:只保留当前根及其已勾选的子节点
|
|
|
- paths
|
|
|
- .filter((path) => path[0] && path[0].id === data.id)
|
|
|
- .forEach((path) => {
|
|
|
- path.forEach((node) => sanitized.add(node.id))
|
|
|
+ // paths
|
|
|
+ // .filter((path) => path[0] && path[0].id === data.id)
|
|
|
+ // .forEach((path) => {
|
|
|
+ // path.forEach((node) => sanitized.add(node.id))
|
|
|
+ // })
|
|
|
+ // sanitized.add(data.id)
|
|
|
+ paths.forEach((path) => {
|
|
|
+ path.forEach((node) => {
|
|
|
+ if (node.parentId == -1) {
|
|
|
+ sanitized.add(node.id)
|
|
|
+ } else if (node.parentId != -1 && node.parentId == data.rowid) {
|
|
|
+ sanitized.add(node.id)
|
|
|
+ }
|
|
|
})
|
|
|
- sanitized.add(data.id)
|
|
|
+ })
|
|
|
} else if (data) {
|
|
|
// 子/孙节点:保留当前节点及其已勾选的子节点,并保留已勾选的根节点
|
|
|
paths
|
|
|
@@ -888,13 +897,33 @@ export const comprehensiveMixin = {
|
|
|
|
|
|
// 获取构成图表基础配置(historyAnalysis.vue 使用)
|
|
|
getBaseCompositionChartOption(data = []) {
|
|
|
- // 为每个数据项分配不同的颜色
|
|
|
- const dataWithColors = data.map((item, index) => ({
|
|
|
- ...item,
|
|
|
- itemStyle: {
|
|
|
- color: this.getColorByIndex(index),
|
|
|
- },
|
|
|
- }))
|
|
|
+ // 为每个数据项分配不同的颜色,并确保使用与tooltip一致的数值计算
|
|
|
+ const dataWithColors = data.map((item, index) => {
|
|
|
+ const surveysVos = Array.isArray(item?.surveysVos)
|
|
|
+ ? item.surveysVos
|
|
|
+ : []
|
|
|
+ // 计算所有年度值的总和,与tooltip中的计算逻辑保持一致
|
|
|
+ const totalSum = surveysVos.reduce((sum, sv) => {
|
|
|
+ const hasValue = sv.value !== undefined && sv.value !== null
|
|
|
+ const hasRvalue = sv.rvalue !== undefined && sv.rvalue !== null
|
|
|
+ const mainValue = hasValue
|
|
|
+ ? Number(sv.value) || 0
|
|
|
+ : hasRvalue
|
|
|
+ ? Number(sv.rvalue) || 0
|
|
|
+ : 0
|
|
|
+ return sum + mainValue
|
|
|
+ }, 0)
|
|
|
+ // 使用总和作为饼图的数值,如果没有年度数据则使用原始值
|
|
|
+ const displayValue = totalSum > 0 ? totalSum : item.value
|
|
|
+
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ value: displayValue, // 使用与tooltip一致的数值
|
|
|
+ itemStyle: {
|
|
|
+ color: this.getColorByIndex(index),
|
|
|
+ },
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
return {
|
|
|
tooltip: {
|
|
|
@@ -1020,12 +1049,32 @@ export const comprehensiveMixin = {
|
|
|
// 获取构成图表基础配置(industryAnalysis.vue 使用)
|
|
|
getIndustryCompositionChartOption(data = []) {
|
|
|
// 为每个数据项分配不同的颜色,按照顺序使用 getColorByIndex
|
|
|
- const dataWithColors = data.map((item, index) => ({
|
|
|
- ...item,
|
|
|
- itemStyle: {
|
|
|
- color: this.getColorByIndex(index),
|
|
|
- },
|
|
|
- }))
|
|
|
+ const dataWithColors = data.map((item, index) => {
|
|
|
+ const surveysVos = Array.isArray(item?.surveysVos)
|
|
|
+ ? item.surveysVos
|
|
|
+ : []
|
|
|
+ // 计算所有年度值的总和,与tooltip中的计算逻辑保持一致
|
|
|
+ const totalSum = surveysVos.reduce((sum, sv) => {
|
|
|
+ const hasValue = sv.value !== undefined && sv.value !== null
|
|
|
+ const hasRvalue = sv.rvalue !== undefined && sv.rvalue !== null
|
|
|
+ const mainValue = hasValue
|
|
|
+ ? Number(sv.value) || 0
|
|
|
+ : hasRvalue
|
|
|
+ ? Number(sv.rvalue) || 0
|
|
|
+ : 0
|
|
|
+ return sum + mainValue
|
|
|
+ }, 0)
|
|
|
+ // 使用总和作为饼图的数值,如果没有年度数据则使用原始值
|
|
|
+ const displayValue = totalSum > 0 ? totalSum : item.value
|
|
|
+
|
|
|
+ return {
|
|
|
+ ...item,
|
|
|
+ value: displayValue, // 使用与tooltip一致的数值
|
|
|
+ itemStyle: {
|
|
|
+ color: this.getColorByIndex(index),
|
|
|
+ },
|
|
|
+ }
|
|
|
+ })
|
|
|
|
|
|
return {
|
|
|
tooltip: {
|