zenglf
2023-09-18 92ff846fb659c62037a32b1d8c15eae9df9d9b54
src/views/eam/modules/repairorder/repairOrderExcuteDrawer.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,496 @@
<template>
  <a-drawer
    :title="title"
    :width="drawerWidth"
    :visible="visible"
    @close="handleCancel"
    :confirmLoading="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"
                :disabled="repairOrder.status!='2'"
                type="primary"
              >开工</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleReport"
                :disabled="repairOrder.status!='3'"
                type="primary"
              >报工</a-button>
              <a-button
                :style="{marginRight: '8px'}"
                @click="handleRevoke"
                :disabled="repairOrder.status!='4'"
                type="primary"
              >撤销</a-button>
            </a-row>
          </div>
          <div :style="{width: '100%',border: '1px solid #e9e9e9',padding: '10px 16px',background: '#fff',}">
            <a-row :gutter="24">
              <a-col :span="6">
                <a-form-item
                  :labelCol="labelCol"
                  :wrapperCol="wrapperCol"
                  label="状态"
                  class="hightColor"
                >
                  <span
                    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.num }}</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.teamId_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.equipmentNum }}</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"
                    class="hightColor"
                  >{{ this.repairOrder.equipmentName}}</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.equipmentModel }}</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.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>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
            <a-row
              hidden
              :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"
                    class="hightColor"
                  >{{ this.repairOrder.createBy}}</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.createTime}}</span>
                  <span
                    v-else
                    class="frozenRowClass"
                  >-</span>
                </a-form-item>
              </a-col>
            </a-row>
          </div>
          <a-tabs
            type="card"
            defaultActiveKey="1"
          >
            <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" />
            </a-tab-pane>
            <a-tab-pane
              tab='实际工时'
              key="2"
              class="hightColor"
            >
              <RepairOrderActualWorkHoursList
                :repairOrderId="repairOrder.id"
                :repairOrderStatus="repairOrder.status"
                :teamId="repairOrder.teamId"
              />
            </a-tab-pane>
            <a-tab-pane
              tab='故障分析'
              key="3"
              class="hightColor"
            >
              <!-- <fault-analysis-edit-table
                :repairOrderId="repairOrder.id"
                :repairOrderStatus="repairOrder.status"
              ></fault-analysis-edit-table> -->
              <RepairOrderFaultAnalysisList :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
          :style="{marginRight: '8px'}"
          @click="handleCancel"
        >
          å…³é—­
        </a-button>
      </a-row>
    </div>
  </a-drawer>
</template>
<script>
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 RepairOrderFaultAnalysisList from './moudles/RepairOrderFaultAnalysisReport.vue'
export default {
  name: 'RepairOrderExcuteDrawer',
  mixins: [JeecgListMixin],
  components: {
    Tooltip,
    ActualMaterialEditTable,
    ActualWorkHoursEditTable,
    FaultAnalysisEditTable,
    RepairOrderActualMaterialList,
    RepairOrderActualWorkHoursList,
    RepairOrderFaultAnalysisList
  },
  props: {
    repairOrder: {
      type: Object,
      required: false,
      default: {}
    }
  },
  data() {
    return {
      pageSize: 1,
      total: 10,
      title: "设备结构",
      visible: false,
      maskClosable: true,
      confirmLoading: false,
      drawerWidth: "100%",
      dataSource: [],
      labelCol: {
        xs: { span: 24 },
        sm: { span: 6 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 18 },
      },
      url: {
        orderStart: "eam/repairOrder/start",
        orderReport: "eam/repairOrder/report",
        orderRevoke: "eam/repairOrder/revoke"
      },
    }
  },
  mounted() {
    this.$bus.$on('closeDrawer', (data) => {
      this.handleCancel()
    })
  },
  methods: {
    modalFormOk() {
      this.getEquipmentTotal()
      //清空列表选中
      this.onClearSelected()
    },
    loadData() {
    },
    getBackground() {
      return "background-color:rgba(127, 127, 127,0.08)";
    },
    handleCancel() {
      this.$emit('ok');
      this.alterFlag = new Date();
      this.close()
    },
    close() {
      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');
            } else {
              that.$message.error('开工出现异常')
            }
          }).finally(() => {
            that.confirmLoading = false;
            // that.close();
          })
        },
      })
    },
    // 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('报工出现异常')
    //     }
    //   })
    // },
    //报工
    handleReport() {
      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.$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('撤销出现异常')
    //     }
    //   })
    // },
    //撤销
    handleRevoke() {
      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();
          })
        },
      })
    },
  },
}
</script>
<style scoped>
@import '~@assets/less/common.less';
.hightColor {
  height: 10%;
  font-weight: bold;
  font-size: 20px;
  color: #1b1e1e;
}
.frozenRowClass {
  color: #c9c9c9;
}
.fontweight {
  font-weight: bold;
}
.hight {
  color: #f5222d;
}
</style>