HD_wangm 4 mēneši atpakaļ
vecāks
revīzija
412401ce47

+ 11 - 6
pages/index/index.uvue

@@ -437,7 +437,7 @@
 		        keep.requestIgnoreBatteryOptimizations();
 		    }
 		}
-		
+
 		// keep.wifilock();
 		// 稳定定时器 需要的用户使用(默认定时器1 )
 		const is_time = uni.getStorageSync("notify_key")
@@ -559,7 +559,7 @@
 			console.error('处理超时工单点击事件失败:', e)
 		}
 	}
-	
+
 	const registerPush =() =>{
 		console.log("获取CID")
 		uni.getPushClientId({
@@ -766,15 +766,20 @@
 		top: 35rpx;
 		right: 35rpx;
 		background-color: #ff4d4f;
-		border-radius: 20rpx;
-		width: 40rpx;
+		border-radius: 40rpx;
+		min-width: 40rpx;
 		height: 40rpx;
+		display: flex; // 启用 Flexbox 布局
+		justify-content: center; // 水平居中
+		align-items: center;     // 垂直居中
+		box-sizing: border-box;  // 确保 padding 不影响整体尺寸
+		padding: 0 12rpx; 
 
 	}
 	.count {
-		line-height: 40rpx;
+		// line-height: 40rpx;
 		font-size: 26rpx;
-		text-align: center;
+		// text-align: center;
 		color: #ffffff;
 	}
 

+ 14 - 70
pages/order/index.uvue

@@ -52,9 +52,6 @@
                 <view class="list-item">
                     <view class="item-container">
                         <view class="item-header">
-                            <!-- <image class="location-icon" src="/static/images/workbench/list/2.png" mode="aspectFit"></image>
-                            <text class="item-title">{{ getOrderType(item) }}</text>
-                            <text class="detail-link">类型 ›</text> -->
 							<text class="item-title">{{ getWorkOrderProjectNo(item) }}-{{ getPcsDeviceName(item) }}{{ getOrderType(item) }}</text>
 							<text class="status-tag" :class="getStatusClass(item)">{{ getWorkOrderStatus(item) }}</text>
                         </view>
@@ -62,43 +59,6 @@
 							<view class="info-label">
 								<text class="text-gray">{{ getDisplayTime(item) }}</text>
 							</view>
-							<view class="info-value">
-								<!-- <button
-									v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item,'')"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item,'')"
-									>
-									接单
-								</button>
-								<button
-									v-else-if="getOrderStatus(item) == 'to_approve' && canHandleOrder(item,'')"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item,'')"
-									>
-									审批
-								</button>
-								<button
-									v-else-if="getOrderStatus(item) == 'suspended' && canHandleOrder(item,'')"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item,'')"
-									>
-									恢复
-								</button>
-								<button
-									v-else-if="getOrderStatus(item) == 'return' && canHandleOrder(item,'acceptReturn')"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item,'acceptReturn')"
-									>
-									退回
-								</button>
-								<button
-									v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item,'acceptReturn')"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item,'acceptReturn')"
-									>
-									退回
-								</button> -->
-							</view>
 						</view>
 						<view class="btn-group">
 							<view
@@ -172,8 +132,10 @@ import type { acceptOrderInfo } from '../../types/order'
 import type { SysDictData, DictDataResponse } from '../../types/dict'
 import { getOrderList } from '../../api/order/list'
 import { getDictDataByType } from '../../api/dict/index'
-import {checkPermi} from '../../utils/storage'
+import {checkPermi, getUserInfo} from '../../utils/storage'
 
+	const userId = ref<string>("")
+	const roles = ref<string>('')
     // 列表数据
     const dataList = ref<acceptOrderInfo[]>([])
     let keyword = ref<string>("")
@@ -588,7 +550,7 @@ const statusConfig: StatusItem[] = [
 		handleSearch()
 	}
 
