Explorar o código

修改维修管理

huang_an %!s(int64=2) %!d(string=hai) anos
pai
achega
ea480f3703

+ 12 - 0
src/api/factoryModel/index.js

@@ -42,3 +42,15 @@ export async function factoryworkstation(params) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+// 获取产线下的所有工位
+export async function listByProductionLineId(params) {
+  const res = await request.get(
+    `/main/factoryworkstation/listByProductionLineId/` + params,
+    {}
+  );
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

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

@@ -103,3 +103,12 @@ export async function workOrderDelete(data) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+
+// 负责人已收
+export async function received(data) {
+  const res = await request.post('/eam/planTool/received', data);
+  if (res.data.code == 0) {
+    return res.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

+ 24 - 0
src/utils/dict/operationManage.js

@@ -0,0 +1,24 @@
+// 报修状态
+export const repairStatus = [
+  { code: 2, label: '已派单' },
+  { code: 3, label: '执行中' },
+  { code: 4, label: '待验收' },
+  { code: 5, label: '已完成' },
+  // { code: 6, label: '未修复' },
+  { code: 7, label: '委外中' }
+];
+
+// 工单状态
+export const workorderStatus = [
+  { code: 0, label: '待接收' },
+  { code: 1, label: '已接收' },
+  { code: 2, label: '执行中' },
+  { code: 3, label: '待验收' },
+  { code: 4, label: '已验收' }
+];
+
+// 执行结果
+export const resultStatus = [
+  { code: 5, label: '未修复' },
+  { code: 4, label: '已修复' }
+];

+ 178 - 10
src/views/ledgerAssets/components/assetInformation.vue

@@ -127,16 +127,6 @@
           :label-style="labelStyle"
           class="descriptions"
         >
-          <el-descriptions-item>
-            <template slot="label"> 权属人 </template>
-            <el-form-item label-width="0">
-              <el-input
-                v-model="zcInfo.workstation.leaderName"
-                disabled
-                placeholder="请输入内容"
-              ></el-input>
-            </el-form-item>
-          </el-descriptions-item>
           <el-descriptions-item>
             <template slot="label"> 权属部门 </template>
             <el-form-item label-width="0">
@@ -146,12 +136,95 @@
                   disabled
                   placeholder="请输入内容"
                 ></el-input>
+                <!-- <DeptSelect
+                  v-model="zcInfo.ownershipGroupId"
+                  @input="getqsbm"
+                /> -->
               </div>
             </el-form-item>
           </el-descriptions-item>
+          <el-descriptions-item>
+            <template slot="label"> 权属人 </template>
+            <el-form-item label-width="0">
+              <el-input
+                v-model="zcInfo.workstation.leaderName"
+                disabled
+                placeholder="请输入内容"
+              ></el-input>
+              <!-- <el-select
+                style="width: 100%"
+                v-model="zcInfo.ownershipUserId"
+                placeholder="请选择"
+              >
+                <el-option
+                  v-for="item in options.ownershipUserId"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select> -->
+            </el-form-item>
+          </el-descriptions-item>
           <el-descriptions-item :span="3">
             <template slot="label"> 所属厂房 </template>
             <el-form-item label-width="0">
+              <!-- <el-select
+                v-model="zcInfo.factoryRoomId"
+                placeholder="请选择"
+                @change="change_factoryId"
+                style="width: 24%; margin-right: 1%"
+              >
+                <el-option
+                  v-for="item in factoryOptions"
+                  :key="item.id"
+                  :label="item.pathName"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+              <el-select
+                v-model="zcInfo.workshopId"
+                placeholder="请选择"
+                style="width: 24%; margin-right: 1%"
+                @change="change_workshop"
+              >
+                <el-option
+                  v-for="item in workshopOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+              <el-select
+                v-model="zcInfo.productionLineId"
+                placeholder="请选择"
+                style="width: 24%; margin-right: 1%"
+                @change="change_productionLineId"
+              >
+                <el-option
+                  v-for="item in productionLineOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+              <el-select
+                v-model="zcInfo.stationId"
+                placeholder="请选择"
+                style="width: 24%; margin-right: 1%"
+                @change="change_stationId"
+              >
+                <el-option
+                  v-for="item in stationOptions"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select> -->
               <el-input
                 style="margin-right: 10px; width: 20%"
                 v-model="zcInfo.workstation.workshopPlanName"
@@ -386,6 +459,13 @@
 </template>
 
 <script>
+  import {
+    listWorkshopByParentId,
+    listFactoryLine,
+    getFactoryarea,
+    listByProductionLineId,
+    getByDeviceId
+  } from '@/api/factoryModel';
   import DeptSelect from '@/components/CommomSelect/dept-select.vue';
   import WorkshopSelect from '@/components/CommomSelect/workshop-select.vue';
   import FactoryAreaSelect from '@/components/CommomSelect/factory-area-select.vue';
@@ -400,6 +480,7 @@
   import { getUserPage } from '@/api/system/organization';
   import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
   import { getByCode } from '@/api/system/dictionary-data';
+  import { data } from 'ele-admin/lib/ele-pro-table';
   export default {
     components: {
       WithView,
@@ -420,6 +501,10 @@
     },
     data() {
       return {
+        factoryOptions: [],
+        workshopOptions: [],
+        productionLineOptions: [],
+        stationOptions: [],
         userList: [], // 人员列表
         labelStyle: {
           'min-width': '100px'
@@ -485,6 +570,7 @@
         //   postId: ''
         // },
         options: {
+          ownershipUserId: [], // 权属人
           repairUserId: [], // 维护人
           supplierId: [], // 供应商
           cityDataLabel, // 设备位置
@@ -525,12 +611,79 @@
       await this.getDeliveryCycleOptions();
       // 获取供应商下拉列表
       await this.getSuppliersList();
+      // 获取厂房数据
+      this.getFactoryareaList();
       // 初始化数据
       setTimeout(() => {
         this.initData();
       }, 500);
     },
     methods: {
+      // 获取工厂数据
+      getFactoryareaList() {
+        getFactoryarea({
+          type: 1,
+          size: 9999,
+          type: 2
+        }).then((res) => {
+          this.factoryOptions = res.list;
+        });
+      },
+      change_factoryId(id) {
+        this.zcInfo.workshopId = '';
+        this.zcInfo.productionLineId = '';
+        this.zcInfo.stationId = '';
+        this.workshopOptions = [];
+        this.productionLineOptions = [];
+        this.stationOptions = [];
+        this.zcInfo.factoryRoomId = id;
+        this.zcInfo.factoryRoomName = this.factoryOptions.filter(
+          (item) => item.id === id
+        )[0].pathName;
+        this.getListWorkshopByParentId(id);
+      },
+      // 获取车间
+      getListWorkshopByParentId(id) {
+        listWorkshopByParentId(id).then((res) => {
+          this.workshopOptions = res;
+        });
+      },
+      change_workshop(id) {
+        this.zcInfo.productionLineId = '';
+        this.zcInfo.stationId = '';
+        this.productionLineOptions = [];
+        this.stationOptions = [];
+        this.zcInfo.workshopName = this.workshopOptions.filter(
+          (item) => item.id === id
+        )[0].name;
+        this.getlistFactoryLineByParentId(id);
+      },
+      // 获取产线
+      getlistFactoryLineByParentId(id) {
+        listFactoryLine([id]).then((res) => {
+          this.productionLineOptions = res;
+        });
+      },
+      change_productionLineId(id) {
+        this.zcInfo.stationId = '';
+        this.stationOptions = [];
+        this.zcInfo.productionLineName = this.productionLineOptions.filter(
+          (item) => item.id === id
+        )[0].name;
+        this.getlistByProductionLineId(id);
+      },
+      // 获取工位
+      getlistByProductionLineId(id) {
+        listByProductionLineId(id).then((res) => {
+          this.stationOptions = res;
+        });
+      },
+      change_stationId(id) {
+        this.$forceUpdate();
+        this.zcInfo.stationName = this.stationOptions.filter(
+          (item) => item.id === id
+        )[0].name;
+      },
       usePersonIdChange(val) {
         if (this.zcInfo.isPublic > 0 && this.isLock) {
           this.zcInfo.chargePersonId = val;
@@ -618,6 +771,20 @@
         });
         this.userList = res.list;
       },
+      // 权属部门
+      async getqsbm() {
+        if (!this.zcInfo.ownershipGroupId) {
+          this.options.ownershipUserId = [];
+          this.zcInfo.ownershipUserId = '';
+        } else {
+          let data = await getUserPage({
+            pageNum: 1,
+            size: 9999,
+            groupId: this.zcInfo.ownershipGroupId
+          });
+          this.options.ownershipUserId = data.list;
+        }
+      },
       // 维护部门
       async getwhbm() {
         if (!this.zcInfo.repairGroupId) return;
@@ -633,6 +800,7 @@
         console.log('this.zcInfo---------------------', this.zcInfo);
         // 填充使用岗位
         this.zcInfo.postId && this.getStaffList(this.zcInfo.postId);
+        // 获取设备绑定信息
         this.geMaintainersList();
       }
     }

+ 40 - 12
src/views/ledgerAssets/components/assetInformationView.vue

@@ -127,28 +127,45 @@
           :label-style="labelStyle"
           class="descriptions"
         >
-          <el-descriptions-item>
-            <template slot="label"> 权属人 </template>
-            <el-form-item label-width="0">
-              <el-input
-                v-model="zcInfo.workstation.leaderName"
-                disabled
-                placeholder="请输入内容"
-              ></el-input>
-            </el-form-item>
-          </el-descriptions-item>
           <el-descriptions-item>
             <template slot="label"> 权属部门 </template>
             <el-form-item label-width="0">
               <div class="input">
-                <el-input
+                <!-- <el-input
                   v-model="zcInfo.workstation.groupName"
                   disabled
                   placeholder="请输入内容"
-                ></el-input>
+                ></el-input> -->
+                <DeptSelect
+                  v-model="zcInfo.ownershipGroupId"
+                  @input="getqsbm"
+                />
               </div>
             </el-form-item>
           </el-descriptions-item>
+          <el-descriptions-item>
+            <template slot="label"> 权属人 </template>
+            <el-form-item label-width="0">
+              <!-- <el-input
+                v-model="zcInfo.workstation.leaderName"
+                disabled
+                placeholder="请输入内容"
+              ></el-input> -->
+              <el-select
+                style="width: 100%"
+                v-model="zcInfo.ownershipUserId"
+                placeholder="请选择"
+              >
+                <el-option
+                  v-for="item in options.ownershipUserId"
+                  :key="item.id"
+                  :label="item.name"
+                  :value="item.id"
+                >
+                </el-option>
+              </el-select>
+            </el-form-item>
+          </el-descriptions-item>
           <el-descriptions-item :span="3">
             <template slot="label"> 所属厂房 </template>
             <el-form-item label-width="0">
@@ -472,6 +489,7 @@
         //   postId: ''
         // },
         options: {
+          ownershipUserId: [], // 权属人
           repairUserId: [], // 维护人
           supplierId: [], // 供应商
           cityDataLabel, // 设备位置
@@ -597,6 +615,16 @@
         });
         this.userList = res.list;
       },
+      // 权属部门
+      async getqsbm() {
+        if (!this.zcInfo.ownershipGroupId) return;
+        let data = await getUserPage({
+          pageNum: 1,
+          size: 9999,
+          groupId: this.zcInfo.ownershipGroupId
+        });
+        this.options.ownershipUserId = data.list;
+      },
       // 维护部门
       async getwhbm() {
         if (!this.zcInfo.repairGroupId) return;

+ 11 - 5
src/views/maintenance/components/redeployOther.vue

@@ -57,7 +57,9 @@
       </div>
       <div slot="footer" class="footer">
         <el-button @click="cancel">返回</el-button>
-        <el-button type="primary" @click="submit">提交</el-button>
+        <el-button :loading="btnLoading" type="primary" @click="submit"
+          >提交</el-button
+        >
       </div>
     </div>
   </el-dialog>
@@ -77,6 +79,7 @@
     },
     data() {
       return {
+        btnLoading: false,
         visible: false,
         treeList: [],
         pages: {
@@ -176,14 +179,17 @@
 
       async submit() {
         if (this.selectedRow.id) {
+          this.btnLoading = true;
           let params = {
             acceptUserId: this.selectedRow.id,
             workOrderId: this.row.id
           };
-          await workOrderRotate(params);
-          this.$message.success(`该工单成功转派给${this.selectedRow.name}`);
-          this.visible = false;
-          this.$emit('refresh');
+          workOrderRotate(params).then(() => {
+            this.$message.success(`该工单成功转派给${this.selectedRow.name}`);
+            this.visible = false;
+            this.$emit('refresh');
+            this.btnLoading = false;
+          });
         } else {
           return this.$message.warning('请选择转派人员');
         }

+ 214 - 7
src/views/maintenance/delivery/plan/details.vue

@@ -107,7 +107,85 @@
         <div class="maintain_equipment_info">
           <HeaderTitle title="量具送检设备" size="16px"></HeaderTitle>
           <div class="maintain_equipment_info_content">
-            <div
+            <el-table :height="300" :data="infoData.planDeviceList" border>
+              <el-table-column label="序号" type="index" width="50">
+              </el-table-column>
+              <el-table-column label="设备编码" prop="name">
+                <template slot-scope="scope">
+                  <div>
+                    <span>{{ scope.row.substance.code }}</span>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column label="编号" prop="norm">
+                <template slot-scope="scope">
+                  <div>
+                    <span>{{ scope.row.substance.extInfo.codeNumber }}</span>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column label="设备名称" prop="content">
+                <template slot-scope="scope">
+                  <div>
+                    <span>{{ scope.row.substance.name }}</span>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column label="设备型号" prop="norm">
+                <template slot-scope="scope">
+                  <div>
+                    <span>{{ scope.row.substance.model }}</span>
+                  </div>
+                </template>
+              </el-table-column>
+              <el-table-column width="50" label="质检" prop="qualityStatus">
+                <template slot-scope="scope">
+                  <span>
+                    {{ qualityStatusOptions[scope.row.qualityStatus] }}
+                  </span>
+                </template>
+              </el-table-column>
+              <el-table-column width="80" label="是否遗失" prop="isLose">
+                <template slot-scope="scope">
+                  <span>
+                    {{ loseOptions[scope.row.isLose] }}
+                  </span>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="上交时间"
+                prop="handTime"
+              ></el-table-column>
+              <el-table-column
+                label="负责人确认结果"
+                width="260"
+                prop="teamLeaderResult"
+              >
+                <template slot-scope="scope">
+                  <el-radio-group v-model="scope.row.teamLeaderResult">
+                    <el-radio :label="1">正常</el-radio>
+                    <el-radio :label="2">异常</el-radio>
+                    <el-radio :label="3">丢失</el-radio>
+                  </el-radio-group>
+                </template>
+              </el-table-column>
+              <el-table-column
+                label="负责人确认时间"
+                prop="teamReceiptTime"
+              ></el-table-column>
+              <el-table-column label="操作" width="90">
+                <template slot-scope="scope">
+                  <el-button
+                    v-if="!scope.row.teamReceiptTime"
+                    @click="configResult(scope.row)"
+                    type="primary"
+                    size="small"
+                    >确认</el-button
+                  >
+                </template>
+              </el-table-column>
+            </el-table>
+            <!-- <div
               class="equipment_item"
               v-for="item in infoData.planDeviceList"
               :key="item.id"
@@ -226,8 +304,8 @@
                     </template>
                   </el-table-column>
                 </el-table>
-              </div>
-              <!-- <div class="matter_info">
+              </div> -->
+            <!-- <div class="matter_info">
                 <el-table :data="item.workItems || []" border>
                   <el-table-column label="序号" align="center" width="80">
                     <template slot-scope="scope">
@@ -238,10 +316,81 @@
                   <el-table-column label="内容" prop="content" />
                   <el-table-column label="标准" prop="norm" />
                 </el-table>
-              </div> -->
-            </div>
+              </div> 
+            </div> -->
           </div>
         </div>
+        <div class="ruleMatters_box">
+          <HeaderTitle title="操作事项" size="16px"></HeaderTitle>
+          <el-table
+            :height="300"
+            :data="infoData.planDeviceList[0].workItems"
+            border
+          >
+            <el-table-column label="序号" width="50">
+              <template slot-scope="scope">
+                <span>{{ scope.$index + 1 }}</span>
+              </template>
+            </el-table-column>
+            <el-table-column label="事项" prop="name" width="100">
+              <template slot-scope="scope">
+                <div>
+                  <span>{{ scope.row.name }}</span>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="内容" prop="content" width="300">
+              <template slot-scope="scope">
+                <div>
+                  <span>{{ scope.row.content }}</span>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="操作指导" prop="operationGuide">
+              <template slot-scope="scope">
+                <div class="operationGuide_box">
+                  <div class="left_content">
+                    <template v-if="scope.row.operationGuide">
+                      <div
+                        v-for="(item, index) in scope.row.operationGuide
+                          .toolList"
+                        :key="item.id"
+                        >{{ index + 1 }}.{{ item.name }}</div
+                      >
+                    </template>
+                  </div>
+                  <div class="line"></div>
+                  <div class="right_content">
+                    <template v-if="scope.row.operationGuide">
+                      <div
+                        v-for="(item, index) in scope.row.operationGuide
+                          .procedureList"
+                        :key="item.id"
+                        >{{ index + 1 }}.{{ item.content }}</div
+                      >
+                    </template>
+                  </div>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="标准" prop="norm" width="100">
+              <template slot-scope="scope">
+                <div>
+                  <span>{{ scope.row.norm }}</span>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="状态" prop="status" width="100">
+              <template slot-scope="scope">
+                <div>
+                  <span>{{ options[scope.row.status] }}</span>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="结果" prop="result" width="200">
+            </el-table-column>
+          </el-table>
+        </div>
         <!-- 高亮流程图 -->
         <el-card class="box-card" v-loading="processInstanceLoading">
           <div slot="header" class="clearfix">
@@ -415,7 +564,7 @@
     getProcessDefinitionBpmnXML,
     getActivityList
   } from '@/api/bpm/index';
-  import { getById } from '@/api/maintenance/patrol_maintenance';
+  import { getById, received } from '@/api/maintenance/patrol_maintenance';
   import dictMixins from '@/mixins/dictMixins';
   export default {
     mixins: [dictMixins],
@@ -441,6 +590,10 @@
         pageLoading: false,
         typeValue: null,
         contract_type: [],
+        options: {
+          0: '正常',
+          '-1': '缺陷'
+        },
         loseOptions: {
           0: '正常',
           1: '丢失'
@@ -466,7 +619,9 @@
         ruleItem: [],
         cause: '',
         showtext: false,
-        infoData: {}
+        infoData: {
+          planDeviceList: [{}]
+        }
       };
     },
     async created() {
@@ -474,6 +629,19 @@
       this.getInfo();
     },
     methods: {
+      configResult(row) {
+        if (!row.teamLeaderResult) {
+          this.$message.error('请确认结果!');
+          return false;
+        }
+        received([{ id: row.id, teamLeaderResult: row.teamLeaderResult }]).then(
+          (data) => {
+            console.log(data);
+            this.getInfo();
+            this.$message.success('操作成功!');
+          }
+        );
+      },
       /** 获得流程实例 */
       getDetail(id) {
         // 获得流程实例相关
@@ -865,6 +1033,45 @@
       }
     }
   }
+  .ruleMatters_box {
+    height: 400px;
+    display: flex;
+    flex-direction: column;
+    .divider {
+      flex: 0 0 50px;
+      .title {
+        height: 35px;
+      }
+    }
+    .el-table {
+      overflow: auto;
+      .operationGuide_box {
+        width: 100%;
+        display: flex;
+        position: relative;
+        .left_content {
+          flex: 0 0 150px;
+          padding: 10px;
+          margin-right: 10px;
+          overflow-y: auto;
+        }
+        .line {
+          position: absolute;
+          top: -10px;
+          left: 150px;
+          bottom: -10px;
+          height: 110%;
+          width: 1px;
+          background-color: #ededed;
+        }
+        .right_content {
+          flex: 1;
+          padding: 10px;
+          overflow-y: auto;
+        }
+      }
+    }
+  }
   .examine_info {
     margin-bottom: 30px;
     .examine_info_title {

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

@@ -311,7 +311,12 @@
       <el-button class="confirm-btn" type="danger" plain @click="reject"
         >驳回</el-button
       >
-      <el-button class="confirm-btn" type="success" plain @click="pass"
+      <el-button
+        :loading="passLoading"
+        class="confirm-btn"
+        type="success"
+        plain
+        @click="pass"
         >验收</el-button
       >
       <el-button class="cancel-btn" @click="handleClose">关闭</el-button>
@@ -328,7 +333,13 @@
       </el-input>
       <div class="textbtnbox">
         <el-button size="small" round @click="cancelreject">取消</el-button>
-        <el-button size="small" round @click="surereject">提交</el-button>
+        <el-button
+          :loading="errorLoading"
+          size="small"
+          round
+          @click="surereject"
+          >提交</el-button
+        >
       </div>
     </div>
     <div slot="footer" v-if="!row.isshow">
@@ -350,6 +361,8 @@
     components: { RepairNotesTab, WorkOrderTab },
     data() {
       return {
+        errorLoading: false,
+        passLoading: false,
         equipmentdialog: false,
         detailsTabsActiveName: 'repairApplication',
         workOrderInfo: {},
@@ -486,6 +499,7 @@
 
       //通过按钮事件
       pass() {
+        this.passLoading = true;
         let params = {
           id: this.row.id,
           checked: true,
@@ -498,6 +512,7 @@
           if (res.success) {
             this.$message.success('验收成功!');
             this.$emit('refesh');
+            this.passLoading = false;
             this.equipmentdialog = false;
           }
         });
@@ -523,6 +538,7 @@
         if (!this.cause) {
           this.$message.info('请填写驳回原因!');
         } else {
+          this.errorLoading = true;
           let params = {
             id: this.row.id,
             checked: false,
@@ -535,6 +551,7 @@
             if (res.success) {
               this.$message.success('驳回成功!');
               this.$emit('refesh');
+              this.errorLoading = false;
               this.equipmentdialog = false;
             }
           });

+ 21 - 35
src/views/maintenance/repair/components/WorkOrderTab.vue

@@ -61,31 +61,25 @@
       <el-step v-if="item.type == 'CREATE'">
         <span
           slot="icon"
-          :class="
-            lastStepName == 'CREATE' ? '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'].createTime }}</span>
+          <span>{{ logs[item.id].createTime }}</span>
         </div>
         <div slot="description" class="create_workerOrder_desc">
-          <div> 报修人:{{ logs['CREATE'].requestUserName }} </div>
-          <div> 故障描述:{{ logs['CREATE'].remark }} </div>
+          <div> 报修人:{{ logs[item.id].requestUserName }} </div>
+          <div> 故障描述:{{ logs[item.id].remark }} </div>
         </div>
       </el-step>
       <el-step v-if="item.type == 'SPARE_PARTS_APPLY'">
         <span
           slot="icon"
-          :class="
-            lastStepName == 'SPARE_PARTS_APPLY'
-              ? '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['SPARE_PARTS_APPLY'].createTime }}</span>
+          <span>{{ logs[item.id].createTime }}</span>
         </div>
         <div slot="description" class="work_report_desc">
           <!-- <div slot="description" class="step_description">
@@ -122,45 +116,36 @@
       <el-step v-if="item.type == 'ACCEPTANCE_CHEK'">
         <span
           slot="icon"
-          :class="
-            lastStepName == 'ACCEPTANCE_CHEK'
-              ? '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['ACCEPTANCE_CHEK'].createTime }}</span>
+          <span>{{ logs[item.id].createTime }}</span>
         </div>
         <div slot="description" class="step_description">
-          <span>验收人:{{ logs['ACCEPTANCE_CHEK'].content.userName }}</span>
+          <span>验收人:{{ logs[item.id].content.userName }}</span>
           <span
             >验收结果:{{
-              logs['ACCEPTANCE_CHEK'].content.orderStatus == 4 ? '通过' : '驳回'
+              logs[item.id].content.orderStatus == 4 ? '通过' : '驳回'
             }}</span
           >
-          <span>验收说明:{{ logs['ACCEPTANCE_CHEK'].content.remark }}</span>
+          <span>验收说明:{{ logs[item.id].content.remark }}</span>
         </div>
       </el-step>
       <el-step v-if="item.type == 'WORK_REPORT'">
         <span
           slot="icon"
-          :class="
-            lastStepName == 'WORK_REPORT'
-              ? '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['WORK_REPORT'].createTime }}</span>
+          <span>{{ logs[item.id].createTime }}</span>
         </div>
         <div slot="description" class="work_report_desc">
-          <div> 处理说明:{{ logs['WORK_REPORT'].content.reason }} </div>
+          <div> 处理说明:{{ logs[item.id].content.reason }} </div>
           <div class="work_report_imgs" style="width: 50px; height: 50px">
             <img
-              v-for="(item, index) in logs['WORK_REPORT'].content
-                .workOrderImgList"
+              v-for="(item, index) in logs[item.id].content.workOrderImgList"
               :key="index"
               :src="item"
               alt=""
@@ -529,18 +514,19 @@
         //   }
         // });
         val.forEach((item) => {
-          this.logs[item.type] = {
+          this.logs[item.id] = {
             id: item.id,
             content: item.content,
             createTime: item.createTime,
+            type: item.type,
             remark: item.remark,
             requestUserName: item.requestUserName
           };
           if (item.type === 'SPARE_PARTS_APPLY') {
-            this.logs[item.type].content.infoList =
-              this.logs[item.type].content.infoList &&
-              this.logs[item.type].content.infoList.length > 0
-                ? this.logs[item.type].content.infoList.map((item) => {
+            this.logs[item.id].content.infoList =
+              this.logs[item.id].content.infoList &&
+              this.logs[item.id].content.infoList.length > 0
+                ? this.logs[item.id].content.infoList.map((item) => {
                     return {
                       ...JSON.parse(item.sparePartsList),
                       sparePartsId: item.sparePartsId

+ 6 - 1
src/views/maintenance/repair/components/repairReportingWork.vue

@@ -148,7 +148,9 @@
     </div>
     <div slot="footer" class="footer">
       <el-button @click="cancel">返回</el-button>
-      <el-button type="primary" @click="submit">提交</el-button>
+      <el-button :loading="btnLoading" type="primary" @click="submit"
+        >提交</el-button
+      >
     </div>
   </el-dialog>
 </template>
@@ -160,6 +162,7 @@
     data() {
       return {
         time: [],
+        btnLoading: false,
         options: [
           {
             label: '正常',
@@ -191,6 +194,7 @@
           this.infoData.finishTime = this.time[1];
           this.infoData.deviceList = this.infoData.planDeviceList;
           console.log(this.infoData);
+          this.btnLoading = true;
           let deviceList = this.infoData.deviceList
             .map((item) => {
               return item.workItems;
@@ -202,6 +206,7 @@
             if (res.code == 0) {
               this.$message.success('报工成功');
               this.visible = false;
+              this.btnLoading = false;
               this.$emit('refresh');
             }
           });

+ 47 - 21
src/views/maintenance/repair/repairNotes/components/notes-search.vue

@@ -7,36 +7,51 @@
     @submit.native.prevent
   >
     <el-row :gutter="15">
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+      <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="来源编码:">
           <el-input clearable v-model="where.sourceCode" placeholder="请输入" />
         </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+      </el-col> -->
+      <!-- <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="来源类型:">
           <DictSelection dictName="报修来源" v-model="where.sourceType" />
         </el-form-item>
-      </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+      </el-col> -->
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
         <el-form-item label="报修编码:">
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 5 }">
         <el-form-item label="报修人:">
           <personSelect v-model="where.requestUserId" />
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 5 }">
         <el-form-item label="状态:">
-          <DictSelection dictName="报修状态" v-model="where.status" />
+          <!-- <DictSelection dictName="报修状态" v-model="where.status" /> -->
+          <el-select
+            style="width: 100%"
+            clearable
+            v-model="where.status"
+            placeholder="请选择状态"
+          >
+            <el-option
+              v-for="item in repairStatus"
+              :label="item.label"
+              :value="item.code"
+              :key="item.code"
+            >
+            </el-option>
+          </el-select>
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+      <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 5 }">
         <el-form-item label="报修时间:">
           <el-date-picker
             v-model="where.time"
             type="daterange"
+            @change="timeChange"
             range-separator="至"
             start-placeholder="开始日期"
             end-placeholder="结束日期"
@@ -46,7 +61,7 @@
           </el-date-picker>
         </el-form-item>
       </el-col>
-      <el-col v-bind="styleResponsive ? { lg: 12, md: 24 } : { span: 12 }">
+      <el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
         <div class="ele-form-actions">
           <el-button
             type="primary"
@@ -71,47 +86,58 @@
 </template>
 
 <script>
+  import { repairStatus } from '@/utils/dict/operationManage';
   import personSelect from '@/components/CommomSelect/person-select.vue';
   export default {
-	components: { personSelect },  
+    components: { personSelect },
     data() {
       // 默认表单数据
       const defaultWhere = {
         sourceCode: '',
-		    sourceType:'',
+        sourceType: '',
         code: '',
         requestUserId: '',
         status: '',
-		    time: [],
+        time: []
       };
       return {
+        repairStatus,
         // 表单数据
-        where: { ...defaultWhere },
+        where: { ...defaultWhere }
       };
     },
     computed: {
       // 是否开启响应式布局
-      styleResponsive () {
+      styleResponsive() {
         return this.$store.state.theme.styleResponsive;
       }
     },
-    created () {},
+    created() {},
     methods: {
+      timeChange(value) {
+        if (!value) {
+          this.where.startTime = '';
+          this.where.endTime = '';
+        }
+      },
       /* 搜索 */
-      search () {
+      search() {
         const parmas = this.where;
         if (parmas.time?.length) {
           parmas.startTime = parmas.time[0];
           parmas.endTime = parmas.time[1];
+          delete parmas.time;
+        }
+        if (parmas.status) {
+          parmas.statusList = [parmas.status].join(',');
+        } else {
+          parmas.statusList = '';
         }
-		if (parmas.status) {
-		  parmas.statusList = [parmas.status].join(',')
-		}
         delete parmas.status;
         this.$emit('search', parmas);
       },
       /*  重置 */
-      reset () {
+      reset() {
         this.where = { ...this.defaultWhere };
         this.search();
       }

+ 21 - 9
src/views/maintenance/repair/workOrder/components/workorder-search.vue

@@ -14,13 +14,22 @@
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
         <el-form-item label="状态:">
-          <DictSelection dictName="规则状态" clearable v-model="where.staus">
-          </DictSelection>
+          <el-select v-model="where.status" placeholder="请选择状态">
+            <el-option
+              v-for="item in workorderStatus"
+              :label="item.label"
+              :value="item.code"
+              :key="item.code"
+            >
+            </el-option>
+          </el-select>
+          <!-- <DictSelection dictName="规则状态" clearable v-model="where.status">
+          </DictSelection> -->
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
         <el-form-item label="执行人:" label-width="80px">
-          <personSelect v-model="where.userId" />
+          <personSelect v-model="where.executeUserId" />
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 9, md: 12 } : { span: 9 }">
@@ -60,18 +69,21 @@
 </template>
 
 <script>
+  import { workorderStatus } from '@/utils/dict/operationManage';
   import personSelect from '@/components/CommomSelect/person-select.vue';
   export default {
     components: { personSelect },
-    data () {
+    data() {
       // 默认表单数据
       const defaultWhere = {
-        staus: '',
+        status: '',
         code: '',
         time: [],
+        statusType: 0,
         executeUserName: ''
       };
       return {
+        workorderStatus,
         // 表单数据
         where: { ...defaultWhere },
         treeData: []
@@ -79,14 +91,14 @@
     },
     computed: {
       // 是否开启响应式布局
-      styleResponsive () {
+      styleResponsive() {
         return this.$store.state.theme.styleResponsive;
       }
     },
-    created () {},
+    created() {},
     methods: {
       /* 搜索 */
-      search () {
+      search() {
         const where = this.where;
 
         if (where.time?.length) {
@@ -97,7 +109,7 @@
         this.$emit('search', where);
       },
       /*  重置 */
-      reset () {
+      reset() {
         this.where = { ...this.defaultWhere };
         this.search();
       }

+ 19 - 7
src/views/maintenance/repair/workOrder/index.vue

@@ -88,6 +88,7 @@
 </template>
 
 <script>
+  import { workorderStatus, resultStatus } from '@/utils/dict/operationManage';
   import WorkorderSearch from './components/workorder-search.vue';
   import AddSpareDialog from '@/components/addSpareDialog';
   import AssetsDialog from './components/AssetsDialog.vue';
@@ -107,6 +108,8 @@
     },
     data() {
       return {
+        workorderStatus,
+        resultStatus,
         currentRow: {},
         warehousingMaterialList: [],
         batchDetailsVOList: [],
@@ -219,13 +222,22 @@
             align: 'center',
             showOverflowTooltip: true,
             formatter: (row) => {
-              return {
-                0: '待接收',
-                1: '已接收',
-                2: '执行中',
-                3: '待验收',
-                4: '已验收'
-              }[row.orderStatus];
+              return workorderStatus.filter(
+                (item) => item.code == 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
+                : '';
             }
           },
           {