You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

185 lines
5.7 KiB

<style lang="less" scoped>
.container{
height:100%;
background:#f6f6f6;
scroll-view{
flex-grow: 1;
height:1rpx;
.card{
margin-top:0rpx;
&>.title{
display: flex;
align-items: center;
.icon{
background-image: url("data:image/svg+xml,%3Csvg width='16' height='16.001999' viewBox='0 0 16 16.002' fill='none' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'%3E %3Cpath id='path' d='M0 16L8 16L8 0L0 0L0 16ZM4.57098 1.143L6.85699 1.143L6.85699 3.429L4.57098 3.429L4.57098 1.143ZM4.57098 4.572L6.85699 4.572L6.85699 6.858L4.57098 6.858L4.57098 4.572ZM4.57098 8.001L6.85699 8.001L6.85699 10.287L4.57098 10.287L4.57098 8.001ZM1.142 1.144L3.42801 1.144L3.42801 3.43L1.14301 3.43L1.142 1.144ZM1.142 4.573L3.42801 4.573L3.42801 6.859L1.14301 6.859L1.142 4.573ZM1.142 8.002L3.42801 8.002L3.42801 10.288L1.14301 10.288L1.142 8.002ZM9.142 16.002L11.428 16.002L11.428 12.571L14.857 12.571L14.857 16L16 16L16 9.143L9.14301 9.143L9.142 16.002ZM9.142 6.859L16 6.859L16 8L9.14301 8L9.142 6.859Z' fill='%2310C176' fill-opacity='1' fill-rule='nonzero'/%3E %3C/svg%3E ");
background-size:100% 100%;
width:32rpx;
height:32rpx;
margin-right:12rpx;
}
.name{
font-size:32rpx;
font-weight: bold;
margin-right:10rpx;
}
.statu{
margin-left:auto;
font-size:24rpx;
font-weight: bold;
&.no{
color:#00C220;
}
&.unusual{
color:#EE263A;
display: flex;
align-items: center;
&:before{
content:"";
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cdefs%3E%3Cstyle%3E.a%7Bfill:%23ee263a;%7D%3C/style%3E%3C/defs%3E%3Cpath class='a' d='M6,0A4.416,4.416,0,0,0,2.893,1.254,4.284,4.284,0,0,0,1.621,4.29v5.856h8.712V4.29A4.254,4.254,0,0,0,9.055,1.254,4.4,4.4,0,0,0,6,0Zm-.36,8.742L5.515,5.9H3.367l2.82-3.558.24,2.292,2.04.072L5.617,8.742ZM0,11.346a.654.654,0,0,1,.654-.66H11.347a.672.672,0,0,1,.462.192.684.684,0,0,1,.192.468.654.654,0,0,1-.654.654H.655A.654.654,0,0,1,0,11.346Zm0,0' transform='translate(-0.001)'/%3E%3C/svg%3E");
width:24rpx;
height:24rpx;
margin-right:4rpx;
}
}
}
.deal{
color:#F3AA1E;
}
.plant-youbian{
color:#777;
}
}
&>.imgs{
display: flex;
margin-right:-20rpx;
image{
border-radius: 8rpx;
width:calc(100%/4 - 20rpx);
height:140rpx;
position:relative;
&+image{
margin-left:20rpx;
}
&:nth-child(4){
&:before{
content:var(--c);
position:absolute;
top:0;
left:0;
width:100%;
height:100%;
background:rgba(0, 0, 0, 0.4);
color:#fff;
line-height: 140rpx;
text-align: center;
}
}
}
}
&>.foot{
display: flex;
align-items: center;
justify-content: space-between;
border-top:2rpx solid rgba(216, 216, 216, 0.3);
color:#999;
padding-top:15rpx;
margin-top:10rpx;
}
}
}
}
</style>
<template>
<view class="container flex">
<d-navbar text="巡园记录" isBack style="--bg:#10C176;--c:#fff;">
<text slot="right" class="plant-xinjian" @click="toAddPage"/>
</d-navbar>
<d-search v-model="searchVal.search" @search="search('pageOne')"/>
<scroll-view scroll-y @scrolltolower="search()">
<view class="card" v-for="(v,k) in list" :key="k" @click="toDetail(v)">
<view class="title">
<text class="icon"/>
<text class="name over">{{v.baseName}}</text>
<text v-if="v.flagAbnormal==0" class="statu no">无异常</text>
<text v-else class="statu unusual">异常</text>
<text v-if="v.flagAbnormal==1" class="deal">(已处理{{v.deal}}/{{v.detailVos.length}})</text>
<text class="plant-youbian"/>
</view>
<view class="imgs">
<image v-for="(v1,k1) in v.pic.slice(0,4)" :style="{'--c':v.pic.length-4>0?`'+${v.pic.length-4}'`:''}" :key="k1" mode="aspectFill" :src="`${host}/${v1}`"/>
</view>
<u-read-more toggle closetext="展开" showHeight="80rpx" textIndent="0em" style="margin-top:10rpx;">{{v.remark}}</u-read-more>
<view class="foot">
<text>巡园日期{{v.operateDate}}</text>
<text>{{v.userName}}</text>
</view>
</view>
<view style="border:1rpx solid transparent;"/>
<u-empty :show="list.length<=0" text="未查询到相关信息" width="50%" icon="/static/noData.png"/>
</scroll-view>
</view>
</template>
<script>
import request,{host} from '@/common/request'
export default {
data(){
return{
searchVal:{
search:"",
baseId: this.$store.state.baseInfo.id,
pageNo:1,
pageSize:5,
},
total:0,
list:[],
host:host('imgUrl'),
}
},
onLoad(){
this.search()
},
methods:{
async search(type){
if(type=='pageOne'){
this.searchVal.pageNo=1
this.list=[]
this.total=0
}
if(this.total==0||this.list.length<this.total){
var res=await request("/api/basetour/queryTourListByBaseId",{
method:"post",
body:this.searchVal,
})
if(res.statu){
this.list=this.list.concat(res.data.record.map(v=>({
...v,
pic: v.pic?(v.pic||'').split(',').filter(v=>v):v.detailVos.reduce((a,b)=>a.concat((b.pic||'').split(',').filter(v=>v)),[])
})))
this.total=res.data.total
}else{
uni.showModal({
title:"提示",
content:res.msg||"获取巡园记录失败!",
showCancel:false,
})
}
}
},
toAddPage(){
uni.navigateTo({
url:"/pages/patrolGarden/info",
events:{update:()=>this.search('pageOne')},
})
},
toDetail(e){
uni.navigateTo({
url:"/pages/patrolGarden/detail",
success:res=>{
res.eventChannel.emit('detail',e)
}
})
}
}
}
</script>