Files
hht-hdyy-uni/pages/hdyy/ccgl/xuni-outstore-kcquery.vue
2026-04-01 19:00:34 +08:00

141 lines
4.0 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="zd_container">
<!-- 库存查询虚拟出库 -->
<nav-bar :title="title" :inner="true"></nav-bar>
<view class="zd_content">
<view class="zd_wrapper">
<view class="zd-row border-bottom">
<view class="zd-col-6">
<span class="filter_label">物料编码</span>
</view>
<!-- <view class="zd-col-18">
<input type="text" v-model="pcsn" class="filter_input">
</view> -->
<view class="zd-col-18">
<search-box v-model="mcode"/>
</view>
</view>
<view class="zd-row border-bottom">
<view class="zd-col-6">
<span class="filter_label">批次</span>
</view>
<view class="zd-col-18">
<input type="text" v-model="pcsn" class="filter_input">
</view>
</view>
</view>
<view class="zd_wrapper grid-wraper">
<view class="slide_new">
<table>
<thead>
<tr>
<th @tap="toAllCheck"><uni-icons :type="allCheck ? 'checkbox' : 'circle'" size="24" color="#4e6ef2"></uni-icons></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 @tap="toCheck(e)"><uni-icons :type="e.checked ? 'checkbox' : 'circle'" size="24" color="#4e6ef2"></uni-icons></td>
<td>{{e.storagevehicle_code}}</td>
<td>{{e.material_code}}</td>
<td>{{e.material_name}}</td>
<td>{{e.pcsn}}</td>
<td>{{e.canuse_qty}}</td>
<td>{{e.quality_code}}</td>
<td>{{e.produce_name}}</td>
</tr>
</tbody>
</table>
</view>
</view>
</view>
<view class="zd-row submit-bar">
<button class="zd-col-11 button-primary" @tap="_hyQueryIvt">查询</button>
<button class="zd-col-11 button-primary" :class="{'button-info': !(this.checkedArr.length)}" @tap="toSure">确认</button>
</view>
</view>
</template>
<script>
import NavBar from '@/components/NavBar.vue'
import SearchBox from '@/components/SearchBox.vue'
import {hyQueryIvt} from '@/utils/getData3.js'
export default {
components: {
NavBar,
SearchBox
},
data() {
return {
title: '',
mcode: '',
pcsn: '',
dataList: [],
// dataList: [{storagevehicle_code: 'm001', qty: 100, checked: false, initialQty: 100}, {storagevehicle_code: 'm002', qty: 200, checked: false, initialQty: 200}, {storagevehicle_code: 'm003', qty: 300, checked: false, initialQty: 300}, {storagevehicle_code: 'm004', qty: 400, checked: false, initialQty: 400}],
allCheck: false,
checkedArr: []
};
},
onLoad (options) {
this.title = options.title
},
methods: {
async _hyQueryIvt () {
try {
let res = await hyQueryIvt(this.mcode, this.pcsn)
if (res && res.data.length > 0) {
this.dataList = [...res.data]
} else {
this.dataList = []
}
} catch (e) {
this.dataList = []
}
},
toAllCheck () {
this.allCheck = !this.allCheck
this.dataList.map(el => {
el.checked = this.allCheck
})
this.checkedArr = this.dataList.filter(el => el.checked === true)
},
toCheck (e) {
e.checked = !e.checked
this.checkedArr = this.dataList.filter(el => el.checked === true)
this.allCheck = this.checkedArr.length === this.dataList.length
},
// 检查数组中的 storagevehicle_code 是否重复
checkDuplicate(checkedArr) {
const codes = new Set();
for (const item of checkedArr) {
const code = item.storagevehicle_code;
if (codes.has(code)) {
// 存在重复,提示用户
uni.showToast({
title: '虚拟载具不能相同',
icon: 'none'
})
return false;
}
codes.add(code);
}
return true;
},
toSure () {
if (this.checkedArr.length) {
if (this.checkDuplicate(this.checkedArr)) {
// 没有重复,执行提交逻辑
this.$store.dispatch('setPublicArr', this.checkedArr)
uni.navigateBack()
}
}
}
}
}
</script>