From 1812ce2495063d73897cbe8d90be7c11ddad5cf5 Mon Sep 17 00:00:00 2001 From: ko1234 Date: Mon, 28 Jul 2025 14:53:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AA=BF=E6=95=B4=E8=BF=9130=E5=A4=A9=E8=83=BD?= =?UTF-8?q?=E8=80=97=E8=B6=A8=E5=8B=A2=E3=80=81=E7=92=B0=E6=AF=94=E8=83=BD?= =?UTF-8?q?=E8=80=97(=E5=81=87=E8=B3=87=E6=96=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/CviLux_globalmap.jpg | Bin 0 -> 42784 bytes .../headquarters/HeadquartersManagement.vue | 12 +- .../headquarters/components/ElecCompare.vue | 439 ++++++++++-------- .../headquarters/components/ElecRank.vue | 4 +- .../headquarters/components/ElecTrends.vue | 82 ++-- .../headquarters/components/SysProgress.vue | 2 +- 6 files changed, 308 insertions(+), 231 deletions(-) create mode 100644 public/CviLux_globalmap.jpg diff --git a/public/CviLux_globalmap.jpg b/public/CviLux_globalmap.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c323a1b2f934ae29507b1d7a0875531ae0bd002 GIT binary patch literal 42784 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%0D6O+bKu0 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 lW;W+2YT!#`Q2&Wly%=q&2)S3@9QnqM?| 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 F{{{T(4|D(k literal 0 HcmV?d00001 diff --git a/src/views/headquarters/HeadquartersManagement.vue b/src/views/headquarters/HeadquartersManagement.vue index 8b37a85..ea07577 100644 --- a/src/views/headquarters/HeadquartersManagement.vue +++ b/src/views/headquarters/HeadquartersManagement.vue @@ -80,10 +80,16 @@ onUnmounted(() => { 未來,瀚荃會持續精進提供更快、更好以及高附加價值的產品與服務來滿足您的需求。

- + -
+
+ +
{ diff --git a/src/views/headquarters/components/ElecCompare.vue b/src/views/headquarters/components/ElecCompare.vue index 19f7fef..07b0abe 100644 --- a/src/views/headquarters/components/ElecCompare.vue +++ b/src/views/headquarters/components/ElecCompare.vue @@ -5,35 +5,202 @@ import BarChart from "@/components/chart/BarChart.vue"; import { useI18n } from "vue-i18n"; const { locale, t } = useI18n(); -const props = defineProps({ - energyCostData: { - type: Object, - required: true, - }, + +// 假資料 +const fakeEnergyData = ref({ + buildings: [ + { + name: "A棟", + today: 100, + yesterday: 90, + week: 500, + lastWeek: 450, + month: 2000, + lastMonth: 1800, + year: 24000, + lastYear: 22000, + }, + { + name: "B棟", + today: 120, + yesterday: 110, + week: 600, + lastWeek: 550, + month: 2400, + lastMonth: 2200, + year: 28000, + lastYear: 26000, + }, + { + name: "C棟", + today: 80, + yesterday: 70, + week: 400, + lastWeek: 350, + month: 1600, + lastMonth: 1400, + year: 19000, + lastYear: 17000, + }, + { + name: "D棟", + today: 110, + yesterday: 100, + week: 550, + lastWeek: 500, + month: 2200, + lastMonth: 2000, + year: 26000, + lastYear: 24000, + }, + ], }); -const chartData = ref([]); // 初始化為空陣列 - -const labels = computed(() => [ - t("dashboard.today"), - t("dashboard.yesterday"), - t("dashboard.this_week"), - t("dashboard.last_week"), - t("dashboard.this_month"), - t("dashboard.last_month"), - t("dashboard.this_year"), - t("dashboard.last_year"), +const chartData = ref([]); +const currentType = ref({ + name: "today", +}); +const energyTypeList = ref([ + { + title: t("dashboard.daily_relative_change"), + key: "today", + }, + { + title: t("dashboard.weekly_relative_change"), + key: "week", + }, + { + title: t("dashboard.monthly_relative_change"), + key: "month", + }, + { + title: t("dashboard.yearly_relative_change"), + key: "year", + }, ]); + +const labels = computed(() => { + switch (currentType.value.name) { + case "today": + return [t("dashboard.today"), t("dashboard.yesterday")]; + case "week": + return [t("dashboard.this_week"), t("dashboard.last_week")]; + case "month": + return [t("dashboard.this_month"), t("dashboard.last_month")]; + case "year": + return [t("dashboard.this_year"), t("dashboard.last_year")]; + default: + return [t("dashboard.today"), t("dashboard.yesterday")]; + } +}); const barWidth = 30; // Set barWidth -const barChartOptions = ref({ +const barChartOptions = computed(() => ({ xAxis: { type: "category", - data: chartData.value.map((item) => item.category), + data: chartData.value.map((item) => item.name), axisLine: { lineStyle: { color: "#fff" } }, }, yAxis: { type: "value", show: false }, - series: [], // 初始化為空陣列 + grid: { + left: "-10%", + right: "1%", + bottom: "3%", + top: "4%", + containLabel: true, + }, + series: [ + { + name: "當前", + data: chartData.value.map((item) => item.current), + type: "bar", + barWidth: barWidth, + barGap: "-10%", + itemStyle: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { offset: 0, color: "#186B80" }, + { offset: 1, color: "#50C3E3" }, + ]), + shadowBlur: 5, + shadowColor: "rgba(0, 0, 0, 0.3)", + shadowOffsetY: 2, + shadowOffsetX: 5, + }, + z: 3, + }, + { + name: "對比", + data: chartData.value.map((item) => item.last), + type: "bar", + barWidth: barWidth, + itemStyle: { + color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ + { offset: 0, color: "#988F2C" }, + { offset: 1, color: "#FFF26D" }, + ]), + shadowBlur: 5, + shadowColor: "rgba(0, 0, 0, 0.3)", + shadowOffsetY: 2, + shadowOffsetX: 5, + }, + }, + { + // this top + z: 6, + type: "pictorialBar", + symbolPosition: "end", + data: chartData.value.map((item) => item.current), + symbol: "diamond", + symbolOffset: ["-45%", "-50%"], + symbolSize: [barWidth, barWidth * 0.5], + itemStyle: { + borderWidth: 0, + color: "#50C3E3", + }, + }, + { + // this bot + z: 6, + type: "pictorialBar", + symbolPosition: "start", + data: chartData.value.map((item) => item.current), + symbol: "diamond", + symbolOffset: ["-45%", "50%"], + symbolSize: [barWidth, barWidth * 0.5], + itemStyle: { + borderWidth: 0, + color: "#50C3E3", + }, + }, + { + // last top + z: 3, + type: "pictorialBar", + symbolPosition: "end", + data: chartData.value.map((item) => item.last), + symbol: "diamond", + symbolOffset: ["45%", "-50%"], + symbolSize: [barWidth, barWidth * 0.5], + itemStyle: { + borderWidth: 0, + color: "#FFF26D", + }, + }, + { + // last bot + z: 3, + type: "pictorialBar", + symbolPosition: "start", + data: chartData.value.map((item) => item.last), + symbol: "diamond", + symbolOffset: ["45%", "50%"], + symbolSize: [barWidth, barWidth * 0.5], + itemStyle: { + borderWidth: 0, + color: "#FFF26D", + }, + }, + ], tooltip: { trigger: "axis", axisPointer: { type: "shadow" }, @@ -49,179 +216,56 @@ const barChartOptions = ref({ return tooltipText; }, }, -}); +})); -function updateChartData(newEnergyCostData) { - if (newEnergyCostData && newEnergyCostData.compare) { - // 從 props.energyCostData.compare 中提取資料 - const compareData = newEnergyCostData.compare; +function updateChartData() { + // 從 fakeEnergyData 提取資料 + chartData.value = fakeEnergyData.value.buildings.map((building) => { + let currentKey = currentType.value.name; + let lastKey; - // 轉換資料格式 - chartData.value = [ - { - category: t("dashboard.daily_relative_change"), - this: compareData.day.current, - last: compareData.day.last, - change: compareData.day.percentage, - }, - { - category: t("dashboard.weekly_relative_change"), - this: compareData.week.current, - last: compareData.week.last, - change: compareData.week.percentage, - }, - { - category: t("dashboard.monthly_relative_change"), - this: compareData.month.current, - last: compareData.month.last, - change: compareData.month.percentage, - }, - { - category: t("dashboard.yearly_relative_change"), - this: compareData.year.current, - last: compareData.year.last, - change: compareData.year.percentage, - }, - ]; + switch (currentType.value.name) { + case "today": + lastKey = "yesterday"; + break; + case "week": + lastKey = "lastWeek"; + break; + case "month": + lastKey = "lastMonth"; + break; + case "year": + lastKey = "lastYear"; + break; + default: + lastKey = "yesterday"; + } - // 更新 barChartOptions - barChartOptions.value = { - xAxis: { - type: "category", - data: chartData.value.map((item) => item.category), - axisLine: { lineStyle: { color: "#fff" } }, - }, - yAxis: { type: "value", show: false }, - grid: { - left: "-10%", - right: "1%", - bottom: "3%", - top: "4%", - containLabel: true, - }, - series: [ - { - name: "當前週期", - data: chartData.value.map((item) => item.this), - type: "bar", - barWidth: barWidth, - barGap: "-10%", - itemStyle: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ - { offset: 0, color: "#186B80" }, - { offset: 1, color: "#50C3E3" }, - ]), - shadowBlur: 5, - shadowColor: "rgba(0, 0, 0, 0.3)", - shadowOffsetY: 2, - shadowOffsetX: 5, - }, - z: 3, - }, - { - name: "對比週期", - data: chartData.value.map((item) => item.last), - type: "bar", - barWidth: barWidth, - itemStyle: { - color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [ - { offset: 0, color: "#988F2C" }, - { offset: 1, color: "#FFF26D" }, - ]), - shadowBlur: 5, - shadowColor: "rgba(0, 0, 0, 0.3)", - shadowOffsetY: 2, - shadowOffsetX: 5, - }, - }, - { - // this top - z: 6, - type: "pictorialBar", - symbolPosition: "end", - data: chartData.value.map((item) => item.this), - symbol: "diamond", - symbolOffset: ["-45%", "-50%"], - symbolSize: [barWidth, barWidth * 0.5], - itemStyle: { - borderWidth: 0, - color: "#50C3E3", - }, - }, - { - // this bot - z: 6, - type: "pictorialBar", - symbolPosition: "start", - data: chartData.value.map((item) => item.this), - symbol: "diamond", - symbolOffset: ["-45%", "50%"], - symbolSize: [barWidth, barWidth * 0.5], - itemStyle: { - borderWidth: 0, - color: "#50C3E3", - }, - }, - { - // last top - z: 3, - type: "pictorialBar", - symbolPosition: "end", - data: chartData.value.map((item) => item.last), - symbol: "diamond", - symbolOffset: ["45%", "-50%"], - symbolSize: [barWidth, barWidth * 0.5], - itemStyle: { - borderWidth: 0, - color: "#FFF26D", - }, - }, - { - // last bot - z: 3, - type: "pictorialBar", - symbolPosition: "start", - data: chartData.value.map((item) => item.last), - symbol: "diamond", - symbolOffset: ["45%", "50%"], - symbolSize: [barWidth, barWidth * 0.5], - itemStyle: { - borderWidth: 0, - color: "#FFF26D", - }, - }, - ], - tooltip: { - trigger: "axis", - axisPointer: { type: "shadow" }, - formatter: function (params) { - let tooltipText = `
${params[0].axisValueLabel}
`; - const filteredParams = params.filter( - (item) => item.seriesType === "bar" - ); - filteredParams.forEach((item) => { - tooltipText += `
${item.marker} ${ - item.value ? item.value : "-" - }
`; - }); - - return tooltipText; - }, - }, + return { + name: building.name, + current: building[currentKey], + last: building[lastKey], + difference: building[currentKey] - building[lastKey], }; - } + }); } -// 使用 watch 監聽 energyCostData 的變化 + +// 使用 watch 監聽 fakeEnergyData 的變化 watch( - () => props.energyCostData, - (newEnergyCostData) => { - updateChartData(newEnergyCostData); + () => [fakeEnergyData.value, currentType.value], + () => { + updateChartData(); }, - { immediate: true } // 立即執行一次,確保初始資料載入 + { deep: true, immediate: true } // 立即執行一次,確保初始資料載入 ); +// 监听 currentType 的变化 +watch(currentType, () => { + updateChartData(); +}); + watch(locale, () => { - updateChartData(props.energyCostData); + updateChartData(); }); @@ -229,9 +273,20 @@ watch(locale, () => {
-

+

{{ $t("dashboard.relative_energy_consumption") }}

+
{ class="w-1/4 text-center mx-1" >
- {{ labels[index * 2] }} + {{ labels[0] }}
- {{ data.this ?? "-" }} + {{ data.current ?? "-" }}
- {{ labels[index * 2 + 1] }} + {{ labels[1] }}
{ > {{ - data.change - ? (data.change > 0 ? "+" : "") + data.change + "%" + data.difference + ? (data.difference > 0 ? "+" : "") + data.difference : "-" }} diff --git a/src/views/headquarters/components/ElecRank.vue b/src/views/headquarters/components/ElecRank.vue index 232de2a..4d19214 100644 --- a/src/views/headquarters/components/ElecRank.vue +++ b/src/views/headquarters/components/ElecRank.vue @@ -37,7 +37,7 @@ const getCurrentEnergyData = () => {