|
@@ -151,36 +151,31 @@
|
|
|
<view class="title-text" style="color: #22dea7"
|
|
|
>今日进出频次</view
|
|
|
>
|
|
|
- <view class="title-btn" style="color: #22dea7"
|
|
|
- >{{
|
|
|
- freQuenceList.length == "" ? "0" : freQuenceList.length
|
|
|
- }}次</view
|
|
|
- >
|
|
|
+ <view class="title-btn" style="color: #22dea7">
|
|
|
+ {{ freQuenceList.length || 0 }}次
|
|
|
+ </view>
|
|
|
</view>
|
|
|
- <view
|
|
|
- class="stayDetail"
|
|
|
- v-if="freQuenceList.length > 0 && freQuenceList.length == 1"
|
|
|
- >
|
|
|
- <view v-for="item in freQuenceList" :key="item.id">
|
|
|
- <view class="stayDetail-item">
|
|
|
- <view class="stayDetail-text"
|
|
|
- >{{
|
|
|
- item.info.start_time.slice(11, 16)
|
|
|
- }}目标进入</view
|
|
|
- >
|
|
|
- <view class="stayDetail-btn"
|
|
|
- >{{
|
|
|
- item.info.end_time.slice(11, 16)
|
|
|
- }}目标离开</view
|
|
|
- >
|
|
|
+
|
|
|
+ <view class="stayDetail" v-if="freQuenceList.length > 0">
|
|
|
+ <!-- 只有一条时直接展示 -->
|
|
|
+ <view v-if="freQuenceList.length === 1">
|
|
|
+ <view
|
|
|
+ v-for="item in freQuenceList"
|
|
|
+ :key="item.id"
|
|
|
+ class="stayDetail-item"
|
|
|
+ >
|
|
|
+ <view class="stayDetail-text">
|
|
|
+ {{ formatTime(item.enterTime) }}目标进入
|
|
|
+ </view>
|
|
|
+ <view class="stayDetail-btn">
|
|
|
+ {{ formatTime(item.leaveTime) }}目标离开
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
- </view>
|
|
|
- <view
|
|
|
- class="stayDetail"
|
|
|
- v-if="freQuenceList.length > 0 && freQuenceList.length > 1"
|
|
|
- >
|
|
|
+
|
|
|
+ <!-- 多条时用 swiper 展示 -->
|
|
|
<swiper
|
|
|
+ v-else
|
|
|
class="auto-scroll-swiper"
|
|
|
:indicator-dots="false"
|
|
|
:autoplay="false"
|
|
@@ -196,39 +191,15 @@
|
|
|
:key="item.id"
|
|
|
class="stayDetail-item"
|
|
|
>
|
|
|
- <view class="stayDetail-text"
|
|
|
- >{{
|
|
|
- item.info.start_time.slice(11, 16)
|
|
|
- }}目标进入</view
|
|
|
- >
|
|
|
- <view class="stayDetail-btn"
|
|
|
- >{{
|
|
|
- item.info.end_time.slice(11, 16)
|
|
|
- }}目标离开</view
|
|
|
- >
|
|
|
+ <view class="stayDetail-text">
|
|
|
+ {{ formatTime(item.enterTime) }}目标进入
|
|
|
+ </view>
|
|
|
+ <view class="stayDetail-btn">
|
|
|
+ {{ formatTime(item.leaveTime) }}目标离开
|
|
|
+ </view>
|
|
|
</swiper-item>
|
|
|
</swiper>
|
|
|
</view>
|
|
|
- <!-- <view class="title" v-if="devInfo.installPosition == 'Toilet'">
|
|
|
- <view class="title-text" style="color: #ff976a"
|
|
|
- >昨日卫生间使用频次</view
|
|
|
- >
|
|
|
- <view class="title-btn" style="color: #ff976a"
|
|
|
- >{{
|
|
|
- freQuenceList.length == "" ? "0" : freQuenceList.length
|
|
|
- }}次</view
|
|
|
- >
|
|
|
- </view>
|
|
|
- <view class="title" v-else>
|
|
|
- <view class="title-text" style="color: #ff976a"
|
|
|
- >昨日进出频次</view
|
|
|
- >
|
|
|
- <view class="title-btn" style="color: #ff976a"
|
|
|
- >{{
|
|
|
- freQuenceList.length == "" ? "0" : freQuenceList.length
|
|
|
- }}次</view
|
|
|
- >
|
|
|
- </view> -->
|
|
|
</view>
|
|
|
<view class="box" v-if="!breathShow">
|
|
|
<view class="handle-btn">
|
|
@@ -644,56 +615,36 @@ export default {
|
|
|
JSON.stringify(this.devInfo),
|
|
|
});
|
|
|
},
|
|
|
- getFrequency(clientId) {
|
|
|
+ getFrequency(devId) {
|
|
|
+ let params = {
|
|
|
+ devId: devId,
|
|
|
+ createTimeStart: this.$time(new Date()),
|
|
|
+ createTimeEnd: this.$time(new Date()),
|
|
|
+ pageNo: 1,
|
|
|
+ pageSize: 30,
|
|
|
+ };
|
|
|
+
|
|
|
this.$http
|
|
|
- .post(`wap/stats/alarmEventsQuery`, {
|
|
|
- clientId: clientId,
|
|
|
- createTimeStart: this.$time(new Date()),
|
|
|
- createTimeEnd: this.$time(new Date()),
|
|
|
- eventType: 1,
|
|
|
+ .post(`wap/stats/inOutEventQuery`, params, {
|
|
|
+ header: {
|
|
|
+ "Content-Type": "application/json;charset=UTF-8",
|
|
|
+ },
|
|
|
})
|
|
|
.then((res) => {
|
|
|
if (res.data.code == 200) {
|
|
|
if (res.data.data.rows.length > 0) {
|
|
|
- this.freQuenceList = this.parseJsonToObjects(
|
|
|
- res.data.data.rows
|
|
|
- );
|
|
|
+ this.freQuenceList = res.data.data.rows;
|
|
|
} else {
|
|
|
this.freQuenceList = [];
|
|
|
}
|
|
|
} else {
|
|
|
- wx.showToast({
|
|
|
+ uni.showToast({
|
|
|
title: res.data.message,
|
|
|
icon: "none",
|
|
|
});
|
|
|
}
|
|
|
});
|
|
|
},
|
|
|
- parseJsonToObjects(jsonArray) {
|
|
|
- return jsonArray.map((item) => {
|
|
|
- // 解析info字段的JSON字符串
|
|
|
- let infoData = {};
|
|
|
- try {
|
|
|
- infoData = JSON.parse(item.info);
|
|
|
- } catch (e) {
|
|
|
- console.error("Failed to parse info JSON:", e);
|
|
|
- }
|
|
|
-
|
|
|
- return {
|
|
|
- id: item.id,
|
|
|
- clientId: item.clientId,
|
|
|
- tenantId: item.tenantId,
|
|
|
- devName: item.devName,
|
|
|
- uuid: item.uuid,
|
|
|
- planUuid: item.planUuid,
|
|
|
- eventType: item.eventType,
|
|
|
- info: infoData,
|
|
|
- isHandle: item.isHandle,
|
|
|
- createTime: item.createTime,
|
|
|
- remark: item.remark,
|
|
|
- };
|
|
|
- });
|
|
|
- },
|
|
|
// 健康闹钟方法
|
|
|
healthAlarm() {
|
|
|
uni.navigateTo({
|
|
@@ -744,7 +695,6 @@ export default {
|
|
|
},
|
|
|
|
|
|
// echarts图表模块
|
|
|
-
|
|
|
getOption(list) {
|
|
|
// 固定 X 轴 [0 ~ 60]
|
|
|
const xData = Array.from({ length: 61 }, (_, i) => i);
|
|
@@ -1005,6 +955,10 @@ export default {
|
|
|
}
|
|
|
return num;
|
|
|
},
|
|
|
+
|
|
|
+ formatTime(time) {
|
|
|
+ return time ? time.slice(11, 16) : "暂无";
|
|
|
+ },
|
|
|
},
|
|
|
onShow() {
|
|
|
this.showModle = true;
|
|
@@ -1013,7 +967,7 @@ export default {
|
|
|
onLoad(options) {
|
|
|
const devItem = JSON.parse(options.devItem);
|
|
|
const { devId, clientId } = devItem;
|
|
|
- this.getFrequency(clientId);
|
|
|
+ this.getFrequency(devId);
|
|
|
this.getdevInfo(devId);
|
|
|
this.getdevRoomInfo(devId);
|
|
|
this.autoPlayinterval = setTimeout(() => {
|