Commit 7104bc8d by LJM

复核

parent 8c21b5de
...@@ -100,6 +100,14 @@ ...@@ -100,6 +100,14 @@
font-size: 15rpx; font-size: 15rpx;
color: #1969f9; color: #1969f9;
} }
.btn3 {
width: 68rpx;
height: 30rpx;
background-color: #1969f9;
border-radius: 8rpx;
font-size: 15rpx;
color: #ffffff;
}
} }
} }
} }
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
border-radius: 10rpx; border-radius: 10rpx;
margin-bottom: 15rpx; margin-bottom: 15rpx;
flex-wrap: wrap; flex-wrap: wrap;
border: 1px solid transparent;
.check-box-icon { .check-box-icon {
position: absolute; position: absolute;
right: 18rpx; right: 18rpx;
......
...@@ -53,6 +53,7 @@ ...@@ -53,6 +53,7 @@
border-radius: 10rpx; border-radius: 10rpx;
margin-right: 15rpx; margin-right: 15rpx;
margin-bottom: 15rpx; margin-bottom: 15rpx;
border: 1px solid transparent;
&:nth-of-type(2n) { &:nth-of-type(2n) {
margin-right: 0; margin-right: 0;
} }
......
...@@ -119,6 +119,24 @@ ...@@ -119,6 +119,24 @@
border-radius: 10rpx; border-radius: 10rpx;
margin-bottom: 15rpx; margin-bottom: 15rpx;
flex-wrap: wrap; flex-wrap: wrap;
border: 1px solid transparent;
.check-box-icon {
position: absolute;
right: 18rpx;
top: 17rpx;
width: 20rpx;
height: 20rpx;
background: url('https://img.ichunt.com/images/ichunt/202304/11/0bf30da3e8ce6c476c210173b5f13d51.png') no-repeat center;
background-size: contain;
display: block;
}
&.curr {
border: 1px solid #1969f9;
.check-box-icon {
background: url('https://img.ichunt.com/images/ichunt/202304/11/71a74e52e94bcf2e89f8df9817d494c6.png') no-repeat center;
background-size: contain;
}
}
.input-box { .input-box {
margin-bottom: 11rpx; margin-bottom: 11rpx;
flex: 0 0 50%; flex: 0 0 50%;
...@@ -443,7 +461,7 @@ ...@@ -443,7 +461,7 @@
margin-bottom: 11rpx; margin-bottom: 11rpx;
flex: 0 0 50%; flex: 0 0 50%;
.label { .label {
width: 98rpx; width: 112rpx;
font-size: 17rpx; font-size: 17rpx;
color: #919399; color: #919399;
white-space: nowrap; white-space: nowrap;
......
...@@ -287,10 +287,17 @@ export default { ...@@ -287,10 +287,17 @@ export default {
} else if (type == 2) { } else if (type == 2) {
stock_in_id[0] = id; stock_in_id[0] = id;
} }
uni.showModal({
title: '提示',
content: '确定要取消登记吗?',
showCancel: true,
success: res => {
if (res.confirm) {
this.request(API.delStockInRegister, 'POST', { stock_in_id: JSON.stringify(stock_in_id) }, true).then(res => { this.request(API.delStockInRegister, 'POST', { stock_in_id: JSON.stringify(stock_in_id) }, true).then(res => {
if (res.code === 0) { if (res.code === 0) {
uni.showToast({ uni.showToast({
title: '操作成功', title: '取消成功',
icon: 'success' icon: 'success'
}); });
setTimeout(() => { setTimeout(() => {
...@@ -306,6 +313,12 @@ export default { ...@@ -306,6 +313,12 @@ export default {
}); });
} }
}); });
} else if (res.cancel) {
// 用户点击取消操作
console.log('用户点击取消');
}
}
});
}, },
bindPickerChange: function(e) { bindPickerChange: function(e) {
console.log('picker发送选择改变,携带值为', e.detail.value); console.log('picker发送选择改变,携带值为', e.detail.value);
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
</view> </view>
</view> </view>
<view class="list row bothSide" v-if="list.length > 0"> <view class="list row bothSide" v-if="list.length > 0">
<navigator class="box" v-for="(item, index) in list" :key="index" :url="'/pages/picking/sort?stock_out_id=' + item.stock_out_id + '&stock_out_sn=' + item.stock_out_sn" hover-class="none"> <view class="box" v-for="(item, index) in list" :key="index">
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">出库单号:</text> <text class="label">出库单号:</text>
<text class="t1">{{ item.stock_out_sn }}</text> <text class="t1">{{ item.stock_out_sn }}</text>
...@@ -44,8 +44,8 @@ ...@@ -44,8 +44,8 @@
<text class="label">销售员:</text> <text class="label">销售员:</text>
<text class="tt">{{ item.sale_name }}</text> <text class="tt">{{ item.sale_name }}</text>
</view> </view>
<view class="btn-box row"><view class="btn row rowCenter verCenter">领取</view></view> <view class="btn-box row"><view class="btn row rowCenter verCenter" @click="take(item.stock_out_id, item.stock_out_sn)">领取</view></view>
</navigator> </view>
</view> </view>
<!-- 无数据展示 --> <!-- 无数据展示 -->
<view class="no-date column rowCenter verCenter" v-else> <view class="no-date column rowCenter verCenter" v-else>
...@@ -104,6 +104,24 @@ export default { ...@@ -104,6 +104,24 @@ export default {
}); });
}, },
/** /**
* 领取
*/
take(stock_out_id, stock_out_sn) {
this.request(API.take, 'POST', { stock_out_id: stock_out_id }, true).then(res => {
if (res.code === 0) {
uni.navigateTo({
url: '/pages/picking/sort?stock_out_id=' + stock_out_id + '&stock_out_sn=' + stock_out_sn
});
} else {
uni.showModal({
itle: '提示',
content: res.msg,
showCancel: false
});
}
});
},
/**
* 清空数据 * 清空数据
*/ */
clearInput() { clearInput() {
......
...@@ -12,47 +12,65 @@ ...@@ -12,47 +12,65 @@
<view class="search-bar row bothSide verCenter"> <view class="search-bar row bothSide verCenter">
<view class="row verCenter"> <view class="row verCenter">
<text class="iconfont icon-juxing1"></text> <text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请扫描或输入号码" placeholder-style="color:#919399" /> <input class="uni-input" placeholder="请扫描或输入号码" placeholder-style="color:#919399" v-model="searchParams.stock_out_sn" @input="handleInput" />
</view> </view>
<text class="iconfont icon-a-juxing11"></text> <text class="iconfont icon-a-juxing11" @click="clearInput()" v-if="input_flag"></text>
</view> </view>
</view> </view>
<view class="list row bothSide"> <view class="list row bothSide" v-if="list.length > 0">
<view class="box" v-for="(item, index) in 10" :key="index"> <view class="box" v-for="(item, index) in list" :key="index">
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">出库单号:</text> <text class="label">出库单号:</text>
<text class="t1">ASN2201010001</text> <text class="t1">{{ item.stock_out_sn }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">状 态:</text> <text class="label">状 态:</text>
<text class="t1">全部锁库</text> <text class="t1">{{ item.stock_out_status_val }}</text>
</view> </view>
<view class="bor row"></view> <view class="bor row"></view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">任 务 数:</text> <text class="label">任 务 数:</text>
<text class="tt">8</text> <text class="tt">{{ item.items_num }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">总 数 量:</text> <text class="label">总 数 量:</text>
<text class="tt">5000</text> <text class="tt">{{ item.total_qty }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">上游备注:</text> <text class="label">上游备注:</text>
<text class="tt">我是一条备注我是一条备注我是一条备注我是一条备注</text> <text class="tt">{{ item.upstream_remark }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">领取时间:</text> <text class="label">领取时间:</text>
<text class="tt">2023-04-01 11:28:59</text> <text class="tt">{{ item.take_time }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">销售员:</text> <text class="label">销售员:</text>
<text class="tt">朱国军</text> <text class="tt">{{ item.sale_name }}</text>
</view> </view>
<view class="btn-box row verCenter"> <view class="btn-box row verCenter">
<view class="btn1 row rowCenter verCenter">释放</view> <!-- 出库单状态为全部锁库,则显示【释放】、【选择】按钮 -->
<view class="btn2 row rowCenter verCenter">详情</view> <template v-if="item.stock_out_status == 3">
<view class="btn1 row rowCenter verCenter" @click="cancelTake(item.stock_out_id)">释放</view>
<navigator :url="'/pages/picking/sort?stock_out_id=' + item.stock_out_id + '&stock_out_sn=' + item.stock_out_sn" hover-class="none" class="btn3 row rowCenter verCenter">选择</navigator>
</template>
<!--出库单状态为部分拣货-->
<template v-if="item.stock_out_status == 4">
<navigator :url="'/pages/picking/sort?stock_out_id=' + item.stock_out_id + '&stock_out_sn=' + item.stock_out_sn" hover-class="none" class="btn3 row rowCenter verCenter">选择</navigator>
</template>
<!--出库单状态为全部拣货-->
<template v-if="item.stock_out_status == 5">
<navigator url="/pages/picking/record" hover-class="none" class="btn2 row rowCenter verCenter">详情</navigator>
</template>
</view>
</view> </view>
</view> </view>
<!-- 无数据展示 -->
<view class="no-date column rowCenter verCenter" v-else>
<text class="iconfont icon-a-juxing21"></text>
<text class="text">查不到当前数据</text>
</view> </view>
</view> </view>
</template> </template>
...@@ -63,15 +81,81 @@ import debounce from 'lodash/debounce'; ...@@ -63,15 +81,81 @@ import debounce from 'lodash/debounce';
export default { export default {
data() { data() {
return { return {
input_flag: false,
index: 0, index: 0,
array: ['出库单号'] array: ['出库单号'],
list: [],
searchParams: {
stock_out_sn: '' //出库单号
}
}; };
}, },
onLoad() {}, onShow() {
this.getData();
},
methods: { methods: {
bindPickerChange: function(e) { bindPickerChange: function(e) {
console.log('picker发送选择改变,携带值为', e.detail.value); console.log('picker发送选择改变,携带值为', e.detail.value);
this.index = e.detail.value; this.index = e.detail.value;
},
/**
* 清空数据
*/
clearInput() {
this.input_flag = false;
this.searchParams.stock_out_sn = '';
this.getData();
},
/**
* 单号搜索
* @param {Object} event
*/
handleInput: debounce(function(event) {
var val = event.target.value;
if (val) {
this.input_flag = true;
} else {
this.input_flag = false;
}
this.getData();
}, 500),
/**
* 释放已领取拣货单
*/
cancelTake(stock_out_id) {
this.request(API.cancelTake, 'POST', { stock_out_id: stock_out_id }, true).then(res => {
if (res.code === 0) {
uni.showToast({
title: '释放成功',
icon: 'success'
});
setTimeout(() => {
this.getData();
this.filter_id = [];
}, 2000);
} else {
uni.showModal({
itle: '提示',
content: res.msg,
showCancel: false
});
}
});
},
/**
* 获取列表数据
*/
getData() {
this.request(API.getTakedList, 'POST', { page: this.page, limit: this.limit, ...this.searchParams }, false).then(res => {
if (res.code === 0) {
this.list = res.data.list;
} else {
uni.showToast({
title: res.msg,
icon: 'error'
});
}
});
} }
} }
}; };
......
<template> <template>
<view class="picking-record"> <view class="picking-record">
<view class="list"> <view class="list" v-if="list.length > 0">
<view class="box row curr" v-for="(item, index) in 15"> <view class="box row" v-for="(item, index) in list" :key="index" :class="{ curr: filter_list[index] }">
<view class="check-box-icon"></view> <view class="check-box-icon" @click="filterChange(index)"></view>
<view class="input-box row verCenter curr"> <view class="input-box row verCenter curr">
<text class="label">入库批次号:</text> <text class="label">入库批次号:</text>
<text class="tt">L-ASN2201010001</text> <text class="tt">{{ item.stock_in_batch_sn }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">容 器:</text> <text class="label">容 器:</text>
<text class="tt">RQ0001</text> <text class="tt">{{ item.container_sn }}</text>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品编码:</text> <text class="label">货品编码:</text>
<text class="text">L-ASN2201010001</text> <text class="text">{{ item.goods_sn }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品名称:</text> <text class="label">货品名称:</text>
<text class="text">A65512</text> <text class="text">{{ item.goods_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">标准品牌:</text> <text class="label">标准品牌:</text>
<text class="text">TI</text> <text class="text">{{ item.brand_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">D / C:</text> <text class="label">D / C:</text>
<text class="text">22+</text> <text class="text">{{ item.date_code }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">产 地:</text> <text class="label">产 地:</text>
<text class="text">C12345</text> <text class="text">{{ item.coo }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品品质:</text> <text class="label">货品品质:</text>
<text class="text">良品</text> <text class="text">{{ item.quality_val }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">入 仓 号:</text> <text class="label">入 仓 号:</text>
<text class="text">C12345</text> <text class="text">{{ item.inhouse }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">其他批次属性:</text> <text class="label">其他批次属性:</text>
<text class="text">-</text> <text class="text">{{ item.other_batch_attr }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">拣货数量:</text> <text class="label">拣货数量:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.pick_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">拣货库位:</text> <text class="label">拣货库位:</text>
<text class="text">KW001</text> <text class="text">{{ item.position_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">拣 货 员:</text> <text class="label">拣 货 员:</text>
<text class="text">欧阳雪雁</text> <text class="text">{{ item.create_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">销 售 员:</text> <text class="label">销 售 员:</text>
<text class="text">朱国军:</text> <text class="text">{{ item.sale_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">拣货时间:</text> <text class="label">拣货时间:</text>
<text class="text">2023-04-01 11:28:59</text> <text class="text">{{ item.create_time }}</text>
</view> </view>
</view> </view>
</view> </view>
<!-- 无数据展示 -->
<view class="no-date column rowCenter verCenter" v-else>
<text class="iconfont icon-a-juxing21"></text>
<text class="text">查不到当前数据</text>
</view>
<view class="fix-btn row verCenter"> <view class="fix-btn row verCenter">
<view class="btn1 row rowCenter verCenter"> <view class="btn1 row rowCenter verCenter" @click="allChnage()">
<text class="check-box-icon curr"></text> <text class="check-box-icon" :class="{ curr: this.filter_list.length == this.filter_id.length }"></text>
<text class="text">全选</text> <text class="text">全选</text>
</view> </view>
<view class="btn2 row rowCenter verCenter">取消拣货</view> <view class="btn2 row rowCenter verCenter" @click="cancelPicking">取消拣货</view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import { API } from '@/util/api.js'; import { API } from '@/util/api.js';
import { createArray } from '@/util/util.js';
import debounce from 'lodash/debounce';
export default { export default {
data() { data() {
return {}; return {
input_flag: false,
all_flag: false, //全选标记
page: 1,
limit: 1000,
list: [],
filter_list: [], //筛选已选中的列表
filter_id: [], //过滤id
searchParams: {
stock_out_sn: ''
}
};
},
onShow() {
this.getData();
},
methods: {
/**
* 全选
*/
allChnage() {
this.all_flag = !this.all_flag;
this.filter_list = createArray(this.list.length, this.all_flag);
if (this.all_flag) {
this.filter_id = this.list.map(function(item) {
return item.id;
});
} else {
this.filter_id = [];
}
},
/**
* 找出false对应的下标
* @param {Object} arr
* @param {Object} target
*/
findIndex(arr, target) {
const result = [];
arr.map((item, index) => {
if (item === target) {
result.push(index);
}
});
return result;
},
/**
* 筛选过滤出选中的元素
*/
filterChange(index) {
this.$set(this.filter_list, index, (this.filter_list[index] = !this.filter_list[index]));
let filter_arr = this.findIndex(this.filter_list, true);
this.filter_id = filter_arr.map(i => this.list[i].id);
},
/**
* 清空数据
*/
clearInput() {
this.input_flag = false;
this.searchParams.stock_out_sn = '';
this.getData();
},
/**
* 单号搜索
* @param {Object} event
*/
handleInput: debounce(function(event) {
var val = event.target.value;
if (val) {
this.input_flag = true;
} else {
this.input_flag = false;
}
this.getData();
}, 500),
/**
* 取消拣货
*/
cancelPicking() {
if (this.filter_id.length == 0) {
uni.showToast({
title: '请勾选货物',
icon: 'error'
});
return false;
}
uni.showModal({
title: '提示',
content: '确定要取消拣货吗?',
showCancel: true,
success: res => {
if (res.confirm) {
this.request(API.cancelPicking, 'POST', { pick_id: this.filter_id.join(',') }, true).then(res => {
if (res.code === 0) {
uni.showToast({
title: '取消成功',
icon: 'success'
});
setTimeout(() => {
this.getData();
this.closeDrawer();
this.filter_id = [];
}, 2000);
} else {
uni.showModal({
title: '提示',
content: res.msg,
showCancel: false
});
}
});
} else if (res.cancel) {
// 用户点击取消操作
console.log('用户点击取消');
}
}
});
}, },
onLoad() {}, /**
methods: {} * 获取列表数据
*/
getData() {
this.request(API.getAllPickedList, 'POST', { page: this.page, limit: this.limit, ...this.searchParams }, false).then(res => {
if (res.code === 0) {
this.list = res.data.list;
this.filter_list = createArray(this.list.length, false);
} else {
uni.showToast({
title: res.msg,
icon: 'error'
});
}
});
}
}
}; };
</script> </script>
......
...@@ -197,7 +197,7 @@ ...@@ -197,7 +197,7 @@
</view> </view>
<view class="form-input"> <view class="form-input">
<view class="input-title"><text class="input-title-t1">拣货数量:</text></view> <view class="input-title"><text class="input-title-t1">拣货数量:</text></view>
<view class="input-box"><input type="text" class="uni-input" placeholder-style="color:#919399" placeholder="请输入" v-model="formParams.pick_qty"/></view> <view class="input-box"><input type="number" class="uni-input" placeholder-style="color:#919399" placeholder="请输入" v-model="formParams.pick_qty"/></view>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
<view class="field-item row"> <view class="field-item row">
......
...@@ -12,78 +12,83 @@ ...@@ -12,78 +12,83 @@
<view class="search-bar row bothSide verCenter"> <view class="search-bar row bothSide verCenter">
<view class="row verCenter"> <view class="row verCenter">
<text class="iconfont icon-juxing1"></text> <text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请扫描或输入号码" placeholder-style="color:#919399" /> <input class="uni-input" placeholder="请扫描或输入号码" placeholder-style="color:#919399" focus v-model="searchParams.stock_out_sn" @input="handleInput" />
</view> </view>
<text class="iconfont icon-a-juxing11"></text> <text class="iconfont icon-a-juxing11" @click="clearInput()" v-if="input_flag"></text>
</view> </view>
</view> </view>
<view class="list row bothSide"> <view class="list row bothSide" v-if="list.length > 0">
<view class="box" v-for="(item, index) in 10" :key="index"> <view class="box" v-for="(item, index) in list" :key="index" :class="{ curr: filter_list[index] }">
<template v-if="index == 1"> <view class="check-box-icon" @click="filterChange(index)"></view>
<view class="check-box-icon"></view>
</template>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">出库单号:</text> <text class="label">出库单号:</text>
<text class="t1">ASN2201010001</text> <text class="t1">{{ item.stock_out_sn }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">状 态:</text> <text class="label">状 态:</text>
<text class="t1">全部锁库</text> <text class="t1">{{ item.stock_out_status_val }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">复核确认:</text> <text class="label">复核确认:</text>
<text class="t1">待确认</text> <text class="t1">{{ item.stock_out_status != 8 ? '待确认' : '已确认' }}</text>
</view> </view>
<view class="bor row"></view> <view class="bor row"></view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">任 务 数:</text> <text class="label">任 务 数:</text>
<text class="tt">8</text> <text class="tt">{{ item.items_num }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">总 数 量:</text> <text class="label">总 数 量:</text>
<text class="tt">5000</text> <text class="tt">{{ item.total_qty }}</text>
</view> </view>
<view class="text-item row verCenter"> <view class="text-item row verCenter">
<text class="label">上游备注:</text> <text class="label">上游备注:</text>
<text class="tt">我是一条备注我是一条备注我是一条备注我是一条备注</text> <text class="tt">{{ item.upstream_remark }}</text>
</view>
<view class="text-item row verCenter">
<text class="label">销售员:</text>
<text class="tt">朱国军</text>
</view> </view>
<view class="btn-box row"> <view class="btn-box row">
<template v-if="index == 0"> <!-- 出库单状态为全部复核时,则显示【详情】按钮 -->
<navigator url="/pages/stockRecheck/sort" class="btn1 row rowCenter verCenter" hover-class="none">选择</navigator> <template v-if="item.stock_out_status == 7">
</template>
<template v-else-if="index == 1">
<navigator class="btn2 row rowCenter verCenter" url="/pages/stockRecheck/record" hover-class="none">详情</navigator> <navigator class="btn2 row rowCenter verCenter" url="/pages/stockRecheck/record" hover-class="none">详情</navigator>
</template> </template>
<template v-else> <template v-else-if="item.stock_out_status == 5 || item.stock_out_status == 6">
<navigator url="/pages/stockRecheck/sort" class="btn1 row rowCenter verCenter" hover-class="none">选择</navigator> <navigator :url="'/pages/stockRecheck/sort?stock_out_id=' + item.stock_out_id" class="btn1 row rowCenter verCenter" hover-class="none">选择</navigator>
</template> </template>
</view> </view>
</view> </view>
</view> </view>
<view class="fix-btn row verCenter"> <!-- 无数据展示 -->
<view class="btn1 row rowCenter verCenter"> <view class="no-date column rowCenter verCenter" v-else>
<text class="check-box-icon curr"></text> <text class="iconfont icon-a-juxing21"></text>
<text class="text">全选</text> <text class="text">查不到当前数据</text>
</view>
<view class="btn2 row rowCenter verCenter">复核确认</view>
</view> </view>
<view class="fix-btn row verCenter"><view class="btn2 row rowCenter verCenter" style="width: 100%;" @click="makeStockOutFinish">复核确认</view></view>
</view> </view>
</template> </template>
<script> <script>
import { API } from '@/util/api.js'; import { API } from '@/util/api.js';
import { createArray } from '@/util/util.js';
import debounce from 'lodash/debounce';
export default { export default {
data() { data() {
return { return {
input_flag: false,
page: 1,
limit: 1000,
index: 0, index: 0,
array: ['出库单号'] array: ['出库单号'],
list: [],
filter_list: [], //筛选已选中的列表
filter_id: [], //过滤处理的id
searchParams: {
stock_out_sn: '' //出库单号
}
}; };
}, },
onLoad() {}, onShow() {
this.getData();
},
onNavigationBarButtonTap(e) { onNavigationBarButtonTap(e) {
if (e.index == 0) { if (e.index == 0) {
uni.navigateTo({ uni.navigateTo({
...@@ -95,6 +100,102 @@ export default { ...@@ -95,6 +100,102 @@ export default {
bindPickerChange: function(e) { bindPickerChange: function(e) {
console.log('picker发送选择改变,携带值为', e.detail.value); console.log('picker发送选择改变,携带值为', e.detail.value);
this.index = e.detail.value; this.index = e.detail.value;
},
/**
* 找出false对应的下标
* @param {Object} arr
* @param {Object} target
*/
findIndex(arr, target) {
const result = [];
arr.map((item, index) => {
if (item === target) {
result.push(index);
}
});
return result;
},
/**
* 筛选过滤出选中的元素
*/
filterChange(index) {
this.$set(this.filter_list, index, (this.filter_list[index] = !this.filter_list[index]));
let filter_arr = this.findIndex(this.filter_list, true);
this.filter_id = filter_arr.map(i => this.list[i].stock_out_id);
},
/**
* 清空数据
*/
clearInput() {
this.input_flag = false;
this.searchParams.stock_out_sn = '';
this.getData();
},
/**
* 单号搜索
* @param {Object} event
*/
handleInput: debounce(function(event) {
var val = event.target.value;
if (val) {
this.input_flag = true;
} else {
this.input_flag = false;
}
this.getData();
}, 500),
/**
* 获取列表数据
*/
getData() {
this.request(API.getToCheckList, 'POST', { page: this.page, limit: this.limit, ...this.searchParams }, false).then(res => {
if (res.code === 0) {
this.list = res.data.list;
this.filter_list = createArray(this.list.length, false);
} else {
uni.showToast({
title: res.msg,
icon: 'error'
});
}
});
},
/**
* 复核确认
*/
makeStockOutFinish() {
if (this.filter_id.length == 0) {
uni.showToast({
title: '请勾选货物',
icon: 'error'
});
return false;
}
if (this.filter_id.length > 1) {
uni.showToast({
title: '请勾选一条',
icon: 'error'
});
return false;
}
this.request(API.makeStockOutFinish, 'POST', { stock_out_id: this.filter_id[0] }, true).then(res => {
if (res.code === 0) {
uni.showToast({
title: '复核成功',
icon: 'success'
});
setTimeout(() => {
this.filter_id = [];
this.getData();
}, 2000);
} else {
uni.showModal({
itle: '提示',
content: res.msg,
showCancel: false
});
}
});
} }
} }
}; };
......
...@@ -10,116 +10,142 @@ ...@@ -10,116 +10,142 @@
<view class="search-bar row bothSide verCenter"> <view class="search-bar row bothSide verCenter">
<view class="row verCenter"> <view class="row verCenter">
<text class="iconfont icon-juxing1"></text> <text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请扫描或输入库位" placeholder-style="color:#919399" /> <input type="number" class="uni-input" placeholder="请扫描或输入箱号" placeholder-style="color:#919399" v-model="searchParams.box_name" @input="handleInput(1, searchParams.box_name)" />
</view> </view>
<view class="row verCenter"> <view class="row verCenter">
<text class="iconfont icon-a-juxing11" style="margin-right: 26rpx;"></text> <text class="iconfont icon-a-juxing11" style="margin-right: 26rpx;" @click="clearInput(1)" v-if="input_flag_box_name"></text>
<text class="iconfont icon-juxing3"></text> <text class="iconfont icon-juxing3" @click="refresh"></text>
</view> </view>
</view> </view>
</view> </view>
<view class="right"> <view class="right">
<template v-if="curr == 0">
<view class="title">入库批次号:</view> <view class="title">入库批次号:</view>
<view class="search-bar row bothSide verCenter"> <view class="search-bar row bothSide verCenter">
<view class="row verCenter"> <view class="row verCenter">
<text class="iconfont icon-juxing1"></text> <text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请扫描或输入入库批次号" placeholder-style="color:#919399" /> <input class="uni-input" placeholder="请扫描或输入入库批次号" placeholder-style="color:#919399" v-model="searchParams.stock_in_batch_sn" @input="handleInput(2, searchParams.stock_in_batch_sn)" />
</view> </view>
<text class="iconfont icon-a-juxing11"></text> <text class="iconfont icon-a-juxing11" @click="clearInput(2)" v-if="input_flag_stock_in_batch_sn"></text>
</view> </view>
</template>
<template v-else-if="curr == 1" s>
<view class="title">容器:</view>
<view class="search-bar row bothSide verCenter">
<view class="row verCenter">
<text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请扫描或输入容器" placeholder-style="color:#919399" v-model="searchParams.container_sn" @input="handleInput(3, searchParams.container_sn)" />
</view>
<text class="iconfont icon-a-juxing11" @click="clearInput(3)" v-if="input_flag_container_sn"></text>
</view> </view>
</template>
</view> </view>
<view class="list" v-if="curr == 0"> </view>
<view class="box row" v-for="(item, index) in 15"> <!-- 按货品拣货列表 -->
<template v-if="curr == 0">
<view class="list" v-if="list.length > 0">
<view class="box row" v-for="(item, index) in list" :key="index" :class="{ curr: filter_list[index] }">
<view class="check-box-icon" @click="filterChange(index)"></view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">入库批次号:</text> <text class="label">入库批次号:</text>
<text class="text">L-ASN2201010001</text> <text class="text">{{ item.stock_in_batch_sn }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">状态:</text> <text class="label">状态:</text>
<text class="tt">待审核</text> <text class="tt">{{ item.recheck_status_val }}</text>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品编码:</text> <text class="label">货品编码:</text>
<text class="text">L-ASN2201010001</text> <text class="text">{{ item.goods_sn }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品名称:</text> <text class="label">货品名称:</text>
<text class="text">A65512</text> <text class="text">{{ item.goods_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">标准品牌:</text> <text class="label">标准品牌:</text>
<text class="text">TI</text> <text class="text">{{ item.brand_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">D / C:</text> <text class="label">D / C:</text>
<text class="text">22+</text> <text class="text">{{ item.date_code }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">产 地:</text> <text class="label">产 地:</text>
<text class="text">C12345</text> <text class="text">{{ item.coo }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品品质:</text> <text class="label">货品品质:</text>
<text class="text">良品</text> <text class="text">{{ item.quality_val }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">入 仓 号:</text> <text class="label">入 仓 号:</text>
<text class="text">C12345</text> <text class="text">{{ item.inhouse }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">其他批次属性:</text> <text class="label">其他批次属性:</text>
<text class="text">-</text> <text class="text">{{ item.other_batch_attr }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">待复核数:</text> <text class="label">待复核数:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.no_recheck_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">已复核数:</text> <text class="label">已复核数:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.recheck_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">销 售 员:</text> <text class="label">销 售 员:</text>
<text class="text">朱国军:</text> <text class="text">{{ item.sale_name }}</text>
</view>
<view class="btn row rowCenter verCenter" @click="showDrawer(1, item)">选择</view>
</view> </view>
<view class="btn row rowCenter verCenter" @click="showDrawer(1)">复核</view>
</view> </view>
<!-- 无数据展示 -->
<view class="no-date column rowCenter verCenter" v-else>
<text class="iconfont icon-a-juxing21"></text>
<text class="text">查不到当前数据</text>
</view> </view>
<view class="list-style row bothSide" v-if="curr == 1"> </template>
<view class="box" v-for="(item, index) in 15">
<!-- 按容器拣货列表 -->
<template v-else-if="curr == 1">
<view class="list-style row bothSide" v-if="list.length > 0">
<view class="box" v-for="(item, index) in list" :key="index">
<view class="input-box row verCenter" style="flex: 0 0 100%;"> <view class="input-box row verCenter" style="flex: 0 0 100%;">
<text class="label">容 器:</text> <text class="label">容 器:</text>
<text class="tt">L-ASN2201010001</text> <text class="tt">{{ item.container_sn }}</text>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">任 务 数:</text> <text class="label">任 务 数:</text>
<text class="text">88</text> <text class="text">{{ item.task_num }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">合计应拣数量:</text> <text class="label">合计应拣数量:</text>
<text class="text">100</text> <text class="text">{{ item.total_check_num }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="btn row rowCenter verCenter" @click="showDrawer(2, item)">选择</view>
<text class="label">销 售 员:</text>
<text class="text">朱国军</text>
</view> </view>
<view class="btn row rowCenter verCenter" @click="showDrawer(2)">选择</view>
</view> </view>
<!-- 无数据展示 -->
<view class="no-date column rowCenter verCenter" v-else>
<text class="iconfont icon-a-juxing21"></text>
<text class="text">查不到当前数据</text>
</view> </view>
</template>
</view> </view>
<view class="fix-btn row verCenter" v-if="curr == 0"> <view class="fix-btn row verCenter" v-if="curr == 0">
<view class="btn1 row rowCenter verCenter"> <view class="btn1 row rowCenter verCenter" @click="allChnage()">
<text class="check-box-icon curr"></text> <text class="check-box-icon" :class="{ curr: this.filter_list.length == this.filter_id.length }"></text>
<text class="text">全选</text> <text class="text">全选</text>
</view> </view>
<view class="btn2 row rowCenter verCenter" @click="showDrawer(0)">一键复核</view> <view class="btn2 row rowCenter verCenter" @click="showDrawer(0)">一键复核</view>
</view> </view>
<!-- 按货品复核单个详情弹窗 --> <!-- 按货品拣货-弹窗 -->
<uni-drawer ref="showRight" mode="right"> <uni-drawer ref="showRight" mode="right">
<view class="uni-drawer-picking"> <view class="uni-drawer-picking" v-if="detail">
<view class="title row rowCenter verCenter"> <view class="title row rowCenter verCenter">
<text class="iconfont icon-juxing2" @click="closeDrawer(1)"></text> <text class="iconfont icon-juxing2" @click="closeDrawer(1)"></text>
<text class="text">按货品复核单个</text> <text class="text">按货品复核单个</text>
...@@ -130,19 +156,19 @@ ...@@ -130,19 +156,19 @@
<view class="search row bothSide verCenter"> <view class="search row bothSide verCenter">
<view class="row verCenter"> <view class="row verCenter">
<text class="iconfont icon-juxing1"></text> <text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请输入物流单号" placeholder-style="color:#919399" /> <input class="uni-input" placeholder="请输入打包箱号" placeholder-style="color:#919399" v-model="searchParams.box_name" @input="handleInput(1, searchParams.box_name)" />
</view> </view>
<text class="iconfont icon-a-juxing11"></text> <text class="iconfont icon-a-juxing11" @click="clearInput(1)" v-if="input_flag_box_name"></text>
</view> </view>
<view class="row verCenter"> <view class="row verCenter">
<view class="icon-box row rowCenter verCenter"><text class="iconfont icon-juxing3"></text></view> <view class="icon-box row rowCenter verCenter" @click="refresh"><text class="iconfont icon-juxing3"></text></view>
</view> </view>
</view> </view>
</view> </view>
<view class="field-item row" style="margin-top: 39rpx;"> <view class="field-item row" style="margin-top: 39rpx;">
<view class="item row verCenter" style="flex: 0 0 100%;"> <view class="item row verCenter" style="flex: 0 0 100%;">
<text class="label">入库批次号:</text> <text class="label">入库批次号:</text>
<text class="text">ASN2201010001</text> <text class="text">{{ detail.stock_in_batch_sn }}</text>
</view> </view>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
...@@ -150,64 +176,64 @@ ...@@ -150,64 +176,64 @@
<view class="field-item row"> <view class="field-item row">
<view class="item row verCenter" style="flex: 0 0 100%;"> <view class="item row verCenter" style="flex: 0 0 100%;">
<text class="label">货品编码:</text> <text class="label">货品编码:</text>
<text class="tt" style="max-width: 100%;">6546546416541654665</text> <text class="tt" style="max-width: 100%;">{{ detail.goods_sn }}</text>
</view> </view>
<view class="item row verCenter" style="flex: 0 0 100%;"> <view class="item row verCenter" style="flex: 0 0 100%;">
<text class="label">货品名称:</text> <text class="label">货品名称:</text>
<text class="tt" style="max-width: 100%;">ASD3DAADS22</text> <text class="tt" style="max-width: 100%;">{{ detail.goods_name }}</text>
</view> </view>
<view class="item row verCenter" style="flex: 0 0 100%;"> <view class="item row verCenter" style="flex: 0 0 100%;">
<text class="label">标准品牌:</text> <text class="label">标准品牌:</text>
<text class="tt" style="max-width: 100%;">Nexperia</text> <text class="tt" style="max-width: 100%;">{{ detail.brand_name }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">D / C:</text> <text class="label">D / C:</text>
<text class="tt">22+</text> <text class="tt">{{ detail.date_code }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">产 地:</text> <text class="label">产 地:</text>
<text class="tt">美国</text> <text class="tt">{{ detail.coo }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">货品品质:</text> <text class="label">货品品质:</text>
<text class="tt">良品</text> <text class="tt">{{ detail.quality_val }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">入 仓 号:</text> <text class="label">入 仓 号:</text>
<text class="tt">C12345</text> <text class="tt">{{ detail.inhouse }}</text>
</view> </view>
<view class="item row verCenter" style="flex: 0 0 100%;margin-bottom: 17rpx;"> <view class="item row verCenter" style="flex: 0 0 100%;margin-bottom: 17rpx;">
<text class="label">其他批次属性:</text> <text class="label">其他批次属性:</text>
<text class="tt">-</text> <text class="tt">{{ detail.other_batch_attr }}</text>
</view> </view>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
<view class="field-item row"> <view class="field-item row">
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">锁库数量:</text> <text class="label">锁库数量:</text>
<text class="tt" style="color: #F98119;">100000</text> <text class="tt" style="color: #F98119;">{{ detail.lock_qty }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">锁库数量:</text> <text class="label">拣货数量:</text>
<text class="tt" style="color: #F98119;">0</text> <text class="tt" style="color: #F98119;">{{ detail.pick_qty }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">已复核数:</text> <text class="label">已复核数:</text>
<text class="tt" style="color: #F98119;">212</text> <text class="tt" style="color: #F98119;">{{ detail.recheck_qty }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">待复核数:</text> <text class="label">待复核数:</text>
<text class="tt" style="color: #F98119;">22222:</text> <text class="tt" style="color: #F98119;">{{ detail.no_recheck_qty }}</text>
</view> </view>
</view> </view>
<view class="form-input" style="margin-top: 17rpx;"> <view class="form-input" style="margin-top: 17rpx;">
<view class="input-title"><text class="input-title-t1">复核数量:</text></view> <view class="input-title"><text class="input-title-t1">复核数量:</text></view>
<view class="input-box"><input type="text" class="uni-input" placeholder-style="color:#919399" placeholder="请输入" /></view> <view class="input-box"><input type="text" class="uni-input" placeholder-style="color:#919399" placeholder="请输入复核数量" v-model="formParams.recheck_qty" /></view>
</view> </view>
<view class="field-item row"> <view class="field-item row">
<view class="item row verCenter" style="flex: 0 0 100%;"> <view class="item row verCenter" style="flex: 0 0 100%;">
<text class="label">销 售 员:</text> <text class="label">销 售 员:</text>
<text class="tt">拾贰</text> <text class="tt">{{ detail.sale_name }}</text>
</view> </view>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
...@@ -217,48 +243,11 @@ ...@@ -217,48 +243,11 @@
</view> </view>
<view class="btn row verCenter bothSide"> <view class="btn row verCenter bothSide">
<view class="btn0 row rowCenter verCenter" @click="closeDrawer(1)">取 消</view> <view class="btn0 row rowCenter verCenter" @click="closeDrawer(1)">取 消</view>
<view class="btn1 row rowCenter verCenter" style="width: 50%;">复 核</view> <view class="btn1 row rowCenter verCenter" style="width: 50%;" @click="markChecked(detail.stock_out_item_id, formParams.recheck_qty, searchParams.box_name)">复 核</view>
</view>
</view>
</uni-drawer>
<!-- 按货品复核一键详情弹窗 -->
<uni-drawer ref="showRightAll" mode="right">
<view class="uni-drawer-picking">
<view class="title row rowCenter verCenter">
<text class="iconfont icon-juxing2" @click="closeDrawer(0)"></text>
<text class="text">一键复核</text>
</view>
<view class="p-text">
<text class="tt">您已选中</text>
<text class="ed">5</text>
<text class="tt">个复核任务</text>
</view>
<view class="pack" style="margin-bottom: 25rpx;margin-top: 25rpx;">
<view class="h2">打包箱号:</view>
<view class="row verCenter bothSide">
<view class="search row bothSide verCenter">
<view class="row verCenter">
<text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请输入物流单号" placeholder-style="color:#919399" />
</view>
<text class="iconfont icon-a-juxing11"></text>
</view>
<view class="row verCenter">
<view class="icon-box row rowCenter verCenter"><text class="iconfont icon-juxing3"></text></view>
</view>
</view>
</view>
<view class="print row verCenter">
<text class="check-box-icon curr"></text>
<text class="tt">打印客户专属标签</text>
</view>
<view class="btn row verCenter bothSide">
<view class="btn0 row rowCenter verCenter" @click="closeDrawer(0)">取 消</view>
<view class="btn1 row rowCenter verCenter" style="width: 50%;">一键复核</view>
</view> </view>
</view> </view>
</uni-drawer> </uni-drawer>
<!-- 按容器复核详情弹窗 --> <!-- 按容器拣货-弹窗 -->
<uni-drawer ref="showRightPack" mode="right"> <uni-drawer ref="showRightPack" mode="right">
<view class="uni-drawer-picking"> <view class="uni-drawer-picking">
<view class="title row rowCenter verCenter"> <view class="title row rowCenter verCenter">
...@@ -268,78 +257,78 @@ ...@@ -268,78 +257,78 @@
<view class="field-item row" style="margin-top: 39rpx;"> <view class="field-item row" style="margin-top: 39rpx;">
<view class="item row verCenter" style="flex: 0 0 100%;"> <view class="item row verCenter" style="flex: 0 0 100%;">
<text class="label">容 器:</text> <text class="label">容 器:</text>
<text class="text">A00001</text> <text class="text">{{ detailContainer.container_sn }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">任 务 数:</text> <text class="label">任 务 数:</text>
<text class="tt">8</text> <text class="tt">{{ detailContainer.task_num }}</text>
</view> </view>
<view class="item row verCenter"> <view class="item row verCenter">
<text class="label">合计待复核数量:</text> <text class="label" style="white-space: nowrap;">合计待复核数量:</text>
<text class="tt">1118</text> <text class="tt">{{ detailContainer.total_check_num }}</text>
</view> </view>
</view> </view>
<view class="bor"></view> <view class="bor"></view>
<view class="item-tit">货品明细</view> <view class="item-tit">货品明细</view>
<view class="list-drawer"> <view class="list-drawer">
<scroll-view style="max-height: 755rpx" scroll-y="true"> <scroll-view style="max-height: 755rpx" scroll-y="true">
<view class="box row" v-for="(item, index) in 25" :key="index"> <view class="box row" v-for="(item, index) in detailContainer.list" :key="index">
<view class="input-box row verCenter" style="flex: 0 0 100%;"> <view class="input-box row verCenter" style="flex: 0 0 100%;">
<text class="label">入库批次号:</text> <text class="label">入库批次号:</text>
<text class="tt">L-ASN2201010001</text> <text class="tt">{{ item.stock_in_batch_sn }}</text>
</view> </view>
<view class="bor" style="flex: 0 0 100%;"></view> <view class="bor" style="flex: 0 0 100%;"></view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品编码:</text> <text class="label">货品编码:</text>
<text class="text">L-ASN2201010001</text> <text class="text">{{ item.goods_sn }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品名称:</text> <text class="label">货品名称:</text>
<text class="text">A65512</text> <text class="text">{{ item.goods_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">标准品牌:</text> <text class="label">标准品牌:</text>
<text class="text">TI</text> <text class="text">{{ item.brand_name }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">D / C:</text> <text class="label">D / C:</text>
<text class="text">22+</text> <text class="text">{{ item.date_code }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">产 地:</text> <text class="label">产 地:</text>
<text class="text">C12345</text> <text class="text">{{ item.coo }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">货品品质:</text> <text class="label">货品品质:</text>
<text class="text">良品</text> <text class="text">{{ item.quality_val }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">入 仓 号:</text> <text class="label">入 仓 号:</text>
<text class="text">C12345</text> <text class="text">{{ item.inhouse }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">其他批次属性:</text> <text class="label">其他批次属性:</text>
<text class="text">-</text> <text class="text">{{ item.other_batch_attr }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">锁库数量:</text> <text class="label">锁库数量:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.lock_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">拣货数量:</text> <text class="label">拣货数量:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.pick_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">已复核数:</text> <text class="label">已复核数:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.recheck_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">待复核数:</text> <text class="label">待复核数:</text>
<text class="text" style="color: #F98119;">2121</text> <text class="text" style="color: #F98119;">{{ item.no_recheck_qty }}</text>
</view> </view>
<view class="input-box row verCenter"> <view class="input-box row verCenter">
<text class="label">销 售 员:</text> <text class="label">销 售 员:</text>
<text class="text">朱国军</text> <text class="text">{{ item.sale_name }}</text>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
...@@ -349,7 +338,44 @@ ...@@ -349,7 +338,44 @@
<text class="check-box-icon curr"></text> <text class="check-box-icon curr"></text>
<text class="text">打印客户专属标签</text> <text class="text">打印客户专属标签</text>
</view> </view>
<view class="btn1 row rowCenter verCenter" style="width: calc(100% - 248rpx);">复 核</view> <view class="btn1 row rowCenter verCenter" style="width: calc(100% - 248rpx);" @click="multiMarkChecked()">复 核</view>
</view>
</view>
</uni-drawer>
<!-- 按货品复核一键详情弹窗 -->
<uni-drawer ref="showRightAll" mode="right">
<view class="uni-drawer-picking">
<view class="title row rowCenter verCenter">
<text class="iconfont icon-juxing2" @click="closeDrawer(0)"></text>
<text class="text">一键复核</text>
</view>
<view class="p-text">
<text class="tt">您已选中</text>
<text class="ed">{{ filter_id.length }}</text>
<text class="tt">个复核任务</text>
</view>
<view class="pack" style="margin-bottom: 25rpx;margin-top: 25rpx;">
<view class="h2">打包箱号:</view>
<view class="row verCenter bothSide">
<view class="search row bothSide verCenter">
<view class="row verCenter">
<text class="iconfont icon-juxing1"></text>
<input class="uni-input" placeholder="请输入物流单号" placeholder-style="color:#919399" v-model="searchParams.box_name" />
</view>
<text class="iconfont icon-a-juxing11" @click="clearInput(1)" v-if="input_flag_box_name"></text>
</view>
<view class="row verCenter">
<view class="icon-box row rowCenter verCenter" @click="refresh"><text class="iconfont icon-juxing3"></text></view>
</view>
</view>
</view>
<view class="print row verCenter">
<text class="check-box-icon curr"></text>
<text class="tt">打印客户专属标签</text>
</view>
<view class="btn row verCenter bothSide">
<view class="btn0 row rowCenter verCenter" @click="closeDrawer(0)">取 消</view>
<view class="btn1 row rowCenter verCenter" style="width: 50%;" @click="multiMarkChecked">一键复核</view>
</view> </view>
</view> </view>
</uni-drawer> </uni-drawer>
...@@ -358,11 +384,37 @@ ...@@ -358,11 +384,37 @@
<script> <script>
import { API } from '@/util/api.js'; import { API } from '@/util/api.js';
import { createArray } from '@/util/util.js';
import debounce from 'lodash/debounce';
export default { export default {
data() { data() {
return { return {
stock_out_sn: '', //标题显示出库单号
lock_ids: [], //出库id集合
all_flag: false, //全选标记
input_flag_box_name: false,
input_flag_stock_in_batch_sn: false,
input_flag_container_sn: false,
page: 1,
limit: 1000,
curr: 0, curr: 0,
itemArr: ['按货品复核', '按容器复核'] itemArr: ['按货品复核', '按容器复核'],
list: [],
filter_list: [], //筛选已选中的列表
filter_id: [], //过滤处理的id
detail: {}, //按货品拣货详情
detailContainer: {}, //按容器拣货详情
stock_out_item_ids: '', //复核任务ids
searchParams: {
stock_out_id: '',
box_name: '001',
stock_in_batch_sn: '',
container_sn: ''
},
formParams: {
recheck_qty: ''
}
}; };
}, },
onNavigationBarButtonTap(e) { onNavigationBarButtonTap(e) {
...@@ -372,17 +424,183 @@ export default { ...@@ -372,17 +424,183 @@ export default {
}); });
} }
}, },
onLoad() {}, onLoad(options) {
this.searchParams.stock_out_id = options.stock_out_id || '';
},
onShow() {
this.getData();
},
methods: { methods: {
/**
* 找出false对应的下标
* @param {Object} arr
* @param {Object} target
*/
findIndex(arr, target) {
const result = [];
arr.map((item, index) => {
if (item === target) {
result.push(index);
}
});
return result;
},
/**
* 筛选过滤出选中的元素
*/
filterChange(index) {
this.$set(this.filter_list, index, (this.filter_list[index] = !this.filter_list[index]));
let filter_arr = this.findIndex(this.filter_list, true);
this.filter_id = filter_arr.map(i => this.list[i].stock_out_item_id);
},
/**
* 全选
*/
allChnage() {
this.all_flag = !this.all_flag;
this.filter_list = createArray(this.list.length, this.all_flag);
if (this.all_flag) {
this.filter_id = this.list.map(function(item) {
return item.stock_out_item_id;
});
} else {
this.filter_id = [];
}
},
/**
* 自动补齐3位
* @param {Object} num
*/
autoFillInt(num) {
return String(num + 1).padStart(3, '0');
},
/**
* 刷新数字
*/
refresh() {
this.searchParams.box_name = this.autoFillInt(Number(this.searchParams.box_name));
},
/**
* 清空数据
*/
clearInput(type) {
if (type == 1) {
this.searchParams.box_name = '';
this.input_flag_box_name = false;
} else if (type == 2) {
this.searchParams.stock_in_batch_sn = '';
this.input_flag_stock_in_batch_sn = false;
} else if (type == 3) {
this.searchParams.container_sn = '';
this.input_flag_container_sn = false;
}
this.getData();
},
/**
* 单号搜索
* @param {Object} event
*/
handleInput: debounce(function(type, val) {
if (val) {
if (type == 1) {
this.input_flag_box_name = true;
} else if (type == 2) {
this.input_flag_stock_in_batch_sn = true;
} else if (type == 3) {
this.input_flag_container_sn = true;
}
} else {
if (type == 1) {
this.input_flag_box_name = false;
} else if (type == 2) {
this.input_flag_stock_in_batch_sn = false;
} else if (type == 3) {
this.input_flag_container_sn = false;
}
}
this.getData();
}, 500),
tab(index) { tab(index) {
this.curr = index; this.curr = index;
this.getData();
},
/**
*按货品复核-单个复核
*/
markChecked(stock_out_item_id, recheck_qty, box_name) {
if (Number(this.formParams.recheck_qty) <= 0) {
uni.showToast({
title: '输入复核数量',
icon: 'error'
});
return false;
}
this.request(API.markChecked, 'POST', { stock_out_item_id: stock_out_item_id, recheck_qty: recheck_qty, box_name: box_name }, true).then(res => {
if (res.code === 0) {
uni.showToast({
title: '复核成功',
icon: 'success'
});
setTimeout(() => {
this.getData();
this.closeDrawer(1);
}, 2000);
} else {
uni.showModal({
itle: '提示',
content: res.msg,
showCancel: false
});
}
});
}, },
showDrawer(type) { /**
* 按容器复核-一键复核
*/
multiMarkChecked() {
this.request(API.multiMarkChecked, 'POST', { stock_out_item_ids: this.stock_out_item_ids.join(',') }, true).then(res => {
if (res.code === 0) {
uni.showToast({
title: '复核成功',
icon: 'success'
});
setTimeout(() => {
this.getData();
this.closeDrawer(2);
}, 2000);
} else {
uni.showModal({
itle: '提示',
content: res.msg,
showCancel: false
});
}
});
},
showDrawer(type, data) {
if (type == 1) { if (type == 1) {
this.$refs.showRight.open(); this.$refs.showRight.open();
this.detail = data;
this.formParams.recheck_qty = data.no_recheck_qty;
} else if (type == 2) { } else if (type == 2) {
this.$refs.showRightPack.open(); this.$refs.showRightPack.open();
this.detailContainer = data;
this.stock_out_item_ids = data.list.map(function(item) {
return item.stock_out_item_id;
});
} else if (type == 0) { } else if (type == 0) {
//一键复核
if (this.filter_id.length == 0) {
uni.showToast({
title: '请勾选数据',
icon: 'error'
});
return false;
}
this.detail = data;
this.stock_out_item_ids = data.list.map(function(item) {
return item.stock_out_item_id;
});
this.$refs.showRightAll.open(); this.$refs.showRightAll.open();
} }
}, },
...@@ -394,6 +612,31 @@ export default { ...@@ -394,6 +612,31 @@ export default {
} else if (type == 0) { } else if (type == 0) {
this.$refs.showRightAll.close(); this.$refs.showRightAll.close();
} }
},
/**
* 获取列表数据
*/
getData() {
var URL = '';
if (this.curr == 0) {
URL = API.getRecheckTaskItems;
} else if (this.curr == 1) {
URL = API.getContainerTaskList;
}
uni.setNavigationBarTitle({
title: this.stock_out_sn + '复核'
});
this.request(URL, 'POST', { page: this.page, limit: this.limit, ...this.searchParams }, false).then(res => {
if (res.code === 0) {
this.list = res.data.list;
this.filter_list = createArray(this.list.length, false);
} else {
uni.showToast({
title: res.msg,
icon: 'error'
});
}
});
} }
} }
}; };
......
...@@ -84,6 +84,50 @@ const API = { ...@@ -84,6 +84,50 @@ const API = {
* */ * */
makeMultiPickingFinish: API_BASE + '/api/stockOut/makeMultiPickingFinish', makeMultiPickingFinish: API_BASE + '/api/stockOut/makeMultiPickingFinish',
/** /**
* 我的拣货
* */
getTakedList: API_BASE + '/api/stockOut/getTakedList',
/**
* 领取拣货单
* */
take: API_BASE + '/api/stockOut/take',
/**
* 获取我的拣货记录
* */
getAllPickedList: API_BASE + '/api/stockOut/getAllPickedList',
/**
* 取消拣货
* */
cancelPicking: API_BASE + '/api/stockOut/cancelPicking',
/**
* 释放已领取拣货单
* */
cancelTake: API_BASE + '/api/stockOut/cancelTake',
/**
* 复核列表
* */
getToCheckList: API_BASE + '/api/stockRecheck/getToCheckList',
/**
* 复核确认
* */
makeStockOutFinish: API_BASE + '/api/stockRecheck/makeStockOutFinish',
/**
* 按货品复核列表
* */
getRecheckTaskItems: API_BASE + '/api/stockRecheck/getRecheckTaskItems',
/**
* 按容器复核列表
* */
getContainerTaskList: API_BASE + '/api/stockRecheck/getContainerTaskList',
/**
* 标记复核
* */
markChecked: API_BASE + '/api/stockRecheck/markChecked',
/**
* 一键复核
* */
multiMarkChecked: API_BASE + '/api/stockRecheck/multiMarkChecked',
/**
* 上传文件 * 上传文件
* */ * */
upload: API_BASE_LIEXIN + '/oss/upload', upload: API_BASE_LIEXIN + '/oss/upload',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment