@@ -11,10 +11,10 @@
{{ props.subtitle }}
-
+
+
diff --git a/src/views/camera/index.vue b/src/views/camera/index.vue
new file mode 100644
index 0000000..77e9643
--- /dev/null
+++ b/src/views/camera/index.vue
@@ -0,0 +1,374 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+
+ 重置
+
+ {{ word }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+
+
+ 重置
+
+ {{ word }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 在线
+ 离线
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加预置位
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/alarmManage/components/fenxiBar.vue b/src/views/integratedManage/alarmManage/components/fenxiBar.vue
new file mode 100644
index 0000000..f8ed4db
--- /dev/null
+++ b/src/views/integratedManage/alarmManage/components/fenxiBar.vue
@@ -0,0 +1,185 @@
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/alarmManage/components/levelPie.vue b/src/views/integratedManage/alarmManage/components/levelPie.vue
new file mode 100644
index 0000000..23e394b
--- /dev/null
+++ b/src/views/integratedManage/alarmManage/components/levelPie.vue
@@ -0,0 +1,219 @@
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/alarmManage/components/levelSet.vue b/src/views/integratedManage/alarmManage/components/levelSet.vue
new file mode 100644
index 0000000..9dc99cb
--- /dev/null
+++ b/src/views/integratedManage/alarmManage/components/levelSet.vue
@@ -0,0 +1,352 @@
+
+
+
+
+ {{ scope.row.levelName }}
+
+
+
+
+
+ {{ scope.row.priority }}
+
+
+
+
+ {{ scope.row.responseTime }}
+
+
+
+
+
+ {{ method }}
+
+
+
+
+
+
+
+
+
+
+ 配置
+ 删除
+
+
+
+
+
+
+
+
+
+
{{ currentConfigData.levelName }} - 详细配置
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/alarmManage/components/totalView.vue b/src/views/integratedManage/alarmManage/components/totalView.vue
new file mode 100644
index 0000000..36d4675
--- /dev/null
+++ b/src/views/integratedManage/alarmManage/components/totalView.vue
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+
+
+
{{ totalData.totalAlarm }}
+
+
+
+
+
+
+
+
+
+
+
+
+{{ totalData.totalIncrease }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
+
+
{{ totalData.unprocessedAlarm }}
+
+
+
+
+
+
+
+
+
+
+
+
+{{ totalData.unprocessedIncrease }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
+
+
{{ totalData.processedAlarm }}
+
+
+
+
+
+
+
+
+
+
+
+
+{{ totalData.processedIncrease }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
+
+
{{ totalData.seriousAlarm }}
+
+
+
+
+
+
+
+
+
+
+
+
+{{ totalData.seriousIncrease }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/alarmManage/index.vue b/src/views/integratedManage/alarmManage/index.vue
new file mode 100644
index 0000000..0d5fd6e
--- /dev/null
+++ b/src/views/integratedManage/alarmManage/index.vue
@@ -0,0 +1,210 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/attendManage/components/attendTrend.vue b/src/views/integratedManage/attendManage/components/attendTrend.vue
new file mode 100644
index 0000000..3a5f3e5
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/attendTrend.vue
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/components/infoBox.vue b/src/views/integratedManage/attendManage/components/infoBox.vue
new file mode 100644
index 0000000..1273b68
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/infoBox.vue
@@ -0,0 +1,60 @@
+
+
+
+
+
2025-08-26
+
28℃
+
中午好,管理员
+
加入项目已经89天
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/components/renyuanguanliDialog.vue b/src/views/integratedManage/attendManage/components/renyuanguanliDialog.vue
new file mode 100644
index 0000000..5aae012
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/renyuanguanliDialog.vue
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 添加排班类型
+
+
+ 提示:已添加 {{ attendForm.userTypeBos.length }}/{{ shiftTypes.length }} 种排班类型
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/components/renyuanpaiban.vue b/src/views/integratedManage/attendManage/components/renyuanpaiban.vue
new file mode 100644
index 0000000..0fb3fa5
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/renyuanpaiban.vue
@@ -0,0 +1,391 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatShiftText(scope.row[`day${index + 1}`]) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/attendManage/components/rightBox/approval.vue b/src/views/integratedManage/attendManage/components/rightBox/approval.vue
new file mode 100644
index 0000000..0d3cbf9
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/rightBox/approval.vue
@@ -0,0 +1,171 @@
+
+
+
+
+
+
+
+
+
+
+
+
{{ item.type }}
+
{{ item.days }}天
+
+
+
+
+
{{ item.timeRange }}
+
+
+
+
{{ item.people }}
+
+
+
+
+
+ {{ item.status }}
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/components/rightBox/calendar.vue b/src/views/integratedManage/attendManage/components/rightBox/calendar.vue
new file mode 100644
index 0000000..65e32b3
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/rightBox/calendar.vue
@@ -0,0 +1,336 @@
+
+
+
+
+
+
+
+ {{ day }}
+
+
+
+
+
+ {{ day }}
+
+
+
+
+ {{ day }}
+
+
+
+
+
+
+
+
+ {{ day }}
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/components/rightBox/todayAttend.vue b/src/views/integratedManage/attendManage/components/rightBox/todayAttend.vue
new file mode 100644
index 0000000..049fb41
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/rightBox/todayAttend.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+
+ 出勤
+ {{ props.todayAttendData.attendance.count }}人
+
+
+
+
+
+ 迟到
+ {{ props.todayAttendData.late.count }}人
+
+
+
+
+
+ 早退
+ {{ props.todayAttendData.earlyLeave.count }}人
+
+
+
+
+
+ 缺勤
+ {{ props.todayAttendData.absent.count }}人
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/components/totalView.vue b/src/views/integratedManage/attendManage/components/totalView.vue
new file mode 100644
index 0000000..e280b30
--- /dev/null
+++ b/src/views/integratedManage/attendManage/components/totalView.vue
@@ -0,0 +1,290 @@
+
+
+
+
+
+
+
+
{{ item.data.value }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/attendManage/index.vue b/src/views/integratedManage/attendManage/index.vue
new file mode 100644
index 0000000..5c67d86
--- /dev/null
+++ b/src/views/integratedManage/attendManage/index.vue
@@ -0,0 +1,666 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 导出数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 管理考勤
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/paibanTimeType.vue b/src/views/integratedManage/paibanTimeType.vue
new file mode 100644
index 0000000..af17d9e
--- /dev/null
+++ b/src/views/integratedManage/paibanTimeType.vue
@@ -0,0 +1,274 @@
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+ 新增
+
+
+ 修改
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+ {{scope.row.startTime}}
+
+
+
+
+ {{ scope.row.endTime}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/stateManage/components/manageForm.vue b/src/views/integratedManage/stateManage/components/manageForm.vue
new file mode 100644
index 0000000..5d6d9ae
--- /dev/null
+++ b/src/views/integratedManage/stateManage/components/manageForm.vue
@@ -0,0 +1,349 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/stateManage/components/stateTrend.vue b/src/views/integratedManage/stateManage/components/stateTrend.vue
new file mode 100644
index 0000000..1864eee
--- /dev/null
+++ b/src/views/integratedManage/stateManage/components/stateTrend.vue
@@ -0,0 +1,195 @@
+
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/stateManage/components/statusPie.vue b/src/views/integratedManage/stateManage/components/statusPie.vue
new file mode 100644
index 0000000..ae67595
--- /dev/null
+++ b/src/views/integratedManage/stateManage/components/statusPie.vue
@@ -0,0 +1,229 @@
+
+
+
+
+
+
+
diff --git a/src/views/integratedManage/stateManage/components/totalView.vue b/src/views/integratedManage/stateManage/components/totalView.vue
new file mode 100644
index 0000000..beda48a
--- /dev/null
+++ b/src/views/integratedManage/stateManage/components/totalView.vue
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
+
设备总数
+
{{ totalData.deviceCount }}
+
台
+
+
+
+{{ totalData.increase || 8 }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
正常设备
+
{{ totalData.normalCount }}
+
台
+
+
+
+{{ totalData.normalIncrease || 5 }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
异常设备
+
{{ totalData.abnormalCount }}
+
台
+
+
+
-{{ totalData.abnormalDecrease || 3 }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
中断设备
+
{{ totalData.interruptCount }}
+
台
+
+
+
-{{ totalData.interruptDecrease || 2 }}台
+
较上月同期
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/integratedManage/stateManage/index.vue b/src/views/integratedManage/stateManage/index.vue
new file mode 100644
index 0000000..d07ca4b
--- /dev/null
+++ b/src/views/integratedManage/stateManage/index.vue
@@ -0,0 +1,296 @@
+
+
+
+
+
+
+
+
+
+
+
+ 导出数据
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/largeScreen/components/centerPage.vue b/src/views/largeScreen/components/centerPage.vue
new file mode 100644
index 0000000..28a97c5
--- /dev/null
+++ b/src/views/largeScreen/components/centerPage.vue
@@ -0,0 +1,318 @@
+
+
+
+
+
今日总发电量
+
+
{{ data?.dayEnergy ?? '0' }}
+
kMh
+
+
+
+
+
+
+
+ {{ Number(data?.dayEnergy) - Number(data?.dayEnergyOld) > 0 ? '新增' : '减少' }}
+ {{ (Math.abs(Number(data?.dayEnergy) - Number(data?.dayEnergyOld)) / Number(data?.dayEnergy)) * 100 }} %
+
+
无
+
目标: 14,200 kWh
+
+
+
发电效率
+
+
{{ data?.generateElectricity ?? '0' }}
+
%
+
+
+
+
+
+
+
+ {{ Number(data?.generateElectricity) - Number(data?.generateElectricityOld) > 0 ? '新增' : '减少' }}
+ {{
+ (Math.abs(Number(data?.generateElectricity) - Number(data?.generateElectricityOld)) / Number(data?.generateElectricity)) * 100
+ }}
+ %
+
+
无
+
+
基准: 90.0%
+
+
+
设备健康度
+
+
{{ data?.health ?? '0' }}
+
%
+
+
+
+
+
+
+
+ {{ Number(data?.health) - Number(data?.healthOld) > 0 ? '新增' : '减少' }}
+ {{ (Math.abs(Number(data?.health) - Number(data?.healthOld)) / Number(data?.health)) * 100 }} %
+
+
无
+
检测: 24分钟前
+
+
+
CO2减排量
+
+
{{ data?.powerStationAvoidedCo2 ?? '0' }}
+
+
吨
+
+
+
+
+
+
+
+ {{ Number(data?.powerStationAvoidedCo2) - Number(data?.powerStationAvoidedCo2Old) > 0 ? '新增' : '减少' }}
+ {{
+ (Math.abs(Number(data?.powerStationAvoidedCo2) - Number(data?.powerStationAvoidedCo2Old)) / Number(data?.powerStationAvoidedCo2)) * 100
+ }}
+ %
+
+
无
+
+
目标: 12560吨
+
+
+
+
+
+
+
+
+
diff --git a/src/views/largeScreen/components/header.vue b/src/views/largeScreen/components/header.vue
new file mode 100644
index 0000000..34c4b16
--- /dev/null
+++ b/src/views/largeScreen/components/header.vue
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
diff --git a/src/views/largeScreen/components/leftPage.vue b/src/views/largeScreen/components/leftPage.vue
new file mode 100644
index 0000000..820a00e
--- /dev/null
+++ b/src/views/largeScreen/components/leftPage.vue
@@ -0,0 +1,616 @@
+
+
+
+
+
+
+
+
+
电站总览
+
+
+
+
+
总装机容量
+
+ {{ data?.capacity ?? '0' }}
+ MW
+
+
+
+
+ {{ (Math.abs(Number(data?.capacity) - Number(data.capacityOld)) / Number(data?.capacity)) * 100 }}%较上月
+
+
无
+
+
+
光伏板数量
+
+ {{ data?.module ?? '0' }}
+ 块
+
+
+
+ - -
+
+
+
+
电站数量
+
+ {{ data?.operatingRate ?? '0' }}
+ 座
+
+
+
+
+
+ {{ Math.abs(Number(data?.operatingRate) - Number(data?.operatingRateOld)) }}座{{
+ Number(data?.operatingRate) - Number(data?.operatingRateOld) > 0 ? '新增' : '减少'
+ }}
+
+
无
+
+
+
+
+
+
+
+
+
+
+
逆变器监控
+
+
+
+
运行状态
+
+
+
+
+
+
+
逆变器运行曲线
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
能源收益分析
+
+
+
+
+
+
+
+
+
累计收益
+
¥{{ Number(data2.allInCome).toFixed(2) }}
+
+
+
本月收益
+
+
¥{{ Number(data2.monthInCome).toFixed(2) }}
+
+
+
度电成本
+
+
¥{{ Number(data2.price).toFixed(2) }}
+
+
+
预计年收入
+
¥{{ Number(data2.yearInCome).toFixed(2) }}
+
+
+
+
+
+
+
+
+
diff --git a/src/views/largeScreen/components/optionList.ts b/src/views/largeScreen/components/optionList.ts
new file mode 100644
index 0000000..5836b87
--- /dev/null
+++ b/src/views/largeScreen/components/optionList.ts
@@ -0,0 +1,735 @@
+import * as echarts from 'echarts/core';
+// import { PictorialBarChart } from 'echarts/charts'
+// 客流量图
+export const getOption = (xData: any, yData: any) => {
+ const data = {
+ xData,
+ yData
+ };
+ const maxData = Math.ceil(Math.max(...data.yData));
+ const barData = data.yData.map((item) => {
+ return maxData;
+ });
+ const option = {
+ grid: {
+ top: '10%',
+ left: '8%',
+ right: '5%',
+ bottom: '20%'
+ // containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ data: data.xData,
+ axisLine: {
+ show: false
+ },
+ axisTick: {
+ show: true
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#fff'
+ }
+ }
+ },
+ yAxis: {
+ show: true,
+ type: 'value',
+ max: maxData,
+ splitLine: {
+ show: true,
+ lineStyle: {
+ type: 'solid',
+ color: 'rgba(73, 169, 191, 0.2)'
+ }
+ }
+ },
+ tooltip: {
+ trigger: 'axis',
+ backgroundColor: '',
+ textStyle: {
+ color: '#fff'
+ }
+ },
+ dataZoom: [
+ {
+ // show: true,
+ start: 0,
+ end: 30,
+ bottom: 2, // 下滑块距离x轴底部的距离
+ height: 23
+ },
+ {
+ type: 'inside'
+ }
+ ],
+ series: [
+ {
+ name: '柱图',
+ type: 'bar',
+ // barWidth: '10%',
+ data: barData,
+ tooltip: {
+ show: false
+ },
+ barGap: '-50%',
+ itemStyle: {
+ normal: {
+ color: 'rgba(73, 169, 191, 0.2)'
+ }
+ }
+ },
+ {
+ name: '客单价',
+ type: 'line',
+ showAllSymbol: true,
+ symbol: 'circle',
+ symbolSize: 8,
+ lineStyle: {
+ normal: {
+ color: 'rgba(217, 231, 255, 0.3)',
+ shadowColor: 'rgba(0, 0, 0, .3)',
+ shadowBlur: 0
+ // shadowOffsetY: 5,
+ // shadowOffsetX: 5,
+ }
+ },
+ itemStyle: {
+ color: 'rgba(224, 194, 22, 1)',
+ borderWidth: 0,
+ shadowBlur: 0
+ },
+ label: {
+ show: false, // 显示数据标签
+ color: 'rgba(255, 208, 59, 1)'
+ },
+ data: data.yData
+ }
+ ]
+ };
+ return option;
+};
+
+// 上菜分析图
+export const getOption2 = (data: any) => {
+ const maxData = Math.max(...data.yData);
+ const option = {
+ // backgroundColor: "#38445E",
+ grid: {
+ left: '10%',
+ top: '13%',
+ bottom: '16%',
+ right: '10%'
+ },
+ xAxis: {
+ data: data.xData,
+ axisTick: {
+ show: false
+ },
+ axisLine: {
+ lineStyle: {
+ color: 'rgba(255, 129, 109, 0.1)',
+ width: 1 //这里是为了突出显示加上的
+ }
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#999',
+ fontSize: 12
+ }
+ }
+ },
+ yAxis: [
+ {
+ splitNumber: 2,
+ axisTick: {
+ show: false
+ },
+ axisLine: {
+ lineStyle: {
+ color: 'rgba(255, 129, 109, 0.1)',
+ width: 1 //这里是为了突出显示加上的
+ }
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#999'
+ }
+ },
+ splitArea: {
+ areaStyle: {
+ color: 'rgba(255,255,255,.5)'
+ }
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: 'rgba(255,255,255,.5)',
+ width: 0.5,
+ type: 'dashed'
+ }
+ }
+ }
+ ],
+ dataZoom: [
+ {
+ // show: true,
+
+ start: 0,
+ end: 30,
+ bottom: 2, // 下滑块距离x轴底部的距离
+ height: 23
+ },
+ {
+ type: 'inside'
+ }
+ ],
+ tooltip: {
+ trigger: 'axis', // 设置为 'item',表示鼠标悬浮在图形上时显示 tooltip
+ // formatter: function (params) {
+ // return `订单数: ${params.data}` // 显示鼠标悬浮项的数量
+ // },
+ backgroundColor: '', // 设置提示框的背景颜色
+ textStyle: {
+ color: '#fff' // 设置文字颜色
+ // fontSize: 14 // 设置文字大小
+ }
+ },
+ series: [
+ {
+ name: '订单数',
+ type: 'pictorialBar',
+ barCategoryGap: '0%',
+ symbol: 'path://M0,10 L10,10 C5.5,10 5.5,5 5,0 C4.5,5 4.5,10 0,10 z',
+ label: {
+ show: false,
+ position: 'top',
+ distance: 15,
+ color: 'rgba(255, 235, 59, 1)',
+ // fontWeight: "bolder",
+ fontSize: 16
+ },
+ itemStyle: {
+ normal: {
+ // color: {
+ // type: "linear",
+ // x: 0,
+ // y: 0,
+ // x2: 0,
+ // y2: 1,
+ // colorStops: [
+ // {
+ // offset: 0,
+ // color: "rgba(232, 94, 106, .8)", // 0% 处的颜色
+ // },
+ // {
+ // offset: 1,
+ // color: "rgba(232, 94, 106, .1)", // 100% 处的颜色
+ // },
+ // ],
+ // global: false, // 缺省为 false
+ // },
+ color: function (params: any) {
+ if (params.data === maxData) {
+ return 'rgba(255, 219, 103, 0.6)';
+ } else {
+ return 'rgba(239, 244, 255, 0.45)';
+ }
+ }
+ },
+ emphasis: {
+ opacity: 1
+ }
+ },
+ data: data.yData,
+ z: 10
+ }
+ ]
+ };
+ return option;
+};
+//食堂周报图
+export const getLineOption = (lineData: any) => {
+ const maxData = Math.ceil(Math.max(...lineData.line1));
+ const option = {
+ backgroundColor: '',
+ tooltip: {
+ trigger: 'axis',
+ backgroundColor: 'transparent',
+ color: '#7ec7ff',
+ textStyle: {
+ color: '#fff'
+ },
+ borderColor: '#7ec7ff'
+ },
+ // legend: {
+ // align: 'left',
+ // right: '5%',
+ // top: '1%',
+ // type: 'plain',
+ // textStyle: {
+ // color: '#fff',
+ // fontSize: 12
+ // },
+ // // icon:'rect',
+ // itemGap: 15,
+ // itemWidth: 18,
+ // data: [
+ // {
+ // name: '上周销售量'
+ // },
+ // {
+ // name: '本周销售量'
+ // }
+ // ]
+ // },
+ grid: {
+ top: '12%',
+ left: '1%',
+ right: '3%',
+ bottom: '12%',
+ containLabel: true
+ },
+ xAxis: {
+ type: 'category',
+ data: lineData.xLabel,
+ axisLine: {
+ show: false
+ },
+ axisTick: {
+ show: true
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#fff'
+ }
+ }
+ },
+ yAxis: {
+ show: true,
+ type: 'value',
+ max: maxData,
+ splitLine: {
+ show: true,
+ lineStyle: {
+ type: 'solid',
+ color: 'rgba(73, 169, 191, 0.2)'
+ }
+ }
+ },
+ dataZoom: [
+ {
+ // show: true,
+ start: 0,
+ end: 30,
+ bottom: 2, // 下滑块距离x轴底部的距离
+ height: 23
+ },
+ {
+ type: 'inside'
+ }
+ ],
+ series: [
+ {
+ name: '逆变器功率',
+ type: 'line',
+ symbol: 'circle', // 默认是空心圆(中间是白色的),改成实心圆
+ showAllSymbol: false,
+ symbolSize: 0,
+ smooth: true,
+ lineStyle: {
+ width: 1,
+ color: 'rgba(80, 164, 225, 1)', // 线条颜色
+ borderColor: 'rgba(0,0,0,.4)'
+ },
+ itemStyle: {
+ color: 'rgba(80, 164, 225, 1)',
+ borderWidth: 2,
+ show: false
+ },
+ tooltip: {
+ show: true
+ },
+ areaStyle: {
+ //线性渐变,前4个参数分别是x0,y0,x2,y2(范围0~1);相当于图形包围盒中的百分比。如果最后一个参数是‘true’,则该四个值是绝对像素位置。
+ color: new echarts.graphic.LinearGradient(
+ 0,
+ 0,
+ 0,
+ 1,
+ [
+ {
+ offset: 0,
+ color: 'rgba(80, 164, 225, 0.4)'
+ },
+ {
+ offset: 1,
+ color: 'rgba(80, 164, 225, 0)'
+ }
+ ],
+ false
+ ),
+ shadowColor: 'rgba(25,163,223, 0.5)', //阴影颜色
+ shadowBlur: 20 //shadowBlur设图形阴影的模糊大小。配合shadowColor,shadowOffsetX/Y, 设置图形的阴影效果。
+ },
+ data: lineData.line1
+ }
+ ]
+ };
+ return option;
+};
+//#endregion
+
+// 菜品销售图
+export const getDishesOption = (data?: any) => {
+ const res = data;
+ const dataIndex = 1;
+ const option = {
+ xAxis: {
+ type: 'value',
+ axisTick: {
+ show: false
+ },
+ splitLine: {
+ show: false
+ },
+ axisLabel: {
+ show: false
+ }
+ },
+ yAxis: {
+ type: 'category',
+ axisTick: {
+ show: false
+ },
+ axisLabel: {
+ margin: 10 // 增大标签与轴线间距
+ },
+ width: 60, // 增大Y轴宽度
+ data: res.name,
+ axisLine: {
+ lineStyle: {
+ color: '#93C9C3'
+ }
+ }
+ },
+ grid: {
+ top: '5%', // 设置网格区域与容器之间的边距
+ bottom: '5%', // 同理
+ left: '5%',
+ containLabel: true
+ },
+ series: [
+ {
+ type: 'bar',
+ data: res.ratio,
+ barMaxWidth: 25,
+ itemStyle: {
+ barBorderRadius: 3,
+ color: 'rgba(12, 242, 216, 0.2)'
+ },
+ label: {
+ show: false
+ }
+ },
+ {
+ type: 'bar',
+ data: res.data,
+ barGap: '-100%',
+ barMaxWidth: 25,
+ itemStyle: {
+ barBorderRadius: 3,
+ color: function (params: any) {
+ if (params.data <= 300) {
+ return new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+ { color: 'rgba(252, 105, 0, 1)', offset: 0 },
+ { color: 'rgba(250, 42, 42, 1)', offset: 1 }
+ ]);
+ } else {
+ return new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+ { color: 'rgba(73, 169, 191, 1)', offset: 0 },
+ { color: 'rgba(108, 248, 236, 1)', offset: 1 }
+ ]);
+ }
+ }
+ },
+ label: {
+ show: true,
+ position: [200, -15],
+ formatter: function (params: any) {
+ if (params.data <= 300) {
+ return `{a| ${params.value}g/${res.ratio[params.dataIndex]}g}`;
+ } else {
+ return `{b| ${params.value}g/${res.ratio[params.dataIndex]}g}`;
+ }
+ },
+ rich: {
+ a: {
+ color: 'rgba(255, 78, 51, 1)'
+ },
+ b: {
+ color: 'rgba(255, 235, 59, 1)'
+ }
+ }
+ }
+ }
+ ]
+ };
+ return option;
+};
+// 菜品库存图
+export const getInventoryOption = () => {
+ const res = {
+ data: [2800, 300, 3900, 3000, 2450, 2670, 3320],
+ name: ['麻辣牛肉', '水煮肉片', '酸菜鱼', '辣子鸡丁', '烧白', '冬瓜排骨汤', '清炒油麦菜'],
+ ratio: [4000, 4000, 4000, 4000, 4000, 4000, 4000]
+ },
+ dataIndex = 1;
+ const option = {
+ xAxis: {
+ type: 'value',
+ axisTick: {
+ show: false
+ },
+ splitLine: {
+ show: false
+ },
+ axisLabel: {
+ show: false
+ }
+ },
+ yAxis: {
+ type: 'category',
+ show: false,
+ axisTick: {
+ show: false
+ },
+ axisLabel: {
+ margin: 10 // 增大标签与轴线间距
+ },
+ width: 20, // 增大Y轴宽度
+ data: res.name,
+ axisLine: {
+ show: false,
+ lineStyle: {
+ color: '#93C9C3'
+ }
+ }
+ },
+ grid: {
+ top: '5%', // 设置网格区域与容器之间的边距
+ bottom: '5%', // 同理
+ left: '5%',
+ containLabel: true
+ },
+ series: [
+ {
+ type: 'bar',
+ data: res.ratio,
+ barMaxWidth: 6,
+ itemStyle: {
+ barBorderRadius: 3,
+ color: 'rgba(12, 242, 216, 0.2)'
+ },
+ label: {
+ show: true,
+ position: [0, -15],
+ fontSize: 14,
+ color: '#fff',
+ formatter: function (params: any) {
+ return params.name;
+ }
+ // rich: {
+ // a: {
+ // color: "rgba(255, 78, 51, 1)",
+ // },
+ // b: {
+ // color: "rgba(255, 235, 59, 1)",
+ // },
+ // },
+ }
+ },
+ {
+ type: 'bar',
+ data: res.data,
+ barGap: '-100%',
+ barMaxWidth: 6,
+ itemStyle: {
+ barBorderRadius: 0,
+ color: function (params: any) {
+ if (params.dataIndex === dataIndex) {
+ return new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+ { color: 'rgba(255, 78, 51, 1)', offset: 0 },
+ { color: 'rgba(252, 105, 0, 0)', offset: 1 }
+ ]);
+ } else {
+ return new echarts.graphic.LinearGradient(1, 0, 0, 0, [
+ { color: 'rgba(242, 224, 27, 1)', offset: 0 },
+ { color: 'rgba(236, 227, 127, 0.55)', offset: 0.5 },
+ { color: 'rgba(230, 229, 227, 0.1)', offset: 1 }
+ ]);
+ }
+ }
+ },
+ label: {
+ show: true,
+ position: [200, -15],
+ formatter: function (params: any) {
+ if (params.dataIndex === dataIndex) {
+ return `{a| ${params.value}g}`;
+ } else {
+ return `{b| ${params.value}g}`;
+ }
+ },
+ rich: {
+ a: {
+ color: 'rgba(255, 78, 51, 1)'
+ },
+ b: {
+ color: 'rgba(255, 235, 59, 1)'
+ }
+ }
+ }
+ }
+ ]
+ };
+ return option;
+};
+export const getBarOptions = (data: any) => {
+ const option = {
+ backgroundColor: '',
+ grid: {
+ left: '7%',
+ top: '10%',
+ bottom: '23%',
+ right: '2%'
+ },
+ tooltip: {
+ show: true,
+ backgroundColor: '',
+ trigger: 'axis',
+ formatter: '{b0}:{c0}万元',
+ textStyle: {
+ color: '#fff'
+ }
+ // borderColor: 'rgba(252, 217, 18, 1)'
+ },
+ xAxis: [
+ {
+ type: 'category',
+ data: data.name,
+ axisLine: {
+ lineStyle: {
+ color: 'rgba(108, 128, 151, 0.3)'
+ }
+ },
+ axisLabel: {
+ textStyle: {
+ color: '#999',
+ fontSize: 12
+ }
+ },
+ axisTick: {
+ // show: true,
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: 'rgba(108, 128, 151, 0.3)',
+ type: 'dashed'
+ }
+ }
+ }
+ ],
+ yAxis: [
+ {
+ axisLabel: {
+ formatter: function (value) {
+ if (value >= 1000) {
+ value = (value / 1000).toFixed(1) + 'k'; // 大于等于1000的数字显示为1k、2.5k等
+ }
+ return value;
+ },
+ color: 'rgba(255, 255, 255, 0.8)'
+ },
+ axisTick: {
+ show: false
+ },
+ axisLine: {
+ lineStyle: {
+ color: 'rgba(108, 128, 151, 0.3)'
+ }
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ color: 'rgba(108, 128, 151, 0.3)',
+ type: 'dashed'
+ }
+ }
+ }
+ ],
+ dataZoom: [
+ {
+ // show: true,
+ start: 0,
+ end: 30,
+ bottom: 2, // 下滑块距离x轴底部的距离
+ height: 23
+ },
+ {
+ type: 'inside'
+ }
+ ],
+ series: [
+ {
+ type: 'bar',
+ data: data.value,
+ stack: '合并',
+ barWidth: '15',
+ itemStyle: {
+ color: new echarts.graphic.LinearGradient(
+ 0,
+ 0,
+ 0,
+ 1,
+ [
+ {
+ offset: 0,
+ color: 'rgba(0, 111, 255, 0)' // 0% 处的颜色
+ },
+ {
+ offset: 0.7,
+ color: 'rgba(0, 111, 255, 0.5)' // 0% 处的颜色
+ },
+ {
+ offset: 1,
+ color: 'rgba(0, 111, 255, 1)' // 100% 处的颜色
+ }
+ ],
+ false
+ )
+ },
+ label: {
+ show: true,
+ formatter: '{c}',
+ position: 'top',
+ color: '#fff',
+ fontSize: 10
+ // padding: 5
+ }
+ }
+ // {
+ // type: 'bar',
+ // stack: '合并',
+ // data: topData,
+ // barWidth: '15',
+ // itemStyle: {
+ // color: 'rgba(252, 217, 18, 1)'
+ // }
+ // }
+ ]
+ };
+ return option;
+};
diff --git a/src/views/largeScreen/components/rightPage.vue b/src/views/largeScreen/components/rightPage.vue
new file mode 100644
index 0000000..93b0ad5
--- /dev/null
+++ b/src/views/largeScreen/components/rightPage.vue
@@ -0,0 +1,442 @@
+
+
+
+
+
+
+
+
+
+
+ {{ item.advice }}
+
+
+
+
+
+
+
+
+
+
+
+
+
项目概述
+
+
+
+
项目名称:田东光伏智慧生态工地开发项目
+
项目位置:广西壮族自治区百色市田东县平马镇东宁东路97号百通
+
项目位置:广西壮族自治区百色市田东县平马镇东宁东路97号百通
+
占地面积:约10000亩
+
土地性质:城镇住宅用地(兼容商业用地,容积率≤2.5)
+
建设单位:这里是建设单位的名称
+
项目类型:集中式光伏电站
+
总装机容量:200MW
+
+
+
+
+
+
+
+
+
设备状态监控
+
+
+
+
+
+
+
+
+
+
+
{{ item.name }}
+
{{ item.total }}块
+
+
+
+
+ {{ item.rate }}%
+
+
+
+
+
+
正常{{ item.normal }}台
+
+
异常{{ item.abnormal }}台
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/largeScreen/index.vue b/src/views/largeScreen/index.vue
new file mode 100644
index 0000000..5b62327
--- /dev/null
+++ b/src/views/largeScreen/index.vue
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
diff --git a/src/views/materialManagement/components/DataAnalysis.vue b/src/views/materialManagement/components/DataAnalysis.vue
new file mode 100644
index 0000000..2181888
--- /dev/null
+++ b/src/views/materialManagement/components/DataAnalysis.vue
@@ -0,0 +1,234 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/components/DetailsProcess.vue b/src/views/materialManagement/components/DetailsProcess.vue
new file mode 100644
index 0000000..e16a931
--- /dev/null
+++ b/src/views/materialManagement/components/DetailsProcess.vue
@@ -0,0 +1,146 @@
+
+
+
+
审批流程
+
+
+
+
+ 创建采购单
+ 申请人张三:提交采购单
+ 计划:Q2风电轴承采购计划
+ 附件:一个图片.jpg
+
+
+
+
+ 审批未通过
+ 部门经理李四:审批不通过
+ 计划:Q2风电轴承采购计划
+ 不通过原因:
+
+ 1. 出货时间过长
+ 2. 单价高于市场价
+ 3. 损耗重新评估
+ 4. 付款方式更改
+ 5. 发票开具方式更改
+
+
+
+
+
+ 未进行
+ 财务主管王五:
+ 计划:Q2风电轴承采购计划
+ 备注:——
+
+
+
+
+ 未进行
+ 总经理赵六:
+ 计划:Q2风电轴承采购计划
+ 备注:——
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/components/SystemInfo.vue b/src/views/materialManagement/components/SystemInfo.vue
new file mode 100644
index 0000000..8a2fcd9
--- /dev/null
+++ b/src/views/materialManagement/components/SystemInfo.vue
@@ -0,0 +1,142 @@
+
+
+
+
+
+
+
+
+
{{ bill.type }}
+
{{ bill.number }}
+
+
+
+
+
{{ bill.time }}
+
+ {{ bill.status }}
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/components/detailInfo.vue b/src/views/materialManagement/components/detailInfo.vue
new file mode 100644
index 0000000..9b807ab
--- /dev/null
+++ b/src/views/materialManagement/components/detailInfo.vue
@@ -0,0 +1,264 @@
+
+
+
+
+
+ 基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 供应商信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 产品信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 合同条款
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 附件
+
+
+
+
+
+
+
+
+
+ 预览
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/components/dropUpload.vue b/src/views/materialManagement/components/dropUpload.vue
new file mode 100644
index 0000000..e69de29
diff --git a/src/views/materialManagement/components/updateInfo.vue b/src/views/materialManagement/components/updateInfo.vue
new file mode 100644
index 0000000..7a4b752
--- /dev/null
+++ b/src/views/materialManagement/components/updateInfo.vue
@@ -0,0 +1,261 @@
+
+
+
+
+
+ 基础信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 供应商信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 产品信息
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 合同条款
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 附件
+
+
+
+
+
+
+
+
+
+ 预览
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/inventoryManagement.vue b/src/views/materialManagement/inventoryManagement.vue
new file mode 100644
index 0000000..e291202
--- /dev/null
+++ b/src/views/materialManagement/inventoryManagement.vue
@@ -0,0 +1,654 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+ +{{ type === 'chuku' ? '添加出库单'
+ : '添加入库单' }}
+
+
+
+
+
+ {{ getTagLabel(wz_device_type, scope.row.shebeiType) }}
+
+
+
+
+
+
+
+
+ {{ getTagLabel(shenheStatus, scope.row.shenheStatus) }}
+
+
+
+
+
+
+ {{ getTagLabel(danjvType, scope.row.danjvType) }}
+
+
+
+
+
+ 修改
+ 详情
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getTagLabel(danjvType, detailData.danjvType)
+ }}
+ {{ detailData.danjvNumber }}
+ {{ getTagLabel(wz_device_type, detailData.shebeiType)
+ }}
+ {{ detailData.jingshourenName }}
+ {{ detailData.contactNumber }}
+ {{ detailData.zonNumber }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/planDetails.vue b/src/views/materialManagement/planDetails.vue
new file mode 100644
index 0000000..48c5b6a
--- /dev/null
+++ b/src/views/materialManagement/planDetails.vue
@@ -0,0 +1,57 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/procurementPlan.vue b/src/views/materialManagement/procurementPlan.vue
new file mode 100644
index 0000000..74d8d6d
--- /dev/null
+++ b/src/views/materialManagement/procurementPlan.vue
@@ -0,0 +1,818 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 本年度已采购金额
+
+
+ 520,000.00
+
+
+
+
+ 本年度采购预算金额
+
+
+ 3,000,000.00
+
+
+
+
+
+
+
+
+
+
+
+ 导出
+ 新建采购申请单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 查看
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/materialManagement/spareParts.vue b/src/views/materialManagement/spareParts.vue
new file mode 100644
index 0000000..9f2aad0
--- /dev/null
+++ b/src/views/materialManagement/spareParts.vue
@@ -0,0 +1,654 @@
+
+
+
+
+
+ 数据总览
+
+
+
+
+
总备件数量
+
+ 2,548
+ 个
+
+
+
+
+
+
+
+ 8.2%
+ 较昨日同期
+
+
+
+
+
+
+
+
+
+
总备件数量
+
+ 2,548
+ 个
+
+
+
+
+
+
+
+ 8.2%
+ 较昨日同期
+
+
+
+
+
+
+
+
+
+
总备件数量
+
+ 2,548
+ 个
+
+
+
+
+
+
+
+ 8.2%
+ 较昨日同期
+
+
+
+
+
+
+
+
+
+
总备件数量
+
+ 2,548
+ 个
+
+
+
+
+
+
+
+ 8.2%
+ 较昨日同期
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 搜索
+ 重置
+
+
+
+
+
+
+
+
+
+
+
+ {{ getDictLabel(wz_device_type, scope.row.shebeiType) }}
+
+
+
+
+
+
+
+
+
+
+
+ 编辑
+ 详情
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ detailData.beijianNumber }}
+ {{ detailData.beijianName }}
+ {{ detailData.guigexinghao }}
+ {{ getDictLabel(wz_device_type, detailData.shebeiType)
+ }}
+ {{ detailData.kucunCount }}
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/pvSystem/alarmAnalysis/components/data.vue b/src/views/pvSystem/alarmAnalysis/components/data.vue
index 744772b..0c51e85 100644
--- a/src/views/pvSystem/alarmAnalysis/components/data.vue
+++ b/src/views/pvSystem/alarmAnalysis/components/data.vue
@@ -9,50 +9,19 @@
截止至2025/06/30 12:00
-
-
-
+
-
{{ props.dashboardData.todayAlarmTotal }}
-
今日报警总数
-
较上周
- {{ props.dashboardData.updates.todayAlarmTotal.type === 'up' ? '↑' : '↓' }}{{ props.dashboardData.updates.todayAlarmTotal.value }}
-
-
-
-
-
-
-
-
{{ props.dashboardData.unhandledAlarms }}
-
未处理报警
-
较上周
- {{ props.dashboardData.updates.unhandledAlarms.type === 'up' ? '↑' : '↓' }}{{ props.dashboardData.updates.unhandledAlarms.value }}
-
-
-
-
-
-
-
-
{{ props.dashboardData.handledAlarms }}
-
已处理报警
-
较上周
- {{ props.dashboardData.updates.handledAlarms.type === 'up' ? '↑' : '↓' }}{{ props.dashboardData.updates.handledAlarms.value }}
-
-
-
-
-
-
-
-
{{ props.dashboardData.avgProcessTime }}
-
平均处理时长
-
较上周
- {{ props.dashboardData.updates.avgProcessTime.type === 'up' ? '↑' : '↓' }}{{ props.dashboardData.updates.avgProcessTime.value }}
-
+
{{ props.dashboardData[card.key] }}
+
{{ card.label }}
+
较上周
+
+ {{
+ props.dashboardData.updates[card.updateKey].value }}
+
+
@@ -67,7 +36,7 @@
-
+