Browse Source

feat(automatedWarehouse): 添加合托查询功能

- 创建 palletMergeQuery API 接口文件,包含获取托盘类型、查询合托列表、提交合托等功能
- 实现合托查询页面组件,包含托盘类型选择下拉框和查询表单
- 添加表格展示需要合托的托盘列表,支持多选和行点击操作
- 实现提交合托功能,支持选择多个托盘进行合并操作
- 集成托盘类型下拉选项加载和表格数据查询功能
- 添加选中状态管理和提交按钮禁用逻辑
master
常熟吴彦祖 1 week ago
parent
commit
af5981b8fd
  1. 13
      src/api/automatedWarehouse/palletMergeQuery.js
  2. 337
      src/views/modules/automatedWarehouse/palletMergeQuery.vue

13
src/api/automatedWarehouse/palletMergeQuery.js

@ -0,0 +1,13 @@
import { createAPI } from "@/utils/httpRequest.js";
// ========== 合托查询相关 ========== - rqrq
// 获取托盘类型下拉选项(wcs_auto_sort='Y' 且 pallet_family != 'A02')- rqrq
export const getPalletTypeOptions = data => createAPI(`/automatedWarehouse/palletMergeQuery/getPalletTypeOptions`, 'post', data)
// 查询需要合托的托盘列表 - rqrq
export const searchPalletMergeList = data => createAPI(`/automatedWarehouse/palletMergeQuery/searchPalletMergeList`, 'post', data)
// 提交合托请求(预留方法)- rqrq
export const submitPalletMerge = data => createAPI(`/automatedWarehouse/palletMergeQuery/submitPalletMerge`, 'post', data)

337
src/views/modules/automatedWarehouse/palletMergeQuery.vue

