“linengliang”
2023-12-12 16d99a3f6da4cebed2376fa42e025b53c2891818
src/views/eam/modules/repairorder/repairOrderExcuteDrawer.vue
@@ -57,7 +57,7 @@
                :loading="confirmLoading"
                :disabled="repairOrder.status!='3'||repairOrder.repairOrderUda1==='needPart'||repairOrder.repairOrderUda1==='needSpare'"
                type="primary"
              >报工</a-button>
              >修完</a-button>
              <!-- <a-button
                :style="{marginRight: '8px'}"
                @click="handleRevoke"
@@ -68,6 +68,10 @@
            </a-row>
          </div>
          <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
            <a-divider
            orientation="center"
            style="font-size: large;font-style: italic;color: #66aeed;"
          > 基础信息 </a-divider>
            <a-row :gutter="24">
              <a-col :span="6">
                <a-form-item
@@ -205,6 +209,10 @@
                </a-form-item>
              </a-col>
            </a-row>
            <a-divider
            orientation="center"
            style="font-size: large;font-style: italic;color: #66aeed;"
          > 报修领取信息 </a-divider>
            <a-row :gutter="24">
              <a-col :span="6">
                <a-form-item
@@ -263,6 +271,10 @@
                </a-form-item>
              </a-col>
            </a-row>
            <a-divider
            orientation="center"
            style="font-size: large;font-style: italic;color: #66aeed;"
          > 维修信息 </a-divider>
            <a-row
              :gutter="24"
            >
@@ -301,7 +313,8 @@
                  label="维修时长"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.actualHour }}</span>
                  <span v-if="this.repairOrder != null">{{this.formattedElapsedTime}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -315,7 +328,7 @@
                  label="完成人"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.recipientUserId_dictText }}</span>
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.recipientUserId}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -323,6 +336,110 @@
                </a-form-item>
              </a-col>
            </a-row>
            <a-divider
            orientation="center"
            style="font-size: large;font-style: italic;color: #66aeed;"
          > 等采购件 </a-divider>
            <a-row
            :gutter="24"
            >
            <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等采购件开始"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda2}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等采购件结束"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda3 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="累计时长"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.time1 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-divider
            orientation="center"
            style="font-size: large;font-style: italic;color: #66aeed;"
          > 等加工件 </a-divider>
            <a-row
            :gutter="24"
            >
            <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等加工件开始"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda4 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等加工件结束"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda5 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="累计时长"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.time2 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-divider
            orientation="center"
            style="font-size: large;font-style: italic;color: #66aeed;"
          > 验收信息 </a-divider>
            <a-row
              :gutter="24"
            >
