团队冲刺5


昨天的成就:
昨天我完成了员工管理模块的最后一部分:调动管理。本项目的的web端的员工管理模块完成。
相关代码:
// 加载调动管理内容

function loadTransferManagement(container) {
container.innerHTML = <div class="transfer-management"> <h3 style="font-size: 1.5rem;">调动管理</h3> <div id="transferContent"></div> </div> ;

// 获取当前用户信息以判断是否可以使用调动功能
fetch('/api/user/current-user-info')
.then(response => {
if (!response.ok) {
throw new Error('网络响应失败');
}
return response.json();
})
.then(data => {
const transferContent = document.getElementById('transferContent');
const permissionLevel = data.permissionLevel;
const departmentId = data.departmentId;

// 检查权限和部门
if (permissionLevel === 3 && departmentId === 4) {
// 加载所有部门
fetch('/api/department/all')
.then(response => {
if (!response.ok) {
throw new Error('网络响应失败');
}
return response.json();
})
.then(departments => {
// 渲染部门列表
let departmentsHtml = '

';
departments.forEach(dept => {
departmentsHtml += <button onclick="selectDepartment(${dept.departmentId})" style="padding: 8px 15px; background-color: #e6f2ff; border: 1px solid #bbdefb; border-radius: 4px; cursor: pointer;"> ${dept.departmentName} </button> ;
});
departmentsHtml += '
';
transferContent.innerHTML = departmentsHtml + '
';
})
.catch(error => {
console.error('获取部门数据出错:', error);
transferContent.innerHTML = '

获取部门数据失败,请重试

';
});
} else {
// 权限不足
transferContent.innerHTML = <p style="font-size: 1.2rem; color: #666;">您没有权限进行调动操作。</p> ;
}
})
.catch(error => {
console.error('获取当前用户信息出错:', error);
document.getElementById('transferContent').innerHTML = '

获取用户信息失败,请刷新重试

';
});
}

// 选择部门并加载该部门的员工
function selectDepartment(departmentId) {
// 获取部门名称
const departmentName = event.target.textContent;

// 加载该部门的员工(排除permission_level为3的员工)
fetch(/api/user/department/${departmentId}/employees)
.then(response => {
if (!response.ok) {
throw new Error('网络响应失败');
}
return response.json();
})
.then(employees => {
const departmentEmployees = document.getElementById('departmentEmployees');
let employeesHtml = <h4 style="margin-top: 20px; font-size: 1.3rem;">${departmentName} 的员工</h4>;
employeesHtml += '

    ';

    employees.forEach(employee => {
    employeesHtml += <li style="padding: 10px; border-bottom: 1px solid #eee; font-size: 1.1rem; display: flex; justify-content: space-between; align-items: center;"> <span>员工ID ${employee.id},职位:${employee.position}</span> <button onclick="showTransferForm(${employee.id}, '${departmentName}')" style="padding: 5px 10px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;">调动</button> </li> ;
    });

    employeesHtml += '

';
departmentEmployees.innerHTML = employeesHtml;
})
.catch(error => {
console.error('获取员工数据出错:', error);
document.getElementById('departmentEmployees').innerHTML = '

获取员工数据失败,请重试

';
});
}

// 显示调动表单
function showTransferForm(employeeId, departmentName) {
// 加载所有目标部门(排除当前部门)
fetch('/api/department/all')
.then(response => {
if (!response.ok) {
throw new Error('网络响应失败');
}
return response.json();
})
.then(departments => {
const transferForm = document.getElementById('transferForm');
let departmentsHtml = '';
departmentsHtml += '';

transferForm.innerHTML = <h4 style="margin-top: 0; font-size: 1.3rem;">调动员工</h4> <p style="font-size: 1.1rem; margin-bottom: 15px;">您正在调动来自 ${departmentName} 的员工ID ${employeeId}</p> ${departmentsHtml} <button onclick="submitTransfer(${employeeId})" style="font-size: 1.1rem; padding: 10px 20px; background-color: #007bff; color: white; border: none; border-radius: 4px; cursor: pointer;">确认调动</button> ;
transferForm.style.display = 'block';
})
.catch(error => {
console.error('获取部门数据出错:', error);
document.getElementById('transferForm').innerHTML = '

获取部门数据失败,请重试

';
});
}