@ -0,0 +1,337 @@
<template>
<div class="mod-config yzz">
<!-- 查询表单 - rqrq -->
<el-form label-position="top" style="margin-top: 1px; margin-left: 0px;">
<el-form :inline="true" label-position="top" style="margin-top: 0px">
<el-form-item label="托盘类型" required>
<el-select
v-model="searchData.palletType"
placeholder="请选择托盘类型"
style="width: 200px"
clearable
@change="handlePalletTypeChange">
<el-option
v-for="item in palletTypeOptions"
:key="item.palletType"
:label="item.palletType + ' - ' + item.typeDesc"
:value="item.palletType">
</el-option>
</el-select>
</el-form-item>
<el-form-item :label="' '">
<el-button type="primary" @click="searchTable()" :disabled="!searchData.palletType">查询</el-button>
</el-form-item>
</el-form>
</el-form>
<!-- 操作按钮行 - rqrq -->
<div style="margin-bottom: 10px;">
<el-button
type="primary"
class="yzzButtonAn"
@click="submitMerge()"
:disabled="submitLoading || selectedRows.length < 2"
:loading="submitLoading">
{{ submitLoading ? '提交中...' : '提交合托' }}
</el-button>
<span style="margin-left: 10px; color: #909399; font-size: 12px;">
已选择 {{ selectedRows.length }} 至少选择2条才能合托
</span>
</div>
<!-- 主表格 - rqrq -->
<el-table
:data="dataList"
@row-click="handleRowClick"
@selection-change="handleSelectionChange"
:height="height"
border
highlight-current-row
ref="mainTable"
v-loading="dataListLoading"
style="width: 100%;">
<!-- 复选框列 - rqrq -->
<el-table-column
type="selection"
width="55"
align="center">
</el-table-column>
<!-- 数据列 - rqrq -->
<el-table-column
v-for="(item,index) in columnList"
:key="index"
:sortable="item.columnSortable"
:prop="item.columnProp"
:header-align="item.headerAlign"
:show-overflow-tooltip="item.showOverflowTooltip"
:align="item.align"
:fixed="item.fixed==''?false:item.fixed"
:min-width="item.columnWidth"
:label="item.columnLabel">
<template slot-scope="scope">
<span v-if="!item.columnHidden">{{ scope.row[item.columnProp] }}</span>
</template>
</el-table-column>
</el-table>
</div>
</template>
<script>
import {
getPalletTypeOptions,
searchPalletMergeList,
submitPalletMerge
} from "@/api/automatedWarehouse/palletMergeQuery.js"
export default {
data() {
return {
height: 400,
dataList: [],
dataListLoading: false,
submitLoading: false,
selectedRows: [],
palletTypeOptions: [],
searchData: {
site: this.$store.state.user.site || '55',
palletType: ''
},
// - rqrq
columnList: [
{
userId: this.$store.state.user.name,
serialNumber: 'palletMerge01PalletId',
tableId: "palletMergeTable",
tableName: "合托查询表",
columnProp: "palletId",
headerAlign: "center",
align: "center",
columnLabel: "托盘ID",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120,
showOverflowTooltip: true
},
{
userId: this.$store.state.user.name,
serialNumber: 'palletMerge01PalletType',
tableId: "palletMergeTable",
tableName: "合托查询表",
columnProp: "palletType",
headerAlign: "center",
align: "center",
columnLabel: "托盘类型",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100,
showOverflowTooltip: true
},
{
userId: this.$store.state.user.name,
serialNumber: 'palletMerge01TypeDesc',
tableId: "palletMergeTable",
tableName: "合托查询表",
columnProp: "typeDesc",
headerAlign: "center",
align: "left",
columnLabel: "类型描述",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 150,
showOverflowTooltip: true
},
{
userId: this.$store.state.user.name,
serialNumber: 'palletMerge01LocationCode',
tableId: "palletMergeTable",
tableName: "合托查询表",
columnProp: "locationCode",
headerAlign: "center",
align: "center",
columnLabel: "库位编码",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 120,
showOverflowTooltip: true
},
{
userId: this.$store.state.user.name,
serialNumber: 'palletMerge01CallingFlag',
tableId: "palletMergeTable",
tableName: "合托查询表",
columnProp: "callingFlag",
headerAlign: "center",
align: "center",
columnLabel: "调用标志",
columnHidden: false,
columnImage: false,
columnSortable: false,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 80,
showOverflowTooltip: true
},
{
userId: this.$store.state.user.name,
serialNumber: 'palletMerge01UsedPositionCount',
tableId: "palletMergeTable",
tableName: "合托查询表",
columnProp: "usedPositionCount",
headerAlign: "center",
align: "center",
columnLabel: "已用位置",
columnHidden: false,
columnImage: false,
columnSortable: true,
sortLv: 0,
status: true,
fixed: '',
columnWidth: 100,
showOverflowTooltip: true
}
]
}
},
mounted() {
this.$nextTick(() => {
this.height = window.innerHeight - 260
// - rqrq
this.loadPalletTypeOptions()
})
},
methods: {
// - rqrq
loadPalletTypeOptions() {
getPalletTypeOptions({ site: this.searchData.site }).then(({ data }) => {
if (data && data.code == 0) {
this.palletTypeOptions = data.rows || []
} else {
this.palletTypeOptions = []
this.$message.error(data.msg || '获取托盘类型选项失败')
}
}).catch(() => {
this.palletTypeOptions = []
this.$message.error('获取托盘类型选项失败')
})
},
// - rqrq
handlePalletTypeChange() {
this.dataList = []
this.selectedRows = []
if (this.$refs.mainTable) {
this.$refs.mainTable.clearSelection()
}
},
// - rqrq
searchTable() {
// - rqrq
if (!this.searchData.palletType) {
this.$alert('请选择托盘类型', '提示', { confirmButtonText: '确定' })
return
}
this.dataListLoading = true
this.selectedRows = []
if (this.$refs.mainTable) {
this.$refs.mainTable.clearSelection()
}
searchPalletMergeList(this.searchData).then(({ data }) => {
this.dataListLoading = false
if (data && data.code == 0) {
this.dataList = data.rows || []
if (this.dataList.length === 0) {
this.$message({
message: '没有找到需要合托的托盘',
type: 'warning',
duration: 2000
})
}
} else {
this.dataList = []
this.$alert(data.msg || '查询失败', '错误', { confirmButtonText: '确定' })
}
}).catch(() => {
this.dataListLoading = false
this.dataList = []
this.$message.error('查询失败')
})
},
// / - rqrq
handleRowClick(row) {
this.$refs.mainTable.toggleRowSelection(row)
},
// - rqrq
handleSelectionChange(selection) {
this.selectedRows = selection
},
// - rqrq
submitMerge() {
// - rqrq
if (this.selectedRows.length < 2) {
this.$alert('请至少选择2条数据进行合托', '提示', { confirmButtonText: '确定' })
return
}
this.submitLoading = true
// - rqrq
submitPalletMerge(this.selectedRows).then(({ data }) => {
if (data && data.code === 0) {
this.$message({
message: '提交成功',
type: 'success',
duration: 1500
})
// - rqrq
this.searchTable()
} else {
this.$alert(data.msg || '提交失败', '错误', { confirmButtonText: '确定' })
}
}).catch(() => {
this.$message.error('提交失败')
}).finally(() => {
this.submitLoading = false
})
}
}
}
</script>
<style scoped>
/deep/ .el-form-item--medium .el-form-item__content {
height: auto;
}
/* 表格行点击时的鼠标样式 - rqrq */
/deep/ .el-table__body tr {
cursor: pointer;
}
/* 必选标记样式 - rqrq */
/deep/ .el-form-item.is-required .el-form-item__label:before,
.el-form-item[required] .el-form-item__label:before {
content: '*';
color: #F56C6C;
margin-right: 4px;
}
</style>
Loading…
Cancel
Save