You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

224 lines
9.9 KiB

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>编辑学生 - 学生信息管理系统</title>
<link rel="stylesheet" href="${pageContext.request.contextPath}/css/style.css">
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
<script>
$(function() {
// 使用Ajax加载学生数据
var urlParams = new URLSearchParams(window.location.search);
var studentId = urlParams.get('id');
if (!studentId) {
alert("缺少学生ID");
window.location.href = "${pageContext.request.contextPath}/student?action=list";
return;
}
$.ajax({
url: "${pageContext.request.contextPath}/getStudent",
type: "GET",
data: {id: studentId},
dataType: "json",
success: function(res) {
if (res.code === 200) {
var data = res.data;
$("#studentId").val(data.id);
$("#studentNo").val(data.studentNo);
$("#name").val(data.name);
$("#gender").val(data.gender);
$("#age").val(data.age);
$("#className").val(data.className);
$("#major").val(data.major);
$("#phone").val(data.phone);
$("#email").val(data.email);
$("#address").val(data.address);
$("#birthday").val(data.birthday);
$("#status").val(data.status);
} else {
alert("获取学生信息失败: " + res.msg);
window.location.href = "${pageContext.request.contextPath}/student?action=list";
}
},
error: function() {
alert("获取学生信息失败,请重试");
window.location.href = "${pageContext.request.contextPath}/student?action=list";
}
});
// Ajax校验学号是否已存在(排除自己)
var studentNoAvailable = true;
$("#studentNo").blur(function() {
var studentNo = $(this).val().trim();
var id = $("#studentId").val();
if (studentNo === "") {
$("#studentNoTip").text("请输入学号").css("color", "#e74c3c");
return;
}
$.ajax({
url: "${pageContext.request.contextPath}/checkStudentNo",
type: "GET",
data: {studentNo: studentNo, excludeId: id},
dataType: "json",
success: function(res) {
if (res.available) {
$("#studentNoTip").text("✓ 学号可用").css("color", "#27ae60");
studentNoAvailable = true;
} else {
$("#studentNoTip").text("✗ 学号已存在").css("color", "#e74c3c");
studentNoAvailable = false;
}
}
});
});
// 表单验证
$("#editForm").submit(function(e) {
var studentNo = $("#studentNo").val().trim();
var name = $("#name").val().trim();
var gender = $("#gender").val();
if (studentNo === "") {
alert("请输入学号");
$("#studentNo").focus();
e.preventDefault();
return false;
}
if (name === "") {
alert("请输入姓名");
$("#name").focus();
e.preventDefault();
return false;
}
if (gender === "") {
alert("请选择性别");
e.preventDefault();
return false;
}
return true;
});
});
</script>
</head>
<body>
<div class="container">
<!-- 导航栏 -->
<nav class="navbar">
<div class="nav-brand">
<a href="${pageContext.request.contextPath}/">学生信息管理系统</a>
</div>
<div class="nav-links">
<c:if test="${loginUser.isAdmin()}">
<a href="${pageContext.request.contextPath}/admin/user?action=list">用户管理</a>
</c:if>
<a href="${pageContext.request.contextPath}/student?action=list">学生列表</a>
<a href="${pageContext.request.contextPath}/addStudent">添加学生</a>
<a href="#" class="active">编辑学生</a>
<a href="${pageContext.request.contextPath}/profile">${loginUser.realName != null ? loginUser.realName : loginUser.username}</a>
<a href="${pageContext.request.contextPath}/logout">退出</a>
</div>
</nav>
<!-- 页面标题 -->
<div class="page-header">
<h2>编辑学生信息</h2>
<div class="header-actions">
<a href="${pageContext.request.contextPath}/student?action=list" class="btn btn-secondary">返回列表</a>
</div>
</div>
<!-- 错误提示 -->
<c:if test="${not empty error}">
<div class="alert alert-error">${error}</div>
</c:if>
<!-- 编辑表单 -->
<div class="form-container">
<form id="editForm" action="${pageContext.request.contextPath}/updateStudent" method="post" class="data-form">
<input type="hidden" id="studentId" name="id" value="">
<div class="form-row">
<div class="form-group">
<label for="studentNo">学号 <span class="required">*</span></label>
<input type="text" id="studentNo" name="studentNo" class="form-control" required maxlength="20">
<span id="studentNoTip" class="form-tip"></span>
</div>
<div class="form-group">
<label for="name">姓名 <span class="required">*</span></label>
<input type="text" id="name" name="name" class="form-control" required maxlength="50">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="gender">性别 <span class="required">*</span></label>
<select id="gender" name="gender" class="form-control" required>
<option value="">请选择</option>
<option value="男">男</option>
<option value="女">女</option>
</select>
</div>
<div class="form-group">
<label for="age">年龄</label>
<input type="number" id="age" name="age" class="form-control" min="1" max="100">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="className">班级</label>
<input type="text" id="className" name="className" class="form-control" maxlength="50">
</div>
<div class="form-group">
<label for="major">专业</label>
<input type="text" id="major" name="major" class="form-control" maxlength="50">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="phone">联系电话</label>
<input type="text" id="phone" name="phone" class="form-control" maxlength="20">
</div>
<div class="form-group">
<label for="email">电子邮箱</label>
<input type="email" id="email" name="email" class="form-control" maxlength="100">
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="birthday">出生日期</label>
<input type="date" id="birthday" name="birthday" class="form-control">
</div>
<div class="form-group">
<label for="status">状态</label>
<select id="status" name="status" class="form-control">
<option value="在读">在读</option>
<option value="休学">休学</option>
<option value="毕业">毕业</option>
</select>
</div>
</div>
<div class="form-group full-width">
<label for="address">家庭住址</label>
<textarea id="address" name="address" class="form-control" rows="2" maxlength="200"></textarea>
</div>
<div class="form-actions">
<button type="submit" class="btn btn-primary">保存修改</button>
<a href="${pageContext.request.contextPath}/student?action=list" class="btn btn-secondary">取消</a>
</div>
</form>
</div>
</div>
</body>
</html>