Browse Source

2026-03-06

优化仓库盘点管理
master
fengyuan_yang 1 month ago
parent
commit
e3097b0b26
  1. 89
      src/views/modules/warehouse/countingReport.vue

89
src/views/modules/warehouse/countingReport.vue

@ -197,7 +197,7 @@
</el-select>
</el-form-item>
<el-form-item label=" ">
<el-button type="primary" @click="getDetailList()">查询</el-button>
<el-button type="primary" @click="detailSearch()">查询</el-button>
</el-form-item>
</el-form>
@ -205,7 +205,7 @@
<div style="margin-bottom: 15px; padding: 10px; background-color: #f5f7fa; border-radius: 4px;">
<span style="margin-right: 30px;"><strong>标签总数</strong><span style="color: #409EFF; font-size: 18px;">{{ detailStatistics.totalCount }}</span></span>
<span style="margin-right: 30px;"><strong>物料总数</strong><span style="color: #67C23A; font-size: 18px;">{{ detailStatistics.totalQty }}</span></span>
<span><strong>已盘点数</strong><span style="color: #E6A23C; font-size: 18px;">{{ detailStatistics.checkedQty }}</span></span>
<span><strong>已盘点标签</strong><span style="color: #E6A23C; font-size: 18px;">{{ detailStatistics.checkedQty }}</span></span>
</div>
<!-- 明细列表 -->
@ -229,7 +229,19 @@
</el-table-column>
</el-table>
<el-footer style="height:35px;margin-top: 20px;text-align:center">
<!-- 盘点清单分页 -->
<el-pagination
style="margin-top: 10px; text-align: right;"
@size-change="detailSizeChangeHandle"
@current-change="detailCurrentChangeHandle"
:current-page="detailPageIndex"
:page-sizes="[50, 100, 200, 500]"
:page-size="detailPageSize"
:total="detailTotal"
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<el-footer style="height:35px;margin-top: 10px;text-align:center">
<el-button type="primary" @click="detailFlag = false">关闭</el-button>
</el-footer>
</el-dialog>
@ -337,6 +349,9 @@ export default {
detailFlag: false,
detailLoading: false,
detailList: [],
detailPageIndex: 1,
detailPageSize: 50,
detailTotal: 0,
detailSearchData: {
site: '',
buNo: '',
@ -346,9 +361,9 @@ export default {
checkedFlag: ''
},
detailStatistics: {
totalCount: 0, //
totalQty: 0, //
checkedQty: 0 //
totalCount: 0,
totalQty: 0,
checkedQty: 0
}
}
},
@ -456,17 +471,17 @@ export default {
this.modalFlag = true
this.modalTitle = '修改盘点任务'
this.modalDisableFlag = true
//
const warehouseIds = row.warehouseId ? row.warehouseId.split(',') : []
const locationIds = row.locationId ? row.locationId.split(',') : []
const partNos = row.partNo ? row.partNo.split(',') : []
//
const warehouseDisplay = row.warehouseName || ''
const locationDisplay = row.locationName || ''
const partDisplay = row.partDesc || ''
this.modalData = {
flag: 'update',
bu: row.site + '_' + row.buNo,
@ -559,7 +574,7 @@ export default {
this.$refs.modalForm.validate((valid) => {
if (valid) {
this.saveLoading = true
//
const saveData = {
...this.modalData,
@ -567,7 +582,7 @@ export default {
locationId: this.modalData.locationIds.length > 0 ? this.modalData.locationIds.join(',') : '',
partNo: this.modalData.partNos.length > 0 ? this.modalData.partNos.join(',') : ''
}
const apiMethod = this.modalData.flag === 'add' ? countingReportSave : countingReportUpdate
apiMethod(saveData).then(({data}) => {
if (data && data.code === 0) {
@ -669,6 +684,9 @@ export default {
//
viewDetail(row) {
this.detailFlag = true
this.detailPageIndex = 1
this.detailPageSize = 50
this.detailTotal = 0
this.detailSearchData = {
site: row.site,
buNo: row.buNo,
@ -680,16 +698,33 @@ export default {
this.getDetailList()
},
//
detailSearch() {
this.detailPageIndex = 1
this.getDetailList()
},
//
getDetailList() {
this.detailLoading = true
countingReportDetailList(this.detailSearchData).then(({data}) => {
const params = {
...this.detailSearchData,
page: this.detailPageIndex,
limit: this.detailPageSize
}
countingReportDetailList(params).then(({data}) => {
if (data && data.code === 0) {
this.detailList = data.detailList || []
//
this.calculateStatistics()
this.detailList = data.page.list || []
this.detailTotal = data.page.totalCount || 0
// /
if (data.statistics) {
this.detailStatistics.totalCount = data.statistics.totalCount || 0
this.detailStatistics.totalQty = data.statistics.totalQty || 0
this.detailStatistics.checkedQty = data.statistics.checkedQty || 0
}
} else {
this.detailList = []
this.detailTotal = 0
this.$message.error(data.msg || '查询失败')
}
this.detailLoading = false
@ -698,13 +733,17 @@ export default {
})
},
//
calculateStatistics() {
this.detailStatistics.totalCount = this.detailList.length
this.detailStatistics.totalQty = this.detailList.reduce((sum, item) => sum + (item.rollQty || 0), 0)
this.detailStatistics.checkedQty = this.detailList
.filter(item => item.checkedFlag === 'Y')
.reduce((sum, item) => sum + (item.rollQty || 0), 0)
//
detailSizeChangeHandle(val) {
this.detailPageSize = val
this.detailPageIndex = 1
this.getDetailList()
},
//
detailCurrentChangeHandle(val) {
this.detailPageIndex = val
this.getDetailList()
},
//
@ -713,10 +752,10 @@ export default {
this.$message.warning('请先选择BU')
return
}
const [site, buNo] = this.modalData.bu.split('_')
let selectedIds = []
if (type === 'warehouse') {
selectedIds = this.modalData.warehouseIds
} else if (type === 'location') {
@ -724,7 +763,7 @@ export default {
} else if (type === 'part') {
selectedIds = this.modalData.partNos
}
this.$refs.multiSelectDialog.init(type, site, buNo, selectedIds)
},

Loading…
Cancel
Save