You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
300 lines
7.8 KiB
Vue
300 lines
7.8 KiB
Vue
<template>
|
|
<view class="box-container">
|
|
<u-navbar leftIconSize="25px" height="70px" :titleStyle="{fontWeight:700}" title="录入箱规" @leftClick="leftClick" :autoBack="true">
|
|
</u-navbar>
|
|
|
|
<view class="entry-info">
|
|
<view class="info">
|
|
<view>订单号</view>
|
|
<view style="margin-top: 8px;">{{form.orderNo}}</view>
|
|
</view>
|
|
<view class="info">
|
|
<view>预报件重体</view>
|
|
<view style="margin-top: 8px;">{{form.spec}}</view>
|
|
</view>
|
|
<u-form labelPosition="top" labelWidth="120" :model="sizeForm" :rules="rules" ref="ruleFormRef">
|
|
<u-form-item label="到仓时间" prop="time" :required="true">
|
|
<u-datetime-picker :show="show" v-model="sizeForm.time" mode="datetime" @confirm="onDatetimeChange"
|
|
@cancel="show = false"></u-datetime-picker>
|
|
</u-form-item>
|
|
<view style="display: flex;">
|
|
<view v-show="sizeForm.arriveTime" style="margin-right: 20px;">{{sizeForm.arriveTime}}</view>
|
|
<view @tap="show = true">请选择</view>
|
|
</view>
|
|
</u-form>
|
|
<view class="backgro"></view>
|
|
<view>
|
|
<view style="display: flex;justify-content: space-between;">
|
|
<view style="display: flex;width: 80%;overflow-x: scroll;">
|
|
<view v-for="(item, index) in sizeForm.volumeList" :key="index"
|
|
@click="selectButton('button' + index)" :class="selectedButton === 'button' + index ? 'activeVolume' : 'noActiveVolume'" class="volume">
|
|
{{"箱规" + "("+(index -0 +1)+")"}}
|
|
</view>
|
|
</view>
|
|
<view style="display: flex;padding:10rpx 0; position: relative;">
|
|
<!-- src="@/static/images/common/background.png" -->
|
|
<view @click="addList" style="color:#1A4F94 ;">添加箱规</view>
|
|
<image src="@/static/images/common/background.png" class="img"></image>
|
|
</view>
|
|
</view>
|
|
<u-form labelPosition="top" labelWidth="120" :model="sizeForm" :rules="rules" ref="ruleFormRef">
|
|
<view v-for="(item, index) in sizeForm.volumeList" :key="index">
|
|
<view v-show="selectedButton === 'button' + index">
|
|
<u-form-item label="长(CM)" :prop="'volumeList.'+index+'.length'" :required="true"
|
|
:target="item">
|
|
<u-input v-model="item.length" type="number" placeholder="请输入" />
|
|
</u-form-item>
|
|
<u-form-item label="宽(CM)" :prop="'volumeList.'+index+'.width'" :required="true"
|
|
:target="item">
|
|
<u-input v-model="item.width" type="number" placeholder="请输入" />
|
|
</u-form-item>
|
|
<u-form-item label="高(CM)" :prop="'volumeList.'+index+'.height'" :required="true"
|
|
:target="item">
|
|
<u-input v-model="item.height" type="number" placeholder="请输入" />
|
|
</u-form-item>
|
|
<u-form-item label="重量(KG)" :prop="'volumeList.'+index+'.weight'" :required="true"
|
|
:target="item">
|
|
<u-input v-model="item.weight" type="number" placeholder="请输入" />
|
|
</u-form-item>
|
|
<u-form-item label="件数" :prop="'volumeList.'+index+'.number'" :required="true"
|
|
:target="item">
|
|
<u-input v-model="item.number" type="number" placeholder="请输入" />
|
|
</u-form-item>
|
|
<view @click="delVolume(index)" style="text-align: center;color: #FF5133;">删除箱规</view>
|
|
</view>
|
|
|
|
|
|
</view>
|
|
</u-form>
|
|
</view>
|
|
<button type="primary" class="btn" @click="submitData">提交材积</button>
|
|
</view>
|
|
<u-toast ref="uToast"></u-toast>
|
|
</view>
|
|
</template>
|
|
<script>
|
|
import store from '@/store/index'
|
|
import Api from '@/api/api.js'
|
|
export default {
|
|
data() {
|
|
return {
|
|
ruleForm: {
|
|
warehouseId: store.state.userInfo.branchId,
|
|
orderNo: "",
|
|
orderNos: [],
|
|
workType: "1",
|
|
location: "",
|
|
number: "",
|
|
userId: "",
|
|
|
|
},
|
|
form: {
|
|
spec: "",
|
|
orderId: ""
|
|
},
|
|
|
|
sizeForm: {
|
|
arriveTime:'',
|
|
volumeList: [{
|
|
length: "",
|
|
number:"",
|
|
weight:"",
|
|
height:"",
|
|
width:""
|
|
}],
|
|
time: ""
|
|
},
|
|
rules: {
|
|
volumeList: []
|
|
|
|
},
|
|
sizeFormRules: {
|
|
length: {
|
|
type: 'string',
|
|
required: true,
|
|
message: '请输入长度',
|
|
trigger: ['change', 'blur'],
|
|
},
|
|
number: {
|
|
type: 'string',
|
|
required: true,
|
|
message: '请输入件数',
|
|
trigger: ['change', 'blur'],
|
|
},
|
|
|
|
weight: {
|
|
type: 'string',
|
|
required: true,
|
|
message: '请输入重量',
|
|
trigger: ['change', 'blur'],
|
|
},
|
|
|
|
height: {
|
|
type: 'string',
|
|
required: true,
|
|
message: '请输入高度',
|
|
trigger: ['change', 'blur'],
|
|
},
|
|
|
|
width: {
|
|
type: 'string',
|
|
required: true,
|
|
message: '请输入宽度',
|
|
trigger: ['change', 'blur'],
|
|
},
|
|
|
|
|
|
|
|
},
|
|
selectedButton: "button0",
|
|
show: false,
|
|
time: ""
|
|
}
|
|
},
|
|
onLoad(op) {
|
|
if (op.data) {
|
|
const resData = JSON.parse(op.data)
|
|
this.form.spec = resData.spec
|
|
this.form.orderId = resData.orderId
|
|
this.form.orderNo = resData.orderNo
|
|
}
|
|
this.rules.volumeList.unshift(this.sizeFormRules)
|
|
this.onDatetimeChange({value:Number(new Date())})
|
|
this.sizeForm.time = Number(new Date())
|
|
},
|
|
|
|
methods: {
|
|
selectButton(button) {
|
|
this.selectedButton = button;
|
|
},
|
|
|
|
delVolume(index){
|
|
if(this.sizeForm.volumeList.length == 1){
|
|
this.$refs.uToast.show({
|
|
type: 'warning',
|
|
message: "只有一条,不可删除",
|
|
})
|
|
return
|
|
}
|
|
this.sizeForm.volumeList.splice(index, 1);
|
|
this.selectedButton = "button0"
|
|
},
|
|
addList() {
|
|
this.sizeForm.volumeList.push({
|
|
length: "",
|
|
number:"",
|
|
weight:"",
|
|
height:"",
|
|
width:""
|
|
})
|
|
this.rules.volumeList.unshift(this.sizeFormRules)
|
|
},
|
|
leftClick() {},
|
|
onDatetimeChange(e) {
|
|
const selectedTime = new Date(e.value)
|
|
let year = selectedTime.getFullYear()
|
|
let month = selectedTime.getMonth() + 1 + ""
|
|
let day = selectedTime.getDate() + ""
|
|
let hour = selectedTime.getHours() + ""
|
|
let minute = selectedTime.getMinutes() + ""
|
|
if (month.length < 2) {
|
|
month = '0' + month
|
|
}
|
|
if (day.length < 2) {
|
|
day = '0' + day
|
|
}
|
|
if (hour.length < 2) {
|
|
hour = '0' + hour
|
|
}
|
|
if (minute.length < 2) {
|
|
minute = '0' + minute
|
|
}
|
|
this.sizeForm.arriveTime = `${year}-${month}-${day} ${hour}:${minute}:00`
|
|
this.show = false
|
|
},
|
|
submitData() {
|
|
if(!this.sizeForm.arriveTime){
|
|
this.$refs.uToast.show({
|
|
type: 'warning',
|
|
message: "请选择到仓时间",
|
|
})
|
|
return
|
|
}
|
|
this.$refs.ruleFormRef.validate().then(res => {
|
|
const queryData = {
|
|
orderNo:this.form.orderNo,
|
|
orderId: this.form.orderId,
|
|
orderSpecGroupList: [
|
|
{
|
|
arriveTime: this.sizeForm.arriveTime,
|
|
orderSpecList: this.sizeForm.volumeList
|
|
}
|
|
]
|
|
}
|
|
Api.storge.orderSpecInsert(queryData).then(res => {
|
|
this.ruleForm.orderNos = []
|
|
this.form.inNo = ""
|
|
this.orderNosList = []
|
|
uni.navigateTo({
|
|
url: "/pages/outStock/palletizing?name=recordingVolume"
|
|
})
|
|
})
|
|
})
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
<style lang="scss" scoped>
|
|
.box-container {
|
|
.entry-info {
|
|
width: 90%;
|
|
margin: auto;
|
|
margin-top: 230rpx;
|
|
|
|
.info {
|
|
margin-top: 30rpx;
|
|
}
|
|
|
|
.btn {
|
|
border-radius: 12px;
|
|
font-size: 28rpx;
|
|
margin: 60rpx 0;
|
|
background-color: #1A4F94;
|
|
}
|
|
|
|
.backgro {
|
|
margin-top: 20rpx;
|
|
width: 100%;
|
|
height: 44rpx;
|
|
background-color: #FBFCFE;
|
|
}
|
|
|
|
.activeVolume {
|
|
width: 120rpx;
|
|
padding: 10rpx 0;
|
|
margin-right: 13px;
|
|
flex-shrink: 0;
|
|
border-radius: 1px;
|
|
border-bottom: 2px solid #1A4F94;
|
|
}
|
|
|
|
.noActiveVolume{
|
|
width: 120rpx;
|
|
padding: 10rpx 0;
|
|
margin-right: 13px;
|
|
box-sizing: border-box;
|
|
flex-shrink: 0
|
|
}
|
|
|
|
.img {
|
|
position: absolute;
|
|
left: -47rpx;
|
|
width: 50rpx;
|
|
height: 60rpx;
|
|
opacity: 0.8;
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
</style> |