Explorar el Código

结单开始、结束、挂起结束时间联动

HD_wangm hace 4 meses
padre
commit
6846df5532

+ 97 - 1
ygtx-ui/src/components/gxtOrder/finalize.vue

@@ -91,6 +91,7 @@
               placeholder="请选择开始时间"
               style="width: 100%"
               :disabled-date="disabledStartDate"
+              @change="handleStartTimeChange"
             />
           </el-form-item>
         </el-col>
@@ -104,10 +105,11 @@
               placeholder="请选择结束时间"
               style="width: 100%"
               :disabled-date="disabledEndDate"
+              @change="handleEndTimeChange"
             />
           </el-form-item>
         </el-col>
-        <el-col :span="12" v-if="resumeInfo">
+        <el-col :span="12" v-if="resumeInfo && resumeShow">
           <el-form-item label="挂起结束时间" prop="resumeTime">
             <el-date-picker
                 v-model="formData.resumeTime"
@@ -250,6 +252,7 @@ const inputUsers = ref([]) // 存储选中的用户
 const flowList = ref([])
 const suspendInfo = ref(null)
 const resumeInfo = ref(null)
+const resumeShow = ref(false)
 
 
 // 表单验证规则
@@ -472,6 +475,36 @@ watch(visible, (val) => {
   }
 })
 
+watch(
+    () => props.data?.realStartTime, // 只监听 realStartTime
+    (newStartTime, oldStartTime) => {
+      // 判断是否真的变化了(避免 undefined === undefined 误判)
+      debugger
+      if (newStartTime && newStartTime !== oldStartTime) {
+        // 注意:此时对话框可能未打开,根据你的需求决定是否加 visible 判断
+        if (visible.value) {
+          handleStartTimeChange(newStartTime);
+        }
+      }
+    },
+    { immediate: true } // 如果需要初始化时也触发一次,可加;否则去掉
+);
+
+watch(
+    () => props.data?.realEndTime, // 只监听 realEndTime
+    (newEndTime, oldEndTime) => {
+      // 判断是否真的变化了(避免 undefined === undefined 误判)
+      debugger
+      if (newEndTime && oldEndTime !== oldEndTime) {
+        // 注意:此时对话框可能未打开,根据你的需求决定是否加 visible 判断
+        if (visible.value) {
+          handleEndTimeChange(newEndTime);
+        }
+      }
+    },
+    { immediate: true } // 如果需要初始化时也触发一次,可加;否则去掉
+);
+
 // 关闭对话框
 const handleClose = () => {
   visible.value = false
@@ -574,6 +607,69 @@ const handleSubmit = async () => {
     }
   })
 }
