| | |
| | | </view> |
| | | |
| | | <!--启用该功能--> |
| | | <!--新增:检验不合格送检呼叫 按钮(功能与送检呼叫一样,仅在特定 remark 下可以点击)--> |
| | | <!--新增:检验不合格送检呼叫 按钮(功能与送检呼叫一样,仅在特定 remark 下可以点击)--> |
| | | <view class="item"> |
| | | <!--检验不合格送检呼叫按钮,仅在 remark 为指定文本 且 当前无送检时间 时可点击--> |
| | | <!--检验不合格送检呼叫按钮,仅在 remark 为指定文本 且 当前无送检时间 时可点击--> |
| | | <button :class="canFailResend ? 'btn-blue' : 'btn-disabled'" |
| | | :disabled="!canFailResend" |
| | | @click="ReHandleMaShoutTime"> |
| | | 检验不合格重新送检呼叫 |
| | | </button> |
| | | <!--仍复用同一送检时间字段,避免重复状态--> |
| | | <!--仍复用同一送检时间字段,避免重复状态--> |
| | | <input class="txt-inp" |
| | | v-model="maShoutTime" |
| | | placeholder="首检不合格重新呼叫时点击按钮带出送检时间" |
| | |
| | | this.stateCheck(1); |
| | | } |
| | | }, |
| | | // 首检不合格重呼叫:flag = 2 |
| | | ReHandleMaShoutTime() { |
| | | if (!this.maShoutTime && this.canFailResend) { |
| | | this.stateCheck(2); |
| | | } |
| | | }, |
| | | // 首检不合格重呼叫:flag = 2 |
| | | ReHandleMaShoutTime() { |
| | | if (!this.maShoutTime && this.canFailResend) { |
| | | this.stateCheck(2); |
| | | } |
| | | }, |
| | | // 处理调机完成按钮点击 |
| | | handleMaEndTime() { |
| | | if (!this.maEndTime) { |
| | |
| | | console.log('调机完成按钮被点击'); |
| | | this.maEndTime = this.$getDate('yyyy-mm-dd hh24:mi:ss'); |
| | | }, |
| | | // 刷新工单数据 |
| | | // 刷新工单数据(局部刷新当前组件) |
| | | refresh() { |
| | | this.findByOrderId(); |
| | | }, |
| | | // 保存并生效,将时间等信息提交到后端 |
| | | save() { |
| | | if (!this.statusForm.id) { |
| | | this.$showMessage("id为空,不允许推送"); |
| | | return; |
| | | } |
| | | // 返回 Promise 方便调用者链式处理 |
| | | return this.$post({ |
| | | url: "/MesOrderSta/ChangeMachineTime", |
| | | data: { |
| | | maStartTime: this.maStartTime, |
| | | maShoutTime: this.maShoutTime, |
| | | maEndTime: this.maEndTime, |
| | | id: this.statusForm.id, |
| | | orderId: this.orderId, |
| | | machineNo: this.machineNo, |
| | | flag: this.flag |
| | | } |
| | | }).then(res => { |
| | | if (res.data && res.data.tbBillList) { |
| | | this.$showMessage("呼叫成功"); |
| | | // 先刷新组件数据,确保本地状态与后端一致 |
| | | this.findByOrderId(); |
| | | // 可视化提示后刷新整个页面(整页 reload),让界面完全重载 |
| | | setTimeout(() => { |
| | | window.location.reload(); |
| | | }, 700); // 700ms 用于让提示短暂可见,可根据需要调整或去掉 setTimeout |
| | | } else { |
| | | this.$showMessage("呼叫失败"); |
| | | this.cancel(); |
| | | } |
| | | return res; |
| | | }); |
| | | }, |
| | | // 保存并生效,将时间等信息提交到后端 |
| | | // 变更:返回 Promise;成功后局部刷新(调用 findByOrderId)而不是整页 reload |
| | | save() { |
| | | if (!this.statusForm.id) { |
| | | this.$showMessage("id为空,不允许推送"); |
| | | return Promise.resolve(); |
| | | } |
| | | return this.$post({ |
| | | url: "/MesOrderSta/ChangeMachineTime", |
| | | data: { |
| | | maStartTime: this.maStartTime, |
| | | maShoutTime: this.maShoutTime, |
| | | maEndTime: this.maEndTime, |
| | | id: this.statusForm.id, |
| | | orderId: this.orderId, |
| | | machineNo: this.machineNo, |
| | | flag: this.flag |
| | | } |
| | | }).then(res => { |
| | | if (res && res.data && res.data.tbBillList) { |
| | | this.$showMessage("呼叫成功"); |
| | | // 局部刷新:重新拉取当前工单状态并更新当前组件数据 |
| | | this.findByOrderId(); |
| | | // 如果需要在保存后关闭对话框或返回上一级,可在这里处理 |
| | | } else { |
| | | this.$showMessage("呼叫失败"); |
| | | this.cancel(); |
| | | } |
| | | return res; |
| | | }).catch(err => { |
| | | // 保持友好的错误提示并将错误抛出以便外部链式处理 |
| | | console.error('保存失败:', err); |
| | | this.$showMessage("保存时发生错误"); |
| | | throw err; |
| | | }); |
| | | }, |
| | | // 取消操作,恢复为上次保存的数据 |
| | | cancel() { |
| | | this.maShoutTime = this.statusForm.maShoutTime; |
| | |
| | | this.maEndTime = this.statusForm.maEndTime; |
| | | }, |
| | | // 送检呼叫,item=1时设置送检呼叫时间 |
| | | // 送检呼叫与重新送检呼叫以及调机开始对应的 flag 值 |
| | | // flag 说明:-1 = 调机开始;1 = 首次送检呼叫;2 = 不合格重新送检呼叫 |
| | | stateCheck(item) { |
| | | // 送检呼叫与重新送检呼叫以及调机开始对应的 flag 值 |
| | | // flag 说明:-1 = 调机开始;1 = 首次送检呼叫;2 = 不合格重新送检呼叫 |
| | | stateCheck(item) { |
| | | switch (item) { |
| | | case 0: |
| | | break; |
| | | case 1:// 首次送检呼叫 |
| | | case 1:// 首次送检呼叫 |
| | | this.maShoutTime = this.$getDate('yyyy-mm-dd hh24:mi:ss'); |
| | | //this.flag = -1; // 送检呼叫有值后,flag始终为-1 |
| | | break; |
| | | case 2:// 检验不合格重新送检呼叫 |
| | | this.maShoutTime = this.$getDate('yyyy-mm-dd hh24:mi:ss'); |
| | | //this.flag = -1; // 送检呼叫有值后,flag始终为-1 |
| | | case 2:// 检验不合格重新送检呼叫 |
| | | this.maShoutTime = this.$getDate('yyyy-mm-dd hh24:mi:ss'); |
| | | //this.flag = -1; // 送检呼叫有值后,flag始终为-1 |
| | | break; |
| | | default: |
| | | // 其它值不处理 |
| | | break; |
| | | default: |
| | | // 其它值不处理 |
| | | break; |
| | | } |
| | | this.flag = item; |
| | | }, |
| | |
| | | }) |
| | | } |
| | | }, |
| | | mounted() { |
| | | // 页面加载时,启动定时器,每隔5分钟自动保存 |
| | | this.autoSaveTimer = setInterval(() => { |
| | | this.save(); // 直接调用已有的保存方法 |
| | | }, 1 * 30 * 1000); // 30秒 |
| | | }, |
| | | beforeDestroy() { |
| | | // 页面卸载时清理定时器 |
| | | clearInterval(this.autoSaveTimer); |
| | | }, |
| | | mounted() { |
| | | // 页面加载时,启动定时器,每隔5分钟自动保存(当前示例使用 30s,可改回 5 分钟) |
| | | this.autoSaveTimer = setInterval(() => { |
| | | this.save(); // 直接调用已有的保存方法(save 已返回 Promise) |
| | | }, 1 * 30 * 1000); // 30秒 |
| | | }, |
| | | beforeDestroy() { |
| | | // 页面卸载时清理定时器 |
| | | clearInterval(this.autoSaveTimer); |
| | | }, |
| | | }; |
| | | </script> |
| | | |