2 changed files with 392 additions and 0 deletions
@ -0,0 +1,10 @@ |
|||
import { createAPI } from "@/utils/httpRequest.js"; |
|||
|
|||
// 分页查询库存信息
|
|||
export const getInventoryStockList = data => createAPI(`ifsInventoryInit/getInventoryStockList`, 'POST', data) |
|||
|
|||
// 创建HandlingUnit
|
|||
export const createHandlingUnits = data => createAPI(`ifsInventoryInit/createHandlingUnits`, 'POST', data) |
|||
|
|||
// 打印标签
|
|||
export const printLabel = data => createAPI('/label/setting/printLabel','post',data) |
|||
@ -0,0 +1,382 @@ |
|||
<template> |
|||
<div class="mod-config"> |
|||
<el-form :inline="true" :model="dataForm" @keyup.enter.native="getDataList()"> |
|||
<el-form-item> |
|||
<el-input v-model="dataForm.partNo" placeholder="商品编码" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-input v-model="dataForm.batchNo" placeholder="批次号" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-input v-model="dataForm.locationId" placeholder="库位" clearable></el-input> |
|||
</el-form-item> |
|||
<el-form-item> |
|||
<el-button @click="getDataList()">查询</el-button> |
|||
<el-button type="primary" @click="getDataList()"> |
|||
<i class="el-icon-search"></i>搜索 |
|||
</el-button> |
|||
</el-form-item> |
|||
</el-form> |
|||
|
|||
<el-table |
|||
:data="dataList" |
|||
border |
|||
v-loading="dataListLoading" |
|||
@selection-change="selectionChangeHandle" |
|||
style="width: 100%;"> |
|||
<el-table-column |
|||
type="selection" |
|||
header-align="center" |
|||
align="center" |
|||
width="50"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="site" |
|||
header-align="center" |
|||
align="center" |
|||
label="站点"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="warehouseId" |
|||
header-align="center" |
|||
align="center" |
|||
label="仓库"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="partNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="商品编码"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="description" |
|||
header-align="center" |
|||
align="center" |
|||
label="商品描述"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="batchNo" |
|||
header-align="center" |
|||
align="center" |
|||
label="批次号"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="wdr" |
|||
header-align="center" |
|||
align="center" |
|||
label="WDR"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="locationId" |
|||
header-align="center" |
|||
align="center" |
|||
label="库位"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
prop="qtyOnHand" |
|||
header-align="center" |
|||
align="center" |
|||
label="现有库存"> |
|||
</el-table-column> |
|||
<el-table-column |
|||
fixed="right" |
|||
header-align="center" |
|||
align="center" |
|||
width="150" |
|||
label="操作"> |
|||
<template slot-scope="scope"> |
|||
<a type="text" size="small" @click="createHuHandle(scope.row)">创建HU</a> |
|||
</template> |
|||
</el-table-column> |
|||
</el-table> |
|||
|
|||
<el-pagination |
|||
@size-change="sizeChangeHandle" |
|||
@current-change="currentChangeHandle" |
|||
:current-page="pageIndex" |
|||
:page-sizes="[10, 20, 50, 100]" |
|||
:page-size="pageSize" |
|||
:total="totalPage" |
|||
layout="total, sizes, prev, pager, next, jumper"> |
|||
</el-pagination> |
|||
|
|||
<!-- 创建HU弹窗 --> |
|||
<el-dialog |
|||
title="创建HandlingUnit" |
|||
:visible.sync="createHuVisible" |
|||
width="400px" |
|||
:close-on-click-modal="false"> |
|||
<el-form :model="createHuForm" ref="createHuForm" class="create-hu-form"> |
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="商品编码" prop="partNo" class="form-item-vertical"> |
|||
<el-input v-model="createHuForm.partNo" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="批次号" prop="batchNo" class="form-item-vertical"> |
|||
<el-input v-model="createHuForm.batchNo" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="WDR" prop="wdr" class="form-item-vertical"> |
|||
<el-input v-model="createHuForm.wdr" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="库位" prop="locationId" class="form-item-vertical"> |
|||
<el-input v-model="createHuForm.locationId" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="20"> |
|||
<el-col :span="24"> |
|||
<el-form-item label="商品描述" prop="partDesc" class="form-item-vertical"> |
|||
<el-input v-model="createHuForm.partDesc" readonly></el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
|
|||
<el-row :gutter="20"> |
|||
<el-col :span="12"> |
|||
<el-form-item label="包装数" prop="packageCount" class="form-item-vertical"> |
|||
<el-input |
|||
v-model="createHuForm.packageCount" |
|||
:min="1" |
|||
placeholder="请输入包装数"> |
|||
</el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
<el-col :span="12"> |
|||
<el-form-item label="单包装数量" prop="perPackageQty" class="form-item-vertical"> |
|||
<el-input |
|||
v-model="createHuForm.perPackageQty" |
|||
:min="0.01" |
|||
:precision="2" |
|||
placeholder="请输入单包装数量"> |
|||
</el-input> |
|||
</el-form-item> |
|||
</el-col> |
|||
</el-row> |
|||
</el-form> |
|||
<div slot="footer" class="dialog-footer"> |
|||
<el-button @click="createHuVisible = false">取消</el-button> |
|||
<el-button type="primary" @click="createHuSubmit()" :loading="createHuLoading">创建并打印</el-button> |
|||
</div> |
|||
</el-dialog> |
|||
</div> |
|||
</template> |
|||
|
|||
<script> |
|||
import { getInventoryStockList, createHandlingUnits, printLabel } from '@/api/warehouse/ifsInventoryInit' |
|||
|
|||
export default { |
|||
data () { |
|||
return { |
|||
dataForm: { |
|||
partNo: '', |
|||
batchNo: '', |
|||
locationId: '' |
|||
}, |
|||
dataList: [], |
|||
pageIndex: 1, |
|||
pageSize: 10, |
|||
totalPage: 0, |
|||
dataListLoading: false, |
|||
dataListSelections: [], |
|||
createHuVisible: false, |
|||
createHuLoading: false, |
|||
createHuForm: { |
|||
site: '', |
|||
warehouseId: '', |
|||
partNo: '', |
|||
partDesc: '', |
|||
batchNo: '', |
|||
wdr: '', |
|||
locationId: '', |
|||
perPackageQty: 1, |
|||
packageCount: 1 |
|||
}, |
|||
createHuRules: { |
|||
perPackageQty: [ |
|||
{ required: true, message: '单包装数量不能为空', trigger: 'blur' }, |
|||
{ type: 'number', min: 0.01, message: '单包装数量必须大于0', trigger: 'blur' } |
|||
], |
|||
packageCount: [ |
|||
{ required: true, message: '包装数不能为空', trigger: 'blur' }, |
|||
{ type: 'number', min: 1, message: '包装数必须大于等于1', trigger: 'blur' } |
|||
] |
|||
}, |
|||
// 打印相关配置 |
|||
reportId: 'HU_LABEL', |
|||
zplCode: '', |
|||
paperSize: 'A4', |
|||
orientation: 'Portrait', |
|||
dpi: 300 |
|||
} |
|||
}, |
|||
activated () { |
|||
this.getDataList() |
|||
}, |
|||
methods: { |
|||
// 获取数据列表 |
|||
getDataList () { |
|||
this.dataListLoading = true |
|||
const params = { |
|||
page: this.pageIndex, |
|||
size: this.pageSize, |
|||
site: localStorage.getItem('site'), |
|||
...this.dataForm |
|||
} |
|||
getInventoryStockList(params).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.dataList = data.page.list |
|||
this.totalPage = data.page.totalCount |
|||
} else { |
|||
this.dataList = [] |
|||
this.totalPage = 0 |
|||
} |
|||
this.dataListLoading = false |
|||
}).catch(() => { |
|||
this.dataListLoading = false |
|||
}) |
|||
}, |
|||
// 每页数 |
|||
sizeChangeHandle (val) { |
|||
this.pageSize = val |
|||
this.pageIndex = 1 |
|||
this.getDataList() |
|||
}, |
|||
// 当前页 |
|||
currentChangeHandle (val) { |
|||
this.pageIndex = val |
|||
this.getDataList() |
|||
}, |
|||
// 多选 |
|||
selectionChangeHandle (val) { |
|||
this.dataListSelections = val |
|||
}, |
|||
// 创建HU |
|||
createHuHandle (row) { |
|||
this.createHuVisible = true |
|||
this.createHuForm = { |
|||
site: row.site, |
|||
warehouseId: row.warehouseId, |
|||
partNo: row.partNo, |
|||
partDesc: row.description || '', |
|||
batchNo: row.batchNo, |
|||
wdr: row.wdr, |
|||
locationId: row.locationId, |
|||
perPackageQty: '', |
|||
packageCount: 1 |
|||
} |
|||
this.$nextTick(() => { |
|||
this.$refs['createHuForm'].clearValidate() |
|||
}) |
|||
}, |
|||
// 提交创建HU |
|||
createHuSubmit () { |
|||
this.$refs['createHuForm'].validate((valid) => { |
|||
if (valid) { |
|||
this.createHuLoading = true |
|||
createHandlingUnits(this.createHuForm).then(({ data }) => { |
|||
if (data && data.code === 0) { |
|||
this.$message({ |
|||
message: '创建HandlingUnit成功', |
|||
type: 'success', |
|||
duration: 1500 |
|||
}) |
|||
|
|||
// 创建成功后进行打印 |
|||
this.printHandlingUnits(data.unitIds) |
|||
|
|||
this.createHuVisible = false |
|||
this.getDataList() |
|||
} else { |
|||
this.$message.error(data.msg || '创建HandlingUnit失败') |
|||
} |
|||
this.createHuLoading = false |
|||
}).catch(() => { |
|||
this.createHuLoading = false |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
// 打印HandlingUnit标签 |
|||
async printHandlingUnits (unitIds) { |
|||
if (!unitIds || unitIds.length === 0) { |
|||
return |
|||
} |
|||
|
|||
try { |
|||
// 逐个打印每个HandlingUnit |
|||
for (const unitId of unitIds) { |
|||
await this.printViaServer(unitId) |
|||
} |
|||
this.$message({ |
|||
message: `成功打印 ${unitIds.length} 个HandlingUnit标签`, |
|||
type: 'success', |
|||
duration: 2000 |
|||
}) |
|||
} catch (error) { |
|||
this.$message.error('打印失败: ' + error.message) |
|||
} |
|||
}, |
|||
// 通过服务器打印 |
|||
async printViaServer(unitId) { |
|||
try { |
|||
const printRequest = { |
|||
reportId: this.reportId, |
|||
zplCode: this.zplCode, |
|||
paperSize: this.paperSize, |
|||
orientation: this.orientation, |
|||
dpi: this.dpi, |
|||
userId: localStorage.getItem('userName'), |
|||
username: localStorage.getItem('userName'), |
|||
site: localStorage.getItem('site'), |
|||
unitId: unitId |
|||
} |
|||
const { data } = await printLabel(printRequest) |
|||
if (data.code === 200) { |
|||
return Promise.resolve(); |
|||
} else { |
|||
return Promise.reject(new Error(data.msg || '打印失败')); |
|||
} |
|||
} catch (error) { |
|||
return Promise.reject(error); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style scoped> |
|||
.mod-config .el-form-item { |
|||
margin-bottom: 15px; |
|||
} |
|||
|
|||
/* 创建HU表单样式 */ |
|||
.create-hu-form .form-item-vertical { |
|||
margin-bottom: 20px; |
|||
} |
|||
|
|||
.create-hu-form .form-item-vertical .el-form-item__label { |
|||
display: block; |
|||
text-align: left; |
|||
padding: 0 0 8px 0; |
|||
line-height: 1.5; |
|||
font-weight: 500; |
|||
} |
|||
|
|||
.create-hu-form .form-item-vertical .el-form-item__content { |
|||
margin-left: 0 !important; |
|||
} |
|||
|
|||
.create-hu-form .el-row { |
|||
margin-bottom: 0; |
|||
} |
|||
</style> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue