Ver Fonte

feat: 添加工单验收功能

yusheng há 3 meses atrás
pai
commit
7d097b79f8

+ 10 - 0
src/api/maintenance/repair.js

@@ -61,6 +61,16 @@ export async function reportWorkOrder(data) {
   return Promise.reject(new Error(res.data.message));
 }
 
+// 报工
+export async function acceptance(data) {
+  const res = await request.post('/eam/workorder/acceptance', data);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+
 // // 保存
 // export async function save (data) {
 //   const res = await request.post('/eam/repairrequest/save', data);

+ 48 - 26
src/views/maintenance/repair/components/RepairDetailsDialog.vue

@@ -346,7 +346,7 @@
         />
       </el-tab-pane>
     </el-tabs>
-    <div class="btnbox" v-if="row.isshow">
+    <!-- <div class="btnbox" v-if="row.isshow">
       <el-button class="confirm-btn" type="danger" plain @click="reject"
         >驳回</el-button
       >
@@ -359,8 +359,8 @@
         >验收</el-button
       >
       <el-button class="cancel-btn" @click="handleClose">关闭</el-button>
-    </div>
-    <div class="textbox" v-if="showtext">
+    </div> -->
+    <!-- <div class="textbox" v-if="showtext">
       <el-input
         type="textarea"
         placeholder="请输入驳回原因"
@@ -380,6 +380,34 @@
           >提交</el-button
         >
       </div>
+    </div> -->
+   <div class="textbox" v-if="row.isshow">
+      <el-input
+        type="textarea"
+        placeholder="请输入理由"
+        v-model="cause"
+        maxlength="30"
+        rows="5"
+        show-word-limit
+      >
+      </el-input>
+      <div class="textbtnbox">
+        <el-button
+          class="confirm-btn"
+          type="danger"
+          plain
+          @click="surereject(5)"
+          >驳回</el-button
+        >
+        <el-button
+          class="confirm-btn"
+          type="success"
+          plain
+          @click="surereject(4)"
+          >验收</el-button
+        >
+        <el-button size="small" plain @click="cancelreject">取消</el-button>
+      </div>
     </div>
     <div slot="footer" v-if="!row.isshow">
       <el-button size="small" @click="handleClose">关闭</el-button>
@@ -393,7 +421,7 @@
   import WorkOrderTab from './WorkOrderTab.vue';
   import { getAssetInfo } from '@/api/ledgerAssets';
   import { getRepairById } from '@/api/maintenance/repair_report';
-  import { getWorkOrderDetail } from '@/api/maintenance/repair';
+  import { getWorkOrderDetail,acceptance } from '@/api/maintenance/repair';
   import dictMixins from '@/mixins/dictMixins';
   import editd from '@/views/sparePartsApply/components/editd';
   import Detail from '@/views/processInstance/detail.vue';
@@ -566,28 +594,22 @@
         this.showtext = false;
         this.cause = '';
       },
