HD_wangm 4 месяцев назад
Родитель
Сommit
dbc26bcec2

+ 5 - 2
pages/order/detail/acceptIndex.uvue

@@ -174,7 +174,7 @@
 	import { getUserList } from '../../../api/user/list'
 	import type { UserInfo } from '../../../types/user'
 	import {checkPermi} from '../../../utils/storage'
-	
+
 	const teamLeaderName = ref<string>("")
 	const statusDictList = ref<SysDictData[]>([]) // 工单状态字典列表
 	// 添加字典加载状态
@@ -346,8 +346,11 @@
 
 				// 使用事件总线通知列表页面刷新
 				uni.$emit('refreshOrderList', {})
-				// 通知首页刷新待单数量
+				// 通知首页刷新待处理工单数量
 				uni.$emit('refreshAssignedCount')
+				// 通知首页刷新超时工单数量
+				uni.$emit('refreshOverdueCount')
+
 				// 接单成功后返回上一页
 				setTimeout(() => {
 					uni.navigateBack()

+ 4 - 0
pages/order/detail/approveIndex.uvue

@@ -295,6 +295,8 @@
 
 				// 使用事件总线通知列表页面刷新
 				uni.$emit('refreshOrderList', {})
+				uni.$emit('refreshAssignedCount')
+				uni.$emit('refreshOverdueCount')
 				// 审批成功后返回上一页
 				setTimeout(() => {
 					uni.navigateBack()
@@ -322,6 +324,8 @@
 
 				// 使用事件总线通知列表页面刷新
 				uni.$emit('refreshOrderList', {})
+				uni.$emit('refreshAssignedCount')
+				uni.$emit('refreshOverdueCount')
 				// 接单成功后返回上一页
 				setTimeout(() => {
 					uni.navigateBack()

+ 69 - 2
pages/order/detail/index.uvue

@@ -28,8 +28,8 @@
                         <text class="info-value">{{ detailData.brand ?? '' }} {{ detailData.model ?? '' }}</text>
                     </view>
 					<view class="info-item">
-					    <text class="info-label">创建时间</text>
-					    <text class="info-value">{{ detailData.createTime ?? '' }}</text>
+					    <text class="info-label">{{getLabel(detailData)}}</text>
+					    <text class="info-value">{{ getDisplayTime(detailData) }}</text>
 					</view>
                 </view>
             </view>
@@ -77,6 +77,73 @@
 	const statusDictList = ref<SysDictData[]>([]) // 工单状态字典列表
 	// 添加字典加载状态
 	const dictLoaded = ref<boolean>(false)
+	
+	const formatDate = (dateString: string): string => {
+	  if (dateString == '' || dateString == null) return ''
+	  const date = new Date(dateString)
+	  const year = date.getFullYear()
+	  const month = (date.getMonth() + 1).toString().padStart(2, '0')
+	  const day = date.getDate().toString().padStart(2, '0')
+	  const hours = date.getHours().toString().padStart(2, '0')
+	  const minutes = date.getMinutes().toString().padStart(2, '0')
+	  return `${year}-${month}-${day} ${hours}:${minutes}`
+	}
+	
+	// 根据状态显示不同的时间label
+	const getLabel = (item : acceptOrderInfo): string|null => {
+		if (item == null) return null
+	
+		// 如果是"待接单"状态,显示派单时间
+		if (item.workOrderStatus == 'assigned') {
+			return '下发时间'
+		} else if(item.workOrderStatus == 'to_finish') {
+			if(item.workEndTime != null) {
+				return '结束时间'
+			}
+			return '接单时间'
+		} else if(item.workOrderStatus == 'to_approve') {
+			return '申请挂起时间'
+		} else if(item.workOrderStatus == 'suspended') {
+			return '审批通过时间'
+		} else if(item.workOrderStatus == 'return' || item.workOrderStatus == 'accept_return') {
+			return '退回时间'
+		} else if(item.workOrderStatus == 'completed') {
+			return '结单时间'
+		} else if(item.workOrderStatus == "archived") {
+			return '归档时间'
+		}
+	
+		// 默认显示创建时间
+		return '创建时间'
+	}
+	
+	// 根据状态显示不同的时间
+	const getDisplayTime = (item : acceptOrderInfo): string|null => {
+		if (item == null) return null
+		let showTime = ref<string|null>('')
+	
+		// 如果是"待接单"状态,显示派单时间
+		if (item.workOrderStatus == 'assigned') {
+			showTime.value = item.assignTime
+		} else if(item.workOrderStatus == 'to_finish') {
+			showTime.value = item.acceptTime
+		} else if(item.workOrderStatus == 'to_approve') {
+			showTime.value = item.updateTime
+		} else if(item.workOrderStatus == 'suspended') {
+			showTime.value = item.updateTime
+		} else if(item.workOrderStatus == 'return' || item.workOrderStatus == 'accept_return') {
+			showTime.value = item.updateTime
+		} else if(item.workOrderStatus == 'completed') {
+			showTime.value = item.updateTime
+		} else if(item.workOrderStatus == "archived") {
+			showTime.value = item.updateTime
+		} else {
+			showTime.value = item.createTime 
+		}
+	
+    return formatDate(showTime.value ?? '')
+	}
+	
 	// 获取工单状态字典列表
 	const loadStatusDictList = async (): Promise<void> => {
 	    try {

+ 15 - 2
pages/order/detail/resumeIndex.uvue

@@ -36,8 +36,8 @@
                         <text class="info-value">{{ detailData.brand ?? '' }} {{ detailData.model ?? '' }}</text>
                     </view>
 					<view class="info-item">
-					    <text class="info-label">下发时间</text>
-					    <text class="info-value">{{ detailData.assignTime ?? '' }}</text>
+					    <text class="info-label">审批通过时间</text>
+					    <text class="info-value">{{ formatDate(detailData.updateTime ?? '') }}</text>
 					</view>
 
                 </view>
@@ -146,6 +146,17 @@
 	const selectedTeamLeaderIndex = ref<number>(-1)
 	const teamLeaderNameOptions = ref<PickerOption[]>([])
 	const showLeaderPicker = ref<boolean>(false)
+	
+	const formatDate = (dateString: string): string => {
+	  if (dateString == '' || dateString == null) return ''
+	  const date = new Date(dateString)
+	  const year = date.getFullYear()
+	  const month = (date.getMonth() + 1).toString().padStart(2, '0')
+	  const day = date.getDate().toString().padStart(2, '0')
+	  const hours = date.getHours().toString().padStart(2, '0')
+	  const minutes = date.getMinutes().toString().padStart(2, '0')
+	  return `${year}-${month}-${day} ${hours}:${minutes}`
+	}
 
 	// 获取负责人列表(使用用户列表接口)
 	const loadTeamLeaderList = async (): Promise<void> => {
@@ -244,6 +255,8 @@
 
 				// 使用事件总线通知列表页面刷新
 				uni.$emit('refreshOrderList', {})
+				uni.$emit('refreshAssignedCount')
+				uni.$emit('refreshOverdueCount')
 				// 接单成功后返回上一页
 				setTimeout(() => {
 					uni.navigateBack()

+ 2 - 0
pages/order/detail/suspendIndex.uvue

@@ -313,6 +313,8 @@
 
 				// 使用事件总线通知列表页面刷新
 				uni.$emit('refreshOrderList', {})
+				uni.$emit('refreshAssignedCount')
+				uni.$emit('refreshOverdueCount')
 				// 接单成功后返回上一页
 				setTimeout(() => {
 					uni.navigateBack()

+ 36 - 18
pages/order/index.uvue

@@ -12,9 +12,12 @@
 
 		<view class="status-bar">
 			<scroll-view class="scroll-view_H" direction="horizontal" show-scrollbar="false">
-				<view class="scroll-view-item_H uni-bg-red" v-if="checkPermi(['gxt:order:all']) && !dealLoad">
+				<view class="scroll-view-item_H uni-bg-red">
 					<text class="status-txt" :class="{'stauts-sel': currentStatus === 'all'}" @click="switchStatus('all')">全部</text>
 				</view>
+				<!-- <view class="scroll-view-item_H uni-bg-green" v-if="checkPermi(['gxt:maintenance:order:edit','gxt:repairOrder:edit']) && !dealLoad">
+					<text class="status-txt" :class="{'stauts-sel': currentStatus === 'to_issue,accept_return'}" @click="switchStatus('to_issue,accept_return')">待下发</text>
+				</view> -->
 				<view class="scroll-view-item_H uni-bg-green" v-if="checkPermi(['gxt:maintenance:order:accept','gxt:repairOrder:accept']) && !dealLoad">
 					<text class="status-txt" :class="{'stauts-sel': currentStatus === 'assigned'}" @click="switchStatus('assigned')">待接单</text>
 				</view>
@@ -61,28 +64,28 @@
 							</view>
 							<view class="info-value">
 								<button
-									v-if="currentStatus === 'assigned' && canHandleOrder(item)"
+									v-if="getOrderStatus(item) == 'assigned' && canHandleOrder(item)"
 									class="btn-primary info-value"
 									@click.stop="handleItemClick(item)"
 									>
 									接单
 								</button>
 								<button
-									v-else-if="currentStatus === 'to_approve' && canHandleOrder(item)"
+									v-else-if="getOrderStatus(item) == 'to_approve' && canHandleOrder(item)"
 									class="btn-primary info-value"
 									@click.stop="handleItemClick(item)"
 									>
 									审批
 								</button>
 								<button
-									v-else-if="currentStatus === 'to_finish' && canHandleOrder(item)"
+									v-else-if="getOrderStatus(item) == 'to_finish' && canHandleOrder(item)"
 									class="btn-primary info-value"
 									@click.stop="handleItemClick(item)"
 									>
 									挂起
 								</button>
 								<button
-									v-else-if="currentStatus === 'suspended' && canHandleOrder(item)"
+									v-else-if="getOrderStatus(item) == 'suspended' && canHandleOrder(item)"
 									class="btn-primary info-value"
 									@click.stop="handleItemClick(item)"
 									>
@@ -138,6 +141,12 @@ const statusConfig: StatusItem[] = [
 	{ key: 'completed',  permis: ['gxt:maintenance:order:restart','gxt:repairOrder:restart'], condition: () => !dealLoad.value }
 ]
 
+	const getOrderStatus = (item: any | null): string => {
+		if (item == null) return ''
+		const orderItem = item as acceptOrderInfo
+		return orderItem.workOrderStatus ?? ''
+	}
+
 	// 获取工单状态字典列表
 	const loadStatusDictList = async (): Promise<void> => {
 	    try {
@@ -368,6 +377,8 @@ const statusConfig: StatusItem[] = [
 			return '退回时间:' + orderInfoItem.updateTime
 		} else if(orderInfoItem.workOrderStatus == 'completed') {
 			return '结单时间:' + orderInfoItem.updateTime
+		} else if(orderInfoItem.workOrderStatus == 'archived') {
+			return '归档时间:' + orderInfoItem.updateTime
 		}
 
 		// 默认显示创建时间
@@ -435,7 +446,7 @@ const statusConfig: StatusItem[] = [
 	const handleSearchOnBlur = (): void => {
 		handleSearch()
 	}
-	
+
 	// 方法:判断当前工单是否显示操作按钮(基于 orderType)
 	const canHandleOrder = (item: any | null): boolean => {
 	  if (item == null) return false
@@ -456,7 +467,7 @@ const statusConfig: StatusItem[] = [
 	  } else {
 		  return false
 	  }
-	  
+
 	  // const orderType = (item as acceptOrderInfo).orderType
 	  return checkPermi(permit)
 	}
@@ -466,31 +477,36 @@ const statusConfig: StatusItem[] = [
     const handleItemClick = (item: any | null): void => {
         if (item == null) return
         const orderItem = item as acceptOrderInfo
-		if(currentStatus.value === '' || currentStatus.value === 'completed' || currentStatus.value === 'all') {
-			// 传递orderType参数以便详情页决定调用哪个API
-			uni.navigateTo({
-			    url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
-			})
-		} else if(currentStatus.value === 'assigned') {
+		// if(currentStatus.value === '' || currentStatus.value === 'completed' || currentStatus.value === 'all') {
+		// 	// 传递orderType参数以便详情页决定调用哪个API
+		// 	uni.navigateTo({
+		// 	    url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
+		// 	})
+		// } else
+		if(orderItem.workOrderStatus == 'assigned') {
 			// 跳转到接单页面
 			uni.navigateTo({
 			    url: `/pages/order/detail/acceptIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
-		} else if(currentStatus.value === 'to_finish') {
+		} else if(orderItem.workOrderStatus == 'to_finish') {
 			// 跳转到待结单页面
 			uni.navigateTo({
 			    url: `/pages/order/detail/suspendIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
-		} else if(currentStatus.value === 'to_approve') {
+		} else if(orderItem.workOrderStatus == 'to_approve') {
 			// 跳转到待审批页面
 			uni.navigateTo({
 			    url: `/pages/order/detail/approveIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
-		} else if(currentStatus.value === 'suspended') {
+		} else if(orderItem.workOrderStatus == 'suspended') {
 			// 跳转到恢复页面
 			uni.navigateTo({
 			    url: `/pages/order/detail/resumeIndex?id=${orderItem.id}&orderType=${orderItem.orderType}`
 			})
+		} else {
+			uni.navigateTo({
+				url: `/pages/order/detail/index?id=${orderItem.id}&orderType=${orderItem.orderType}`
+			})
 		}
 
     }
@@ -520,8 +536,10 @@ const statusConfig: StatusItem[] = [
 			dealLoad.value = true;
 		}
 	    loadStatusDictList()
-		// ✅ 自动选中第一个可显示的状态
-		currentStatus.value = getFirstVisibleStatus()
+		// 自动选中第一个可显示的状态
+		// currentStatus.value = getFirstVisibleStatus()
+		currentStatus.value = 'all'
+
 	    loadData(true as boolean | null)
 
 		// 监听首页切换状态事件

+ 6 - 6
pages/score/pending.uvue

@@ -21,35 +21,35 @@
       <view class="status-box">
         <text
           class="status-txt"
-          :class="{ 'stauts-sel': statusFilter === '' }"
+          :class="{ 'status-sel': statusFilter === '' }"
           @click="filterByStatus('')"
         >
           全部
         </text>
         <text
           class="status-txt"
-          :class="{ 'stauts-sel': statusFilter === 'to_self' }"
+          :class="{ 'status-sel': statusFilter === 'to_self' }"
           @click="filterByStatus('to_self')"
         >
           待自评
         </text>
         <text
           class="status-txt"
-          :class="{ 'stauts-sel': statusFilter === 'to_re' }"
+          :class="{ 'status-sel': statusFilter === 'to_re' }"
           @click="filterByStatus('to_re')"
         >
           待复评
         </text>
         <text
           class="status-txt"
-          :class="{ 'stauts-sel': statusFilter === 'to_confirm' }"
+          :class="{ 'status-sel': statusFilter === 'to_confirm' }"
           @click="filterByStatus('to_confirm')"
         >
           待确认
         </text>
         <text
           class="status-txt"
-          :class="{ 'stauts-sel': statusFilter === 'to_final' }"
+          :class="{ 'status-sel': statusFilter === 'to_final' }"
           @click="filterByStatus('to_final')"
         >
           待终评
@@ -720,7 +720,7 @@
     font-size: 28rpx;
   }
 
-  .stauts-sel {
+  .status-sel {
     background-color: #007AFF;
     color: #fff;
   }