// 提交调动请求
function submitTransfer(employeeId) {
const targetDepartmentId = document.getElementById('targetDepartment').value;

fetch('/api/user/transfer', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
employeeId: employeeId,
targetDepartmentId: targetDepartmentId
})
})
.then(response => {
if (!response.ok) {
throw new Error('网络响应失败');
}
return response.json();
})
.then(data => {
alert('员工调动成功!');
// 刷新页面以显示新状态
location.reload();
})
.catch(error => {
console.error('提交调动请求出错:', error);
alert('调动操作失败,请重试');
});
}
遇到了的困难:
这次编程的过程中没有太大的困难,在我编程完运行时发现项目和之前一样,调用开发者工具发现页面代码与之前一样,没有加入我刚写好的代码,这个不是大问题,清理缓存即可。

今天的任务:
将小组成员负责的企业管理模块与我的项目对接。完成了上次的树形结构的优化,现在够直接在图形界面拖拽了
另外能够手动改变同级别的顺序,并且有平滑的动画效果

其次开始做了一个大的模块框架:

还没有调试成功后端项目结构如下:
完成了团队项目的后端代码,在idea上创建了数据库
-- auto-generated definition
create table department
(
department_id int auto_increment comment '部门唯一ID'
primary key,
department_name varchar(50) not null comment '部门名称',
level1_position varchar(50) not null comment '一级职位名称',
level2_position varchar(50) not null comment '二级职位名称',
level3_position varchar(50) not null comment '三级职位名称',
level1_permission tinyint default 1 not null comment '一级权限(固定1)',
level2_permission tinyint default 2 not null comment '二级权限(固定2)',
level3_permission tinyint default 3 not null comment '三级权限(固定3)',
level1position varchar(255) null,
level2position varchar(255) null,
level3position varchar(255) null
);
-- auto-generated definition
create table mentorship
(
id int auto_increment
primary key,
mentor_id int not null,
mentee_id int not null,
constraint mentorship_ibfk_1
foreign key (mentor_id) references user (id),
constraint mentorship_ibfk_2
foreign key (mentee_id) references user (id)
);

create index mentee_id
on mentorship (mentee_id);

create index mentor_id
on mentorship (mentor_id);
-- auto-generated definition
create table promotion_request
(
id int auto_increment
primary key,
target_rank_level int null,
user_id int null,
constraint FKcjllk3cu7ty9ntltbrhyxvphc
foreign key (user_id) references user (id)
);-- auto-generated definition
create table promotion_request_content
(
id int auto_increment
primary key,
content text null,
change_type int null,
user_id int null,
constraint promotion_request_content_ibfk_1
foreign key (user_id) references user (id)
);

create index user_id
on promotion_request_content (user_id);
-- auto-generated definition
create table user
(
id int auto_increment comment '用户唯一标识'
primary key,
password varchar(255) not null comment '加密后的密码',
permission_level tinyint default 1 not null comment '权限等级 (1-普通用户, 2-管理员, 3-超级管理员)',
position varchar(20) null comment '职位 (如: 开发工程师、项目经理)',
height decimal(5, 2) null comment '身高 (单位: 厘米,示例: 175.50)',
weight decimal(5, 2) null comment '体重 (单位: 公斤,示例: 68.50)',
vision decimal(3, 1) null comment '视力 (示例: 5.0 或 4.5)',
department_id int null,
department varchar(255) null,
performance_score int null,
constraint fk_user_department
foreign key (department_id) references department (department_id)
);

上述为数据库代码
后端代码与web端代码基本相同
今天遇到的困难:
我建立的数据库表与队友建立的表不同,于是我们选择将团队web端的表直接导入进去,而队友使用的非idea中自带的数据库,导致导入工作很麻烦,但在求助ai后完成了该任务

posted @ 2025-04-25 23:21  01开拓者  阅读(24)  评论(0)    收藏  举报