Sfoglia il codice sorgente

添加复运,查看优化

HD_wangm 3 mesi fa
parent
commit
45189956cc

+ 9 - 0
api/order/detail.uts

@@ -116,3 +116,12 @@ export const shutdownOrder = (gxtWorkOrder: UTSJSONObject | null): Promise<any>
 		data: gxtWorkOrder
 	})
 }
+
+// 复运
+export const restartOrder = (gxtWorkOrder: UTSJSONObject | null): Promise<any> => {
+	return request({
+		url: `/mobile/order/restart`,
+		method: 'PUT',
+		data: gxtWorkOrder
+	})
+}

+ 7 - 0
pages.json

@@ -261,6 +261,13 @@
 				"navigationBarTitleText": "停机",
 				"navigationStyle": "#custom"
 			}
+		},
+		{
+			"path": "pages/order/detail/restartIndex",
+			"style": {
+				"navigationBarTitleText": "复运",
+				"navigationStyle": "#custom"
+			}
 		}
 	],
 	"globalStyle": {

+ 0 - 22
pages/order/detail/acceptIndex.uvue

@@ -137,28 +137,6 @@
 			        </scroll-view>
 			    </view>
 			</view>
-
-            <!-- 工单流转 -->
-            <!-- <view class="info-section">
-                <view class="section-title">
-                    <text class="section-title-text">工单流转</text>
-                </view>
-                <view class="info-card" v-if="detailData.workOrderFlowList != null && detailData.workOrderFlowList.length > 0">
-                    <view class="flow-item" v-for="(flow, index) in detailData.workOrderFlowList" :key="index">
-                        <view class="flow-header">
-                            <text class="flow-operator">{{ flow.operatorName ?? '未知操作人' }}</text>
-                            <text class="flow-time">{{ flow.actionTime ?? '' }}</text>
-                        </view>
-                        <view class="flow-content">
-                            <text class="flow-action">{{ getActionTypeName(flow.actionType) }}</text>
-                            <text class="flow-remark" v-if="flow.actionRemark">{{ flow.actionRemark }}</text>
-                        </view>
-                    </view>
-                </view>
-                <view class="info-card" v-else>
-                    <view class="no-data">暂无流转记录</view>
-                </view>
-            </view> -->
         </scroll-view>
 
         <!-- 接单按钮 -->

+ 51 - 21
pages/order/detail/index.uvue

@@ -35,7 +35,7 @@
 					    <text class="info-label">结单退回说明</text>
 					    <text class="info-value">{{ returnReason}}</text>
 					</view>
-					
+
 					<view class="info-item" v-if="acceptReturnType">
 					    <text class="info-label">接单退回原因</text>
 					    <text class="info-value">{{ getAcceptReturnTypeName(acceptReturnType)}}</text>
@@ -60,6 +60,10 @@
 					    <text class="info-label">{{getLabel(detailData)}}</text>
 					    <text class="info-value">{{ getDisplayTime(detailData) }}</text>
 					</view>
+					<view class="info-item" v-if="detailData.orderType == 2">
+					    <text class="info-label">维保类型</text>
+					    <text class="info-value">{{ inspectionTypeLabel }}</text>
+					</view>
 					<view class="info-item" v-if="detailData.orderType == 2">
 					    <text class="info-label">维保内容</text>
 					    <text class="info-value">{{ detailData.content ?? '' }}</text>
@@ -86,10 +90,10 @@
                 </view>
                 <view class="info-card">
                     <view class="image-container">
-                        <image 
-                            v-for="(attachment, index) in attachmentList" 
+                        <image
+                            v-for="(attachment, index) in attachmentList"
                             :key="index"
-                            :src="attachment" 
+                            :src="attachment"
                             :alt="'附件图片' + (index + 1)"
                             class="attachment-image"
                             @click="previewImage(attachment)"
@@ -137,7 +141,7 @@
 	import type { SysDictData } from '../../../types/dict'
 	import { getDictDataByType } from '../../../api/dict/index'
 	import { getBaseUrl } from '../../../utils/request'
-	
+
 	type OrderInfoForDetail = {
 		orderType: Number
 	    id: Number
@@ -174,7 +178,7 @@
 		content: string | null,
 		inspectionType: string | null
 	}
-	
+
     // 详情数据
     const detailData = ref<OrderInfoForDetail>({
 		orderType: 0,
@@ -222,7 +226,8 @@
 	const acceptReturnReason = ref<string>("")
 	const returnTypeDictList = ref<SysDictData[]>([]) // 退回原因字典列表
 	const acceptReturnTypeDictList = ref<SysDictData[]>([]) // 退回原因字典列表
-	
+	const inspectionTypeLabel = ref<string>("") //维保类型
+
 
 	const formatDate = (dateString: string): string => {
 	  if (dateString == '' || dateString == null) return ''
@@ -333,7 +338,7 @@
 	        dictLoaded.value = true
 	    }
 	}
-	
+
     const loading = ref<boolean>(false)
 
     // 控制工单流转列表是否展开
@@ -380,11 +385,11 @@
     // 预览图片
     const previewImage = (url: string) => {
         if (url == '') return
-        
+
         // 检查是否为图片文件
         const imageExtensions = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp']
         const isImage = imageExtensions.some(ext => url.toLowerCase().endsWith(ext))
-        
+
         if (isImage) {
             // 如果是图片,使用uni.previewImage预览
             uni.previewImage({
@@ -415,17 +420,17 @@
 	    const dictItem = statusDictList.value.find(dict => dict.dictValue == rawStatus)
 	    return dictItem!=null ? dictItem.dictLabel : rawStatus
 	}
-	
+
 	const getReturnTypeName = (item: string | null): string | null => {
 	    if (item == null) return ''
 	    // const orderInfoItem = item as orderInfo
 	    const rawStatus = item
-	
+
 		// 如果字典尚未加载,返回原始值
 		if (dictLoaded.value == false) {
 			return rawStatus
 		}
-	
+
 	    // 查找字典中对应的标签
 	    const dictItem = returnTypeDictList.value.find(dict => dict.dictValue == rawStatus)
 	    return dictItem!=null ? dictItem.dictLabel : rawStatus
@@ -434,26 +439,26 @@
 	    if (item == null) return ''
 	    // const orderInfoItem = item as orderInfo
 	    const rawStatus = item
-	
+
 		// 如果字典尚未加载,返回原始值
 		if (dictLoaded.value == false) {
 			return rawStatus
 		}
-	
+
 	    // 查找字典中对应的标签
 	    const dictItem = acceptReturnTypeDictList.value.find(dict => dict.dictValue == rawStatus)
 	    return dictItem!=null ? dictItem.dictLabel : rawStatus
 	}
-	
+
 	const loadReturnDictList = async (returnTypeDict: string): Promise<void> => {
 	    try {
 			const result = await getDictDataByType(returnTypeDict)
 	        const resultObj = result as UTSJSONObject
-	
+
 	        if (resultObj['code'] == 200) {
 	            const data = resultObj['data'] as any[]
 	            const dictData: SysDictData[] = []
-	
+
 	            if (data.length > 0) {
 	                for (let i = 0; i < data.length; i++) {
 	                    const item = data[i] as UTSJSONObject
@@ -480,7 +485,7 @@
 				} else {
 					acceptReturnTypeDictList.value = dictData
 				}
-	            
+
 	        }
 	    } catch (e: any) {
 	        console.error('获取工单状态字典失败:', e.message)
@@ -585,6 +590,31 @@
 				returnReason.value = (data['returnReason'] as string | null) ?? ''
 				acceptReturnType.value = (data['acceptReturnType'] as string | null) ?? ''
 				acceptReturnReason.value = (data['acceptReturnReason'] as string | null) ?? ''
+				if(data['orderType'] == 2 && orderDtail.inspectionType != null) {
+					const result = await getDictDataByType("gxt_inspection_type")
+					const resultObj = result as UTSJSONObject
+					const dictList = resultObj['data'] as any[]
+					if (dictList.length > 0) {
+						const targetValueStr = orderDtail.inspectionType;
+						const targetValueArray = targetValueStr
+						      .split(',') // 分割逗号,转为数组(单值分割后仍为长度1的数组)
+						      .map(item => item.trim());
+						const matchedLabels = dictList.filter(dictItem => {
+							// 统一转换为字符串匹配,避免数字/字符串类型不匹配问题
+							const dictItemObj = dictItem as UTSJSONObject;
+							const dictValueStr = dictItemObj['dictValue'] as string | null;
+							// 判断当前字典项的value是否在目标值数组中
+							if (dictValueStr == null) return false;
+								return targetValueArray.includes(dictValueStr);
+							}).map(dictItem => {
+								const dictItemObj = dictItem as UTSJSONObject;
+								const label = dictItemObj['dictLabel'] as string | null;
+								return label ?? '';
+							}); // 提取匹配项的label,形成label数组
+						  // 步骤4:将label数组用逗号分隔拼接,赋值给inspectionTypeLabel
+						inspectionTypeLabel.value = matchedLabels.join(',');
+					}
+				}
             } else {
                 const msg = resultObj['msg'] as string | null
                 uni.showToast({
@@ -784,7 +814,7 @@
             border-radius: 12rpx;
         }
     }
-    
+
     .image-container {
 		display: flex;
 		flex-direction: row;
@@ -794,7 +824,7 @@
 		align-items: center;
 		padding: 0 10rpx;
     }
-    
+
     .attachment-image {
         width: 300rpx; /* 一行显示两个图片,减去间距的一半 */
         height: 300rpx;

+ 8 - 10
pages/order/detail/wbFinalize.uvue

@@ -624,14 +624,12 @@
     const getMisList = async (): Promise<void> => {
         try {
 			const queryParams = {
-				pauseTime: pauseTime.value,
-				restartTime: restartTime.value,
 				pcsDeviceName: pcsDeviceName.value,
 				pcsStationName: pcsStationName.value,
 				workOrderStatus: '结束'
 			} as UTSJSONObject;
             // 调用获取MIS工单列表的API
-            const result = await listAutoMisInfo(queryParams);
+            const result = await getMisInfoList(queryParams);
             const resultObj = result as UTSJSONObject;
             if (resultObj['code'] == 200) {
                 // 解析列表数据
@@ -840,16 +838,16 @@
 
         showUserSelect.value = false;
     };
-	
+
 	// 清空已选择的用户
 	const clearSelectedUsers = (): void => {
 		// 清空选中的用户数组
 		selectedUsers.value = [];
 		selectedUserIds.value = [];
-		
+
 		// 清空显示的用户名
 		workGroupMemberName.value = '';
-		
+
 		// 清空工作班成员列表
 		workOrderPersonList.value = [];
 	};
@@ -904,7 +902,7 @@
             });
             return false;
         }
-		
+
 		// if (infoEntry.value == '2' && (workGroupMemberName.value == '' || selectedUsers.value.length == 0)) {
 		//     uni.showToast({
 		//         title: '请选择工作班成员',
@@ -1287,7 +1285,7 @@
 						display: flex;
 						align-items: center;
 					}
-					
+
 					.select-clear {
 						position: absolute;
 						right: 20rpx;
@@ -1297,13 +1295,13 @@
 						font-weight: bold;
 						z-index: 1;
 					}
-					
+
 					.input-with-select {
 						position: relative;
 						display: flex;
 						align-items: center;
 					}
-					
+
 					.select-mis-btn {
 						line-height: 50rpx;
 						text-align: center;

+ 17 - 19
pages/order/detail/wxFinalize.uvue

@@ -533,17 +533,17 @@
             ];
         }
     }
-    
+
     // 获取工作部位字典列表
     const loadWorkAreaDictList = async (): Promise<void> => {
         try {
             const result = await getDictDataByType('gxt_work_area')
             const resultObj = result as UTSJSONObject
-    
+
             if (resultObj['code'] == 200) {
                 const data = resultObj['data'] as any[]
                 const dictData: SysDictData[] = []
-    
+
                 if (data.length > 0) {
                     for (let i = 0; i < data.length; i++) {
                         const item = data[i] as UTSJSONObject
@@ -565,14 +565,14 @@
                         dictData.push(dictItem)
                     }
                 }
-    
+
                 workAreaDictList.value = dictData
             }
         } catch (e: any) {
             console.error('获取工作部位字典失败:', e.message)
         }
     }
-    
+
     // 获取用户列表
     const getUserAllList = async (): Promise<void> => {
         try {
@@ -721,14 +721,12 @@
     const getMisList = async (): Promise<void> => {
         try {
 			const queryParams = {
-				pauseTime: pauseTime.value,
-				restartTime: restartTime.value,
 				pcsDeviceName: pcsDeviceName.value,
 				pcsStationName: pcsStationName.value,
 				workOrderStatus: '结束'
 			} as UTSJSONObject;
             // 调用获取MIS工单列表的API
-            const result = await listAutoMisInfo(queryParams);
+            const result = await getMisInfoList(queryParams);
             const resultObj = result as UTSJSONObject;
             if (resultObj['code'] == 200) {
                 // 解析列表数据
@@ -943,10 +941,10 @@
         // 清空选中的用户数组
         selectedUsers.value = [];
         selectedUserIds.value = [];
-        
+
         // 清空显示的用户名
         workGroupMemberName.value = '';
-        
+
         // 清空工作班成员列表
         workOrderPersonList.value = [];
     };
@@ -963,7 +961,7 @@
         const index = selectedWorkAreas.value.findIndex(selected =>
             (selected.dictValue as string | null) === (workArea.dictValue as string | null)
         );
-        
+
         if (index > -1) {
             // 取消选择
             selectedWorkAreas.value.splice(index, 1);
@@ -979,15 +977,15 @@
         const labels = selectedWorkAreas.value
             .map(item => item.dictLabel ?? '')
             .filter(label => label !== '');
-        
+
         workAreaLabel.value = labels.join(', ');
-        
+
         // 将选中的工作部位值拼接成字符串,用逗号分隔
         workArea.value = selectedWorkAreas.value
             .map(item => item.dictValue ?? '')
             .filter(value => value !== '')
             .join(',');
-        
+
         showWorkAreaPicker.value = false;
     };
 
@@ -1040,7 +1038,7 @@
             });
             return false;
         }
-		
+
 		// if (infoEntry.value == '2' && (workGroupMemberName.value == '' || selectedUsers.value.length == 0)) {
 		//     uni.showToast({
 		//         title: '请选择工作班成员',
@@ -1428,7 +1426,7 @@
                         display: flex;
                         align-items: center;
                     }
-                    
+
                     .select-clear {
                         position: absolute;
                         right: 20rpx;
@@ -1438,13 +1436,13 @@
                         font-weight: bold;
                         z-index: 1;
                     }
-                    
+
                     .input-with-select {
                         position: relative;
                         display: flex;
                         align-items: center;
                     }
-                    
+
                     .select-mis-btn {
 						line-height: 50rpx;
 						text-align: center;
@@ -1804,4 +1802,4 @@
 }
 
 
-</style>
+</style>

+ 85 - 51
pages/order/index.uvue

@@ -73,13 +73,21 @@
 								<text class="btn-text">接单</text>
 							</view>
 							<view
-								v-if="(getOrderStatus(item) == 'assigned' || getOrderStatus(item) == 'to_finish') 
+								v-if="(getOrderStatus(item) == 'assigned' || getOrderStatus(item) == 'to_finish')
 								&& canHandleOrder(item,'shutdown') && (item as acceptOrderInfoExtend).pauseTime == null"
 								class="btn-primary info-value"
 								@click.stop="handleItemClick(item,'shutdown')"
 								>
 								<text class="btn-text">停机</text>
 							</view>
+							<view
+								v-if="(getOrderStatus(item) == 'assigned' || getOrderStatus(item) == 'to_finish' || getOrderStatus(item) == 'completed')
+								&& canHandleOrder(item,'restart') && (item as acceptOrderInfoExtend).restartTime == null"
+								class="btn-primary info-value"
+								@click.stop="handleItemClick(item,'restart')"
+								>
+								<text class="btn-text">复运</text>
+							</view>
 							<view
 								v-if="getOrderStatus(item) == 'to_approve' && canHandleOrder(item,'')"
 								class="btn-primary info-value"
@@ -143,6 +151,7 @@
 								>
 								<text class="btn-text">复启</text>
 							</view>
+
 						</view>
                     </view>
                 </view>
@@ -188,6 +197,7 @@ type acceptOrderInfoExtend = {
   workEndTime: string | null
   orderEntryType: string | null
   pauseTime: string | null
+  restartTime: string | null
 }
 
 	const userId = ref<string>("")
@@ -368,7 +378,8 @@ const statusConfig: StatusItem[] = [
 						updateTime: item['updateTime'] as string | null,  // 新增字段
 						workEndTime: item['workEndTime'] as string | null,// 新增字段
 						orderEntryType: item['orderEntryType'] as string | null,
-						pauseTime: item['pauseTime'] as string | null
+						pauseTime: item['pauseTime'] as string | null,
+						restartTime: item['restartTime'] as string | null
                     }
                     newData.push(orderItem)
                 }
@@ -612,61 +623,67 @@ const statusConfig: StatusItem[] = [
 		handleSearch()
 	}
 
-	// 方法:判断当前工单是否显示操作按钮
-	const canHandleOrder = (item: any | null, buttonType: string | ''): boolean => {
-	  if (item == null) return false
-	  let permit: string[] = []
-	  const orderItem = item as acceptOrderInfoExtend
-	  if(orderItem.workOrderStatus == 'assigned') {
-			if(buttonType != '' && buttonType == "acceptReturn" && orderItem.orderType == 1) {
-				// 接单退回
-				permit = ['gxt:repairOrder:acceptReturn']
-			} else if(buttonType != '' && buttonType == "accept") {
-				// 接单
-				permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
-			}  else if(buttonType != '' && buttonType == "shutdown" && orderItem.orderType == 2) {
-				permit = ['gxt:maintenance:order:shutdown']
-			} 
-	  } 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:complete'] : ['gxt:repairOrder:finalize']
+// 方法:判断当前工单是否显示操作按钮
+const canHandleOrder = (item: any | null, buttonType: string | ''): boolean => {
+	if (item == null) return false
+	let permit: string[] = []
+	const orderItem = item as acceptOrderInfoExtend
+	if(orderItem.workOrderStatus == 'assigned') {
+		if(buttonType != '' && buttonType == "acceptReturn" && orderItem.orderType == 1) {
+			// 接单退回
+			permit = ['gxt:repairOrder:acceptReturn']
+		} else if(buttonType != '' && buttonType == "accept") {
+			// 接单
+			permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:accept'] : ['gxt:repairOrder:accept']
+		} else if(buttonType != '' && buttonType == "shutdown" && orderItem.orderType == 2) {
+			//停机
+			permit = ['gxt:maintenance:order:shutdown']
+		} else if(buttonType != '' && buttonType == "restart") {
+			// 复运
+			permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:restart'] : ['gxt:repairOrder:restart']
+		}
+	} 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:complete'] : ['gxt:repairOrder:finalize']
 		  // } else if(buttonType != '' && buttonType == "complete" && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
-			} else if(buttonType != '' && buttonType == "complete") {
-			  // 结单
-			  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:complete'] : ['gxt:repairOrder:finalize']
-		  } else if(buttonType != '' && buttonType == "shutdown" && orderItem.orderType == 2) {
-			  permit = ['gxt:maintenance:order:shutdown']
-		  }
-	  } else if(orderItem.workOrderStatus == 'to_approve') {
+		} else if(buttonType != '' && buttonType == "complete") {
+			// 结单
+			permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:complete'] : ['gxt:repairOrder:finalize']
+		} else if(buttonType != '' && buttonType == "shutdown" && orderItem.orderType == 2) {
+			permit = ['gxt:maintenance:order:shutdown']
+		} else if(buttonType != '' && buttonType == "restart") {
+			// 复运
+			permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:restart'] : ['gxt:repairOrder:restart']
+		}
+	} else if(orderItem.workOrderStatus == 'to_approve') {
 	  	// 审批
 	  	permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:approve'] : ['gxt:repairOrder:approve']
-	  } else if(orderItem.workOrderStatus == 'suspended' && (orderItem.teamLeaderId == parseInt(userId.value) || roles.value.includes("管理员"))) {
+	} 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') {
+	} else if(orderItem.workOrderStatus == 'return') {
 	  	// 接单退回
 	  	permit = ['gxt:repairOrder:acceptReturn']
-	  } else if(orderItem.workOrderStatus == 'auto_suspend') {
-		  // 自动挂起恢复
-		  permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:autoResume'] : ['gxt:repairOrder:autoResume']
-	  } else if(orderItem.workOrderStatus == 'shutdown' && orderItem.orderType == 2) {
-		  // 自动挂起恢复
-		  permit = ['gxt:maintenance:order:shutdown']
-	  }
-	   else {
-		  return false
-	  }
-
-	  // const orderType = (item as acceptOrderInfoExtend).orderType
-	  return checkPermi(permit)
+	} else if(orderItem.workOrderStatus == 'auto_suspend') {
+		// 自动挂起恢复
+		permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:autoResume'] : ['gxt:repairOrder:autoResume']
+	} else if(orderItem.workOrderStatus == 'shutdown' && orderItem.orderType == 2) {
+		// 停机
+		permit = ['gxt:maintenance:order:shutdown']
+	} else if(orderItem.workOrderStatus == 'completed') {
+		permit = orderItem.orderType == 2 ? ['gxt:maintenance:order:restart'] : ['gxt:repairOrder:restart']
+	} else {
+		return false
 	}
+	return checkPermi(permit)
+}
 
 
     // 点击列表项
