“linengliang”
2023-11-18 eb231718e708442c5e8b580dd93b7fca7ce321c1
src/views/eam/modules/repairorder/repairOrderExcuteDrawer.vue
@@ -4,29 +4,64 @@
    :width="drawerWidth"
    :visible="visible"
    @close="handleCancel"
    :confirmLoading="confirmLoading"
    :loading="confirmLoading"
    :maskClosable="maskClosable"
  >
    <a-card :style="getBackground()">
      <template>
        <a-card>
          <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
            <a-row :style="{textAlign:'left'}">
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleStart"
                :loading="confirmLoading"
                :disabled="repairOrder.status!='2'"
                type="primary"
              >开工</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleReport"
                :disabled="repairOrder.status!='3'"
                @click="handleSpare"
                :loading="confirmLoading"
                :disabled="repairOrder.status!=='3'
                ||repairOrder.repairOrderUda1==='needSpare'||repairOrder.repairOrderUda1==='needPart'
                ||(repairOrder.repairOrderUda2!==null&&repairOrder.repairOrderUda3!==null)"
                type="primary"
                v-if="repairOrder.repairOrderUda1!=='needSpare'"
              >等采购件</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleSpareStop"
                :loading="confirmLoading"
                type="primary"
                v-if="repairOrder.repairOrderUda1==='needSpare'"
              >等采购件停止</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handlePart"
                :loading="confirmLoading"
                :disabled="repairOrder.status!='3'
                ||repairOrder.repairOrderUda1==='needPart'||repairOrder.repairOrderUda1==='needSpare'
                ||(repairOrder.repairOrderUda4!==null&&repairOrder.repairOrderUda5!==null)"
                type="primary"
                v-if="repairOrder.repairOrderUda1!=='needPart'"
              >等加工件</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handlePartStop"
                :loading="confirmLoading"
                type="primary"
                v-if="repairOrder.repairOrderUda1==='needPart'"
              >等加工件停止</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleReportPro"
                :loading="confirmLoading"
                :disabled="repairOrder.status!='3'||repairOrder.repairOrderUda1==='needPart'||repairOrder.repairOrderUda1==='needSpare'"
                type="primary"
              >报工</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleRevoke"
                :loading="confirmLoading"
                :disabled="repairOrder.status!='4'"
                type="primary"
              >撤销</a-button>
@@ -45,6 +80,23 @@
                    v-if="this.repairOrder != null"
                    class="hightColor"
                  >{{this.repairOrder.status_dictText}}</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"
                    class="hightColor"
                  >{{this.repairOrder.repairOrderUda1_dictText}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -85,11 +137,13 @@
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-row :gutter="24">
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="设备编码"
                  label="统一编码"
                  class="hightColor"
                >
                  <span
@@ -102,8 +156,6 @@
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-row :gutter="24">
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
@@ -139,30 +191,13 @@
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="工时定额"
                  label="关键设备?"
                  class="hightColor"
                >
                  <span
                    v-if="this.repairOrder != null"
                    class="hightColor"
                  >{{ this.repairOrder.workingHourQuota }}</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"
                    class="hightColor"
                  >{{ this.repairOrder.recipientUserId_dictText}}</span>
                  >{{ this.repairOrder.specificEquipment_dictText}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -175,10 +210,10 @@
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="开始时间"
                  label="报修时间"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.actualStartTime }}</span>
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.faultTime }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -189,13 +224,10 @@
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="创建人"
                  label="报修人"
                  class="hightColor"
                >
                  <span
                    v-if="this.repairOrder != null"
                    class="hightColor"
                  >{{ this.repairOrder.createBy}}</span>
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.errUda2 }}</span>
                  <span
                    v-else
                    class="frozenRowClass"
@@ -206,13 +238,222 @@
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="创建人"
                  label="领取时间"
                  class="hightColor"
                >
                  <span v-if="this.repairOrder != null">{{ this.repairOrder.createTime }}</span>
                  <span
                    v-if="this.repairOrder != null"
                    class="hightColor"
                  >{{ this.repairOrder.createTime}}</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.responsibilityName }}</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.actualStartTime}}</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.actualEndTime }}</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.actualHour }}</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.recipientUserId_dictText }}</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.acceptTime }}</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.errUda3 }}</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.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-else
                    class="frozenRowClass"
