Commit 1f269b05 by zhangtw

页面问题修复

parent 64b1e41d
......@@ -26,6 +26,15 @@ export function addInventory(data) {
})
}
// 批量新增库存
export function batchAddInventory(data){
return request({
url: '/inventory/inventory/batchAdd',
method: 'post',
data: data
})
}
// 修改库存
export function updateInventory(data) {
return request({
......
<template>
<div class="app-container">
<!-- 查询表单 -->
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="100px">
<!-- 标题栏 + 操作按钮(对齐字典页面) -->
<PageTitle>
<template #buttons>
<el-button
type="primary"
plain
icon="el-icon-plus"
size="medium"
@click="handleAdd"
v-hasPermi="['inventory:inbound:add']"
>新增</el-button>
<el-button
type="success"
plain
icon="el-icon-edit"
size="medium"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['inventory:inbound:edit']"
>修改</el-button>
<el-button
type="danger"
plain
icon="el-icon-delete"
size="medium"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['inventory:inbound:remove']"
>删除</el-button>
<el-button
type="warning"
plain
icon="el-icon-download"
size="medium"
@click="handleExport"
v-hasPermi="['inventory:inbound:export']"
>导出</el-button>
</template>
</PageTitle>
<!-- 搜索区域(对齐字典页面的page-wrapper-search组件) -->
<div class="page-container">
<page-wrapper-search
:model="queryParams"
ref="queryForm"
size="small"
@search="handleQuery"
@reset="resetQuery"
>
<el-form-item label="入库单号" prop="orderId">
<el-input
v-model="queryParams.orderId"
......@@ -57,65 +107,20 @@
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<!-- 工具栏 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="el-icon-plus"
size="mini"
@click="handleAdd"
v-hasPermi="['inventory:inbound:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="el-icon-edit"
size="mini"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['inventory:inbound:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="el-icon-delete"
size="mini"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['inventory:inbound:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['inventory:inbound:export']"
>导出</el-button>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<!-- 表格保持不变 -->
<el-table v-loading="loading" :data="inboundList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
</page-wrapper-search>
<!-- 表格区域(对齐字典页面的样式) -->
<div class="table-container">
<el-table
v-loading="loading"
height="100%"
:data="inboundList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" fixed />
<el-table-column label="入库单号" align="center" prop="orderId" />
<el-table-column label="系统编号" align="center" prop="systemNo" />
<el-table-column label="入库类型" align="center" prop="orderTypeId">
<el-table-column label="入库类型" align="center" prop="orderTypeId" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-tag type="success" size="small">
{{ getInBoundTypeName(scope.row.orderTypeId) }}
......@@ -123,7 +128,7 @@
</template>
</el-table-column>
<el-table-column label="订单类型" align="center" prop="orderType">
<el-table-column label="订单类型" align="center" prop="orderType" :show-overflow-tooltip="true">
<template slot-scope="scope">
<el-tag type="success" size="small">
{{ getOrderTypeName(scope.row.orderType) }}
......@@ -134,20 +139,23 @@
<el-table-column label="入库单状态" align="center" prop="orderStatus">
<!-- 状态显示 -->
<template slot-scope="scope">
<el-tag
:type="getStatusType(scope.row.orderStatus)"
size="small"
>
<el-tag :type="getStatusType(scope.row.orderStatus)" size="small">
{{ getStatusName(scope.row.orderStatus) }}
</el-tag>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime" width="120">
<el-table-column label="创建时间" align="center" prop="createTime" width="150">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="300">
<el-table-column
label="操作"
align="center"
class-name="small-padding fixed-width"
fixed="right"
width="250"
>
<template slot-scope="scope">
<el-button
size="mini"
......@@ -183,7 +191,9 @@
</template>
</el-table-column>
</el-table>
</div>
<!-- 分页组件(位置对齐) -->
<pagination
v-show="total>0"
:total="total"
......@@ -191,9 +201,10 @@
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
<!-- 添加或修改入库对话框 -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body class="scrollable-dialog">
<!-- 添加或修改入库对话框(样式对齐) -->
<el-dialog :title="title" :visible.sync="open" width="1200px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<!-- 表单内容保持不变 -->
<el-divider content-position="center">入库单基础信息</el-divider>
......@@ -216,11 +227,13 @@
</el-select>
</el-form-item>
<el-form-item label="入库日期" prop="inboundDate">
<el-date-picker clearable
<el-date-picker
clearable
v-model="form.inboundDate"
type="date"
value-format="yyyy-MM-dd"
placeholder="请选择入库日期">
placeholder="请选择入库日期"
>
</el-date-picker>
</el-form-item>
</el-col>
......@@ -267,14 +280,11 @@
<el-form-item label="负责人" prop="opUserName">
<el-input v-model="form.opUserName" placeholder="请输入负责人" />
</el-form-item>
<!-- <el-form-item label="排序" prop="sortNo">
<el-input v-model="form.sortNo" placeholder="请输入排序" />
</el-form-item> -->
</el-col>
</el-row>
<el-form-item label="备注" prop="remark">
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容"/>
<el-input v-model="form.remark" type="textarea" placeholder="请输入内容" />
</el-form-item>
<el-divider content-position="center">入库单明细信息</el-divider>
......@@ -335,7 +345,6 @@
<el-descriptions-item label="实际量">{{ detailForm.totalActualQuantity || '-' }}</el-descriptions-item>
<el-descriptions-item label="总件数">{{ detailForm.totalPackages || '-' }}</el-descriptions-item>
<el-descriptions-item label="仓库ID">{{ detailForm.warehouseId || '-' }}</el-descriptions-item>
<!-- <el-descriptions-item label="排序">{{ detailForm.sortNo || '-' }}</el-descriptions-item> -->
<el-descriptions-item label="备注" :span="2">
<div class="remark-text">{{ detailForm.remark || '-' }}</div>
</el-descriptions-item>
......@@ -348,7 +357,7 @@
v-model="detailForm.inboundOrderItemsList"
:embedded="true"
:order-id="detailForm.orderId"
:isEditable=isEditable
:isEditable="isEditable"
:show-search-form="false"
:show-pagination="false"
:show-toolbar="false"
......@@ -365,12 +374,7 @@
</div>
</el-dialog>
<!-- 物料选择弹窗 -->
<el-dialog
title="选择物料"
:visible.sync="materialSelectOpen"
width="1200px"
append-to-body
>
<el-dialog title="选择物料" :visible.sync="materialSelectOpen" width="1200px" append-to-body>
<MaterialSelector
v-model="selectedMaterialIds"
:multiple="true"
......@@ -390,27 +394,29 @@ import { listInbound, getInbound, delInbound, addInbound, updateInbound } from "
import { listInbound_items } from "@/api/inventory/inbound_items"
import { batchAddInventory } from "@/api/inventory/inventory"
import InboundItems from "@/views/inventory/inbound_items/index.vue"
import RightToolbar from "@/components/RightToolbar" // 确保导入这个组件
// import PageTitle from "@/components/PageTitle" // 引入字典页面的标题组件
// import PageWrapperSearch from "@/components/PageWrapperSearch" // 引入搜索包装组件
import MaterialSelector from "@/views/inventory/materials/materialsSeletor.vue";
export default {
name: "Inbound",
components: {
InboundItems,
RightToolbar,
MaterialSelector
},
data() {
return {
inBoundTypeOptions:[
inBoundTypeOptions: [
{ orderTypeId: '1', orderTypeName: '入库类型1' },
{ orderTypeId: '2', orderTypeName: '入库类型2' }
],
inBoundStatusOptions: [
{ orderStatus: 1, orderStatusName: '草稿', type: 'info'},
{ orderStatus: 2, orderStatusName: '已完成', type: 'success'},
{ orderStatus: 3, orderStatusName: '已取消', type: 'danger'}
{ orderStatus: 1, orderStatusName: '草稿', type: 'info' },
{ orderStatus: 2, orderStatusName: '已完成', type: 'success' },
{ orderStatus: 3, orderStatusName: '已取消', type: 'danger' }
],
orderTypeOptions:[
orderTypeOptions: [
{ orderType: '1', orderTypeName: '订单类型1' },
{ orderType: '2', orderTypeName: '订单类型2' }
],
......@@ -544,7 +550,20 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.$refs.queryForm.resetFields()
this.dateRange = []
this.queryParams = {
pageNum: 1,
pageSize: 10,
orderId: null,
orderTypeId: null,
systemNo: null,
batchId: null,
warehouseId: null,
ownerId: null,
orderStatus: null,
orderType: null
}
this.resetForm("queryForm")
this.handleQuery()
},
......@@ -673,16 +692,15 @@ export default {
// 捕获取消确认/接口失败的异常
if (error !== 'cancel') {
this.$message.error('确认入库失败:' + (error.msg || '网络异常'));
console.log(error)
}
}
},
/** 删除按钮操作 */
handleDelete(row) {
const ids = row.orderId || this.ids.length
this.$confirm((row.orderId ? '是否确认删除入库单编号为"' + ids + '"的数据项?' : '是否确认删除选中的' + ids + '条入库单'),'提示', {
this.$confirm((row.orderId ? '是否确认删除入库单编号为"' + ids + '"的数据项?' : '是否确认删除选中的' + ids + '条入库单'), '提示', {
type: 'warning'
}).then(() => {
return delInbound(ids)
......@@ -718,7 +736,8 @@ export default {
...this.form,
inboundOrderItemsList: this.form.inboundOrderItemsList.map(item => ({
...item,
orderId: this.form.orderId // 确保明细项有主表ID
orderId: this.form.orderId, // 确保明细项有主表ID
batchId: this.form.batchId
}))
}
......@@ -778,7 +797,6 @@ export default {
}
},
/** 处理明细项选择变化 */
handleItemsSelectionChange(selection) {
this.selectedItems = selection
......@@ -861,11 +879,24 @@ export default {
</script>
<style scoped>
/* 对齐字典页面的样式类名和布局 */
.page-container {
padding: 16px;
background: #fff;
border-radius: 4px;
margin-bottom: 16px;
}
.table-container {
margin-top: 16px;
}
.scrollable-dialog .el-dialog__body {
max-height: 80vh; /* 最大高度80%视口高度 */
overflow-y: auto; /* 超出滚动 */
padding: 20px;
}
.detail-container {
padding: 10px;
}
......@@ -880,7 +911,8 @@ export default {
margin-bottom: 20px;
}
.mb8 {
margin-bottom: 8px;
/* 统一对话框底部按钮样式 */
.dialog-footer {
text-align: center;
}
</style>
\ No newline at end of file
......@@ -258,7 +258,6 @@
<script>
import { listInbound_items, delInbound_items , listInbound_itemsAndMname} from "@/api/inventory/inbound_items"
import { getDicts } from "@/api/system/dict/data";
import ImportExcel from "@/components/ImportExcel/index"
// 使用默认的dict实例,不需要单独实例化Dict类
// 使用默认的dict实例,无需导入DictMeta和DictData
......
......@@ -141,9 +141,9 @@
<!-- 表格列保持不变 -->
<el-table-column type="selection" width="55" align="center" fixed/>
<el-table-column type="index" label="序号" align="center"/>
<el-table-column label="物料编码" align="center" prop="materialCode" width="120"/>
<el-table-column label="物料名称" align="center" prop="materialName" width="150"/>
<el-table-column label="SAP物料号" align="center" prop="sapNo" />
<!-- <el-table-column label="物料编码" align="center" prop="materialCode" width="120"/> -->
<el-table-column label="物料名称" align="center" prop="materialName" width="150"/>
<el-table-column label="TS Code" align="center" prop="tsCode" />
<el-table-column label="物料分类" align="center" prop="categoryCode" >
<template slot-scope="scope">
......@@ -181,12 +181,12 @@
<el-table-column label="排序" align="center" prop="sortNo" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="修改时间" align="center" prop="updateTime" width="180">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding" fixed="right" width="200">
......@@ -227,22 +227,14 @@
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row :gutter="24">
<el-col :span="12">
<el-form-item label="物料编码" prop="materialCode">
<!-- <el-form-item label="物料编码" prop="materialCode">
<el-input v-model="form.materialCode" placeholder="请输入物料编码" />
</el-form-item>
</el-form-item> -->
<el-form-item label="SAP物料号" prop="sapNo">
<el-input v-model="form.sapNo" placeholder="请输入SAP物料号" />
</el-form-item>
<el-form-item label="物料分类" prop="categoryCode">
<el-select v-model="form.categoryCode" placeholder="请选择物料分类" clearable>
<el-option
v-for="item in categoryTreeOptions"
:key="item.categoryCode"
:label="item.categoryName"
:value="item.categoryCode"
>
</el-option>
</el-select>
<el-form-item label="TS Code" prop="tsCode">
<el-input v-model="form.tsCode" placeholder="请输入TS Code" />
</el-form-item>
<el-form-item label="规格型号" prop="specification">
<el-input v-model="form.specification" placeholder="请输入规格型号" />
......@@ -259,25 +251,39 @@
<el-form-item label="特殊存储要求" prop="specialRequirements">
<el-input v-model="form.specialRequirements" placeholder="请输入特殊存储要求" />
</el-form-item>
<el-form-item label="最高库存" prop="maxStockLevel">
<el-input v-model="form.maxStockLevel" placeholder="请输入最高库存" />
</el-form-item>
<el-form-item label="风险等级" prop="riskLevel">
<el-input v-model="form.riskLevel" placeholder="请输入风险等级" />
</el-form-item>
<el-form-item label="是否序列号管理" prop="isSerialManaged">
<el-radio-group v-model="form.isSerialManaged">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="最高库存" prop="maxStockLevel">
<el-input v-model="form.maxStockLevel" placeholder="请输入最高库存" />
</el-form-item>
<el-form-item label="风险等级" prop="riskLevel">
<el-input v-model="form.riskLevel" placeholder="请输入风险等级" />
<el-form-item label="是否批次管理" prop="isBatchManaged">
<el-radio-group v-model="form.isBatchManaged">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="物料名称" prop="materialName">
<el-input v-model="form.materialName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="TS Code" prop="tsCode">
<el-input v-model="form.tsCode" placeholder="请输入TS Code" />
<el-form-item label="物料分类" prop="categoryCode">
<el-select v-model="form.categoryCode" placeholder="请选择物料分类" clearable>
<el-option
v-for="item in categoryTreeOptions"
:key="item.categoryCode"
:label="item.categoryName"
:value="item.categoryCode"
>
</el-option>
</el-select>
</el-form-item>
<el-form-item label="危险类别ID" prop="hazardId">
<el-input v-model="form.hazardId" placeholder="请输入危险类别ID" />
......@@ -294,24 +300,19 @@
<el-form-item label="存储温度要求" prop="storageTemperature">
<el-input v-model="form.storageTemperature" placeholder="请输入存储温度要求" />
</el-form-item>
<el-form-item label="是否批次管理" prop="isBatchManaged">
<el-radio-group v-model="form.isBatchManaged">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="最低库存" prop="minStockLevel">
<el-input v-model="form.minStockLevel" placeholder="请输入最低库存" />
</el-form-item>
<el-form-item label="排序" prop="sortNo">
<el-input v-model="form.sortNo" placeholder="请输入排序" />
</el-form-item>
<el-form-item label="是否激活" prop="isActive">
<el-radio-group v-model="form.isActive">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序" prop="sortNo">
<el-input v-model="form.sortNo" placeholder="请输入排序" />
</el-form-item>
</el-col>
</el-row>
</el-form>
......@@ -423,8 +424,8 @@ export default {
shelfLifeDays: null,
storageTemperature: null,
specialRequirements: null,
isBatchManaged: 0,
isSerialManaged: 0,
isBatchManaged: 1,
isSerialManaged: 1,
minStockLevel: null,
maxStockLevel: null,
isUsed: 1,
......
......@@ -8,7 +8,7 @@
plain
size="medium"
icon="el-icon-plus"
@click="handleAdd"
@click="handleAdd(null)"
v-hasPermi="['inventory:materials_category:add']"
>新增</el-button>
......@@ -98,12 +98,12 @@
<el-table-column label="排序" align="center" prop="sortNo" width="80" />
<el-table-column label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column label="修改时间" align="center" prop="updateTime">
<template slot-scope="scope">
<span>{{ parseTime(scope.row.updateTime, '{y}-{m}-{d}') }}</span>
<span>{{ parseTime(scope.row.updateTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" width="250" fixed="right">
......@@ -276,6 +276,7 @@ export default {
dialogFormData: {
immediate: true,
handler(val) {
console.log(val)
this.form = { ...val }
}
},
......@@ -528,9 +529,7 @@ export default {
/** 修改按钮操作 */
handleUpdate(row) {
console.log(row)
const _id = row ? row.id : this.ids;
console.log(_id)
getMaterials_category(_id).then(response => {
this.form = response.data;
this.dialogOpen = true;
......@@ -553,17 +552,19 @@ export default {
// 重新加载数据
Promise.all([
this.getCategoryOptions(),
new Promise(resolve => {
this.getList();
this.resetQuery();
// this.getList();
setTimeout(resolve, 100);
})
]).then(() => {
if (type === "add" && this.form.parentId) {
this.selectTreeNode(this.form.parentId);
} else if (this.currentNodeId) {
this.selectTreeNode(this.currentNodeId);
}
// if (type === "add" && this.form.parentId) {
// this.selectTreeNode(this.form.parentId);
// } else if (this.currentNodeId) {
// this.selectTreeNode(this.currentNodeId);
// }
});
this.$emit("form-submit", { type, data: this.form });
......@@ -574,8 +575,8 @@ export default {
/** 删除操作 */
handleDelete(row) {
const _code = row ? row.categoryCode : this.ids;
this.$modal.confirm(`是否确认删除物料分类编码为"${_code}"的数据项?`).then(() => {
const _ids = row ? row.id : this.ids;
this.$modal.confirm(`是否确认删除物料分类编码为"${row.categoryCode}"的数据项?`).then(() => {
delMaterials_category(_ids).then(() => {
this.getList();
this.getCategoryOptions();
......
......@@ -126,6 +126,7 @@ public class InboundOrdersServiceImpl implements IInboundOrdersService
{
inboundOrderItems.setId(UUID.randomUUID().toString());
inboundOrderItems.setOrderId(orderId);
inboundOrderItems.setCreateTime(DateUtils.getNowDate());
list.add(inboundOrderItems);
}
if (list.size() > 0)
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论