@@ -691,6 +708,11 @@ const statusConfig: StatusItem[] = [
 				uni.navigateTo({
 					url: `/pages/order/detail/shutdownIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 				})
+			} else if(buttonType != '' && buttonType == "restart") {
+				// 跳转到复运页面
+				uni.navigateTo({
+					url: `/pages/order/detail/restartIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
 			} else {
 				// 跳转到接单页面
 				uni.navigateTo({
@@ -714,12 +736,12 @@ const statusConfig: StatusItem[] = [
 					url: `/pages/order/detail/resetIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 				})
 			} else if(buttonType != '' && buttonType == "complete" && orderItem.orderType == 2 && orderItem.orderEntryType == '1') {
-				// 跳转到复启页面
+				// 跳转到结单页面
 				uni.navigateTo({
 					url: `/pages/order/detail/wbFinalize?id=${orderItem.id}&orderType=${orderItem.orderType}`
 				})
 			} else if(buttonType != '' && buttonType == "complete" && orderItem.orderType == 1) {
-				// 跳转到复启页面
+				// 跳转到结单页面
 				uni.navigateTo({
 					url: `/pages/order/detail/wxFinalize?id=${orderItem.id}&orderType=${orderItem.orderType}`
 				})
@@ -733,6 +755,11 @@ const statusConfig: StatusItem[] = [
 				uni.navigateTo({
 					url: `/pages/order/detail/shutdownIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 				})
+			} else if(buttonType != '' && buttonType == "restart") {
+				// 跳转到复运页面
+				uni.navigateTo({
+					url: `/pages/order/detail/restartIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
 			}
 		} else if(orderItem.workOrderStatus == 'to_approve') {
 			// 跳转到待审批页面
@@ -749,6 +776,13 @@ const statusConfig: StatusItem[] = [
 			uni.navigateTo({
 			    url: `/pages/order/detail/returnIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
+		} else if(orderItem.workOrderStatus == 'completed') {
+			if(buttonType != '' && buttonType == "restart") {
+				// 跳转到复运页面
+				uni.navigateTo({
+					url: `/pages/order/detail/restartIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
+				})
+			}
 		} else {
 			uni.navigateTo({
 				url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`