Compare commits

..

2 Commits

Author SHA1 Message Date
escapemoon
dc00d4f4a6 后端:
多个 Controller 中对状态判断使用了安全的 Convert.toInt(..., 0)(带默认值),避免空值拆箱导致 NPE:修改点包括 CheckStockinController、CheckStockinDetailController、InStockinController、InStockinDetailController、ReceiveStockinController、ReceiveStockinDetailController 等。
实体 InStockinDetail 新增字段:productName(物料名称)和 supplierName(供应商名称),并加了 @Excel 注解以支持导出/映射。
前端(Vue):

把“常用编码”改名为“产品分类”,同时把某些列/占位文本更新为“价格”或“产品分类”。
在多个视图中注释或调整了部分列(如来源/台次/创建时间等),以隐藏或调整显示。
优化了“入库新增”页面中的供应商选择流程:修复分页回调(对话框分页现在调用 getSupplierListForDialog),为供应商表格添加了双击快速确认事件 @row-dblclick,并在 handleSupplierRowClick / handleSupplierRowDblClick / confirmSelectSupplier 中加入了 console.log 调试输出与防护($refs 判空)。
其他小修订:

在 BasProduct 中把 @Excel(name = "常用编码") 改为 @Excel(name = "产品分类"),并把 “单价” 注解改为 @Excel(name="价格")。
调整一些表格列的注释与显示,以改进 UX 或临时隐藏列。
2025-12-15 15:11:15 +08:00
escapemoon
2369a74dd4 feat: 更新产品分类和价格字段名称,优化状态判断逻辑,添加物料和供应商名称字段,优化入库新增单据供应商选择 2025-12-15 15:03:35 +08:00
15 changed files with 61 additions and 36 deletions

View File

@@ -32,11 +32,11 @@ public class BasProduct extends BaseEntity
private String productId;
/** 产品分类 */
@Excel(name = "常用编码")
@Excel(name = "产品分类")
private String parentId;
/** 品号描述 */
@Excel(name = "单价")
/** 价格 */
@Excel(name = "价格")
private String price;
/** 英文描述 */

View File

