快乐的昕的电脑
2025-10-31 5403069a0ca726d75266b40b62cd85aa2875b6d9
components/machine.vue
@@ -55,15 +55,15 @@
         </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="首检不合格重新呼叫时点击按钮带出送检时间"
@@ -103,12 +103,11 @@
      },
      computed: {
         // 满足首检不合格重新呼叫条件且当前尚未重新生成送检时间 => 按钮可用
            canFailResend() {
                return this.statusForm &&
                    this.statusForm.remark &&
                    this.statusForm.remark.includes('不合格重新送检') && // 改为包含匹配
                    !this.maShoutTime;
            }
         canFailResend() {
            return this.statusForm &&
               this.statusForm.remark === this.failedRemark &&
               !this.maShoutTime;
         }
      },
      created() {
         // 组件创建时自动加载工单数据
@@ -131,12 +130,12 @@
               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) {
@@ -152,37 +151,52 @@
            console.log('调机完成按钮被点击');
            this.maEndTime = this.$getDate('yyyy-mm-dd hh24:mi:ss');
         },
         // 刷新工单数据
         // 刷新工单数据(局部刷新当前组件)
         refresh() {
            this.findByOrderId();
         },
         // 保存并生效,将时间等信息提交到后端
         save() {
            if (!this.statusForm.id) {
               this.$showMessage("id为空,不允许推送");
               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.tbBillList) {
                  this.$showMessage("呼叫成功");
                  this.findByOrderId();
               } else {
                  this.$showMessage("呼叫失败");
                  this.cancel();
               }
            })
         },
         // 变更:返回 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("呼叫成功");
                        // 方案2:完全刷新当前页面
                        // 延迟一下让用户看到成功提示
                        setTimeout(() => {
                            // 方法1:使用 uni.reLaunch 重新加载(推荐)
                            uni.reLaunch({
                                url: '/' + getCurrentPages()[0].route
                            });
                        }, 1500);
                    } else {
                        this.$showMessage("呼叫失败");
                        this.cancel();
                    }
                    return res;
                }).catch(err => {
                    console.error('保存失败:', err);
                    this.$showMessage("保存时发生错误");
                    throw err;
                });
            },
         // 取消操作,恢复为上次保存的数据
         cancel() {
            this.maShoutTime = this.statusForm.maShoutTime;
@@ -190,23 +204,23 @@
            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;
         },
@@ -226,16 +240,16 @@
            })
         }
      },
        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>