From 86fe75f87d8f99218f3cc441faae1da1eb464b9f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E7=8E=8B=E6=99=93=E8=BF=AA?= <2596750866@qq.com>
Date: Wed, 4 Dec 2024 14:20:38 +0800
Subject: [PATCH] =?UTF-8?q?[fix]=20=E5=93=81=E8=B4=A8=E7=AE=A1=E7=90=86=20?=
=?UTF-8?q?=E5=88=B6=E7=A8=8B=E6=A3=80=E9=AA=8C=20=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=B6=E7=A8=8B=E6=A3=80=E9=AA=8C=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=EF=BC=8C=E6=8C=89=E7=85=A7=E6=96=B0=E7=89=88prd?=
=?UTF-8?q?=E9=87=8D=E6=96=B0=E8=AE=BE=E8=AE=A1=E9=A1=B5=E9=9D=A2=E5=8F=8A?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E5=88=B6?=
=?UTF-8?q?=E7=A8=8B=E6=A3=80=E9=AA=8C=E7=89=A9=E6=96=99VO=E7=B1=BB?=
=?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=89=A9=E6=96=99=E5=9E=8B=E5=8F=B7?=
=?UTF-8?q?=E5=92=8C=E5=B7=B2=E6=A3=80=E9=AA=8C=E6=95=B0=E5=AD=97=E6=AE=B5?=
=?UTF-8?q?=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E5=88=B6=E7=A8=8B=E6=A3=80?=
=?UTF-8?q?=E9=AA=8C=E5=AF=BC=E5=87=BA=E7=B1=BB=EF=BC=8C=E5=8E=BB=E9=99=A4?=
=?UTF-8?q?=E5=B7=A5=E5=BA=8F=E5=90=8D=E7=A7=B0=E5=AD=97=E5=85=B8=E6=B3=A8?=
=?UTF-8?q?=E8=A7=A3=EF=BC=9B=20=E4=BF=AE=E6=94=B9=E5=88=B6=E7=A8=8B?=
=?UTF-8?q?=E6=A3=80=E9=AA=8C=E8=AF=A6=E6=83=85=E9=A1=B5=E9=9D=A2=EF=BC=8C?=
=?UTF-8?q?=E6=8C=89=E7=85=A7=E6=96=B0=E7=89=88=E6=B7=BB=E5=8A=A0=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=E5=AE=9E=E7=8E=B0=EF=BC=9B=20=E4=BF=AE=E6=94=B9?=
=?UTF-8?q?=E5=88=B6=E7=A8=8B=E6=A3=80=E9=AA=8C=E5=88=97=E8=A1=A8=E9=A1=B5?=
=?UTF-8?q?=E9=9D=A2=EF=BC=8C=E4=BF=AE=E6=94=B9=E6=90=9C=E7=B4=A2=E6=A0=8F?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=8C=E5=88=97=E8=A1=A8=E5=AD=97=E6=AE=B5?=
=?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=A1=E6=89=B9=E7=9B=B8=E5=85=B3=EF=BC=9B?=
=?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=AF=BC=E5=87=BA=E6=96=B9=E6=B3=95=EF=BC=9B?=
=?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E9=80=89=E6=8B=A9=E7=89=A9=E6=96=99?=
=?UTF-8?q?=E9=A1=B5=E9=9D=A2=EF=BC=8C=E6=B7=BB=E5=8A=A0=E7=89=A9=E6=96=99?=
=?UTF-8?q?=E5=9E=8B=E5=8F=B7=E3=80=81=E5=B7=B2=E6=A3=80=E9=AA=8C=E6=95=B0?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=EF=BC=8C=E8=AE=BE=E7=BD=AE=E5=88=97=E5=B1=85?=
=?UTF-8?q?=E4=B8=AD=E6=98=BE=E7=A4=BA=EF=BC=9B?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../quality/domain/VO/CheckoutMaterialVO.java | 6 +
.../domain/VO/CheckoutProcessExportVO.java | 2 +-
.../quality/manufacturingCheckout/add.html | 778 ++++++++++++++----
.../quality/manufacturingCheckout/detail.html | 253 +++++-
.../manufacturingCheckout.html | 206 +++--
.../manufacturingCheckout/materialSelect.html | 23 +-
6 files changed, 1023 insertions(+), 245 deletions(-)
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutMaterialVO.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutMaterialVO.java
index 6e2585aa..83b9b798 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutMaterialVO.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutMaterialVO.java
@@ -36,6 +36,12 @@ public class CheckoutMaterialVO extends BaseEntity {
@Excel(name = "物料描述")
private String materialDescribe;
+ /**物料型号*/
+ private String materialModel;
+
+ //已检验数
+ private Integer checkedNum;
+
/** 物料加工方式 */
@Excel(name = "物料加工方式")
private String materialProcessMethod;
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutProcessExportVO.java b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutProcessExportVO.java
index f2499b4b..bf23003c 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutProcessExportVO.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/quality/domain/VO/CheckoutProcessExportVO.java
@@ -41,7 +41,7 @@ public class CheckoutProcessExportVO {
private String workshopName;
/** 制程工序名称 */
- @Excel(name = "工序名称",sort = 9,dictType = "manufacturing_process_name")
+ @Excel(name = "工序名称",sort = 9)
private String manufacturingProcessName;
/** 工序顺序 */
diff --git a/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/add.html b/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/add.html
index edd3a787..f390c8d0 100644
--- a/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/add.html
+++ b/ruoyi-admin/src/main/resources/templates/quality/manufacturingCheckout/add.html
@@ -3,7 +3,30 @@
+
+
@@ -50,7 +83,15 @@
var prefix = ctx + "quality/manufacturingCheckout";
var checkoutProcessList = [];
var materialProcessList = [];
+ var uniqueIdList = [];
var processMethodDatas = [[${@dict.getType('processMethod')}]];
+ var materialTypeDatas = [[${@category.getChildByCode('materialType')}]];
+ var manufacturingProcessNameDatas = [[${@dict.getType('manufacturing_process_name')}]];
+ var processBadClassificationDatas = [[${@dict.getType('process_bad_classification')}]];
+ var processBadGradeDatas = [[${@dict.getType('process_bad_grade')}]];
+ var manufacturingProcessList = [];
+ var processNameList = [];
+ var curIndex = 0;
$("#form-manufacturingCheckout-add").validate({
focusCleanup: true
});
@@ -62,48 +103,54 @@
obj[item.name] = item.value;
return obj;
}, {});
- // 获取bootstrap-table的数据,这里假设你使用bootstrap-table的API获取所有数据
- var table = $('#bootstrap-table').bootstrapTable('getData');
+ var table = $('#bootstrap-material-table').bootstrapTable('getData');
// 检查表格数据是否为空
if (table.length===0){
$.modal.alertWarning("请至少添加一条物料数据后再保存!");
return;
}
- // console.log(table);
- // 将表数据转换成与complaintNoticeData格式一致的数组
- var materialDataList = table.map(function(item) {
- // 根据实际字段名调整
- return {
- "materialNo": item.materialNo, // 假设id对应materialId
- "materialPhotourl": item.materialPhotourl, // 假设quantity是物料数量字段
- "materialName": item.materialName,
- "materialType": item.materialType,
- "materialUnit": item.materialUnit,
- "materialBrand": item.materialBrand,
- "materialDescribe": item.materialDescribe,
- "materialProcessMethod": item.materialProcessMethod,
- "makeTotal": item.makeTotal,
- "checkedNum": item.checkedNum,
- "currentCheckoutNum": item.currentCheckoutNum,
- "processQualifiedNum":item.processQualifiedNum,
- "processUnqualifiedNum":item.processUnqualifiedNum
- // ...其他字段
- };
- });
- materialDataList.forEach(function(item) {
- item.materialProcessList = [];
- materialProcessList.forEach(function (process){
- if(process.materialNo === item.materialNo){
- item.materialProcessList.push(process);
- }
- })
- });
- const combinedData = Object.assign({}, manufacturingCheckoutData, { checkoutMaterialList: materialDataList });
- // 合并表单数据和表格数据
- console.log(combinedData)
- // 使用 JSON.stringify() 序列化数据
- const jsonData = JSON.stringify(combinedData);
+ var checkOutNum = table[0].currentCheckoutNum;
+ //未检验数
+ var unCheckNum = Number(table[0].makeTotal)-Number(table[0].checkedNum);
+ if(checkOutNum == ''||checkOutNum == null
+ ||checkOutNum == undefined||checkOutNum === 0){
+ $.modal.alertWarning("物料本次检验数为空!");
+ return;
+ }
+ if(checkOutNum > unCheckNum){
+ $.modal.alertWarning("物料本次检验数超出未检验数,请检查!");
+ return;
+ }
+ var checkOutMaterial = table[0];
+ var qualityManufacturingCheckout = {
+ makeNo: $("#makeNo").val(),
+ checkoutTime: $("input[name='checkoutTime']").val(),
+ materialNo: table[0].materialNo,
+ materialName: table[0].materialName
+ }
+
+ $(".bordered-container").each(function (index,container){
+ var tableId = "bootstrap-manufacturingProcess-table-"+uniqueIdList[index];
+ var unqualifiedTableId = "bootstrap-unqualifiedClass-table-"+uniqueIdList[index];
+ var processDatas = $("#"+tableId).bootstrapTable("getData")[0];
+
+ var okAcceptedNum = $(container).find("input[name='okAcceptedNum']").val();
+ var specialConcessionsNum = $(container).find("input[name='specialConcessionsNum']").val();
+ processDatas.okAcceptedNum = okAcceptedNum;
+ processDatas.specialConcessionsNum = specialConcessionsNum;
+ var unqualifiedClassList = $("#"+unqualifiedTableId).bootstrapTable("getData");
+ if(unqualifiedClassList <= 0){
+ $.modal.alertWarning("工序"+processDatas.manufacturingProcessCode+"不合格分类为空,请检查!");
+ return;
+ }
+ processDatas.unqualifiedClassList = unqualifiedClassList;
+ materialProcessList.push(processDatas);
+ })
+ checkOutMaterial.materialProcessList = materialProcessList;
+ qualityManufacturingCheckout.checkoutMaterial = checkOutMaterial;
+
+ const jsonData = JSON.stringify(qualityManufacturingCheckout);
// 发送 AJAX 请求到后端接口
$.operate.saveJson(prefix + "/add", jsonData);
}
@@ -114,8 +161,6 @@
autoclose: true
});
- /*加载所有的关联生产单号*/
- loadAllMakeNos();
/*加载所有的关联生产单号*/
function loadAllMakeNos(){
var url = ctx + 'system/makeorder/getAllMakeNos';
@@ -126,9 +171,7 @@
success: function (data){
if (data && Array.isArray(data)){
var selectElement = $('#makeNo'); //获取生产编号下拉框元素
- //清空下拉框现有选项
selectElement.empty();
- // 添加默认选项(如果需要)
selectElement.append('');
//遍历返回的数据,添加下拉框的选项
$.each(data,function (index,item){
@@ -144,46 +187,63 @@
//物料信息展示列表
$(function() {
+ loadAllMakeNos();
var options = {
+ id: "bootstrap-material-table",
modalName: "选择物料",
showSearch: false,
showRefresh: false,
showToggle: false,
showColumns: false,
+ height: 40,
pagination: false, // 设置不分页
- columns: [{
- checkbox: true
- },
+ columns: [
{
title: '料号',
field: 'materialNo',
+ align: 'center',
},
{
title: '图片',
+ align: 'center',
field: 'materialPhotourl',
},
{
title: '物料名称',
+ align: 'center',
field: 'materialName',
},
{
title: '物料类型',
+ align: 'center',
field: 'materialType',
+ formatter: function(value, row, index) {
+ return $.table.selectCategoryLabel(materialTypeDatas, value);
+ }
+ },
+ {
+ title: '物料型号',
+ align: 'center',
+ field: 'materialModel',
},
{
title: '描述',
+ align: 'center',
field: 'materialDescribe',
},
{
title: '品牌',
+ align: 'center',
field: 'materialBrand',
},
{
title: '单位',
+ align: 'center',
field: 'materialUnit',
},
{
- title: '物料加工方式',
+ title: '加工方式',
+ align: 'center',
field: 'materialProcessMethod',
formatter: function(value, row, index) {
return $.table.selectDictLabel(processMethodDatas, value);
@@ -191,34 +251,37 @@
},
{
title: '订单数',
+ align: 'center',
field: 'makeTotal',
},
{
title: '已检验数',
+ align: 'center',
field: 'checkedNum',
},
{
title: '本次检验数',
+ align: 'center',
field: 'currentCheckoutNum',
editable: {
- type:'text'
- }
- },
- {
- title: '制程检验报告',
- align: 'center',
- formatter: function(value, row, index) {
- var actions = [];
- actions.push('检验报告 ');
- return actions.join('');
+ type:'text',
+ mode:'inline',
+ validate: function (v) {
+ if (!v) return '数量不能为空';
+ if (isNaN(v)) return '数量必须是数字';
+ var checkNum = parseInt(v);
+ if (checkNum < 0) return '数量必须是正整数';
+ }
}
},
{
title: '工序合格数',
+ align: 'center',
field: 'processQualifiedNum',
},
{
title: '工序不合格数',
+ align: 'center',
field: 'processUnqualifiedNum',
},
{
@@ -233,13 +296,19 @@
]
};
$.table.init(options);
- })
+ selectProcessCode();
+ });
/*选择物料按钮*/
function insertRow() {
+ var material = $("#bootstrap-material-table").bootstrapTable("getData");
+ if(material.length>0){
+ $.modal.msgError("每次只能添加一个物料,请先删除当前物料");
+ return;
+ }
var selectedMakeNo = $("#makeNo").val();
if (!selectedMakeNo) {
- $.modal.alertWarning("请先选择生产单号。");
+ $.modal.alertWarning("请先选择生产单号");
return;
}
var encodedMakeNo = encodeURIComponent(selectedMakeNo);
@@ -254,11 +323,9 @@
function doSubmit(index, layero,uniqueId){
- console.log(uniqueId);
var iframeWin = window[layero.find('iframe')[0]['name']];
var rowData = iframeWin.$('#bootstrap-materialSelect-table').bootstrapTable('getSelections')[0];
- console.log("rowData: "+rowData);
- $("#bootstrap-table").bootstrapTable('insertRow', {
+ $("#bootstrap-material-table").bootstrapTable('insertRow', {
index:1,
row: {
materialNo:rowData.materialNo,
@@ -268,9 +335,13 @@
materialDescribe: rowData.materialDescribe,
materialBrand: rowData.materialBrand,
materialUnit: rowData.materialUnit,
+ materialModel: rowData.materialModel,
materialProcessMethod: rowData.materialProcessMethod,
makeTotal:rowData.makeTotal,
- currentCheckoutNum: ""
+ checkedNum: rowData.checkedNum,
+ currentCheckoutNum: "",
+ processQualifiedNum: 0,
+ processUnqualifiedNum: 0,
}
})
layer.close(index);
@@ -291,102 +362,509 @@
}
}
}
- // 逻辑删除前端的一行数据
- function removeRow(materialNo){
- $("#bootstrap-table").bootstrapTable('remove', {
- field: 'materialNo',
- values: materialNo
- })
- }
- // 在父页面中定义处理函数
- function handleCheckoutReportData(index, layero){
- var iframeWin = window[layero.find('iframe')[0]['name']];
- var processQualifiedNum = 0;
- var processUnqualifiedNum = 0;
- var materialNo = iframeWin.$('#form-checkoutReport-add').find('input[name="materialNo"]').val();
- var materialName = iframeWin.$('#form-checkoutReport-add').find('input[name="materialName"]').val();
- var uniqueIdString = iframeWin.$('#uniqueIdList').val();
- var uniqueIdList = uniqueIdString.split(',');
- console.log(uniqueIdList);
- iframeWin.$('.container.bordered-container').each(function(index, tableElement) {
- var tableId = uniqueIdList[index];
- var $processTable = iframeWin.$('#bootstrap-manufacturingProcess-table-'+tableId);
- var rows = $processTable.bootstrapTable('getData');
- var manufacturingProcessCode = $processTable.find('select[name="manufacturingProcessCode"]').val();
+ //新增制程工序模块
+ function insertCheckProcess() {
- var okAcceptedNum = iframeWin.$('#form-manfa-'+tableId).find('input[name="okAcceptedNum"]').val();
- okAcceptedNum = Number(okAcceptedNum);
- var specialConcessionsNum = iframeWin.$('#form-manfa-'+tableId).find('input[name="specialConcessionsNum"]').val();
- specialConcessionsNum = Number(specialConcessionsNum);
- if (!isNaN(processQualifiedNum) && !isNaN(okAcceptedNum) && !isNaN(specialConcessionsNum)) {
- processQualifiedNum = processQualifiedNum + okAcceptedNum + specialConcessionsNum;
- console.log(processQualifiedNum);
- } else {
- console.log("One or more variables is not a valid number.");
- }
- var materialProcess = {
- materialNo: materialNo,
- materialName: materialName,
- manufacturingProcessCode: manufacturingProcessCode,
- manufacturingProcessName: rows[0].manufacturingProcessName,
- deviceName: rows[0].deviceName,
- deviceModelCode: rows[0].deviceModelCode,
- processSequence: rows[0].processSequence,
- workshopName: rows[0].workshopName,
- modName: rows[0].modName,
- processInspectionItem: rows[0].processInspectionItem,
- okAcceptedNum: okAcceptedNum,
- specialConcessionsNum: specialConcessionsNum,
- unqualifiedClassList: []
- };
+ var material = $("#bootstrap-material-table").bootstrapTable("getData");
+ if(material.length == 0){
+ $.modal.msgError("物料表格为空,请先选择物料");
+ return;
+ }
- var unqualifiedRows = iframeWin.$('#bootstrap-unqualifiedClass-table-'+tableId).bootstrapTable('getData');
- for (var i = 0; i < unqualifiedRows.length; i++) {
- var row = unqualifiedRows[i];
- // 获取 '不良分类' 列的