@@ -43,7 +43,7 @@ public class CheckStockinController extends BaseController
{
startPage();
List<CheckStockin> list = new ArrayList<>();
if (Convert.toInt(checkStockin.getStatus())<4){
if (Convert.toInt(checkStockin.getStatus(), 0) < 4){
list = checkStockinService.selectCheckStockinList(checkStockin);
}else {
list = checkStockinFinishService.selectCheckStockinList(checkStockin);

View File

@@ -42,7 +42,7 @@ public class CheckStockinDetailController extends BaseController
{
startPage();
List<CheckStockinDetail> list = new ArrayList<>();
if (Convert.toInt(checkStockinDetail.getStatus())<4){
if (Convert.toInt(checkStockinDetail.getStatus(), 0) < 4){
list = checkStockinDetailService.selectCheckStockinDetailList(checkStockinDetail);
}else {
list = checkStockinDetailFinishService.selectCheckStockinDetailList(checkStockinDetail);

View File

@@ -50,7 +50,7 @@ public class InStockinController extends BaseController
{
startPage();
List<InStockin> list = new ArrayList<>();
if (Convert.toInt(inStockin.getStatus())<4){
if (Convert.toInt(inStockin.getStatus(), 0) < 4){
list = inStockinService.selectInStockinList(inStockin);
}else {
list = inStockinFinishService.selectInStockinFinishListByInStockin(inStockin);

View File

@@ -43,7 +43,7 @@ public class InStockinDetailController extends BaseController
{
startPage();
List<InStockinDetail> list = new ArrayList<>();
if (Convert.toInt(inStockinDetail.getStatus())<4){
if (Convert.toInt(inStockinDetail.getStatus(), 0) < 4){
list = inStockinDetailService.selectInStockinDetailList(inStockinDetail);
}else {
list = inStockinDetailFinishService.selectInStockinDetailList(inStockinDetail);

View File

@@ -153,5 +153,12 @@ public class InStockinDetail extends BaseEntity
private String warehouseName;
private String warehouseId;
/** 物料名称 */
@Excel(name = "物料名称")
private String productName;
/** 供应商名称 */
@Excel(name = "供应商名称")
private String supplierName;
}

View File

@@ -48,7 +48,7 @@ public class ReceiveStockinController extends BaseController
{
startPage();
List<ReceiveStockin> list = new ArrayList<>() ;
if (Convert.toInt(receiveStockin.getStatus())<1){
if (Convert.toInt(receiveStockin.getStatus(), 0) < 1){
list = receiveStockinService.selectReceiveStockinList(receiveStockin);
}else {
list = receiveStockinFinishService.selectReceiveStockinList(receiveStockin);

View File

@@ -43,7 +43,7 @@ public class ReceiveStockinDetailController extends BaseController
{
startPage();
List<ReceiveStockinDetail> list = new ArrayList<>();
if (Convert.toInt(receiveStockinDetail.getStatus())<1){
if (Convert.toInt(receiveStockinDetail.getStatus(), 0) < 1){
list = receiveStockinDetailService.selectReceiveStockinDetailList(receiveStockinDetail);
}else {
list =receiveStockinDetailFinishService.selectReceiveStockinDetailList(receiveStockinDetail);

View File

@@ -113,11 +113,11 @@
<el-table-column label="价格" align="center" prop="price" />
<el-table-column label="单位id" align="center" prop="unit" />
<el-table-column label="单位名称" align="center" prop="spare1" />
<el-table-column label="url" align="center" prop="spare3" />
<!-- <el-table-column label="url" align="center" prop="spare3" />
<el-table-column label="btnurl" align="center" prop="spare4" />
<el-table-column label="unitPrices" align="center" prop="spare5" width="260"/>
<el-table-column label="units" align="center" prop="spare6" width="260"/>
<el-table-column label="unitjb" align="center" prop="spare7" />
<el-table-column label="unitjb" align="center" prop="spare7" /> -->
</el-table>
<pagination
@@ -137,8 +137,8 @@
<el-form-item label="物料名称" prop="productName">
<el-input v-model="form.productName" placeholder="请输入物料名称" />
</el-form-item>
<el-form-item label="常用编码" prop="parentId">
<el-input v-model="form.parentId" placeholder="请输入常用编码" />
<el-form-item label="产品分类" prop="parentId">
<el-input v-model="form.parentId" placeholder="请输入产品分类" />
</el-form-item>
<el-form-item label="单价" prop="price">
<el-input v-model="form.price" placeholder="请输入单价" />

View File

@@ -82,7 +82,7 @@
<dict-tag :options="dict.type.product_type" :value="scope.row.productStatus"/>
</template>
</el-table-column>
<el-table-column label="常用编码" align="center" prop="parentId"/>
<el-table-column label="产品分类" align="center" prop="parentId"/>
<el-table-column label="启用标识" align="center" prop="spare7">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.spare7"/>
@@ -185,7 +185,7 @@
<dict-tag :options="dict.type.product_type" :value="scope.row.productStatus"/>
</template>
</el-table-column>
<el-table-column label="常用编码" align="center" prop="parentId"/>
<el-table-column label="产品分类" align="center" prop="parentId"/>
<el-table-column label="启用标识" align="center" prop="spare7">
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.spare7"/>

View File

@@ -184,22 +184,22 @@
<el-table-column label="生产图号" align="left" prop="cargoNo" width="160"/>
<el-table-column label="单价" align="left" prop="printDate" />
<el-table-column label="供应商" align="left" prop="supplierName" width="160"/>
<el-table-column label="来源" align="left" prop="spare1" ><!--来源-->
<!-- <el-table-column label="来源" align="left" prop="spare1" >
<template slot-scope="scope">
<dict-tag :options="dict.type.origin_type" :value="scope.row.spare1"/>
</template>
</el-table-column>
<el-table-column label="状态" align="left" prop="spare2" ><!--用途-->
<el-table-column label="状态" align="left" prop="spare2" >
<template slot-scope="scope">
<dict-tag :options="dict.type.turnover_type" :value="scope.row.spare2"/>
</template>
</el-table-column>
<el-table-column label="套账" align="left" prop="spare3" ><!--用途-->
<el-table-column label="套账" align="left" prop="spare3" >
<template slot-scope="scope">
<dict-tag :options="dict.type.account_type" :value="scope.row.spare3"/>
</template>
</el-table-column>
<el-table-column label="用途" align="left" prop="spare4" ><!--用途-->
<el-table-column label="用途" align="left" prop="spare4" >
<template slot-scope="scope">
<dict-tag :options="dict.type.purpose_type" :value="scope.row.spare4"/>
</template>
@@ -207,14 +207,14 @@
<el-table-column label="台次" align="left" prop="spare5" />
<el-table-column label="合同号" align="left" prop="spare6" />
<el-table-column label="件次" align="left" prop="spare7" />
<el-table-column label="质量等级" align="left" prop="spare8" ><!--用途-->
<el-table-column label="质量等级" align="left" prop="spare8" >
<template slot-scope="scope">
<dict-tag :options="dict.type.quality_type" :value="scope.row.spare8"/>
</template>
</el-table-column>
<el-table-column label="管理号" align="left" prop="spare9" />
<el-table-column label="规格" align="left" prop="spec" width="160"/>
<el-table-column label="单位" align="left" prop="unit" />
<el-table-column label="单位" align="left" prop="unit" /> -->
</el-table>

View File

@@ -253,7 +253,7 @@
:total="supplierTotal"
:page.sync="supplierQueryParams.pageNum"
:limit.sync="supplierQueryParams.pageSize"
@pagination="getSupplierList"
@pagination="getSupplierListForDialog"
/>
<div slot="footer" class="dialog-footer">

View File

@@ -68,13 +68,13 @@
<el-table-column label="生产图号" align="left" prop="cargoNo" />
<el-table-column label="单位" align="left" prop="unit" />
<!-- <el-table-column label="单价" align="left" prop="price" /> -->
<el-table-column label="来源" align="left" prop="spare1" >
<!-- <el-table-column label="来源" align="left" prop="spare1" >
<template slot-scope="scope">
<el-select v-model="scope.row.spare1" placeholder="请选择来源" >
<el-option
v-for="dict in dict.type.origin_type"
:key="dict.value"
:label="dict.label"
:label="dict.label"
:value="dict.value"
/>
</el-select>
@@ -115,8 +115,8 @@
/>
</el-select>
</template>
</el-table-column>
<el-table-column label="台次" align="left" prop="spare5">
</el-table-column> -->
<!-- <el-table-column label="台次" align="left" prop="spare5">
<template slot-scope="scope">
<el-input v-model="scope.row.spare5" placeholder="请输入台次"></el-input>
</template>
@@ -135,7 +135,7 @@
<template slot-scope="scope">
<el-input v-model="scope.row.lotNo" placeholder="请输入批次"></el-input>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column label="单价" align="left" prop="price" >
<template slot-scope="scope">
<el-input v-model="scope.row.price" placeholder="请输入单价"></el-input>
@@ -229,7 +229,7 @@
<el-table-column label="物料名称" align="center" prop="productName" />
<el-table-column label="规格型号" align="center" prop="spec" />
<el-table-column label="图号" align="center" prop="cargoNo" />
<el-table-column label="常用编码" align="center" prop="parentId" />
<el-table-column label="产品分类" align="center" prop="parentId" />
<el-table-column label="物料状态" align="center" prop="spare1" />
<el-table-column label="单位" align="center" prop="unit" />
<el-table-column label="启用标识" align="center" prop="spare7" >
@@ -242,10 +242,10 @@
<dict-tag :options="dict.type.sys_yes_no" :value="scope.row.spare2"/>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="spare3" />
<!-- <el-table-column label="创建时间" align="center" prop="spare3" />
<el-table-column label="创建用户" align="center" prop="spare4" />
<el-table-column label="库存上限" align="center" prop="spare5" />
<el-table-column label="库存下限" align="center" prop="spare6" />
<el-table-column label="库存下限" align="center" prop="spare6" /> -->
<el-table-column label="单价" align="center" prop="price" />
<el-table-column label="备注" align="center" prop="remak" />
</el-table>
@@ -312,6 +312,7 @@
:data="supplierList"
border
@row-click="handleSupplierRowClick"
@row-dblclick="handleSupplierRowDblClick"
highlight-current-row
style="width: 100%"
>
@@ -331,7 +332,7 @@
:total="supplierTotal"
:page.sync="supplierQueryParams.pageNum"
:limit.sync="supplierQueryParams.pageSize"
@pagination="getSupplierList"
@pagination="getSupplierListForDialog"
/>
<div slot="footer" class="dialog-footer">
@@ -519,12 +520,26 @@ export default {
/** 供应商行点击事件 */
handleSupplierRowClick(row) {
console.log('handleSupplierRowClick row:', row);
this.selectedSupplier = row;
this.$refs.supplierTable.setCurrentRow(row);
if (this.$refs && this.$refs.supplierTable) {
this.$refs.supplierTable.setCurrentRow(row);
}
},
/** 供应商行双击事件:快速选中并确认 */
handleSupplierRowDblClick(row) {
console.log('handleSupplierRowDblClick row:', row);
this.selectedSupplier = row;
if (this.$refs && this.$refs.supplierTable) {
this.$refs.supplierTable.setCurrentRow(row);
}
this.confirmSelectSupplier();
},
/** 确认选择供应商 */
confirmSelectSupplier() {
console.log('confirmSelectSupplier selectedSupplier:', this.selectedSupplier, 'currentRow:', this.currentRow);
if (!this.selectedSupplier) {
this.$modal.msgError("请选择一个供应商");
return;
@@ -533,6 +548,8 @@ export default {
// 为表格行设置供应商
this.currentRow.supplierId = this.selectedSupplier.supplierNo;
this.currentRow.supplierName = this.selectedSupplier.supplierName;
} else {
console.warn('confirmSelectSupplier: currentRow is null');
}
this.supplierDialog = false;
this.currentRow = null;

View File

@@ -183,7 +183,8 @@
<el-table-column label="规格型号" align="left" prop="spec" width="160"/>
<el-table-column label="生产图号" align="left" prop="cargoNo" />
<el-table-column label="单位" align="left" prop="unit" />
<el-table-column label="来源" align="left" prop="spare1"><!--来源-->
<!--
<el-table-column label="来源" align="left" prop="spare1">
<template slot-scope="scope">
<dict-tag :options="dict.type.origin_type" :value="scope.row.spare1"/>
</template>
@@ -193,16 +194,17 @@
<dict-tag :options="dict.type.turnover_type" :value="scope.row.spare2"/>
</template>
</el-table-column>
<el-table-column label="套账" align="left" prop="spare3"><!--套账-->
<el-table-column label="套账" align="left" prop="spare3">
<template slot-scope="scope">
<dict-tag :options="dict.type.account_type" :value="scope.row.spare3"/>
</template>
</el-table-column>
<el-table-column label="用途" align="left" prop="spare4"><!--用途-->
<el-table-column label="用途" align="left" prop="spare4">
<template slot-scope="scope">
<dict-tag :options="dict.type.purpose_type" :value="scope.row.spare4"/>
</template>
</el-table-column>
-->
<el-table-column label="台次" align="left" prop="spare5"/>
<el-table-column label="合同号" align="left" prop="spare6"/>
<el-table-column label="件次" align="left" prop="spare7"/>

View File

@@ -40,7 +40,6 @@
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="物料名称" prop="productName">
<el-input
v-model="queryParams.productName"