@@ -221,47 +462,39 @@
              </a-col>
            </a-row>
          </div>
    </a-card>
    <a-card :style="getBackground()">
          <a-tabs
            type="card"
            defaultActiveKey="1"
          >
            <a-tab-pane
              tab='实际用料'
          <a-tab-pane
              tab='故障分析'
              key="1"
              class="hightColor"
            >
              <!-- <actual-material-edit-table
                :repairOrderId="repairOrder.id"
                :repairOrderStatus="repairOrder.status"
              ></actual-material-edit-table> -->
              <RepairOrderActualMaterialList :mainId="repairOrder"/>
              <RepairOrderFaultAnalysisList :repairOrder="repairOrder"/>
            </a-tab-pane>
            <a-tab-pane
              tab='实际工时'
              key="2"
              class="hightColor"
            >
              <!-- <actual-work-hours-edit-table
                :repairOrderId="repairOrder.id"
                :repairOrderStatus="repairOrder.status"
              ></actual-work-hours-edit-table> -->
              <RepairOrderActualWorkHoursList :mainId="repairOrder"/>
            </a-tab-pane>
            <a-tab-pane
              tab='故障分析'
              key="3"
              class="hightColor"
            >
              <!-- <fault-analysis-edit-table
              <RepairOrderActualWorkHoursList
                :repairOrderId="repairOrder.id"
                :repairOrderStatus="repairOrder.status"
              ></fault-analysis-edit-table> -->
              <RepairOrderFaultAnalysisList :mainId="repairOrder"/>
                :teamId="repairOrder.teamId"
              />
            </a-tab-pane>
            <a-tab-pane
              tab='实际用料'
              key="2"
              class="hightColor"
            >
              <RepairOrderActualMaterialList :mainId="repairOrder" />
            </a-tab-pane>
          </a-tabs>
        </a-card>
      </template>
    </a-card>
    <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
      <a-row :style="{textAlign:'right'}">
        <a-button
@@ -279,20 +512,15 @@
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { putAction } from '@/api/manage'
import Tooltip from 'ant-design-vue/es/tooltip'
import ActualMaterialEditTable from './moudles/ActualMaterialEditTable.vue'
import ActualWorkHoursEditTable from './moudles/ActualWorkHoursEditTable.vue'
import FaultAnalysisEditTable from './moudles/FaultAnalysisEditTable.vue'
import RepairOrderActualMaterialList from './moudles/RepairOrderActualMaterialReport.vue'
import RepairOrderActualWorkHoursList from './moudles/RepairOrderActualHoursReport.vue'
import RepairOrderActualMaterialList from './moudles/RepairOrderActualMaterialReport'
import RepairOrderActualWorkHoursList from './moudles/RepairOrderActualHoursReport'
import RepairOrderFaultAnalysisList from './moudles/RepairOrderFaultAnalysisReport.vue'
import { getAction } from '../../../../api/manage'
export default {
  name: 'RepairOrderExcuteDrawer',
  mixins: [JeecgListMixin],
  components: {
    Tooltip,
    ActualMaterialEditTable,
    ActualWorkHoursEditTable,
    FaultAnalysisEditTable,
    RepairOrderActualMaterialList,
    RepairOrderActualWorkHoursList,
    RepairOrderFaultAnalysisList
@@ -302,6 +530,14 @@
      type: Object,
      required: false,
      default: {}
    },
    repairOrderId: {
      type: String,
      default:'',
    },
    status:{
      type: String,
      default:'',
    }
  },
  data() {
@@ -325,14 +561,20 @@
      url: {
        orderStart: "eam/repairOrder/start",
        orderReport: "eam/repairOrder/report",
        orderRevoke: "eam/repairOrder/revoke"
        orderRevoke: "eam/repairOrder/revoke",
        reload:"/eam/repairOrder/list",
        handleSpare:"/eam/repairOrder/handleSpare",
        handlePart:"/eam/repairOrder/handlePart",
        handleSpareStop:"/eam/repairOrder/handleSpareStop",
        handlePartStop:"/eam/repairOrder/handlePartStop",
        getInfo:'/eam/repairOrderFaultAnalysis/list',
      },
    }
  },
  mounted() {
    this.$bus.$on('closeDrawer', (data) => {
      this.visible = false;
      this.handleCancel()
    })
  },
