|
|
|
<style lang="scss" scoped>
|
|
|
|
.plant_plan{
|
|
|
|
height:100%;
|
|
|
|
display:flex;
|
|
|
|
flex-direction: column;
|
|
|
|
scroll-view{
|
|
|
|
flex-grow: 1;
|
|
|
|
height:1rpx;
|
|
|
|
padding-top:30rpx;
|
|
|
|
.card{
|
|
|
|
margin-top:0;
|
|
|
|
&>.info{
|
|
|
|
display:flex;
|
|
|
|
&>.u-transition{
|
|
|
|
position:relative;
|
|
|
|
margin-right:20rpx;
|
|
|
|
&:before{
|
|
|
|
content:attr(data-type);
|
|
|
|
position:absolute;
|
|
|
|
z-index: 30;
|
|
|
|
top:0;
|
|
|
|
left:0;
|
|
|
|
border-radius: 20rpx 20rpx 20rpx 0;
|
|
|
|
background:rgba(60, 84, 44, 0.5);
|
|
|
|
color:#fff;
|
|
|
|
padding:6rpx 2rpx;
|
|
|
|
min-width:80rpx;
|
|
|
|
text-align: center;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&>.detail{
|
|
|
|
flex-grow: 1;
|
|
|
|
width:1rpx;
|
|
|
|
.name{
|
|
|
|
display:flex;
|
|
|
|
margin-bottom: 6rpx;
|
|
|
|
text{
|
|
|
|
&:first-child{
|
|
|
|
flex-shrink: 0;
|
|
|
|
font-size:20rpx;
|
|
|
|
color:#fff;
|
|
|
|
background:#10C176;
|
|
|
|
height:40rpx;
|
|
|
|
width:80rpx;
|
|
|
|
line-height: 40rpx;
|
|
|
|
text-align: center;
|
|
|
|
border-radius: 6rpx;
|
|
|
|
margin-right:12rpx;
|
|
|
|
}
|
|
|
|
&:nth-child(2){
|
|
|
|
font-weight: bold;
|
|
|
|
flex-grow: 1;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
.batch,.recovery{
|
|
|
|
font-size:24rpx;
|
|
|
|
color:var(--c);
|
|
|
|
margin-bottom:6rpx;
|
|
|
|
}
|
|
|
|
.mu{
|
|
|
|
display:flex;
|
|
|
|
align-items: center;
|
|
|
|
&>text.area{
|
|
|
|
color:#10C176;
|
|
|
|
font-size:32rpx;
|
|
|
|
font-weight: bold;
|
|
|
|
&:after{
|
|
|
|
content:"亩";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&>.farm{
|
|
|
|
font-size:22rpx;
|
|
|
|
color:#10C176;
|
|
|
|
height:40rpx;
|
|
|
|
line-height: 40rpx;
|
|
|
|
margin-left:18rpx;
|
|
|
|
background: rgba(16, 193, 119, 0.1);
|
|
|
|
padding:0 6rpx;
|
|
|
|
}
|
|
|
|
button{
|
|
|
|
margin:-20rpx 0 -20rpx auto!important;
|
|
|
|
padding:20rpx;
|
|
|
|
height: auto;
|
|
|
|
background: transparent;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&>.date{
|
|
|
|
border-top:2rpx solid rgba(216, 216, 216, 0.5);
|
|
|
|
margin-top:6rpx;
|
|
|
|
padding-top:12rpx;
|
|
|
|
display:flex;
|
|
|
|
align-items: center;
|
|
|
|
text{
|
|
|
|
flex-shrink: 0;
|
|
|
|
color:#999;
|
|
|
|
font-size:24rpx;
|
|
|
|
margin-right:auto;
|
|
|
|
&.over{
|
|
|
|
background:#F7F7F7;
|
|
|
|
border-radius: 8rpx;
|
|
|
|
height:48rpx;
|
|
|
|
line-height: 48rpx;
|
|
|
|
padding:0 20rpx;
|
|
|
|
margin:0 0 0 auto;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
button{
|
|
|
|
margin:0 0 0 20rpx;
|
|
|
|
color:rgba(var(--c),1);
|
|
|
|
background:rgba(var(--c),0.15);
|
|
|
|
height:48rpx;
|
|
|
|
font-size:24rpx;
|
|
|
|
padding:0 16rpx;
|
|
|
|
min-width:100rpx;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
&>button{
|
|
|
|
flex-shrink: 0;
|
|
|
|
margin:20rpx auto!important;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</style>
|
|
|
|
<template>
|
|
|
|
<view class="plant_plan">
|
|
|
|
<scroll-view scroll-y @scrolltolower="search">
|
|
|
|
<view class="card" v-for="(v,k) in list" :key="k">
|
|
|
|
<view class="info" @click="v.status==1 && reDetail(v.id)">
|
|
|
|
<u-image :data-type="v.plantType" radius="20rpx" width="170rpx" height="140rpx" mode="aspectFill" :src="`${host}/${v.images}`">
|
|
|
|
<text slot="error" style="font-size:45rpx;" class="plant-xiaopangchetupianjiazaishibai"/>
|
|
|
|
</u-image>
|
|
|
|
<view class="detail">
|
|
|
|
<view class="name">
|
|
|
|
<text>{{v.plantStandard}}</text> <text class="over">{{v.varietyName}}</text> <text class="plant-youbian"/>
|
|
|
|
</view>
|
|
|
|
<view class="batch over" style="--c:#999;">种植批次号:{{v.plantBatch}}</view>
|
|
|
|
<view class="recovery" style="--c:#FFC760;">已采收:{{v.harvested}}kg</view>
|
|
|
|
<view class="mu">
|
|
|
|
<text class="area">{{v.plantArea}}</text>
|
|
|
|
<text class="farm" @click.stop="v.farmNum>0 && $emit('farm',v.id)">农事操作{{v.farmNum||0}}次</text>
|
|
|
|
<button class="cu-btn bg-white sm plant-shanchu" v-if="v.status!=2" @click.stop="del(k)">删除</button>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<view class="date">
|
|
|
|
<text>预估采收日期:{{v.harvestTime}}</text>
|
|
|
|
<template v-if="v.status==1">
|
|
|
|
<button class="cu-btn" style="--c:255, 196, 87;" @click.stop="finishPlant(k)">结束种植</button>
|
|
|
|
<button class="cu-btn" style="--c:153, 153, 153;" @click.stop="toAdd(v.id)">采收</button>
|
|
|
|
</template>
|
|
|
|
<template v-else-if="v.status==2">
|
|
|
|
<button v-if="v.plantType=='水果'" class="cu-btn" style="--c:16, 193, 118;" @click.stop="copy(v.id)">复制当前计划</button>
|
|
|
|
<text class="over">已结束</text>
|
|
|
|
</template>
|
|
|
|
</view>
|
|
|
|
</view>
|
|
|
|
<u-empty v-if="list.length==0" text="为查询到相关信息" width="70%" icon="/static/noData.png"/>
|
|
|
|
</scroll-view>
|
|
|
|
|
|
|
|
<button class="cu-btn round bg-green shadow submit" @click="addPlant">+新增种植计划</button>
|
|
|
|
</view>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import request,{host} from '@/common/request'
|
|
|
|
export default {
|
|
|
|
name:"plantPlan",
|
|
|
|
props:{
|
|
|
|
plotId:{
|
|
|
|
type:String,
|
|
|
|
default:""
|
|
|
|
}
|
|
|
|
},
|
|
|
|
data(){
|
|
|
|
return{
|
|
|
|
searchVal:{
|
|
|
|
pageNo:1,
|
|
|
|
pageSize:4
|
|
|
|
},
|
|
|
|
total:0,
|
|
|
|
list:[],
|
|
|
|
host:host("imgUrl"),
|
|
|
|
}
|
|
|
|
},
|
|
|
|
created(){
|
|
|
|
this.search()
|
|
|
|
this.$provise.on('addFarming',()=>{
|
|
|
|
this.clean()
|
|
|
|
this.search()
|
|
|
|
})
|
|
|
|
},
|
|
|
|
methods:{
|
|
|
|
clean(){
|
|
|
|
this.list=[]
|
|
|
|
this.total=0
|
|
|
|
this.searchVal.pageNo=1
|
|
|
|
},
|
|
|
|
async search(){
|
|
|
|
if(this.total==0||this.list.length<this.total){
|
|
|
|
var res=await request('/api/plantPlan/list',{
|
|
|
|
params: {
|
|
|
|
...this.searchVal,
|
|
|
|
plotId: this.plotId
|
|
|
|
}
|
|
|
|
})
|
|
|
|
if(res.statu){
|
|
|
|
this.list=this.list.concat(res.data.records)
|
|
|
|
this.total=res.data.total
|
|
|
|
this.searchVal.pageNo++
|
|
|
|
if(this.list.length==this.total)uni.showToast({title:"加载完成!",icon:"none"})
|
|
|
|
}else{
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:res.msg||"获取地块列表失败!",
|
|
|
|
showCancel:false,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
},
|
|
|
|
addPlant(){
|
|
|
|
uni.navigateTo({
|
|
|
|
url:`/pages/massif/plant_plan?plotId=${this.plotId}`,
|
|
|
|
events:{ update:()=> {this.clean();this.search()} }
|
|
|
|
})
|
|
|
|
},
|
|
|
|
reDetail(id){
|
|
|
|
uni.navigateTo({
|
|
|
|
url:`/pages/massif/plant_plan?id=${id}`,
|
|
|
|
events:{update:()=> {this.clean();this.search()} }
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//结束种植
|
|
|
|
finishPlant(index){
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:"确定结束种植!",
|
|
|
|
success: async e=>{
|
|
|
|
if(e.confirm){
|
|
|
|
var res=await request("/api/plantPlan/finishPlant",{
|
|
|
|
params:{plantPlanId:this.list[index].id}
|
|
|
|
})
|
|
|
|
if(res.statu){
|
|
|
|
uni.showToast({title:"结束成功!",duration:1500})
|
|
|
|
this.list[index].status=2
|
|
|
|
}else{
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:res.msg||"结束种植失败!",
|
|
|
|
showCancel:false,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
//跳转新增采收页面
|
|
|
|
toAdd(plantId){
|
|
|
|
uni.navigateTo({
|
|
|
|
url:`/pages/massif/plant_info?plantId=${plantId}&plotId=${this.plotId}`,
|
|
|
|
events:{ toRecovery:()=>{
|
|
|
|
this.clean()
|
|
|
|
this.search()
|
|
|
|
this.$emit("trigger", plantId)
|
|
|
|
} }
|
|
|
|
})
|
|
|
|
},
|
|
|
|
del(index){
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:"确定删除!",
|
|
|
|
success: async e=>{
|
|
|
|
if(e.confirm){
|
|
|
|
var res=await request("/api/plantPlan/deletePlantPlanSchedule",{
|
|
|
|
method:"delete",
|
|
|
|
params:{id: this.list[index].id}
|
|
|
|
})
|
|
|
|
if(res.statu){
|
|
|
|
uni.showToast({title:"删除成功!",icon:"success"})
|
|
|
|
if(this.list.length>this.searchVal.pageNo+3)this.list.splice(index,1);
|
|
|
|
else{
|
|
|
|
this.list=[]
|
|
|
|
this.total=0
|
|
|
|
this.searchVal.pageNo=1
|
|
|
|
this.search()
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:res.msg||"删除失败!",
|
|
|
|
showCancel:false,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
async copy(id){
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:"确定复制当前计划?",
|
|
|
|
success: async e=>{
|
|
|
|
if(e.confirm){
|
|
|
|
var res=await request("/api/plantPlan/copyPlan",{
|
|
|
|
params:{id}
|
|
|
|
})
|
|
|
|
if(res.statu){
|
|
|
|
uni.navigateTo({
|
|
|
|
url:`/pages/massif/plant_plan`,
|
|
|
|
event:{update:()=> {this.clean();this.search()} },
|
|
|
|
success(e){
|
|
|
|
e.eventChannel.emit("copy", res.data)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}else{
|
|
|
|
uni.showModal({
|
|
|
|
title:"提示",
|
|
|
|
content:res.msg||"复制失败!",
|
|
|
|
showCancel:false,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
},
|
|
|
|
},
|
|
|
|
destroyed(){
|
|
|
|
this.$provise.off('addFarming')
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|