This commit is contained in:
lsymicc
2025-12-10 09:32:28 +08:00
parent f80481c93d
commit 999c2bdc54
7 changed files with 76 additions and 40 deletions

View File

@@ -52,7 +52,7 @@ export function submitError(data) {
})
}
export function sunbmitDeatil(query) {
export function submitDetail(query) {
return request({
url: '/out/submit/list',
method: 'get',

View File

@@ -517,6 +517,7 @@
this.subOrderInfo = null
},
handleQuantityInput(value) {
console.log(this.subOrderInfo.quantity)
const numValue = Number(value)
if (numValue <= 0) {
this.inQuantity = ''
@@ -536,26 +537,26 @@
}
this.inQuantity = String(numValue)
},
handleQuantityInput(value) {
const numValue = Number(value)
if (numValue <= 0) {
this.inQuantity = ''
uni.showToast({
title: this.$t('inbound.bindMsg.quantityGreaterThanZero'),
icon: 'none'
})
return
}
if (numValue > this.subOrderInfo.quantity) {
this.inQuantity = String(this.subOrderInfo.quantity)
uni.showToast({
title: this.$t('inbound.bindMsg.notExceedMaxQuantity'),
icon: 'none'
})
return
}
this.inQuantity = String(numValue)
},
// handleQuantityInput(value) {
// const numValue = Number(value)
// if (numValue <= 0) {
// this.inQuantity = ''
// uni.showToast({
// title: this.$t('inbound.bindMsg.quantityGreaterThanZero'),
// icon: 'none'
// })
// return
// }
// if (numValue > this.subOrderInfo.quantity) {
// this.inQuantity = String(this.subOrderInfo.quantity)
// uni.showToast({
// title: this.$t('inbound.bindMsg.notExceedMaxQuantity'),
// icon: 'none'
// })
// return
// }
// this.inQuantity = String(numValue)
// },
// 处理绑定子单据事件
async handleBindSubOrder() {
// 验证必填信息

View File

@@ -34,7 +34,13 @@
<view v-for="(material, mIndex) in item.materials" :key="mIndex" class="material-item">
<view class="material-row" :class="{'checked': material.stockStatus === '1'}">
<!-- <text class="material-code">{{ material.productId }}</text> -->
<text class="material-name">{{ material.extraField.materialDesc }}</text>
<view>
<text class="material-name">{{ material.extraField.materialDesc }}</text>
<text class="material-status" :class="{'status-checked': material.stockStatus == '1'}">
{{ material.stockStatus == '1' ? $t('inbound.qualityCheck.checked') : $t('inbound.qualityCheck.unchecked') }}
</text>
</view>
<view class="material-quantity">
<text>{{ $t('inbound.qualityCheck.quantity') }}</text>
<uni-easyinput
@@ -42,12 +48,10 @@
type="number"
@input="handleQuantityChange(index, mIndex, $event)"
style="width: 200rpx; display: inline-block;"
style="width: 180rpx; display: inline-block;"
/>
</view>
<text class="material-status" :class="{'status-checked': material.stockStatus == '1'}">
{{ material.stockStatus == '1' ? $t('inbound.qualityCheck.checked') : $t('inbound.qualityCheck.unchecked') }}
</text>
<button class="check-button" @click="handleQualityCheck(index, mIndex)">{{ $t('inbound.qualityCheck.check') }}</button>
</view>
</view>
@@ -195,12 +199,31 @@ export default {
// 质检操作
async handleQualityCheck(index, mIndex) {
const material = this.orderList[index].materials[mIndex]
// if(material.stockStatus == 1)
// {
// uni.showToast({
// title:"该物料已质检",
// icon: "error"
// })
// return
// }
if(material.quantity <= 0)
{
uni.showToast({
title:"请输入正确数量",
icon: "error"
})
return
}
const response = await updateReceiveStockinStatus({
stockinDetailId: material.stockinDetailId,
quantity: material.quantity,
stockinGuid:material.stockinGuid,
stockStatus: '1'
})
if (response.code === 200) {
uni.showToast({
title: `${material.extraField.materialDesc} ${this.$t('inbound.qualityCheck.checkSuccess')}`,
@@ -299,7 +322,7 @@ export default {
}
.material-detail {
margin: 0 24rpx 24rpx;
margin: 0rpx 10rpx 10rpx;
transition: all 0.3s ease;
max-height: 600rpx;
overflow-y: auto;
@@ -320,6 +343,7 @@ export default {
&:active {
background-color: #3a8ee6;
background: linear-gradient(to bottom, #537bff 0%, #318aff 70%,);
}
}
}
@@ -331,7 +355,7 @@ export default {
.material-row {
display: flex;
align-items: center;
padding: 20rpx 0;
padding: 20rpx 15rpx;
gap: 20rpx;
flex-wrap: nowrap;
@@ -343,9 +367,10 @@ export default {
.material-name {
flex: 1;
font-size: 28rpx;
display: flex;
font-size: 26rpx;
color: #303133;
min-width: 200rpx;
min-width: 148rpx;
word-break: break-word;
white-space: normal;
overflow: hidden;
@@ -354,7 +379,7 @@ export default {
.material-quantity {
font-size: 26rpx;
color: #606266;
width: 250rpx;
width: 230rpx;
display: flex;
align-items: center;
gap: 10rpx;
@@ -366,13 +391,14 @@ export default {
color: #fff;
border: none;
border-radius: 10rpx;
padding: 12rpx 24rpx;
padding: 5rpx 24rpx;
font-size: 26rpx;
cursor: pointer;
min-width: 100rpx;
&:active {
background-color: #3a8ee6;
background: linear-gradient(to bottom, #537bff 0%, #318aff 70%,);
}
&.button-disabled {

View File

@@ -101,7 +101,7 @@
</template>
<script>
import { sunbmitDeatil, bindDetail,bindShelf } from '@/api/out/productOut.js'
import { submitDetail, bindDetail,bindShelf } from '@/api/out/productOut.js'
import { getBasWarehouList } from '@/api/bas/bas.js'
export default {
@@ -239,7 +239,7 @@ export default {
params.exitId = this.selectedExit
}
const response = await sunbmitDeatil(params)
const response = await submitDetail(params)
if (response && response.code === 200) {
this.materialList = (response.rows || []).map(item => ({

View File

@@ -101,7 +101,7 @@ export default {
border-radius: 16rpx;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
animation: slideInFromBottom 0.3s ease-out forwards;
animation: slideInFromBottom 0.2s ease-out forwards;
opacity: 0;
&:hover {

View File

@@ -202,10 +202,15 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService
try {
List<String> stockinGuidList = receiveStockCreateInVo.getStockinGuidList();
if (CollUtil.isNotEmpty(stockinGuidList)){
//遍历所有符合条件【guid】的收货单据
for (String receiveStockinGuid : stockinGuidList) {
//通过【guid】获取主单
ReceiveStockin receiveStockin = selectReceiveStockinByStockinGuid(receiveStockinGuid);
//设置主单明细【guid】
ReceiveStockinDetail receiveStockinDetailParam = new ReceiveStockinDetail();
receiveStockinDetailParam.setStockinGuid(receiveStockinGuid);
//获取每个单据的子单明细
List<ReceiveStockinDetail> list = iReceiveStockinDetailService.selectReceiveStockinDetailList(receiveStockinDetailParam);
if (CollUtil.isNotEmpty(list)){
Optional<ReceiveStockinDetail> first = list.stream().filter(x -> x.getStockStatus().equals("0")).findFirst();
@@ -215,6 +220,7 @@ public class ReceiveStockinServiceImpl implements IReceiveStockinService
return AjaxResult.error(MessageUtils.message("error.message29"));
}
//生成基于收货单据属性的入库单据属性
InStockin inStockin = getInStockinByReceiveStockin(receiveStockin);
//插入入库单据
inStockinServicel.insertInStockin(inStockin);

View File

@@ -81,20 +81,23 @@ public class ReceiveStockinDetailServiceImpl implements IReceiveStockinDetailSer
@Transactional(rollbackFor = Exception.class)
public int updateReceiveStockinDetail(ReceiveStockinDetail receiveStockinDetail) {
try {
receiveStockinDetailMapper.updateReceiveStockinDetail(receiveStockinDetail);
//更新指定收货子单
receiveStockinDetailMapper.updateReceiveStockinDetail(receiveStockinDetail);
ReceiveStockinDetail receiveStockinDetail1 = new ReceiveStockinDetail();
receiveStockinDetail1.setStockinId(receiveStockinDetail.getStockinGuid());
List<ReceiveStockinDetail> receiveStockinDetails = receiveStockinDetailMapper.selectReceiveStockinDetailList(receiveStockinDetail1);
//过滤掉receiveStockinDetails中stockStatus等于1的数据
//过滤掉receiveStockinDetails中【stockStatus】等于1的数据
receiveStockinDetails = receiveStockinDetails.stream()
.filter(detail -> !"1".equals(detail.getStockStatus()))
.collect(Collectors.toList());
if (receiveStockinDetails.isEmpty()) {
ReceiveStockCreateInVo receiveStockCreateInVo = new ReceiveStockCreateInVo();
List<String> strings = new ArrayList<>();
strings.add(receiveStockinDetail.getStockinGuid());
receiveStockCreateInVo.setStockinGuidList(strings);
List<String> guids = new ArrayList<>();
guids.add(receiveStockinDetail.getStockinGuid());
receiveStockCreateInVo.setStockinGuidList(guids);
receiveStockinService.createStockin(receiveStockCreateInVo);
}
} catch (Exception e) {