<template>
|
<view >
|
<scroll-view scroll-y catch:touchmove="touchmove">
|
<view class="square-none" v-show="matList.length === 0">
|
<view class="v-show">暂无更多数据...</view>
|
</view>
|
<checkbox-group @change="checkbox">
|
<view v-for="(item,index) in matList" :key="index" class="data-list bg-false" :class="'bg-'+item.checked" >
|
<view class="data-list-left">
|
<view><text style="width: 400rpx;">库位号:{{item.locNo}}</text></view>
|
<view class="matnr"><text style="width: 400rpx;">品号:{{item.matnr}}</text></view>
|
<view><text style="width: 400rpx;">规格:{{item.specs}}</text></view>
|
<view><text style="width: 400rpx;">工序:{{item.sku}}</text></view>
|
<view>
|
<text style="width: 400rpx;">数量:{{item.anfme}}</text>
|
</view>
|
<view><text style="width: 400rpx;">备注:{{item.memo}}</text></view>
|
</view>
|
<view class="data-list-right">
|
<label><uni-icons type="trash" size="25" color="#a5a5a5" @click="remove(item,index)"></uni-icons></label>
|
<label><uni-icons type="arrow-right" size="20" color="#a5a5a5" @click="revise(item,index)"></uni-icons></label>
|
</view>
|
</view>
|
</checkbox-group>
|
</scroll-view>
|
|
<uni-popup ref="revise" type="center" :mask-click="false" :radius="16" background-color="#fff" class="custom-popup">
|
<view class="revise-box">
|
<!-- 头部区域 -->
|
<view class="revise-header">
|
<view class="header-decorator"></view>
|
<text class="header-title">确认呼叫</text>
|
<uni-icons
|
type="closeempty"
|
size="24"
|
color="#999"
|
class="close-icon"
|
@click="$refs.revise.close()">
|
</uni-icons>
|
</view>
|
|
<!-- 操作按钮组 -->
|
<view class="revise-footer">
|
<button
|
class="action-btn cancel-btn"
|
hover-class="button-hover"
|
@click="callLocMastQ()">
|
取消
|
</button>
|
<button
|
class="action-btn confirm-btn"
|
hover-class="button-hover"
|
@click="callLocMast()">
|
确认
|
</button>
|
</view>
|
</view>
|
</uni-popup>
|
|
<!-- 底部按钮 -->
|
<!-- <view class="footer flex justify-around"> -->
|
<!-- <label class="label-btn" style="width: 150rpx;">
|
<button class="cu-btn" @click="resst()">重置</button>
|
</label> -->
|
<!-- <label class="label-btn">
|
<button class="cu-btn bg-blue " @click="callLocMastAll()">批量呼叫</button>
|
</label>
|
</view> -->
|
</view>
|
</template>
|
|
<script>
|
import permision from "@/common/permission.js"
|
export default {
|
data() {
|
return {
|
commonUrl:null,
|
barcode: '',
|
barcodeFocus:true,
|
focus:false,
|
type: 'center',
|
searchBox: 'hide',
|
pick:'hide',
|
matnr:'',
|
matList:[],
|
result: '',
|
enableQty:'',
|
count:'',
|
minCount:0,
|
maxCount:'',
|
rowNum:'',
|
check:false,
|
checkText:'全选',
|
checkedData:[],
|
batch:''
|
}
|
},
|
onLoad(option) {
|
let that = this
|
// #ifdef APP-NVUE
|
const eventChannel = this.$scope.eventChannel; // 兼容APP-NVUE
|
// #endif
|
// #ifndef APP-NVUE
|
const eventChannel = this.getOpenerEventChannel();
|
// #endif
|
|
// 监听acceptDataFromOpenerPage事件,获取上一页面通过eventChannel传送到当前页面的数据
|
eventChannel.on('locData', function(data) {
|
that.matList = data.data
|
})
|
},
|
mounted(){
|
const UIP = uni.getStorageSync('UIP');
|
this.baseIP = UIP;
|
const UPORT = uni.getStorageSync('UPORT');
|
this.basePORT = UPORT
|
const PROJ = uni.getStorageSync('UPROJ');
|
this.baseUrl = PROJ
|
this.getUrl()
|
},
|
methods: {
|
// 获取url
|
getUrl() {
|
this.commonUrl = this.baseHttp + this.baseIP + ':' +this.basePORT + "/" +this.baseUrl
|
},
|
// 商品光标清空重置
|
focuss() {
|
// #ifdef APP
|
let that = this;
|
that.focus = false;
|
setTimeout(()=>{
|
that.matnr = '';
|
that.focus = true;
|
}, 100);
|
// #endif
|
},
|
resst() {
|
this.matList = []
|
this.barcode = ''
|
this.barcodeFocuss()
|
uni.vibrateShort();
|
},
|
removeBarcode() {
|
this.barcode = ''
|
uni.vibrateShort();
|
this.barcodeFocus = false;
|
this.$nextTick(function() {
|
this.barcodeFocus = true;
|
});
|
},
|
removeMatnr() {
|
this.matnr = ''
|
uni.vibrateShort();
|
this.focus = false;
|
this.$nextTick(function() {
|
this.focus = true;
|
});
|
},
|
// 列表删除按钮
|
remove(item,index) {
|
this.matList.splice(index,1)
|
uni.vibrateShort();
|
},
|
callLocMastQ() {
|
uni.vibrateShort();
|
let that = this;
|
uni.showLoading();
|
|
uni.showToast({
|
title: '操作成功',
|
icon: 'success',
|
duration: 1500
|
});
|
that.findBySelectK();
|
},
|
callLocMast() {
|
uni.vibrateShort();
|
let that = this;
|
uni.showLoading();
|
uni.request({
|
url: that.commonUrl + '/mobile/kitting/call/auth',
|
data: {
|
locNo:that.matList[that.rowNum].locNo
|
},
|
header: {
|
'token':uni.getStorageSync('token')
|
},
|
success(result) {
|
uni.hideLoading();
|
var res = result.data
|
if (res.code === 200) {
|
that.$refs.revise.close();
|
// 先显示操作成功提示
|
uni.showToast({
|
title: '呼叫成功',
|
icon: 'success',
|
duration: 1500
|
});
|
that.findBySelectK();
|
} else if (res.code == 403) {
|
uni.showToast({title: res.msg, icon: "none", position: 'top'})
|
setTimeout(() => {
|
uni.reLaunch({
|
url: '../login/login'
|
});
|
}, 1000);
|
} else {
|
uni.showToast({title: res.msg, icon: "none",position: 'top'})
|
}
|
}
|
});
|
},
|
callLocMastAll() {
|
uni.vibrateShort();
|
let that = this;
|
uni.showLoading();
|
uni.request({
|
url: that.commonUrl + '/mobile/kitting/call/all/auth',
|
data: JSON.stringify({
|
combParam:that.matList
|
}),
|
header: {
|
'token':uni.getStorageSync('token')
|
},
|
success(result) {
|
uni.hideLoading();
|
var res = result.data
|
if (res.code === 200) {
|
that.$refs.revise.close();
|
// 先显示操作成功提示
|
uni.showToast({
|
title: '呼叫成功',
|
icon: 'success',
|
duration: 1500
|
});
|
that.findBySelectK();
|
} else if (res.code == 403) {
|
uni.showToast({title: res.msg, icon: "none", position: 'top'})
|
setTimeout(() => {
|
uni.reLaunch({
|
url: '../login/login'
|
});
|
}, 1000);
|
} else {
|
uni.showToast({title: res.msg, icon: "none",position: 'top'})
|
}
|
}
|
});
|
},
|
|
// 添加商品
|
addMat(mat) {
|
this.matList.unshift(mat)
|
},
|
checkMat(mat) {
|
var len = this.matList.length
|
var add = true
|
for (var i = 0; i < len; i++) {
|
if (mat.matnr == this.matList[i].matnr) {
|
this.matList[i].anfme += mat.anfme
|
this.$forceUpdate() // 强制刷新
|
add = false
|
}
|
}
|
if (add) {
|
this.matList.unshift(mat)
|
}
|
},
|
change(e) {
|
console.log('当前模式:' + e.type + ',状态:' + e.show);
|
},
|
toggle(type) {
|
this.type = type
|
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
|
this.$refs.goodsSearch.open(type)
|
},
|
checkbox: function (e) {
|
var items = this.matList,
|
values = e.detail.value;
|
for (var i = 0, lenI = items.length; i < lenI; ++i) {
|
const item = items[i]
|
item.id = item.id + ''
|
if(values.indexOf(item.id) >= 0){
|
this.$set(item,'checked',true)
|
}else{
|
this.$set(item,'checked',false)
|
}
|
}
|
if (values.length == items.length) {
|
this.check = true
|
this.checkText = "取消全选"
|
} else {
|
this.check = false
|
this.checkText = "全选"
|
}
|
uni.vibrateShort();
|
},
|
revise(item,index) {
|
this.count = this.matList[index].anfme
|
this.rowNum = index
|
this.eject()
|
},
|
eject(type) {
|
this.type = type
|
// open 方法传入参数 等同在 uni-popup 组件上绑定 type属性
|
this.$refs.revise.open(type)
|
},
|
changeValue(value) {
|
this.count = value
|
},
|
confirm() {
|
this.matList[this.rowNum].anfme = this.count
|
this.matList[this.rowNum].batch = this.batch
|
this.$refs.revise.close()
|
this.$forceUpdate() // 强制刷新
|
},
|
// 列表反选
|
reChecked() {
|
if (this.matList.length == 0) {
|
return;
|
}
|
var checkArr = []
|
for (var i = 0; i < this.matList.length;i++) {
|
if (this.matList[i].checked == true) {
|
this.$set(this.matList[i],'checked',false)
|
}else{
|
this.$set(this.matList[i],'checked',true)
|
}
|
if (this.matList[i].checked == true) {
|
checkArr.push(this.matList[i].checked)
|
}
|
}
|
if (checkArr.length == this.matList.length) {
|
this.check = true
|
this.checkText = "取消全选"
|
} else {
|
this.check = false
|
this.checkText = "全选"
|
}
|
uni.vibrateShort();
|
},
|
// 列表全选
|
allChecked(e){
|
|
if (this.check == true) {
|
for (var i = 0; i < this.matList.length;i++) {
|
this.$set(this.matList[i],'checked',false)
|
}
|
this.check = false
|
this.checkText = "全选"
|
} else {
|
for (var i = 0; i < this.matList.length;i++) {
|
this.$set(this.matList[i],'checked',true)
|
}
|
this.check = true
|
this.checkText = "取消全选"
|
}
|
uni.vibrateShort();
|
},
|
findBySelectK() {
|
// 延迟500ms执行跳转(确保提示可见)
|
setTimeout(() => {
|
uni.reLaunch({
|
url: 'kitting'
|
});
|
}, 500);
|
}
|
}
|
}
|
</script>
|
|
<style>
|
/* @import "../../colorui/main.css";
|
@import "../../colorui/icon.css"; */
|
/* 弹窗容器 */
|
.custom-popup {
|
border-radius: 24rpx;
|
box-shadow: 0 12rpx 40rpx rgba(0,0,0,0.15);
|
overflow: hidden;
|
}
|
|
.revise-box {
|
width: 600rpx;
|
padding: 40rpx 0;
|
}
|
|
/* 头部优化 */
|
.revise-header {
|
position: relative;
|
padding: 0 40rpx 30rpx;
|
border-bottom: 2rpx solid #eee;
|
}
|
|
.header-decorator {
|
position: absolute;
|
left: 0;
|
top: 50%;
|
transform: translateY(-50%);
|
width: 8rpx;
|
height: 36rpx;
|
background: #007AFF;
|
border-radius: 4rpx;
|
}
|
|
.header-title {
|
font-size: 36rpx;
|
font-weight: 600;
|
color: #333;
|
margin-left: 32rpx;
|
}
|
|
.close-icon {
|
position: absolute;
|
right: 32rpx;
|
top: 50%;
|
transform: translateY(-50%);
|
padding: 12rpx;
|
}
|
|
/* 按钮组优化 */
|
.revise-footer {
|
display: flex;
|
justify-content: space-between;
|
padding: 40rpx 32rpx 0;
|
}
|
|
.action-btn {
|
flex: 1;
|
height: 88rpx;
|
border-radius: 12rpx;
|
font-size: 32rpx;
|
transition: all 0.2s;
|
}
|
|
.cancel-btn {
|
background: #f8f8f8;
|
color: #666;
|
margin-right: 24rpx;
|
}
|
|
.confirm-btn {
|
background: #007AFF;
|
color: #fff;
|
margin-left: 24rpx;
|
}
|
|
.button-hover {
|
opacity: 0.9;
|
transform: scale(0.98);
|
}
|
|
.revise-box {
|
position: relative;
|
width: 500rpx;
|
height: 400rpx;
|
border-radius: 25px;
|
}
|
.revise-box-top {
|
width: 400rpx;
|
height: 120rpx;
|
border-radius: 25px;
|
}
|
.changeBox {
|
width: 400rpx;
|
height: 100rpx;
|
}
|
.num-box {
|
margin-left: 100rpx;
|
}
|
.revise-box-buttom{
|
margin-left: 190rpx;
|
}
|
.pak-seach-box {
|
background-color: #FFFFFF;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
width: 96%;
|
height: 150rpx;
|
border-radius: 20rpx;
|
}
|
.box-top{
|
display: block;
|
height: 60rpx;
|
width: 720rpx;
|
}
|
.color-block-blue {
|
background-color: #1E9FFF;
|
display: inline-block;
|
float: left;
|
margin: 15rpx 15rpx 0 15rpx;
|
width: 12rpx;
|
height: 40rpx;
|
border: 5rpx solid #1E9FFF;
|
border-radius: 20rpx;
|
}
|
.title {
|
display: inline-block;
|
float: left;
|
font-size: 34rpx;
|
font-weight: 700;
|
height: 50rpx;
|
line-height: 50rpx;
|
margin-top: 10rpx;
|
}
|
.box-buttom {
|
display: inline-block;
|
background-color: #ededed;
|
width: 65%;
|
height: 60rpx;
|
border-radius: 20rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
}
|
.box-buttom input {
|
width: 75%;
|
float: left;
|
margin: 8rpx 10rpx 0rpx 25rpx;
|
}
|
.box-buttom .search-icon{
|
width: 60rpx;
|
height: 60rpx;
|
float: right;
|
margin-top: 5rpx;
|
margin-right: 10rpx;
|
}
|
.pak-seach-box button {
|
background-color: #1E9FFF;
|
color: #ffffff;
|
display: inline-block;
|
float: right;
|
width: 180rpx;
|
height: 60rpx;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
line-height: 60rpx;
|
}
|
.pakin-btn {
|
background-color: #1E9FFF;
|
}
|
.pak-data-box {
|
background-color: #F1F1F1;
|
margin: 15rpx 15rpx 0rpx 15rpx;
|
width: 96%;
|
height: 70rpx;
|
border-radius: 20rpx;
|
}
|
.pak-data-box .box-top {
|
background-color: #FFFFFF;
|
height: 70rpx;
|
border-radius: 20rpx 20rpx 20rpx 20rpx;
|
}
|
.bg-false {
|
background-color: #FFFFFF;
|
}
|
.bg-true {
|
background-color: #ebebeb;
|
}
|
.data-list {
|
border-bottom: 1px solid #d8d8d8;
|
height: 260rpx;
|
margin: 15rpx;
|
border-radius: 20rpx;
|
}
|
.data-list:first-child {
|
margin-top: 20rpx;
|
}
|
.data-list:last-child {
|
margin-bottom: 120rpx;
|
}
|
.data-list-left {
|
display: inline-block;
|
float: left;
|
margin-left: 6%;
|
height: 180rpx;
|
color: #676767;
|
}
|
.matnr {
|
padding-top: 10rpx;
|
}
|
.data-list-right {
|
display: inline-block;
|
float: right;
|
height: 180rpx;
|
line-height: 180rpx;
|
}
|
.data-list-right label {
|
display: inline-block;
|
float: left;
|
width: 80rpx;
|
height: 180rpx;
|
}
|
</style>
|