diff --git a/src/api/warehouse/pallet.js b/src/api/warehouse/pallet.js
index da73dcc..d0044c8 100644
--- a/src/api/warehouse/pallet.js
+++ b/src/api/warehouse/pallet.js
@@ -32,3 +32,9 @@ export const getPalletFamilyList = data => createAPI('warehouse/pallet/getPallet
// 获取托盘类型列表 - rqrq
export const getPalletTypeList = data => createAPI('warehouse/pallet/getPalletTypeList', 'POST', data)
+
+// 获取各类托盘的最大编号信息(用于批量生成) - rqrq
+export const getMaxPalletNoByFamily = data => createAPI('warehouse/pallet/getMaxPalletNoByFamily', 'POST', data)
+
+// 批量生成托盘 - rqrq
+export const batchGeneratePallet = data => createAPI('warehouse/pallet/batchGeneratePallet', 'POST', data)
\ No newline at end of file
diff --git a/src/views/modules/warehouse/pallet.vue b/src/views/modules/warehouse/pallet.vue
index 4585c5d..8939ed2 100644
--- a/src/views/modules/warehouse/pallet.vue
+++ b/src/views/modules/warehouse/pallet.vue
@@ -61,10 +61,12 @@
- 新增
- {{ buttons.deleteList}}
-
+
+
+
+
+
+ 批量新增托盘
@@ -100,7 +102,7 @@
label="操作">
编辑
- 删除
+
@@ -259,6 +261,54 @@
+
+
+
+
+
+
+ 托盘类型
+ 当前数量
+ 需要新增
+
+
+
+
+
+ {{ item.palletFamilyDesc }}
+ ({{ item.prefix }})
+
+
+ {{ item.totalCount || 0 }}
+
+
+
+
+
+
+
+
+
+ 单次每种类型最多新增1000个
+
+
+
+
+
+
@@ -277,7 +327,9 @@ import {
getPalletStatusOptions,
getUserAuthorizedSites,
getPalletFamilyList,
- getPalletTypeList
+ getPalletTypeList,
+ getMaxPalletNoByFamily,
+ batchGeneratePallet
} from '@/api/warehouse/pallet.js'
export default {
@@ -493,6 +545,14 @@ export default {
status: [
{ required: true, message: '托盘状态不能为空', trigger: 'change' }
]
+ },
+ // 批量新增弹窗状态 - rqrq
+ batchGenerateDialog: {
+ visible: false,
+ loading: false,
+ saving: false,
+ site: '',
+ palletNoList: [] // 各类托盘编号信息列表
}
}
},
@@ -881,6 +941,144 @@ export default {
json += "}"
let s = eval("(" + json + ")")
return s
+ },
+ // 打开批量新增弹窗 - rqrq
+ openBatchGenerateDialog() {
+ // 从store获取当前工厂 - rqrq
+ this.batchGenerateDialog.site = this.$store.state.user.site
+ this.batchGenerateDialog.palletNoList = []
+ this.batchGenerateDialog.saving = false
+ this.batchGenerateDialog.visible = true
+ // 自动查询托盘数量 - rqrq
+ this.loadPalletMaxNos()
+ },
+ // 加载托盘最大编号数据 - rqrq
+ loadPalletMaxNos() {
+ this.batchGenerateDialog.loading = true
+ getMaxPalletNoByFamily({ site: this.batchGenerateDialog.site }).then(({data}) => {
+ this.batchGenerateDialog.loading = false
+ if (data && data.code === 0) {
+ this.batchGenerateDialog.palletNoList = (data.rows || []).map(item => ({
+ ...item,
+ generateCount: null
+ }))
+ } else {
+ this.$message.error(data.msg || '获取托盘编号信息失败')
+ this.batchGenerateDialog.palletNoList = []
+ }
+ }).catch(() => {
+ this.batchGenerateDialog.loading = false
+ this.$message.error('获取托盘编号信息失败')
+ this.batchGenerateDialog.palletNoList = []
+ })
+ },
+ // 校验新增数量 - rqrq
+ validateCount(item) {
+ if (item.generateCount !== null && item.generateCount !== '') {
+ let val = parseInt(item.generateCount)
+ if (isNaN(val) || val < 0) {
+ item.generateCount = null
+ } else if (val > 1000) {
+ item.generateCount = 1000
+ this.$message.warning('单次最多新增1000个')
+ } else {
+ item.generateCount = val
+ }
+ }
+ },
+ // 执行批量生成 - rqrq
+ doBatchGenerate() {
+ // 1. 校验工厂 - rqrq
+ if (!this.batchGenerateDialog.site) {
+ this.$message.warning('请先选择工厂')
+ return
+ }
+
+ // 2. 校验是否有需要生成的数量 - rqrq
+ const generateItems = this.batchGenerateDialog.palletNoList.filter(item =>
+ item.generateCount !== null && item.generateCount !== '' && parseInt(item.generateCount) > 0
+ )
+ if (generateItems.length === 0) {
+ this.$message.warning('请至少输入一种托盘的新增数量')
+ return
+ }
+
+ // 3. 校验数量不超过1000 - rqrq
+ for (let item of generateItems) {
+ if (parseInt(item.generateCount) > 1000) {
+ this.$message.error(`${item.palletFamilyDesc}新增数量不能超过1000`)
+ return
+ }
+ }
+
+ // 4. 确认提示 - rqrq
+ let confirmMsg = '确定要生成以下托盘吗?\n\n'
+ generateItems.forEach(item => {
+ confirmMsg += `${item.palletFamilyDesc}(${item.prefix}): ${item.generateCount}个\n`
+ })
+
+ this.$confirm(confirmMsg, '确认批量生成', {
+ confirmButtonText: '确定',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ this.executeBatchGenerate(generateItems)
+ }).catch(() => {})
+ },
+ // 执行批量生成请求 - rqrq
+ async executeBatchGenerate(generateItems) {
+ this.batchGenerateDialog.saving = true
+
+ let successCount = 0
+ let failedCount = 0
+ let resultMsg = ''
+
+ // 依次生成每种类型的托盘 - rqrq
+ for (let item of generateItems) {
+ try {
+ const { data } = await batchGeneratePallet({
+ site: this.batchGenerateDialog.site,
+ palletFamily: item.palletFamily,
+ count: item.generateCount,
+ username: this.$store.state.user.name
+ })
+
+ if (data && data.code === 0) {
+ successCount++
+ resultMsg += `✓ ${item.palletFamilyDesc}: 生成${data.count}个 (${data.startPalletId} ~ ${data.endPalletId})\n`
+ } else {
+ failedCount++
+ resultMsg += `✗ ${item.palletFamilyDesc}: ${data.msg || '生成失败'}\n`
+ }
+ } catch (e) {
+ failedCount++
+ resultMsg += `✗ ${item.palletFamilyDesc}: 请求异常\n`
+ }
+ }
+
+ this.batchGenerateDialog.saving = false
+
+ // 显示结果 - rqrq
+ if (failedCount === 0) {
+ this.$alert(resultMsg, '生成成功', {
+ confirmButtonText: '确定',
+ type: 'success',
+ callback: () => {
+ this.batchGenerateDialog.visible = false
+ this.getDataList()
+ }
+ })
+ } else {
+ this.$alert(resultMsg, `生成结果(成功${successCount},失败${failedCount})`, {
+ confirmButtonText: '确定',
+ type: failedCount === generateItems.length ? 'error' : 'warning',
+ callback: () => {
+ // 刷新编号信息 - rqrq
+ this.onBatchSiteChange(this.batchGenerateDialog.site)
+ this.getDataList()
+ }
+ })
+ }
}
},
created() {