-	// 方法:判断当前工单是否显示操作按钮(基于 orderType)
+	// 方法:判断当前工单是否显示操作按钮
 	const canHandleOrder = (item: any | null, buttonType: string | ''): boolean => {
 	  if (item == null) return false
 	  let permit: string[] = []
@@ -600,20 +562,20 @@ const statusConfig: StatusItem[] = [
 		  // 接单
 		  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
 	  } else if(orderItem.workOrderStatus == 'to_finish') {
-		  if(buttonType != '' && buttonType == "suspend") {
+		  if(buttonType != '' && buttonType == "suspend" && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
 			  // 挂起
 			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:suspend'] : ['gxt:repairOrder:suspend']
-		  } else if(buttonType != '' && buttonType == "return" && orderItem.orderType == 1) {
+		  } else if(buttonType != '' && buttonType == "return" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
 			  // 退回
 			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:return'] : ['gxt:repairOrder:return']
-		  } else if(buttonType != '' && buttonType == "finalize" && orderItem.orderType == 1) {
+		  } else if(buttonType != '' && buttonType == "finalize" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
 			  // 复启
 			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:finalize'] : ['gxt:repairOrder:finalize']
 		  }
 	  } else if(orderItem.workOrderStatus == 'to_approve') {
 	  	// 审批
 	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:approve'] : ['gxt:repairOrder:approve']
-	  } else if(orderItem.workOrderStatus == 'suspended') {
+	  } else if(orderItem.workOrderStatus == 'suspended' && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
 	  	// 恢复
 	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:resume'] : ['gxt:repairOrder:resume']
 	  } else if(orderItem.workOrderStatus == 'return') {
@@ -736,6 +698,12 @@ const statusConfig: StatusItem[] = [
 	// 初始化
 	// onMounted(() => {
 	onLoad((options: any) => {
+		const userInfo = getUserInfo()
+		if (userInfo != null) {
+			const userIdStr = userInfo['userId'].toString()
+			userId.value = userIdStr
+			roles.value = userInfo['roleNames'].toString()
+		}
 	    const params = options as UTSJSONObject
 		const isDeal = params['isDeal'] as string | null
 		if(isDeal != null) {
@@ -847,30 +815,6 @@ const statusConfig: StatusItem[] = [
         padding: 30rpx;
     }
 
-    .item-header {
-        flex-direction: row;
-        align-items: center;
-        margin-bottom: 16rpx;
-
-        .location-icon {
-            width: 32rpx;
-            height: 32rpx;
-            margin-right: 8rpx;
-        }
-
-        .item-title {
-            flex: 1;
-            font-size: 32rpx;
-            color: #333333;
-            font-weight: bold;
-        }
-
-        .detail-link {
-            font-size: 28rpx;
-            color: #999999;
-        }
-    }
-
     .item-address {
         font-size: 26rpx;
         color: #999999;

+ 108 - 44
pages/order/overdue.uvue

@@ -18,7 +18,7 @@
             :hasMore="hasMore"
             @refresh="handleRefresh"
             @loadMore="loadMore"
-            @itemClick="handleItemClick"
+            @itemClick="handleView"
         >
             <template #default="{ item, index }">
                 <view class="list-item">
@@ -31,15 +31,22 @@
 							<view class="info-label">
 								<text class="text-gray">{{ getCreateTime(item) }}</text>
 							</view>
-							<view class="info-value">
-								<view
-									v-if="canHandleOrder(item)"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item)"
-									>
-									<text class="btn-text">接单</text>
-								</view>
-								</view>
+						</view>
+						<view class="btn-group">
+							<view
+								v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item,'accept')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'')"
+								>
+								<text class="btn-text">接单</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item,'acceptReturn')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'acceptReturn')"
+								>
+								<text class="btn-text">退回</text>
+							</view>
 						</view>
                     </view>
                 </view>
@@ -76,14 +83,27 @@ import {checkPermi} from '../../utils/storage'
 	const isRefreshing = ref<boolean>(false)
 	// 添加刷新时间戳,用于防抖
 	const lastRefreshTime = ref<number>(0)
+	
+	const getOrderStatus = (item: any | null): string => {
+		if (item == null) return ''
+		const orderItem = item as acceptOrderInfo
+		return orderItem.workOrderStatus ?? ''
+	}
 
 	// 方法:判断当前工单是否显示操作按钮(基于 orderType)
-	const canHandleOrder = (item: any | null): boolean => {
+	const canHandleOrder = (item: any | null, buttonType: string | ''): boolean => {
 	    if (item == null) return false
 	    let permit: string[] = []
 	    const orderItem = item as acceptOrderInfo
-	    // 接单
-	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
+	    if(orderItem.workOrderStatus == 'assigned' && buttonType != '' && buttonType == "acceptReturn" && orderItem.orderType == 1) {
+			// 接单退回
+			permit = ['gxt:repairOrder:acceptReturn']
+	    } else if(orderItem.workOrderStatus == 'assigned' && buttonType != '' && buttonType == "accept") {
+			// 接单
+			permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
+	    } else {
+			return false
+		}
 	    return checkPermi(permit)
 	}
 
@@ -142,9 +162,24 @@ import {checkPermi} from '../../utils/storage'
         const shouldRefresh = isRefresh != null ? isRefresh : false
 
         loading.value = true
+        let refreshTimeout: number | null = null;
+        
         if (shouldRefresh && !disablePullDown) {
             page.value = 1
             refreshing.value = true
+            
+            // 添加超时机制,确保刷新动画不会一直显示
+            refreshTimeout = setTimeout(() => {
+                if (refreshing.value) {
+                    refreshing.value = false;
+                    isRefreshing.value = false;
+                    console.log("刷新超时,强制结束刷新状态");
+                    uni.showToast({
+                        title: '刷新超时',
+                        icon: 'none'
+                    });
+                }
+            }, 10000); // 10秒超时
         } else if (shouldRefresh && disablePullDown) {
             // 状态切换时,重置页码但不触发动画
             page.value = 1
@@ -225,12 +260,17 @@ import {checkPermi} from '../../utils/storage'
             })
         } finally {
             loading.value = false
+            // 清除超时定时器
+            if (refreshTimeout != null) {
+                clearTimeout(refreshTimeout);
+            }
             // 确保刷新状态能结束
             if (shouldRefresh) {
                 refreshing.value = false;
                 // 使用setTimeout确保状态彻底重置
                 setTimeout(() => {
                     isRefreshing.value = false;
+                    refreshing.value = false; // 再次确保刷新状态被重置
                 }, 50);
             }
         }
@@ -314,19 +354,41 @@ import {checkPermi} from '../../utils/storage'
         console.log("isRefreshing.value1===",isRefreshing.value)
         // 设置刷新标志
         isRefreshing.value = true;
+        refreshing.value = true; // 确保刷新状态被设置
+        
+        // 添加超时机制,确保刷新动画不会一直显示
+        const refreshTimeout = setTimeout(() => {
+            if (refreshing.value || isRefreshing.value) {
+                refreshing.value = false;
+                isRefreshing.value = false;
+                console.log("刷新超时,强制结束刷新状态");
+                uni.showToast({
+                    title: '刷新超时',
+                    icon: 'none'
+                });
+            }
+        }, 10000); // 10秒超时
 
         try {
             await loadData(true, false); // 使用默认的下拉刷新行为
         } catch (error) {
             console.error('刷新失败:', error);
+            // 发生异常时确保刷新状态被重置
+            refreshing.value = false;
+            isRefreshing.value = false;
+        } finally {
+            // 清除超时定时器
+            clearTimeout(refreshTimeout);
+            // 确保刷新状态最终被重置
             refreshing.value = false;
             isRefreshing.value = false;
         }
 
-        // 确保在一定时间后重置刷新标志,防止意外情况
+        // 额外的保险机制,确保在一定时间后重置刷新标志
         setTimeout(() => {
-            isRefreshing.value = false
-        }, 100) // 延迟重置,确保状态完全更新
+            refreshing.value = false;
+            isRefreshing.value = false;
+        }, 200) // 延迟重置,确保状态完全更新
     }
 
     // 加载更多
