|
|
|
@ -61,10 +61,12 @@ |
|
|
|
</download-excel> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item style="margin-top: 20px;"> |
|
|
|
<el-button @click="initModel()" type="primary">新增</el-button> |
|
|
|
<el-button v-if="isAuth(':pallet:delete')" type="danger" @click="deleteHandle()" |
|
|
|
:disabled="dataListSelections.length <= 0">{{ buttons.deleteList}} |
|
|
|
</el-button> |
|
|
|
<!-- <el-button @click="initModel()" type="primary">新增</el-button>--> |
|
|
|
<!-- <el-button v-if="isAuth(':pallet:delete')" type="danger" @click="deleteHandle()"--> |
|
|
|
<!-- :disabled="dataListSelections.length <= 0">{{ buttons.deleteList}}--> |
|
|
|
<!-- </el-button>--> |
|
|
|
<!-- 批量新增按钮 - rqrq --> |
|
|
|
<el-button @click="openBatchGenerateDialog()" type="success">批量新增托盘</el-button> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
@ -100,7 +102,7 @@ |
|
|
|
label="操作"> |
|
|
|
<template slot-scope="scope"> |
|
|
|
<a @click="initModel(scope.row)" type="text" >编辑</a> |
|
|
|
<a @click="delHeaderData(scope.row)" type="text" >删除</a> |
|
|
|
<!-- <a @click="delHeaderData(scope.row)" type="text" >删除</a>--> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
|
@ -259,6 +261,54 @@ |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
<!-- 批量新增托盘弹窗 - rqrq --> |
|
|
|
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false" |
|
|
|
v-drag :title="'批量新增托盘 - 工厂: ' + batchGenerateDialog.site" |
|
|
|
:visible.sync="batchGenerateDialog.visible" width="480px"> |
|
|
|
|
|
|
|
<div v-loading="batchGenerateDialog.loading"> |
|
|
|
<!-- 表头行 - rqrq --> |
|
|
|
<div style="display: flex; align-items: center; padding: 10px 0; margin-bottom: 5px; border-bottom: 1px solid #ebeef5; color: #606266; font-weight: bold;"> |
|
|
|
<span style="flex: 1;">托盘类型</span> |
|
|
|
<span style="width: 100px; text-align: center;">当前数量</span> |
|
|
|
<span style="width: 140px; text-align: center;">需要新增</span> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 托盘列表 - rqrq --> |
|
|
|
<div v-for="(item, index) in batchGenerateDialog.palletNoList" :key="index" |
|
|
|
style="display: flex; align-items: center; padding: 12px 0; border-bottom: 1px dashed #ebeef5;"> |
|
|
|
<span style="flex: 1; font-size: 14px; color: #303133;"> |
|
|
|
{{ item.palletFamilyDesc }} |
|
|
|
<span style="color: #909399;">({{ item.prefix }})</span> |
|
|
|
</span> |
|
|
|
<span style="width: 100px; text-align: center; font-size: 15px; color: #409EFF; font-weight: bold;"> |
|
|
|
{{ item.totalCount || 0 }} |
|
|
|
</span> |
|
|
|
<div style="width: 140px; text-align: center;"> |
|
|
|
<el-input |
|
|
|
v-model.number="item.generateCount" |
|
|
|
placeholder="0" |
|
|
|
size="small" |
|
|
|
style="width: 100px;" |
|
|
|
@input="validateCount(item)"> |
|
|
|
</el-input> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<!-- 提示信息 - rqrq --> |
|
|
|
<div style="margin-top: 15px; color: #909399; font-size: 12px;"> |
|
|
|
<i class="el-icon-info"></i> 单次每种类型最多新增1000个 |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div slot="footer" class="dialog-footer"> |
|
|
|
<el-button type="primary" :disabled="batchGenerateDialog.saving" @click="doBatchGenerate()"> |
|
|
|
{{ batchGenerateDialog.saving ? '生成中...' : '确定' }} |
|
|
|
</el-button> |
|
|
|
<el-button @click="batchGenerateDialog.visible = false" :disabled="batchGenerateDialog.saving">取消</el-button> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
|
|
|
|
</div> |
|
|
|
</template> |
|
|
|
|
|
|
|
@ -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() { |
|
|
|
|