From 2ab9c774a627dc9850cec7043de7bff138c1146d Mon Sep 17 00:00:00 2001 From: Trae AI Date: Fri, 9 Jan 2026 17:04:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=AE=80=E9=81=93=E4=BA=91?= =?UTF-8?q?=E6=8C=89=E9=92=AE=E7=8A=B6=E6=80=81=E3=80=81=E5=88=86=E9=A1=B5?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=92=8CColleague=E7=B1=BB=E5=9E=8B=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/example/web/entity/Users.java | 19 ++- web/src/main/resources/mapper/UsersMapper.xml | 40 +++-- web/src/main/resources/static/index.html | 153 ++++++++++++++++-- web/src/main/resources/static/login.html | 2 +- 4 files changed, 191 insertions(+), 23 deletions(-) diff --git a/web/src/main/java/com/example/web/entity/Users.java b/web/src/main/java/com/example/web/entity/Users.java index b736bf6..a13ec6c 100644 --- a/web/src/main/java/com/example/web/entity/Users.java +++ b/web/src/main/java/com/example/web/entity/Users.java @@ -33,10 +33,11 @@ public class Users { private String demand;//客户需求 private String spec;//规格 private String followup;//跟进信息 + private LocalDateTime followup_at;//跟进时间 private String notice;//通知状态(new/old/banold) private String userlog;//用户操作日志 private Integer sync_statuss;//同步状态 - + private String managerName;//负责人姓名 public Integer getId() { @@ -207,6 +208,14 @@ public class Users { this.followup = followup; } + public LocalDateTime getFollowup_at() { + return followup_at; + } + + public void setFollowup_at(LocalDateTime followup_at) { + this.followup_at = followup_at; + } + public String getNotice() { return notice; } @@ -230,4 +239,12 @@ public class Users { public void setSync_statuss(Integer sync_statuss) { this.sync_statuss = sync_statuss; } + + public String getManagerName() { + return managerName; + } + + public void setManagerName(String managerName) { + this.managerName = managerName; + } } diff --git a/web/src/main/resources/mapper/UsersMapper.xml b/web/src/main/resources/mapper/UsersMapper.xml index c39495a..d20fcb2 100644 --- a/web/src/main/resources/mapper/UsersMapper.xml +++ b/web/src/main/resources/mapper/UsersMapper.xml @@ -2,7 +2,7 @@ @@ -131,18 +148,21 @@ @@ -413,6 +459,7 @@ 创建时间 跟进内容 响应时间 + 负责人 操作 @@ -443,6 +490,7 @@ 创建时间 跟进内容 响应时间 + 负责人 操作 @@ -463,6 +511,7 @@ var publicPage = 1; var personalPageSize = 10; var publicPageSize = 10; + var personalFilter = 'all'; // all, followed, unfollowed function init() { var savedUserInfo = localStorage.getItem('userInfo'); @@ -557,7 +606,7 @@ role: usersManagements.role || '' }; - var url = 'http://localhost:8083/KH/api/users?' + objectToQueryString(params); + var url = 'http://8.137.125.67:8083/KH/api/users?' + objectToQueryString(params); var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); @@ -571,6 +620,12 @@ xhr.send(); } + function filterPersonalData(filter) { + personalFilter = filter; + personalPage = 1; // 重置为第一页 + loadPersonalData(); + } + function loadPublicData() { var userRole = userInfo.loginInfo.projectName; var usersManagements = userInfo.usersManagements; @@ -587,7 +642,7 @@ role: usersManagements.role || '' }; - var url = 'http://localhost:8083/KH/api/users/public?' + objectToQueryString(params); + var url = 'http://8.137.125.67:8083/KH/api/users/public?' + objectToQueryString(params); var xhr = new XMLHttpRequest(); xhr.open('GET', url, true); @@ -709,9 +764,9 @@ } function calculateResponseTime(createdAt, followupAt) { - if (!createdAt) return '-'; + if (!createdAt || !followupAt) return '-'; var createTime = new Date(createdAt); - var followupTime = followupAt ? new Date(followupAt) : new Date(); + var followupTime = new Date(followupAt); var diffMs = followupTime - createTime; var diffMins = Math.floor(diffMs / 60000); var diffHours = Math.floor(diffMins / 60); @@ -731,8 +786,18 @@ function displayPersonalData(data) { var personalBody = document.getElementById('personalBody'); var personalEmpty = document.getElementById('personalEmpty'); + var managerHeader = document.getElementById('managerHeader'); + var personalPagination = document.getElementById('personalPagination'); personalBody.innerHTML = ''; + // 检查用户角色,只对管理员显示负责人列 + var userRole = userInfo.loginInfo.projectName; + if (userRole === '管理员') { + managerHeader.style.display = 'table-cell'; + } else { + managerHeader.style.display = 'none'; + } + console.log('后端返回的数据量:', data.users ? data.users.length : 0); console.log('总记录数:', data.total); console.log('当前页码:', data.page); @@ -742,7 +807,19 @@ if (data.users && data.users.length > 0) { personalEmpty.style.display = 'none'; var filteredUsers = data.users.filter(function(user) { - return user.type !== 'Colleague'; + // 过滤掉同事类型 + if (user.type === 'Colleague') { + return false; + } + + // 根据筛选条件过滤 + if (personalFilter === 'followed') { + return user.followup && user.followup !== ''; + } else if (personalFilter === 'unfollowed') { + return !user.followup || user.followup === ''; + } + // 'all' 或其他情况,不过滤 + return true; }); console.log('过滤后的数据量:', filteredUsers.length); @@ -751,30 +828,67 @@ for (var i = 0; i < filteredUsers.length; i++) { var user = filteredUsers[i]; var responseTime = calculateResponseTime(user.created_at, user.followup_at); + var managerCell = ''; + + // 只对管理员显示负责人信息 + if (userRole === '管理员') { + managerCell = '' + (user.managerName || user.followup || '-') + ''; + } else { + managerCell = ''; + } + + // 生成简道云按钮,根据sync_statuss字段决定状态 + var jianDaoYunButton = ''; + if (user.sync_statuss === 0 || user.sync_statuss === 1) { + // 已写入简道云,显示灰色不可点击按钮 + jianDaoYunButton = ''; + } else { + // 未写入简道云,显示正常按钮 + jianDaoYunButton = ''; + } + var row = '' + '' + (user.nickName || '-') + '' + '' + (user.phoneNumber || '-') + '' + '' + mapUserType(user.type) + '' + '' + formatDateTime(user.created_at) + '' + '' + (user.followup || '-') + '' + - '' + responseTime + '' + - ' ' + + '' + responseTime + '' + + managerCell + + ' ' + jianDaoYunButton + '' + ''; personalBody.innerHTML += row; + + // 有数据时显示分页控件 + personalPagination.style.display = 'flex'; } } else { personalEmpty.style.display = 'block'; + // 没有数据时隐藏分页控件 + personalPagination.style.display = 'none'; } } else { personalEmpty.style.display = 'block'; + // 没有数据时隐藏分页控件 + personalPagination.style.display = 'none'; } } function displayPublicData(data) { var publicBody = document.getElementById('publicBody'); var publicEmpty = document.getElementById('publicEmpty'); + var publicManagerHeader = document.getElementById('publicManagerHeader'); + var publicPagination = document.getElementById('publicPagination'); // New: Get pagination element publicBody.innerHTML = ''; + // 检查用户角色,只对管理员显示负责人列 + var userRole = userInfo.loginInfo.projectName; + if (userRole === '管理员') { + publicManagerHeader.style.display = 'table-cell'; + } else { + publicManagerHeader.style.display = 'none'; + } + if (data.users && data.users.length > 0) { publicEmpty.style.display = 'none'; var filteredUsers = data.users.filter(function(user) { @@ -785,6 +899,15 @@ for (var i = 0; i < filteredUsers.length; i++) { var user = filteredUsers[i]; var responseTime = calculateResponseTime(user.created_at, user.followup_at); + var managerCell = ''; + + // 只对管理员显示负责人信息 + if (userRole === '管理员') { + managerCell = '' + (user.managerName || '-') + ''; + } else { + managerCell = ''; + } + var row = '' + '' + (user.nickName || '-') + '' + '' + (user.phoneNumber || '-') + '' + @@ -792,15 +915,23 @@ '' + formatDateTime(user.created_at) + '' + '' + (user.followup || '-') + '' + '' + responseTime + '' + + managerCell + '' + ''; publicBody.innerHTML += row; + + // 有数据时显示分页控件 + publicPagination.style.display = 'flex'; } } else { publicEmpty.style.display = 'block'; + // 没有数据时隐藏分页控件 + publicPagination.style.display = 'none'; } } else { publicEmpty.style.display = 'block'; + // 没有数据时隐藏分页控件 + publicPagination.style.display = 'none'; } } @@ -816,7 +947,7 @@ role: usersManagements.role || '' }; - var url = 'http://localhost:8083/KH/api/users/claim'; + var url = 'http://8.137.125.67:8083/KH/api/users/claim'; var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); @@ -869,7 +1000,7 @@ role: usersManagements.role || '' }; - var url = 'http://localhost:8083/KH/api/users/followup'; + var url = 'http://8.137.125.67:8083/KH/api/users/followup'; var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); @@ -922,7 +1053,7 @@ userId: userId }; - var url = 'http://localhost:8083/KH/api/users/jianDaoYun'; + var url = 'http://8.137.125.67:8083/KH/api/users/jianDaoYun'; var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); @@ -952,7 +1083,7 @@ type: type }; - var url = 'http://localhost:8083/KH/api/users/return'; + var url = 'http://8.137.125.67:8083/KH/api/users/return'; var xhr = new XMLHttpRequest(); xhr.open('POST', url, true); diff --git a/web/src/main/resources/static/login.html b/web/src/main/resources/static/login.html index f1255a3..e107cf4 100644 --- a/web/src/main/resources/static/login.html +++ b/web/src/main/resources/static/login.html @@ -116,7 +116,7 @@ errorMessage.textContent = ''; // 发送登录请求 - fetch('http://localhost:8083/KH/api/login', { + fetch('http://8.137.125.67:8083/KH/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json'