拷贝铜箔手持
This commit is contained in:
325
pages/WarehouseManage/CheckDtl.vue
Normal file
325
pages/WarehouseManage/CheckDtl.vue
Normal file
@@ -0,0 +1,325 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar :inner2="true" @goIn="goIn" title="盘点明细"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val1"
|
||||
:focused="focusedStatus"
|
||||
@handleChange="handleChange"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">已盘点数</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="text" class="filter_input" v-model="val2" disabled>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">未盘点数</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="text" class="filter_input" v-model="val3" disabled>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>选择</th>
|
||||
<th>箱号</th>
|
||||
<th>状态</th>
|
||||
<th>净重</th>
|
||||
<!-- <th>数量</th>
|
||||
<th>盘点数量</th> -->
|
||||
<th>盘点库区</th>
|
||||
<th>盘点货位</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>备注</th>
|
||||
<th>卷数</th>
|
||||
<th>盘点结果</th>
|
||||
<th>盘点人</th>
|
||||
<th>盘点时间</th>
|
||||
<th>单据号</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(el, i) in dataList" :key="i" :class="{'checked': el.checked}">
|
||||
<td><span class="iconfont icon_unchecked" :class="{'icon_checked': el.checked}" @tap="toCheck(el)"></span></td>
|
||||
<td style="text-decoration: underline;" @tap="toXq(el.storagevehicle_code)"><a>{{el.storagevehicle_code}}</a></td>
|
||||
<td>{{el.status}}</td>
|
||||
<td>{{el.net_qty}}</td>
|
||||
<!-- <td>{{el.base_qty}}</td>
|
||||
<td><input type="number" class="sin_input" :min="0" v-model="el.fac_qty" @blur="e => {if (e.target.value === '') {el.fac_qty=0}}" v-enter-number></td> -->
|
||||
<td>{{el.sect_name}}</td>
|
||||
<td>{{el.struct_name}}</td>
|
||||
<td>{{el.material_code}}</td>
|
||||
<td>{{el.material_name}}</td>
|
||||
<td @tap="toRemark(el)"><input type="text" class="sin_input" v-model="el.remark"></td>
|
||||
<td>{{el.quanlity_in_box}}</td>
|
||||
<td>{{el.check_result}}</td>
|
||||
<td>{{el.check_optname}}</td>
|
||||
<td>{{el.check_time}}</td>
|
||||
<td>{{el.check_code}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<!-- <button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_saveCheck">保存</button> -->
|
||||
<!-- <button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_confirmCheck">确认</button> -->
|
||||
<button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_checkexception">异常</button>
|
||||
<button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_checknormal">正常</button>
|
||||
<button class="submit-button" @tap="_checkQueryDtl(checkCode, val1)">查询</button>
|
||||
</view>
|
||||
<view v-show="modelShow" class="msg_wrapper">
|
||||
<view class="msg_box">
|
||||
<view class="msg_item">
|
||||
<view class="filter_label">备注</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="text" class="msg_input" v-model="val0">
|
||||
</view>
|
||||
</view>
|
||||
<view class="msg_btns">
|
||||
<button class="submit-button" @tap="toSurerk">确定</button>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-show="modelShow" class="mask"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {checkQueryDtl, checkexception, checknormal} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
focusedStatus: true,
|
||||
modelShow: false,
|
||||
value: '1',
|
||||
val0: '',
|
||||
val1: '',
|
||||
val2: '',
|
||||
val3: '',
|
||||
checkCode: '',
|
||||
dataList: [],
|
||||
// dataList : [{
|
||||
// checked: false,
|
||||
// storagevehicle_code: '1',
|
||||
// status: '1',
|
||||
// net_qty: '1',
|
||||
// sect_name: '1',
|
||||
// struct_name: '1',
|
||||
// material_code: '1',
|
||||
// material_name: '1',
|
||||
// remark: '3342',
|
||||
// }],
|
||||
checkArr: [],
|
||||
disabled1: false,
|
||||
obj: {}
|
||||
};
|
||||
},
|
||||
created () {
|
||||
},
|
||||
onLoad (option) {
|
||||
this.checkCode = option.checkcode
|
||||
// this._checkQueryDtl()
|
||||
},
|
||||
methods: {
|
||||
goIn () {
|
||||
uni.navigateTo({
|
||||
url: `/pages/WarehouseManage/CheckList`
|
||||
})
|
||||
},
|
||||
handleChange (e) {
|
||||
this._checkQueryDtl(e)
|
||||
},
|
||||
toRemark (e) {
|
||||
this.val0 = e.remark
|
||||
this.obj = e
|
||||
this.modelShow = true
|
||||
},
|
||||
toSurerk () {
|
||||
this.modelShow = false
|
||||
this.dataList.map(el => {
|
||||
if (this.obj.storagevehicle_code === el.storagevehicle_code) {
|
||||
el.remark = this.val0
|
||||
}
|
||||
})
|
||||
},
|
||||
toXq (code) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/Details?storagevehicle_code=' + code + '&checkcode=' + this.checkCode
|
||||
})
|
||||
},
|
||||
toCheck (e) {
|
||||
e.checked = !e.checked
|
||||
this.checkArr = this.dataList.filter(i => { return i.checked === true })
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _checkQueryDtl () {
|
||||
let res = await checkQueryDtl(this.checkCode, this.val1)
|
||||
this.val2 = res.check_num
|
||||
this.val3 = res.uncheck_num
|
||||
res.data.map(el => {
|
||||
this.$set(el, 'checked', false)
|
||||
})
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
async _checkexception () {
|
||||
this.disabled1 = true
|
||||
try {
|
||||
let res = await checkexception(this.checkArr, this.checkCode)
|
||||
this.disabled1 = false
|
||||
this.checkArr = []
|
||||
this.dataList = []
|
||||
this.obj = {}
|
||||
this.val0 = ''
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.val3 = ''
|
||||
this.focusedStatus = true
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
},
|
||||
async _checknormal () {
|
||||
this.disabled1 = true
|
||||
try {
|
||||
let res = await checknormal(this.checkArr, this.checkCode)
|
||||
this.disabled1 = false
|
||||
this.checkArr = []
|
||||
this.dataList = []
|
||||
this.obj = {}
|
||||
this.val0 = ''
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.val3 = ''
|
||||
this.focusedStatus = true
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus" scoped>
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
// .slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
// box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
// .slide_new table td:first-child, .slide_new table th:first-child
|
||||
// width 92rpx
|
||||
// // .slide_new table td:nth-child(2), .slide_new table th:nth-child(2)
|
||||
// // position sticky
|
||||
// // left 89rpx
|
||||
// // z-index 102
|
||||
// // box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.msg_wrapper
|
||||
position fixed
|
||||
top 0
|
||||
bottom 0
|
||||
left 0
|
||||
right 0
|
||||
text-align center
|
||||
z-index 10000
|
||||
&::after
|
||||
content ""
|
||||
display inline-block
|
||||
height 100%
|
||||
width 0
|
||||
vertical-align middle
|
||||
.msg_box
|
||||
display inline-block
|
||||
width calc(100% - 30rpx)
|
||||
padding 30rpx
|
||||
vertical-align middle
|
||||
background-color #fff
|
||||
border-radius 8rpx
|
||||
border 1px solid #ebeef5
|
||||
font-size 36rpx
|
||||
box-shadow 0 2px 12px 0 rgb(0 0 0 / 10%)
|
||||
text-align left
|
||||
overflow hidden
|
||||
backface-visibility hidden
|
||||
.buttonbox
|
||||
width 100px
|
||||
height 30px
|
||||
margin-top 20px
|
||||
margin 0 auto
|
||||
.mask
|
||||
position fixed
|
||||
top 0
|
||||
left 0
|
||||
width 100%
|
||||
height 100%
|
||||
opacity .6
|
||||
background #000
|
||||
z-index 9999
|
||||
.msg_item
|
||||
display flex
|
||||
justify-content: space-between
|
||||
align-items: center
|
||||
width 100%
|
||||
height 80rpx
|
||||
line-height 80rpx
|
||||
margin 0 auto
|
||||
margin-bottom 14rpx
|
||||
.label_item
|
||||
display inline-block
|
||||
width 180rpx
|
||||
font-size 32rpx
|
||||
line-height inherit
|
||||
color #606266
|
||||
.from_item
|
||||
display inline-block
|
||||
width calc(100% - 200rpx)
|
||||
line-height inherit
|
||||
.msg_input
|
||||
width 100%
|
||||
height 80rpx
|
||||
padding 0 30rpx
|
||||
border-radius 4px
|
||||
border 1px solid #DCDFE6
|
||||
font-size 28rpx
|
||||
line-height 80rpx
|
||||
color #606266
|
||||
.msg_btns
|
||||
width 600rpx
|
||||
height 70rpx
|
||||
line-height 70rpx
|
||||
margin 40rpx auto 0
|
||||
display flex
|
||||
justify-content: center
|
||||
align-items: center
|
||||
.submit-bar
|
||||
justify-content space-around
|
||||
.submit-button
|
||||
margin-left 20rpx
|
||||
margin-right 20rpx
|
||||
</style>
|
||||
120
pages/WarehouseManage/CheckList.vue
Normal file
120
pages/WarehouseManage/CheckList.vue
Normal file
@@ -0,0 +1,120 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="盘点管理"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">单据编码</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="text" class="filter_input" v-model="val1">
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">仓库</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>单据号</th>
|
||||
<th>单据类型</th>
|
||||
<th>仓库名称</th>
|
||||
<th>明细数</th>
|
||||
<th>状态</th>
|
||||
<th>是否异常</th>
|
||||
<th>创建人</th>
|
||||
<th>创建时间</th>
|
||||
<th>确认人</th>
|
||||
<th>确认时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.check_code === pkId}">
|
||||
<td>{{e.check_code}}</td>
|
||||
<td>{{e.check_type}}</td>
|
||||
<td>{{e.stor_name}}</td>
|
||||
<td>{{e.dtl_num}}</td>
|
||||
<td>{{e.status}}</td>
|
||||
<td>{{e.is_nok}}</td>
|
||||
<td>{{e.input_optname}}</td>
|
||||
<td>{{e.input_time}}</td>
|
||||
<td>{{e.confirm_optname}}</td>
|
||||
<td>{{e.confirm_time}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled1" @tap="toPandian">盘点</button>
|
||||
<button class="submit-button" @tap="_checkQuery">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import {checkQuery, checkgetStor} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
pkObj: {},
|
||||
options: [],
|
||||
index: '1582991156504039424', // 默认兰州仓库
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._checkgetStor()
|
||||
this._checkQuery()
|
||||
},
|
||||
methods: {
|
||||
/** 初始化查询 */
|
||||
async _checkQuery () {
|
||||
let res = await checkQuery(this.val1, this.index)
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 选择器 */
|
||||
selectChange(e) {
|
||||
this.index = e
|
||||
},
|
||||
/** 仓库下拉框查询 */
|
||||
async _checkgetStor () {
|
||||
let res = await checkgetStor()
|
||||
this.options = [...res.data]
|
||||
},
|
||||
toPandian () {
|
||||
if (this.pkId) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/CheckDtl?checkcode=' + this.pkObj.check_code + '&checknum=' + this.pkObj.check_num + '&unchecknum=' + this.pkObj.uncheck_num
|
||||
})
|
||||
}
|
||||
},
|
||||
toCheck (e) {
|
||||
this.pkId = this.pkId === e.check_code ? '' : e.check_code
|
||||
this.pkObj = this.pkId === e.check_code ? e : {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
125
pages/WarehouseManage/CustomerLabelPrint.vue
Normal file
125
pages/WarehouseManage/CustomerLabelPrint.vue
Normal file
@@ -0,0 +1,125 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="客户标签打印"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val1"
|
||||
:focused="true"
|
||||
@handleChange="handleChange"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱码</th>
|
||||
<th>卷数</th>
|
||||
<th>木箱毛重</th>
|
||||
<th>销售订单及行号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>规格</th>
|
||||
<th>子卷号</th>
|
||||
<th>净重</th>
|
||||
<th>入库日期</th>
|
||||
<th>生产日期</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td>{{e.package_box_sn}}</td>
|
||||
<td>{{e.quanlity_in_box}}</td>
|
||||
<td>{{e.box_weight}}</td>
|
||||
<td>{{e.sale_order_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<td>{{e.width}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.net_weight}}</td>
|
||||
<td>{{e.date_of_FG_inbound}}</td>
|
||||
<td>{{e.date_of_production}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1}" :disabled="disabled2" @tap="_customerPrint">打印</button>
|
||||
<button class="submit-button" @tap="_customerInfo(val1)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {customerInfo, customerPrint} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
dataList: [],
|
||||
disabled1: false,
|
||||
disabled2: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleChange (e) {
|
||||
this._customerInfo(e)
|
||||
},
|
||||
/** 查询 */
|
||||
async _customerInfo (e) {
|
||||
if (!this.val1) {
|
||||
uni.showToast({
|
||||
title: '请扫木箱码',
|
||||
icon: 'none'
|
||||
})
|
||||
return
|
||||
}
|
||||
let res = await customerInfo(e)
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 打印 */
|
||||
async _customerPrint () {
|
||||
this.disabled2 = true
|
||||
if (!this.val1) {
|
||||
uni.showToast({
|
||||
title: '请扫木箱码',
|
||||
icon: 'none'
|
||||
})
|
||||
this.disabled2 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await customerPrint(this.val1, this.$store.getters.setPrintName)
|
||||
this.disabled2 = false
|
||||
this.val1 = ''
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled2 = false
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
|
||||
</style>
|
||||
103
pages/WarehouseManage/Details.vue
Normal file
103
pages/WarehouseManage/Details.vue
Normal file
@@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar :inner2="true" @goIn="goIn" title="详情信息"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>子卷号</th>
|
||||
<th>sap批次</th>
|
||||
<th>净重</th>
|
||||
<th>状态</th>
|
||||
<th>订单号</th>
|
||||
<th>客户编码</th>
|
||||
<th>客户名称</th>
|
||||
<th>幅宽</th>
|
||||
<th>厚度</th>
|
||||
<th>长度</th>
|
||||
<th>客户要求幅宽</th>
|
||||
<th>物料标准厚度</th>
|
||||
<th>保质期</th>
|
||||
<th>制造完成日期</th>
|
||||
<th>入库日期</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(el, i) in dataList" :key="i">
|
||||
<td>{{el.container_name}}</td>
|
||||
<td>{{el.sap_pcsn}}</td>
|
||||
<td>{{el.net_weight}}</td>
|
||||
<td>{{el.status}}</td>
|
||||
<td>{{el.sale_order_name}}</td>
|
||||
<td>{{el.customer_name}}</td>
|
||||
<td>{{el.customer_description}}</td>
|
||||
<td>{{el.width}}</td>
|
||||
<td>{{el.thickness}}</td>
|
||||
<td>{{el.length}}</td>
|
||||
<td>{{el.width_standard}}</td>
|
||||
<td>{{el.thickness_request}}</td>
|
||||
<td>{{el.quality_guaran_period}}</td>
|
||||
<td>{{el.date_of_production}}</td>
|
||||
<td>{{el.date_of_fg_inbound}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<!-- <button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_saveCheck">保存</button> -->
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import {checkQueryDetails} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
checkCode: '',
|
||||
storagevehicleCode: '',
|
||||
dataList: [],
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
created () {
|
||||
},
|
||||
onLoad (option) {
|
||||
this.checkCode = option.checkcode
|
||||
this.storagevehicleCode = option.storagevehicle_code
|
||||
this._checkQueryDetails()
|
||||
},
|
||||
methods: {
|
||||
goIn () {
|
||||
uni.navigateTo({
|
||||
url: `/pages/WarehouseManage/CheckDtl`
|
||||
})
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/CheckDtl?checkcode=' + this.checkCode
|
||||
})
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _checkQueryDetails () {
|
||||
let res = await checkQueryDetails(this.storagevehicleCode)
|
||||
this.dataList = [...res.data]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
74
pages/WarehouseManage/EmptyInStore.vue
Normal file
74
pages/WarehouseManage/EmptyInStore.vue
Normal file
@@ -0,0 +1,74 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="空载具入库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">站点码</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val1" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">载具码</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val2" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || !val2}" :disabled="disabled1" @tap="_emptyVehiclepointOperate">入库</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {emptyVehiclepointOperate} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleChange (e) {
|
||||
console.log(e)
|
||||
},
|
||||
async _emptyVehiclepointOperate () {
|
||||
this.disabled1 = true
|
||||
if (!this.val1 || !this.val2) {
|
||||
this.disabled1 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await emptyVehiclepointOperate(this.val1, this.val2, '1')
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.disabled1 = false
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
82
pages/WarehouseManage/EmptyOutStore.vue
Normal file
82
pages/WarehouseManage/EmptyOutStore.vue
Normal file
@@ -0,0 +1,82 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="空载具出库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">站点码</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val1" @handleChange="handleChange1"/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">载具码</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val2" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || !val2}" :disabled="disabled1" @tap="_emptyVehiclepointOperate">出库</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {emptyVehiclepointOperate, emptyVehiclepointStatusQuery} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleChange1 (e) {
|
||||
this._emptyVehiclepointStatusQuery(e)
|
||||
},
|
||||
/** 1.2点位状态查询 */
|
||||
async _emptyVehiclepointStatusQuery (val1) {
|
||||
if (!val1) {
|
||||
return
|
||||
}
|
||||
let res = await emptyVehiclepointStatusQuery(val1)
|
||||
this.val2 = res.data.vehicle_code
|
||||
},
|
||||
async _emptyVehiclepointOperate () {
|
||||
this.disabled1 = true
|
||||
if (!this.val1 || !this.val2) {
|
||||
this.disabled1 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await emptyVehiclepointOperate(this.val1, this.val2, '0')
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.disabled1 = false
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
80
pages/WarehouseManage/ErrorOutUnlock.vue
Normal file
80
pages/WarehouseManage/ErrorOutUnlock.vue
Normal file
@@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="异常出库解锁"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val1" :focused="true" @handleChange="handleChange1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val2" @handleChange="handleChange2" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 && !val2}" :disabled="disabled1" @tap="_abnormalOut">解锁</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {abnormalOut} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
handleChange1 (e) {
|
||||
},
|
||||
handleChange2 (e) {
|
||||
},
|
||||
async _abnormalOut () {
|
||||
this.disabled1 = true
|
||||
if (!this.val1 && !this.val2) {
|
||||
this.disabled1 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await abnormalOut(this.val1, this.val2)
|
||||
this.disabled1 = false
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
210
pages/WarehouseManage/InStoreConfirm.vue
Normal file
210
pages/WarehouseManage/InStoreConfirm.vue
Normal file
@@ -0,0 +1,210 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="生产入库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box-mx :focused="focused" @inputDel="inputDel" @inputScan="inputScan" @toPhone="toPhone">
|
||||
<input type="text" class="filter_input search_input" v-model="val1" :focus="focused" @input="onKeyInput" @focus="onFocus" @blur="onBlur">
|
||||
</search-box-mx>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label filter_label_1"></span>
|
||||
</view>
|
||||
<view class="filter_input_wraper filter_input_wraper_1">
|
||||
<view class="iconfont icon_unchecked" :class="{'icon_checked': isV === '1'}" @tap="isVirtual"></view>
|
||||
<view class="filter_input_wraper_inn_text">虚拟库</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-show="isV === '1'" class="filter_item">
|
||||
<view class="filter_label">库区</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index1" :localdata="options1" @change="selectChange1"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱码</th>
|
||||
<th>子卷号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>重量KG</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td>{{e.package_box_sn}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<td>{{e.net_weight}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || dataList.length === 0 || (isV === '1' && index1 === '')}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
|
||||
<!-- <button class="submit-button" :class="{'btn-disabled': dataList.length === 0}" :disabled="disabled1" @tap="_stPrint">补码</button> -->
|
||||
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import SearchBoxMx from '@/components/SearchBoxMx.vue'
|
||||
import permision from "@/utils/permission.js"
|
||||
import {boxQuery, stConfirm, stPrint, getStorSect} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox,
|
||||
SearchBoxMx
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
isV: '0',
|
||||
options1: [],
|
||||
index1: '',
|
||||
dataList: [],
|
||||
disabled: false,
|
||||
disabled1: false,
|
||||
focused: true
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._getStorSect()
|
||||
},
|
||||
mounted () {
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 500)
|
||||
},
|
||||
methods: {
|
||||
/** 虚拟库 */
|
||||
isVirtual () {
|
||||
this.isV = this.isV === '0' ? '1' : '0'
|
||||
},
|
||||
/** 选择器1 */
|
||||
selectChange1(e) {
|
||||
this.index1 = e
|
||||
},
|
||||
/** 库区下拉框查询 */
|
||||
async _getStorSect () {
|
||||
let res = await getStorSect()
|
||||
this.options1 = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _boxQuery (e) {
|
||||
let res = await boxQuery(e, '2')
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 确认 */
|
||||
async _stConfirm () {
|
||||
this.disabled = true
|
||||
if (!this.val1 || this.dataList.length === 0 || (this.isV === '1' && this.index1 === '')) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stConfirm(this.dataList, this.val2, '2', this.isV, '', this.val1, this.index1)
|
||||
this.disabled = false
|
||||
// this._boxQuery(this.val1)
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.isV = '0'
|
||||
this.index1 = ''
|
||||
this.dataList = []
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
/** 补码 */
|
||||
async _stPrint () {
|
||||
this.disabled1 = true
|
||||
if (this.dataList.length === 0) {
|
||||
this.disabled1 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stPrint(this.dataList)
|
||||
this.disabled1 = false
|
||||
this._boxQuery(this.val1)
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
},
|
||||
onKeyInput (event) {
|
||||
var value = event.detail.value
|
||||
value=value.replace(/[^\w\.\/]/ig,'')
|
||||
if (value.length !== 14) {
|
||||
this.$nextTick(() => {
|
||||
this.val1 = ''
|
||||
})
|
||||
uni.hideKeyboard()
|
||||
return
|
||||
}
|
||||
uni.hideKeyboard()
|
||||
this._boxQuery(this.val1)
|
||||
},
|
||||
onFocus () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
onBlur () {
|
||||
this.focused = false
|
||||
},
|
||||
inputDel () {
|
||||
this.val1 = ''
|
||||
},
|
||||
inputScan () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
toPhone (e) {
|
||||
this.val1 = e
|
||||
this._boxQuery(this.val1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
208
pages/WarehouseManage/InStoreSplit.vue
Normal file
208
pages/WarehouseManage/InStoreSplit.vue
Normal file
@@ -0,0 +1,208 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="拆分入库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box-mx :focused="focused" @inputDel="inputDel" @inputScan="inputScan" @toPhone="toPhone">
|
||||
<input type="text" class="filter_input search_input" v-model="val1" :focus="focused" @input="onKeyInput" @focus="onFocus" @blur="onBlur">
|
||||
</search-box-mx>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label filter_label_1"></span>
|
||||
</view>
|
||||
<view class="filter_input_wraper filter_input_wraper_1">
|
||||
<view class="iconfont icon_unchecked" :class="{'icon_checked': isV === '1'}" @tap="isVirtual"></view>
|
||||
<view class="filter_input_wraper_inn_text">虚拟库</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-show="isV === '1'" class="filter_item">
|
||||
<view class="filter_label">库区</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index1" :localdata="options1" @change="selectChange1"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱码</th>
|
||||
<th>子卷号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>重量KG</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td>{{e.package_box_sn}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<td>{{e.net_weight}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || dataList.length === 0 || (isV === '1' && index1 === '')}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
|
||||
<button class="submit-button" :class="{'btn-disabled': dataList.length === 0}" :disabled="disabled1" @tap="_stPrint">补码</button>
|
||||
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import SearchBoxMx from '@/components/SearchBoxMx.vue'
|
||||
import {boxQuery, stConfirm, stPrint, getStorSect} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox,
|
||||
SearchBoxMx
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
isV: '0',
|
||||
options1: [],
|
||||
index1: '',
|
||||
dataList: [],
|
||||
disabled: false,
|
||||
disabled1: false,
|
||||
focused: true
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._getStorSect()
|
||||
},
|
||||
mounted () {
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 500)
|
||||
},
|
||||
methods: {
|
||||
/** 虚拟库 */
|
||||
isVirtual () {
|
||||
this.isV = this.isV === '0' ? '1' : '0'
|
||||
},
|
||||
/** 选择器1 */
|
||||
selectChange1(e) {
|
||||
this.index1 = e
|
||||
},
|
||||
/** 库区下拉框查询 */
|
||||
async _getStorSect () {
|
||||
let res = await getStorSect()
|
||||
this.options1 = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _boxQuery (e) {
|
||||
let res = await boxQuery(e, '4')
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 确认 */
|
||||
async _stConfirm () {
|
||||
this.disabled = true
|
||||
if (!this.val1 || this.dataList.length === 0 || (this.isV === '1' && this.index1 === '')) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stConfirm(this.dataList, this.val2, '4', this.isV, '', this.val1, this.index1)
|
||||
this.disabled = false
|
||||
// this._boxQuery(this.val1)
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.isV = '0'
|
||||
this.dataList = []
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
/** 补码 */
|
||||
async _stPrint () {
|
||||
this.disabled1 = true
|
||||
if (this.dataList.length === 0) {
|
||||
this.disabled1 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stPrint(this.dataList)
|
||||
this.disabled1 = false
|
||||
this._boxQuery(this.val1)
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
},
|
||||
onKeyInput (event) {
|
||||
var value = event.detail.value
|
||||
value=value.replace(/[^\w\.\/]/ig,'')
|
||||
if (value.length !== 14) {
|
||||
this.$nextTick(() => {
|
||||
this.val1 = ''
|
||||
})
|
||||
uni.hideKeyboard()
|
||||
return
|
||||
}
|
||||
uni.hideKeyboard()
|
||||
this._boxQuery(this.val1)
|
||||
},
|
||||
onFocus () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
onBlur () {
|
||||
this.focused = false
|
||||
},
|
||||
inputDel () {
|
||||
this.val1 = ''
|
||||
},
|
||||
inputScan () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
toPhone (e) {
|
||||
this.val1 = e
|
||||
this._boxQuery(this.val1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
103
pages/WarehouseManage/LabelBind.vue
Normal file
103
pages/WarehouseManage/LabelBind.vue
Normal file
@@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="贴标捆扎"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">重量</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="number" class="filter_input" v-model="val3">
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || !val3 }" :disabled="disabled1" @tap="_mendCode">贴标</button>
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || !val2}" :disabled="disabled2" @tap="_stBale">捆扎</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {mendCode, stBale} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
val3: '',
|
||||
disabled1: false,
|
||||
disabled2: false
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
async _mendCode () {
|
||||
this.disabled1 = true
|
||||
if (!this.val1 || !this.val3) {
|
||||
this.disabled1 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await mendCode(this.val1, this.val3)
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
this.val1 = ''
|
||||
this.val3 = ''
|
||||
this.disabled1 = false
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
},
|
||||
async _stBale () {
|
||||
this.disabled2 = true
|
||||
if (!this.val1 || !this.val2) {
|
||||
this.disabled2 = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stBale(this.val1, this.val2)
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.disabled2 = false
|
||||
} catch (e) {
|
||||
this.disabled2 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
132
pages/WarehouseManage/ProdDelivery.vue
Normal file
132
pages/WarehouseManage/ProdDelivery.vue
Normal file
@@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="生产区发货"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val1" :focused="true" @handleChange="handleChange1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">单据号</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val2" @handleChange="handleChange2" />
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>单据号</th>
|
||||
<th>状态</th>
|
||||
<th>总重量</th>
|
||||
<th>总净重</th>
|
||||
<th>明细数</th>
|
||||
<th>客户编码</th>
|
||||
<th>客户名称</th>
|
||||
<th>交货单</th>
|
||||
<th>备注</th>
|
||||
<th>创建人</th>
|
||||
<th>创建时间</th>
|
||||
<th>分配人</th>
|
||||
<th>分配时间</th>
|
||||
<th>确认人</th>
|
||||
<th>确认时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.bill_code === pkId}">
|
||||
<td>{{e.bill_code}}</td>
|
||||
<td>{{e.bill_status}}</td>
|
||||
<td>{{e.total_qty}}</td>
|
||||
<td>{{e.net_weight_num}}</td>
|
||||
<td>{{e.detail_count}}</td>
|
||||
<td>{{e.cust_code}}</td>
|
||||
<td>{{e.cust_name}}</td>
|
||||
<td>{{e.source_id}}</td>
|
||||
<td>{{e.remark}}</td>
|
||||
<td>{{e.input_optname}}</td>
|
||||
<td>{{e.input_time}}</td>
|
||||
<td>{{e.dis_optname}}</td>
|
||||
<td>{{e.dis_time}}</td>
|
||||
<td>{{e.confirm_optname}}</td>
|
||||
<td>{{e.confirm_time}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled1" @tap="toSure">确认</button>
|
||||
<button class="submit-button" @tap="_stivtQuery(val1, val2)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {stivtQuery} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
pkObj: {},
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._stivtQuery(this.val1, this.val2)
|
||||
},
|
||||
methods: {
|
||||
handleChange1 (e) {
|
||||
this._stivtQuery(e, this.val2)
|
||||
},
|
||||
handleChange2 (e) {
|
||||
this._stivtQuery(this.val1, e)
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _stivtQuery (val1, val2) {
|
||||
let res = await stivtQuery(val1, val2)
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
toSure () {
|
||||
if (this.pkId) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/ProdDeliveryConfirm?billcode=' + this.pkObj.bill_code
|
||||
})
|
||||
}
|
||||
},
|
||||
toCheck (e) {
|
||||
this.pkId = this.pkId === e.bill_code ? '' : e.bill_code
|
||||
this.pkObj = this.pkId === e.bill_code ? e : {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
137
pages/WarehouseManage/ProdDeliveryConfirm.vue
Normal file
137
pages/WarehouseManage/ProdDeliveryConfirm.vue
Normal file
@@ -0,0 +1,137 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar :inner2="true" @goIn="goIn" title="生产区发货确认"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val1" :focused="focusedStatus" @handleChange="handleChange1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱号</th>
|
||||
<th>木箱毛重</th>
|
||||
<th>木箱净重</th>
|
||||
<th>产品名称</th>
|
||||
<!-- <th>序号</th> -->
|
||||
<th>点位编码</th>
|
||||
<th>点位名称</th>
|
||||
<th>产品编码</th>
|
||||
<th>订单号</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td style="text-decoration: underline;" @tap="toXq(e.package_box_sn)">{{e.package_box_sn}}</td>
|
||||
<td>{{e.box_weight}}</td>
|
||||
<td>{{e.net_weight_num}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<!-- <td>{{Number(i) + 1}}</td> -->
|
||||
<td>{{e.point_code}}</td>
|
||||
<td>{{e.point_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.sale_order_name}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<!-- <button class="submit-button" @tap="handleTest">Test</button> -->
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1}" :disabled="disabled1" @tap="_stoutConfirm">出库确认</button>
|
||||
<button class="submit-button" @tap="_stivtDtlQuery">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {stivtDtlQuery, stoutConfirm} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
focusedStatus: true,
|
||||
val1: '',
|
||||
billCode: '',
|
||||
dataList: [],
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
onLoad (option) {
|
||||
this.billCode = option.billcode
|
||||
this._stivtDtlQuery()
|
||||
},
|
||||
methods: {
|
||||
handleChange1 (e) {
|
||||
this._stivtDtlQuery()
|
||||
},
|
||||
goIn () {
|
||||
uni.navigateTo({
|
||||
url: `/pages/WarehouseManage/ProdDelivery`
|
||||
})
|
||||
},
|
||||
toXq (code) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/ProdDeliveryDtl?boxno=' + code + '&billcode=' + this.billCode
|
||||
})
|
||||
},
|
||||
// handleTest () {
|
||||
// this.focusedStatus = false
|
||||
// this.val1 = ''
|
||||
// setTimeout(()=>{
|
||||
// uni.showToast({
|
||||
// title: 'toast',
|
||||
// icon: 'none'
|
||||
// })
|
||||
// this.focusedStatus = true
|
||||
// },3000)
|
||||
// },
|
||||
/** 初始化查询 */
|
||||
async _stivtDtlQuery () {
|
||||
let res = await stivtDtlQuery(this.val1, this.billCode)
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
async _stoutConfirm () {
|
||||
this.focusedStatus = false
|
||||
this.disabled1 = true
|
||||
try {
|
||||
let res = await stoutConfirm(this.val1)
|
||||
this.disabled1 = false
|
||||
this.val1 = ''
|
||||
this._stivtDtlQuery()
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
this.focusedStatus = true
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
97
pages/WarehouseManage/ProdDeliveryDtl.vue
Normal file
97
pages/WarehouseManage/ProdDeliveryDtl.vue
Normal file
@@ -0,0 +1,97 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar :inner2="true" @goIn="goIn" title="木箱明细"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱号</th>
|
||||
<th>子卷号</th>
|
||||
<th>sap批次</th>
|
||||
<th>净重</th>
|
||||
<th>状态</th>
|
||||
<th>订单号</th>
|
||||
<th>客户编码</th>
|
||||
<th>客户名称</th>
|
||||
<th>幅宽</th>
|
||||
<th>厚度</th>
|
||||
<th>长度</th>
|
||||
<th>客户要求幅宽</th>
|
||||
<th>物料标准厚度</th>
|
||||
<th>保质期</th>
|
||||
<th>制造完成日期</th>
|
||||
<th>入库日期</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(el, i) in dataList" :key="i">
|
||||
<td>{{el.package_box_sn}}</td>
|
||||
<td>{{el.container_name}}</td>
|
||||
<td>{{el.sap_pcsn}}</td>
|
||||
<td>{{el.net_weight}}</td>
|
||||
<td>{{el.status}}</td>
|
||||
<td>{{el.sale_order_name}}</td>
|
||||
<td>{{el.customer_name}}</td>
|
||||
<td>{{el.customer_description}}</td>
|
||||
<td>{{el.width}}</td>
|
||||
<td>{{el.thickness}}</td>
|
||||
<td>{{el.length}}</td>
|
||||
<td>{{el.width_standard}}</td>
|
||||
<td>{{el.thickness_request}}</td>
|
||||
<td>{{el.quality_guaran_period}}</td>
|
||||
<td>{{el.date_of_production}}</td>
|
||||
<td>{{el.date_of_fg_inbound}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import {stivtbBoxDtlQuery} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
boxno: '',
|
||||
billCode: '',
|
||||
dataList: [],
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
onLoad (option) {
|
||||
this.boxno = option.boxno
|
||||
this.billCode = option.billcode
|
||||
this._stivtbBoxDtlQuery()
|
||||
},
|
||||
methods: {
|
||||
goIn () {
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/ProdDeliveryConfirm?billcode=' + this.billCode
|
||||
})
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _stivtbBoxDtlQuery () {
|
||||
let res = await stivtbBoxDtlQuery(this.boxno)
|
||||
this.dataList = [...res.data]
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
195
pages/WarehouseManage/ReturngoodsInStore.vue
Normal file
195
pages/WarehouseManage/ReturngoodsInStore.vue
Normal file
@@ -0,0 +1,195 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="退货入库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box-mx :focused="focused" @inputDel="inputDel" @inputScan="inputScan" @toPhone="toPhone">
|
||||
<input type="text" class="filter_input search_input" v-model="val1" :focus="focused" @input="onKeyInput" @focus="onFocus" @blur="onBlur">
|
||||
</search-box-mx>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label filter_label_1"></span>
|
||||
</view>
|
||||
<view class="filter_input_wraper filter_input_wraper_1">
|
||||
<view class="iconfont icon_unchecked" :class="{'icon_checked': isV === '1'}" @tap="isVirtual"></view>
|
||||
<view class="filter_input_wraper_inn_text">虚拟库</view>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="filter_item">
|
||||
<view class="filter_label">木箱料号</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="text" class="filter_input" v-model="val3">
|
||||
</view>
|
||||
</view> -->
|
||||
<view v-show="isV === '1'" class="filter_item">
|
||||
<view class="filter_label">库区</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index1" :localdata="options1" @change="selectChange1"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱码</th>
|
||||
<th>子卷号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>重量KG</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td>{{e.package_box_sn}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<td>{{e.net_weight}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || dataList.length === 0 || (isV === '1' && index1 === '')}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
|
||||
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import SearchBoxMx from '@/components/SearchBoxMx.vue'
|
||||
import {boxQuery, stConfirm, getStorSect} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox,
|
||||
SearchBoxMx
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
val3: '',
|
||||
isV: '0',
|
||||
options1: [],
|
||||
index1: '',
|
||||
dataList: [],
|
||||
disabled: false,
|
||||
focused: true
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._getStorSect()
|
||||
},
|
||||
mounted () {
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 500)
|
||||
},
|
||||
methods: {
|
||||
/** 虚拟库 */
|
||||
isVirtual () {
|
||||
this.isV = this.isV === '0' ? '1' : '0'
|
||||
},
|
||||
/** 选择器1 */
|
||||
selectChange1(e) {
|
||||
this.index1 = e
|
||||
},
|
||||
/** 库区下拉框查询 */
|
||||
async _getStorSect () {
|
||||
let res = await getStorSect()
|
||||
this.options1 = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _boxQuery (e) {
|
||||
console.log(11)
|
||||
let res = await boxQuery(e, '3')
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 确认 */
|
||||
async _stConfirm () {
|
||||
this.disabled = true
|
||||
if (!this.val1 || this.dataList.length === 0 || (this.isV === '1' && this.index1 === '')) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stConfirm(this.dataList, this.val2, '3', this.isV, this.val3, this.val1, this.index1)
|
||||
this.disabled = false
|
||||
// this._boxQuery(this.val1)
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.isV = '0'
|
||||
this.dataList = []
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
onKeyInput (event) {
|
||||
var value = event.detail.value
|
||||
value=value.replace(/[^\w\.\/]/ig,'')
|
||||
if (value.length !== 14) {
|
||||
this.$nextTick(() => {
|
||||
this.val1 = ''
|
||||
})
|
||||
uni.hideKeyboard()
|
||||
return
|
||||
}
|
||||
uni.hideKeyboard()
|
||||
this._boxQuery(this.val1)
|
||||
},
|
||||
onFocus () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
onBlur () {
|
||||
this.focused = false
|
||||
},
|
||||
inputDel () {
|
||||
this.val1 = ''
|
||||
},
|
||||
inputScan () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
toPhone (e) {
|
||||
this.val1 = e
|
||||
this._boxQuery(this.val1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
187
pages/WarehouseManage/ScrapInStore.vue
Normal file
187
pages/WarehouseManage/ScrapInStore.vue
Normal file
@@ -0,0 +1,187 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="报废入库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box-mx :focused="focused" @inputDel="inputDel" @inputScan="inputScan" @toPhone="toPhone">
|
||||
<input type="text" class="filter_input search_input" v-model="val1" :focus="focused" @input="onKeyInput" @focus="onFocus" @blur="onBlur">
|
||||
</search-box-mx>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label filter_label_1"></span>
|
||||
</view>
|
||||
<view class="filter_input_wraper filter_input_wraper_1">
|
||||
<view class="iconfont icon_unchecked" :class="{'icon_checked': isV === '1'}" @tap="isVirtual"></view>
|
||||
<view class="filter_input_wraper_inn_text">虚拟库</view>
|
||||
</view>
|
||||
</view>
|
||||
<view v-show="isV === '1'" class="filter_item">
|
||||
<view class="filter_label">库区</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index1" :localdata="options1" @change="selectChange1"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱码</th>
|
||||
<th>子卷号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>重量KG</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i">
|
||||
<td>{{e.package_box_sn}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<td>{{e.net_weight}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || dataList.length === 0 || (isV === '1' && index1 === '')}" :disabled="disabled" @tap="_stConfirm">入库确认</button>
|
||||
<button class="submit-button" @tap="_boxQuery(val1)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import SearchBoxMx from '@/components/SearchBoxMx.vue'
|
||||
import {boxQuery, stConfirm, getStorSect} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox,
|
||||
SearchBoxMx
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
isV: '0',
|
||||
options1: [],
|
||||
index1: '',
|
||||
dataList: [],
|
||||
disabled: false,
|
||||
focused: true
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._getStorSect()
|
||||
},
|
||||
mounted () {
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 500)
|
||||
},
|
||||
methods: {
|
||||
/** 虚拟库 */
|
||||
isVirtual () {
|
||||
this.isV = this.isV === '0' ? '1' : '0'
|
||||
},
|
||||
/** 选择器1 */
|
||||
selectChange1(e) {
|
||||
this.index1 = e
|
||||
},
|
||||
/** 库区下拉框查询 */
|
||||
async _getStorSect () {
|
||||
let res = await getStorSect()
|
||||
this.options1 = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _boxQuery (e) {
|
||||
let res = await boxQuery(e, '1')
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 确认 */
|
||||
async _stConfirm () {
|
||||
this.disabled = true
|
||||
if (!this.val1 || this.dataList.length === 0 || (this.isV === '1' && this.index1 === '')) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await stConfirm(this.dataList, this.val2, '1', this.isV, '', this.val1, this.index1)
|
||||
this.disabled = false
|
||||
// this._boxQuery(this.val1)
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this.isV = '0'
|
||||
this.dataList = []
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
onKeyInput (event) {
|
||||
var value = event.detail.value
|
||||
value=value.replace(/[^\w\.\/]/ig,'')
|
||||
if (value.length !== 14) {
|
||||
this.$nextTick(() => {
|
||||
this.val1 = ''
|
||||
})
|
||||
uni.hideKeyboard()
|
||||
return
|
||||
}
|
||||
uni.hideKeyboard()
|
||||
this._boxQuery(this.val1)
|
||||
},
|
||||
onFocus () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
onBlur () {
|
||||
this.focused = false
|
||||
},
|
||||
inputDel () {
|
||||
this.val1 = ''
|
||||
},
|
||||
inputScan () {
|
||||
this.focused = true
|
||||
setTimeout(() => {
|
||||
uni.hideKeyboard()
|
||||
}, 300)
|
||||
},
|
||||
toPhone (e) {
|
||||
this.val1 = e
|
||||
this._boxQuery(this.val1)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
187
pages/WarehouseManage/SemifinishedInStore.vue
Normal file
187
pages/WarehouseManage/SemifinishedInStore.vue
Normal file
@@ -0,0 +1,187 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="半成品入库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">母卷</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">状态</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>状态</th>
|
||||
<th>工单号</th>
|
||||
<th>母卷号</th>
|
||||
<th>机台编码</th>
|
||||
<th>产品编码</th>
|
||||
<th>理论长度</th>
|
||||
<th>开始时间</th>
|
||||
<th>结束时间</th>
|
||||
<th>总重量</th>
|
||||
<th>车号</th>
|
||||
<th>生产区域</th>
|
||||
<th>更新时间</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.container_name === pkId}">
|
||||
<td>{{e.status_name}}</td>
|
||||
<td>{{e.mfg_order_name}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.point_code}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.theory_height}}</td>
|
||||
<td>{{e.realstart_time}}</td>
|
||||
<td>{{e.realend_time}}</td>
|
||||
<td>{{e.productin_qty}}</td>
|
||||
<td>{{e.agvno}}</td>
|
||||
<td>{{e.product_area}}</td>
|
||||
<td>{{e.update_time}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
<uni-load-more color="#007AFF" iconType="circle" :status="status" :icon-size="14" :content-text="contentText" v-if="dataList.length > 0"/>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !val1 || !pkId || !index}" :disabled="disabled" @tap="_confirmInstor">确认入库</button>
|
||||
<button class="submit-button" @tap="searchList">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {coolIOQuery, confirmInstor, statusList} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
options: [],
|
||||
index: '',
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
pkObj: {},
|
||||
disabled: false,
|
||||
reload: false,
|
||||
status: 'more',
|
||||
contentText: {
|
||||
contentdown: '查看更多',
|
||||
contentrefresh: '加载中',
|
||||
contentnomore: '没有更多'
|
||||
},
|
||||
totalCount: 0,
|
||||
pageNum: 1,
|
||||
pageSize: 10
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._statusList()
|
||||
this._coolIOQuery()
|
||||
},
|
||||
methods: {
|
||||
searchList () {
|
||||
this.dataList = []
|
||||
this.pageNum = 1
|
||||
this._coolIOQuery()
|
||||
},
|
||||
/** 选择器 */
|
||||
selectChange(e) {
|
||||
this.index = e
|
||||
},
|
||||
/** 下拉框查询 */
|
||||
async _statusList () {
|
||||
let res = await statusList()
|
||||
this.options = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _coolIOQuery () {
|
||||
let res = await coolIOQuery(this.val2, this.pageNum + '', this.pageSize + '')
|
||||
this.totalCount = res.size
|
||||
if (res.size > 0) {
|
||||
const dataMap = res.data
|
||||
this.dataList = this.reload ? dataMap : this.dataList.concat(dataMap)
|
||||
this.reload = false
|
||||
} else {
|
||||
this.dataList = []
|
||||
}
|
||||
if (this.totalCount == this.dataList.length) {
|
||||
this.reload = false
|
||||
this.status = 'noMore'
|
||||
}
|
||||
},
|
||||
onReachBottom () {
|
||||
if (this.totalCount > this.dataList.length) {
|
||||
this.status = 'loading'
|
||||
setTimeout(() => {
|
||||
this.pageNum++
|
||||
this._coolIOQuery()
|
||||
}, 1000)
|
||||
} else { //停止加载
|
||||
this.status = 'noMore'
|
||||
}
|
||||
},
|
||||
/** 确认 */
|
||||
async _confirmInstor () {
|
||||
this.disabled = true
|
||||
if (!this.val1 || !this.pkId || !this.index) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await confirmInstor(this.pkObj, this.val1, this.index)
|
||||
this.disabled = false
|
||||
this.pkId = ''
|
||||
this.pkObj = {}
|
||||
this.searchList()
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
toCheck (e) {
|
||||
this.pkId = this.pkId === e.container_name ? '' : e.container_name
|
||||
this.pkObj = this.pkId === e.container_name ? e : {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
141
pages/WarehouseManage/SemifinishedOutStore.vue
Normal file
141
pages/WarehouseManage/SemifinishedOutStore.vue
Normal file
@@ -0,0 +1,141 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="半成品出库"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">点位</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">母卷</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box
|
||||
v-model="val2"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">区域</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>点位</th>
|
||||
<th>母卷号</th>
|
||||
<th>产品编号</th>
|
||||
<th>产品描述</th>
|
||||
<th>总重量</th>
|
||||
<th>入烘箱时间</th>
|
||||
<th>出烘箱时间</th>
|
||||
<th>是否烘烤</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.point_code === pkId}">
|
||||
<td>{{e.point_code}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.description}}</td>
|
||||
<td>{{e.productin_qty}}</td>
|
||||
<td>{{e.in_time}}</td>
|
||||
<td>{{e.out_time}}</td>
|
||||
<td>{{e.is_bake}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !pkId || !val1}" :disabled="disabled" @tap="_outconfirmInstor">确认出库</button>
|
||||
<button class="submit-button" @tap="_outcoolIOQuery">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {queryProductArea, outcoolIOQuery, outconfirmInstor} from '@/utils/getData2.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
options: [],
|
||||
index: '',
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
pkObj: {},
|
||||
disabled: false
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._outcoolIOQuery()
|
||||
this._queryProductArea()
|
||||
},
|
||||
methods: {
|
||||
/** 选择器 */
|
||||
selectChange(e) {
|
||||
this.index = e
|
||||
},
|
||||
/** 生产区域下拉框查询 */
|
||||
async _queryProductArea () {
|
||||
let res = await queryProductArea()
|
||||
this.options = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _outcoolIOQuery () {
|
||||
let res = await outcoolIOQuery(this.val2, this.index)
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
/** 确认 */
|
||||
async _outconfirmInstor () {
|
||||
this.disabled = true
|
||||
if (!this.pkId || !this.val1) {
|
||||
this.disabled = false
|
||||
return
|
||||
}
|
||||
try {
|
||||
let res = await outconfirmInstor(this.pkObj, this.val1)
|
||||
this.disabled = false
|
||||
this.pkId = ''
|
||||
this.pkObj = {}
|
||||
this._outcoolIOQuery()
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
} catch (e) {
|
||||
this.disabled = false
|
||||
}
|
||||
},
|
||||
toCheck (e) {
|
||||
this.pkId = this.pkId === e.point_code ? '' : e.point_code
|
||||
this.pkObj = this.pkId === e.point_code ? e : {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
</style>
|
||||
130
pages/WarehouseManage/XuniDelivery.vue
Normal file
130
pages/WarehouseManage/XuniDelivery.vue
Normal file
@@ -0,0 +1,130 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar title="虚拟区发货"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val1" :focused="true" @handleChange="handleChange1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">单据号</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val2" @handleChange="handleChange2"/>
|
||||
</view>
|
||||
</view>
|
||||
<view class="filter_item">
|
||||
<view class="filter_label">单据类型</view>
|
||||
<view class="filter_input_wraper">
|
||||
<uni-data-select v-model="index" :localdata="options" @change="selectChange"></uni-data-select>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>单据编号</th>
|
||||
<th>单据类型</th>
|
||||
<th>源单号</th>
|
||||
<th>日期</th>
|
||||
<th>人员</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i" @click="toCheck(e)" :class="{'checked': e.bill_code === pkId, 'bgyellow': e.colro_flag === '1'}">
|
||||
<td>{{e.bill_code}}</td>
|
||||
<td>{{e.bill_type_name}}</td>
|
||||
<td>{{e.source_bill_code}}</td>
|
||||
<td>{{e.biz_date}}</td>
|
||||
<td>{{e.person_name}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !pkId}" :disabled="disabled1" @tap="toSure">确认</button>
|
||||
<button class="submit-button" @tap="_virtualbillQuery(val1, val2)">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {virtualbillQuery, virtualbillType} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
val1: '',
|
||||
val2: '',
|
||||
options: [],
|
||||
index: '',
|
||||
dataList: [],
|
||||
pkId: '',
|
||||
pkObj: {},
|
||||
disabled1: false
|
||||
};
|
||||
},
|
||||
created () {
|
||||
this._virtualbillQuery(this.val1, this.val2)
|
||||
this._virtualbillType()
|
||||
},
|
||||
methods: {
|
||||
handleChange1 (e) {
|
||||
this._virtualbillQuery(e, this.val2)
|
||||
},
|
||||
handleChange2 (e) {
|
||||
this._virtualbillQuery(this.val1, e)
|
||||
},
|
||||
/** 选择器 */
|
||||
selectChange(e) {
|
||||
this.index = e
|
||||
},
|
||||
/** 下拉框查询 */
|
||||
async _virtualbillType () {
|
||||
let res = await virtualbillType()
|
||||
this.options = [...res.data]
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _virtualbillQuery (val1, val2) {
|
||||
let res = await virtualbillQuery(val1, val2, this.index)
|
||||
this.dataList = [...res.data]
|
||||
},
|
||||
toSure () {
|
||||
if (this.pkId) {
|
||||
uni.navigateTo({
|
||||
url: '/pages/WarehouseManage/XuniDeliveryConfirm?billcode=' + this.pkObj.bill_code
|
||||
})
|
||||
}
|
||||
},
|
||||
toCheck (e) {
|
||||
this.pkId = this.pkId === e.bill_code ? '' : e.bill_code
|
||||
this.pkObj = this.pkId === e.bill_code ? e : {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
143
pages/WarehouseManage/XuniDeliveryConfirm.vue
Normal file
143
pages/WarehouseManage/XuniDeliveryConfirm.vue
Normal file
@@ -0,0 +1,143 @@
|
||||
<template>
|
||||
<view class="zd_container">
|
||||
<nav-bar :inner2="true" @goIn="goIn" title="虚拟区发货确认"></nav-bar>
|
||||
<view class="zd_content">
|
||||
<view class="zd_wrapper">
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">木箱</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<!-- <search-box v-model="val1" :focused="true" @handleChange="handleChange1" -->
|
||||
<search-box v-model="val1" :focused="focusedStatus" @handleChange="handleChange1"
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
<!-- <view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">物料</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<search-box v-model="val2" />
|
||||
</view>
|
||||
</view> -->
|
||||
<view class="filter_item">
|
||||
<view class="filter_label_wraper">
|
||||
<span class="filter_label">总净重</span>
|
||||
</view>
|
||||
<view class="filter_input_wraper">
|
||||
<input type="number" class="filter_input filter_input_disabled" v-model="net_weight_num" disabled>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="zd_wrapper grid-wraper">
|
||||
<view class="slide_new">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>木箱码</th>
|
||||
<th>子卷号</th>
|
||||
<th>物料编码</th>
|
||||
<th>物料名称</th>
|
||||
<th>重量kg</th>
|
||||
<th>更换外包</th>
|
||||
<th>更换内包</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr v-for="(e, i) in dataList" :key="i" :class="{'bgyellow': e.colro_flag === '1'}">
|
||||
<td>{{e.package_box_sn}}</td>
|
||||
<td>{{e.container_name}}</td>
|
||||
<td>{{e.product_name}}</td>
|
||||
<td>{{e.product_description}}</td>
|
||||
<td>{{e.net_weight}}</td>
|
||||
<td>{{e.change_out}}</td>
|
||||
<td>{{e.change_in}}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="submit-bar">
|
||||
<button class="submit-button" :class="{'btn-disabled': !dataList.length}" :disabled="disabled1" @tap="_virtualoutConfirm">出库确认</button>
|
||||
<button class="submit-button" @tap="_virtualivtQuery">查询</button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import NavBar from '@/components/NavBar.vue'
|
||||
import SearchBox from '@/components/SearchBox.vue'
|
||||
import {virtualivtQuery, virtualoutConfirm} from '@/utils/getData1.js'
|
||||
export default {
|
||||
components: {
|
||||
NavBar,
|
||||
SearchBox
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
focusedStatus: true,
|
||||
val1: '',
|
||||
val2: '',
|
||||
billCode: '',
|
||||
dataList: [],
|
||||
disabled1: false,
|
||||
net_weight_num: ''
|
||||
};
|
||||
},
|
||||
onLoad (option) {
|
||||
this.billCode = option.billcode
|
||||
this._virtualivtQuery()
|
||||
},
|
||||
methods: {
|
||||
handleChange1 (e) {
|
||||
this._virtualivtQuery()
|
||||
},
|
||||
goIn () {
|
||||
uni.navigateTo({
|
||||
url: `/pages/WarehouseManage/XuniDelivery`
|
||||
})
|
||||
},
|
||||
handleChange (e) {
|
||||
// console.log(e)
|
||||
},
|
||||
/** 初始化查询 */
|
||||
async _virtualivtQuery () {
|
||||
let res = await virtualivtQuery(this.val1, this.val2, this.billCode)
|
||||
this.dataList = [...res.data]
|
||||
this.net_weight_num = res.net_weight_num
|
||||
},
|
||||
async _virtualoutConfirm () {
|
||||
this.focusedStatus = false
|
||||
if (!this.dataList.length) {
|
||||
return
|
||||
}
|
||||
this.disabled1 = true
|
||||
try {
|
||||
let res = await virtualoutConfirm(this.dataList, this.val1)
|
||||
this.disabled1 = false
|
||||
this.val1 = ''
|
||||
this.val2 = ''
|
||||
this._virtualivtQuery()
|
||||
uni.showToast({
|
||||
title: res.message,
|
||||
icon: 'none'
|
||||
})
|
||||
this.focusedStatus = true
|
||||
} catch (e) {
|
||||
this.disabled1 = false
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="stylus">
|
||||
.zd_content
|
||||
padding-bottom 77rpx
|
||||
.slide_new table td:nth-child(1), .slide_new table th:nth-child(1)
|
||||
box-shadow 1px 0 2px rgba(0,0,0,.12)
|
||||
.bgyellow td
|
||||
background-color #E9B451
|
||||
</style>
|
||||
Reference in New Issue
Block a user