Forráskód Böngészése

维保复运停机时间可修改

HD_wangm 1 hónapja
szülő
commit
2e583ad44c
1 módosított fájl, 80 hozzáadás és 16 törlés
  1. 80 16
      pages/order/detail/restartIndex.uvue

+ 80 - 16
pages/order/detail/restartIndex.uvue

@@ -43,14 +43,30 @@
 					    <text class="info-label">发生时间</text>
 					    <text class="info-value">{{ occurTime ?? '' }}</text>
 					</view>
-					<view class="info-item" v-if="orderType == '2'">
+					<!-- <view class="info-item" v-if="orderType == '2'">
 					    <text class="info-label">停机时间</text>
 					    <text class="info-value">{{ pauseTime ?? '' }}</text>
-					</view>
+					</view> -->
                 </view>
             </view>
 			<view class="info-section">
 			    <view class="info-card">
+					<view class="info-item">
+						<view class="info-label">
+							<text class="form-label required">停机时间<text style="color: red;">*</text></text>
+						</view>
+					
+						<view class="info-value">
+						    <view class="form-picker" @click="showPauseTimePicker = true">
+								<input
+								    class="input-field"
+								    placeholder="请选择停机时间"
+								    v-model="pauseTime"
+									type="none"
+								/>
+						    </view>
+						</view>
+					</view>
 			        <view class="info-item">
 						<view class="info-label">
 							<text class="form-label required">恢复运行时间<text style="color: red;">*</text></text>
@@ -100,6 +116,19 @@
 					@cancel="showshutdownTimePicker = false">
 				</l-date-time-picker>
 			</l-popup>
+			
+			<l-popup v-model="showPauseTimePicker" position="bottom">
+				<l-date-time-picker
+					title="选择停机时间"
+					:mode="1 | 2 | 4 | 8 | 16"
+					format="YYYY-MM-DD HH:mm"
+					:modelValue="pauseTime"
+					confirm-btn="确定"
+					cancel-btn="取消"
+					@confirm="onStartDateConfirm2"
+					@cancel="showPauseTimePicker = false">
+				</l-date-time-picker>
+			</l-popup>
         </scroll-view>
 
         <!-- 接单按钮 -->
@@ -148,6 +177,7 @@
 	const realEndTime = ref<string>('')
 
 	const showshutdownTimePicker = ref<boolean>(false)
+	const showPauseTimePicker = ref<boolean>(false)
 
 	// 输入过滤方法,只允许数字和小数点,并确保值大于0
 	const handleLostPowerInput = () => {
@@ -186,10 +216,14 @@
 	};
 
 	function onStartDateConfirm(value: string) {
-	  // 检查结束时间是否小于新的恢复运行时间
 	  restartTime.value = value
 	  showshutdownTimePicker.value = false
 	}
+	
+	function onStartDateConfirm2(value: string) {
+	  pauseTime.value = value
+	  showPauseTimePicker.value = false
+	}
 
 	// 获取工单状态字典列表
 	const loadStatusDictList = async (): Promise<void> => {
@@ -246,6 +280,7 @@
 
 		// 添加时间验证逻辑(统一用时间戳对比,避免格式问题)
 		const restartTimeStamp = new Date(restartTime.value).getTime(); // 恢复运行时间戳
+		// const pauseTimeStamp = new Date(pauseTime.value).getTime(); // 停机时间戳
 		const currentTimeStamp = new Date().getTime(); // 当前时间戳
 		const realStartTimeStamp = realStartTime.value != '' ? new Date(realStartTime.value).getTime() : 0; // 开工时间戳
 		const realEndTimeStamp = realEndTime.value != '' ? new Date(realEndTime.value).getTime() : 0; // 收工时间戳
@@ -295,16 +330,22 @@
 			}
 		} else if (orderType.value == '2') {
 			// 维保工单校验逻辑
+			if (pauseTime.value.trim() === '') {
+				uni.showToast({
+					title: '请选择停机时间',
+					icon: 'none'
+				})
+				return
+			}
+			
+			const pauseTimeStamp = new Date(pauseTime.value).getTime();
 			// 1. 恢复运行时间不能小于停机时间(原有逻辑,改为时间戳对比)
-			if (pauseTime.value != '') {
-				const pauseTimeStamp = new Date(pauseTime.value).getTime();
-				if (restartTimeStamp < pauseTimeStamp) {
-					uni.showToast({
-						title: '恢复运行时间不能早于停机时间',
-						icon: 'none'
-					});
-					return;
-				}
+			if (restartTimeStamp < pauseTimeStamp) {
+				uni.showToast({
+					title: '恢复运行时间不能早于停机时间',
+					icon: 'none'
+				});
+				return;
 			}
 	
 			// 2. 开工时间不为空时,恢复运行时间不能小于开工时间
@@ -328,6 +369,28 @@
 					return;
 				}
 			}
+			
+			// 4. 开工时间不为空时,停机时间不能小于开工时间
+			if (realStartTimeStamp > 0) { // 开工时间戳>0表示非空且有效
+				if (pauseTimeStamp < realStartTimeStamp) {
+					uni.showToast({
+						title: '停机不能早于开始时间',
+						icon: 'none'
+					});
+					return;
+				}
+			}
+				
+			// 5. 收工时间不为空时,停机时间不能大于收工时间
+			if (realEndTimeStamp > 0) { // 收工时间戳>0表示非空且有效
+				if (pauseTimeStamp > realEndTimeStamp) {
+					uni.showToast({
+						title: '停机时间不能晚于结束时间',
+						icon: 'none'
+					});
+					return;
+				}
+			}
 		}
 
 		if (orderType.value == '1' && lostPower.value.trim() === '') {
@@ -359,7 +422,8 @@
 				workOrderProjectNo: workOrderProjectNo.value,
 				workOrderStatus: workOrderStatus.value,
 			    restartTime: restartTime.value,
-				lostPower: lostPower.value
+				lostPower: lostPower.value,
+				occurTime: orderType.value == '1' ? occurTime.value : pauseTime.value
 			} as UTSJSONObject;
 			const result = await restartOrder(submitData)
 			const resultObj = result as UTSJSONObject
@@ -464,9 +528,9 @@
 					  confirmColor: '#007aff',
 					  success: (res) => {
 						  // uni.$emit('refreshOrderList', {})
-						  setTimeout(() => {
-						  	uni.navigateBack()
-						  }, 500)
+						  // setTimeout(() => {
+						  // 	uni.navigateBack()
+						  // }, 500)
 					  }
 					});
 				}