feat(工单管理): 增强库存查询功能并添加分页支持
- 在物料领料、成品入库和出货对话框中添加分页功能 - 增加"隐藏0库存"开关和库存类别选择器 - 修改API接口为POST方式并支持分页参数 - 优化删除工单的条件判断
This commit is contained in:
@@ -290,17 +290,6 @@ export function getShipmentList(workorder) {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据工单号查询物料库存
|
|
||||||
* @param {工单号} workorder
|
|
||||||
*/
|
|
||||||
export function getMaterialInventoryList(workorder) {
|
|
||||||
return request({
|
|
||||||
url: 'mes/productManagement/ProWorkorder/GetMaterialInventoryList/' + workorder,
|
|
||||||
method: 'get'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 领料操作
|
* 领料操作
|
||||||
* @param {领料请求参数} data
|
* @param {领料请求参数} data
|
||||||
@@ -336,36 +325,55 @@ export function shipProduct(data) {
|
|||||||
data: data
|
data: data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 根据工单号查询物料库存
|
||||||
|
* @param {工单号} data.workorder
|
||||||
|
* @param {是否隐藏为0记录} data.isHideZero
|
||||||
|
* @param {搜索方式} data.searchType
|
||||||
|
*/
|
||||||
|
export function getMaterialInventoryList(data) {
|
||||||
|
return request({
|
||||||
|
url: 'mes/productManagement/ProWorkorder/GetMaterialInventoryList',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 根据工单号获取可领料工单清单
|
* 根据工单号获取可领料工单清单
|
||||||
* @param {工单号} workorder
|
* @param {工单号} data.workorder
|
||||||
|
* @param {是否隐藏为0记录} data.isHideZero
|
||||||
|
* @param {查询范围 1-物料库 2-转用库} data.searchType
|
||||||
*/
|
*/
|
||||||
export function getPickableWorkordersByWorkorder(workorder) {
|
export function getPickableWorkordersByWorkorder(data) {
|
||||||
return request({
|
return request({
|
||||||
url: 'mes/productManagement/ProWorkorder/GetPickableWorkordersByWorkorder/' + workorder,
|
url: 'mes/productManagement/ProWorkorder/GetPickableWorkordersByWorkorder',
|
||||||
method: 'get'
|
method: 'post',
|
||||||
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据工单号获取可出货订单清单
|
* 根据工单号获取可出货订单清单
|
||||||
* @param {工单号} workorder
|
* @param {工单号} data.workorder
|
||||||
|
* @param {是否隐藏为0记录} data.isHideZero
|
||||||
*/
|
*/
|
||||||
export function getShippableOrdersByWorkorder(workorder) {
|
export function getShippableOrdersByWorkorder(data) {
|
||||||
return request({
|
return request({
|
||||||
url: 'mes/productManagement/ProWorkorder/GetShippableOrdersByWorkorder/' + workorder,
|
url: 'mes/productManagement/ProWorkorder/GetShippableOrdersByWorkorder',
|
||||||
method: 'get'
|
method: 'post',
|
||||||
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据工单号查询成品库存
|
* 根据工单号查询成品库存
|
||||||
* @param {工单号} workorder
|
* @param {工单号} data.workorder
|
||||||
|
* @param {是否隐藏为0记录} data.isHideZero
|
||||||
*/
|
*/
|
||||||
export function getProductInventoryList(workorder) {
|
export function getProductInventoryList(data) {
|
||||||
return request({
|
return request({
|
||||||
url: 'mes/productManagement/ProWorkorder/GetProductInventoryList/' + workorder,
|
url: 'mes/productManagement/ProWorkorder/GetProductInventoryList',
|
||||||
method: 'get'
|
method: 'post',
|
||||||
|
data
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,13 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>可领料库存清单</span>
|
<span>可领料库存清单</span>
|
||||||
|
<div class="card-header-right">
|
||||||
|
<el-select v-model="searchType" placeholder="选择库存类别" size="small" style="width: 150px; margin-right: 10px">
|
||||||
|
<el-option label="物料库" :value="1" />
|
||||||
|
<el-option label="转用库" :value="2" />
|
||||||
|
</el-select>
|
||||||
|
<el-switch v-model="isHideZero" active-text="隐藏0库存" inactive-text="显示0库存" size="small" @change="loadInventoryList" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="inventoryList" stripe size="small" border v-loading="inventoryLoading">
|
<el-table :data="inventoryList" stripe size="small" border v-loading="inventoryLoading">
|
||||||
@@ -60,6 +67,17 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<div class="pagination-container" v-if="inventoryTotal > 0">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="pagination.currentPage"
|
||||||
|
v-model:page-size="pagination.pageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="inventoryTotal"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange" />
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 可领料工单选择对话框 -->
|
<!-- 可领料工单选择对话框 -->
|
||||||
@@ -202,6 +220,16 @@ const pickableWorkorders = ref([])
|
|||||||
const showWorkorderSelectDialog = ref(false)
|
const showWorkorderSelectDialog = ref(false)
|
||||||
const workorderSelectLoading = ref(false)
|
const workorderSelectLoading = ref(false)
|
||||||
|
|
||||||
|
// 新增变量:控制是否显示0库存
|
||||||
|
const isHideZero = ref(true)
|
||||||
|
const searchType = ref(1)
|
||||||
|
|
||||||
|
// 分页变量
|
||||||
|
const pagination = reactive({
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10
|
||||||
|
})
|
||||||
|
|
||||||
// 表格数据
|
// 表格数据
|
||||||
const pickRecords = ref([])
|
const pickRecords = ref([])
|
||||||
const inventoryList = ref([])
|
const inventoryList = ref([])
|
||||||
@@ -319,13 +347,19 @@ function loadInventoryList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventoryLoading.value = true
|
inventoryLoading.value = true
|
||||||
// 调用后端API
|
// 调用后端API,传递isHideZero、searchType和分页参数
|
||||||
getMaterialInventoryList(props.workorderInfo.workorder)
|
getMaterialInventoryList({
|
||||||
|
workorder: props.workorderInfo.workorder,
|
||||||
|
isHideZero: isHideZero.value,
|
||||||
|
searchType: searchType.value,
|
||||||
|
pageNum: pagination.currentPage,
|
||||||
|
pageSize: pagination.pageSize
|
||||||
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
// 转换后端返回的数据格式为前端需要的格式
|
// 转换后端返回的数据格式为前端需要的格式
|
||||||
inventoryList.value = response.data
|
inventoryList.value = response.data.result || []
|
||||||
inventoryTotal.value = inventoryList.value.length
|
inventoryTotal.value = response.data.totalNum || 0
|
||||||
} else {
|
} else {
|
||||||
proxy.$message.error('获取库存清单失败: ' + response.msg)
|
proxy.$message.error('获取库存清单失败: ' + response.msg)
|
||||||
inventoryList.value = []
|
inventoryList.value = []
|
||||||
@@ -342,6 +376,17 @@ function loadInventoryList() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 分页相关方法
|
||||||
|
function handleSizeChange(val) {
|
||||||
|
pagination.pageSize = val
|
||||||
|
loadInventoryList()
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCurrentChange(val) {
|
||||||
|
pagination.currentPage = val
|
||||||
|
loadInventoryList()
|
||||||
|
}
|
||||||
|
|
||||||
// 加载库位选项
|
// 加载库位选项
|
||||||
function loadLocationOptions() {
|
function loadLocationOptions() {
|
||||||
// 这里应该调用实际的API接口获取库位列表
|
// 这里应该调用实际的API接口获取库位列表
|
||||||
@@ -436,12 +481,18 @@ function handlePickMaterial(material) {
|
|||||||
// 加载可领料工单列表
|
// 加载可领料工单列表
|
||||||
function loadPickableWorkorders() {
|
function loadPickableWorkorders() {
|
||||||
workorderSelectLoading.value = true
|
workorderSelectLoading.value = true
|
||||||
// 调用后端API获取可领料工单列表
|
// 调用后端API获取可领料工单列表,传递isHideZero和searchType参数
|
||||||
getPickableWorkordersByWorkorder(props.workorderInfo.workorder)
|
getPickableWorkordersByWorkorder({
|
||||||
|
Workorder: props.workorderInfo.workorder,
|
||||||
|
IsHideZero: isHideZero.value,
|
||||||
|
SearchType: searchType.value,
|
||||||
|
Page: 1,
|
||||||
|
PageSize: 100
|
||||||
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
// 计算每个工单的可领料数量
|
// 计算每个工单的可领料数量
|
||||||
pickableWorkorders.value = response.data
|
pickableWorkorders.value = response.data.result || []
|
||||||
// 显示工单选择对话框
|
// 显示工单选择对话框
|
||||||
showWorkorderSelectDialog.value = true
|
showWorkorderSelectDialog.value = true
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -37,6 +37,14 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>库存清单</span>
|
<span>库存清单</span>
|
||||||
|
<div class="card-header-right">
|
||||||
|
<el-switch
|
||||||
|
v-model="isHideZero"
|
||||||
|
active-text="隐藏0库存"
|
||||||
|
inactive-text="显示0库存"
|
||||||
|
size="small"
|
||||||
|
@change="loadInventoryList"
|
||||||
|
style="margin-right: 10px" />
|
||||||
<el-button
|
<el-button
|
||||||
type="primary"
|
type="primary"
|
||||||
size="small"
|
size="small"
|
||||||
@@ -45,6 +53,7 @@
|
|||||||
入库
|
入库
|
||||||
</el-button>
|
</el-button>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="inventoryList" stripe size="small" border v-loading="inventoryLoading">
|
<el-table :data="inventoryList" stripe size="small" border v-loading="inventoryLoading">
|
||||||
<el-table-column prop="materialCode" label="产品型号" width="120" />
|
<el-table-column prop="materialCode" label="产品型号" width="120" />
|
||||||
@@ -53,6 +62,17 @@
|
|||||||
<el-table-column prop="currentQuantity" label="当前库存" width="100" />
|
<el-table-column prop="currentQuantity" label="当前库存" width="100" />
|
||||||
<!-- <el-table-column prop="locationCode" label="库位" width="120" /> -->
|
<!-- <el-table-column prop="locationCode" label="库位" width="120" /> -->
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<div class="pagination-container" v-if="inventoryTotal > 0">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="pagination.currentPage"
|
||||||
|
v-model:page-size="pagination.pageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="inventoryTotal"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange" />
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 入库单据弹窗 -->
|
<!-- 入库单据弹窗 -->
|
||||||
@@ -134,6 +154,15 @@ const showStorageForm = ref(false)
|
|||||||
const recordsLoading = ref(false)
|
const recordsLoading = ref(false)
|
||||||
const inventoryLoading = ref(false)
|
const inventoryLoading = ref(false)
|
||||||
|
|
||||||
|
// 新增变量:控制是否显示0库存
|
||||||
|
const isHideZero = ref(true)
|
||||||
|
|
||||||
|
// 分页变量
|
||||||
|
const pagination = reactive({
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10
|
||||||
|
})
|
||||||
|
|
||||||
// 表格数据
|
// 表格数据
|
||||||
const storageRecords = ref([])
|
const storageRecords = ref([])
|
||||||
const inventoryList = ref([])
|
const inventoryList = ref([])
|
||||||
@@ -240,13 +269,18 @@ function loadInventoryList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventoryLoading.value = true
|
inventoryLoading.value = true
|
||||||
// 调用后端API
|
// 调用后端API,传递isHideZero和分页参数
|
||||||
getProductInventoryList(props.workorderInfo.workorder)
|
getProductInventoryList({
|
||||||
|
workorder: props.workorderInfo.workorder,
|
||||||
|
isHideZero: isHideZero.value,
|
||||||
|
pageNum: pagination.currentPage,
|
||||||
|
pageSize: pagination.pageSize
|
||||||
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
// 转换后端返回的数据格式为前端需要的格式
|
// 转换后端返回的数据格式为前端需要的格式
|
||||||
inventoryList.value = response.data
|
inventoryList.value = response.data.result || []
|
||||||
inventoryTotal.value = inventoryList.value.length
|
inventoryTotal.value = response.data.totalNum || 0
|
||||||
} else {
|
} else {
|
||||||
proxy.$message.error('获取库存清单失败: ' + response.msg)
|
proxy.$message.error('获取库存清单失败: ' + response.msg)
|
||||||
inventoryList.value = []
|
inventoryList.value = []
|
||||||
@@ -263,6 +297,17 @@ function loadInventoryList() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 分页相关方法
|
||||||
|
function handleSizeChange(val) {
|
||||||
|
pagination.pageSize = val
|
||||||
|
loadInventoryList()
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCurrentChange(val) {
|
||||||
|
pagination.currentPage = val
|
||||||
|
loadInventoryList()
|
||||||
|
}
|
||||||
|
|
||||||
// 获取操作员列表
|
// 获取操作员列表
|
||||||
function getOperatorList() {
|
function getOperatorList() {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
<template #header>
|
<template #header>
|
||||||
<div class="card-header">
|
<div class="card-header">
|
||||||
<span>可出货订单</span>
|
<span>可出货订单</span>
|
||||||
|
<el-switch v-model="isHideZero" active-text="隐藏0库存" inactive-text="显示0库存" size="small" @change="loadInventoryList" />
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<el-table :data="inventoryList" stripe size="small" border v-loading="inventoryLoading">
|
<el-table :data="inventoryList" stripe size="small" border v-loading="inventoryLoading">
|
||||||
@@ -62,6 +63,17 @@
|
|||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
<!-- 分页组件 -->
|
||||||
|
<div class="pagination-container" v-if="inventoryTotal > 0">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="pagination.currentPage"
|
||||||
|
v-model:page-size="pagination.pageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="inventoryTotal"
|
||||||
|
@size-change="handleSizeChange"
|
||||||
|
@current-change="handleCurrentChange" />
|
||||||
|
</div>
|
||||||
</el-card>
|
</el-card>
|
||||||
|
|
||||||
<!-- 出货单据弹窗 -->
|
<!-- 出货单据弹窗 -->
|
||||||
@@ -147,6 +159,15 @@ const showShipmentForm = ref(false)
|
|||||||
const recordsLoading = ref(false)
|
const recordsLoading = ref(false)
|
||||||
const inventoryLoading = ref(false)
|
const inventoryLoading = ref(false)
|
||||||
|
|
||||||
|
// 新增变量:控制是否显示0库存
|
||||||
|
const isHideZero = ref(true)
|
||||||
|
|
||||||
|
// 分页变量
|
||||||
|
const pagination = reactive({
|
||||||
|
currentPage: 1,
|
||||||
|
pageSize: 10
|
||||||
|
})
|
||||||
|
|
||||||
// 表格数据
|
// 表格数据
|
||||||
const shipmentRecords = ref([])
|
const shipmentRecords = ref([])
|
||||||
const inventoryList = ref([])
|
const inventoryList = ref([])
|
||||||
@@ -260,13 +281,18 @@ function loadInventoryList() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inventoryLoading.value = true
|
inventoryLoading.value = true
|
||||||
// 调用后端API
|
// 调用后端API,传递isHideZero和分页参数
|
||||||
getShippableOrdersByWorkorder(props.workorderInfo.workorder)
|
getShippableOrdersByWorkorder({
|
||||||
|
workorder: props.workorderInfo.workorder,
|
||||||
|
isHideZero: isHideZero.value,
|
||||||
|
pageNum: pagination.currentPage,
|
||||||
|
pageSize: pagination.pageSize
|
||||||
|
})
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
// 直接使用后端返回的数据
|
// 直接使用后端返回的数据
|
||||||
inventoryList.value = response.data || []
|
inventoryList.value = response.data.result || []
|
||||||
inventoryTotal.value = inventoryList.value.length
|
inventoryTotal.value = response.data.totalNum || 0
|
||||||
} else {
|
} else {
|
||||||
proxy.$message.error('获取库存清单失败: ' + response.msg)
|
proxy.$message.error('获取库存清单失败: ' + response.msg)
|
||||||
inventoryList.value = []
|
inventoryList.value = []
|
||||||
@@ -283,6 +309,17 @@ function loadInventoryList() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 分页相关方法
|
||||||
|
function handleSizeChange(val) {
|
||||||
|
pagination.pageSize = val
|
||||||
|
loadInventoryList()
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleCurrentChange(val) {
|
||||||
|
pagination.currentPage = val
|
||||||
|
loadInventoryList()
|
||||||
|
}
|
||||||
|
|
||||||
// 获取操作员列表
|
// 获取操作员列表
|
||||||
function getOperatorList() {
|
function getOperatorList() {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -174,7 +174,9 @@
|
|||||||
<el-dropdown-item @click="handleMove(scope.row, 1)"><el-text type="info">上移</el-text></el-dropdown-item>
|
<el-dropdown-item @click="handleMove(scope.row, 1)"><el-text type="info">上移</el-text></el-dropdown-item>
|
||||||
<el-dropdown-item @click="handleMove(scope.row, 2)"><el-text type="info">下移</el-text></el-dropdown-item>
|
<el-dropdown-item @click="handleMove(scope.row, 2)"><el-text type="info">下移</el-text></el-dropdown-item>
|
||||||
<!-- <el-dropdown-item @click="handleUpdate(scope.row)"><el-text type="success">编辑</el-text></el-dropdown-item> -->
|
<!-- <el-dropdown-item @click="handleUpdate(scope.row)"><el-text type="success">编辑</el-text></el-dropdown-item> -->
|
||||||
<el-dropdown-item v-if="scope.row.planNum == 0" @click="handleDelete(scope.row)"
|
<el-dropdown-item
|
||||||
|
v-if="scope.row.planNum == 0 && (scope.row.feedOrder == null || scope.row.feedOrder == '')"
|
||||||
|
@click="handleDelete(scope.row)"
|
||||||
><el-text type="danger">删除</el-text></el-dropdown-item
|
><el-text type="danger">删除</el-text></el-dropdown-item
|
||||||
>
|
>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
|
|||||||
Reference in New Issue
Block a user