Bladeren bron

驾驶舱-超时工单卡片

wanglt 5 maanden geleden
bovenliggende
commit
26803c88c1

+ 5 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/controller/GxtRepairOrderController.java

@@ -337,6 +337,11 @@ public class GxtRepairOrderController extends BaseController
         result.setRepairPending(gxtRepairOrderService.getUnfinishedOrder());
         result.setWorkPending(gxtWorkOrderService.getUnfinishedOrder());
         result.setHasCenter(gxtWorkOrderService.hasCenter());
+        GxtRepairOrder gxtRepairOrder = new GxtRepairOrder();
+        gxtRepairOrder.setWorkOrderStatus("assigned");
+        gxtRepairOrder.setOutTimeParam(30);
+        List<GxtRepairOrder> orders = gxtRepairOrderService.selectGxtRepairOrderList(gxtRepairOrder);
+        result.setTimeOutNum(orders.size());
         return success(result);
     }
 

+ 10 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtOrderData.java

@@ -174,6 +174,16 @@ public class GxtOrderData extends BaseEntity
 
     private String devices;
 
+    private Integer timeOutNum;
+
+    public Integer getTimeOutNum() {
+        return timeOutNum;
+    }
+
+    public void setTimeOutNum(Integer timeOutNum) {
+        this.timeOutNum = timeOutNum;
+    }
+
     public String getDevices() {
         return devices;
     }

+ 10 - 0
ygtx-gxt/src/main/java/com/ygtx/gxt/domain/GxtRepairOrder.java

@@ -225,6 +225,8 @@ public class GxtRepairOrder extends BaseEntity
     /** 确认状态(0-未确认,1-确认,2-已反馈) */
     private Integer confirmStatus;
 
+    private Integer outTimeParam;
+
     public void setId(Long id) 
     {
         this.id = id;
@@ -761,6 +763,14 @@ public class GxtRepairOrder extends BaseEntity
         this.confirmStatus = confirmStatus;
     }
 
+    public Integer getOutTimeParam() {
+        return outTimeParam;
+    }
+
+    public void setOutTimeParam(Integer outTimeParam) {
+        this.outTimeParam = outTimeParam;
+    }
+
     @Override
     public String toString() {
         return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)

+ 1 - 0
ygtx-gxt/src/main/resources/mapper/gxt/GxtRepairOrderMapper.xml

@@ -163,6 +163,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="resetMethod != null  and resetMethod != ''"> and reset_method = #{resetMethod}</if>
             <if test="returnType != null  and returnType != ''"> and return_type = #{returnType}</if>
             <if test="returnReason != null  and returnReason != ''"> and return_reason = #{returnReason}</if>
