Commit bbc7c9a4 authored by 李驰骋's avatar 李驰骋

销售出库、库存调拨、库存盘点页面添加批号显示

parent 2739beed
......@@ -99,7 +99,10 @@
"验收数量+报废数量+验退数量不能大于进货数量": "จำนวนที่ตรวจรับ + จำนวนที่ถูกตัดจำหน่าย + จำนวนที่คืนไม่สามารถมากกว่าจำนวนการสั่งซื้อได้",
"委外进货单检验信息": "ข้อมูลการตรวจสอบการสั่งซื้อภายนอก",
"无批号": "ไม่มีหมายเลขล็อต",
"批次号:": "หมายเลขชุด",
"无批次号": "ไม่มีหมายเลขชุด",
"批次号:": "หมายเลขชุด:",
"请输入批次号": "กรุณาใส่หมายเลขชุด",
"批次号不能为空": "หมายเลขชุดไม่สามารถว่างได้",
"查询库存失败": "การค้นหาสินค้าคงคลังล้มเหลว",
"未找到该物料的库存信息": "ไม่พบข้อมูลสินค้าคงคลังสำหรับวัสดุนี้",
"报废数量": "จำนวนที่ถูกตัดจำหน่าย",
......
......@@ -99,7 +99,10 @@
"验收数量+报废数量+验退数量不能大于进货数量": "验收数量+报废数量+验退数量不能大于进货数量",
"委外进货单检验信息": "委外进货单检验信息",
"无批号": "无批号",
"批次号:": "批次号",
"无批次号": "无批次号",
"批次号:": "批次号:",
"请输入批次号": "请输入批次号",
"批次号不能为空": "批次号不能为空",
"查询库存失败": "查询库存失败",
"未找到该物料的库存信息": "未找到该物料的库存信息",
"报废数量": "报废数量",
......
......@@ -21,7 +21,7 @@
<input
v-model="form.tg014"
type="text"
@confirm="inputCC"
@blur="inputCC"
>
</input>
</u-form-item>
......@@ -30,7 +30,7 @@
v-model="form.tg015"
focus
type="text"
@confirm="inputCC"
@blur="inputCC"
>
</input>
</u-form-item>
......@@ -62,7 +62,7 @@
</u-form-item>
<u-form-item prop="tg036" :label="$t('库位:')">
<input
v-model.number="form.tg036"
v-model="form.tg036"
type="text"
@confirm="submit"
>
......@@ -77,15 +77,15 @@
>
</input>
</u-form-item> -->
<!-- <u-form-item prop="tc032" :label="$t('批号:')">
<u-form-item prop="batchNo" :label="$t('批号:')">
<input
v-model.number="form.tc032"
v-model.number="form.batchNo"
disabled
type="text"
@confirm="submit"
>
</input>
</u-form-item> -->
</u-form-item>
<u-form-item prop="tg011" :label="$t('数量:')">
<input
v-model="form.tg011"
......@@ -187,7 +187,8 @@ import i18n from '../../lang/index'
tg036: null,
// tb008: null,
// tc032: null,
// tg011: null,
tg011: null,
batchNo: null,
// tc020: null,
// tc021: null,
}
......@@ -203,12 +204,45 @@ import i18n from '../../lang/index'
if (arr.length === 2) {
this.form.tg014 = arr[0]
this.form.tg015 = arr[1]
// 查询工单信息并生成批次号
this.queryMoctaAndGenerateBatch()
}
} else {
this.submit()
// 查询工单信息并生成批次号
this.queryMoctaAndGenerateBatch()
}
}
},
// 查询工单信息并生成批次号
queryMoctaAndGenerateBatch() {
if (!this.form.tg014 || !this.form.tg015) {
return
}
const params = {
ta001: this.form.tg014, // 工单单别
ta002: this.form.tg015 // 工单单号
}
this.$u.api.getMocta(params).then(res => {
if (res.success && res.data) {
const moctaData = res.data
// 生成批次号:品号(ta006)+工厂编号(ta019)+日期yyyyMMdd
const today = new Date()
const dateStr = today.getFullYear().toString() +
(today.getMonth() + 1).toString().padStart(2, '0') +
today.getDate().toString().padStart(2, '0')
this.form.batchNo = (moctaData.ta006 || '').trim() + (moctaData.ta019 || '').trim() + dateStr
} else {
this.form.batchNo=""
this.$u.toast(i18n.t('未找到工单信息'))
}
}).catch(err => {
this.form.batchNo=""
this.$u.toast(i18n.t('查询工单失败'))
})
},
submit(row) {
if (!this.form['tg001']) {
return this.$u.toast(i18n.t('请输入入库单别'))
......@@ -251,6 +285,7 @@ import i18n from '../../lang/index'
// tb008: null,
// tc032: null,
tg011: null,
batchNo: null,
// tc020: null,
// tc021: null,
}
......
......@@ -9,6 +9,7 @@
<!-- <view class="item">物料描述:{{ item.itemName }}</view> -->
<view class="item">{{$t('产品名称:{0}', [ item.materialName ])}}</view>
<view class="item">{{$t('库房/储位:{0}|{1}', [ item.ml002 , item.ml003 ])}}</view>
<view class="item">{{$t('批次号:')}}{{item.ml004}}</view>
<view class="item">{{$t('库存数:')}}{{item.ml005}}</view>
</view>
</view>
......
......@@ -11,26 +11,29 @@
</view>
<view class="bottomBox">
<view class="bottomItem" v-for="(ele, idx) in goodlist" :key="ele.materialNo+idx" >
<view class="box-top">
<view class="left">
<view class="items">{{ ele.materialNo }}|{{ ele.materialName }}</view>
<view class="items">{{$t('计划出库日期:{0}', [ ele.planOutDate ])}}</view>
</view>
<view class="right">
<u-icon name="plus" color="#000" size="32" @click="addKC(ele)"></u-icon>
<view class="items">{{outQuantity(ele.materialNo, ele.deliverQuantity)}}/{{ele.deliverQuantity}}pcs</view>
</view>
</view>
<view class="box-top">
<view class="left">
<view class="items">{{ ele.materialNo }}|{{ ele.materialName }}</view>
<view class="items">{{$t('计划出库日期:{0}', [ ele.planOutDate ])}}</view>
</view>
<view class="right">
<u-icon name="plus" color="#000" size="32" @click="addKC(ele)"></u-icon>
<view class="items">{{outQuantity(ele.materialNo, ele.deliverQuantity)}}/{{ele.deliverQuantity}}pcs</view>
</view>
</view>
<view class="detail-box">
<template v-for="(item, index) in list">
<view class="detail-line-wrap" v-if="item.materialNo === ele.materialNo && item.deliverQuantity === ele.deliverQuantity && item.outQuantity" :key="item.materialNo + '444' + index" @click="handleDetail(item)">
<view class="detail-line">
<text>{{item.warehouse}}|{{item.location}}</text>
<text style="margin-left: auto">{{item.outQuantity}}pcs</text>
</view>
</view>
</template>
</view>
<template v-for="(item, index) in list">
<view class="detail-line-wrap" v-if="item.materialNo === ele.materialNo && item.deliverQuantity === ele.deliverQuantity && item.outQuantity" :key="item.materialNo + '444' + index" @click="handleDetail(item)">
<view class="detail-line">
<view class="left-info">
<text>{{item.warehouse}}|{{item.location}}</text>
<text class="batch-info" v-if="item.batchNo">{{item.batchNo}}</text>
</view>
<text style="margin-left: auto">{{item.outQuantity}}pcs</text>
</view>
</view>
</template>
</view>
</view>
</view>
</view>
......@@ -89,6 +92,13 @@ export default {
},
created () {
uni.$on('sendkcData', (data, info) => {
// 先移除相同物料的旧数据
this.list = this.list.filter(item =>
!(item.materialNo === info.materialNo &&
item.deliverQuantity === info.deliverQuantity)
);
// 添加新数据
data.forEach((vvvv) => {
if (vvvv.outQuantity) {
this.list.push({
......@@ -99,7 +109,8 @@ export default {
"outQuantity": vvvv.outQuantity,
"planOutDate": info.planOutDate,
"unit": info.unit,
"warehouse": vvvv.ml002
"warehouse": vvvv.ml002,
"batchNo": vvvv.ml004
})
}
})
......@@ -116,12 +127,12 @@ export default {
data.data.forEach(v => {
this.goodlist.push({
"materialName": v.materialName,
"deliverQuantity": v.deliverQuantity,
"deliverQuantity": v.deliverQuantity,
"materialNo": v.materialNo,
"planOutDate": v.planOutDate,
"unit": v.unit
})
})
})
}
});
}
......@@ -160,8 +171,19 @@ export default {
})
},
addKC(ele) {
// 获取当前物料的已录入数据
const existingData = this.list.filter(item =>
item.materialNo === ele.materialNo &&
item.deliverQuantity === ele.deliverQuantity
);
const params = {
info: ele,
existingData: existingData
};
uni.navigateTo({
url: `/pages/saleck/selectCK?info=${encodeURIComponent(JSON.stringify(ele))}`
url: `/pages/saleck/selectCK?params=${encodeURIComponent(JSON.stringify(params))}`
});
},
getBtnHandle(row) {
......@@ -311,13 +333,25 @@ export default {
.detail-line {
background: rgb(243, 243, 245);
display: flex;
padding: 0px 10rpx;
padding: 10rpx;
border: 1px solid #d4d7dc;
height: 80rpx;
line-height: 80rpx;
min-height: 80rpx;
border-radius: 5px;
margin-top: 10px;
align-items: center;
}
.left-info {
display: flex;
flex-direction: column;
justify-content: center;
flex: 1;
gap: 5rpx;
}
.batch-info {
font-size: 22rpx;
color: #666;
line-height: 1.2;
}
}
}
......
......@@ -8,7 +8,9 @@
<view class="cardContent" v-for="(item, index) in goodsList">
<view class="listItemTitle" @click="handleClick(item)">
<view>
<view class="item">{{$t('库房/储位:{0}|{1}', [ item.ml002 , item.ml003 ])}}</view>
<view class="item">{{$t('库房/储位:{0}|{1}', [ item.ml002 , item.ml003 ])}}</view>
<view class="item">{{$t('批次号:')}}{{item.ml004}}</view>
<view class="item">{{$t('最近入库日:')}}{{item.ml009}}</view>
<view class="item">{{$t('库存数:{0}pcs', [ item.ml005 ])}}</view>
<view class="item">{{$t('出货数:')}}<uni-easyinput
v-model="item.outQuantity"
......@@ -61,8 +63,11 @@ import i18n from '../../lang/index'
},
computed: {},
onLoad(option) {
if (option && option.info) {
this.info = JSON.parse(decodeURIComponent(option.info))
if (option && option.params) {
const params = JSON.parse(decodeURIComponent(option.params))
this.info = params.info
const existingData = params.existingData || []
this.$u.api
.getforinvmlinfo({
ml001: this.info.materialNo
......@@ -70,6 +75,15 @@ import i18n from '../../lang/index'
if (data) {
data.forEach(element => {
element['outQuantity'] = 0
// 恢复已录入的数量
const existingItem = existingData.find(item =>
item.warehouse === element.ml002 &&
item.location === element.ml003 &&
item.batchNo === element.ml004
)
if (existingItem) {
element['outQuantity'] = existingItem.outQuantity
}
});
this.goodsList = data
}
......
......@@ -20,6 +20,10 @@
<zxz-uni-data-select filterable v-model="formData.location" dataKey="text" dataValue="value"
:localdata="storageRange" />
</uni-forms-item>
<uni-forms-item :label="`${$t('批次号')}:`">
<uni-easyinput v-model="formData.batchNo" trim="all"
:placeholder="$t('请输入批次号')" />
</uni-forms-item>
</uni-forms>
</view>
</view>
......@@ -46,6 +50,7 @@
stockQuantity: "",
warehouse: "",
location: "",
batchNo: "",
}
}
},
......@@ -97,6 +102,9 @@
if (!this.formData.location) {
return this.$u.toast(i18n.t('调入储位不能为空'));
}
if (!this.formData.batchNo) {
return this.$u.toast(i18n.t('批次号不能为空'));
}
if (this.list.some((item) => {
return item.warehouse == this.formData.warehouse && item.location == this.formData.location;
})) {
......
......@@ -10,6 +10,9 @@
<view class="info">
<view class="item inventory-info">
{{$t('库房/储位')}}{{item.warehouse}}|{{item.location}}
<view class="batch-info" v-if="item.batchNo">
{{$t('批次号')}}{{item.batchNo}}
</view>
</view>
<view class="item inventory-data">
{{$t('库存数')}}{{item.stockQuantity || 0}}
......@@ -47,15 +50,15 @@
},
methods: {
handleChange(e, row, index) {
// if (index == 0) {
// if(e > row.stockQuantity) {
// this.$u.toast(i18n.t('盘点数不能大于库存数'));
// if (index == 0) {
// if(e > row.stockQuantity) {
// this.$u.toast(i18n.t('盘点数不能大于库存数'));
// }
// } else {
// row.stockQuantity = e;
// }
// } else {
// row.stockQuantity = e;
// }
},
handleSumbit() {
handleSumbit() {
// if (this.list[0]['physicalQuantity'] > this.list[0]['stockQuantity']) {
// return this.$u.toast(i18n.t('盘点数量不能大于库存数量'));
// }
......@@ -108,6 +111,12 @@
.item {
text-align: left;
}
.batch-info {
font-size: 24rpx;
color: #666;
margin-top: 8rpx;
}
}
.physical-inventory {
......
......@@ -37,6 +37,9 @@
<view class="text">
{{item.warehouse}}|{{item.location}}
</view>
<view class="batch-text" v-if="item.batchNo">
{{item.batchNo}}
</view>
</view>
<view class="right">
<view class="text">
......@@ -123,7 +126,8 @@
warehouse: item.ml002,
location: item.ml003,
physicalQuantity: item.ml005,
stockQuantity: item.ml005
stockQuantity: item.ml005,
batchNo: item.ml004 || ''
}
});
setTimeout(() => {
......@@ -166,6 +170,7 @@
physicalQuantity: Number(item.physicalQuantity),
stockQuantity: Number(item.stockQuantity),
warehouse: item.warehouse,
batchNo: item.batchNo || '',
}
})
this.$u.api.stockConfirmApi({
......@@ -300,6 +305,11 @@
.text {
font-size: 28rpx;
}
.batch-text {
font-size: 24rpx;
color: #666;
margin-top: 8rpx;
}
}
.right {
......
......@@ -10,6 +10,9 @@
<u-icon v-else name="minus" size="36" @click="handleDel"></u-icon>
</view>
</view>
<view class="batch-info">
<view class="batch-text">{{$t('批次号')}}{{info.ml004 || $t('无批次号')}}</view>
</view>
<uni-forms :modelValue="info" :label-width="90" label-align="right">
<uni-forms-item :label="`${$t('调拨数')}:`">
<uni-easyinput v-model="info.allocateQuantity" type="number" trim="all"
......@@ -124,6 +127,16 @@
}
}
.batch-info {
padding: 12rpx 24rpx;
border-bottom: 1px solid #f0f0f0;
.batch-text {
font-size: 26rpx;
color: #666;
}
}
/deep/.uni-forms {
.uni-forms-item {
margin: 24rpx;
......
......@@ -28,6 +28,9 @@
<view class="text current-storage">
{{$t('当前储位')}}{{`${ele.ml002}|${ele.ml003}`}}
</view>
<view class="text batch-no">
{{$t('批次号')}}{{ele.ml004 || $t('无批次号')}}
</view>
<view class="text transfer-storage">
{{$t('调入储位')}}
{{ele.allocateLocation ? `${ele.allocateWarehouse}|${ele.allocateLocation}`: ''}}
......@@ -151,7 +154,8 @@
location: ele.ml003,
materialNo: ele.ml001,
warehouse: ele.ml002,
materialName: ele.materialName
materialName: ele.materialName,
batchNo: ele.ml004
}
})
}).flat(Infinity);
......@@ -267,6 +271,12 @@
.text {
font-size: 28rpx;
}
.batch-no {
font-size: 26rpx;
color: #666;
margin: 8rpx 0;
}
}
.right {
......
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 to comment