quwangxin 3 år sedan
förälder
incheckning
283ca0160f

+ 1 - 1
.env

@@ -1,2 +1,2 @@
-VUE_APP_NAME=EAM设备管理系统
+VUE_APP_NAME=设备管理系统
 VUE_APP_API_BASE_URL=/api

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

@@ -32,3 +32,55 @@ export async function revocation (id) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+// 查询未派单设备数据
+export async function getNotSendOrderList (planId) {
+  const res = await request.get(
+    `/eam/planmaintenance/getNotSendOrderList/${planId}`
+  );
+  if (res.data.code == 0) {
+    return res.data?.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+// 派单
+export async function sendOrder (data) {
+  const res = await request.get(`/eam/planmaintenance/sendOrder`, {
+    params: data
+  });
+  if (res.data.code == 0) {
+    return res.data?.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 工单分页
+export async function getWorkOrderPage (data) {
+  const res = await request.get('/eam/workordermaintenance/page', {
+    params: data
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+// 详情
+export async function getWordOrderDetail (workOrderId) {
+  const res = await request.get(
+    `/eam/workordermaintenance/maintenanceDetail/${workOrderId}`
+  );
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+// 工单转派
+export async function workOrderRotate (data) {
+  const res = await request.get('/eam/workordermaintenance/rotate', {
+    params: data
+  });
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}

BIN
src/assets/logo.png


+ 6 - 1
src/components/CommomSelect/dept-select.vue

@@ -7,6 +7,7 @@
     :data="treeData"
     label-key="name"
     value-key="id"
+    ref="treeSelect"
     default-expand-all
     size="medium"
     :placeholder="placeholder"
@@ -52,7 +53,11 @@
       },
 
       changeChoose (val) {
-        this.$emit('changeGroup', val);
+        this.$emit(
+          'changeGroup',
+          val,
+          this.$refs.treeSelect.getNodeByValue(val)
+        );
       }
     }
   };

+ 6 - 1
src/components/CommomSelect/person-select.vue

@@ -25,7 +25,7 @@
     },
     props: {
       value: {
-        type: [String, Number,Array],
+        type: [String, Number, Array],
         default: ''
       },
       init: {
@@ -41,6 +41,11 @@
     computed: {
       selectVal: {
         set (val) {
+          this.$emit(
+            'selfChange',
+            val,
+            this.dictList.find((i) => i.id === val)
+          );
           this.$emit('updateVal', val);
         },
         get () {

+ 137 - 187
src/components/addPatrolPlanDialog/DispatchDialog.vue

@@ -18,9 +18,9 @@
       >
         <el-row>
           <el-col :span="8">
-            <el-form-item label="工单编号" prop="code">
+            <el-form-item label="工单编号" prop="orderCode">
               <el-input
-                v-model="addForm.code"
+                v-model="addForm.orderCode"
                 placeholder="自动带出"
                 disabled
               ></el-input>
@@ -32,22 +32,23 @@
             </el-form-item>
           </el-col>
           <el-col :span="8">
-            <el-form-item label="执行部门" prop="groupId">
+            <el-form-item label="执行部门" prop="executeGroupId">
               <deptSelect
-                v-model="addForm.groupId"
-                @change="searchDeptNodeClick"
+                v-model="addForm.executeGroupId"
+                @changeGroup="searchDeptNodeClick"
               />
             </el-form-item>
           </el-col>
           <el-col :span="8">
             <el-form-item
               label="执行人"
-              prop="executorId"
+              prop="executeUserId"
               :rules="[{ required: true, message: '请选择执行人' }]"
             >
               <personSelect
                 ref="executorRef"
-                v-model="addForm.executorId"
+                v-model="addForm.executeUserId"
+                @selfChange="handleExecutorChange"
                 :init="false"
               />
             </el-form-item>
@@ -130,61 +131,53 @@
                   <span>{{ scope.$index + 1 }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="备件名称" align="center" prop="name">
+              <el-table-column
+                label="备件名称"
+                align="center"
+                prop="categoryName"
+              >
               </el-table-column>
-              <el-table-column label="规格型号" align="center" prop="modelType">
+              <el-table-column label="规格型号" align="center" prop="model">
                 <template slot-scope="{ row }">
-                  <span>{{ row.specification }}/{{ row.modelType }}</span>
+                  <span>{{ row.specification }}/{{ row.model }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="所需数量" align="center" prop="num">
+              <el-table-column label="所需数量" align="center" prop="needNum">
               </el-table-column>
-              <el-table-column label="单位" align="center" prop="measuringUnit">
+              <el-table-column label="单位" align="center" prop="unit">
               </el-table-column>
               <el-table-column label="费用" align="center" prop="univalence">
                 <template slot-scope="scope">
-                  {{ scope.row.num * scope.row.univalence
-                  }}{{ scope.row.univalenceUnit == 'wanyuan' ? '万元' : '元' }}
+                  {{ scope.row.cost
+                  }}{{ scope.row.parValue == 'wanyuan' ? '万元' : '元' }}
                 </template>
               </el-table-column>
             </el-table>
             <div style="text-align: center"
               >备件总费用:
-              {{
-                planDeviceList[currentEquItemIndex] &&
-                planDeviceList[currentEquItemIndex].totalCost
-                  ? planDeviceList[currentEquItemIndex].totalCost
-                  : '-'
-              }}
-              元
+              {{ totalCost || '-' }}
             </div>
           </div>
         </div>
       </div>
     </div>
     <div slot="footer" class="dialog_footer">
-      <el-button type="primary" @click="submit">提交</el-button>
+      <el-button type="primary" @click="submit(false)">提交</el-button>
       <el-button @click="handleClose">关闭</el-button>
+      <el-link type="primary" @click="submit(true)">提交并继续指派</el-link>
     </div>
   </el-dialog>
 </template>
 
 <script>
-  import equipmentSelect from '@/components/CommomSelect/equipment-select.vue';
   import personSelect from '@/components/CommomSelect/person-select.vue';
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
-  import RuleItemSelection from '@/components/ruleItemSelection';
-  import AddSpareDialog from '@/components/addSpareDialog';
+  import { getCode } from '@/api/ruleManagement/matter';
   import {
-    getRule,
-    getCategory,
-    getAssetList,
-    getInfoById
-  } from '@/api/ruleManagement/plan';
-  import { getDetail, getCode } from '@/api/ruleManagement/matter';
-  import { saveOrUpdate } from '@/api/maintenance/patrol_maintenance';
-  import { deepClone } from '@/utils';
-  import { getById } from '@/api/maintenance/patrol_maintenance';
+    getById,
+    getNotSendOrderList,
+    sendOrder
+  } from '@/api/maintenance/patrol_maintenance';
   export default {
     name: 'addPatrolPlanDialog',
     components: {
@@ -219,24 +212,12 @@
           4: 'INVENTORY'
         },
         addForm: {
-          assetDict: '1',
-          assetsName: '生产设备',
-          // code: getRuleNo('PL'), // 计划单号
-          cycleType: 0,
-          name: '', // 计划名称
-          autoOrder: 1, // 自动派单
-          ruleId: '', // 规则id
-          ruleName: '', // 规则名称
-          duration: '', // 计划完成时长
-          categoryLevelId: '', // 设备分类Id
-          bizTypeName: '', // 设备分类name
-          verifyUserId: '', // 审核人id
-          verifyUserName: '', // 审核人name
-          groupId: '', // 巡点检部门code
-          executorId: '', // 巡点检人员id
-          remark: '', // 备注
-          categoryId: '', //
-          planType: 'PATROL' // 计划规则类型 巡点检: 'PATROL', 保养: 'MAINTAIN', 盘点: 'INVENTORY'
+          executeGroupId: '',
+          executeGroupName: '',
+          executeUserId: '',
+          executeUserName: '',
+          orderCode: '',
+          name: ''
         },
         // 计划规则设备列表
         planDeviceList: [
@@ -257,14 +238,14 @@
           categoryLevelId: [
             { required: true, message: '请选择设备分类', trigger: 'change' }
           ],
-          groupId: [
+          executeGroupId: [
             {
               required: true,
               message: '请选择选择执行部门',
               trigger: 'change'
             }
           ],
-          executorId: [
+          executeUserId: [
             {
               required: true,
               message: '请选择选择执行人',
@@ -279,48 +260,61 @@
         editLoading: false
       };
     },
-    computed: {},
     async created () {},
+    computed: {
+      totalCost () {
+        const cur = this.planDeviceList[this.currentEquItemIndex] || {};
+        const sparePart = cur?.sparePart || [];
+
+        return (
+          (sparePart.reduce((sum, item) => {
+            let chengs = 1;
+            switch (item.parValue) {
+              case 'wanyuan': {
+                chengs = 10000;
+                break;
+              }
+              case 'yuan': {
+                chengs = 1;
+                break;
+              }
+              default:
+                break;
+            }
+            console.log(sum, item.cost);
+            return sum + item.cost * chengs;
+          }, 0) || 0) + '元'
+        );
+      }
+    },
     methods: {
       open (row) {
-        this.addForm.id = row.id;
-        this.getInfo(this.addForm.id);
+        this.getInfo(row.id);
         this.addPatrolPlanDialog = true;
       },
       // 编辑详情
-      async getInfo (id) {
+      async getInfo (planId) {
         this.editLoading = true;
-        const res = await getById(id).catch(() => {
+        const res = await getById(planId).catch(() => {
           this.editLoading = false;
         });
         this.editLoading = false;
         if (res?.data) {
-          const data = res.data;
-
-          this.addForm = data;
-
-          this.planDeviceList = this.addForm.planDeviceList.map((item) => ({
-            ...item,
-            ...item.substance
-          }));
-
-          const item = this.planDeviceList[0];
+          this.addForm = res.data;
+          this.getOrderCode();
+          this._getEquipmentList(res.data.planId);
+        }
+      },
 
-          // const { equiLocation, equiLocationCode } = this.getEquiLocation(item);
-          this.$nextTick(() => {
-            this.$refs.equiListTree.setCurrentKey(item.id);
-            this.equipmentInfo = {
-              equiTypeId: this.addForm.categoryId,
-              equiCode: item.code,
-              equiName: item.name
-              // equiModel: item.category.modelType
-              // equiLocation: equiLocation,
-              // equiLocationCode: equiLocationCode
-            };
-            this.currentEquItemIndex = 0;
-            // this.planDeviceList[0]['equiLocation'] = equiLocation;
-            // this.planDeviceList[0]['equiLocationCode'] = equiLocationCode;
-          });
+      // 获取计划配置单号
+      async getOrderCode () {
+        if (this.type.includes('巡点检')) {
+          const data = await getCode('partrol_code');
+          this.$set(this.addForm, 'orderCode', data);
+        }
+        if (this.type.includes('保养')) {
+          const code = await getCode('maintenance_code');
+          this.$set(this.addForm, 'orderCode', code);
         }
       },
       handleClose () {
@@ -352,69 +346,49 @@
           equiLocationCode;
       },
       // 封装 - 获取设备分类列表
-      async _getEquipmentList (val) {
-        const params = {
-          pageNum: 1,
-          size: -1,
-          categoryId: val || this.addForm.categoryId,
-          rootCategoryLevelId: this.rootId
-        };
-        try {
-          const res = await getAssetList(params);
-          this.planDeviceList = res.list;
-          this.planDeviceList.map((item) => {
-            item.showName = item.name + '(' + item.code + ')';
-          });
-          this.currentEquItemIndex = 0;
-          const item = this.planDeviceList[0];
-          const { equiLocation, equiLocationCode } = this.getEquiLocation(item);
-          this.$nextTick(() => {
-            this.$refs.equiListTree.setCurrentKey(item.id);
-            this.equipmentInfo = {
-              equiTypeId: this.addForm.categoryId,
-              equiCode: item.code,
-              equiName: item.name,
-              equiModel: item.category.modelType,
-              equiLocation: equiLocation,
-              equiLocationCode: equiLocationCode
-            };
-            this.currentEquItemIndex = 0;
-            this.planDeviceList[0]['equiLocation'] = equiLocation;
-            this.planDeviceList[0]['equiLocationCode'] = equiLocationCode;
-
-            // 对比详情返回的数据和设备分类下面所有的设备列表,将sparePart同步过去
-            if (this.addForm.planDeviceList) {
-              for (let i = 0; i < this.planDeviceList.length; i++) {
-                for (let j = 0; j < this.addForm.planDeviceList.length; j++) {
-                  if (
-                    this.planDeviceList[i].id ===
-                    this.addForm.planDeviceList[j].deviceId
-                  ) {
-                    this.$refs.equiListTree.setChecked(
-                      this.planDeviceList[i].id,
-                      true
-                    );
-                    this.planDeviceList[i]['workItems'] =
-                      this.addForm.planDeviceList[j]['workItems'];
-                    this.planDeviceList[i]['sparePart'] =
-                      this.addForm.planDeviceList[j]['sparePart'];
-                  }
-                }
-              }
-            }
-          });
-        } catch (error) {
-          this.planDeviceList = [];
+      async _getEquipmentList (planId) {
+        const data = await getNotSendOrderList(planId);
+        if (!data?.length) {
+          this.$message.error('所有设备已指派完!');
+          this.handleClose();
+          return;
         }
+        this.planDeviceList = (data || []).map((item) => ({
+          showName: item.substance?.name + '(' + item.substance?.code + ')',
+          ...item,
+          ...item.substance,
+          id: item.id
+        }));
+        this.currentEquItemIndex = 0;
+        const item = this.planDeviceList[0];
+        const { equiLocation, equiLocationCode } = this.getEquiLocation(item);
+        this.$nextTick(() => {
+          this.$refs.equiListTree.setCurrentKey(item.id);
+          this.equipmentInfo = {
+            equiTypeId: this.addForm.categoryId,
+            equiCode: item.code,
+            equiName: item.name,
+            equiModel: item.model,
+            equiLocation: equiLocation,
+            equiLocationCode: equiLocationCode
+          };
+          this.planDeviceList[0]['equiLocation'] = equiLocation;
+          this.planDeviceList[0]['equiLocationCode'] = equiLocationCode;
+        });
       },
       //选择部门(搜索)
-      searchDeptNodeClick (info) {
+      searchDeptNodeClick (id, info) {
+        this.addForm.executeGroupName = info?.name;
         // 根据部门获取人员
-        const params = { groupId: info };
+        const params = { executeGroupId: id };
         this.$nextTick(() => {
           this.$refs.executorRef.getList(params);
         });
       },
+      //执行人
+      handleExecutorChange (id, info) {
+        this.addForm.executeUserName = info?.name;
+      },
       // 封装 - 获取设备位置名称和code方法
       getEquiLocation (data) {
         // 设备位置编码
@@ -424,61 +398,34 @@
         return { equiLocation, equiLocationCode };
       },
       // 提交
-      submit () {
-        console.log(this.planDeviceList);
+      submit (isContinue = false) {
         this.$refs.addFormRef.validate(async (valid) => {
           if (valid) {
             try {
-              let workItemsChecked = true;
-              const selectList = this.$refs.equiListTree.getCheckedNodes();
+              const selectList = this.$refs.equiListTree.getCheckedKeys();
               if (!selectList.length) {
                 this.$message.warning('请选择设备!');
                 return;
               }
-              const planDeviceList = selectList.map((item) => {
-                const obj = this.planDeviceList.find(
-                  (itm) => itm.id === item.id
-                );
-                if (!obj.workItems?.length) {
-                  workItemsChecked = false;
-                }
-
-                const { equiLocation, equiLocationCode } =
-                  this.getEquiLocation(item);
-                return {
-                  equiCode: item.code,
-                  equiName: item.name,
-                  deviceId: item.id,
-                  equiModel: item.modelType,
-                  equiLocation: equiLocation,
-                  equiLocationCode: equiLocationCode,
-                  workItems: obj.workItems ? obj.workItems : [],
-                  sparePart: obj.sparePart ? obj.sparePart : []
-                };
-              });
-
-              if (!workItemsChecked || !selectList.length) {
-                this.$message.warning('请添加操作事项!');
-                return;
-              }
-              if (this.addForm.planType instanceof Object) {
-                this.addForm.planType =
-                  this.planRuleTypeObj[this.addForm.planType.code];
-              }
 
               // 将newData拼接成一个新数组赋值给后端接收字段
-              const params = this.addForm;
-              params.planDeviceList = planDeviceList;
+              const params = {
+                executeGroupId: this.addForm.executeGroupId,
+                executeGroupName: this.addForm.executeGroupName,
+                executeUserId: this.addForm.executeUserId,
+                executeUserName: this.addForm.executeUserName,
+                orderCode: this.addForm.orderCode,
+                planDeviceIds: selectList.join(','),
+                planId: this.addForm.planId
+              };
 
-              params.type = this.dialogTitle.includes('巡点检')
-                ? 1
-                : this.dialogTitle.includes('保养')
-                ? 2
-                : 3;
-              await saveOrUpdate(params);
-              const type = this.dialogTitle.includes('新增') ? '新增' : '编辑';
-              this.handleClose();
-              this.$message.success(type + '成功!');
+              await sendOrder(params);
+              if (!isContinue) {
+                this.handleClose();
+              } else {
+                this._getEquipmentList(this.addForm.planId);
+              }
+              this.$message.success('派单成功!');
               this.$emit('refreshList');
             } catch (error) {
               console.log(error);
@@ -492,9 +439,6 @@
 
 <style lang="scss" scoped>
   ::v-deep .el-form {
-    .el-form-item {
-      margin-bottom: 14px;
-    }
     .el-form-item__error {
       padding-top: 0;
     }
@@ -563,5 +507,11 @@
   }
   .dialog_footer {
     text-align: center;
+    position: relative;
+    .el-link {
+      position: absolute;
+      right: 0;
+      top: 30%;
+    }
   }
 </style>

+ 40 - 14
src/components/addPatrolPlanDialog/index.vue

@@ -228,10 +228,10 @@
                   <span>{{ row.specification }}/{{ row.modelType }}</span>
                 </template>
               </el-table-column>
-              <el-table-column label="所需数量" align="center" prop="num">
+              <el-table-column label="所需数量" align="center" prop="needNum">
                 <template slot-scope="scope">
                   <el-input
-                    v-model.number="scope.row.num"
+                    v-model.number="scope.row.needNum"
                     oninput="value=value.replace(/[^\d]/g,'')"
                     style="width: 100%"
                     placeholder="输入数量"
@@ -241,9 +241,9 @@
               </el-table-column>
               <el-table-column label="单位" align="center" prop="measuringUnit">
               </el-table-column>
-              <el-table-column label="费用" align="center" prop="univalence">
+              <el-table-column label="费用" align="center" prop="cost">
                 <template slot-scope="scope">
-                  {{ scope.row.num * scope.row.univalence
+                  {{ scope.row.cost
                   }}{{ scope.row.univalenceUnit == 'wanyuan' ? '万元' : '元' }}
                 </template>
               </el-table-column>
@@ -571,8 +571,13 @@
                       this.addForm.planDeviceList[j]['workItems'];
                     this.planDeviceList[i]['sparePart'] =
                       this.addForm.planDeviceList[j]['sparePart'];
-                    // this.$set(this.planDeviceList[i],'totalCost',this.addForm.planDeviceList[j]['totalCost'])
-                    // this.planDeviceList[i]['totalCost'] = this.addForm.planDeviceList[j]['totalCost']
+                    this.$set(
+                      this.planDeviceList[i],
+                      'totalCost',
+                      this.addForm.planDeviceList[j]['totalCost']
+                    );
+                    this.planDeviceList[i]['totalCost'] =
+                      this.addForm.planDeviceList[j]['totalCost'];
                   }
                 }
               }
@@ -702,7 +707,7 @@
         //       code: item.code,
         //       name: item.name,
         //       model: item.model,
-        //       num: item.num,
+        //       needNum: item.needNum,
         //       unit: item.unit,
         //       amount: item.amount
         //     }
@@ -727,8 +732,8 @@
         let applayList =
           this.planDeviceList[this.currentEquItemIndex].sparePart;
         let total = 0;
-        applayList.map((item) => {
-          if (item.hasOwnProperty('num') && item.num != '') {
+        applayList.map((item, index) => {
+          if (item.hasOwnProperty('needNum') && item.needNum != '') {
             switch (item.univalenceUnit) {
               case 'wanyuan': {
                 item.chengs = 10000;
@@ -741,7 +746,15 @@
               default:
                 break;
             }
-            total = total + item.num * item.univalence * item.chengs;
+            const cost = item.needNum * item.univalence;
+
+            this.$set(
+              this.planDeviceList[this.currentEquItemIndex].sparePart[index],
+              'cost',
+              cost
+            );
+
+            total = total + cost * item.chengs;
           }
         });
         this.$set(
@@ -795,7 +808,23 @@
 
               // 将newData拼接成一个新数组赋值给后端接收字段
               const params = this.addForm;
-              params.planDeviceList = planDeviceList;
+              params.planDeviceList = planDeviceList.map((item) => {
+                item.sparePart = item.sparePart.map((item) => ({
+                  categoryId: item.id,
+                  categoryName: item.name,
+                  cost: item.cost,
+                  model: item.modelType,
+                  needNum: item.needNum,
+                  parValue: item.univalenceUnit,
+                  specification: item.specification,
+                  unit: item.measuringUnit,
+                  unitPrice: item.univalence
+                }));
+
+                return item;
+              });
+
+              params.urgent = 1;
 
               params.type = this.dialogTitle.includes('巡点检')
                 ? 1
@@ -819,9 +848,6 @@
 
 <style lang="scss" scoped>
   ::v-deep .el-form {
-    .el-form-item {
-      margin-bottom: 14px;
-    }
     .el-form-item__error {
       padding-top: 0;
     }

+ 10 - 1
src/layout/index.vue

@@ -53,7 +53,7 @@
     <router-layout />
     <!-- logo 图标 -->
     <template v-slot:logo>
-      <img src="@/assets/logo.svg" alt="logo" />
+      <img src="@/assets/logo.png" alt="logo" />
     </template>
     <!-- 顶栏右侧区域 -->
     <template v-slot:right>
@@ -242,6 +242,15 @@
 </script>
 
 <style lang="scss">
+  .ele-admin-layout {
+    .ele-admin-logo {
+      font-size: 18px !important;
+      img {
+        width: 50px !important;
+        height: auto !important;
+      }
+    }
+  }
   // 侧栏菜单徽章样式,定位在右侧垂直居中并调小尺寸
   .ele-menu-badge {
     position: absolute;

+ 179 - 205
src/views/maintenance/components/redeployOther.vue

@@ -2,24 +2,17 @@
   <el-dialog :visible.sync="visible" title="转派工单" width="60%">
     <div class="sparepart-apply">
       <div class="select-box">
-          <el-form  label-width="80px">
-              <el-row :gutter="40">
-                <el-col :span="10">
-                    <el-form-item label="工单单号">
-                        <el-input
-                          v-model="row.workOrderCode"
-                          size="small"
-                          disabled
-                        ></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="10">
-                    <el-form-item label="部门">
-						<deptSelect
-						  v-model="deptCode"
-						  @changeGroup="deptClick"
-						/>
-                      <!-- <selectTree
+        <el-form label-width="80px">
+          <el-row :gutter="40">
+            <el-col :span="10">
+              <el-form-item label="工单单号">
+                <el-input v-model="row.code" disabled></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="部门">
+                <deptSelect v-model="groupId" @changeGroup="deptClick" />
+                <!-- <selectTree
                         ref="treeDept"
                         class="form-input"
                         :options="treeList"
@@ -31,67 +24,36 @@
                         }"
                         @getValue="deptClick"
                       /> -->
-                    </el-form-item>
-                </el-col>
-                <el-col :span="10">
-                    <el-form-item label=""  label-width="10px">
-                      <el-input
-                        v-model="name"
-                        size="small"
-                        placeholder="搜索姓名"
-                      ></el-input>
-                    </el-form-item>
-                </el-col>
-                <el-col :span="6">
-                  <el-form-item label=""  label-width="10px">
-                    <el-button
-                      @click="search"
-                      type="primary"
-                      icon="el-icon-search"
-                      size="small"
-                      >搜索</el-button>
-                    <el-button
-                      @click="reset"
-                      icon="el-icon-refresh-left"
-                      size="small"
-                      >重置</el-button>
-                  </el-form-item>
-                </el-col>
-              </el-row>
-          </el-form>
+              </el-form-item>
+            </el-col>
+            <el-col :span="10">
+              <el-form-item label="" label-width="10px">
+                <el-input v-model="name" placeholder="搜索姓名"></el-input>
+              </el-form-item>
+            </el-col>
+            <el-col :span="6">
+              <el-form-item label="" label-width="10px">
+                <el-button @click="search" type="primary" icon="el-icon-search"
+                  >搜索</el-button
+                >
+                <el-button @click="reset" icon="el-icon-refresh-left"
+                  >重置</el-button
+                >
+              </el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
       </div>
 
       <div class="data-tab">
-        <el-table
-          :data="tableData"
-          tooltip-effect="dark"
-          style="width: 100%"
-          stripe
+        <ele-pro-table
+          ref="tableRef"
+          :columns="columns"
           highlight-current-row
+          :datasource="datasource"
           @current-change="handleChange"
-          :header-cell-style="{ background: '#EEEEEE', border: 'none' }"
-        >
-          <el-table-column width="80px" label="序号" type="index"  :index="indexMethod">
-          </el-table-column>
-          <el-table-column label="工号" prop="jobNumber" width="200px">
-          </el-table-column>
-          <el-table-column label="姓名" prop="name"></el-table-column>
-          <el-table-column label="电话" prop="phone"></el-table-column>
-          <el-table-column label="部门" prop="groupName" ></el-table-column>
-        </el-table>
-        <div class="zw-table-pagebar">
-          <el-pagination
-            background
-            layout="total, sizes, prev, pager, next, jumper"
-            :total="total"
-            :page-sizes="[15, 30, 50, 100, 500]"
-            :page-size.sync="pages.size"
-            :current-page.sync="pages.pageNum"
-            @current-change="handleCurrentChange"
-            @size-change="handleSizeChange"
-          >
-          </el-pagination>
-        </div>
+          cache-key="redeployOther"
+        ></ele-pro-table>
       </div>
       <div slot="footer" class="footer">
         <el-button @click="cancel">返回</el-button>
@@ -103,154 +65,166 @@
 
 <script>
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
+  import { workOrderRotate } from '@/api/maintenance/patrol_maintenance';
   import { getUserPage } from '@/api/system/organization';
-export default {
-  components: { deptSelect },
-  props: {
-    // sourceType: {
-    //   type: Number, //1,保养工单;2,维修工单
-    //   required: true
-    // }
-  },
-  data () {
-    return {
-      visible: false,
-      treeList:[],
-      pages: {
-        pageNum: 1,
-        size: 15
-      },
-      total: 0,
-      selectedRow: {},
-      deptCode:'',
-      executorDeptName:'',
-      name:'',
-      row: {},
-      tableData:[],
-
-    }
-  },
-  async created() {
-      this.getUserList()
-  },
-  methods: {
-    open (row) {
-      this.row = row
-      this.name = ''
-      this.deptCode = ''
-      this.executorDeptName = ''
-      this.selectedRow = {}
-      this.visible = true
-    },
-
-    //重置
-    reset() {
-      this.name = ''
-      this.search();
+  export default {
+    components: { deptSelect },
+    props: {
+      // sourceType: {
+      //   type: Number, //1,保养工单;2,维修工单
+      //   required: true
+      // }
     },
-    // 搜索
-    search() {
-       this.getUserList({name:this.name})
+    data () {
+      return {
+        visible: false,
+        treeList: [],
+        pages: {
+          pageNum: 1,
+          size: 15
+        },
+        total: 0,
+        selectedRow: {},
+        groupId: '',
+        executorDeptName: '',
+        name: '',
+        row: {},
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'jobNumber',
+            label: '工号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'name',
+            label: '姓名',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'phone',
+            label: '电话',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'groupName',
+            label: '部门',
+            align: 'center',
+            showOverflowTooltip: true
+          }
+        ]
+      };
     },
+    async created () {},
+    methods: {
+      open (row) {
+        this.row = row;
+        this.name = '';
+        this.groupId = '';
+        this.executorDeptName = '';
+        this.selectedRow = {};
+        this.visible = true;
+      },
 
-    deptClick(data) {
-      if (data){
-		  const params = { groupId: data };
-		  this.getUserList(params);
-      }
-    },
+      //重置
+      reset () {
+        this.name = '';
+        this.search();
+      },
+      // 搜索
+      search () {
+        this.$refs.tableRef.reload();
+      },
 
-    // 获取审核人列表、巡点检人员
-    async getUserList (params) {
-        let data =  { ...this.pages , deptCode : this.deptCode }
-        // 如果传了参数就是获取巡点检人员数据
-        if (params) {
-          data = Object.assign(data, params)
+      deptClick (data) {
+        if (data) {
+          this.$refs.tableRef.reload();
         }
-		const res = await getUserPage(data);
-		this.tableData = res.list
-		this.total  = res.count
-    },
-
-
-    // 表格选中行
-    handleChange (row) {
-      if(row){
-        this.selectedRow = row
-      }
-    },
-
+      },
 
-    handleCurrentChange () {
-      this.getUserList()
-    },
-    handleSizeChange () {
-      this.pages.pageNum = 1
-      this.getUserList()
-    },
+      // 获取审核人列表、巡点检人员
+      async datasource ({ page, limit, where, order }) {
+        this.selectedRow = {};
+        // 如果传了参数就是获取巡点检人员数据
+        return getUserPage({
+          pageNum: page,
+          size: limit,
+          ...where,
+          groupId: this.groupId,
+          name: this.name
+        });
+      },
 
-    // 实现分页序号连贯
-    indexMethod (index) {
-      index = index + 1 + (this.pages.pageNum - 1) * this.pages.size
-      return index
-    },
+      // 表格选中行
+      handleChange (row) {
+        console.log(row);
+        if (row) {
+          this.selectedRow = row;
+        }
+      },
 
-    async submit () {
-      if(this.selectedRow.id){
-        let params = {
-           executorDeptCode:this.deptCode,
-           executorId:this.selectedRow.userId,
-           workOrderId:this.row.id,
-           executorDeptName:this.executorDeptName,
-           executorName:this.selectedRow.trueName
-         }
-          const res = await workOrderSend(params)
-          if(res.success){
-             this.$message.success(`该工单成功转派给${this.selectedRow.trueName}`)
-             this.visible = false
-             this.$emit('refresh')
-          }
-      }else{
-         return this.$message.warning('请选择转派人员')
+      async submit () {
+        if (this.selectedRow.id) {
+          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');
+        } else {
+          return this.$message.warning('请选择转派人员');
+        }
+      },
+      cancel () {
+        this.visible = false;
       }
-    },
-    cancel () {
-      this.visible = false
     }
-  }
-}
+  };
 </script>
 
 <style lang="scss" scoped>
-.sparepart-apply {
-  min-height: 40vh;
-  .select-box {
-    margin-bottom: 10px;
-  }
+  .sparepart-apply {
+    min-height: 40vh;
+    .select-box {
+      margin-bottom: 10px;
+    }
 
-  .material-item + .material-item {
-    margin-top: 10px;
+    .material-item + .material-item {
+      margin-top: 10px;
+    }
   }
-}
 
-.flex-between {
-  display: flex;
-  justify-content: space-between;
-  padding-right: 20%;
-}
+  .flex-between {
+    display: flex;
+    justify-content: space-between;
+    padding-right: 20%;
+  }
 
-.list-box {
-  max-height: 60vh;
-  overflow-y: auto;
-  overflow-x: hidden;
-}
+  .list-box {
+    max-height: 60vh;
+    overflow-y: auto;
+    overflow-x: hidden;
+  }
 
-.footer {
-  padding: 10px;
-  text-align: right;
-  background: #fff;
-  display:flex;
-  align-items:center;
-  justify-content: center;
-}
+  .footer {
+    padding: 10px;
+    text-align: right;
+    background: #fff;
+    display: flex;
+    align-items: center;
+    justify-content: center;
+  }
 </style>

+ 10 - 4
src/views/maintenance/equipment/plan/index.vue

@@ -16,7 +16,7 @@
             type="primary"
             icon="el-icon-plus"
             class="ele-btn-icon"
-            @click="openAdd('新增巡点检计划')"
+            @click="openAdd('新增保养计划')"
           >
             新建临时计划
           </el-button>
@@ -43,7 +43,7 @@
             type="primary"
             :underline="false"
             icon="el-icon-edit"
-            @click="openAdd('编辑巡点检计划', row)"
+            @click="openAdd('编辑保养计划', row)"
           >
             编辑
           </el-link>
@@ -51,7 +51,7 @@
             type="primary"
             :underline="false"
             icon="el-icon-edit"
-            @click="openEdit(row)"
+            @click="openDispatch(row)"
           >
             派单
           </el-link>
@@ -59,7 +59,7 @@
             type="primary"
             :underline="false"
             icon="el-icon-edit"
-            @click="openEdit(row)"
+            @click="handleWithdraw(row)"
           >
             撤回
           </el-link>
@@ -69,16 +69,19 @@
 
     <!-- 新建或编辑弹窗 -->
     <AddPatrolPlanDialog ref="addPatrolPlanDialogRef" @refreshList="reload" />
+    <dispatchDialog ref="dispatchDialogRef" @refreshList="reload" type="保养" />
   </div>
 </template>
 
 <script>
+  import DispatchDialog from '@/components/addPatrolPlanDialog/DispatchDialog';
   import AddPatrolPlanDialog from '@/components/addPatrolPlanDialog';
   import PlanSearch from './components/plan-search.vue';
   import { getPage } from '@/api/maintenance/patrol_maintenance';
   export default {
     components: {
       PlanSearch,
+      DispatchDialog,
       AddPatrolPlanDialog
     },
     data () {
@@ -221,6 +224,9 @@
         this.$refs.addPatrolPlanDialogRef.open(dialogTitle, row);
       },
 
+      openDispatch (row) {
+        this.$refs.dispatchDialogRef.open(row);
+      },
       goDetail ({ id }) {
         this.$router.push({
           path: '/maintenance/equipment/plan/details',

+ 4 - 4
src/views/maintenance/patrol/plan/details.vue

@@ -66,13 +66,13 @@
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="创建人">
-                  <span> {{ infoData.createUserName }} </span>
+                <el-form-item label="创建部门">
+                  <span> {{ infoData.createUserGroupName }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="创建部门">
-                  <span> {{ infoData.createUserGroupName }} </span>
+                <el-form-item label="创建人">
+                  <span> {{ infoData.createUserName }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">

+ 58 - 45
src/views/maintenance/patrol/work/components/work-search.vue

@@ -11,50 +11,60 @@
         <el-form-item label="工单单号:">
           <el-input clearable v-model="where.code" placeholder="请输入" />
         </el-form-item>
-		<el-form-item label="巡点检人员:">
-			<personSelect v-model="where.userId" />
-		</el-form-item>
+        <el-form-item label="巡点检人员:">
+          <el-input
+            clearable
+            v-model="where.executeUserName"
+            placeholder="请输入"
+          />
+        </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="计划单号:">
-          <el-input clearable v-model="where.name" placeholder="请输入" />
+          <el-input clearable v-model="where.planCode" placeholder="请输入" />
         </el-form-item>
         <el-form-item label="状态:">
-          <DictSelection dictName="巡点检工单状态" clearable v-model="where.staus">
+          <DictSelection
+            dictName="巡点检工单状态"
+            clearable
+            v-model="where.orderStatus"
+          >
           </DictSelection>
         </el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="巡点检名称:">
-          <el-input clearable v-model="where.dep" placeholder="请输入" />
+          <el-input clearable v-model="where.planName" placeholder="请输入" />
+        </el-form-item>
+        <el-form-item label="设备分类:">
+          <equipmentSelect v-model="where.categoryLevelId" />
         </el-form-item>
-		<el-form-item label="设备分类:">
-			<equipmentSelect v-model="where.categoryLevelId" />
-		</el-form-item>
       </el-col>
       <el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
         <el-form-item label="巡点检部门:">
           <deptSelect v-model="where.groupId" />
         </el-form-item>
-		<el-form-item label="规则名称:">
-			<el-input clearable v-model="where.name" placeholder="请输入" />
-		</el-form-item>
-		<div class="ele-form-actions">
-			<el-button
-				type="primary"
-				icon="el-icon-search"
-				class="ele-btn-icon"
-				@click="search"
-				size="small"
-			>
-				查询
-			</el-button>
-			 <el-button @click="reset"
-				 icon="el-icon-refresh-left"
-				 size="small"
-				 type="primary"
-			 >重置</el-button>
-		</div>
+        <el-form-item label="规则名称:">
+          <el-input clearable v-model="where.name" placeholder="请输入" />
+        </el-form-item>
+        <div class="ele-form-actions">
+          <el-button
+            type="primary"
+            icon="el-icon-search"
+            class="ele-btn-icon"
+            @click="search"
+            size="small"
+          >
+            查询
+          </el-button>
+          <el-button
+            @click="reset"
+            icon="el-icon-refresh-left"
+            size="small"
+            type="primary"
+            >重置</el-button
+          >
+        </div>
       </el-col>
     </el-row>
   </el-form>
@@ -63,39 +73,42 @@
 <script>
   import equipmentSelect from '@/components/CommomSelect/equipment-select.vue';
   import deptSelect from '@/components/CommomSelect/dept-select.vue';
-	import personSelect from '@/components/CommomSelect/person-select.vue';
+  import personSelect from '@/components/CommomSelect/person-select.vue';
   export default {
-		components: { equipmentSelect , deptSelect , personSelect },
-    data() {
+    components: { equipmentSelect, deptSelect, personSelect },
+    data () {
       // 默认表单数据
       const defaultWhere = {
         name: '',
+        executeUserName: '',
+        planCode: '',
         code: '',
-        fixCode:'',
-        ownershipGroupId:''
+        orderStatus: '',
+        groupId: '',
+        categoryLevelId: '',
+        planName: ''
       };
       return {
         // 表单数据
         where: { ...defaultWhere },
-        treeData:[]
+        treeData: []
       };
     },
     computed: {
       // 是否开启响应式布局
-      styleResponsive() {
+      styleResponsive () {
         return this.$store.state.theme.styleResponsive;
       }
     },
-    created(){
-    },
+    created () {},
     methods: {
       /* 搜索 */
-      search() {
+      search () {
         console.log(this.where);
         this.$emit('search', this.where);
       },
       /*  重置 */
-      reset() {
+      reset () {
         this.where = { ...this.defaultWhere };
         this.search();
       }
@@ -103,9 +116,9 @@
   };
 </script>
 <style lang="scss" scoped>
-    .ele-form-actions{
-		display:flex;
-		align-items: center;
-		justify-content: flex-end;
-	}
-</style>
+  .ele-form-actions {
+    display: flex;
+    align-items: center;
+    justify-content: flex-end;
+  }
+</style>

+ 66 - 116
src/views/maintenance/patrol/work/details.vue

@@ -1,102 +1,87 @@
 <template>
   <div class="page" v-loading="pageLoading">
     <el-form label-width="130px">
-      <!--      <div class="page-title">
-        <div class="page-title-div">
-          <el-page-header @back="goBack" content="工单详情"> </el-page-header>
-        </div>
-      </div> -->
-      <!-- tab切换 -->
-      <!--      <div class="switch">
-        <div class="switch_left">
-          <ul>
-            <li :class="{ active: num == 1 }" @click="tab(1)">详情</li>
-          </ul>
-        </div>
-
-        <div class="switch_right">
-          <div class="head_btn"></div>
-        </div>
-      </div> -->
-
       <div class="content-detail" v-show="num == 1">
         <div class="basic-details">
           <HeaderTitle title="基本信息" size="16px"></HeaderTitle>
           <el-row>
             <el-col :span="12">
               <el-col :span="12">
-                <el-form-item label="工单单号">
-                  <span> {{ data.workOrderCode }} </span>
+                <el-form-item label="计划单号">
+                  <span> {{ infoData.planCode }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="来源计划单号">
-                  <span> {{ data.planCode }} </span>
+                <el-form-item label="来源计划配置单号">
+                  <span> {{ infoData.planConfigCode }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="巡点检名称">
-                  <span> {{ data.planName }} </span>
+                  <span> {{ infoData.planName }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="巡点检部门">
-                  <span> {{ data.executorDeptName }} </span>
+                  <span>
+                    {{ infoData.executeGroupName }}
+                  </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="巡点检人员">
-                  <span> {{ data.executeUserName }} </span>
+                  <span>
+                    {{ infoData.executeUserName }}
+                  </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="巡点检周期">
-                  <span v-if="data.ruleInfo">
-                    {{ data.ruleInfo.cycleValue
-                    }}{{ getDictValue('巡点检周期', data.ruleInfo.cycleType) }}
-                  </span>
+                <el-form-item label="计划完成时长">
+                  <span v-if="infoData.duration >= 0"
+                    >{{ infoData.duration }}分钟</span
+                  >
                 </el-form-item>
               </el-col>
               <el-col :span="12">
-                <el-form-item label="计划完成时长">
-                  <span v-if="data.duration >= 0">
-                    {{ data.duration }}分钟
+                <el-form-item label="巡点检周期">
+                  <span v-if="infoData.ruleInfo">
+                    {{ infoData.ruleInfo.cycleValue
+                    }}{{
+                      getDictValue('巡点检周期', infoData.ruleInfo.cycleType)
+                    }}
                   </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="设备分类">
-                  <span> {{ data.equiTypeName }} </span>
+                  <span> {{ infoData.categoryLevelName }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="规则名称">
-                  <span> {{ data.ruleName }} </span>
+                  <span>
+                    {{ infoData.ruleName }}
+                  </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="创建部门">
-                  <span> {{ data.createOrgName }} </span>
+                  <span> {{ infoData.createGroupName }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="创建人">
-                  <span> {{ data.createUserName }} </span>
+                  <span> {{ infoData.createUserName }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="12">
                 <el-form-item label="创建时间">
-                  <span> {{ data.createTime }} </span>
-                </el-form-item>
-              </el-col>
-              <el-col :span="24">
-                <el-form-item label="操作方式/注意事项">
-                  <span></span>
+                  <span> {{ infoData.createTime }} </span>
                 </el-form-item>
               </el-col>
               <el-col :span="24">
                 <el-form-item label="备注">
-                  <span> {{ data.remark }} </span>
+                  <span> {{ infoData.remark }} </span>
                 </el-form-item>
               </el-col>
             </el-col>
@@ -122,20 +107,20 @@
             <el-col :span="8" class="column">
               <span class="label">确认结果:</span>
               <span class="value">{{
-                data.status ? data.status.descp : ''
+                infoData.status ? infoData.status.descp : ''
               }}</span>
             </el-col>
             <el-col :span="8" class="column">
               <span class="label">实际开始时间:</span>
-              <span class="value">{{ data.acceptTime }}</span>
+              <span class="value">{{ infoData.acceptTime }}</span>
             </el-col>
             <el-col :span="8" class="column">
               <span class="label">实际结束时间:</span>
-              <span class="value">{{ data.finishTime }}</span>
+              <span class="value">{{ infoData.finishTime }}</span>
             </el-col>
             <el-col :span="24" class="column">
               <span class="label">超期原因:</span>
-              <span class="value">{{ data.timeoutCause }}</span>
+              <span class="value">{{ infoData.timeoutCause }}</span>
             </el-col>
           </el-row>
         </div>
@@ -146,47 +131,40 @@
           <div class="maintain_equipment_info_content">
             <div
               class="equipment_item"
-              v-for="item in data.planEquiList"
+              v-for="item in infoData.deviceList"
               :key="item.id"
             >
-              <div class="equipment_info">
+              <div class="equipment_info" v-if="item.substance">
                 <div class="item_info">
                   <span class="item_label">设备编码</span>
-                  <span class="item_value">{{ item.equiCode }}</span>
+                  <span class="item_value">{{ item.substance.code }}</span>
                 </div>
                 <div class="item_info">
                   <span class="item_label">设备名称</span>
-                  <span class="item_value">{{ item.equiName }}</span>
+                  <span class="item_value">{{ item.substance.name }}</span>
                 </div>
                 <div class="item_info">
                   <span class="item_label">设备型号</span>
-                  <span class="item_value">{{ item.equiModel }}</span>
+                  <span class="item_value">{{ item.substance.model }}</span>
                 </div>
                 <div class="item_info">
                   <span class="item_label">设备位置</span>
-                  <span class="item_value">{{ item.equiLocation }}</span>
+                  <span class="item_value">{{
+                    item.substance.positionNames
+                  }}</span>
                 </div>
               </div>
               <p>操作事项</p>
               <div class="matter_info">
-                <el-table :data="item.itemList" border>
+                <el-table :data="item.workItems || []" border>
                   <el-table-column label="序号" align="center" width="80">
                     <template slot-scope="scope">
                       <span>{{ scope.$index + 1 }}</span>
                     </template>
                   </el-table-column>
-                  <el-table-column label="事项" prop="name" />
+                  <el-table-column label="事项" prop="item" />
                   <el-table-column label="内容" prop="content" />
-                  <el-table-column label="标准" prop="norm" />
-                  <el-table-column label="">
-                    <template slot-scope="{ row }">
-                      <span v-if="row.isNormal == 0" style="color: red"
-                        >缺陷</span
-                      >
-                      <span v-if="row.isNormal == 1">正常</span>
-                    </template>
-                  </el-table-column>
-                  <el-table-column label="结果" prop="resultText" />
+                  <el-table-column label="标准" prop="standard" />
                 </el-table>
               </div>
             </div>
@@ -250,7 +228,7 @@
               </div>
               <div>
                 <span>处理进度:</span>
-                <span>{{ statusObj[repairNotes.status] }}</span>
+                <!-- <span>{{ statusObj[repairNotes.status] }}</span> -->
               </div>
             </div>
           </div>
@@ -261,41 +239,16 @@
 </template>
 
 <script>
-  // import { workOrderDetails, sendAudit } from '@/api/stockManagement/stocking'
-  // import repair from '@/api/maintenance/repair/repair'
-  // import { useDictLabel, patrolMatterStatus } from '@/utils/dict/index'
+  import dictMixins from '@/mixins/dictMixins';
+  import { getWordOrderDetail } from '@/api/maintenance/patrol_maintenance';
   export default {
+    mixins: [dictMixins],
     data () {
       return {
         num: 1,
-        infoData: {
-          type: '',
-          area: { province: {}, area: {}, city: {} },
-          mgrOrg: {},
-          manager: {}
-        },
+        infoData: {},
         dialogVisible: false,
         data: {},
-        statusObj: {
-          0: '未计划',
-          1: '待审核',
-          2: '已派单',
-          3: '执行中',
-          4: '待验收',
-          5: '已完成',
-          6: '未修复'
-        },
-        cycleOptObj: {
-          1: '时/次',
-          2: '天/次',
-          //3: '周/次',
-          4: '月/次',
-          5: '年/次',
-          11: '次/天',
-          //12: '次/周',
-          13: '次/月',
-          14: '次/年'
-        },
         repairNotes: {},
         pageLoading: false,
         typeValue: null,
@@ -316,11 +269,9 @@
         from: null
       };
     },
-    async created () {
-      if (this.$router.history.current.query.from == 2) {
-        this.form = this.$router.history.current.query.from;
-      }
-      // this.getInfo()
+    created () {
+      this.requestDict('巡点检周期');
+      this.getInfo();
     },
     methods: {
       // getStatus: useDictLabel(patrolMatterStatus),
@@ -343,21 +294,20 @@
       // 表格数据
       getInfo () {
         this.pageLoading = true;
-        workOrderDetails({
-          workOrderCcode: this.$route.query.code
-        })
-          .then((res) => {
-            if (res.success) {
-              this.data = res.data;
-              this.data.planEquiList = this.data.planEquiList.filter(
-                (item) => item.itemList && item.itemList.length > 0
-              );
-              // 获取 缺陷设备报修记录
-              const repairId = res.data.planEquiList[0].repairId;
-              if (repairId) {
-                this.getRepairNotes(repairId);
-              }
-            }
+        getWordOrderDetail(this.$route.query.id)
+          .then((data) => {
+            this.infoData = data;
+            // if (res.success) {
+            //   this.data = res.data;
+            //   this.data.planEquiList = this.data.planEquiList.filter(
+            //     (item) => item.itemList && item.itemList.length > 0
+            //   );
+            //   // 获取 缺陷设备报修记录
+            //   const repairId = res.data.planEquiList[0].repairId;
+            //   if (repairId) {
+            //     this.getRepairNotes(repairId);
+            //   }
+            // }
             this.pageLoading = false;
           })
           .catch(() => {

+ 160 - 171
src/views/maintenance/patrol/work/index.vue

@@ -1,178 +1,171 @@
 <template>
   <div class="ele-body">
-     <el-card shadow="never" v-loading="loading">
-	   <work-search @search="reload">
-	   </work-search>
-	   <!-- 数据表格 -->
-	   <ele-pro-table
-	     ref="table"
-	     :columns="columns"
-	     :datasource="datasource"
-	     cache-key="systemRoleTable"
-	   >
-	     <!-- 表头工具栏 -->
-	     <template v-slot:toolbar>
-		   <el-button
-		     size="small"
-		     type="primary"
-		     class="ele-btn-icon"
-		     @click="goDetail()"
-		   >
-		     详情
-		   </el-button>
-	     </template>
-			 <!-- 操作列 -->
-			 <template v-slot:action="{ row }">
-				   <el-link
-					 type="primary"
-					 :underline="false"
-					 icon="el-icon-edit"
-				   >
-					 报工
-				   </el-link>
-				 <el-link
-					 type="primary"
-					 :underline="false"
-					 icon="el-icon-edit"
-					  @click="toRedeploy(row)"
-				 >
-					转派
-				 </el-link>
-			 </template>
-	   </ele-pro-table>
-     </el-card>
-	   <!-- 转派弹窗 -->
-	   <redeployOther ref="redeployOtherRef" @refresh="reload" />
+    <el-card shadow="never" v-loading="loading">
+      <work-search @search="reload"> </work-search>
+      <!-- 数据表格 -->
+      <ele-pro-table
+        ref="table"
+        :columns="columns"
+        :datasource="datasource"
+        cache-key="patrolOrderTable"
+      >
+        <template v-slot:code="{ row }">
+          <el-link type="primary" @click="goDetail(row)">
+            {{ row.code }}
+          </el-link>
+        </template>
+        <!-- 操作列 -->
+        <template v-slot:action="{ row }">
+          <el-link type="primary" :underline="false" icon="el-icon-edit">
+            报工
+          </el-link>
+          <el-link
+            type="primary"
+            :underline="false"
+            icon="el-icon-edit"
+            @click="toRedeploy(row)"
+          >
+            转派
+          </el-link>
+        </template>
+      </ele-pro-table>
+    </el-card>
+    <!-- 转派弹窗 -->
+    <redeployOther ref="redeployOtherRef" @refresh="reload" />
   </div>
 </template>
 
 <script>
   import WorkSearch from './components/work-search.vue';
-  import { pageRoles } from '@/api/system/role'; 
-	import redeployOther from '@/views/maintenance/components/redeployOther.vue';
+  import redeployOther from '@/views/maintenance/components/redeployOther.vue';
+  import { getWorkOrderPage } from '@/api/maintenance/patrol_maintenance';
+  import dictMixins from '@/mixins/dictMixins';
   export default {
     components: {
       WorkSearch,
-	  redeployOther
+      redeployOther
     },
+    mixins: [dictMixins],
     data () {
       return {
-		// 表格列配置
-		columns: [
-		  {
-		    columnKey: 'index',
-		    label: '序号',
-		    type: 'index',
-		    width: 55,
-		    align: 'center',
-		    showOverflowTooltip: true,
-		    fixed: 'left'
-		  },
-		  {
-		    prop: 'code',
-		    label: '工单单号',
-		    align: 'center',	
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-		  {
-		    prop: 'groupId',
-		    label: '计划单号',
-		    align: 'center',
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-		  {
-		    prop: 'name',
-		    label: '巡点检名称',
-		    align: 'center',	
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-		  {
-		    prop: 'cycle',
-		    label: '巡点检部门',
-		    align: 'center',	
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-			{
-			  prop: 'auto',
-			  label: '巡点检人员',
-			  align: 'center',	
-			  showOverflowTooltip: true,
-			  minWidth: 110
-			},
-			{
-			  prop: 'status',
-			  label: '工单生成时间',
-			  align: 'center',	
-			  showOverflowTooltip: true,
-			  minWidth: 110
-			},
-		  {
-		    prop: 'creater',
-		    label: '开工时间',
-		    align: 'center',	
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-		  {
-		    prop: 'createTime',
-		    label: '报工时间',
-		    align: 'center',
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-		  {
-		    columnKey: 'createBy',
-		    label: '实际工时',
-		    width: 230,
-		    align: 'center',
-		    resizable: false,
-		    showOverflowTooltip: true
-		  },
-		  {
-		    prop: 'enable',
-		    label: '状态',
-		    align: 'center',	
-		    showOverflowTooltip: true,
-		    slot: 'enable',
-		    minWidth: 110
-		  },
-		  {
-		    prop: 'result',
-		    label: '执行结果',
-		    align: 'center',	
-		    showOverflowTooltip: true,
-		    minWidth: 110
-		  },
-		  {
-		    columnKey: 'action',
-		    label: '操作',
-		    width: 150,
-		    align: 'center',
-		    resizable: false,
-		    slot: 'action',
-		    showOverflowTooltip: true
-		  }
-		],
+        // 表格列配置
+        columns: [
+          {
+            columnKey: 'index',
+            label: '序号',
+            type: 'index',
+            width: 55,
+            align: 'center',
+            showOverflowTooltip: true,
+            fixed: 'left'
+          },
+          {
+            prop: 'code',
+            label: '工单单号',
+            columnKey: 'code',
+            slot: 'code',
+            align: 'center'
+          },
+          {
+            prop: 'planId',
+            label: '计划单号',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'planName',
+            label: '巡点检名称',
+            align: 'center',
+            showOverflowTooltip: true,
+            minWidth: 120
+          },
+          {
+            prop: 'executeGroupName',
+            label: '巡点检部门',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'executeUserName',
+            label: '巡点检人员',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'createTime',
+            label: '工单生成时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'acceptTime',
+            label: '开工时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'finishTime',
+            label: '报工时间',
+            align: 'center',
+            showOverflowTooltip: true
+          },
+          {
+            columnKey: 'orderHour',
+            label: '实际工时(分钟)',
+            align: 'center',
+            resizable: false,
+            showOverflowTooltip: true
+          },
+          {
+            prop: 'orderStatus',
+            label: '状态',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter: (row) => {
+              return this.getDictValue('巡点检工单状态', row.orderStatus);
+            }
+          },
+          {
+            prop: 'acceptanceStatus',
+            label: '执行结果',
+            align: 'center',
+            showOverflowTooltip: true,
+            formatter (row) {
+              return { 1: '通过', 2: '不通过' }[row.acceptanceStatus];
+            }
+          },
+          {
+            columnKey: 'action',
+            label: '操作',
+            width: 150,
+            align: 'center',
+            resizable: false,
+            slot: 'action',
+            showOverflowTooltip: true
+          }
+        ],
         // 加载状态
         loading: false,
         pageType: 'add',
         dialogTitle: '',
-		isBindPlan:false,
+        isBindPlan: false
       };
     },
-    computed: {
-
+    created () {
+      this.requestDict('巡点检工单状态');
     },
+    computed: {},
     methods: {
       /* 表格数据源 */
-      datasource({ page, limit, where, order }) {
-        return pageRoles({ pageNum: page, size: limit, ...where });
+      datasource ({ page, limit, where, order }) {
+        return getWorkOrderPage({
+          pageNum: page,
+          size: limit,
+          ...where,
+          type: 1
+        });
       },
-      async changeEnable(row) {
+      async changeEnable (row) {
         const res = await putRoles(row);
         if (res.code == 0) {
           this.$message({
@@ -184,28 +177,24 @@
         }
       },
       /* 刷新表格 */
-      reload(where) {
+      reload (where) {
         this.$refs.table.reload({ page: 1, where });
       },
-	  
-	  
-		goDetail(){
-			this.$router.push({
-				path: '/maintenance/patrol/work/details',
-				// query: {
-				//   id
-				// }
-			})
-		},
-		// 转派
-		toRedeploy(row) {
-		  this.$refs.redeployOtherRef.open(row);
-		},
-	  
+
+      goDetail ({ id }) {
+        this.$router.push({
+          path: '/maintenance/patrol/work/details',
+          query: {
+            id
+          }
+        });
+      },
+      // 转派
+      toRedeploy (row) {
+        this.$refs.redeployOtherRef.open(row);
+      }
     }
   };
 </script>
 
-<style lang="scss" scoped>
-
-</style>
+<style lang="scss" scoped></style>

+ 2 - 2
vue.config.js

@@ -33,10 +33,10 @@ module.exports = {
       '/api': {
         // target: 'http://192.168.3.51:86', // 测试
         // target: 'http://192.168.3.34:8080', // 刘毅
-        target: 'http://192.168.3.35:8080', // kang杨威
+        // target: 'http://192.168.3.35:8080', // kang杨威
         // target: 'http://192.168.3.25:8080', // 黄峥嵘
         // target: 'http://192.168.3.41:8080', // 何江鹏
-        // target: 'http://192.168.3.33:8080', // 谢一平
+        target: 'http://192.168.3.33:8080', // 谢一平
         // target: 'http://192.168.3.34:8080', // 刘毅
 
         changeOrigin: true, // 只有这个值为true的情况下 才表示开启跨域