Ver Fonte

fix(ledgerAssets): 物联数据修复日期选择器未来日期可选问题并优化日期处理

liujt há 3 meses atrás
pai
commit
612dad1600

+ 26 - 23
src/views/ledgerAssets/components/details/components/internetDetail.vue

@@ -67,6 +67,7 @@
                         v-model="item.chartTime"
                         :type="item.timeType"
                         placeholder="选择日期"
+                        :picker-options="pickerOptions"
                     >
                     </el-date-picker>
                     </div>
@@ -151,6 +152,11 @@ export default {
       },
       gaugeData: [],
       historyData: [], // 存储历史数据数组
+      pickerOptions: {
+        disabledDate(time) {
+          return time.getTime() > Date.now();
+        },
+      }
     };
   },
   computed: {
@@ -187,6 +193,7 @@ export default {
     async refreshSingleChart(item) {
       try {
         const updatedData = await this.getHistoryDatas(item);
+        console.log('updatedData~~~', updatedData);
         // 找到对应的图表数据并更新
         const index = this.historyData.findIndex(d => d.identifier === item.identifier);
         if (index !== -1) {
@@ -272,7 +279,8 @@ export default {
     async getDefaultHistoryData(item) {
         try {
             // 确保chartTime和timeType属性存在,提供默认值
-            const chartTime = item.chartTime || new Date().toISOString().split('T')[0];
+            // chartTime 可能是 Date 对象或字符串,统一转换为 Date 对象
+            const chartTime = item.chartTime ? new Date(item.chartTime) : new Date();
             const timeType = item.timeType || 'month';
             
             // 第一步:先获取时间范围,确保时间参数有效
@@ -378,7 +386,7 @@ export default {
                 timeType: apiTimeType
             };
             // 第三步:发送API请求获取历史数据
-   
+            console.log(`开始发送API请求 - 属性: ${item.name || item.identifier}, 参数:`, requestParams);
             const res = await getHistoryData(requestParams);
             console.log(`API请求完成 - 属性: ${item.name || item.identifier}, 结果:`, res);
             // 处理API返回结果,确保res是对象
@@ -420,31 +428,26 @@ export default {
             return response;
         } catch (error) {
             console.error(`获取属性 ${item.name || item.identifier} 的历史数据失败:`, error);
+            // 返回一个默认的响应对象,避免 undefined
+            return {
+                identifier: item.identifier || '',
+                name: item.name || '',
+                unit: item.unit || '',
+                unitName: item.unitName || '',
+                chartTime: item.chartTime || new Date(),
+                timeType: item.timeType || 'month',
+                trendData: {
+                    xAxis: [],
+                    series: [{ name: item.name || '', data: [], color: '#5470C6' }]
+                },
+                timeHistoryList: []
+            };
         }
     },
     dateClick(item, dateType) {
-        // 根据时间类型设置默认日期
+      console.log(item, dateType)
         const now = new Date();
-        let defaultDate = '';
-        
-        switch (dateType) {
-            case 'year':
-                // 当年格式:YYYY
-                defaultDate = now.getFullYear().toString();
-                break;
-            case 'month':
-                // 当月格式:YYYY-MM
-                defaultDate = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}`;
-                break;
-            case 'date':
-                // 当日格式:YYYY-MM-DD
-                defaultDate = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
-                break;
-            default:
-                defaultDate = '';
-        }
-        
-        item.chartTime = defaultDate;
+        item.chartTime = now;
         item.timeType = dateType;
     },
     // 日期数据格式化