AIzhushou-screen/src/views/index copy/left-bottom.vue

230 lines
5.1 KiB
Vue
Raw 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.

<script setup lang="ts">
import { leftBottom } from "@/api";
import SeamlessScroll from "@/components/seamless-scroll";
import { computed, onMounted, reactive } from "vue";
import { useSettingStore } from "@/stores";
import { storeToRefs } from "pinia";
import EmptyCom from "@/components/empty-com";
import { ElMessage } from "element-plus";
const settingStore = useSettingStore();
const { defaultOption, indexConfig } = storeToRefs(settingStore);
const state = reactive<any>({
list: [],
defaultOption: {
...defaultOption.value,
singleHeight: 256,
limitScrollNum: 4,
},
scroll: true,
});
const getData = () => {
return
leftBottom( { limitNum: 20 })
.then((res) => {
console.log("左下--设备提醒", res);
if (res.success) {
state.list = res.data.list;
} else {
ElMessage({
message: res.msg,
type: "warning",
});
}
})
.catch((err) => {
ElMessage.error(err);
});
};
const addressHandle = (item: any) => {
let name = item.provinceName;
if (item.cityName) {
name += "/" + item.cityName;
if (item.countyName) {
name += "/" + item.countyName;
}
}
return name;
};
const comName = computed(() => {
if (indexConfig.value.leftBottomSwiper) {
return SeamlessScroll;
} else {
return EmptyCom;
}
});
onMounted(() => {
getData();
});
</script>
<template>
<div class="left_boottom_wrap beautify-scroll-def" :class="{ 'overflow-y-auto': !indexConfig.leftBottomSwiper }">
<component
:is="comName"
:list="state.list"
v-model="state.scroll"
:singleHeight="state.defaultOption.singleHeight"
:step="state.defaultOption.step"
:limitScrollNum="state.defaultOption.limitScrollNum"
:hover="state.defaultOption.hover"
:singleWaitTime="state.defaultOption.singleWaitTime"
:wheel="state.defaultOption.wheel"
>
<ul class="left_boottom">
<li class="left_boottom_item" v-for="(item, i) in state.list" :key="i">
<span class="orderNum doudong">{{ i + 1 }}</span>
<div class="inner_right">
<div class="dibu"></div>
<div class="flex">
<div class="info">
<span class="labels">设备ID</span>
<span class="text-content zhuyao doudong wangguan"> {{ item.gatewayno }}</span>
</div>
<div class="info">
<span class="labels">时间</span>
<span class="text-content" style="font-size: 12px"> {{ item.createTime }}</span>
</div>
</div>
<span
class="types doudong"
:class="{
typeRed: item.onlineState == 0,
typeGreen: item.onlineState == 1,
}"
>{{ item.onlineState == 1 ? "上线" : "下线" }}</span
>
<div class="info addresswrap">
<span class="labels">地址</span>
<span class="text-content ciyao" style="font-size: 12px"> {{ addressHandle(item) }}</span>
</div>
</div>
</li>
</ul>
</component>
</div>
</template>
<style scoped lang="scss">
.left_boottom_wrap {
overflow: hidden;
width: 100%;
height: 100%;
}
.doudong {
overflow: hidden;
backface-visibility: hidden;
}
.overflow-y-auto {
overflow-y: auto;
}
.left_boottom {
width: 100%;
height: 100%;
.left_boottom_item {
display: flex;
align-items: center;
justify-content: center;
padding: 8px;
font-size: 14px;
margin: 10px 0;
.orderNum {
margin: 0 16px 0 -20px;
}
.info {
margin-right: 10px;
display: flex;
align-items: center;
color: #fff;
.labels {
flex-shrink: 0;
font-size: 12px;
color: rgba(255, 255, 255, 0.6);
}
.zhuyao {
color: $primary-color;
font-size: 15px;
}
.ciyao {
color: rgba(255, 255, 255, 0.8);
}
.warning {
color: #e6a23c;
font-size: 15px;
}
}
.inner_right {
position: relative;
height: 100%;
width: 380px;
flex-shrink: 0;
line-height: 1;
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
.dibu {
position: absolute;
height: 2px;
width: 104%;
background-image: url("@/assets/img/zuo_xuxian.png");
bottom: -10px;
left: -2%;
background-size: cover;
}
.addresswrap {
width: 100%;
display: flex;
margin-top: 8px;
}
}
.wangguan {
color: #1890ff;
font-weight: 900;
font-size: 15px;
width: 80px;
flex-shrink: 0;
}
.time {
font-size: 12px;
// color: rgba(211, 210, 210,.8);
color: #fff;
}
.address {
font-size: 12px;
cursor: pointer;
// @include text-overflow(1);
}
.types {
width: 30px;
flex-shrink: 0;
}
.typeRed {
color: #fc1a1a;
}
.typeGreen {
color: #29fc29;
}
}
}
</style>