快乐的昕的电脑
2025-10-24 9b4ce4eca59637f3abab92333b4b32b92013c696
components/machine.vue
@@ -9,7 +9,11 @@
      <!-- 中间状态部分,上下结构,包含调机流程的三个步骤 -->
      <view class="middle-section">
         <view class="item" style="height: 100px;">
            <h4>说明:调机开始时间需要手动确认</h4>
            <h4>
               说明:1.点击'调机开始'后再点击'保存生效' 2.点击'送检呼叫'后再点击'保存生效'<br />
               3.主界面首检合格后再点击'保存生效'<br />
               4.首检不合格再点击'保存生效'会清空送检时间
            </h4>
         </view>
         <view class="item">
            <!-- 调机开始按钮,maStartTime有值时禁用 -->
@@ -19,7 +23,7 @@
               调机开始
            </button>
            <!-- 显示调机开始时间 -->
            <input class="txt-inp" v-model="maStartTime" placeholder="点击按钮带出时间" disabled="true" />
            <input class="txt-inp" v-model="maStartTime" placeholder="点击按钮带出调机时间" disabled="true" />
         </view>
         <view class="item">
            <!-- 送检呼叫按钮,maShoutTime有值时禁用 -->
@@ -29,17 +33,17 @@
               送检呼叫
            </button>
            <!-- 显示送检呼叫时间 -->
            <input class="txt-inp" v-model="maShoutTime" placeholder="点击按钮带出时间" disabled="true" />
            <input class="txt-inp" v-model="maShoutTime" placeholder="点击按钮带出送检时间" disabled="true" />
         </view>
         <!--<view class="item">-->
            <!-- 调机完成按钮,maEndTime有值时禁用 -->
            <!--<button :class="maEndTime ? 'btn-disabled' : 'btn-blue'"
                  :disabled="!!maEndTime"
                  @click="handleMaEndTime">
               调机完成(=检验通过)
            </button>-->
            <!-- 显示调机完成时间 -->
            <!--<input class="txt-inp" v-model="maEndTime" placeholder="首次首检确认通过写入" disabled="true" />
         <!-- 调机完成按钮,maEndTime有值时禁用 -->
         <!--<button :class="maEndTime ? 'btn-disabled' : 'btn-blue'"
               :disabled="!!maEndTime"
               @click="handleMaEndTime">
            调机完成(=检验通过)
         </button>-->
         <!-- 显示调机完成时间 -->
         <!--<input class="txt-inp" v-model="maEndTime" placeholder="首次首检确认通过写入" disabled="true" />
         </view>-->
         <view class="item">
            <button class="btn-disabled" disabled>
@@ -47,6 +51,23 @@
            </button>
            <input class="txt-inp" v-model="maEndTime" placeholder="首次首检确认通过写入" disabled="true" />
         </view>
         <!--启用该功能-->
         <!--新增:检验不合格送检呼叫 按钮(功能与送检呼叫一样,仅在特定 remark 下可以点击)-->
         <view class="item">
             <!--检验不合格送检呼叫按钮,仅在 remark 为指定文本 且 当前无送检时间 时可点击-->
            <button :class="canFailResend ? 'btn-blue' : 'btn-disabled'"
                  :disabled="!canFailResend"
                  @click="ReHandleMaShoutTime">
               <!--检验不合格重新送检呼叫-->
            </button>
             <!--仍复用同一送检时间字段,避免重复状态-->
            <input class="txt-inp"
                  v-model="maShoutTime"
                  placeholder="首检不合格重新呼叫时点击按钮带出送检时间"
                  disabled="true" />
         </view>
      </view>
      <!-- 底部保存/取消按钮 -->
@@ -73,8 +94,17 @@
            maShoutTime: '',   // 送检呼叫时间
            maStartTime: '',   // 调机开始时间
            maEndTime: '',     // 调机完成时间
            statusForm: {},    // 工单状态表单数据
            statusForm: {},    // 工单状态表单数据(包含 remark 字段)
            flag: -1,          // 操作标记
            failedRemark: '首检不合格,送检时间已清空,请重新送检呼叫生成新的首检单' // 首检不合格后由后端返回的提示
         }
      },
      computed: {
         // 满足首检不合格重新呼叫条件且当前尚未重新生成送检时间 => 按钮可用
         canFailResend() {
            return this.statusForm &&
               this.statusForm.remark === this.failedRemark &&
               !this.maShoutTime;
         }
      },
      created() {
@@ -86,18 +116,24 @@
      },
      methods: {
         // 处理调机开始按钮点击
            handleMaStartTime() {
                if (!this.maStartTime) {
                    this.setMaStartTime();
                    this.flag = -1; // 调机开始按钮按下时回传的flag=-1
                }
            },
         // 处理送检呼叫按钮点击
         handleMaStartTime() {
            if (!this.maStartTime) {
               this.setMaStartTime();
               this.flag = -1; // 调机开始按钮按下时回传的flag=-1
            }
         },
         // 处理送检呼叫按钮点击(不含首检不合格重呼叫)
         handleMaShoutTime() {
            if (!this.maShoutTime) {
               this.stateCheck(1);
            }
         },
            // 首检不合格重呼叫:flag = 2
            ReHandleMaShoutTime() {
                if (!this.maShoutTime && this.canFailResend) {
                    this.stateCheck(2);
                }
            },
         // 处理调机完成按钮点击
         handleMaEndTime() {
            if (!this.maEndTime) {
@@ -151,16 +187,23 @@
            this.maEndTime = this.statusForm.maEndTime;
         },
         // 送检呼叫,item=1时设置送检呼叫时间
         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:
                    case 2:// 检验不合格重新送检呼叫
                        this.maShoutTime = this.$getDate('yyyy-mm-dd hh24:mi:ss');
                        //this.flag = -1; // 送检呼叫有值后,flag始终为-1
                  break;
                    default:
                        // 其它值不处理
                        break;
            }
            this.flag = item;
         },