|
|
@@ -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)
|
|
|
}
|
|
|
});
|
|
|
}
|