Browse Source

1下载导入模板

master
常熟吴彦祖 3 months ago
parent
commit
08f9993ed3
  1. 24
      src/api/warehouse/pallet.js
  2. 437
      src/views/modules/warehouse/pallet.vue

24
src/api/warehouse/pallet.js

@ -1,28 +1,34 @@
import { createAPI } from "@/utils/httpRequest.js";
// 获取托盘列表
// 获取托盘列表 - rqrq
export const getPalletList = data => createAPI('warehouse/pallet/list', 'POST', data)
// 获取托盘信息(根据托盘ID)
// 获取托盘信息(根据托盘ID)- rqrq
export const getPalletInfo = data => createAPI('warehouse/pallet/info', 'POST', data)
// 获取托盘信息(根据主键ID)
// 获取托盘信息(根据主键ID)- rqrq
export const getPalletById = id => createAPI(`warehouse/pallet/info/${id}`, 'GET')
// 保存托盘信息
// 保存托盘信息 - rqrq
export const savePallet = data => createAPI('warehouse/pallet/save', 'POST', data)
// 修改托盘信息
// 修改托盘信息 - rqrq
export const updatePallet = data => createAPI('warehouse/pallet/update', 'POST', data)
// 删除托盘
// 删除托盘 - rqrq
export const deletePallet = data => createAPI('warehouse/pallet/delete', 'POST', data)
// 检查托盘ID是否存在
// 检查托盘ID是否存在 - rqrq
export const checkPalletId = data => createAPI('warehouse/pallet/checkPalletId', 'POST', data)
// 获取托盘状态选项
// 获取托盘状态选项 - rqrq
export const getPalletStatusOptions = () => createAPI('warehouse/pallet/statusOptions', 'GET')
// 获取用户授权站点列表
// 获取用户授权站点列表 - rqrq
export const getUserAuthorizedSites = data => createAPI('warehouse/pallet/getUserAuthorizedSites', 'POST', data)
// 获取托盘大分类列表 - rqrq
export const getPalletFamilyList = data => createAPI('warehouse/pallet/getPalletFamilyList', 'POST', data)
// 获取托盘类型列表 - rqrq
export const getPalletTypeList = data => createAPI('warehouse/pallet/getPalletTypeList', 'POST', data)

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

