BUG
快乐的昕的电脑
2025-10-31 418f4a9b326e054bf052d967e329a106e42b92e0
BUG
已修改1个文件
130 ■■■■ 文件已修改
components/machine.vue 130 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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="首检不合格重新呼叫时点击按钮带出送检时间"
@@ -130,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) {
@@ -151,44 +151,46 @@
                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;
@@ -196,23 +198,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;
            },
@@ -232,16 +234,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>