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}` - }, - }, }