@@ -357,40 +599,206 @@
      this.visible = false;
      //this.repairOrder.id = "-1"
    },
    handleStart(record) {
      putAction(this.url.orderStart, this.repairOrder).then(res => {
        if (res.result) {
          this.$message.success('开工成功');
          this.repairOrder.status = '3'
          this.$emit('loadData');
        } else {
          this.$message.error('开工出现异常')
        }
    //开工
    handleStart() {
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '维修工单开工',
        content: '提示:开工后无法撤回,请谨慎操作!',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          putAction(that.url.orderStart, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('开工成功');
              that.repairOrder.status = '3'
              that.$emit('loadData');
              that.reload();
            } else {
              that.$message.error('开工出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    //报工
    handleReportPro(){
      let that = this;
      getAction(that.url.getInfo,{repairOrderId:this.repairOrder.id}).then(res=>{
                if(res.success){
                   if(res.result.records.length===0){
                      that.$message.warning("故障分析尚未填写,请填写后再报工")
                   }else if(res.result.records[0].repairOrderFaultAnalysisUda1===null||res.result.records[0].repairOrderFaultAnalysisUda1===undefined||res.result.records[0].repairOrderFaultAnalysisUda1===''){
                      that.$message.warning("故障现象尚未填写,请填写后再报工")
                   }else if(res.result.records[0].faultCause===null||res.result.records[0].faultCause===undefined||res.result.records[0].faultCause===''){
                      that.$message.warning("故障检查尚未填写,请填写后再报工")
                   }else if(res.result.records[0].maintenanceMeasures===null||res.result.records[0].maintenanceMeasures===undefined||res.result.records[0].maintenanceMeasures===''){
                      that.$message.warning("故障维修尚未填写,请填写后再报工")
                   }else if(res.result.records[0].suggestion===null||res.result.records[0].suggestion===undefined||res.result.records[0].suggestion===''){
                      that.$message.warning("故障预防尚未填写,请填写后再报工")
                   }else{
                      that.handleReport();
                   }
                }
      })
    },
    handleReport() {
      putAction(this.url.orderReport, this.repairOrder).then(res => {
        if (res.result) {
          this.$message.success('报工成功');
          this.repairOrder.status = '4'
          this.$emit('loadData');
        } else {
          this.$message.error('报工出现异常')
        }
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '维修工单报工',
        content: '提示:报工后维修完工,请谨慎操作!',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          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('报工出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            //
          })
        },
      })
    },
    //撤销
    handleRevoke() {
      putAction(this.url.orderRevoke, this.repairOrder).then(res => {
        if (res.result) {
          this.$message.success('撤销成功');
          this.repairOrder.status = '3'
          this.$emit('loadData');
        } else {
          this.$message.error('撤销出现异常')
        }
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '完工撤销',
        content: '提示:完工撤销后可继续报工操作!',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          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('撤销出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    handleSpare(){
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '等采购件',
        content: '提示:该操作不可撤销,确认开始等采购件?',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          putAction(that.url.handleSpare, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('操作成功');
              that.reload();
              that.$emit('loadData');
            } else {
              that.$message.error('操作出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    handleSpareStop(){
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '停止等采购件',
        content: '提示:该操作不可撤销,确认停止等采购件?',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          putAction(that.url.handleSpareStop, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('操作成功');
              that.reload();
              that.$emit('loadData');
            } else {
              that.$message.error('操作出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    handlePart(){
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '等采购件',
        content: '提示:该操作不可撤销,确认等采购件?',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          putAction(that.url.handlePart, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('操作成功');
              that.reload();
              that.$emit('loadData');
            } else {
              that.$message.error('操作出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    handlePartStop(){
      const that = this;
      that.confirmLoading = true;
      this.$confirm({
        title: '停止等采购件',
        content: '提示:该操作不可撤销,确认停止等采购件?',
        okText: '确认',
        cancelText: '取消',
        onOk() {
          putAction(that.url.handlePartStop, that.repairOrder).then(res => {
            if (res.result) {
              that.$message.success('操作成功');
              that.reload();
              that.$emit('loadData');
            } else {
              that.$message.error('操作出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    reload(){
      getAction(this.url.reload,{id:this.repairOrder.id}).then(res=>{
        if( res.result.records.length!==0){
          this.repairOrder = res.result.records[0];
        }
      })
    }
  },
}