From 6b1839a4311106a07a5e6b7556785bc822533c01 Mon Sep 17 00:00:00 2001 From: gaohaifeng Date: Fri, 5 Sep 2025 10:54:48 +0800 Subject: [PATCH] =?UTF-8?q?feat(IntegratedEnergy):=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E5=BC=80=E5=B7=A5=E6=8C=87=E6=95=B0=E7=BB=84=E4=BB=B6=E5=8F=8A?= =?UTF-8?q?=E7=9B=B8=E5=85=B3=E8=B5=84=E6=BA=90=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加开工指数组件,包括配置、数据和视图文件 添加相关图片资源用于组件展示 在IntegratedEnergy模块中注册新组件 --- public/assets/rank0.png | Bin 0 -> 3576 bytes public/assets/rank1.png | Bin 0 -> 3654 bytes public/assets/rank2.png | Bin 0 -> 3730 bytes public/assets/rank3.png | Bin 0 -> 3620 bytes public/assets/rank4.png | Bin 0 -> 3810 bytes public/assets/title_bg.png | Bin 0 -> 9335 bytes .../ConstructionIndex/assets/rank0.png | Bin 0 -> 3576 bytes .../ConstructionIndex/assets/rank1.png | Bin 0 -> 3654 bytes .../ConstructionIndex/assets/rank2.png | Bin 0 -> 3730 bytes .../ConstructionIndex/assets/rank3.png | Bin 0 -> 3620 bytes .../ConstructionIndex/assets/rank4.png | Bin 0 -> 3810 bytes .../ConstructionIndex/assets/tag.png | Bin 0 -> 8137 bytes .../ConstructionIndex/assets/title_bg.png | Bin 0 -> 9335 bytes .../ConstructionIndex/config.ts | 17 + .../ConstructionIndex/config.vue | 18 + .../ConstructionIndex/data.json | 27 ++ .../ConstructionIndex/index.ts | 14 + .../ConstructionIndex/index.vue | 168 +++++++++ .../ConsumptionProportion/test.js | 320 ------------------ .../Charts/IntegratedEnergy/index.ts | 11 +- 20 files changed, 250 insertions(+), 325 deletions(-) create mode 100644 public/assets/rank0.png create mode 100644 public/assets/rank1.png create mode 100644 public/assets/rank2.png create mode 100644 public/assets/rank3.png create mode 100644 public/assets/rank4.png create mode 100644 public/assets/title_bg.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank0.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank1.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank2.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank3.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank4.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/tag.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/title_bg.png create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.ts create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.vue create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/data.json create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.ts create mode 100644 src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.vue delete mode 100644 src/packages/components/Charts/IntegratedEnergy/ConsumptionProportion/test.js diff --git a/public/assets/rank0.png b/public/assets/rank0.png new file mode 100644 index 0000000000000000000000000000000000000000..cca846b8db56059bd2d975d3c8889d0e16817cd0 GIT binary patch literal 3576 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 YDmmomzMr<3Z~ocYTG?AZI^+@ge=aRuvj6}9 literal 0 HcmV?d00001 diff --git a/public/assets/rank2.png b/public/assets/rank2.png new file mode 100644 index 0000000000000000000000000000000000000000..34a633e434ef26116f414b981a8e7b626128bb8f GIT binary patch literal 3730 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 literal 0 HcmV?d00001 diff --git a/public/assets/rank3.png b/public/assets/rank3.png new file mode 100644 index 0000000000000000000000000000000000000000..64312e82de775344fa0bf669ac32b9f370e0fd3f GIT binary patch literal 3620 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 literal 0 HcmV?d00001 diff --git a/public/assets/rank4.png b/public/assets/rank4.png new file mode 100644 index 0000000000000000000000000000000000000000..7955a4bce330ac8b2e7052ea29af994d3b047d37 GIT binary patch literal 3810 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 literal 0 HcmV?d00001 diff --git a/public/assets/title_bg.png b/public/assets/title_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..02b39a9aa6fa7abc7a71f476155e78211c03011b GIT binary patch literal 9335 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 Da%GTn literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank0.png b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank0.png new file mode 100644 index 0000000000000000000000000000000000000000..cca846b8db56059bd2d975d3c8889d0e16817cd0 GIT binary patch literal 3576 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 YDmmomzMr<3Z~ocYTG?AZI^+@ge=aRuvj6}9 literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank2.png b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank2.png new file mode 100644 index 0000000000000000000000000000000000000000..34a633e434ef26116f414b981a8e7b626128bb8f GIT binary patch literal 3730 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 literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank3.png b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank3.png new file mode 100644 index 0000000000000000000000000000000000000000..64312e82de775344fa0bf669ac32b9f370e0fd3f GIT binary patch literal 3620 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 literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank4.png b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/rank4.png new file mode 100644 index 0000000000000000000000000000000000000000..7955a4bce330ac8b2e7052ea29af994d3b047d37 GIT binary patch literal 3810 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 literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/tag.png b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/tag.png new file mode 100644 index 0000000000000000000000000000000000000000..401285c471ddbdc8ab78a255c70a9e67915fcde2 GIT binary patch literal 8137 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 xcp`A* literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/title_bg.png b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/assets/title_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..02b39a9aa6fa7abc7a71f476155e78211c03011b GIT binary patch literal 9335 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 Da%GTn literal 0 HcmV?d00001 diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.ts b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.ts new file mode 100644 index 0000000..bc24166 --- /dev/null +++ b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.ts @@ -0,0 +1,17 @@ +import { PublicConfigClass } from '@/packages/public' +import { CreateComponentType } from '@/packages/index.d' +import { ConstructionIndexConfig } from './index' +import cloneDeep from 'lodash/cloneDeep' + +//导入数据 +import dataJson from './data.json' + +export const option = { + dataset: dataJson.source +} + +export default class Config extends PublicConfigClass implements CreateComponentType { + public key = ConstructionIndexConfig.key + public chartConfig = cloneDeep(ConstructionIndexConfig) + public option = cloneDeep(option) +} diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.vue b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.vue new file mode 100644 index 0000000..75616b3 --- /dev/null +++ b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/config.vue @@ -0,0 +1,18 @@ + + + + diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/data.json b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/data.json new file mode 100644 index 0000000..f1d63c3 --- /dev/null +++ b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/data.json @@ -0,0 +1,27 @@ +{ + "source": { + "constructionIndex": 10, + "productionLine": [ + { + "name": "生产线1", + "value": 136 + }, + { + "name": "生产线2", + "value": 98 + }, + { + "name": "生产线3", + "value": 96 + }, + { + "name": "生产线4", + "value": 68 + }, + { + "name": "生产线5", + "value": 64 + } + ] + } +} \ No newline at end of file diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.ts b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.ts new file mode 100644 index 0000000..710990e --- /dev/null +++ b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.ts @@ -0,0 +1,14 @@ +import { ConfigType, PackagesCategoryEnum, ChartFrameEnum } from '@/packages/index.d' +import { ChatCategoryEnum,ChatCategoryEnumName } from '../../index.d' + +export const ConstructionIndexConfig: ConfigType = { + key: 'ConstructionIndex', + chartKey: 'VConstructionIndex', + conKey: 'VCConstructionIndex', + title: '开工指数', + category: ChatCategoryEnum.IntegratedEnergy, + categoryName: ChatCategoryEnumName.IntegratedEnergy, + package: PackagesCategoryEnum.CHARTS, + chartFrame: ChartFrameEnum.COMMON, + image: 'EnergyOverview.png' +} \ No newline at end of file diff --git a/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.vue b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.vue new file mode 100644 index 0000000..689d31a --- /dev/null +++ b/src/packages/components/Charts/IntegratedEnergy/ConstructionIndex/index.vue @@ -0,0 +1,168 @@ + + + + + \ No newline at end of file diff --git a/src/packages/components/Charts/IntegratedEnergy/ConsumptionProportion/test.js b/src/packages/components/Charts/IntegratedEnergy/ConsumptionProportion/test.js deleted file mode 100644 index 0a56abc..0000000 --- a/src/packages/components/Charts/IntegratedEnergy/ConsumptionProportion/test.js +++ /dev/null @@ -1,320 +0,0 @@ -// 传入数据生成 option -const dataList = [ - { - name: '公务用车运行维护费', - val: 1230,//存储数据的地方 - itemStyle: { - color: 'rgba(0, 81, 180, 0.5)', - }, - }, - - { - name: '办公费', - val: 800,//存储数据的地方 - itemStyle: { - color: 'rgba(255, 196, 0, 0.5)', - }, - }, - { - name: '差旅费', - val: 500,//存储数据的地方 - itemStyle: { - color: 'rgba(95, 144, 110, 0.5)', - }, - }, -]; -const heightProportion = 0.2 // 柱状扇形的高度比例 - - -// 生成扇形的曲面参数方程,用于 series-surface.parametricEquation -function getParametricEquation(startRatio, endRatio, isSelected, isHovered, k, height) { - - // 计算 - let midRatio = (startRatio + endRatio) / 3; - - let startRadian = startRatio * Math.PI * 2; - let endRadian = endRatio * Math.PI * 2; - let midRadian = midRatio * Math.PI * 2; - - // 如果只有一个扇形,则不实现选中效果。 - if (startRatio === 0 && endRatio === 1) { - isSelected = false; - } - - // 通过扇形内径/外径的值,换算出辅助参数 k(默认值 1/3) - k = typeof k !== 'undefined' ? k : 1 / 3; - - // 计算选中效果分别在 x 轴、y 轴方向上的位移(未选中,则位移均为 0) - let offsetX = isSelected ? Math.cos(midRadian) * 0.1 : 0; - let offsetY = isSelected ? Math.sin(midRadian) * 0.1 : 0; - - // 计算高亮效果的放大比例(未高亮,则比例为 1) - let hoverRate = isHovered ? 1.1 : 1; - - // 返回曲面参数方程 - return { - u: { - min: -Math.PI, - max: Math.PI * 3, - step: Math.PI / 32 - }, - - v: { - min: 0, - max: Math.PI * 2, - step: Math.PI / 20 - }, - - x: function (u, v) { - if (u < startRadian) { - return offsetX + Math.cos(startRadian) * (1 + Math.cos(v) * k) * hoverRate; - } - if (u > endRadian) { - return offsetX + Math.cos(endRadian) * (1 + Math.cos(v) * k) * hoverRate; - } - return offsetX + Math.cos(u) * (1 + Math.cos(v) * k) * hoverRate; - }, - - y: function (u, v) { - if (u < startRadian) { - return offsetY + Math.sin(startRadian) * (1 + Math.cos(v) * k) * hoverRate; - } - if (u > endRadian) { - return offsetY + Math.sin(endRadian) * (1 + Math.cos(v) * k) * hoverRate; - } - return offsetY + Math.sin(u) * (1 + Math.cos(v) * k) * hoverRate; - }, - - z: function (u, v) { - if (u < -Math.PI * 0.5) { - return Math.sin(u); - } - if (u > Math.PI * 2.5) { - return Math.sin(u); - } - return Math.sin(v) > 0 ? heightProportion * height : -1; - } - }; -}; - -// 生成模拟 3D 饼图的配置项 -function getPie3D(pieData, internalDiameterRatio) { - - let series = []; - let sumValue = 0; - let startValue = 0; - let endValue = 0; - let legendData = []; - let linesSeries = []; // line3D模拟label指示线 - let k = typeof internalDiameterRatio !== 'undefined' ? (1 - internalDiameterRatio) / (1 + internalDiameterRatio) : 1 / 3; - - // 为每一个饼图数据,生成一个 series-surface 配置 - for (let i = 0; i < pieData.length; i++) { - - sumValue += pieData[i].value; - - let seriesItem = { - name: typeof pieData[i].name === 'undefined' ? `series${i}` : pieData[i].name, - type: 'surface', - parametric: true, - wireframe: { - show: false - }, - pieData: pieData[i], - pieStatus: { - selected: false, - hovered: false, - k: k - } - }; - - if (typeof pieData[i].itemStyle != 'undefined') { - - let itemStyle = {}; - - typeof pieData[i].itemStyle.color != 'undefined' ? itemStyle.color = pieData[i].itemStyle.color : null; - typeof pieData[i].itemStyle.opacity != 'undefined' ? itemStyle.opacity = pieData[i].itemStyle.opacity : null; - - seriesItem.itemStyle = itemStyle; - } - series.push(seriesItem); - } - - // 使用上一次遍历时,计算出的数据和 sumValue,调用 getParametricEquation 函数, - // 向每个 series-surface 传入不同的参数方程 series-surface.parametricEquation,也就是实现每一个扇形。 - for (let i = 0; i < series.length; i++) { - endValue = startValue + series[i].pieData.value; - // console.log(series[i]); - series[i].pieData.startRatio = startValue / sumValue; - series[i].pieData.endRatio = endValue / sumValue; - series[i].parametricEquation = getParametricEquation(series[i].pieData.startRatio, - series[i].pieData.endRatio, - false, - false, - k, - series[i].pieData.value - ); - - startValue = endValue; - - // 计算label指示线的起始和终点位置 - let midRadian = (series[i].pieData.endRatio + series[i].pieData.startRatio) * Math.PI; - let posX = Math.cos(midRadian) * (1 + Math.cos(Math.PI / 2)); - let posY = Math.sin(midRadian) * (1 + Math.cos(Math.PI / 2)); - let posZ = Math.log(Math.abs(series[i].pieData.value + 1)) * 0.1; - let flag = ((midRadian >= 0 && midRadian <= Math.PI / 2) || (midRadian >= 3 * Math.PI / 2 && midRadian <= Math.PI * 2)) ? 1 : -1; - let color = pieData[i].itemStyle.color; - let turningPosArr = [posX * (1.8) + (i * 0.1 * flag) + (flag < 0 ? -0.5 : 0), posY * (1.8) + (i * 0.1 * flag) + (flag < 0 ? -0.5 : 0), posZ * (2)] - let endPosArr = [posX * (1.9) + (i * 0.1 * flag) + (flag < 0 ? -0.5 : 0), posY * (1.9) + (i * 0.1 * flag) + (flag < 0 ? -0.5 : 0), posZ * (6)] - - linesSeries.push({ - type: 'line3D', - lineStyle: { - color: color, - }, - data: [[posX, posY, posZ], turningPosArr, endPosArr] - }, - { - type: 'scatter3D', - label: { - show: true, - distance: 0, - position: 'center', - textStyle: { - color: '#ffffff', - backgroundColor: color, - borderWidth: 2, - fontSize: 14, - padding: 10, - borderRadius: 4, - }, - formatter: '{b}' - }, - symbolSize: 0, - data: [{ name: series[i].name + '\n' + series[i].pieData.val, value: endPosArr }] - }); - - legendData.push(series[i].name); - } - series = series.concat(linesSeries) - - // 最底下圆盘 - series.push({ - name: 'mouseoutSeries', - type: 'surface', - parametric: true, - wireframe: { - show: false, - }, - itemStyle: { - opacity: 1, - color: 'rgba(25, 93, 176, 1)', - }, - parametricEquation: { - u: { - min: 0, - max: Math.PI * 2, - step: Math.PI / 20, - }, - v: { - min: 0, - max: Math.PI, - step: Math.PI / 20, - }, - x: function (u, v) { - return ((Math.sin(v) * Math.sin(u) + Math.sin(u)) / Math.PI) * 2; - }, - y: function (u, v) { - return ((Math.sin(v) * Math.cos(u) + Math.cos(u)) / Math.PI) * 2; - }, - z: function (u, v) { - return Math.cos(v) > 0 ? -0 : -1.5; - }, - }, - }); - return series; -} - -let total = 0 -dataList.forEach(item => { - total += item.val -}) -const series = getPie3D(dataList.map(item => { - item.value = Number((item.val / total * 100).toFixed(2)) - return item -}), 0.8, 240, 28, 26, 1); - -// 准备待返回的配置项,把准备好的 legendData、series 传入。 -option = { - legend: { - tooltip: { - show: true, - }, - data: dataList.map(item => item.name), - top: '5%', - left: '5%', - icon: 'circle', - textStyle: { - color: '#fff', - fontSize: 14, - }, - }, - animation: true, - title: [ - { - x: 'center', - top: '40%', - text: total, - textStyle: { - color: '#fff', - fontSize: 42, - fontWeight: 'bold' - }, - }, - { - x: 'center', - top: '48%', - text: '还款总额', - textStyle: { - color: '#fff', - fontSize: 22, - fontWeight: 400 - }, - }, - ], - backgroundColor: '#333', - labelLine: { - show: true, - lineStyle: { - color: '#7BC0CB', - }, - }, - label: { - show: false, - }, - xAxis3D: { - min: -1.5, - max: 1.5, - }, - yAxis3D: { - min: -1.5, - max: 1.5, - }, - zAxis3D: { - min: -1, - max: 1, - }, - grid3D: { - show: false, - boxHeight: 4, - bottom: '50%', - viewControl: { - distance: 180, - alpha: 25, - beta: 60, - autoRotate: true, // 自动旋转 - }, - }, - - series: series, -}; \ No newline at end of file diff --git a/src/packages/components/Charts/IntegratedEnergy/index.ts b/src/packages/components/Charts/IntegratedEnergy/index.ts index 3487cae..14d753f 100644 --- a/src/packages/components/Charts/IntegratedEnergy/index.ts +++ b/src/packages/components/Charts/IntegratedEnergy/index.ts @@ -7,10 +7,11 @@ import { AirSupplySystemConfig } from './AirSupplySystem' import { PowerSupplySystemConfig } from './PowerSupplySystem' import { GasSystemConfig } from './GasSystem' import { LineGradientsConfig } from './LineGradients' +import { ConstructionIndexConfig } from './ConstructionIndex' export default [ - EnergyOverviewConfig, EnergyConsumptionTrendConfig, - ConsumptionProportionConfig, - FeeOverviewConfig, - WaterSupplySystemConfig, AirSupplySystemConfig, PowerSupplySystemConfig, - GasSystemConfig,LineGradientsConfig + EnergyOverviewConfig, EnergyConsumptionTrendConfig, + ConsumptionProportionConfig, + FeeOverviewConfig, + WaterSupplySystemConfig, AirSupplySystemConfig, PowerSupplySystemConfig, + GasSystemConfig, LineGradientsConfig, ConstructionIndexConfig ]