diff --git a/web/src/main/java/com/example/web/mapper/PersonnelMapper.java b/web/src/main/java/com/example/web/mapper/PersonnelMapper.java index cfc356e..1a0ee9a 100644 --- a/web/src/main/java/com/example/web/mapper/PersonnelMapper.java +++ b/web/src/main/java/com/example/web/mapper/PersonnelMapper.java @@ -6,4 +6,7 @@ import com.example.web.annotation.DataSource; public interface PersonnelMapper { @DataSource("primary") Personnel findByName(String name); + + @DataSource("primary") + Personnel findByNameAndProjectName(String name, String projectName); } diff --git a/web/src/main/java/com/example/web/service/impl/LoginServiceImpl.java b/web/src/main/java/com/example/web/service/impl/LoginServiceImpl.java index acf1ff1..356ff3e 100644 --- a/web/src/main/java/com/example/web/service/impl/LoginServiceImpl.java +++ b/web/src/main/java/com/example/web/service/impl/LoginServiceImpl.java @@ -39,7 +39,7 @@ public class LoginServiceImpl implements LoginService { } // 2. 查询Personnel信息 - Personnel personnel = personnelMapper.findByName(loginInfo.getUserName()); + Personnel personnel = personnelMapper.findByNameAndProjectName(loginInfo.getUserName(), loginInfo.getProjectName()); if (personnel == null) { result.put("success", false); result.put("message", "未找到员工信息"); diff --git a/web/src/main/java/com/example/web/service/impl/UserServiceImpl.java b/web/src/main/java/com/example/web/service/impl/UserServiceImpl.java index 1cb3a5c..a633cae 100644 --- a/web/src/main/java/com/example/web/service/impl/UserServiceImpl.java +++ b/web/src/main/java/com/example/web/service/impl/UserServiceImpl.java @@ -54,6 +54,7 @@ public class UserServiceImpl implements UserService { params.put("managerdepartment", managerdepartment); params.put("organization", organization); params.put("role", role); + params.put("followup", followup); // 查询数据 List usersList; diff --git a/web/src/main/resources/mapper/PersonnelMapper.xml b/web/src/main/resources/mapper/PersonnelMapper.xml index c8e9ae4..1b743a5 100644 --- a/web/src/main/resources/mapper/PersonnelMapper.xml +++ b/web/src/main/resources/mapper/PersonnelMapper.xml @@ -4,4 +4,8 @@ + + \ No newline at end of file diff --git a/web/src/main/resources/mapper/UsersMapper.xml b/web/src/main/resources/mapper/UsersMapper.xml index d20fcb2..98f0d75 100644 --- a/web/src/main/resources/mapper/UsersMapper.xml +++ b/web/src/main/resources/mapper/UsersMapper.xml @@ -73,6 +73,7 @@ AND organization = #{organization} AND role = #{role} ) + AND u.followup = #{followup} AND (u.sync_statuss IS NULL OR u.sync_statuss NOT IN (0, 1)) AND u.type != 'Colleague' ORDER BY u.created_at DESC @@ -89,6 +90,7 @@ AND organization = #{organization} AND role = #{role} ) + AND followup = #{followup} AND (sync_statuss IS NULL OR sync_statuss NOT IN (0, 1)) AND type != 'Colleague' @@ -119,6 +121,12 @@ @@ -128,6 +136,11 @@ JOIN usermanagements um ON u.userId = um.userId WHERE (u.sync_statuss IS NULL OR u.sync_statuss NOT IN (0, 1)) AND u.type != 'Colleague' + AND ((um.managercompany IS NOT NULL AND um.managercompany != '') + OR (um.managerdepartment IS NOT NULL AND um.managerdepartment != '') + OR (um.organization IS NOT NULL AND um.organization != '') + OR (um.role IS NOT NULL AND um.role != '') + OR (um.userName IS NOT NULL AND um.userName != '')) ' : ''; + + var row = '' + + checkboxCell + + '' + (user.nickName || '-') + '' + + '' + (user.phoneNumber || '-') + '' + + '' + mapUserType(user.type) + '' + + '' + formatDateTime(user.created_at) + '' + + '' + (user.followup || '-') + '' + + '' + responseTime + '' + + managerCell + + ' ' + jianDaoYunButton + '' + + ''; + personalBody.innerHTML += row; + + // 有数据时显示分页控件 + personalPagination.style.display = 'flex'; + } + + // 渲染分页控件 + renderPersonalPagination(personalPage, totalPages); + } else { + personalEmpty.style.display = 'block'; + // 没有数据时隐藏分页控件 + personalPagination.style.display = 'none'; + } + } + function filterPersonalData(filter) { personalFilter = filter; personalPage = 1; // 重置为第一页 - loadPersonalData(); + + // 对于已跟进和未跟进,总是加载所有数据后进行筛选 + if (filter === 'followed' || filter === 'unfollowed') { + loadAllPersonalData(); + } else { + // 对于全部,使用正常的分页加载 + loadPersonalData(); + } } function loadPublicData() { @@ -895,6 +1052,11 @@ console.log('每页大小:', data.size); console.log('总页数:', data.pages); + // 缓存所有数据 + if (personalFilter === 'all') { + allPersonalData = data.users || []; + } + if (data.users && data.users.length > 0) { personalEmpty.style.display = 'none'; var filteredUsers = data.users.filter(function(user) { @@ -916,14 +1078,28 @@ console.log('过滤后的数据量:', filteredUsers.length); if (filteredUsers.length > 0) { - for (var i = 0; i < filteredUsers.length; i++) { - var user = filteredUsers[i]; + var displayUsers = filteredUsers; + var totalPages = data.pages; + + // 对于已跟进和未跟进,使用自主分页 + if (personalFilter === 'followed' || personalFilter === 'unfollowed') { + // 自主分页:根据过滤后的数据和当前页码计算显示数据 + var startIndex = (personalPage - 1) * personalPageSize; + var endIndex = startIndex + personalPageSize; + displayUsers = filteredUsers.slice(startIndex, endIndex); + + // 计算总页数 + totalPages = Math.ceil(filteredUsers.length / personalPageSize); + } + + for (var i = 0; i < displayUsers.length; i++) { + var user = displayUsers[i]; var responseTime = calculateResponseTime(user.created_at, user.followup_at); var managerCell = ''; // 只对管理员显示负责人信息 if (userRole === '管理员') { - managerCell = '' + (user.managerName || user.followup || '-') + ''; + managerCell = '' + (user.managerName || '-') + ''; } else { managerCell = ''; } @@ -957,6 +1133,9 @@ // 有数据时显示分页控件 personalPagination.style.display = 'flex'; } + + // 渲染分页控件 + renderPersonalPagination(personalPage, totalPages); } else { personalEmpty.style.display = 'block'; // 没有数据时隐藏分页控件 @@ -1234,7 +1413,12 @@ prevBtn.onclick = function() { if (current > 1) { personalPage = current - 1; - loadPersonalData(); + // 根据当前筛选条件决定调用哪个函数 + if (personalFilter === 'followed' || personalFilter === 'unfollowed') { + displayFilteredPersonalData(); + } else { + loadPersonalData(); + } } }; pagination.appendChild(prevBtn); @@ -1245,7 +1429,12 @@ pageBtn.className = i == current ? 'active' : ''; pageBtn.onclick = function() { personalPage = parseInt(this.innerHTML); - loadPersonalData(); + // 根据当前筛选条件决定调用哪个函数 + if (personalFilter === 'followed' || personalFilter === 'unfollowed') { + displayFilteredPersonalData(); + } else { + loadPersonalData(); + } }; pagination.appendChild(pageBtn); } @@ -1256,7 +1445,12 @@ nextBtn.onclick = function() { if (current < total) { personalPage = current + 1; - loadPersonalData(); + // 根据当前筛选条件决定调用哪个函数 + if (personalFilter === 'followed' || personalFilter === 'unfollowed') { + displayFilteredPersonalData(); + } else { + loadPersonalData(); + } } }; pagination.appendChild(nextBtn);