邓宏
2 months ago
7 changed files with 480 additions and 78 deletions
@ -0,0 +1,376 @@ |
|||
<style lang="scss"> |
|||
.container{ |
|||
min-height: 100%; |
|||
background:#F6F6F6; |
|||
padding:30rpx 0; |
|||
.card{ |
|||
margin-top:0; |
|||
&>.title{ |
|||
display:flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
text:nth-child(2){ |
|||
color:#777; |
|||
} |
|||
} |
|||
.d-form /deep/{ |
|||
&>.u-form-item{ |
|||
position:relative; |
|||
.u-form-item__body__right__message{ |
|||
position:absolute; |
|||
bottom:-10rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
&>.fertilizer{ |
|||
&>.name{ |
|||
display:flex; |
|||
align-items: center; |
|||
margin-bottom:14rpx; |
|||
text{ |
|||
&.goods{ |
|||
font-size:20rpx; |
|||
color:#fff; |
|||
background:#10C176; |
|||
border-radius: 7rpx; |
|||
min-width:80rpx; |
|||
padding:0 6rpx; |
|||
text-align: center; |
|||
height:40rpx; |
|||
line-height: 40rpx; |
|||
margin-right:16rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
&.name{ |
|||
margin-right:20rpx; |
|||
} |
|||
&.spec{ |
|||
flex-shrink: 0; |
|||
margin-left:auto; |
|||
color:#777; |
|||
} |
|||
} |
|||
} |
|||
&>.company{ |
|||
display:flex; |
|||
align-items: center; |
|||
text{ |
|||
&.type{ |
|||
flex-shrink: 0; |
|||
font-size:20rpx; |
|||
color:#FBA83C; |
|||
} |
|||
&.name{ |
|||
margin-left:20rpx; |
|||
font-size:20rpx; |
|||
color:#707070; |
|||
} |
|||
&.specs{ |
|||
margin-left:auto; |
|||
color:#FBA83C; |
|||
font-size:24rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
&>.specs{ |
|||
.select{ |
|||
flex-grow: 1; |
|||
height:80rpx; |
|||
line-height: 80rpx; |
|||
background:#F7F7F7; |
|||
border-radius: 24rpx; |
|||
padding:0 28rpx; |
|||
display:flex; |
|||
text{ |
|||
color:#999; |
|||
&:first-child{ |
|||
flex-grow: 1; |
|||
} |
|||
&:nth-child(2){ |
|||
flex-shrink: 0; |
|||
transform: rotate(90deg); |
|||
} |
|||
} |
|||
} |
|||
.plant-xinjian{ |
|||
color:#10C176; |
|||
border-radius: 24rpx; |
|||
margin-left:24rpx; |
|||
background:#E7FCF3; |
|||
height:80rpx; |
|||
line-height: 80rpx; |
|||
width:120rpx; |
|||
text-align: center; |
|||
box-shadow: 6rpx 6rpx 8rpx rgba(16,193,118,0.1); |
|||
} |
|||
.tip{ |
|||
color:#FBA83C; |
|||
font-size:24rpx; |
|||
margin-top:12rpx; |
|||
} |
|||
} |
|||
&>.purchase{ |
|||
.input{ |
|||
display:flex; |
|||
background:#F7F7F7; |
|||
border-radius: 24rpx; |
|||
padding:20rpx; |
|||
input{ |
|||
flex-grow: 1; |
|||
} |
|||
text{ |
|||
color:#999; |
|||
line-height: 40rpx; |
|||
margin-left:20rpx; |
|||
} |
|||
} |
|||
} |
|||
.outBatch{ |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: space-evenly; |
|||
&>view{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size:22rpx; |
|||
&.name{ |
|||
|
|||
} |
|||
&.data{ |
|||
text{ |
|||
&:first-child{ |
|||
color:#999; |
|||
} |
|||
&:nth-child(2){ |
|||
color:#FBA83C; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
<template> |
|||
<view class="container"> |
|||
<view class="card fertilizer"> |
|||
<view class="name"> |
|||
<text class="goods">{{detail.agriculturalGoods}}</text> |
|||
<text class="name over">{{detail.substanceName}}</text> |
|||
<text class="spec">{{detail.specDescribe}}</text> |
|||
</view> |
|||
<view class="company"> |
|||
<text class="type">{{detail.detailType}}</text> |
|||
<text class="name over">{{detail.supplierName}}</text> |
|||
<text class="specs">库存:{{Math.round(detail.equivalentInventory*detail.unitNum*100)/100}} {{detail.unit}}</text> |
|||
</view> |
|||
</view> |
|||
|
|||
<!-- <view class="card specs" v-if="formData.substanceType==1"> |
|||
<view class="title"> |
|||
<text>规格</text> <text>{{detail.specDescribe}}</text> |
|||
</view> |
|||
<view class="tip">库存:{{detail.equivalentInventory}}{{detail.packgeUnit}}({{Math.round(detail.equivalentInventory*detail.unitNum*100)/100}}{{detail.unit}})</view> |
|||
</view> --> |
|||
|
|||
<view class="card"> |
|||
<u-form class="inline" :model="formData" ref="form" :rules="rules" labelWidth="auto"> |
|||
<d-form label="出库批次号" field="outBatchNo" required :value="[formData.outBatchNo]" @select="selectOutBatch" type="select" custom :columns="[inBatchList]"> |
|||
<template slot-scope="{row}"> |
|||
<view class="outBatch"> |
|||
<view class="name"> |
|||
<text>{{row.substanceName}}</text> <text>入库日期:{{row.operateTime}}</text> |
|||
</view> |
|||
<view class="data"> |
|||
<text>入库批次:{{row.inOutBatchNo}}</text> <text>剩余:{{row.equivalentAmount}}{{row.unit}}</text> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
</d-form> |
|||
<d-form label="出库类型" field="outType" required type="select" :columns="outType.list" :value="outType.value" @select="outType.value=$event.map(v=>v.value);formData.outType=outType.value.slice(-1)[0]"/> |
|||
<!-- 出库类型为领用出库 --> |
|||
<d-form label="领用人" type="select" v-if="formData.outType=='out01'" :columns="[reciveuser]" :value="[formData.reciveUserId]" @select="formData.reciveUserId=$event[0].value;formData.reciveUser=$event[0].label" required field="reciveUserId"/> |
|||
<!-- 农资出库、出库类型为损坏出库 --> |
|||
<block v-if="formData.outType=='out02'"> |
|||
<d-form label="金额" type="digit" required field="price" v-model="formData.price"/> |
|||
<d-form label="处理方式" type="select" :columns="[processMode]" :value="[formData.processMode]" @select="formData.processMode=$event[0].value" required field="processMode"/> |
|||
</block> |
|||
<d-form label="出库数量" field="equivalentAmount" required :suffix="detail.unit" :value="formData.equivalentAmount" @input="formData.equivalentAmount=$event" type="digit" @blur="outNum"/> |
|||
<d-form label="操作日期" field="operationTime" required type="calendar" v-model="formData.operateTime"/> |
|||
<d-form label="出库凭证`" type="upImg" :num="3" :value="formData.pic" @imgs="pic=$event"/> |
|||
</u-form> |
|||
</view> |
|||
|
|||
<button class="cu-btn round bg-green shadow submit" @click="submit">确定</button> |
|||
|
|||
</view> |
|||
</template> |
|||
<script> |
|||
import request from '@/common/request' |
|||
export default{ |
|||
data(){ |
|||
return{ |
|||
detail:{}, |
|||
|
|||
recoveryBatch:{list:[],value:[],number:0,surplus:0}, |
|||
outType:{list:[],value:[]}, |
|||
pic:"", |
|||
processMode:[],//处理方式 |
|||
reciveuser:[],//领用人 |
|||
inBatchList:[],//入库列表 |
|||
formData:{ |
|||
equivalentAmount:'',//出库数量 |
|||
inOutId:"", |
|||
inventoryId:"", |
|||
operateTime:"", |
|||
outBatchNo:"",//农资出库批次号 |
|||
outType:"", |
|||
reciveUser:"", |
|||
reciveUserId:"", |
|||
surplus:"", |
|||
pic:[], |
|||
remark:"", |
|||
price:"", |
|||
processMode:"", |
|||
substanceType:1, |
|||
}, |
|||
rules:{ |
|||
outType:{required:true,validator:(rule,val,call)=>{ |
|||
if(!val)call(new Error(`出库类型必填!`)); |
|||
else call() |
|||
},trigger:['blur','change']}, |
|||
outBatchNo:{required:true,validator:(rule,val,call)=>{ |
|||
if(!val)call(new Error(`出库批次号必填!`)); |
|||
else call() |
|||
},trigger:['blur','change']}, |
|||
operateTime:{required:true,message:"请选择操作日期!",trigger:['blur','change']}, |
|||
equivalentAmount:{required:true,validator:(rule,val,call)=>{ |
|||
if(!(val>0))call(new Error(`请输入出库数量!`)); |
|||
else call() |
|||
},type:"number",trigger:['blur','change']}, |
|||
|
|||
reciveUserId:{required:true,message:"请选择领用人!",trigger:['blur','change']}, |
|||
|
|||
price:{required:true, type:"number", message:"请输入金额!",tigger:['blur','change']}, |
|||
processMode:{required:true, message:"请输入处理方式!",tigger:['blur','change']}, |
|||
}, |
|||
eventChannel:null, |
|||
} |
|||
}, |
|||
onLoad(options){ |
|||
|
|||
this.eventChannel=this.getOpenerEventChannel() |
|||
this.eventChannel.on("detail", e=>{ |
|||
this.detail=e |
|||
this.formData.inventoryId=e.inventoryId |
|||
}) |
|||
this.init() |
|||
}, |
|||
methods:{ |
|||
async init(){ |
|||
//出库类型 |
|||
var res=await request("/common/api/dict/queryDictItemByDictCode",{ |
|||
method:"post", |
|||
//农产品前面加上product_ |
|||
params: {dictCode: "out_type"} |
|||
}) |
|||
if(res.statu){ |
|||
this.outType.list=[res.data] |
|||
}else{ |
|||
uni.showModal({ |
|||
title:"提示", |
|||
content:res.msg||"获取出库类型选项失败!", |
|||
showCancel:false, |
|||
}) |
|||
} |
|||
|
|||
//处理方式 |
|||
var res = await request("/common/api/dict/queryDictItemByDictCode",{ |
|||
method:"post", |
|||
params:{dictCode:"process_mode"} |
|||
}) |
|||
if(res.statu){ |
|||
this.processMode=res.data |
|||
}else{ |
|||
uni.showModal({ |
|||
title:"提示", |
|||
content:res.msg||"获取买方类型选项失败!", |
|||
showCancel:false, |
|||
}) |
|||
} |
|||
//领用人 |
|||
var res=await request("/api/plantPlot/queryBaseUserByBaseId",{ |
|||
params:{baseId: this.$store.state.baseInfo.id} |
|||
}) |
|||
if(res.statu){ |
|||
this.reciveuser=res.data |
|||
}else{ |
|||
uni.showModal({ |
|||
title:"提示", |
|||
content:res.msg||"获取领用人选项失败!", |
|||
showCancel:false, |
|||
}) |
|||
} |
|||
//出库批次选项 |
|||
var res=await request("/suyuan/Inventory/agriculturalInSurplus",{ |
|||
params:{inventoryId: this.detail.inventoryId} |
|||
}) |
|||
if(res.statu){ |
|||
this.inBatchList=res.data.map(v=>({...v, label:v.substanceName, value:v.inOutBatchNo})) |
|||
}else{ |
|||
uni.showModal({ |
|||
title:"提示", |
|||
content:res.msg||"获取出库批次号选项失败!", |
|||
showCancel:false, |
|||
}) |
|||
} |
|||
}, |
|||
submit(){ |
|||
this.$refs.form.validate().then(async valid=>{ |
|||
if(valid){ |
|||
var res=await request("/suyuan/Inventory/agriculturalOutOperate",{ |
|||
method:"post", |
|||
body:{ |
|||
...this.formData, |
|||
pic:this.pic, |
|||
} |
|||
}) |
|||
if(res.statu){ |
|||
uni.navigateBack() |
|||
this.eventChannel.emit("update") |
|||
}else{ |
|||
uni.showModal({ |
|||
title:"提示", |
|||
content:res.msg||"保存失败!", |
|||
showCancel:false, |
|||
}) |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
searchBuy(){ |
|||
uni.navigateTo({ |
|||
url:`/pages/massif/search?data=${this.formData.buyerName||''}`, |
|||
events:{update:e=>{ |
|||
this.formData.buyerName=e.buyerName |
|||
this.formData.buyerAddress=e.address |
|||
this.formData.buyerType=e.buyerType[1] |
|||
this.buyerType.value=e.buyerType |
|||
}} |
|||
}) |
|||
}, |
|||
selectOutBatch([e]){ |
|||
this.formData.outBatchNo=e.inOutBatchNo |
|||
this.formData.inOutId=e.id |
|||
this.formData.surplus=e.equivalentAmount |
|||
}, |
|||
outNum(){ |
|||
if(/\d/.test(this.formData.equivalentAmount)){ |
|||
this.formData.equivalentAmount=Math.min(this.formData.equivalentAmount, this.formData.surplus) |
|||
} |
|||
}, |
|||
}, |
|||
} |
|||
</script> |
Loading…
Reference in new issue