@ -8,7 +8,7 @@
<el-form :inline="true" label-position="top">
<el-form-item :label="inputLabel.headerInput.label0">
<el-select v-model="queryHeaderData.site" placeholder="请选择站点" style="width: 120px;" clearable>
<el-select v-model="queryHeaderData.site" placeholder="请选择工厂" style="width: 120px;" clearable>
<el-option
v-for="item in siteOptions"
:key="item.site"
@ -21,11 +21,11 @@
<el-input style="width: 150px;" v-model="queryHeaderData.palletId" placeholder="托盘ID"></el-input>
</el-form-item>
<el-form-item :label="inputLabel.headerInput.label2">
<el-select v-model="queryHeaderData.palletType" placeholder="请选择" style="width: 120px;" clearable>
<el-select v-model="queryHeaderData.palletFamily" placeholder="请选择" style="width: 120px;" clearable>
<el-option label="全部" value=""></el-option>
<el-option label="木质" value="木质"></el-option>
<el-option label="塑料" value="塑料"></el-option>
<el-option label="铁制" value="铁制"></el-option>
<el-option label="钢托盘" value="A01"></el-option>
<el-option label="围挡托盘" value="A02"></el-option>
<el-option label="平托盘+周转箱" value="A03"></el-option>
</el-select>
</el-form-item>
<el-form-item :label="inputLabel.headerInput.label3">
@ -81,7 +81,7 @@
fixed="right"
header-align="center"
align="center"
width="150"
width="100"
label="操作">
<template slot-scope="scope">
<a @click="initModel(scope.row)" type="text" >编辑</a>
@ -100,52 +100,92 @@
layout="total, sizes, prev, pager, next, jumper">
</el-pagination>
<!-- 新增/编辑dialog -->
<!-- 新增/编辑dialog - rqrq -->
<el-dialog :close-on-click-modal="false" :close-on-press-escape="false"
v-drag :title="inputLabel.headerInput.label5"
:visible.sync="setUp.reviewFlag" width="360px">
:visible.sync="setUp.reviewFlag" width="900px">
<el-form :model="saveHeaderData" ref="dataForm"
label-width="100px" size="medium" :inline="true" label-position="top">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item :label="inputLabel.headerInput.label0" prop="site">
<el-select v-model="saveHeaderData.site" placeholder="请选择站点" style="width: 100%;">
<el-option
v-for="item in siteOptions"
:key="item.siteCode"
:label="item.siteName || item.siteCode"
:value="item.siteCode">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="inputLabel.headerInput.label1" prop="palletId">
<el-input v-model="saveHeaderData.palletId" readonly
placeholder="系统自动生成"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item :label="inputLabel.headerInput.label2" prop="palletType">
<el-select v-model="saveHeaderData.palletType" placeholder="请选择" style="width: 100%;">
<el-option label="木质" value="木质"></el-option>
<el-option label="塑料" value="塑料"></el-option>
<el-option label="铁制" value="铁制"></el-option>
label-position="top" style="margin-top: 1px; margin-left: 0px;">
<!-- 第一行工厂+托盘ID+托盘尺寸+最大承重 - rqrq -->
<el-row :gutter="20">
<el-col :span="6">
<el-form-item :label="inputLabel.headerInput.label0" prop="site">
<el-select v-model="saveHeaderData.site" placeholder="请选择工厂" style="width: 100%;" :disabled="setUp.readonlyFlag" @change="onSiteChange">
<el-option
v-for="item in siteOptions"
:key="item.site"
:label="item.siteName || item.site"
:value="item.site">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item :label="inputLabel.headerInput.label1" prop="palletId">
<el-input v-model="saveHeaderData.palletId" readonly placeholder="系统自动生成"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="托盘尺寸">
<el-input v-model="saveHeaderData.palletSize" placeholder="如: 1200x1000"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item label="最大承重(kg)">
<el-input v-model="saveHeaderData.maxLoad" :precision="2"
:min="0" placeholder="请输入最大承重" style="width: 100%;"></el-input>
<el-input v-model="saveHeaderData.maxLoad" placeholder="请输入最大承重"></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
</el-row>
<!-- 第二行托盘大分类+托盘类型+分拣方式+自动分拣 - rqrq -->
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="托盘大分类" prop="palletFamily">
<el-select v-model="saveHeaderData.palletFamily" placeholder="请选择" style="width: 100%;" @change="onPalletFamilyChange">
<el-option
v-for="item in palletFamilyOptions"
:key="item.palletFamily"
:label="item.palletFamilyDesc || item.palletFamily"
:value="item.palletFamily">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="托盘类型" prop="palletType">
<el-select v-model="saveHeaderData.palletType" placeholder="请先选择托盘大分类" style="width: 100%;" @change="onPalletTypeChange">
<el-option
v-for="item in palletTypeOptions"
:key="item.palletType"
:label="item.typeDesc || item.palletType"
:value="item.palletType">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="分拣方式">
<el-select v-model="saveHeaderData.soreType" placeholder="自动带出" style="width: 100%;">
<el-option label="人工/混装" :value="0"></el-option>
<el-option label="气胀轴自动分拣" :value="1"></el-option>
<el-option label="抱箱自动分拣" :value="2"></el-option>
<el-option label="直接出库" :value="3"></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="自动分拣">
<el-select v-model="saveHeaderData.autoSort" placeholder="自动带出" style="width: 100%;">
<el-option label="是" value="Y"></el-option>
<el-option label="否" value="N"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<!-- 第三行状态+库位编码+WCS库位+空栈板标记 - rqrq -->
<el-row :gutter="20">
<el-col :span="6">
<el-form-item :label="inputLabel.headerInput.label3" prop="status">
<el-select v-model="saveHeaderData.status" placeholder="请选择" style="width: 100%;">
<el-option
@ -157,17 +197,51 @@
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-col :span="6">
<el-form-item :label="inputLabel.headerInput.label4">
<el-input v-model="saveHeaderData.locationCode" placeholder="请输入库位编码"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="WCS库位">
<el-input v-model="saveHeaderData.wcsLocation" placeholder="请输入WCS库位"></el-input>
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item label="空栈板标记">
<el-input v-model="saveHeaderData.emptyFlag" readonly placeholder="默认为N" style="background-color: #f5f7fa;"></el-input>
</el-form-item>
</el-col>
</el-row>
<!-- 第四行调用标志 - rqrq -->
<el-row :gutter="20">
<el-col :span="6">
<el-form-item label="调用标志">
<el-select v-model="saveHeaderData.callingFlag" placeholder="请选择" style="width: 100%;">
<el-option label="是" value="Y"></el-option>
<el-option label="否" value="N"></el-option>
</el-select>
</el-form-item>
</el-col>
</el-row>
<!-- 备注占全行 - rqrq -->
<el-row>
<el-col :span="24">
<el-form-item label="备注">
<el-input v-model="saveHeaderData.remark" type="textarea" :rows="3" resize='none' placeholder="请输入备注"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-form>
<span slot="footer" class="dialog-footer" >
<el-button @click="setUp.reviewFlag = false">取消</el-button>
<el-button type="primary" :disabled="setUp.saveButton" @click="saveHeaderFunction()">确定</el-button>
</span>
<div slot="footer" class="dialog-footer" style="margin-top: 52px">
<el-button type="primary" :disabled="setUp.saveButton" @click="saveHeaderFunction()">
{{ setUp.saveButton ? '保存中...' : '确定' }}
</el-button>
<el-button @click="setUp.reviewFlag = false" :disabled="setUp.saveButton">取消</el-button>
</div>
</el-dialog>
</div>
@ -186,7 +260,9 @@ import {
deletePallet,
checkPalletId,
getPalletStatusOptions,
getUserAuthorizedSites
getUserAuthorizedSites,
getPalletFamilyList,
getPalletTypeList
} from '@/api/warehouse/pallet.js'
export default {
@ -201,6 +277,12 @@ export default {
maxLoad: null,
status: 'AVAILABLE',
locationCode: '',
wcsLocation: '', // WCS - rqrq
palletFamily: '', // - rqrq
soreType: 0, // - rqrq
autoSort: 'N', // N - rqrq
emptyFlag: 'N', // N - rqrq
callingFlag: 'N', // N - rqrq
remark: '',
createdBy: this.$store.state.user.name,
updatedBy: this.$store.state.user.name
@ -209,6 +291,7 @@ export default {
site: '',
palletId: '',
palletType: '',
palletFamily: '',
status: '',
locationCode: '',
page: 1,
@ -221,9 +304,9 @@ export default {
},
inputLabel: {
headerInput: {
label0: '站点',
label0: '工厂',
label1: '托盘ID',
label2: '托盘类',
label2: '托盘大分类',
label3: '托盘状态',
label4: '库位编码',
label5: '托盘信息',
@ -231,61 +314,99 @@ export default {
},
statusOptions: [],
siteOptions: [],
palletFamilyOptions: [], // - rqrq
palletTypeOptions: [], // - rqrq
selectedPalletTypeData: null, // - rqrq
// table
height: 450,
//
favorite: false,
functionId: this.$route.meta.menuId,
//
// - rqrq
columnList: [
{
columnProp: "site",
headerAlign: "center",
align: "center",
columnLabel: "站点",
columnWidth: 100,
columnLabel: "工厂",
columnWidth: 50,
},
{
columnProp: "palletId",
headerAlign: "center",
align: "center",
columnLabel: "托盘ID",
columnWidth: 100,
},
{
columnProp: "palletFamilyDesc",
headerAlign: "center",
align: "center",
columnLabel: "托盘大分类",
columnWidth: 150,
},
{
columnProp: "palletType",
columnProp: "typeDesc",
headerAlign: "center",
align: "center",
columnLabel: "托盘类型",
columnWidth: 100,
columnWidth: 180,
},
{
columnProp: "palletSize",
columnProp: "soreTypeText",
headerAlign: "center",
align: "center",
columnLabel: "托盘尺寸",
columnLabel: "分拣方式",
columnWidth: 120,
},
{
columnProp: "maxLoad",
columnProp: "autoSortText",
headerAlign: "center",
align: "center",
columnLabel: "最大承重",
columnWidth: 120,
columnLabel: "自动分拣",
columnWidth: 80,
},
{
columnProp: "statusText",
columnProp: "callingFlagText",
headerAlign: "center",
align: "center",
columnLabel: "状态",
columnWidth: 100,
columnLabel: "调用标志",
columnWidth: 80,
},
{
columnProp: "locationCode",
headerAlign: "center",
align: "center",
columnLabel: "库位编码",
columnWidth: 150,
columnWidth: 80,
},
{
columnProp: "wcsLocation",
headerAlign: "center",
align: "center",
columnLabel: "WCS库位",
columnWidth: 80,
},
{
columnProp: "emptyFlagText",
headerAlign: "center",
align: "center",
columnLabel: "空栈板标记",
columnWidth: 80,
},
{
columnProp: "statusText",
headerAlign: "center",
align: "center",
columnLabel: "托盘状态",
columnWidth: 80,
},
{
columnProp: "remark",
headerAlign: "center",
align: "left",
columnLabel: "备注",
columnWidth: 200,
},
{
columnProp: "createdBy",
@ -301,6 +422,34 @@ export default {
columnLabel: "创建时间",
columnWidth: 150,
},
{
columnProp: "updatedBy",
headerAlign: "center",
align: "center",
columnLabel: "修改人",
columnWidth: 100,
},
{
columnProp: "updatedTime",
headerAlign: "center",
align: "center",
columnLabel: "修改时间",
columnWidth: 150,
},
{
columnProp: "palletSize",
headerAlign: "center",
align: "center",
columnLabel: "托盘尺寸",
columnWidth: 120,
},
{
columnProp: "maxLoad",
headerAlign: "center",
align: "center",
columnLabel: "最大承重(kg)",
columnWidth: 120,
},
],
//
dataList: [],
@ -316,7 +465,7 @@ export default {
//
dataRule: {
site: [
{ required: true, message: '站点不能为空', trigger: 'change' }
{ required: true, message: '工厂不能为空', trigger: 'change' }
],
palletType: [
{ required: true, message: '托盘类型不能为空', trigger: 'change' }
@ -346,7 +495,7 @@ export default {
}
})
},
//
//
getSiteOptions() {
const params = {
userName: this.$store.state.user.name
@ -356,7 +505,7 @@ export default {
this.siteOptions = data.data
}
}).catch(error => {
console.error('获取站点列表失败:', error)
console.error('获取工厂列表失败:', error)
})
},
//
@ -411,14 +560,14 @@ export default {
}
})
},
//
// - rqrq
initModel(row) {
this.setUp.reviewFlag = true
this.setUp.saveButton = false
this.setUp.readonlyFlag = false
if (row) {
//
// - rqrq
this.setUp.readonlyFlag = true
this.saveHeaderData = {
id: row.id,
@ -429,11 +578,25 @@ export default {
maxLoad: row.maxLoad,
status: row.status,
locationCode: row.locationCode,
remark: row.remark,
wcsLocation: row.wcsLocation || '', // WCS - rqrq
palletFamily: row.palletFamily || '', // - rqrq
soreType: row.soreType != null ? row.soreType : 0, // - rqrq
autoSort: row.autoSort || 'N', // - rqrq
emptyFlag: row.emptyFlag || 'N', // - rqrq
callingFlag: row.callingFlag || 'N', // - rqrq
remark: row.remark || '',
updatedBy: this.$store.state.user.name
}
// - rqrq
if (row.site) {
this.getPalletFamilyOptions(row.site)
if (row.palletFamily) {
this.getPalletTypeOptions(row.site, row.palletFamily)
}
}
} else {
//
// - rqrq
this.saveHeaderData = {
id: null,
site: '',
@ -443,11 +606,110 @@ export default {
maxLoad: null,
status: 'AVAILABLE',
locationCode: '',
wcsLocation: '', // WCS - rqrq
palletFamily: '', // - rqrq
soreType: 0, // - rqrq
autoSort: 'N', // N - rqrq
emptyFlag: 'N', // N - rqrq
callingFlag: 'N', // N - rqrq
remark: '',
createdBy: this.$store.state.user.name
}
}
},
// change - rqrq
onSiteChange(value) {
console.log('工厂变更 - rqrq:', value)
// - rqrq
this.saveHeaderData.palletFamily = ''
this.saveHeaderData.palletType = ''
this.saveHeaderData.soreType = 0
this.saveHeaderData.autoSort = 'N'
this.palletFamilyOptions = []
this.palletTypeOptions = []
this.selectedPalletTypeData = null
// - rqrq
if (value) {
this.getPalletFamilyOptions(value)
}
},
// - rqrq
getPalletFamilyOptions(site) {
if (!site) {
this.palletFamilyOptions = []
return
}
getPalletFamilyList({ site }).then(({data}) => {
if (data && data.code === 0) {
this.palletFamilyOptions = data.rows || []
}
}).catch(() => {
this.palletFamilyOptions = []
})
},
// - rqrq
getPalletTypeOptions(site, palletFamily) {
if (!site) {
this.palletTypeOptions = []
return
}
const params = { site }
if (palletFamily) {
params.palletFamily = palletFamily
}
getPalletTypeList(params).then(({data}) => {
if (data && data.code === 0) {
this.palletTypeOptions = data.rows || []
}
}).catch(() => {
this.palletTypeOptions = []
})
},
// change - rqrq
onPalletFamilyChange(value) {
console.log('托盘大分类变更 - rqrq:', value)
// - rqrq
this.saveHeaderData.palletType = ''
this.saveHeaderData.soreType = 0
this.saveHeaderData.autoSort = 'N'
this.selectedPalletTypeData = null
// - rqrq
if (value && this.saveHeaderData.site) {
this.getPalletTypeOptions(this.saveHeaderData.site, value)
} else {
this.palletTypeOptions = []
}
},
// change - palletAssembly.vue - rqrq
onPalletTypeChange(value) {
console.log('托盘类型变更 - rqrq:', value)
// - rqrq
const selectedType = this.palletTypeOptions.find(item => item.palletType === value)
if (selectedType) {
this.selectedPalletTypeData = selectedType
// - rqrq
this.saveHeaderData.soreType = selectedType.wcsSoreType != null ? selectedType.wcsSoreType : 0
this.saveHeaderData.autoSort = selectedType.wcsAutoSort || 'N'
console.log('自动带出分拣方式 - rqrq:', this.saveHeaderData.soreType)
console.log('自动带出自动分拣 - rqrq:', this.saveHeaderData.autoSort)
} else {
// - rqrq
this.saveHeaderData.soreType = 0
this.saveHeaderData.autoSort = 'N'
this.selectedPalletTypeData = null
}
},
//
favoriteFunction() {
let userFavorite = {
@ -472,7 +734,7 @@ export default {
})
}
},
//
// - rqrq
getDataList() {
this.dataListLoading = true
this.queryHeaderData.page = this.pageIndex
@ -480,7 +742,22 @@ export default {
getPalletList(this.queryHeaderData).then(({data}) => {
if (data && data.code === 0) {
this.dataList = data.page.list
// - rqrq
this.dataList = (data.page.list || []).map(item => {
return {
...item,
// - rqrq
soreTypeText: this.getSoreTypeText(item.soreType),
// - rqrq
autoSortText: item.autoSort === 'Y' ? '是' : item.autoSort === 'N' ? '否' : '',
// - rqrq
emptyFlagText: item.emptyFlag === 'Y' ? '是' : item.emptyFlag === 'N' ? '否' : '',
// - rqrq
callingFlagText: item.callingFlag === 'Y' ? '是' : item.callingFlag === 'N' ? '否' : '',
// - rqrq
statusText: this.getStatusText(item.status)
}
})
this.totalPage = data.page.totalCount
} else {
this.dataList = []
@ -489,6 +766,26 @@ export default {
this.dataListLoading = false
})
},
// - rqrq
getSoreTypeText(soreType) {
const soreTypeMap = {
0: '人工/混装',
1: '气胀轴自动分拣',
2: '抱箱自动分拣',
3: '直接出库'
}
return soreTypeMap[soreType] !== undefined ? soreTypeMap[soreType] : ''
},
// - rqrq
getStatusText(status) {
const statusMap = {
'AVAILABLE': '可用',
'OCCUPIED': '使用中',
'DAMAGED': '损坏',
'DISABLED': '禁用'
}
return statusMap[status] || status
},
//
sizeChangeHandle(val) {
this.pageSize = val

Loading…
Cancel
Save