-      surereject() {
-        if (!this.cause) {
-          this.$message.info('请填写驳回原因!');
-        } else {
-          this.errorLoading = true;
-          let params = {
-            id: this.row.id,
-            checked: false,
-            myHandleId: this.row.dbid,
-            handleType: 1,
-            type: 1,
-            cause: this.cause
-          };
-          sendAudit(params).then((res) => {
-            if (res.success) {
-              this.$message.success('驳回成功!');
-              this.$emit('refesh');
-              this.errorLoading = false;
-              this.equipmentdialog = false;
-            }
-          });
-        }
+      surereject(orderStatus) {
+        this.btnLoading = true;
+        let params = {
+          orderStatus,
+          remark: this.cause,
+          workOrderId: this.row.id
+        };
+        acceptance(params).then((res) => {
+          if (res.code == 0) {
+            this.$message.success(
+              orderStatus == 4 ? '审核通过!' : '驳回成功!'
+            );
+            this.$emit('refresh');
+            this.equipmentdialog = false;
+          }
+        });
       }
     },
     watch: {

+ 508 - 495
src/views/maintenance/repair/workOrder/index.vue

@@ -1,495 +1,508 @@
-<template>
-  <div class="ele-body">
-    <el-card shadow="never" v-loading="loading">
-      <workorder-search @search="reload"> </workorder-search>
-      <!-- 数据表格 -->
-      <ele-pro-table
-        ref="table"
:pageSizes="tablePageSizes"
-        :columns="columns"
-        :datasource="datasource"
-        cache-key="systemRoleTable"
-      >
-        <!-- 表头工具栏 -->
-        <!-- <template v-slot:toolbar>
-          <el-button
-            size="small"
-            type="primary"
-            class="ele-btn-icon"
-            @click="goDetail({ id: 1 })"
-          >
-            详情
-          </el-button>
-        </template> -->
-        <template v-slot:code="{ row }"
-          ><el-link type="primary" :underline="false" @click="goDetail(row)">
-            {{ row.code }}
-          </el-link></template
-        >
-        <!-- 操作列 -->
-        <template v-slot:action="{ row }">
-          <el-link
-            v-if="row.orderStatus == 0"
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="handleNotice(row)"
-          >
-            接收
-          </el-link>
-          <el-link
-            v-if="row.orderStatus !== 3 && row.orderStatus !== 4"
-            type="primary"
-            :underline="false"
-            icon="el-icon-truck"
-            @click="addSpareItems(row)"
-          >
-            申请备品备件
-          </el-link>
-          <el-link
-            v-if="
-              row.orderStatus !== 3 &&
-              row.orderStatus !== 4 &&
-              row.orderStatus != 0
-            "
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="toReport(row)"
-          >
-            报工
-          </el-link>
-          <el-link
-            v-if="row.orderStatus !== 3 && row.orderStatus !== 4"
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="toRedeploy(row)"
-          >
-            转派
-          </el-link>
-          <el-link
-            v-if="row.orderStatus == 3"
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="downLoadOrder(row)"
-          >
-            下载
-          </el-link>
-          <el-link
-            type="primary"
-            :underline="false"
-            icon="el-icon-edit"
-            @click="processSubmit(row)"
-            v-if="!row.flowableTaskId"
-          >
-            上报
-          </el-link>
-        </template>
-      </ele-pro-table>
-    </el-card>
-    <!-- <el-dialog :visible.sync="visible" width="20vw">
-      <el-form label-width="100px">
-     
-      ></el-form>
-
-      <div slot="footer">
-        <el-button type="primary" @click="spareItems">确定</el-button>
-        <el-button @click="visible = false">关闭</el-button>
-      </div>
-    </el-dialog> -->
-    <RepairDetailsDialog ref="detailsDialogRef" />
-    <!-- 报工弹窗 -->
-    <RepairReportingWork ref="repairReportingWorkRef" @refresh="reload" />
-    <!-- 转派弹窗 -->
-    <redeployOther ref="redeployOtherRef" @refresh="reload" />
-    <!-- 备件弹窗 -->
-    <edit @refresh="reload" ref="edit" />
-    <!-- 非完成报工接收  注意事项-->
-    <Notice ref="noticeShow" :repairInfo="repairInfo" @agree="agree" />
-    <process-submit-dialog
-      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
-      v-if="processSubmitDialogFlag"
-      ref="processSubmitDialogRef"
-      @reload="processSubmitSuccess"
-    ></process-submit-dialog>
-  </div>
-</template>
-
-<script>
-  import { workorderStatus, resultStatus } from '@/utils/dict/operationManage';
-  import WorkorderSearch from './components/workorder-search.vue';
-  import AddSpareDialog from '@/components/addSpareDialog';
-  import Notice from '../components/notice.vue';
-  import edit from '@/views/sparePartsApply/components/edit';
-  import RepairReportingWork from '../components/repairReportingWork.vue';
-  import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
-  import redeployOther from '@/views/maintenance/components/redeployOther2.vue';
-  import processSubmitDialog from '@/components/processSubmitDialog/processSubmitDialog.vue';
-
-  import {
-    getWorkOrderList,
-    applySpareParts,
-    save,
-    getWorkOrderDetail,
-    startExecuting,
-    reportWorkOrder
-  } from '@/api/maintenance/repair';
-  import outin from '@/api/maintenance/outin';
-  import { getToken } from '@/utils/token-util';
-  import { download } from '@/utils/file';
-  import { API_BASE_URL } from '@/config/setting';
-
-  import axios from 'axios';
-  export default {
-    components: {
-      WorkorderSearch,
-      RepairDetailsDialog,
-      redeployOther,
-      AddSpareDialog,
-      RepairReportingWork,
-      edit,
-      Notice,
-      processSubmitDialog
-    },
-    data() {
-      return {
-        workorderStatus,
-        processSubmitDialogFlag: false,
-        resultStatus,
-        currentRow: {},
-        warehousingMaterialList: [],
-        batchDetailsVOList: [],
-        materialCodeReqList: [],
-        selectionList: [],
-        wlParams: {},
-        visible: false,
-        materialObj: {},
-        // 表格列配置
-        columns: [
-          {
-            columnKey: 'index',
-            label: '序号',
-            type: 'index',
-            width: 55,
-            align: 'center',
-            showOverflowTooltip: true,
-            fixed: 'left'
-          },
-          {
-            prop: 'code',
-            slot: 'code',
-            label: '工单编号',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 150
-          },
-          {
-            prop: 'planCode',
-            // label: '关联单号',
-            label: '计划单号',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'planName',
-            label: '维修名称',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'substanceDetailVO.name',
-            label: '设备名称',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'substanceDetailVO.fixCode',
-            label: '固资编码',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'substanceDetailVO.codeNumber',
-            label: '设备编号',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'executeUserName',
-            label: '执行人',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'assistsName',
-            label: '辅助人',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-
-          {
-            prop: 'acceptTime',
-            label: '开始时间',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'finishTime',
-            label: '结束时间',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            prop: 'planFinishTime',
-            label: '计划完成时间',
-            align: 'center',
-            showOverflowTooltip: true,
-            minWidth: 110
-          },
-          {
-            columnKey: 'orderHour',
-            label: '实际工时(分钟)',
-            align: 'center',
-            resizable: false,
-            showOverflowTooltip: true,
-            minWidth: 120,
-            formatter: (row) => {
-              if (row.finishTime && row.acceptTime) {
-                return parseInt(
-                  (new Date(row.finishTime).getTime() -
-                    new Date(row.acceptTime).getTime()) /
-                    60000
-                );
-              }
-            }
-          },
-          {
-            prop: 'orderStatus',
-            label: '状态',
-            align: 'center',
-            showOverflowTooltip: true,
-            formatter: (row) => {
-              return workorderStatus.filter(
-                (item) => item.value == row.orderStatus
-              )[0].label;
-            }
-          },
-          {
-            prop: 'acceptanceStatus',
-            label: '执行结果',
-            align: 'center',
-            showOverflowTooltip: true,
-            formatter: (row) => {
-              return row.acceptanceStatus
-                ? resultStatus.filter(
-                    (item) => item.code == row.acceptanceStatus
-                  )[0].label
-                : '';
-            }
-          },
-          {
-            columnKey: 'action',
-            fixed: 'right',
-            label: '操作',
-            width: 300,
-            align: 'center',
-            resizable: false,
-            slot: 'action',
-            showOverflowTooltip: true
-          }
-        ],
-        // 加载状态
-        loading: false,
-        pageType: 'add',
-        dialogTitle: '',
-        isBindPlan: false,
-        warehouseList: [],
-        warehouseId: '',
-        repairInfo: {},
-        id: ''
-      };
-    },
-    created() {},
-    methods: {
-     async processSubmitSuccess(data) {
-       await reportWorkOrder({
-          workOrderId: data.businessId,
-          flowableTaskId: data.id
-        });
-        this.reload();
-      },
-      downLoadOrder(row) {
-        let params = {
-          id: row.id
-        };
-        // downloadAsset(params, '设备台账导出数据');
-        axios({
-          url: `${API_BASE_URL}/eam/workorder/excel?id=${row.id}`,
-          method: 'get',
-          responseType: 'blob',
-          headers: {
-            Authorization: getToken()
-          }
-        }).then((res) => {
-          download(res.data, '维修工单');
-        });
-      },
-      async handleNewSave() {
-        let { user } = JSON.parse(sessionStorage.getItem('vuex-eam'));
-        console.log(user);
-        let userInfo = user.info;
-        let obj = {
-          fromUser: userInfo.userId,
-          bizType: '4', // 领用出库
-          extInfo: {
-            assetType: 6,
-            verifyDeptCode: userInfo.deptId[0],
-            verifyDeptName: userInfo.deptName
-          },
-          type: 2,
-          fromType: 2
-        };
-        obj = { ...obj, ...this.wlParams };
-        if (this.dimension == 4) {
-          obj.num = this.materialObj.wlList.length;
-        } else {
-          obj.num = this.materialCodeReqList.length;
-        }
-        obj.storageSource = 1;
-        try {
-          const res = await outin.saveNew(obj);
-          if (res.code == 0) {
-            let arr = obj.realTimeInventoryNewPOList.map((item) => {
-              return {
-                sparePartsId: item.id,
-                sparePartsList: JSON.stringify({
-                  ...item,
-                  inventoryDetailsNewPOList: [],
-                  inventoryDetailsVOList: [],
-                  outInIds: res.data
-                })
-              };
-            });
-            applySpareParts({
-              workOrderId: this.currentRow.id,
-              infoList: arr
-            }).then((res) => {
-              this.$message.success('申请成功!');
-            });
-          }
-        } catch (error) {
-          console.log(error);
-        }
-      },
-      detailData(data) {
-        applySpareParts({
-          workOrderId: this.currentRow.id,
-          listId: data.map((item) => item.id),
-          listNumber: data.map((item) => item.measureQuantity)
-        }).then((res) => {
-          this.$message.success('申请成功!');
-        });
-      },
-      // 添加备品备件
-      addSpareItems(row) {
-        let data = JSON.parse(JSON.stringify(row));
-        console.log(data, 'data1');
-        data['deviceList'] = [data.substanceDetailVO];
-        this.$refs.edit.open(data, 'add');
-        console.log(data, 'data2');
-      },
-
-      /* 表格数据源 */
-      datasource({ page, limit, where, order }) {
-        return getWorkOrderList({
-          pageNum: page,
-          size: limit,
-          ...where,
-          type: 3
-        });
-      },
-      async changeEnable(row) {
-        const res = await putRoles(row);
-        if (res.code == 0) {
-          this.$message({
-            type: 'success',
-            message: '修改成功',
-            customClass: 'ele-message-border'
-          });
-          this.reload();
-        }
-      },
-      /* 刷新表格 */
-      reload(where) {
-        this.$refs.table.reload({ page: 1, where });
-      },
-
-      goDetail(row) {
-        row.title = '工单详情';
-        row.tabLabel = '工单信息';
-        this.$refs.detailsDialogRef.init(row);
-      },
-
-      // 转派
-      toRedeploy(row) {
-        this.$refs.redeployOtherRef.open(row, 'transfer');
-      },
-      // 报工
-      toReport(row) {
-        this.$refs.repairReportingWorkRef.open(row, true);
-      },
-      async handleNotice(row) {
-        this.id = row.id;
-        const res = await getWorkOrderDetail(row.code);
-        console.log(res, 'resresresresres');
-        this.repairInfo = res.repairRequestResponse;
-        this.$refs.noticeShow.open(row);
-      },
-      agree() {
-        this.$refs.noticeShow.close();
-        this.handleExecute();
-      },
-      processSubmit(row) {
-        this.processSubmitDialogFlag = true;
-        this.$nextTick(() => {
-          let params = {
-            businessId: row.id,
-            businessKey: 'equipment_repair',
-            formCreateUserId: row.createUserId,
-            variables: {
-              businessCode: row.code,
-              businessName: row.planName,
-              businessType: '上报'
-            }
-          };
-          this.$refs.processSubmitDialogRef.init(params);
-        });
-      },
-      // 执行工单
-      handleExecute() {
-        startExecuting({
-          id: this.id
-        }).then(() => {
-          uni.showToast({
-            icon: 'success',
-            title: '操作成功!',
-            duration: 2000
-          });
-        });
-        this.reload();
-      }
-    }
-  };
-</script>
-
-<style lang="scss" scoped></style>
+<template>
+  <div class="ele-body">
+    <el-card shadow="never" v-loading="loading">
+      <workorder-search @search="reload"> </workorder-search>
+      <!-- 数据表格 -->
+      <ele-pro-table
+        ref="table"
+        :pageSizes="tablePageSizes"
+        :columns="columns"
+        :datasource="datasource"
+        cache-key="systemRoleTable"
+      >
+        <!-- 表头工具栏 -->
+        <!-- <template v-slot:toolbar>
+          <el-button
+            size="small"
+            type="primary"
+            class="ele-btn-icon"
+            @click="goDetail({ id: 1 })"
+          >
+            详情
+          </el-button>
+        </template> -->
+        <template v-slot:code="{ row }"
+          ><el-link type="primary" :underline="false" @click="goDetail(row)">
+            {{ row.code }}
+          </el-link></template
+        >
+        <!-- 操作列 -->
+        <template v-slot:action="{ row }">
+          <el-link
+            v-if="row.orderStatus == 0"
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="handleNotice(row)"
+          >
+            接收
+          </el-link>
+          <el-link
+            v-if="row.orderStatus == 3 && row.requestUserId ==  $store.state.user.info.userId"
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="goDetail(row,true)"
+          >
+            验收
+          </el-link>
+          <el-link
+            v-if="row.orderStatus !== 3 && row.orderStatus !== 4"
+            type="primary"
+            :underline="false"
+            icon="el-icon-truck"
+            @click="addSpareItems(row)"
+          >
+            申请备品备件
+          </el-link>
+          <el-link
+            v-if="
+              row.orderStatus !== 3 &&
+              row.orderStatus !== 4 &&
+              row.orderStatus != 0
+            "
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="toReport(row)"
+          >
+            报工
+          </el-link>
+          <el-link
+            v-if="row.orderStatus !== 3 && row.orderStatus !== 4"
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="toRedeploy(row)"
+          >
+            转派
+          </el-link>
+          <el-link
+            v-if="row.orderStatus == 3"
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="downLoadOrder(row)"
+          >
+            下载
+          </el-link>
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="processSubmit(row)"
+            v-if="
+              !row.flowableTaskId && $hasPermission('eam:repairrequest:report')
+            "
+          >
+            上报
+          </el-link>
+        </template>
+      </ele-pro-table>
+    </el-card>
+    <!-- <el-dialog :visible.sync="visible" width="20vw">
+      <el-form label-width="100px">
+     
+      ></el-form>
+
+      <div slot="footer">
+        <el-button type="primary" @click="spareItems">确定</el-button>
+        <el-button @click="visible = false">关闭</el-button>
+      </div>
+    </el-dialog> -->
+    <RepairDetailsDialog ref="detailsDialogRef" />
+    <!-- 报工弹窗 -->
+    <RepairReportingWork ref="repairReportingWorkRef" @refresh="reload" />
+    <!-- 转派弹窗 -->
+    <redeployOther ref="redeployOtherRef" @refresh="reload" />
+    <!-- 备件弹窗 -->
+    <edit @refresh="reload" ref="edit" />
+    <!-- 非完成报工接收  注意事项-->
+    <Notice ref="noticeShow" :repairInfo="repairInfo" @agree="agree" />
+    <process-submit-dialog
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="processSubmitSuccess"
+    ></process-submit-dialog>
+  </div>
+</template>
+
+<script>
+  import { workorderStatus, resultStatus } from '@/utils/dict/operationManage';
+  import WorkorderSearch from './components/workorder-search.vue';
+  import AddSpareDialog from '@/components/addSpareDialog';
+  import Notice from '../components/notice.vue';
+  import edit from '@/views/sparePartsApply/components/edit';
+  import RepairReportingWork from '../components/repairReportingWork.vue';
+  import RepairDetailsDialog from '../components/RepairDetailsDialog.vue';
+  import redeployOther from '@/views/maintenance/components/redeployOther2.vue';
+  import processSubmitDialog from '@/components/processSubmitDialog/processSubmitDialog.vue';
+
+  import {
+    getWorkOrderList,
+    applySpareParts,
+    save,
+    getWorkOrderDetail,
+    startExecuting,
+    reportWorkOrder
+  } from '@/api/maintenance/repair';
+  import outin from '@/api/maintenance/outin';
+  import { getToken } from '@/utils/token-util';
+  import { download } from '@/utils/file';
+  import { API_BASE_URL } from '@/config/setting';
+
+  import axios from 'axios';
+  export default {
+    components: {
+      WorkorderSearch,
+      RepairDetailsDialog,
+      redeployOther,
+      AddSpareDialog,
+      RepairReportingWork,
+      edit,
+      Notice,
+      processSubmitDialog
+    },
+    data() {
+      return {
+        workorderStatus,
+        processSubmitDialogFlag: false,
+        resultStatus,
+        currentRow: {},
+        warehousingMaterialList: [],
+        batchDetailsVOList: [],
+        materialCodeReqList: [],
+        selectionList: [],
+        wlParams: {},
+        visible: false,
+        materialObj: {},
+        // 表格列配置
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            slot: 'code',
+            label: '工单编号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 150
+          },
+          {
+            prop: 'planCode',
+            // label: '关联单号',
+            label: '计划单号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'planName',
+            label: '维修名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'substanceDetailVO.name',
+            label: '设备名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'substanceDetailVO.fixCode',
+            label: '固资编码',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'substanceDetailVO.codeNumber',
+            label: '设备编号',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'executeUserName',
+            label: '执行人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'assistsName',
+            label: '辅助人',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+
+          {
+            prop: 'acceptTime',
+            label: '开始时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'finishTime',
+            label: '结束时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            prop: 'planFinishTime',
+            label: '计划完成时间',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 110
+          },
+          {
+            columnKey: 'orderHour',
+            label: '实际工时(分钟)',
+            align: 'center',
+            resizable: false,
+            showOverflowTooltip: true,
+            minWidth: 120,
+            formatter: (row) => {
+              if (row.finishTime && row.acceptTime) {
+                return parseInt(
+                  (new Date(row.finishTime).getTime() -
+                    new Date(row.acceptTime).getTime()) /
+                    60000
+                );
+              }
+            }
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row) => {
+              return workorderStatus.filter(
+                (item) => item.value == row.orderStatus
+              )[0].label;
+            }
+          },
+          {
+            prop: 'acceptanceStatus',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row) => {
+              return row.acceptanceStatus
+                ? resultStatus.filter(
+                    (item) => item.code == row.acceptanceStatus
+                  )[0].label
+                : '';
+            }
+          },
+          {
+            columnKey: 'action',
+            fixed: 'right',
+            label: '操作',
+            width: 300,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true
+          }
+        ],
+        // 加载状态
+        loading: false,
+        pageType: 'add',
+        dialogTitle: '',
+        isBindPlan: false,
+        warehouseList: [],
+        warehouseId: '',
+        repairInfo: {},
+        id: ''
+      };
+    },
+    created() {},
+    methods: {
+      async processSubmitSuccess(data) {
+        await reportWorkOrder({
+          workOrderId: data.businessId,
+          flowableTaskId: data.id
+        });
+        this.reload();
+      },
+      downLoadOrder(row) {
+        let params = {
+          id: row.id
+        };
+        // downloadAsset(params, '设备台账导出数据');
+        axios({
+          url: `${API_BASE_URL}/eam/workorder/excel?id=${row.id}`,
+          method: 'get',
+          responseType: 'blob',
+          headers: {
+            Authorization: getToken()
+          }
+        }).then((res) => {
+          download(res.data, '维修工单');
+        });
+      },
+      async handleNewSave() {
+        let { user } = JSON.parse(sessionStorage.getItem('vuex-eam'));
+        console.log(user);
+        let userInfo = user.info;
+        let obj = {
+          fromUser: userInfo.userId,
+          bizType: '4', // 领用出库
+          extInfo: {
+            assetType: 6,
+            verifyDeptCode: userInfo.deptId[0],
+            verifyDeptName: userInfo.deptName
+          },
+          type: 2,
+          fromType: 2
+        };
+        obj = { ...obj, ...this.wlParams };
+        if (this.dimension == 4) {
+          obj.num = this.materialObj.wlList.length;
+        } else {
+          obj.num = this.materialCodeReqList.length;
+        }
+        obj.storageSource = 1;
+        try {
+          const res = await outin.saveNew(obj);
+          if (res.code == 0) {
+            let arr = obj.realTimeInventoryNewPOList.map((item) => {
+              return {
+                sparePartsId: item.id,
+                sparePartsList: JSON.stringify({
+                  ...item,
+                  inventoryDetailsNewPOList: [],
+                  inventoryDetailsVOList: [],
+                  outInIds: res.data
+                })
+              };
+            });
+            applySpareParts({
+              workOrderId: this.currentRow.id,
+              infoList: arr
+            }).then((res) => {
+              this.$message.success('申请成功!');
+            });
+          }
+        } catch (error) {
+          console.log(error);
+        }
+      },
+      detailData(data) {
+        applySpareParts({
+          workOrderId: this.currentRow.id,
+          listId: data.map((item) => item.id),
+          listNumber: data.map((item) => item.measureQuantity)
+        }).then((res) => {
+          this.$message.success('申请成功!');
+        });
+      },
+      // 添加备品备件
+      addSpareItems(row) {
+        let data = JSON.parse(JSON.stringify(row));
+        console.log(data, 'data1');
+        data['deviceList'] = [data.substanceDetailVO];
+        this.$refs.edit.open(data, 'add');
+        console.log(data, 'data2');
+      },
+
+      /* 表格数据源 */
+      datasource({ page, limit, where, order }) {
+        return getWorkOrderList({
+          pageNum: page,
+          size: limit,
+          ...where,
+          type: 3
+        });
+      },
+      async changeEnable(row) {
+        const res = await putRoles(row);
+        if (res.code == 0) {
+          this.$message({
+            type: 'success',
+            message: '修改成功',
+            customClass: 'ele-message-border'
+          });
+          this.reload();
+        }
+      },
+      /* 刷新表格 */
+      reload(where) {
+        this.$refs.table.reload({ page: 1, where });
+      },
+
+      goDetail(row,isshow) {
+        row.isshow=isshow
+        row.title = '工单详情';
+        row.tabLabel = '工单信息';
+        this.$refs.detailsDialogRef.init(row);
+      },
+
+      // 转派
+      toRedeploy(row) {
+        this.$refs.redeployOtherRef.open(row, 'transfer');
+      },
+      // 报工
+      toReport(row) {
+        this.$refs.repairReportingWorkRef.open(row, true);
+      },
+      async handleNotice(row) {
+        this.id = row.id;
+        const res = await getWorkOrderDetail(row.code);
+        console.log(res, 'resresresresres');
+        this.repairInfo = res.repairRequestResponse;
+        this.$refs.noticeShow.open(row);
+      },
+      agree() {
+        this.$refs.noticeShow.close();
+        this.handleExecute();
+      },
+      processSubmit(row) {
+        this.processSubmitDialogFlag = true;
+        this.$nextTick(() => {
+          let params = {
+            businessId: row.id,
+            businessKey: 'equipment_repair',
+            formCreateUserId: row.createUserId,
+            variables: {
+              businessCode: row.code,
+              businessName: row.planName,
+              businessType: '上报'
+            }
+          };
+          this.$refs.processSubmitDialogRef.init(params);
+        });
+      },
+      // 执行工单
+      handleExecute() {
+        startExecuting({
+          id: this.id
+        }).then(() => {
+          uni.showToast({
+            icon: 'success',
+            title: '操作成功!',
+            duration: 2000
+          });
+        });
+        this.reload();
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped></style>