Browse Source

修改标签功能

master
常熟吴彦祖 1 month ago
parent
commit
8b7c6bb480
  1. 6
      src/api/warehouse/pallet.js
  2. 210
      src/views/modules/warehouse/pallet.vue

6
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)

210
src/views/modules/warehouse/pallet.vue

@ -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() {

Loading…
Cancel
Save