@@ -361,99 +478,7 @@
                  label="故障时长"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.faultHour }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-row
            :gutter="24"
            >
            <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等采购件开始"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda2}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等采购件结束"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda3 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="累计时间"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.spareTime }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-row
            :gutter="24"
            >
            <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等加工件开始"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda4 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="等加工件结束"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.repairOrderUda5 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="累计时间"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.partTime }}</span>
                  <span v-if="this.repairOrder != null">{{ this.time3 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -511,6 +536,7 @@
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { putAction } from '@/api/manage'
import dayjs from 'dayjs'
import Tooltip from 'ant-design-vue/es/tooltip'
import RepairOrderActualMaterialList from './moudles/RepairOrderActualMaterialReport'
import RepairOrderActualWorkHoursList from './moudles/RepairOrderActualHoursReport'
@@ -523,7 +549,8 @@
    Tooltip,
    RepairOrderActualMaterialList,
    RepairOrderActualWorkHoursList,
    RepairOrderFaultAnalysisList
    RepairOrderFaultAnalysisList,
    dayjs
  },
  props: {
    repairOrder: {
@@ -552,11 +579,11 @@
      dataSource: [],
      labelCol: {
        xs: { span: 24 },
        sm: { span: 6 },
        sm: { span: 12 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 18 },
        sm: { span: 12 },
      },
      url: {
        orderStart: "eam/repairOrder/start",
@@ -569,13 +596,26 @@
        handlePartStop:"/eam/repairOrder/handlePartStop",
        getInfo:'/eam/repairOrderFaultAnalysis/list',
      },
      elapsedTime: 0, // 记录已过去的时间(单位:毫秒)
      formattedElapsedTime: '0秒',
      time1:'0秒',
      time2:'0秒',
      time3:'0秒',
      timer:null // 格式化后的已过去时间
    }
  },
  mounted() {
    this.$bus.$on('closeDrawer', (data) => {
      this.handleCancel()
    })
    // this.$bus.$on('closeDrawer', (data) => {
    //   this.handleCancel()
    // })
    this.timer = setInterval(() => {
      this.updateElapsedTime();
    }, 1000);
  },
  beforeDestroy() {
    // 在组件销毁前清除计时器
    clearInterval(this.timer);
  },
  methods: {
@@ -627,6 +667,7 @@
    },
    //报工
    handleReportPro(){
      let that = this;
      getAction(that.url.getInfo,{repairOrderId:this.repairOrder.id}).then(res=>{
                if(res.success){
@@ -658,11 +699,10 @@
          putAction(that.url.orderReport, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('报工成功');
              that.repairOrder.status = '4'
              that.reload();
              that.$emit('loadData');
            } else {
              that.$message.error('报工出现异常')
              that.$message.error(res.message)
            }
          }).finally(() => {
            that.confirmLoading = false;
@@ -684,7 +724,6 @@
          putAction(that.url.orderRevoke, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('撤销成功');
              that.repairOrder.status = '3'
              that.$emit('loadData');
            } else {
              that.$message.error('撤销出现异常')
@@ -798,7 +837,52 @@
          this.repairOrder = res.result.records[0];
        }
      })
    }
    },
    updateElapsedTime() {
      const stardand = new Date();
      if(this.repairOrder.actualEndTime!==null&&this.repairOrder.actualEndTime!==undefined&&this.repairOrder.actualEndTime!==''){
        this.formattedElapsedTime = this.repairOrder.actualHour+'时';
      }else if(this.repairOrder.actualStartTime!==null&&this.repairOrder.actualStartTime!==undefined&&this.repairOrder.actualStartTime!==''){
        const startDateTime = dayjs(this.repairOrder.actualStartTime, { format: 'YYYY-MM-DD HH:mm:ss' });
        this.elapsedTime = stardand-startDateTime;
        this.formattedElapsedTime = this.formatTime(this.elapsedTime);
      }else{
        this.formattedElapsedTime="开工后计算时长";
      }
      if(this.repairOrder.repairOrderUda3!==null&&this.repairOrder.repairOrderUda3!==undefined&&this.repairOrder.repairOrderUda3!==''){
        this.time1 = this.repairOrder.spareTime+'时';
      }else if(this.repairOrder.repairOrderUda2!==null&&this.repairOrder.repairOrderUda2!==undefined&&this.repairOrder.repairOrderUda2!==''){
        const startDateTime1 = dayjs(this.repairOrder.repairOrderUda2, { format: 'YYYY-MM-DD HH:mm:ss' });
        this.time1 = this.formatTime(stardand-startDateTime1);
      }else{
        this.time1 = "等采购件后计算时长"
      }
      if(this.repairOrder.repairOrderUda5!==null&&this.repairOrder.repairOrderUda5!==undefined&&this.repairOrder.repairOrderUda5!==''){
        this.time2 = this.repairOrder.partTime+'时';
      }else if(this.repairOrder.repairOrderUda4!==null&&this.repairOrder.repairOrderUda4!==undefined&&this.repairOrder.repairOrderUda4!==''){
        const startDateTime2 = dayjs(this.repairOrder.repairOrderUda4, { format: 'YYYY-MM-DD HH:mm:ss' });
        this.time2 = this.formatTime(stardand-startDateTime2);
      }else{
        this.time2 = "等加工件后计算时长"
      }
      if(this.repairOrder.acceptTime!==null&&this.repairOrder.acceptTime!==undefined&&this.repairOrder.acceptTime!==''){
        this.time3 = this.repairOrder.faultHour+'时';
      }else if(this.repairOrder.faultTime!==null&&this.repairOrder.faultTime!==undefined&&this.repairOrder.faultTime!==''){
        const startDateTime3 = dayjs(this.repairOrder.faultTime, { format: 'YYYY-MM-DD HH:mm:ss' });
        this.time3 = this.formatTime(stardand-startDateTime3);
      }else{
        this.time3 = "验收后计算时长"
      }
    },
    formatTime(timeInMilliseconds) {
      // 将毫秒转换为更友好的格式(例如:x小时x分钟x秒)
      // 这里只是一个简单的实现,你可能需要根据需求进行更改
      const seconds = Math.floor(timeInMilliseconds / 1000);
      const minutes = Math.floor(seconds / 60);
      const hours = Math.floor(minutes / 60);
      return `${hours}时 ${minutes % 60}分 ${seconds % 60}秒`;
    },
  },
}