diff --git a/src/views/equipmentRepair/repairApply/addRepair.vue b/src/views/equipmentRepair/repairApply/addRepair.vue index e60bcc2a..0991e61e 100644 --- a/src/views/equipmentRepair/repairApply/addRepair.vue +++ b/src/views/equipmentRepair/repairApply/addRepair.vue @@ -13,39 +13,56 @@ + + + + + @@ -54,22 +71,22 @@ - - - - @@ -161,7 +174,7 @@ export default { { label: '类目', prop: 'groupName' }, { label: '名称', prop: 'typeName' }, { label: '规格型号', prop: 'typeModelName' }, - { label: '管理模式', prop: 'manageMode' }, + { label: '管理模式', prop: 'manageMode', width: 90 }, { label: '设备编码', prop: 'code' }, { label: '维修数量', prop: 'repairNum', width: 80 }, { @@ -172,17 +185,30 @@ export default { h('el-select', { props: { value: row.isScrap || '', - disabled: row.status === '通过' // ⭐ 状态为“通过” → 不可操作 + disabled: row.status === '通过' // ⭐ 状态为"通过" → 不可操作 }, on: { input: val => { this.$set(row, 'isScrap', val) + // 当维修是否合格字段变化时,处理退役数量逻辑 if (val === '0') { + // 合格:退役数量设为0且不可操作 this.$set(row, 'reasonVal', '') this.$set(row, 'reasonDisabled', true) + this.$set(row, 'retirementNum', 0) } else { + // 不合格:根据管理模式设置退役数量 this.$set(row, 'reasonDisabled', false) + if (row.manageMode === '编码管理') { + // 编码管理:退役数量默认为1,不可操作 + this.$set(row, 'retirementNum', 1) + } else { + // 数量管理:退役数量保持原值或设为0,可操作 + if (!row.retirementNum) { + this.$set(row, 'retirementNum', 0) + } + } } } }, @@ -245,6 +271,43 @@ export default { this.getList() }, methods: { + // 判断退役数量字段是否禁用 +// 判断退役数量字段是否禁用 + isRetirementNumDisabled(row) { + // 状态为"通过"时禁用 + if (row.status === '通过') return true + + // 未选择维修是否合格时禁用 + if (!row.isScrap && row.isScrap !== '0') return true + + // 维修合格时禁用 + if (row.isScrap === '0') return true + + // 编码管理且维修不合格时禁用 + if (row.manageMode === '编码管理' && row.isScrap === '1') return true + + // 其他情况可操作(数量管理且维修不合格) + return false + }, + + // 获取退役数量的最大值 + getRetirementMax(row) { + // 编码管理设备最大值为1 + if (row.manageMode === '编码管理') return 1 + // 数量管理设备最大值为维修数量 + return row.repairNum || 0 + }, + + // 退役数量变化处理 + handleRetirementNumChange(row) { + // 确保退役数量在有效范围内 + if (row.retirementNum < 0) { + this.$set(row, 'retirementNum', 0) + } else if (row.retirementNum > this.getRetirementMax(row)) { + this.$set(row, 'retirementNum', this.getRetirementMax(row)) + } + }, + // 文件上传成功处理-编码弹窗上传 // 文件上传成功处理 handleFileSuccess2(response, file, fileList) { @@ -323,7 +386,16 @@ export default { this.isLoading = true try { const res = await getRepairDetailsList({ ...this.queryParams }) - this.tableList = res.data || [] + this.tableList = (res.data || []).map(item => { + // 初始化退役数量为0 + if (item.retirementNum === undefined || item.retirementNum === null) { + item.retirementNum = 0 + } + if (item.isScrap=='0'){ + item.reasonDisabled=true + } + return item + }) /** ⭐ 获取列表后同步给弹窗的 selectedMap **/ if (this.$refs.addNum && this.$refs.addNum.selectedMap) { @@ -383,6 +455,10 @@ export default { newRows.forEach(item => { if (item.manageMode === '编码管理') item.repairNum = 1 else if (!item.repairNum) item.repairNum = 1 + // 初始化退役数量为0 + if (item.retirementNum === undefined || item.retirementNum === null) { + item.retirementNum = 0 + } if (this.$refs.addNum && this.$refs.addNum.selectedMap) this.$refs.addNum.selectedMap.set(item.keyId, item) }) this.tableList = [...this.tableList, ...newRows] @@ -409,6 +485,19 @@ export default { return this.$message.warning(`【${row.typeName}】请选择退役原因`) } + // 校验退役数量 + if (row.isScrap === '1') { + // 维修不合格时校验退役数量 + if (row.retirementNum === undefined || row.retirementNum === null) { + return this.$message.warning(`【${row.typeName}】退役数量不能为空`) + } + if (row.retirementNum <= 0) { + return this.$message.warning(`【${row.typeName}】退役数量必须大于0`) + } + if (row.manageMode === '数量管理' && row.retirementNum > row.repairNum) { + return this.$message.warning(`【${row.typeName}】退役数量不能大于维修数量`) + } + } } const payload = {