+            <if test="outTimeParam != null"> and DATE_SUB(NOW(), INTERVAL #{outTimeParam} MINUTE) > assign_time </if>
 
             <!-- 业务特定数据权限过滤条件 -->
             <if test="params.businessDataScope != null and params.businessDataScope != ''">

+ 25 - 2
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -1717,7 +1717,8 @@ import MisInfoSelectSingle from "@/components/misInfoSelect/single.vue";
 import {listMisInfo, listWorkPerson} from "@/api/gxt/misInfo.js";
 import {listGxtOrder} from "@/api/gxt/gxtOrder.js";
 import useUserStore from '@/store/modules/user'
-
+import { useRoute } from 'vue-router'
+import { decryptParams } from '@/utils/encrypt'
 
 const { proxy } = getCurrentInstance()
 const { gxt_maintenance_type, gxt_work_order_status, gxt_order_priority_type,gxt_repair_order_flow_action_type,gxt_order_suspend_reason,gxt_repair_method,gxt_reset_method,gxt_return_type } = proxy.useDict("gxt_maintenance_type", "gxt_work_order_status", "gxt_order_priority_type","gxt_repair_order_flow_action_type","gxt_order_suspend_reason","gxt_repair_method","gxt_reset_method","gxt_return_type")
@@ -2147,7 +2148,8 @@ const queryParams = ref({
   priorityType: null,
   score: null,
   reviewContent: null,
-  maintenanceType: null
+  maintenanceType: null,
+  outTimeParam: null,
 })
 
 // 表单验证规则
@@ -2372,6 +2374,27 @@ function closeReturnDialog() {
 }
 
 onMounted(() => {
+  // 从路由参数中获取值
+  const route = useRoute();
+  if (route.query.data) {
+    // 解密参数
+    const decryptedParams = decryptParams(route.query.data);
+    if (decryptedParams.timeOutNum) {
+      queryParams.value.timeOutNum = decryptedParams.timeOutNum;
+    }
+    if (decryptedParams.workOrderStatus) {
+      queryParams.value.workOrderStatus = decryptedParams.workOrderStatus;
+    }
+  } else {
+    // 为了向后兼容,也支持原始的参数传递方式
+    if (route.query.timeOutNum) {
+      queryParams.value.timeOutNum = route.query.timeOutNum;
+    }
+    if (route.query.workOrderStatus) {
+      queryParams.value.workOrderStatus = route.query.workOrderStatus;
+    }
+  }
+  
   getList()
   getMaintenanceCenterAndStationList()
   getFaultCodeList()

+ 29 - 3
ygtx-ui/src/views/index4.vue

@@ -284,6 +284,16 @@
     <div class="right-content">
       <!-- 第一行:4个图标,每个占据25%宽度 -->
       <div class="icons-row">
+        <el-card class="floating-card icon-item" @click="toRoute(0)">
+          <div class="icon-wrapper">
+            <div class="icon-circle bg-color-red">
+              <el-icon class="fa fa-exclamation-triangle text-danger"></el-icon>
+              <!-- 角标 -->
+              <div v-if="homePageData.timeOutNum>0" class="badge">{{ homePageData.timeOutNum }}</div>
+            </div>
+          </div>
+          <div class="icon-label">超时工单</div>
+        </el-card>
         <el-card class="floating-card icon-item" @click="toRoute(1)">
           <div class="icon-wrapper">
             <div class="icon-circle bg-color-blue">
@@ -458,6 +468,7 @@ import { ref, reactive } from 'vue';
 import { getHomePageOrderListData } from '@/api/gxt/gxtOrder';
 import { selectHomePageData } from '@/api/gxt/repairOrder';
 import { listAllEquipment } from '@/api/gxt/equipment';
+import { encryptParams } from '@/utils/encrypt';
 
 export default {
   name: 'Index4',
@@ -575,7 +586,8 @@ export default {
         repairPending: 0,
         workPending: 0,
         pendingNum: 0,
-        hasCenter: null
+        hasCenter: null,
+        timeOutNum: 0,
       },
       // 多级筛选数据
       selectedFilterCombination: [],
@@ -1379,6 +1391,7 @@ export default {
           this.homePageData.workPending = response.data.workPending || 0;
           this.homePageData.pendingNum = this.homePageData.repairPending + this.homePageData.workPending;
           this.homePageData.hasCenter = response.data.hasCenter;
+          this.homePageData.timeOutNum = response.data.timeOutNum;
         }
       });
     },
@@ -1392,7 +1405,20 @@ export default {
       }
     },
     toRoute(num) {
-      if(num==1) {
+      if(num==0) {
+        // 加密参数并传递到目标路由页面
+        const params = {
+          timeOutNum: this.homePageData.timeOutNum,
+          workOrderStatus: 'assigned'
+        };
+        const encryptedParams = encryptParams(params);
+        this.$router.push({
+          path: "/workOrder/repairOrder",
+          query: {
+            data: encryptedParams
+          }
+        });
+      }else if(num==1) {
         if(this.homePageData.repairPending>0 && this.homePageData.workPending==0) {
           this.$router.push("/workOrder/repairOrder");
         }else{
@@ -1580,7 +1606,7 @@ export default {
 }
 
 .icon-item {
-  width: 24%;
+  width: 19%;
   text-align: center;
   cursor: pointer;
   transition: all 0.3s ease;