Kaynağa Gözat

提前添加工作人员结单修改

HD_wangm 1 hafta önce
ebeveyn
işleme
69c6880e55

+ 116 - 111
ygtx-gxt/src/main/java/com/ygtx/gxt/service/impl/GxtRepairOrderServiceImpl.java

@@ -971,59 +971,61 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
         }
         gxtRepairOrder.setUpdateBy(SecurityUtils.getUsername());
         gxtRepairOrder.setUpdateTime(DateUtils.getNowDate());
-        // 负责人为空
-        if (null == gxtRepairOrder.getTeamLeaderName() && StringUtils.isEmpty(gxtRepairOrder.getTeamLeaderName())) {
-            gxtRepairOrder.setTeamLeaderId(SecurityUtils.getUserId());
-            gxtRepairOrder.setTeamLeaderName(SecurityUtils.getLoginUser().getUser().getNickName());
-            GxtRepairOrderPerson person = new GxtRepairOrderPerson();
-            person.setUserId(SecurityUtils.getUserId());
-            person.setNickName(SecurityUtils.getLoginUser().getUser().getNickName());
-            person.setIsLeader(1);
-            person.setOrderId(gxtRepairOrder.getId());
-            person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
-            person.setStatus(1);
-            person.setCreateBy(SecurityUtils.getUsername());
-            gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
-        }
+        if (oldOrder.getOverStopStatus() != 2) {
+            // 负责人为空
+            if (null == gxtRepairOrder.getTeamLeaderName() && StringUtils.isEmpty(gxtRepairOrder.getTeamLeaderName())) {
+                gxtRepairOrder.setTeamLeaderId(SecurityUtils.getUserId());
+                gxtRepairOrder.setTeamLeaderName(SecurityUtils.getLoginUser().getUser().getNickName());
+                GxtRepairOrderPerson person = new GxtRepairOrderPerson();
+                person.setUserId(SecurityUtils.getUserId());
+                person.setNickName(SecurityUtils.getLoginUser().getUser().getNickName());
+                person.setIsLeader(1);
+                person.setOrderId(gxtRepairOrder.getId());
+                person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
+                person.setStatus(1);
+                person.setCreateBy(SecurityUtils.getUsername());
+                gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
+            }
 
-        // 修改工作负责人
-        if(StringUtils.isNotEmpty(gxtRepairOrder.getTeamLeaderName())){
-            List<SysUser> sysUsers = sysUserService.selectUserByNickName(gxtRepairOrder.getTeamLeaderName());
-            SysUser sysUser = new SysUser();
-            if(sysUsers != null && !sysUsers.isEmpty()){
-                if (sysUsers.size() == 1) {
-                    sysUser = sysUsers.get(0);
-                } else {
-                    // 如果有多个用户,查找部门ID与pcsStationPid相同的用户
-                    for (SysUser user : sysUsers) {
-                        if (user.getDeptId() != null && (user.getDeptId().equals(gxtRepairOrder.getPcsStationPid()) || user.getDeptId().equals(gxtRepairOrder.getPcsStationId()))) {
-                            sysUser = user;
-                            break;
+            // 修改工作负责人
+            if (StringUtils.isNotEmpty(gxtRepairOrder.getTeamLeaderName())) {
+                List<SysUser> sysUsers = sysUserService.selectUserByNickName(gxtRepairOrder.getTeamLeaderName());
+                SysUser sysUser = new SysUser();
+                if (sysUsers != null && !sysUsers.isEmpty()) {
+                    if (sysUsers.size() == 1) {
+                        sysUser = sysUsers.get(0);
+                    } else {
+                        // 如果有多个用户,查找部门ID与pcsStationPid相同的用户
+                        for (SysUser user : sysUsers) {
+                            if (user.getDeptId() != null && (user.getDeptId().equals(gxtRepairOrder.getPcsStationPid()) || user.getDeptId().equals(gxtRepairOrder.getPcsStationId()))) {
+                                sysUser = user;
+                                break;
+                            }
+                        }
+                        // 如果没找到部门匹配的用户,则使用第一个用户
+                        if (sysUser == null) {
+                            sysUser = sysUsers.get(0);
                         }
                     }
-                    // 如果没找到部门匹配的用户,则使用第一个用户
-                    if (sysUser == null) {
-                        sysUser = sysUsers.get(0);
+                    gxtRepairOrder.setTeamLeaderId(sysUser.getUserId());
+                    gxtRepairOrder.setTeamLeaderName(sysUser.getNickName());
+                    // 删除旧的工作班成员
+                    gxtRepairOrderPersonMapper.deleteGxtRepairOrderPersonByOrderId(gxtRepairOrder.getId());
+                    // 工作票方式工作班成员新增负责人
+                    if (StringUtils.isNotEmpty(gxtRepairOrder.getInfoEntry()) && "2".equals(gxtRepairOrder.getInfoEntry())) {
+                        GxtRepairOrderPerson person = new GxtRepairOrderPerson();
+                        person.setUserId(sysUser.getUserId());
+                        person.setIsLeader(1);
+                        person.setUserName(sysUser.getUserName());
+                        person.setNickName(sysUser.getNickName());
+                        person.setOrderId(gxtRepairOrder.getId());
+                        person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
+                        person.setStatus(1);
+                        person.setCreateBy(SecurityUtils.getUsername());
+                        person.setCreateTime(DateUtils.getNowDate());
+                        gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
                     }
                 }
-                gxtRepairOrder.setTeamLeaderId(sysUser.getUserId());
-                gxtRepairOrder.setTeamLeaderName(sysUser.getNickName());
-                // 删除旧的工作班成员
-                gxtRepairOrderPersonMapper.deleteGxtRepairOrderPersonByOrderId(gxtRepairOrder.getId());
-                // 工作票方式工作班成员新增负责人
-                if (StringUtils.isNotEmpty(gxtRepairOrder.getInfoEntry()) && "2".equals(gxtRepairOrder.getInfoEntry())) {
-                    GxtRepairOrderPerson person = new GxtRepairOrderPerson();
-                    person.setUserId(sysUser.getUserId());
-                    person.setIsLeader(1);
-                    person.setUserName(sysUser.getUserName());
-                    person.setNickName(sysUser.getNickName());
-                    person.setOrderId(gxtRepairOrder.getId());
-                    person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
-                    person.setStatus(1);
-                    person.setCreateBy(SecurityUtils.getUsername());
-                    person.setCreateTime(DateUtils.getNowDate());
-                    gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
-                }
             }
         }
         int result = gxtRepairOrderMapper.updateGxtRepairOrder(gxtRepairOrder);
@@ -1050,17 +1052,17 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
 
 //            String getMisData = configService.selectConfigByKey("gxt.repairOder.getMisData");
 //            if(StringUtils.isNotEmpty(getMisData) && getMisData.equals("1")){
-            if (StringUtils.isNotEmpty(gxtRepairOrder.getInfoEntry()) && "1".equals(gxtRepairOrder.getInfoEntry())) {   //信息录入选择“关联mis工单”
+            if (oldOrder.getOverStopStatus() != 2) {
+                if (StringUtils.isNotEmpty(gxtRepairOrder.getInfoEntry()) && "1".equals(gxtRepairOrder.getInfoEntry())) {   //信息录入选择"关联 mis 工单"
 //                gxtRepairOrderPersonMapper.deleteGxtRepairOrderPersonByOrderId(gxtRepairOrder.getId());
-                if(gxtRepairOrder.getRepairOrderPersonList() != null && !gxtRepairOrder.getRepairOrderPersonList().isEmpty()){
-                    for (GxtRepairOrderPerson person : gxtRepairOrder.getRepairOrderPersonList())
-                    {
-                        SysUser sysUser = new SysUser();
-                        sysUser.setUserName(person.getUserName());
-                        sysUser.setNickName(person.getNickName());
-                        List<SysUser> sysUserList = sysUserService.selectUserListNoDataScope(sysUser);
-                        if (sysUserList.size() > 0) {
-                            sysUser = sysUserList.get(0);
+                    if (gxtRepairOrder.getRepairOrderPersonList() != null && !gxtRepairOrder.getRepairOrderPersonList().isEmpty()) {
+                        for (GxtRepairOrderPerson person : gxtRepairOrder.getRepairOrderPersonList()) {
+                            SysUser sysUser = new SysUser();
+                            sysUser.setUserName(person.getUserName());
+                            sysUser.setNickName(person.getNickName());
+                            List<SysUser> sysUserList = sysUserService.selectUserListNoDataScope(sysUser);
+                            if (sysUserList.size() > 0) {
+                                sysUser = sysUserList.get(0);
 //                            if (sysUser.getUserId().equals(gxtRepairOrder.getTeamLeaderId())) continue; //检修人员是否已存在
 //                            //修改工单负责人
 //                            if (1 == person.getIsLeader()) {
@@ -1068,13 +1070,13 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
 //                                gxtRepairOrder.setTeamLeaderId(sysUser.getUserId());
 //                                gxtRepairOrderMapper.updateGxtRepairOrder(gxtRepairOrder);
 //                            }
-                        } else {
-                            if (null == person.getIsLeader() || person.getIsLeader() == 0) {
-                                throw new ServiceException("已匹配到MIS工单,但工作班成员'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
                             } else {
-                                throw new ServiceException("已匹配到MIS工单,但工作负责人'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                                if (null == person.getIsLeader() || person.getIsLeader() == 0) {
+                                    throw new ServiceException("已匹配到MIS工单,但工作班成员'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                                } else {
+                                    throw new ServiceException("已匹配到MIS工单,但工作负责人'" + person.getNickName() + "'在系统中不存在,系统无法自动结单,请检查");
+                                }
                             }
-                        }
 //                        SysUser sysUser = null;
 //                        if(StringUtils.isNotEmpty(person.getUserName())){
 //                            sysUser = sysUserService.selectUserByUserName(person.getUserName());
@@ -1102,66 +1104,69 @@ public class GxtRepairOrderServiceImpl implements IGxtRepairOrderService
 //                            }
 //                        }
 //                        if(sysUser == null) continue;
-                        person.setUserId(sysUser.getUserId());
+                            person.setUserId(sysUser.getUserId());
 //                        if (Objects.equals(sysUser.getUserId(), gxtRepairOrder.getTeamLeaderId())) {
 //                            person.setIsLeader(1);
 //                        } else {
 //                            person.setIsLeader(0);
 //                        }
-                        person.setUserId(sysUser.getUserId());
-                        person.setOrderId(gxtRepairOrder.getId());
-                        person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
-                        person.setStatus(1);
-                        person.setCreateBy(SecurityUtils.getUsername());
-                        person.setCreateTime(DateUtils.getNowDate());
-                        gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
-                    }
-                }
-            }else{
-                if(StringUtils.isNotEmpty(gxtRepairOrder.getWorkGroupMemberName())){
-//                    gxtRepairOrderPersonMapper.deleteGxtRepairOrderPersonByOrderId(gxtRepairOrder.getId());
-                    String[] splitNames = gxtRepairOrder.getWorkGroupMemberName().split(",");
-                    for (String name : splitNames) {
-                        List<SysUser> sysUsers = sysUserService.selectUserByNickName(name);
-                        if(sysUsers != null && !sysUsers.isEmpty()){
-                            SysUser sysUser = null;
-                            // 如果只有一个用户,直接使用
-                            if (sysUsers.size() == 1) {
-                                sysUser = sysUsers.get(0);
-                                if (sysUser.getUserId().equals(gxtRepairOrder.getTeamLeaderId())) continue; //检修人员是否已存在
-                            } else {
-                                // 如果有多个用户,查找部门ID与pcsStationPid相同的用户
-                                for (SysUser user : sysUsers) {
-                                    if (user.getDeptId() != null && (user.getDeptId().equals(gxtRepairOrder.getPcsStationPid()) || user.getDeptId().equals(gxtRepairOrder.getPcsStationId()))) {
-                                        sysUser = user;
-                                        break;
-                                    }
-                                }
-                                // 如果没找到部门匹配的用户,则使用第一个用户
-                                if (sysUser == null) {
-                                    sysUser = sysUsers.get(0);
-                                }
-
-                                if (sysUser.getUserId().equals(gxtRepairOrder.getTeamLeaderId())) continue; //检修人员是否已存在
-                            }
-                            GxtRepairOrderPerson person = new GxtRepairOrderPerson();
-                            person.setUserId(sysUser.getUserId());
-                            if (Objects.equals(sysUser.getUserId(), gxtRepairOrder.getTeamLeaderId())) {
-                                person.setIsLeader(1);
-                            } else {
-                                person.setIsLeader(0);
-                            }
                             person.setUserId(sysUser.getUserId());
-                            person.setUserName(sysUser.getUserName());
-                            person.setNickName(sysUser.getNickName());
                             person.setOrderId(gxtRepairOrder.getId());
                             person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
                             person.setStatus(1);
                             person.setCreateBy(SecurityUtils.getUsername());
                             person.setCreateTime(DateUtils.getNowDate());
                             gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
-                        } else {
-                            throw new ServiceException("已匹配到MIS工单,但工作班成员'" + name + "'在系统中不存在,系统无法自动结单,请检查");
+                        }
+                    }
+                } else {
+                    if (StringUtils.isNotEmpty(gxtRepairOrder.getWorkGroupMemberName())) {
+//                    gxtRepairOrderPersonMapper.deleteGxtRepairOrderPersonByOrderId(gxtRepairOrder.getId());
+                        String[] splitNames = gxtRepairOrder.getWorkGroupMemberName().split(",");
+                        for (String name : splitNames) {
+                            List<SysUser> sysUsers = sysUserService.selectUserByNickName(name);
+                            if (sysUsers != null && !sysUsers.isEmpty()) {
+                                SysUser sysUser = null;
+                                // 如果只有一个用户,直接使用
+                                if (sysUsers.size() == 1) {
+                                    sysUser = sysUsers.get(0);
+                                    if (sysUser.getUserId().equals(gxtRepairOrder.getTeamLeaderId()))
+                                        continue; //检修人员是否已存在
+                                } else {
+                                    // 如果有多个用户,查找部门ID与pcsStationPid相同的用户
+                                    for (SysUser user : sysUsers) {
+                                        if (user.getDeptId() != null && (user.getDeptId().equals(gxtRepairOrder.getPcsStationPid()) || user.getDeptId().equals(gxtRepairOrder.getPcsStationId()))) {
+                                            sysUser = user;
+                                            break;
+                                        }
+                                    }
+                                    // 如果没找到部门匹配的用户,则使用第一个用户
+                                    if (sysUser == null) {
+                                        sysUser = sysUsers.get(0);
+                                    }
+
+                                    if (sysUser.getUserId().equals(gxtRepairOrder.getTeamLeaderId()))
+                                        continue; //检修人员是否已存在
+                                }
+                                GxtRepairOrderPerson person = new GxtRepairOrderPerson();
+                                person.setUserId(sysUser.getUserId());
+                                if (Objects.equals(sysUser.getUserId(), gxtRepairOrder.getTeamLeaderId())) {
+                                    person.setIsLeader(1);
+                                } else {
+                                    person.setIsLeader(0);
+                                }
+                                person.setUserId(sysUser.getUserId());
+                                person.setUserName(sysUser.getUserName());
+                                person.setNickName(sysUser.getNickName());
+                                person.setOrderId(gxtRepairOrder.getId());
+                                person.setOrderCode(gxtRepairOrder.getWorkOrderProjectNo());
+                                person.setStatus(1);
+                                person.setCreateBy(SecurityUtils.getUsername());
+                                person.setCreateTime(DateUtils.getNowDate());
+                                gxtRepairOrderPersonMapper.insertGxtRepairOrderPerson(person);
+                            } else {
+                                throw new ServiceException("已匹配到MIS工单,但工作班成员'" + name + "'在系统中不存在,系统无法自动结单,请检查");
+                            }
                         }
                     }
                 }

+ 62 - 13
ygtx-ui/src/components/repairOrder/finalize.vue

@@ -195,6 +195,7 @@
                 @blur="handleTeamLeaderInputBlur"
                 @input="handleTeamLeaderInput"
                 @clear="handleTeamLeaderClear"
+                :readonly="formData.overStopStatus == 2"
             >
             </el-input>
             <!-- 快速检索下拉框 -->
@@ -224,9 +225,9 @@
             <el-input
                 v-model="formData.workGroupMemberName"
                 placeholder="请选择工作班成员"
-                :readonly="formData.infoEntry == '1'"
+                :readonly="formData.infoEntry == '1' || formData.overStopStatus == 2"
             >
-              <template #append v-if="formData.infoEntry == '2'">
+              <template #append v-if="formData.infoEntry == '2' && formData.overStopStatus != 2">
                 <el-button @click="userSelectVisible = true" icon="User"></el-button>
               </template>
             </el-input>
@@ -361,6 +362,10 @@ const props = defineProps({
   commonKey: {
     type: Number,
     default: 0
+  },
+  oldRepairOrderPersonList: {
+    type: Array,
+    default: () => ([])
   }
 })
 
@@ -735,20 +740,24 @@ const handleInfoEntryChange = (val) => {
     formData.value.misOrderNo = undefined;
     formData.value.realStartTime = undefined;
     formData.value.realEndTime = undefined;
-    formData.value.workGroupMemberName = undefined;
-    // formData.value.teamLeaderName = undefined
-    // formData.value.teamLeaderId = undefined
-    formData.value.repairOrderPersonList = [];
-    selectedUsers.value = [];
+    if (formData.value.overStopStatus != 2) {
+      formData.value.workGroupMemberName = undefined;
+      // formData.value.teamLeaderName = undefined
+      // formData.value.teamLeaderId = undefined
+      formData.value.repairOrderPersonList = [];
+      selectedUsers.value = [];
+    }
   } else {
     formData.value.workPermitNum = undefined;
     formData.value.misOrderNo = undefined;
     formData.value.realStartTime = undefined;
     formData.value.realEndTime = undefined;
-    formData.value.workGroupMemberName = undefined;
-    formData.value.teamLeaderName = undefined
-    formData.value.teamLeaderId = undefined
-    formData.value.repairOrderPersonList = [];
+    if (formData.value.overStopStatus != 2) {
+      formData.value.workGroupMemberName = undefined;
+      formData.value.teamLeaderName = undefined
+      formData.value.teamLeaderId = undefined
+      formData.value.repairOrderPersonList = [];
+    }
   }
 }
 
@@ -1041,6 +1050,7 @@ const filterQuickUserList = (keyword) => {
 }
 /** 工作负责人输入框获取焦点 */
 const handleTeamLeaderInputFocus = () => {
+  if (formData.value.overStopStatus == 2) return
   showTeamLeaderQuickSelect.value = true
   // 如果已有输入内容,立即搜索
   if (formData.value.teamLeaderName && formData.value.teamLeaderName.trim()) {
@@ -1061,6 +1071,7 @@ const handleTeamLeaderInputBlur = () => {
 
 /** 工作负责人输入事件 - 实时搜索 */
 const handleTeamLeaderInput = (value) => {
+  if (formData.value.overStopStatus == 2) return
   const searchText = value.trim()
 
   if (!searchText) {
@@ -1146,6 +1157,7 @@ const handleTeamLeaderQuickSelect = (item) => {
 
 /** 清空工作负责人 */
 const handleTeamLeaderClear = () => {
+  if (formData.value.overStopStatus == 2) return
   formData.value.teamLeaderId = undefined
   formData.value.teamLeaderName = ''
   quickTeamLeaderList.value = []
@@ -1174,11 +1186,48 @@ const onMisInfoSelected = (row) => {
       if (typeof listWorkPerson === 'function') {
         listWorkPerson({ misNo: row.misNo }).then(response => {
           debugger
+          if (response.rows && formData.value.overStopStatus ==2) {
+            let hasDifference = false
+            const newPersonList = response.rows
+            if (props.oldRepairOrderPersonList.length === 0) {
+              // 旧列表为空,新列表不为空,存在差异
+              hasDifference = true
+            } else if (newPersonList.length !== props.oldRepairOrderPersonList.length) {
+              // 列表长度不一致,存在差异
+              hasDifference = true
+            } else {
+              // 比较每个人员的 nickName
+              for (let newPerson of newPersonList) {
+                const found = props.oldRepairOrderPersonList.some(oldPerson =>
+                    newPerson.nickName === oldPerson.nickName
+                )
+                if (!found) {
+                  hasDifference = true
+                  break
+                }
+              }
+            }
+
+            // 如果存在差异,提醒用户但不改变当前 repairOrderPersonList
+            if (hasDifference) {
+              // const newNames = newPersonList.map(p => p.nickName).join(',')
+              // const oldNames = oldRepairOrderPersonList.value.map(p => p.nickName).join(',')
+              ElMessageBox.confirm('MIS 工单人员列表与当前工单人员列表不一致!', '提示', {
+                confirmButtonText: '确定',
+                showCancelButton: false,
+                type: 'warning'
+              }).then(function () {
+                infoEntryDisabled.value = true
+              }).then(() => {
+              }).catch(() => {
+              })
+            }
+          }
           const updatedData = {
             ...formData.value,
-            repairOrderPersonList: response.rows
+            repairOrderPersonList: formData.value.overStopStatus == 2 ? props.oldRepairOrderPersonList : response.rows
           };
-          if (response.rows) {
+          if (response.rows && formData.value.overStopStatus !=2) {
             // 查找 isLeader 等于 1 的负责人(优先获取第一个符合条件的,贴合常规单负责人场景)
             const leaderPerson = response.rows.find(person => person.isLeader === 1);
             // 给 teamLeaderName 赋值

+ 101 - 36
ygtx-ui/src/views/gxt/repairOrder/index.vue

@@ -889,6 +889,7 @@
       @success="handleFinalizeSuccess"
       @select-mis-info="handleSelectMisInfo"
       :common-key = "commonKey"
+      :old-repair-order-person-list="oldRepairOrderPersonList"
     >
     </FinalizeDialog>
 
@@ -1514,6 +1515,8 @@ const faultInfoSearchTimer = ref(null)
 const faultBarcodeSearchTimer = ref(null)
 const faultDescSearchTimer = ref(null)
 const allFaultInfoList = ref([]) // 存储所有故障数据用于快速检索
+const oldRepairOrderPersonList = ref([])
+const oldTeamLeaderName = ref(null)
 
 const forceKey = ref(0)
 
@@ -3521,7 +3524,7 @@ async function submitApprove(approvalStatusValue) {
 
 /** 结单操作 */
 function handleFinalize(row, method) {
-  // getRepairOrder(row.id).then(response => {
+  getRepairOrder(row.id).then(response => {
   //   finalizeFormData.value = { ...response.data, selectedMembers: [] }
   //   debugger
   //   finalizeFormData.value.repairMethod = method;
@@ -3530,12 +3533,18 @@ function handleFinalize(row, method) {
   //   }
   //   finalizeDialogVisible.value = true
   //   commonKey++
-  // })
-  finalizeFormData.value = row
-  finalizeFormData.value.orderId = row.id
-  finalizeFormData.value.infoEntry = '1'
-  // finalizeFormData.value.repairMethod = method;
-  debugger
+
+  // finalizeFormData.value = row
+    finalizeFormData.value = { ...response.data }
+    finalizeFormData.value.orderId = row.id
+    finalizeFormData.value.infoEntry = '1'
+    // finalizeFormData.value.repairMethod = method;
+    debugger
+
+  // 保存旧的 repairOrderPersonList(用于后续比对)
+    oldRepairOrderPersonList.value = finalizeFormData.value.repairOrderPersonList || []
+    oldTeamLeaderName.value = finalizeFormData.value.teamLeaderName
+
   if (row.occurTime && row.restartTime) {
     listAutoMisInfo({
       pauseTime: row.occurTime,
@@ -3567,41 +3576,96 @@ function handleFinalize(row, method) {
                   for (const person of finalizeFormData.value.repairOrderPersonList) {
                     // 严格判断isLeader为1(兼容数字/字符串类型)
                     if (person.isLeader === 1 || person.isLeader === '1') {
-                      finalizeFormData.value.teamLeaderName = person.nickName;
-                      break; // 找到后立即停止循环
-                    }
-                  }
-                  const nickNames = finalizeFormData.value.repairOrderPersonList
-                      .filter(person => person.isLeader != 1)
-                      .map(person => person.nickName)
-                      .join(',');
-                  finalizeFormData.value.workGroupMemberName = nickNames
-                  // finishDialogVisible.value = true
-
-                  finalizeFormData.value.repairOrderPersonList.map(person => {
-                    // 构造查询参数:username 和 nickName
-                    const queryParams = {
-                      userName: person.userName, // 假设person对象有username字段
-                      nickName: person.nickName  // 假设person对象有nickName字段
-                    };
-                    listUserData(queryParams).then(response => {
-                      debugger
-                      if (!response.total) {
-                        let msg = "已匹配到MIS工单,但工作班成员'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
-                        if (person.isLeader == 1) {
-                          msg = "已匹配到MIS工单,但工作负责人'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
-                        }
-                        ElMessageBox.confirm(msg, '提示', {
+                      if (finalizeFormData.value.overStopStatus == 2 && oldTeamLeaderName != person.nickName) {
+                        ElMessageBox.confirm("MIS工单工作负责人与手动选择的工作负责人不一致", '提示', {
                           confirmButtonText: '确定',
                           showCancelButton: false,
                           type: 'warning'
-                        }).then(function() {
+                        }).then(function () {
                           infoEntryDisabled.value = true
                         }).then(() => {
-                        }).catch(() => {})
+                        }).catch(() => {
+                        })
+                        break
+                      } else {
+                        finalizeFormData.value.teamLeaderName = person.nickName;
+                        break; // 找到后立即停止循环
                       }
-                    });
-                  })
+                    }
+                  }
+
+                  // 当 overStopStatus == 2 时,比对旧的 repairOrderPersonList 和新的 MIS 工单获取的 repairOrderPersonList
+                  if (finalizeFormData.value.overStopStatus == 2) {
+                    let hasDifference = false
+                    const newPersonList = finalizeFormData.value.repairOrderPersonList
+                    if (oldRepairOrderPersonList.value.length === 0) {
+                      // 旧列表为空,新列表不为空,存在差异
+                      hasDifference = true
+                    } else if (newPersonList.length !== oldRepairOrderPersonList.value.length) {
+                      // 列表长度不一致,存在差异
+                      hasDifference = true
+                    } else {
+                      // 比较每个人员的 nickName
+                      for (let newPerson of newPersonList) {
+                        const found = oldRepairOrderPersonList.value.some(oldPerson =>
+                            newPerson.nickName === oldPerson.nickName
+                        )
+                        if (!found) {
+                          hasDifference = true
+                          break
+                        }
+                      }
+                    }
+
+                    // 如果存在差异,提醒用户但不改变当前 repairOrderPersonList
+                    if (hasDifference) {
+                      // const newNames = newPersonList.map(p => p.nickName).join(',')
+                      // const oldNames = oldRepairOrderPersonList.value.map(p => p.nickName).join(',')
+                      ElMessageBox.confirm('MIS 工单人员列表与当前工单人员列表不一致!', '提示', {
+                        confirmButtonText: '确定',
+                        showCancelButton: false,
+                        type: 'warning'
+                      }).then(function () {
+                        infoEntryDisabled.value = true
+                      }).then(() => {
+                      }).catch(() => {
+                      })
+                    }
+                  } else {
+
+                    const nickNames = finalizeFormData.value.repairOrderPersonList
+                        .filter(person => person.isLeader != 1)
+                        .map(person => person.nickName)
+                        .join(',');
+                    finalizeFormData.value.workGroupMemberName = nickNames
+                    // finishDialogVisible.value = true
+
+                    finalizeFormData.value.repairOrderPersonList.map(person => {
+                      // 构造查询参数:username 和 nickName
+                      const queryParams = {
+                        userName: person.userName, // 假设person对象有username字段
+                        nickName: person.nickName  // 假设person对象有nickName字段
+                      };
+                      listUserData(queryParams).then(response => {
+                        debugger
+                        if (!response.total) {
+                          let msg = "已匹配到MIS工单,但工作班成员'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
+                          if (person.isLeader == 1) {
+                            msg = "已匹配到MIS工单,但工作负责人'" + person.nickName + "'在系统中不存在,系统无法自动结单,请检查"
+                          }
+                          ElMessageBox.confirm(msg, '提示', {
+                            confirmButtonText: '确定',
+                            showCancelButton: false,
+                            type: 'warning'
+                          }).then(function () {
+                            infoEntryDisabled.value = true
+                          }).then(() => {
+                          }).catch(() => {
+                          })
+                        }
+                      });
+                    })
+                  }
                 }
               })
             } else {
@@ -3667,6 +3731,7 @@ function handleFinalize(row, method) {
   }
   finalizeDialogVisible.value = true
   commonKey++
+  })
 }
 
 /** 复启操作 */