From 63bf3719c7e4b03dcee77b1e9d75a9261d7c1a1c Mon Sep 17 00:00:00 2001
From: cwchen <1048842385@qq.com>
Date: Tue, 23 Dec 2025 16:06:33 +0800
Subject: [PATCH] =?UTF-8?q?=E5=91=8A=E8=AD=A6=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/alarm/alarm.js | 2 +-
src/components/TableModel2/index.vue | 16 +++--
src/views/alarm/alarm/index.vue | 99 ++--------------------------
3 files changed, 16 insertions(+), 101 deletions(-)
diff --git a/src/api/alarm/alarm.js b/src/api/alarm/alarm.js
index 72fbb60..4d67309 100644
--- a/src/api/alarm/alarm.js
+++ b/src/api/alarm/alarm.js
@@ -3,7 +3,7 @@ import request from '@/utils/request'
// 告警管理->告警列表->查询告警列表
export function alarmListAPI(params) {
return request({
- url: '/smartCar/alarm/getAlarmList',
+ url: '/smartCar/data/alarm/getAlarmList',
method: 'GET',
params
})
diff --git a/src/components/TableModel2/index.vue b/src/components/TableModel2/index.vue
index c97e0f8..7e2ce28 100644
--- a/src/components/TableModel2/index.vue
+++ b/src/components/TableModel2/index.vue
@@ -368,8 +368,11 @@ export default {
/* 生成查询参数 */
this.formLabel.map((e) => {
if (e.f_type === 'dateRange' || e.f_type === 'dateTimeRange') {
+ // 初始化日期范围的两个字段
this.$set(this.queryParams, e.dateType[0], '')
this.$set(this.queryParams, e.dateType[1], '')
+ // 初始化日期选择器绑定的字段(用于 v-model)
+ this.$set(this.queryParams, e.f_model, null)
this.typeList = e.dateType
if (this.isOneMonth) {
@@ -672,10 +675,10 @@ export default {
if (diffDays > 31) {
const newEndDate = new Date(startDate)
newEndDate.setDate(startDate.getDate() + 31)
- this.queryParams.time = [
+ this.$set(this.queryParams, 'time', [
start,
newEndDate.toISOString().split('T')[0],
- ]
+ ])
this.$message.warning(
'选择的时间范围超过31天,查询将会缓慢,已自动调整',
)
@@ -686,12 +689,13 @@ export default {
const [_1, _2] = type
if (e && e.length > 0) {
const [_time1, _time2] = e
- this.queryParams[_1] = _time1
- this.queryParams[_2] = _time2
+ // 使用 $set 确保响应式更新
+ this.$set(this.queryParams, _1, _time1)
+ this.$set(this.queryParams, _2, _time2)
} else {
// 清空日期范围时,同时清空两个字段
- this.queryParams[_1] = ''
- this.queryParams[_2] = ''
+ this.$set(this.queryParams, _1, '')
+ this.$set(this.queryParams, _2, '')
}
}
}
diff --git a/src/views/alarm/alarm/index.vue b/src/views/alarm/alarm/index.vue
index a26fac3..be2d13a 100644
--- a/src/views/alarm/alarm/index.vue
+++ b/src/views/alarm/alarm/index.vue
@@ -4,7 +4,7 @@
+ :columnsList="columnsList" :request-api="alarmListAPI" :handleColWidth="250" :showSearch="true">
数据列表
@@ -31,105 +31,16 @@ export default {
showSearch: true,
formLabel,
columnsList,
- wrappedAPI: null,
+ alarmListAPI
}
},
- created() {
- // 包装API函数以支持测试数据
- this.wrappedAPI = this.wrapAPIWithTestData(alarmListAPI)
- },
-
methods: {
- /** 包装API函数,支持测试数据 */
- wrapAPIWithTestData(apiFunc) {
- return async (params) => {
- try {
- // 尝试调用真实API
- const res = await apiFunc(params)
- if (res.code === 200) {
- return res
- }
- } catch (error) {
- console.log('API调用失败,使用测试数据:', error)
- }
- // 使用测试数据
- const allTestData = this.getTestData()
-
- // 应用过滤条件
- let filteredData = allTestData
- if (params.startTime) {
- filteredData = filteredData.filter(item => {
- const itemTime = new Date(item.alarmTime.replace(/\//g, '-'))
- const startTime = new Date(params.startTime.replace(' ', 'T'))
- return itemTime >= startTime
- })
- }
- if (params.endTime) {
- filteredData = filteredData.filter(item => {
- const itemTime = new Date(item.alarmTime.replace(/\//g, '-'))
- const endTime = new Date(params.endTime.replace(' ', 'T'))
- return itemTime <= endTime
- })
- }
-
- // 分页处理
- const pageNum = params.pageNum || 1
- const pageSize = params.pageSize || 10
- const start = (pageNum - 1) * pageSize
- const end = start + pageSize
-
- return {
- code: 200,
- rows: filteredData.slice(start, end),
- total: filteredData.length,
- msg: 'success'
- }
- }
+ /* 搜索操作 */
+ handleQuery() {
+ this.$refs.alarmTableRef.getTableList()
},
-
- /** 获取测试数据 */
- getTestData() {
- const alarmContents = [
- '设备位置发生变化,当前设备位置:×××××XXX',
- '设备连接异常,请检查网络连接状态',
- '设备电量不足,当前电量:15%,请及时充电',
- '设备温度过高,当前温度:85°C,请检查散热系统',
- '设备存储空间不足,当前使用率:95%,请清理数据',
- '设备传感器故障,传感器编号:S001,请联系维修',
- '数据传输异常,数据包丢失率:10%,请检查网络',
- '设备离线,最后在线时间:2025/06/02 08:30',
- ]
- const testData = []
-
- // 生成1000条测试数据
- for (let i = 0; i < 1000; i++) {
- const date = new Date()
- date.setDate(date.getDate() - Math.floor(i / 50))
- date.setHours(8 + (i % 12), (i % 60), 0, 0)
- const alarmTime = this.formatDateTime(date)
-
- testData.push({
- serialNo: i + 1,
- alarmContent: alarmContents[i % alarmContents.length],
- alarmTime: alarmTime,
- })
- }
-
- return testData
- },
-
- /** 格式化日期时间 */
- formatDateTime(date) {
- const year = date.getFullYear()
- const month = String(date.getMonth() + 1).padStart(2, '0')
- const day = String(date.getDate()).padStart(2, '0')
- const hours = String(date.getHours()).padStart(2, '0')
- const minutes = String(date.getMinutes()).padStart(2, '0')
- return `${year}/${month}/${day} ${hours}:${minutes}`
- },
-
},
}