Prechádzať zdrojové kódy

维修工单 添加上报功能及故障类别、影响度字段

yusheng 7 mesiacov pred
rodič
commit
87e25e9da3

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

@@ -52,6 +52,15 @@ export async function startExecuting(params) {
   }
   return Promise.reject(new Error(data.message));
 }
+ // 上报
+export async function reportWorkOrder(data) {
+  const res = await request.post(`/eam/workorder/reportWorkOrder`, data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
 
 // // 保存
 // export async function save (data) {

+ 7 - 4
src/components/processSubmitDialog/processSubmitDialog.vue

@@ -151,13 +151,13 @@
       <!--        >上一步-->
       <!--      </el-button>-->
       <el-button type="primary" size="small" @click="submit">提交</el-button>
-      <el-button
+      <!-- <el-button
         v-if="isNotNeedProcess"
         type="primary"
         size="small"
         @click="submit1"
         >提交并发布</el-button
-      >
+      > -->
       <el-button size="small" @click="cancel">关闭</el-button>
     </div>
   </ele-modal>
@@ -436,9 +436,12 @@
         });
       },
       async submit() {
-        await processInstanceCreateAPI(this.form);
+        const data = await processInstanceCreateAPI(this.form);
         this.$message('提交审核成功');
-        this.$emit('reload');
+        this.$emit('reload', {
+          businessId: this.form.businessId,
+          id: data
+        });
         this.cancel();
       },
       async submit1() {

+ 19 - 1
src/views/maintenance/repair/components/RepairDetailsDialog.vue

@@ -170,6 +170,12 @@
       <el-tab-pane label="备品备件申请单" name="sparePartsApply">
         <editd :id="workOrderInfo.id" v-if="workOrderInfo" />
       </el-tab-pane>
+      <el-tab-pane label="上报流程" name="flowableTaskId"       v-if="workOrderInfo.flowableTaskId">
+        <Detail
+          v-if="workOrderInfo.flowableTaskId&&detailsTabsActiveName==='flowableTaskId'"
+          :id="workOrderInfo.flowableTaskId"
+        ></Detail>
+      </el-tab-pane>
     </el-tabs>
 
     <el-tabs v-model="detailsTabsActiveName" type="border-card" v-else>
@@ -216,6 +222,16 @@
             <span>{{ infoData ? infoData.expectedTime : '' }}</span>
           </el-col>
         </el-row>
+        <el-row class="repair_row">
+          <el-col :span="12" class="repair_column">
+            <span>故障类别:</span>
+            <span>{{ infoData ? infoData.faultType : '' }}</span>
+          </el-col>
+          <el-col :span="12" class="repair_column">
+            <span>影响度:</span>
+            <span>{{ infoData ? infoData.impact : '' }}</span>
+          </el-col>
+        </el-row>
         <el-row class="repair_row">
           <el-col :span="24" class="repair_column">
             <span>故障描述:</span>
@@ -380,10 +396,12 @@
   import { getWorkOrderDetail } from '@/api/maintenance/repair';
   import dictMixins from '@/mixins/dictMixins';
   import editd from '@/views/sparePartsApply/components/editd';
+  import Detail from '@/views/processInstance/detail.vue';
+
   export default {
     mixins: [dictMixins],
     props: {},
-    components: { RepairNotesTab, WorkOrderTab, editd, modalTitle },
+    components: { RepairNotesTab, WorkOrderTab, editd, modalTitle, Detail },
     data() {
       return {
         fullscreen: false,

+ 17 - 334
src/views/maintenance/repair/components/WorkOrderTab.vue

@@ -70,17 +70,16 @@
         <div slot="description" class="create_workerOrder_desc">
           <div> 报修人:{{ logs[item.id].requestUserName }} </div>
           <div> 故障描述:{{ logs[item.id].remark }} </div>
-          <div class="work_report_imgs" >
-          <el-image
-            v-for="(item, index) in logs[item.id]?.content?.images"
-            :key="index"
-            style="width: 100px; height: 100px; margin-right: 5px"
-            :src="item"
-            :preview-src-list="[item]"
-          />
-        </div>
+          <div class="work_report_imgs">
+            <el-image
+              v-for="(item, index) in logs[item.id]?.content?.images"
+              :key="index"
+              style="width: 100px; height: 100px; margin-right: 5px"
+              :src="item"
+              :preview-src-list="[item]"
+            />
+          </div>
         </div>
-   
       </el-step>
       <el-step v-if="item.type == 'SPARE_PARTS_APPLY'">
         <span
@@ -170,7 +169,7 @@
               type="view"
             ></fileMain>
           </div>
-          <div class="work_report_imgs" >
+          <div class="work_report_imgs">
             <el-image
               v-for="(item, index) in logs[item.id].content?.images"
               :key="index"
@@ -179,320 +178,26 @@
               :preview-src-list="logs[item.id].content?.images"
             />
           </div>
-          <!-- <div>
-            <div>备品备件使用情况:</div>
-            <el-table :data="useData" border>
-              <el-table-column
-                label="备件编码"
-                prop="assetCode"
-                align="center"
-              />
-              <el-table-column
-                label="备件名称"
-                align="center"
-                prop="informationName"
-              />
-              <el-table-column label="所属分类" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>备品备件</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="型号" align="center" prop="modelType" />
-              <el-table-column label="使用数量" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>1</div>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div> -->
-        </div>
-      </el-step>
-    </el-steps>
-    <!-- <el-steps
-      direction="vertical"
-      :active="0"
-      :space="100"
-      v-for="(item, index) in repairInfoLogList"
-      :key="index"
-    >
-      <el-step v-if="item.type.code == 'ACCEPTANCE_CHEK'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'ACCEPTANCE_CHEK'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>验收</span>
-          <span>{{ logs['ACCEPTANCE_CHEK'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span>验收人:{{ logs['ACCEPTANCE_CHEK'].content.userName }}</span>
-          <span
-            >验收结果:{{
-              logs['ACCEPTANCE_CHEK'].content.acceptanceResult ? '通过' : '驳回'
-            }}</span
-          >
-          <span
-            >验收说明:{{
-              logs['ACCEPTANCE_CHEK'].content.acceptanceInstructions
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'WORK_REPORT'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'WORK_REPORT'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>报工</span>
-          <span>{{ logs['WORK_REPORT'].createTime }}</span>
-        </div>
-        <div slot="description" class="work_report_desc">
-          <div>
-            处理说明:{{ logs['WORK_REPORT'].content.repairReportExplain }}
-          </div>
-          <div class="work_report_imgs" style="width: 50px; height: 50px">
-            <img
-              v-for="(item, index) in logs['WORK_REPORT'].content
-                .workOrderImgList"
-              :key="index"
-              :src="item"
-              alt=""
-              style="width: 40%"
-            />
-          </div>
-          <div>
-            <div>备品备件使用情况:</div>
-            <el-table :data="useData" border>
-              <el-table-column
-                label="备件编码"
-                prop="assetCode"
-                align="center"
-              />
-              <el-table-column
-                label="备件名称"
-                align="center"
-                prop="informationName"
-              />
-              <el-table-column label="所属分类" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>备品备件</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="型号" align="center" prop="modelType" />
-              <el-table-column label="使用数量" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>1</div>
-                </template>
-              </el-table-column>
-            </el-table>
-          </div>
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'STOCK_OUT_APPROVAL'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'STOCK_OUT_APPROVAL'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件出库审核</span>
-          <span>{{ logs['STOCK_OUT_APPROVAL'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span
-            >出库单号:{{
-              logs['STOCK_OUT_APPROVAL'].content.stockOutCode
-            }}</span
-          >
-          <span
-            >审核人:{{
-              logs['STOCK_OUT_APPROVAL'].content.approvalUserName
-            }}</span
-          >
-          <span
-            >审核结果:{{
-              logs['SPARE_PARTS_APPROVAL'].content.approvalResult
-                ? '通过'
-                : '驳回'
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'STOCK_OUT_APPLY'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'STOCK_OUT_APPLY'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件出库申请</span>
-          <span>{{ logs['STOCK_OUT_APPLY'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span
-            >出库单号:{{ logs['STOCK_OUT_APPLY'].content.stockOutCode }}</span
-          >
-          <span
-            >申请人:{{ logs['STOCK_OUT_APPLY'].content.applyUserName }}</span
-          >
-          <span
-            >审核人:{{
-              logs['STOCK_OUT_APPLY'].content.approvalUserName
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'SPARE_PARTS_APPROVAL'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'SPARE_PARTS_APPROVAL'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件申领审核</span>
-          <span>{{ logs['SPARE_PARTS_APPROVAL'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span
-            >申领单号:{{
-              logs['SPARE_PARTS_APPROVAL'].content.sparePartsCode
-            }}</span
-          >
-          <span
-            >审核人:{{
-              logs['SPARE_PARTS_APPROVAL'].content.approvalUserName
-            }}</span
-          >
-          <span
-            >审核结果:{{
-              logs['SPARE_PARTS_APPROVAL'].content.approvalResult
-                ? '通过'
-                : '驳回'
-            }}</span
-          >
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'SPARE_PARTS_APPLY'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'SPARE_PARTS_APPLY'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>备品备件申请</span>
-          <span>{{ logs['SPARE_PARTS_APPLY'].createTime }}</span>
-        </div>
-        <div slot="description" class="work_report_desc">
-          <div slot="description" class="step_description">
-            <span
-              >申领单号:{{
-                logs['SPARE_PARTS_APPLY'].content.sparePartsCode
-              }}</span
-            >
-            <span
-              >申请人:{{
-                logs['SPARE_PARTS_APPLY'].content.applyUserName
-              }}</span
-            >
-            <span
-              >审核人:{{
-                logs['SPARE_PARTS_APPLY'].content.approvalUserName
-              }}</span
-            >
-          </div>
-          <div>
-            <div>申领清单:</div>
-            <el-table :data="item.applyList" border>
-              <el-table-column
-                label="备件物品编码"
-                align="center"
-                prop="informationCode"
-              />
-              <el-table-column
-                label="备件名称"
-                align="center"
-                prop="informationName"
-              />
-              <el-table-column label="所属分类" prop="typeName" align="center">
-                <template slot-scope="{ row }">
-                  <div>备品备件</div>
-                </template>
-              </el-table-column>
-              <el-table-column label="型号" align="center" prop="modelType" />
-              <el-table-column label="使用数量" prop="num" align="center" />
-            </el-table>
-          </div>
         </div>
       </el-step>
-
-      <el-step v-if="item.type.code == 'START'">
+      <el-step v-if="item.type == 'REPORT'">
         <span
           slot="icon"
-          :class="
-            lastStepName == 'START' ? 'step_icon step_active' : 'step_icon'
-          "
-        ></span>
-        <div slot="title" class="step_title">
-          <span>开始执行</span>
-          <span>{{ logs['START'].createTime }}</span>
-        </div>
-        <div slot="description" class="step_description">
-          <span>执行人:{{ logs['START'].content.executorName }}</span>
-        </div>
-      </el-step>
-
-      <el-step v-if="item.type.code == 'CREATE_WORK_ORDER'">
-        <span
-          slot="icon"
-          :class="
-            lastStepName == 'CREATE_WORK_ORDER'
-              ? 'step_icon step_active'
-              : 'step_icon'
-          "
+          :class="index == 0 ? 'step_icon step_active' : 'step_icon'"
         ></span>
         <div slot="title" class="step_title">
-          <span>生成工单</span>
-          <span>{{ logs['CREATE_WORK_ORDER'].createTime }}</span>
+          <span>上报时间</span>
+          <span>{{ logs[item.id].createTime }}</span>
         </div>
+       
       </el-step>
-    </el-steps> -->
+    </el-steps>
   </div>
 </template>
 
 <script>
-  // import repair from '@/api/maintenance/repair/repair'
-  // import {  getSparePartDetail , getUseDetail } from '@/api/stockManagement/stocking'
-  // import fileMain from '@/components/addDoc/index.vue';
   export default {
-    components: {
-      // fileMain
-    },
+    components: {},
     props: {
       equipmentInfo: {
         type: Object,
@@ -522,28 +227,6 @@
 
     watch: {
       repairInfoLogList(val) {
-        console.log('接收的值', val);
-        // val.forEach((item) => {
-        //   if (item.type !== 'SPARE_PARTS_APPLY') {
-        //     this.logs[item.type] = {
-        //       id: item.id,
-        //       content: item.content,
-        //       createTime: item.createTime,
-        //       remark: item.remark,
-        //       requestUserName: item.requestUserName
-        //     };
-        //   } else {
-        //     if (item.content.infoList && item.content.infoList.length > 0) {
-        //       item.content.infoList = item.content.infoList.map((item) => {
-        //         return {
-        //           ...JSON.parse(item.sparePartsList),
-        //           sparePartsId: item.sparePartsId
-        //         };
-        //       });
-        //       this.useData.push(item.content.infoList);
-        //     }
-        //   }
-        // });
         val.forEach((item) => {
           this.logs[item.id] = {
             id: item.id,

+ 53 - 1
src/views/maintenance/repair/repairNotes/components/addDialog.vue

@@ -215,6 +215,47 @@
               </el-select>
             </el-form-item>
           </el-col>
+          <el-col :span="12">
+            <el-form-item label="故障类别:" prop="faultType">
+              <el-select
+                v-model="addForm.faultType"
+                style="width: 100%"
+                multiple
+              >
+                <el-option
+                  v-for="item in [
+                    { id: 1, name: '初次' },
+                    { id: 2, name: '复次' },
+                    { id: 3, name: '机械' },
+                    { id: 4, name: '电器' },
+                    { id: 5, name: '精度' }
+                  ]"
+                  :key="item.name"
+                  :value="item.name"
+                  :label="item.name"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="影响度:" prop="impact">
+              <el-select v-model="addForm.impact" style="width: 100%" multiple>
+                <el-option
+                  v-for="item in [
+                    { id: 1, name: '不影响' },
+                    { id: 2, name: '不可生产' },
+                    { id: 3, name: '主机部分' },
+                    { id: 4, name: '辅助' },
+                    { id: 5, name: '隐患' },
+                    { id: 6, name: '安全' }
+                  ]"
+                  :key="item.name"
+                  :value="item.name"
+                  :label="item.name"
+                ></el-option>
+              </el-select>
+            </el-form-item>
+          </el-col>
           <el-col :span="24" style="margin-top: 8px">
             <el-form-item label="故障描述:" prop="remark">
               <el-input
@@ -308,7 +349,10 @@
         addForm: {
           leaderUserId: ''
         },
+        faultType: [],
+        impact: [],
         initData: [],
+
         userList: [],
         addFormRules: {
           remark: [
@@ -464,6 +508,12 @@
             };
             this.getStaffList(this.addForm.leaderDeptId);
           }
+          if (this.addForm.faultType) {
+            this.addForm.faultType = this.addForm.faultType.split(',');
+          }
+          if (this.addForm.impact) {
+            this.addForm.impact = this.addForm.impact.split(',');
+          }
 
           console.log('addForm--------------', this.addForm);
           this.addForm.equiLocation =
@@ -521,7 +571,9 @@
           repairUserId: this.addForm.repairUserId,
           repairGroupId: this.addForm.repairGroupId,
           repairGroupName: this.addForm.repairGroupName,
-          repairUserName: this.addForm.repairUserName
+          repairUserName: this.addForm.repairUserName,
+          faultType: this.addForm.faultType.toString(),
+          impact: this.addForm.impact.toString()
         };
         this.loading = true;
         if (this.row) {

+ 40 - 12
src/views/maintenance/repair/workOrder/index.vue

@@ -76,14 +76,15 @@
           >
             下载
           </el-link>
-          <!-- <el-link
+          <el-link
             type="primary"
             :underline="false"
             icon="el-icon-edit"
-            @click="goDetail(row)"
+            @click="processSubmit(row)"
+            v-if="!row.flowableTaskId"
           >
-            详情
-          </el-link> -->
+            上报
+          </el-link>
         </template>
       </ele-pro-table>
     </el-card>
@@ -106,11 +107,12 @@
     <edit @refresh="reload" ref="edit" />
     <!-- 非完成报工接收  注意事项-->
     <Notice ref="noticeShow" :repairInfo="repairInfo" @agree="agree" />
-    <!-- <AddSpareDialog
-      ref="addSpareDialogRef"
-      :selectedSpare="selectedSpare"
-      @submit="spareItemSelectSubmit"
-    /> -->
+    <process-submit-dialog
+      :processSubmitDialogFlag.sync="processSubmitDialogFlag"
+      v-if="processSubmitDialogFlag"
+      ref="processSubmitDialogRef"
+      @reload="processSubmitSuccess"
+    ></process-submit-dialog>
   </div>
 </template>
 
@@ -123,13 +125,15 @@
   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
+    startExecuting,
+    reportWorkOrder
   } from '@/api/maintenance/repair';
   import outin from '@/api/maintenance/outin';
   import { getToken } from '@/utils/token-util';
@@ -145,11 +149,13 @@
       AddSpareDialog,
       RepairReportingWork,
       edit,
-      Notice
+      Notice,
+      processSubmitDialog
     },
     data() {
       return {
         workorderStatus,
+        processSubmitDialogFlag: false,
         resultStatus,
         currentRow: {},
         warehousingMaterialList: [],
@@ -315,6 +321,13 @@
     },
     created() {},
     methods: {
+     async processSubmitSuccess(data) {
+       await reportWorkOrder({
+          workOrderId: data.businessId,
+          flowableTaskId: data.id
+        });
+        this.reload();
+      },
       downLoadOrder(row) {
         let params = {
           id: row.id
@@ -446,7 +459,22 @@
         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({