+
+
+// 开始时间变化处理
+const handleStartTimeChange = (value) => {
+  debugger
+  if (resumeInfo && value) {
+    const realStartTime = formData.value.realStartTime
+    const realEndTime = formData.value.realEndTime
+    const suspendTime = suspendInfo.value.actionTime
+    const resumeTime = formData.value.resumeTime
+    if (suspendTime && value && new Date(suspendTime) < new Date(value)) { // 开工前挂起
+      if (value && resumeTime > new Date(value)) {
+        resumeShow.value = true
+      } else if(realEndTime && resumeTime && new Date(resumeTime) > new Date(realEndTime)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+
+    } else if(suspendTime && value && new Date(suspendTime) >= new Date(value)) { // 作业中挂起
+      if (value && new Date(resumeTime) < new Date(value)) {
+        resumeShow.value = true
+      } else if(realEndTime && resumeTime && new Date(resumeTime) > new Date(realEndTime)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+    } else {
+      resumeShow.value = false
+    }
+  }
+}
+
+// 结束时间变化处理
+const handleEndTimeChange = (value) => {
+  debugger
+  if (resumeInfo && value) {
+    const realStartTime = formData.value.realStartTime
+    const realEndTime = formData.value.realEndTime
+    const suspendTime = suspendInfo.value.actionTime
+    const resumeTime = formData.value.resumeTime
+    if (suspendTime && realStartTime && new Date(suspendTime) < new Date(realStartTime)) { // 开工前挂起
+      if (value && resumeTime > new Date(realStartTime)) {
+        resumeShow.value = true
+      } else if(value && resumeTime && new Date(resumeTime) > new Date(value)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+
+    } else if(suspendTime && realStartTime && new Date(suspendTime) >= new Date(realStartTime)) { // 作业中挂起
+      if (realStartTime && new Date(resumeTime) < new Date(realStartTime)) {
+        resumeShow.value = true
+      } else if(value && resumeTime && new Date(resumeTime) > new Date(value)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+    } else {
+      resumeShow.value = false
+    }
+  }
+}
 </script>
 
 <style scoped>

+ 97 - 1
ygtx-ui/src/components/repairOrder/finalize.vue

@@ -128,6 +128,7 @@
                 placeholder="请选择开始时间"
                 style="width: 100%"
                 :disabled-date="disabledStartDate"
+                @change="handleStartTimeChange"
             />
           </el-form-item>
         </el-col>
@@ -158,11 +159,12 @@
                 placeholder="请选择结束时间"
                 style="width: 100%"
                 :disabled-date="disabledEndDate"
+                @change="handleEndTimeChange"
             />
           </el-form-item>
         </el-col>
 
-        <el-col :span="12" v-if="resumeInfo">
+        <el-col :span="12" v-if="resumeInfo && resumeShow">
           <el-form-item label="挂起结束时间" prop="resumeTime">
             <el-date-picker
                 v-model="formData.resumeTime"
@@ -318,6 +320,7 @@ const inputUsers = ref([]) // 存储选中的用户
 const flowList = ref([])
 const suspendInfo = ref(null)
 const resumeInfo = ref(null)
+const resumeShow = ref(false)
 
 // 计算属性
 const workPermitNumProxy = computed({
@@ -537,6 +540,36 @@ watch(visible, (val) => {
   }
 })
 
+watch(
+    () => props.data?.realStartTime, // 只监听 realStartTime
+    (newStartTime, oldStartTime) => {
+      // 判断是否真的变化了(避免 undefined === undefined 误判)
+      debugger
+      if (newStartTime && newStartTime !== oldStartTime) {
+        // 注意:此时对话框可能未打开,根据你的需求决定是否加 visible 判断
+        if (visible.value) {
+          handleStartTimeChange(newStartTime);
+        }
+      }
+    },
+    { immediate: true } // 如果需要初始化时也触发一次,可加;否则去掉
+);
+
+watch(
+    () => props.data?.realEndTime, // 只监听 realEndTime
+    (newEndTime, oldEndTime) => {
+      // 判断是否真的变化了(避免 undefined === undefined 误判)
+      debugger
+      if (newEndTime && oldEndTime !== oldEndTime) {
+        // 注意:此时对话框可能未打开,根据你的需求决定是否加 visible 判断
+        if (visible.value) {
+          handleEndTimeChange(newEndTime);
+        }
+      }
+    },
+    { immediate: true } // 如果需要初始化时也触发一次,可加;否则去掉
+);
+
 // 时间禁用函数
 const disabledStartDate = (time) => {
   const getYYYYMMDD = (date) => {
@@ -627,6 +660,69 @@ const handleInfoEntryChange = (val) => {
   }
 }
 
+
+// 开始时间变化处理
+const handleStartTimeChange = (value) => {
+  debugger
+  if (resumeInfo && value) {
+    const realStartTime = formData.value.realStartTime
+    const realEndTime = formData.value.realEndTime
+    const suspendTime = suspendInfo.value.actionTime
+    const resumeTime = formData.value.resumeTime
+    if (suspendTime && value && new Date(suspendTime) < new Date(value)) { // 开工前挂起
+      if (value && resumeTime > new Date(value)) {
+        resumeShow.value = true
+      } else if(realEndTime && resumeTime && new Date(resumeTime) > new Date(realEndTime)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+
+    } else if(suspendTime && value && new Date(suspendTime) >= new Date(value)) { // 作业中挂起
+      if (value && new Date(resumeTime) < new Date(value)) {
+        resumeShow.value = true
+      } else if(realEndTime && resumeTime && new Date(resumeTime) > new Date(realEndTime)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+    } else {
+      resumeShow.value = false
+    }
+  }
+}
+
+// 结束时间变化处理
+const handleEndTimeChange = (value) => {
+  debugger
+  if (resumeInfo && value) {
+    const realStartTime = formData.value.realStartTime
+    const realEndTime = formData.value.realEndTime
+    const suspendTime = suspendInfo.value.actionTime
+    const resumeTime = formData.value.resumeTime
+    if (suspendTime && realStartTime && new Date(suspendTime) < new Date(realStartTime)) { // 开工前挂起
+      if (value && resumeTime > new Date(realStartTime)) {
+        resumeShow.value = true
+      } else if(value && resumeTime && new Date(resumeTime) > new Date(value)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+
+    } else if(suspendTime && realStartTime && new Date(suspendTime) >= new Date(realStartTime)) { // 作业中挂起
+      if (realStartTime && new Date(resumeTime) < new Date(realStartTime)) {
+        resumeShow.value = true
+      } else if(value && resumeTime && new Date(resumeTime) > new Date(value)) {
+        resumeShow.value = true
+      } else {
+        resumeShow.value = false
+      }
+    } else {
+      resumeShow.value = false
+    }
+  }
+}
+
 // MIS工单相关处理函数
 const handleMisNoInputFocus = () => {
   // showMisNoQuickSelect.value = true