@@ -361,14 +423,33 @@ import {checkPermi} from '../../utils/storage'
     }
 
     // 点击列表项
-    const handleItemClick = (item: any | null): void => {
+    const handleItemClick = (item: any | null, buttonType: string | ''): void => {
         if (item == null) return
         const orderItem = item as acceptOrderInfo
-		// 跳转到工单详情页
+		if(orderItem.workOrderStatus == 'assigned') {
+			if(buttonType != '' && buttonType == "acceptReturn") {
+				// 跳转到退回页面
+				uni.navigateTo({
+					url: `/pages/order/detail/returnIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			} else {
+				// 跳转到接单页面
+				uni.navigateTo({
+				    url: `/pages/order/detail/acceptIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			}
+		}
+    }
+	
+	// 点击列表项
+	const handleView = (item: any | null): void => {
+	    if (item == null) return
+	    const orderItem = item as acceptOrderInfo
 		uni.navigateTo({
-		    url: `/pages/order/detail/acceptIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+			url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
 		})
-    }
+	
+	}
 
     // 清空搜索
     const clearSearch = (): void => {
@@ -406,6 +487,7 @@ import {checkPermi} from '../../utils/storage'
 
     // 组件卸载前清理事件监听
     onBeforeUnmount(() => {
+        // 确保所有状态都被重置
         refreshing.value = false
         loading.value = false
         isRefreshing.value = false
@@ -462,24 +544,6 @@ import {checkPermi} from '../../utils/storage'
         padding: 30rpx;
     }
 
-    .item-header {
-        flex-direction: row;
-        align-items: center;
-        margin-bottom: 16rpx;
-
-        .item-title {
-            flex: 1;
-            font-size: 32rpx;
-            color: #333333;
-            font-weight: bold;
-        }
-
-        .detail-link {
-            font-size: 28rpx;
-            color: #999999;
-        }
-    }
-
 .item-header {
   flex-direction: row;
   align-items: flex-start;
@@ -596,10 +660,10 @@ import {checkPermi} from '../../utils/storage'
 	}
 }
 
-// /* 超时 */
-// .status-overdue {
-// 	background-color: #fff2f0;
-// 	color: #ff4d4f;
-// 	border-color: #ffccc7;
-// }
+.btn-group {
+  flex-direction: row;
+  align-items: center;
+  justify-content: flex-end;
+  margin-top: 20rpx;
+}
 </style>

+ 188 - 69
pages/order/pendingOrder.uvue

@@ -18,7 +18,7 @@
             :hasMore="hasMore"
             @refresh="handleRefresh"
             @loadMore="loadMore"
-            @itemClick="handleItemClick"
+            @itemClick="handleView"
         >
             <template #default="{ item, index }">
                 <view class="list-item">
@@ -31,35 +31,63 @@
 							<view class="info-label">
 								<text class="text-gray">{{ getDisplayTime(item) }}</text>
 							</view>
-							<view class="info-value">
-								<view
-									v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item)"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item)"
-									>
-									<text class="btn-text">接单</text>
-								</view>
-								<view
-									v-else-if="getOrderStatus(item) == 'to_approve' && canHandleOrder(item)"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item)"
-									>
-									<text class="btn-text">审批</text>
-								</view>
-								<!-- <button
-									v-else-if="getOrderStatus(item) == 'to_finish' && canHandleOrder(item)"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item)"
-									>
-									挂起
-								</button> -->
-								<view
-									v-else-if="getOrderStatus(item) == 'suspended' && canHandleOrder(item)"
-									class="btn-primary info-value"
-									@click.stop="handleItemClick(item)"
-									>
-									<text class="btn-text">恢复</text>
-								</view>
+						</view>
+						<view class="btn-group">
+							<view
+								v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item,'accept')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'')"
+								>
+								<text class="btn-text">接单</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'to_approve' && canHandleOrder(item,'')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'')"
+								>
+								<text class="btn-text">审批</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'suspended' && canHandleOrder(item,'')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'')"
+								>
+								<text class="btn-text">恢复</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'return' && canHandleOrder(item,'acceptReturn')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'acceptReturn')"
+								>
+								<text class="btn-text">退回</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item,'acceptReturn')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'acceptReturn')"
+								>
+								<text class="btn-text">退回</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'to_finish' && canHandleOrder(item, 'return')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item, 'return')"
+								>
+								<text class="btn-text">退回</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'to_finish' && canHandleOrder(item, 'suspend')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item, 'suspend')"
+								>
+								<text class="btn-text">挂起</text>
+							</view>
+							<view
+								v-if="getOrderStatus(item) == 'to_finish' && canHandleOrder(item, 'finalize')"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item, 'finalize')"
+								>
+								<text class="btn-text">复启</text>
 							</view>
 						</view>
                     </view>
@@ -75,7 +103,10 @@ import type { acceptOrderInfo } from '../../types/order'
 import type { SysDictData } from '../../types/dict'
 import { pendingList } from '../../api/order/list'
 import { getDictDataByType } from '../../api/dict/index'
-import {checkPermi} from '../../utils/storage'
+import {checkPermi, getUserInfo} from '../../utils/storage'
+
+	const userId = ref<string>("")
+	const roles = ref<string>('')
 
     // 列表数据
     const dataList = ref<acceptOrderInfo[]>([])
@@ -105,26 +136,40 @@ import {checkPermi} from '../../utils/storage'
 	}
 
 	// 方法:判断当前工单是否显示操作按钮(基于 orderType)
-	const canHandleOrder = (item: any | null): boolean => {
+	const canHandleOrder = (item: any | null, buttonType: string | ''): boolean => {
 	  if (item == null) return false
 	  let permit: string[] = []
 	  const orderItem = item as acceptOrderInfo
-	  if(orderItem.workOrderStatus == 'assigned') {
-	  	// 接单
-	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
-	  // } else if(orderItem.workOrderStatus == 'to_finish') {
-	  // 	// 挂起
-	  // 	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:suspend'] : ['gxt:repairOrder:suspend']
+	  if(orderItem.workOrderStatus == 'assigned' && buttonType != '' && buttonType == "acceptReturn" && orderItem.orderType == 1) {
+	  			// 接单退回
+	  			permit = ['gxt:repairOrder:acceptReturn']
+	  } else if(orderItem.workOrderStatus == 'assigned' && buttonType != '' && buttonType == "accept") {
+	  		  // 接单
+	  		  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
+	  } else if(orderItem.workOrderStatus == 'to_finish') {
+	  		  if(buttonType != '' && buttonType == "suspend" && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
+	  			  // 挂起
+	  			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:suspend'] : ['gxt:repairOrder:suspend']
+	  		  } else if(buttonType != '' && buttonType == "return" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
+	  			  // 退回
+	  			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:return'] : ['gxt:repairOrder:return']
+	  		  } else if(buttonType != '' && buttonType == "finalize" && orderItem.orderType == 1 && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
+	  			  // 复启
+	  			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:finalize'] : ['gxt:repairOrder:finalize']
+	  		  }
 	  } else if(orderItem.workOrderStatus == 'to_approve') {
 	  	// 审批
 	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:approve'] : ['gxt:repairOrder:approve']
-	  } else if(orderItem.workOrderStatus == 'suspended') {
+	  } else if(orderItem.workOrderStatus == 'suspended' && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
 	  	// 恢复
 	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:resume'] : ['gxt:repairOrder:resume']
-	  } else {
-		  return false
+	  } else if(orderItem.workOrderStatus == 'return') {
+	  	// 接单退回
+	  	permit = ['gxt:repairOrder:acceptReturn']
+	  }
+	   else {
+	  		  return false
 	  }
-
 	  // const orderType = (item as acceptOrderInfo).orderType
 	  return checkPermi(permit)
 	}
@@ -185,9 +230,24 @@ import {checkPermi} from '../../utils/storage'
         const disablePull = disablePullDown != null ? disablePullDown : false
 
         loading.value = true
+        let refreshTimeout: number | null = null;
+        
         if (shouldRefresh && !disablePull) {
             page.value = 1
             refreshing.value = true
+            
+            // 添加超时机制,确保刷新动画不会一直显示
+            refreshTimeout = setTimeout(() => {
+                if (refreshing.value) {
+                    refreshing.value = false;
+                    isRefreshing.value = false;
+                    console.log("刷新超时,强制结束刷新状态");
+                    uni.showToast({
+                        title: '刷新超时',
+                        icon: 'none'
+                    });
+                }
+            }, 10000); // 10秒超时
         } else if (shouldRefresh && disablePull) {
             // 状态切换时,重置页码但不触发动画
             page.value = 1
@@ -268,12 +328,17 @@ import {checkPermi} from '../../utils/storage'
             })
         } finally {
             loading.value = false
+            // 清除超时定时器
+            if (refreshTimeout != null) {
+                clearTimeout(refreshTimeout);
+            }
             // 确保刷新状态能结束
             if (shouldRefresh) {
                 refreshing.value = false;
                 // 使用setTimeout确保状态彻底重置
                 setTimeout(() => {
                     isRefreshing.value = false;
+                    refreshing.value = false; // 再次确保刷新状态被重置
                 }, 50);
             }
         }
@@ -379,6 +444,20 @@ import {checkPermi} from '../../utils/storage'
         console.log("isRefreshing.value1===",isRefreshing.value)
         // 设置刷新标志
         isRefreshing.value = true;
+        refreshing.value = true; // 确保刷新状态被设置
+        
+        // 添加超时机制,确保刷新动画不会一直显示
+        const refreshTimeout = setTimeout(() => {
+            if (refreshing.value || isRefreshing.value) {
+                refreshing.value = false;
+                isRefreshing.value = false;
+                console.log("刷新操作超时,重置刷新状态");
+                uni.showToast({
+                    title: '刷新超时',
+                    icon: 'none'
+                });
+            }
+        }, 10000);
 
         try {
             await loadData(true, false); // 使用默认的下拉刷新行为
@@ -386,12 +465,18 @@ import {checkPermi} from '../../utils/storage'
             console.error('刷新失败:', error);
             refreshing.value = false;
             isRefreshing.value = false;
+        } finally {
+            clearTimeout(refreshTimeout);
+            // 确保刷新状态最终被重置
+            refreshing.value = false;
+            isRefreshing.value = false;
         }
 
-        // 确保在一定时间后重置刷新标志,防止意外情况
+        // 额外的保险机制,确保在一定时间后重置刷新标志
         setTimeout(() => {
-            isRefreshing.value = false
-        }, 100) // 延迟重置,确保状态完全更新
+            refreshing.value = false;
+            isRefreshing.value = false;
+        }, 200) // 延迟重置,确保状态完全更新
     }
 
     // 加载更多
@@ -424,15 +509,50 @@ import {checkPermi} from '../../utils/storage'
             isSearching.value = false
         }, 100)
     }
+	
+	// 点击列表查看
+	const handleView = (item: any | null): void => {
+	    if (item == null) return
+	    const orderItem = item as acceptOrderInfo
+		uni.navigateTo({
+			url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
+		})
+	
+	}
 
     // 点击列表项
-    const handleItemClick = (item: any | null): void => {
+    const handleItemClick = (item: any | null, buttonType: string | ''): void => {
         if (item == null) return
         const orderItem = item as acceptOrderInfo
 		if(orderItem.workOrderStatus == 'assigned') {
-			uni.navigateTo({
-			    url: `/pages/order/detail/acceptIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
-			})
+			if(buttonType != '' && buttonType == "acceptReturn") {
+				// 跳转到退回页面
+				uni.navigateTo({
+					url: `/pages/order/detail/returnIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			} else {
+				// 跳转到接单页面
+				uni.navigateTo({
+				    url: `/pages/order/detail/acceptIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			}
+		} else if(orderItem.workOrderStatus == 'to_finish') {
+			if(buttonType != '' && buttonType == "suspend") {
+				// 跳转到待结单页面
+				uni.navigateTo({
+					url: `/pages/order/detail/suspendIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			} else if(buttonType != '' && buttonType == "return") {
+				// 跳转到退回页面
+				uni.navigateTo({
+					url: `/pages/order/detail/returnIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			} else if(buttonType != '' && buttonType == "finalize") {
+				// 跳转到复启页面
+				uni.navigateTo({
+					url: `/pages/order/detail/resetIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			}
 		} else if(orderItem.workOrderStatus == 'to_approve') {
 			// 跳转到待审批页面
 			uni.navigateTo({
@@ -443,9 +563,14 @@ import {checkPermi} from '../../utils/storage'
 			uni.navigateTo({
 			    url: `/pages/order/detail/resumeIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
+		} else if(orderItem.workOrderStatus == 'return') {
+			// 跳转到退回页面
+			uni.navigateTo({
+			    url: `/pages/order/detail/returnIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+			})
 		} else {
 			uni.navigateTo({
-			    url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
 		}
 
@@ -476,6 +601,12 @@ import {checkPermi} from '../../utils/storage'
 
 	// 初始化
 	onMounted(() => {
+		const userInfo = getUserInfo()
+		if (userInfo != null) {
+			const userIdStr = userInfo['userId'].toString()
+			userId.value = userIdStr
+			roles.value = userInfo['roleNames'].toString()
+		}
 	    loadStatusDictList()
 	    loadData(true, false)
 		// 监听接单成功的事件,刷新列表
@@ -487,6 +618,7 @@ import {checkPermi} from '../../utils/storage'
 
     // 组件卸载前清理事件监听
     onBeforeUnmount(() => {
+        // 确保所有状态都被重置
         refreshing.value = false
         loading.value = false
         isRefreshing.value = false
@@ -543,24 +675,6 @@ import {checkPermi} from '../../utils/storage'
         padding: 30rpx;
     }
 
-    .item-header {
-        flex-direction: row;
-        align-items: center;
-        margin-bottom: 16rpx;
-
-        .item-title {
-            flex: 1;
-            font-size: 32rpx;
-            color: #333333;
-            font-weight: bold;
-        }
-
-        .detail-link {
-            font-size: 28rpx;
-            color: #999999;
-        }
-    }
-
 .item-header {
   flex-direction: row;
   align-items: flex-start;
@@ -690,7 +804,12 @@ import {checkPermi} from '../../utils/storage'
 		padding: 5px 15px;
 	}
 }
-
+.btn-group {
+  flex-direction: row;
+  align-items: center;
+  justify-content: flex-end;
+  margin-top: 20rpx;
+}
 // /* 超时 */
 // .status-overdue {
 // 	background-color: #fff2f0;

+ 1 - 1
pages/score/index.uvue

@@ -925,7 +925,7 @@
 }
 
 .month-filter {
-  padding: 6rpx 16rpx;
+  padding: 6rpx 14rpx;
   margin-left: 12rpx;
   font-size: 24rpx;
   border-radius: 24rpx;

+ 1 - 1
pages/worktime/index.uvue

@@ -936,7 +936,7 @@ onBeforeUnmount(() => {
 }
 
 .time-filter {
-  padding: 6rpx 16rpx;
+  padding: 6rpx 14rpx;
   margin-left: 12rpx;
   font-size: 24rpx;
   border-radius: 24rpx;