From bf1dd3ccde79ca2b20b4663fc476ecd74782c0e9 Mon Sep 17 00:00:00 2001 From: "hongrui.an" <297504645@qq.com> Date: Mon, 16 Jun 2025 17:27:30 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90EQI=E5=89=8D=E7=AB=AF=E3=80=91?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Web/src/components/ediTtablePage/index.vue | 23 ++-- Web/src/utils/common/apiTableColumns.js | 130 +++++++++++++++--- .../logisticsPlan/supplierConDate/index.vue | 38 +++++ 3 files changed, 161 insertions(+), 30 deletions(-) create mode 100644 Web/src/views/logisticsPlan/supplierConDate/index.vue diff --git a/Web/src/components/ediTtablePage/index.vue b/Web/src/components/ediTtablePage/index.vue index 4de5f4f..0da2817 100644 --- a/Web/src/components/ediTtablePage/index.vue +++ b/Web/src/components/ediTtablePage/index.vue @@ -636,20 +636,24 @@ function searchRightBtnHandle(btn){ // 保存页面 if(btn.name == 'pageSave'){ - table_Ref.value.tableForm_Ref.validate((valid)=>{ - if(valid){ + // table_Ref.value.tableForm_Ref.validate((valid)=>{ + // if(valid){ let _idEditData = checkPageEditList() if(!_idEditData || _idEditData.length <= 0)return ElMessage.warning('暂无数据修改') // 判断规则 目前风险页面通用,暂时写在通用方式中,如果后期有区别,可拿到页面外处理 - // 规则:反馈结果[feedbackResults]=1时,风险类型[ventureType],具体风险[ventureSpecific]必填 + // 规则:反馈结果[feedbackResults]=1时,风险类型[ventureType],具体风险[ventureSpecific],应对措施[measures]必填 let _indexs = [] _idEditData.forEach(item=>{ - if(item.feedbackResults == '1' && (!item.ventureType || !item.ventureSpecific || item.ventureSpecifi == '')){ + if(item.feedbackResults == '1' && ( + !item.ventureType || item.ventureType == '' || + !item.ventureSpecific || item.ventureSpecific == '' || + !item.measures || item.measures == '' + )){ _indexs.push(getIndexById(item.id)) } }) if(_indexs && _indexs.length > 0){ - return ElMessage.error(`修改数据中【第${_indexs}行】数据中,【反馈结果】为异常,但【风险类型】或【具体风险】为空,请修改后重新提交!`) + return ElMessage.error(`修改数据中【第${_indexs}行】数据中,【反馈结果】为异常,但【风险类型】或【具体风险】或【应对措施】为空,请修改后重新提交!`) } ElMessageBox.confirm('是否确定提交更改?', '提示', { confirmButtonText: '确定', @@ -664,10 +668,9 @@ }) .finally(()=>{state.loading = false}) }) - } - }) + // } + // }) } - } // 排序 @@ -775,6 +778,7 @@ // 可编辑元素Focus事件 todo:如果加上表单验证后,需要处理表单点击 function getItemDetail(type,row,eventType) { + if(!row.id){return ElMessage.error('该数据无id')} // 如果是相同id,避免重复:阻止接口 if(row.id == state.currentDetailId){return} let _focuseExt = ['input','numberInput'] @@ -846,12 +850,11 @@ // 行变色 function tableRowClassName(data){ - if(data.row.id == state.currentDetailId){return 'current-select-tableRow'} + if(data.row.id && (data.row.id == state.currentDetailId)){return 'current-select-tableRow'} else{return 'normal-tableRow'} } // 根据apiTableColumns转义table内表单默认规则 - // todo:feedbackResults相应的特殊规则处理,measures也需要处理 function getTableFormRules(){ if(props.tableFormRules) { state.tableFormRulesData = props.tableFormRules diff --git a/Web/src/utils/common/apiTableColumns.js b/Web/src/utils/common/apiTableColumns.js index 84a09aa..d5dd73b 100644 --- a/Web/src/utils/common/apiTableColumns.js +++ b/Web/src/utils/common/apiTableColumns.js @@ -93,7 +93,7 @@ const apiTableColumns = { ], // M+6月物料需求计划风险确认 cherysupplierconmmrp:[ - {prop:'supplierCode',title:'供应商代码',width:150,align:'left'}, + {prop:'supplierCode',title:'供应商代码',width:120}, {prop:'releaseEdition',title:'需求发布版次',width:150}, {prop:'materialCode',title:'零件号'}, {prop:'plantId',title:'工厂代码',width:120}, @@ -101,12 +101,12 @@ const apiTableColumns = { {prop:'ventureType',title:'风险类型',type:'filterSelect',options:EnumList.ventureType}, {prop:'ventureSpecific',title:'具体风险',type:'input'}, {prop:'measures',title:'应对措施',type:'input'}, - {prop:'quantityMeet1',title:'满足数量1',type:'numberInput',required:true}, - {prop:'quantityMeet2',title:'满足数量2',type:'numberInput',required:true}, - {prop:'quantityMeet3',title:'满足数量3',type:'numberInput',required:true}, - {prop:'quantityMeet4',title:'满足数量4',type:'numberInput',required:true}, - {prop:'quantityMeet5',title:'满足数量5',type:'numberInput',required:true}, - {prop:'quantityMeet6',title:'满足数量6',type:'numberInput',required:true}, + {prop:'quantityMeet1',title:'满足数量1',type:'numberInput'}, + {prop:'quantityMeet2',title:'满足数量2',type:'numberInput'}, + {prop:'quantityMeet3',title:'满足数量3',type:'numberInput'}, + {prop:'quantityMeet4',title:'满足数量4',type:'numberInput'}, + {prop:'quantityMeet5',title:'满足数量5',type:'numberInput'}, + {prop:'quantityMeet6',title:'满足数量6',type:'numberInput'}, {prop:'quantityMeet7',title:'满足数量7',type:'numberInput'}, {prop:'quantityMeet8',title:'满足数量8',type:'numberInput'}, {prop:'quantityMeet9',title:'满足数量9',type:'numberInput'}, @@ -196,6 +196,96 @@ const apiTableColumns = { {prop:'isDelete',title:'是否删除',type:'tagFilter',options:EnumList.whether}, {prop:'version',title:'版本号'}, ], + // 日物料需求计划风险确认 + cherysuppliercondate:[ + {prop:'supplierCode',title:'供应商代码',width:120}, + {prop:'releaseEdition',title:'需求发布版次',width:150}, + {prop:'materialCode',title:'零件号'}, + {prop:'plantId',title:'工厂代码',width:120}, + {prop:'feedbackResults',title:'反馈结果',type:'filterSelect',options:EnumList.feedbackResults,required:true}, + {prop:'ventureType',title:'风险类型',type:'filterSelect',options:EnumList.ventureType}, + {prop:'ventureSpecific',title:'具体风险',type:'input'}, + {prop:'measures',title:'应对措施',type:'input'}, + {prop:'quantityMeet1',title:'满足数量1',type:'numberInput'}, + {prop:'quantityMeet2',title:'满足数量2',type:'numberInput'}, + {prop:'quantityMeet3',title:'满足数量3',type:'numberInput'}, + {prop:'quantityMeet4',title:'满足数量4',type:'numberInput'}, + {prop:'quantityMeet5',title:'满足数量5',type:'numberInput'}, + {prop:'quantityMeet6',title:'满足数量6',type:'numberInput'}, + {prop:'quantityMeet7',title:'满足数量7',type:'numberInput'}, + {prop:'quantityMeet8',title:'满足数量8',type:'numberInput'}, + {prop:'quantityMeet9',title:'满足数量9',type:'numberInput'}, + {prop:'quantityMeet10',title:'需求数量10',type:'numberInput'}, + {prop:'quantityMeet11',title:'需求数量11',type:'numberInput'}, + {prop:'quantityMeet12',title:'需求数量12',type:'numberInput'}, + {prop:'quantityMeet13',title:'需求数量13',type:'numberInput'}, + {prop:'quantityMeet14',title:'需求数量14',type:'numberInput'}, + {prop:'quantityMeet15',title:'需求数量15',type:'numberInput'}, + {prop:'quantityMeet16',title:'需求数量16',type:'numberInput'}, + {prop:'quantityMeet17',title:'需求数量17',type:'numberInput'}, + {prop:'quantityMeet18',title:'需求数量18',type:'numberInput'}, + {prop:'quantityMeet19',title:'需求数量19',type:'numberInput'}, + {prop:'quantityMeet20',title:'需求数量20',type:'numberInput'}, + {prop:'quantityMeet21',title:'需求数量21',type:'numberInput'}, + {prop:'quantityMeet22',title:'需求数量22',type:'numberInput'}, + {prop:'quantityMeet23',title:'需求数量23',type:'numberInput'}, + {prop:'quantityMeet24',title:'需求数量24',type:'numberInput'}, + {prop:'quantityMeet25',title:'需求数量25',type:'numberInput'}, + {prop:'quantityMeet26',title:'需求数量26',type:'numberInput'}, + {prop:'quantityMeet27',title:'需求数量27',type:'numberInput'}, + {prop:'quantityMeet28',title:'需求数量28',type:'numberInput'}, + {prop:'quantityMeet29',title:'需求数量29',type:'numberInput'}, + {prop:'quantityMeet30',title:'需求数量30',type:'numberInput'}, + {prop:'quantityMeet31',title:'需求数量31',type:'numberInput'}, + {prop:'startDate',title:'起始日期',width:180}, + ], + // 日物料需求计划风险确认-明细 + cherysuppliercondateDetail:[ + {prop:'releaseEdition',title:'需求发布版次',width:150}, + {prop:'materialCode',title:'零件号'}, + {prop:'materialDescription',title:'零件名称'}, + {prop:'plantId',title:'工厂代码'}, + {prop:'plantName',title:'工厂名称'}, + {prop:'startDate',title:'起始日期'}, + {prop:'quantityDemand1',title:'需求数量1'}, + {prop:'quantityDemand2',title:'需求数量2'}, + {prop:'quantityDemand3',title:'需求数量3'}, + {prop:'quantityDemand4',title:'需求数量4'}, + {prop:'quantityDemand5',title:'需求数量5'}, + {prop:'quantityDemand6',title:'需求数量6'}, + {prop:'quantityDemand7',title:'需求数量7'}, + {prop:'quantityDemand8',title:'需求数量8'}, + {prop:'quantityDemand9',title:'需求数量9'}, + {prop:'quantityDemand10',title:'需求数量10'}, + {prop:'quantityDemand11',title:'需求数量11'}, + {prop:'quantityDemand12',title:'需求数量12'}, + {prop:'quantityDemand13',title:'需求数量13'}, + {prop:'quantityDemand14',title:'需求数量14'}, + {prop:'quantityDemand15',title:'需求数量15'}, + {prop:'quantityDemand16',title:'需求数量16'}, + {prop:'quantityDemand17',title:'需求数量17'}, + {prop:'quantityDemand18',title:'需求数量18'}, + {prop:'quantityDemand19',title:'需求数量19'}, + {prop:'quantityDemand20',title:'需求数量20'}, + {prop:'quantityDemand21',title:'需求数量21'}, + {prop:'quantityDemand22',title:'需求数量22'}, + {prop:'quantityDemand23',title:'需求数量23'}, + {prop:'quantityDemand24',title:'需求数量24'}, + {prop:'quantityDemand25',title:'需求数量25'}, + {prop:'quantityDemand26',title:'需求数量26'}, + {prop:'quantityDemand27',title:'需求数量27'}, + {prop:'quantityDemand28',title:'需求数量28'}, + {prop:'quantityDemand29',title:'需求数量29'}, + {prop:'quantityDemand30',title:'需求数量30'}, + {prop:'quantityDemand31',title:'需求数量31'}, + // {prop:'is_update',title:'是否更新',type:'tagFilter',options:EnumList.whether}, + {prop:'createByUser',title:'创建人'}, + {prop:'creationTime',title:'创建时间'}, + {prop:'updateByUser',title:'修改人'}, + {prop:'updateTime',title:'修改时间'}, + // {prop:'isDelete',title:'是否删除',type:'tagFilter',options:EnumList.whether}, + {prop:'version',title:'版本号'}, + ], // 计划协议 cherysuppliersaweek:[ {prop:'scheduleAgreement',title:'计划协议号',width:120}, @@ -244,14 +334,14 @@ const apiTableColumns = { // 采购订单风险确认 cherysupplierconpo:[ {prop:'supplierCode',title:'供应商代码'}, - {prop:'purchaseOrder',title:'采购订单号',type:'input',required:true,width:120}, - {prop:'serialNumber',title:'行项目号',type:'input',required:true}, - {prop:'quantityMeet',title:'满足数量',type:'numberInput',required:true}, + {prop:'purchaseOrder',title:'采购订单号',width:120}, + {prop:'serialNumber',title:'行项目号'}, {prop:'feedbackResults',title:'反馈结果',type:'filterSelect',options:EnumList.feedbackResults,required:true}, {prop:'ventureType',title:'风险类型',type:'filterSelect',options:EnumList.ventureType}, {prop:'ventureSpecific',title:'具体风险',type:'input'}, {prop:'measures',title:'应对措施',type:'input'}, {prop:'creationTime',title:'创建时间',width:180}, + {prop:'quantityMeet',title:'满足数量',type:'numberInput'}, ], // 过焊装未过总装 cherysupplierporhschedul:[ @@ -428,7 +518,7 @@ const apiTableColumns = { {prop:'vendorFieldDesc',title:'控制项描述'}, {prop:'vendorFieldCode',title:'控制项代码',required:true}, {prop:'deadLine',title:'库存有效日期',type:'datetime',width:180,required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 排产数据 cherysupplierproscheduling:[ @@ -473,7 +563,7 @@ const apiTableColumns = { {prop:'vendorProductName',title:'供应商总成零件名称',width:180,required:true}, {prop:'cheryProductNo',title:'奇瑞零件号',required:true}, {prop:'cheryProductName',title:'奇瑞零件名称',width:180,required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 人员资质信息 cherysupplieremployee:[ @@ -496,7 +586,7 @@ const apiTableColumns = { {prop:'qualificationLevel',title:'资质等级',required:true}, {prop:'checkInTime',title:'资质获取时间',width:180,type:'datetime',required:true}, {prop:'checkOutTime',title:'资质失去时间',width:180,type:'datetime',required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // BOM主数据 cherysupplierbom:[ @@ -569,7 +659,7 @@ const apiTableColumns = { {prop:'checkMode',title:'检测方式',type:'filter',options:EnumList.checkMode,required:true}, {prop:'deviceCode',title:'检测设备编号',required:true}, {prop:'deviceName',title:'检测设备名称',required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 生产过程数据 cherysupplierprodata:[ @@ -617,7 +707,7 @@ const apiTableColumns = { {prop:'parentSoftwareRevision',title:'父件软件版本号',width:180}, {prop:'childHardwareRevision',title:'子件硬件版本号',width:180}, {prop:'childSoftwareRevision',title:'子件软件版本号',width:180}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 产品一次合格率 cherysupplierprofirstpassyield:[ @@ -643,7 +733,7 @@ const apiTableColumns = { {prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift,required:true}, {prop:'statisticalTime',title:'生产日期',width:180,type:'datetime',required:true}, {prop:'dateTime',title:'值统计时间',width:180,type:'datetime',required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 工位一次合格率 cherysupplierprostationfirstpassyield:[ @@ -671,7 +761,7 @@ const apiTableColumns = { {prop:'workShift',title:'班次',type:'filter',options:EnumList.workShift,required:true}, {prop:'statisticalTime',title:'生产日期',width:180,type:'datetime',required:true}, {prop:'dateTime',title:'值统计时间',width:180,type:'datetime',required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 缺陷业务数据 cherysupplierproflaw:[ @@ -702,7 +792,7 @@ const apiTableColumns = { {prop:'defectsDesc',title:'缺陷描述',required:true}, {prop:'defectsLevel',title:'缺陷等级',type:'filter',options:EnumList.defectsLevel,required:true}, {prop:'statisticalTime',title:'缺陷录入时间',width:180,type:'datetime',required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 物料主数据 cherysupplierpromaterialdata:[ @@ -747,7 +837,7 @@ const apiTableColumns = { {prop:'cheryProductNo',title:'奇瑞零件号',required:true}, {prop:'cheryProductName',title:'奇瑞零件名称',width:180,required:true}, {prop:'vendorProductSn',title:'供应商总成SN码',width:180}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 工艺装备 cherysupplierproprocessequipment:[ @@ -781,7 +871,7 @@ const apiTableColumns = { {prop:'wearThreshold',title:'磨损阈值',required:true}, {prop:'detectionRange',title:'检测范围',required:true}, {prop:'unitType',title:'检测单位',required:true}, - {prop:'creationTime',title:'创建时间',width:180}, + {prop:'creationTime',title:'创建时间',width:180,noEdit:true}, ], // 工艺 cherysupplierproprocess:[ diff --git a/Web/src/views/logisticsPlan/supplierConDate/index.vue b/Web/src/views/logisticsPlan/supplierConDate/index.vue new file mode 100644 index 0000000..91e10d7 --- /dev/null +++ b/Web/src/views/logisticsPlan/supplierConDate/index.vue @@ -0,0 +1,38 @@ + + + + \ No newline at end of file