suta/pagesFengXiang/pages/index.vue
2024-05-11 10:06:09 +08:00

616 lines
13 KiB
Vue
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<!-- 蜂箱预警 -->
<view class=" page">
<view class="max-box">
<!-- <view class="suosou-fx">
<view class="section_3 ">
<view class="text_3">
<view class="input-fu">
<image class="image_6 inpt-text-icon"
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/654c3cbd5a7e3f03102425f9/654c44a487ca550011b12cc1/16994973961877418353.png" />
<input v-model="qrcode" class="inpt-text" type="text" value="" placeholder="蜂箱(自定义)编号搜索" maxlength="22"
@input="mfInput" />
</view>
</view>
</view>
</view> -->
<!-- <view class="tabs">
<u-tabs :list="list1" @click="click"></u-tabs>
</view -->
<view class="flex-col self-start group_4">
<view class="flex-col">
<view class="flex-col space-y-6 padding-mi padding-min-box" v-for="(item, index) in fromList"
:key="index" @scrolltolower="onReachBottom">
<!-- 报错代码 -->
<view class="items-end">
<view class="flex-col group_5">
<!-- 日期 -->
<view v-if='!isSameDay(item,index)' class="taxt-center">
<view style="padding: 15rpx 20rpx 30rpx 20rpx;"
class="flex-col justify-start self-end text-wrapper">
<view class="font_2 text_5">{{getTimeByFormat(item.create_time,"MM-dd")}}</view>
</view>
</view>
<!-- 时间 -->
<view class="time-text">
<view class=" group_6 space-x-10">
<view class="font_3 text_6">{{getTimeByFormat(item.create_time,"HH:mm")}}</view>
<image class="image_7 image_8" :src="imgFn(item.type_text)" />
<view class="font_4">{{item.type_text}}</view>
</view>
<view @click="clickweichuli(item)"
class="flex-col justify-start text-wrapper_2 icon-text-r"
:id="item.status_text == '已处理' ? 'text-wrapper_2-bgc2' : 'text-wrapper_2-bgc1' ">
<view class="font_5">{{item.status_text}}</view>
</view>
</view>
</view>
<view class=" justify-evenly group_7 flex-box-love">
<view v-if="fromList.length>0&&index!=(fromList.length-1)" class="xiantiao">
<view class="ver-line"></view>
</view>
<view style="margin-top: 24rpx;" class="flex-col self-start group_8 space-y-6 ">
<view class="items-end space-x-6 didian-text-box">
<image class="shrink-0 image_9"
src="https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/654c3cbd5a7e3f03102425f9/654c44a487ca550011b12cc1/16994973961906195248.png" />
<view class="font_6">{{item.apiary_name}}</view>
<view class="group_9">
<view class="font_6">{{item.beehive_name}}</view>
<view class="font_7">{{item.beehive_qrcode}}</view>
</view>
</view>
<view class="font_8 text_7">{{item.remark}}</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import request from '@/utils/request'
export default {
components: {},
props: {},
data() {
return {
tabIndex: 0,
items: [],
page: 1,
fromList: [],
// tab
list1: [{
name: '全部'
}],
qrcode: '',
id:'',
qrcodes:'',
pagenum: 1,
pagesize: 15, // 一页多少数据
isLoading: false, // 是否正在加载数据
noMoreData: false, // 是否没有更多数据
total: 0
};
},
onLoad(option) {
this.id = option.id
this.qrcodes = option.qrcode
console.log(option);
this.getfengchangList()
},
onShow() {
// this.listData()
},
methods: {
// 判断是否同一天
isSameDay(item, index) {
let time1 = item.create_time
let time2 = this.fromList[index - 1]?.create_time
const date1 = new Date(time1);
const date2 = new Date(time2);
return (
date1.getFullYear() === date2.getFullYear() &&
date1.getMonth() === date2.getMonth() &&
date1.getDate() === date2.getDate()
);
},
getTimeByFormat(timestamp, format) {
// console.log(date,format);
const now = new Date(timestamp);
const month = now.getMonth() + 1; // 注意getMonth() 返回的是 0 到 11所以需要加 1
const day = now.getDate();
// 补零函数,确保单个数字前面加零
const padZero = (num) => (num < 10 ? `0${num}` : num);
// 根据传入的格式进行处理
switch (format) {
case "HH:mm:ss":
return `${padZero(now.getHours())}:${padZero(now.getMinutes())}:${padZero(now.getSeconds())}`;
case "HH:mm":
return `${padZero(now.getHours())}:${padZero(now.getMinutes())}`;
case "mm:ss":
return `${padZero(now.getMinutes())}:${padZero(now.getSeconds())}`;
case "MM-dd":
// console.log(`${padZero(month)}月${padZero(day)}日`)
return `${padZero(month)}月${padZero(day)}日`;
// 可以添加其他格式的处理
default:
return "Invalid Format";
}
},
click(item) {
// console.log('item', item);
this.activeFengchang = item
this.listData()
},
listData() {
let data = {
apiary_id: this.activeFengchang.id,
qrcode: this.qrcodes,
}
request.post('/api/beehive/warning', data).then(res => {
this.total = res.data.total
if (res.data.data.length > 0) {
// 有数据,追加到列表
this.fromList = []
this.fromList = this.fromList.concat(...res.data.data)
this.pagenum++
} else {
// 没有更多数据
this.noMoreData = true;
}
this.isLoading = false;
console.log(this.fromList,'555555555')
})
// console.log(res.data.data)
},
onReachBottom() {
let sum = this.total
console.log(sum,this.fromList.length);
if (this.fromList.length < sum) {
this.listData();
} else {
uni.showToast({
title: '没有更多预警记录了',
icon: 'none',
duration: 1000
});
}
},
getfengchangList() {
// request.post('/api/beehive/warning', {
// apiary_id: this.id,
// qrcode: this.qrcodes
// }).then(res => {
// this.fromList = [...res.data.data]
// // this.click(this.list1[0])
// })
request.get('/api/apiary/index', {}).then(res => {
this.list1.push(...res.data.data)
this.click(this.list1[0])
})
},
changeStatus(item) {
request.put('/api/beehive/warningUpdate/' + item.id, {}).then(res => {
this.listData()
})
},
clickweichuli(item) {
if (item.status == 1) {
return
}
let that = this
uni.showModal({
title: "提示",
content: '是否已经处理完此预警信息!',
success: function(res) {
if (res.confirm) {
// console.log('用户点击确定');
that.changeStatus(item)
} else if (res.cancel) {
// console.log('用户点击取消');
}
}
})
},
mfInput(key) {
this.listData()
},
imgFn(val) {
if (val == '出勤异常') {
return '/static/蜂箱预警-出勤异常.png'
} else if (val == '震动异常') {
return '/static/蜂箱预警-震动异常.png'
} else if (val == '温度异常') {
return '/static/蜂箱预警-温度异常.png'
} else if (val == '湿度异常') {
return '/static/蜂箱预警-湿度异常.png'
} else if (val == '重量异常') {
return '/static/蜂箱预警-重量异常.png'
} else if (val == '电量不足') {
return '/static/蜂箱预警-电量异常.png'
}
},
},
};
</script>
<style scoped lang="scss">
.didian-text-box {
display: flex;
}
.flex-box-love {
display: flex;
}
.xiantiao {
display: flex;
}
.icon-text-r {
text-align: center;
padding-bottom: 10rpx;
}
.padding-min-box {
margin-top: 20rpx;
}
.max-box {
margin: 0 24rpx;
padding-bottom: 100rpx;
}
.time-text {
display: flex;
align-items: center;
justify-content: space-between;
}
.taxt-center {
display: flex;
justify-content: center;
}
.input-fu {
width: 100%;
position: relative;
}
.inpt-text {
text-align: center;
}
.inpt-text-icon {
position: absolute;
top: 5rpx;
left: 10rpx;
}
.suosou-fx {
display: flex;
justify-content: center;
}
.page {
background-color: #ffffff;
width: 100%;
overflow-y: auto;
overflow-x: hidden;
height: 100%;
}
.section {
padding: 36rpx 28rpx 18rpx 42rpx;
background-color: #ffffff;
}
.space-y-16>view:not(:first-child),
.space-y-16>text:not(:first-child),
.space-y-16>image:not(:first-child) {
margin-top: 32rpx;
}
.group {
padding-left: 28rpx;
}
.text {
color: #7d7d7d;
font-size: 28rpx;
font-family: SourceHanSansCN;
font-weight: 700;
line-height: 22rpx;
}
.space-x-6>view:not(:first-child),
.space-x-6>text:not(:first-child),
.space-x-6>image:not(:first-child) {
margin-left: 12rpx;
}
.image {
width: 34rpx;
height: 22rpx;
}
.image_2 {
width: 30rpx;
height: 22rpx;
}
.image_3 {
width: 48rpx;
height: 23rpx;
}
.group_2 {
padding: 12rpx 0;
}
.image_5 {
width: 32rpx;
height: 32rpx;
}
.pos_2 {
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
}
.text_2 {
color: #000000;
font-size: 36rpx;
font-family: AlibabaPuHuiTi;
line-height: 33rpx;
}
.image_4 {
filter: drop-shadow(0px 4rpx 4rpx #00000040);
border-radius: 120rpx;
width: 158rpx;
height: 60rpx;
}
.pos {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
.section_2 {
margin-top: -8rpx;
padding-top: 20rpx;
background-color: #ffffff;
height: 1456rpx;
border: solid 4rpx #e8e8e8;
border-radius: 10rpx;
}
.section_3 {
padding: 8rpx 24rpx;
background-color: #e2e2e2;
width: 558rpx;
border: solid 2rpx #ffffff;
border-radius: 120rpx;
}
.image_6 {
width: 40rpx;
height: 40rpx;
}
.text_3 {
/* margin-right: 26rpx; */
color: #888888;
font-size: 28rpx;
font-family: Nunito;
font-weight: 600;
line-height: 27rpx;
}
.group_3 {
margin-top: 28rpx;
padding: 0 40rpx;
width: 750rpx;
}
.font_1 {
font-size: 32rpx;
font-family: 微软雅黑;
line-height: 30rpx;
color: #888888;
}
.text_4 {
color: #000000;
font-weight: 700;
}
/* .group_4 {
margin: 24rpx 0 -24rpx;
padding: 0 52rpx;
width: 750rpx;
} */
.group_5 {
width: 100%;
}
.text-wrapper {
text-align: center;
padding: 0rpx 0 24rpx;
border-radius: 4rpx;
background-image: url('https://codefun-proj-user-res-1256085488.cos.ap-guangzhou.myqcloud.com/654c3cbd5a7e3f03102425f9/654c44a487ca550011b12cc1/16994973961902704708.png');
background-size: 100% 100%;
background-repeat: no-repeat;
width: 148rpx;
}
.font_2 {
font-size: 24rpx;
font-family: 微软雅黑;
line-height: 22rpx;
color: #ffffff;
}
.text_5 {
line-height: 21rpx;
}
.group_6 {
/* padding-top: 10rpx; */
display: flex;
align-items: center;
}
.space-x-10>view:not(:first-child),
.space-x-10>text:not(:first-child),
.space-x-10>image:not(:first-child) {
margin-left: 20rpx;
}
.font_3 {
font-size: 28rpx;
font-family: 微软雅黑;
line-height: 22rpx;
color: #000000;
}
.text_6 {
font-size: 30rpx;
width: 100rpx;
}
.image_7 {
margin-left: 28rpx;
border-radius: 50%;
width: 40rpx;
height: 40rpx;
}
.image_8 {
margin-left: 0;
}
.font_4 {
font-size: 28rpx;
font-family: 微软雅黑;
line-height: 26rpx;
font-weight: 700;
color: #ff5733;
}
#text-wrapper_2-bgc1 {
background-color: #ff5733;
}
#text-wrapper_2-gbc2 {
background-color: #8888;
}
.text-wrapper_2 {
margin-right: 12rpx;
padding: 10rpx 15rpx;
background-color: #8888;
border-radius: 10rpx;
width: 90rpx;
}
.font_5 {
font-size: 20rpx;
font-family: 微软雅黑;
line-height: 18rpx;
color: #ffffff;
}
.group_7 {
padding-left: 116rpx;
padding-right: 20rpx;
}
.section_4 {
background-image: repeating-linear-gradient(90deg, #888888, #888888 3.51%, transparent 3.51%, transparent 7.019%);
background-position: -2rpx 0px;
width: 2rpx;
height: 114rpx;
margin-left: 20rpx;
}
.group_8 {
padding: 0 32rpx;
}
.space-y-6>view:not(:first-child),
.space-y-6>text:not(:first-child),
.space-y-6>image:not(:first-child) {
margin-top: 12rpx;
}
.image_9 {
width: 24rpx;
height: 28rpx;
}
.font_6 {
font-size: 24rpx;
font-family: 微软雅黑;
line-height: 22rpx;
color: #888888;
}
.group_9 {
line-height: 22rpx;
height: 22rpx;
display: flex;
}
.font_7 {
font-size: 24rpx;
font-family: 微软雅黑;
line-height: 18rpx;
color: #89c28c;
margin-left: 10rpx;
}
.font_8 {
font-size: 24rpx;
font-family: 微软雅黑;
line-height: 22rpx;
font-weight: 700;
color: #000000;
}
.text_7 {
line-height: 28rpx;
}
.ver-line {
margin-left: 22rpx;
height: 200rpx;
width: 3rpx;
border-radius: 10rpx;
background-color: #e7dfe1;
}
</style>