学习9

老年人评估系统前端代码
首页

<!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 href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        /* 全局样式 */
        body {
            background-color: #f5f5f5;
            font-family: "Microsoft YaHei", sans-serif;
        }

        /* 头部样式 */
        .header {
            background-color: #fff;
            padding: 20px 0;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }

        .logo img {
            max-height: 60px;
        }

        /* 搜索框样式 */
        .search-wrap {
            padding: 10px 0;
        }

        .search-box {
            display: flex;
            margin-bottom: 10px;
        }

        .search-box input {
            flex: 1;
            padding: 8px 15px;
            border: 2px solid #007bff;
            border-right: none;
            border-radius: 4px 0 0 4px;
            outline: none;
        }

        .search-box button {
            padding: 8px 20px;
            background: #007bff;
            color: white;
            border: none;
            border-radius: 0 4px 4px 0;
            cursor: pointer;
        }

        .hot-search {
            font-size: 14px;
            color: #666;
        }

        /* 导航栏样式 */
        .navbar-style {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .navbar {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .nav-link {
            color: white !important;
            padding: 15px 20px !important;
            font-size: 16px;
            transition: background-color 0.3s;
        }

        .navbar-style .nav-link:hover,
        .navbar-style .nav-link.active {
            background-color: #0056b3;
        }

        /* 主要内容区域样式 */
        .main-content {
            padding: 30px 0;
        }

        .card {
            border: none;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
            margin-bottom: 20px;
        }

        .card-header {
            background-color: #f8f9fa;
            border-bottom: 2px solid #007bff;
            padding: 15px;
        }

        .card-header h5 {
            color: #007bff;
            font-weight: bold;
        }

        /* 新闻列表样式 */
        .list-unstyled li {
            padding: 10px 0;
            border-bottom: 1px solid #eee;
        }

        .list-unstyled li:last-child {
            border-bottom: none;
        }

        .list-unstyled a {
            color: #333;
            text-decoration: none;
            transition: color 0.3s;
        }

        .list-unstyled a:hover {
            color: #007bff;
        }

        /* 登录框样式 */
        .form-control {
            border: 1px solid #ddd;
            padding: 10px;
        }

        .form-control:focus {
            border-color: #007bff;
            box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
        }

        .btn-primary {
            padding: 8px 25px;
            background-color: #007bff;
            border: none;
        }

        .btn-primary:hover {
            background-color: #0056b3;
        }
        .dropdown-menu {
        background-color: #fff;
        border: none;
        box-shadow: 0 2px 4px rgba(0,0,0,0.1);
    }

    .dropdown-item {
        padding: 10px 20px;
        color: #333;
    }

    .dropdown-item:hover {
        background-color: #007bff;
        color: #fff;
    }

    .nav-item.dropdown:hover .dropdown-menu {
        display: block;
    }
    .containers {
        width: 100%;
        height: 500px;
        background-image: url(https://www.cma.org.cn/picture/0/10eb00542857469fab5d0d2793d3ab98.jpg);
        background-repeat: no-repeat;
        background-size: cover;
        background-position: center;
        position: relative;  /* 添加相对定位 */
        display: flex;      /* 使用flex布局 */
        /* justify-content: center;   */
        /* 水平居中 */
        align-items: center;      /* 垂直居中 */
    }
    .containers .box {
        width: 30%;
        height: 30%;
        border-radius: 10px;
        background-color: #F7F7F5;
    }
    .containers .box-content {
        width: 80%;
        height: 100%;
        font-size: 15px;
        font-weight: bold;
    }
    .containers .box-content ul {
        list-style: none;
    }
    .container-1 {
        width: 100%;
        height: 100px;
        background-color: #fff;
    }
    .container-1 .box-1 p{
        font-size: 12px;
        text-align: center;
        color: #8f8f8e;

    }


        /* 响应式调整 */
        @media (max-width: 768px) {
            .header {
                padding: 10px 0;
            }
            
            .navbar-style .nav-link {
                padding: 10px 15px !important;
            }
            
            .search-wrap {
                margin-top: 15px;
            }
        }
        
    </style>
</head>
<body>
    <div class="header">
        <div class="containter">
            <div class="row">
                <div class="col-lg-8 col-md-6">
                    <a href="#" class="logo">
                        <img src="#" alt="">
                    </a>
                </div>
                <div class="col-lg-4 col-md-6">
                    <div class="search-wrap">
                        <form action="/Serach" method="get" class="search-box" target="_blank">
                            <input type="text" name="keys" autocomplete="off" value>
                            <button type="submit">搜索</button>
                        </form>
                        <dl class="hot-search">
                            <dt>
                                <span>热门搜索:</span>
                            </dt>
                        </dl>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="navbar-style">
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <div class="container">
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                        <li class="nav-item">
                            <a class="nav-link active" href="./index.html">首页</a>
                        </li>
                        <li class="nav-item dropdown">
                            <a class="nav-link dropdown-toggle" href="#" id="assessmentDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                                老年人定期评估
                            </a>
                            <ul class="dropdown-menu" aria-labelledby="assessmentDropdown">
                                <li><a class="dropdown-item" href="./评估目的.html">评估目的</a></li>
                                <li><a class="dropdown-item" href="./评估重要性.html">评估重要性</a></li>
                                <li><a class="dropdown-item" href="./评估指标和方法.html">评估指标和方法</a></li>
                                <li><a class="dropdown-item" href="./评估问卷.html">评估问卷</a></li>
                            </ul>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="./评估数据查询页面.html">评估数据查询</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="./通知公告.html">通知公告</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="./常见问题解答.html">常见问题解答</a>
                        <!-- </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">专家老师</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">课程中心</a>
                        </li> -->
                        <li class="nav-item">
                            <a class="nav-link" href="./联系方式.html">联系方式</a>
                        </li>
                        <!-- <li class="nav-item">
                            <a class="nav-link" href="#">证书查询</a>
                        </li> -->
                    </ul>
                </div>
            </div>
        </nav>
    </div>

    <div class="main-content mt-4">
        <div class="container">
            <div class="row">
                <!-- 新闻动态 -->
                <div class="col-lg-8">
                    <div class="card mb-4">
                        <div class="card-header d-flex justify-content-between">
                            <h5 class="mb-0">新闻动态</h5>
                            <a href="#" class="more">更多</a>
                        </div>
                        <div class="card-body">
                            <ul class="list-unstyled">
                                <li class="mb-2">
                                    <a href="#">老年人能力评估MZT039-2013民政部标准</a>
                                    <span class="float-end text-muted">09-02</span>
                                </li>
                                <li class="mb-2">
                                    <a href="#">老年人能力定期评估</a>
                                    <span class="float-end text-muted">09-25</span>
                                </li>
                            </ul>
                        </div>
                    </div>
                    <!-- 通知公告 -->
                <div class="card mb-4">
                    <div class="card-header d-flex justify-content-between">
                        <h5 class="mb-0">通知公告</h5>
                        <a href="#" class="more">更多</a>
                    </div>
                    <div class="card-body">
                        <ul class="list-unstyled">
                            <li class="mb-2">
                                <a href="#">关于2024年第一季度老年人能力评估工作安排的通知</a>
                                <span class="float-end text-muted">03-01</span>
                            </li>
                            <li class="mb-2">
                                <a href="#">2023年度评估结果公示通知</a>
                                <span class="float-end text-muted">02-15</span>
                            </li>
                            <li class="mb-2">
                                <a href="#">关于开展老年人能力评估师培训的通知</a>
                                <span class="float-end text-muted">02-01</span>
                            </li>
                        </ul>
                    </div>
                </div>

                <!-- 政策法规 -->
                <div class="card mb-4">
                    <div class="card-header d-flex justify-content-between">
                        <h5 class="mb-0">政策法规</h5>
                        <a href="#" class="more">更多</a>
                    </div>
                    <div class="card-body">
                        <ul class="list-unstyled">
                            <li class="mb-2">
                                <a href="#">《老年人能力评估标准》(2024版)</a>
                                <span class="float-end text-muted">01-15</span>
                            </li>
                            <li class="mb-2">
                                <a href="#">关于加强老年人能力评估工作的指导意见</a>
                                <span class="float-end text-muted">12-20</span>
                            </li>
                            <li class="mb-2">
                                <a href="#">老年人能力评估管理办法(试行)</a>
                                <span class="float-end text-muted">11-30</span>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
                
                <!-- 登录框 -->
                <div class="col-lg-4">
                    <div class="card">
                        <div class="card-header">
                            <h5 class="mb-0">登录</h5>
                        </div>
                        <div class="card-body">
                            <form>
                                <div class="mb-3">
                                    <label class="form-label">用户名:</label>
                                    <input type="text" class="form-control" id="username">
                                </div>
                                <div class="mb-3">
                                    <label class="form-label">密码:</label>
                                    <input type="password" class="form-control" id="password">
                                </div>
                                <div class="mb-3">
                                    <label class="form-label">验证码:</label>
                                    <div class="d-flex">
                                        <input type="text" class="form-control" id="imageCaptchaCode">
                                        <img src="https://www.jkheb2030.org.cn/Tools/SecurityCode?chk=11111111" valign ="middle"id="imgverify"align-="middle"alt="看不清?点击更换" onclick="this.src =this.src+'1'" width="80" height="34" style="cursor:pointer;">
                                    </div>
                                </div>
                                <div class="d-flex justify-content-between">
                                    <button type="button" class="btn btn-primary" onclick="submitLogin()">登录</button>
                                    <div>
                                        <a href="./注册.html" class="text-decoration-none">免费注册</a>
                                        <a href="#" class="text-decoration-none ms-2">忘记密码?</a>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="containers">
        <div class="box">
            <div class="box-content">
                <h3>联系方式</h3>
                <hr width="100%"  height="2px" color="black">
                <ul>
                    <li>联系电话:1234567890</li>
                    <li>邮箱:1234567890@qq.com</li>
                    <li>地址:河北省石家庄市长安区</li>
                </ul>
            </div>
        </div>
    </div>
    <div class="container-1">
        <div class="box-1">
            <p>石家庄市老年人能力评估中心/地址:河北省石家庄市长安区</p>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        // 设置 axios 默认配置
        axios.defaults.baseURL = 'http://localhost:8080';
        axios.defaults.withCredentials = true;
        

        function submitLogin() {
            // 获取表单数据
            const username = document.getElementById('username').value;
            const password = document.getElementById('password').value;
            const imageCaptchaCode = document.getElementById('imageCaptchaCode').value;

            // 表单验证
            if (!username || !password || !imageCaptchaCode) {
                alert('请填写所有必填项');
                return;
            }

            // 构造请求数据
            const requestData = {
                username: username,
                password: password,
                imageCaptchaCode: imageCaptchaCode
            };

            console.log('Sending login request:', requestData); // 添加调试日志

            // 发送登录请求
            axios.post('/api/login', requestData, {
                headers: {
                    'Content-Type': 'application/json'
                }
            })
            .then(response => {
                console.log('Login response:', response); // 添加调试日志
                if (response.data.code === '1') {
                    alert('登录成功!');
                    window.location.href = './用户中心.html';
                    // 存储用户信息到 localStorage
                    localStorage.setItem('user', JSON.stringify(response.data.data));
                    
                } else {
                    alert(response.data.msg || '登录失败');
                }
            })
            .catch(error => {
                console.error('Login error:', error); // 添加调试日志
                if (error.response && error.response.data) {
                    alert(error.response.data.msg || '登录失败,请稍后重试');
                } else {
                    alert('登录失败,请检查网络连接');
                }
            });
        }

        // 添加按钮点击事件监听器
        // document.addEventListener('DOMContentLoaded', function() {
        //     const loginButton = document.querySelector('button[onclick="submitLogin()"]');
        //     if (loginButton) {
        //         loginButton.addEventListener('click', function(e) {
        //             e.preventDefault(); // 阻止表单默认提交
        //             submitLogin();
        //         });
        //     }
        // });
    </script>
</body>
</html>

注册页面

<!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 href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        body {
            background-color: #f5f5f5;
            font-family: "Microsoft YaHei", sans-serif;
        }

        .header {
            background-color: #fff;
            padding: 20px 0;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }

        .logo img {
            max-height: 60px;
        }

        .main-content {
            padding: 40px 0;
        }

        .card {
            border: none;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
            margin-bottom: 20px;
        }

        .card-header {
            background-color: #f8f9fa;
            border-bottom: 2px solid #007bff;
            padding: 15px;
        }

        .card-header h5 {
            color: #007bff;
            font-weight: bold;
        }

        .form-control {
            border: 1px solid #ddd;
            padding: 10px;
            margin-bottom: 15px;
        }

        .form-control:focus {
            border-color: #007bff;
            box-shadow: 0 0 0 0.2rem rgba(0,123,255,0.25);
        }

        .btn-primary {
            padding: 8px 25px;
            background-color: #007bff;
            border: none;
        }

        .btn-primary:hover {
            background-color: #0056b3;
        }

        .verification-code {
            display: flex;
            gap: 10px;
            align-items: center;
        }

        .verification-code img {
            height: 38px;
            cursor: pointer;
        }

        .verification-code .btn {
            white-space: nowrap;
        }

        @media (max-width: 768px) {
            .header {
                padding: 10px 0;
            }
        }
        /* 搜索框样式 */
        .search-wrap {
            padding: 10px 0;
        }

        .search-box {
            display: flex;
            margin-bottom: 10px;
        }

        .search-box input {
            flex: 1;
            padding: 8px 15px;
            border: 2px solid #007bff;
            border-right: none;
            border-radius: 4px 0 0 4px;
            outline: none;
        }

        .search-box button {
            padding: 8px 20px;
            background: #007bff;
            color: white;
            border: none;
            border-radius: 0 4px 4px 0;
            cursor: pointer;
        }

        .hot-search {
            font-size: 14px;
            color: #666;
        }

        /* 导航栏样式 */
        .navbar-style {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .navbar {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .nav-link {
            color: white !important;
            padding: 15px 20px !important;
            font-size: 16px;
            transition: background-color 0.3s;
        }

        .navbar-style .nav-link:hover,
        .navbar-style .nav-link.active {
            background-color: #0056b3;
        }
        /* 导航栏样式 */
        .navbar-style {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .navbar {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .nav-link {
            color: white !important;
            padding: 15px 20px !important;
            font-size: 16px;
            transition: background-color 0.3s;
        }

        .navbar-style .nav-link:hover,
        .navbar-style .nav-link.active {
            background-color: #0056b3;
        }

    </style>
</head>
<body>
    <div class="header">
        <div class="container">
            <div class="row">
                <div class="col-lg-12">
                    <!-- <a href="#" class="logo">
                        <img src="#" alt="logo">
                    </a> -->
                </div>
            </div>
        </div>
    </div>
    <div class="header">
        <div class="containter">
            <div class="row">
                <div class="col-lg-8 col-md-6">
                    <a href="#" class="logo">
                        <img src="#" alt="">
                    </a>
                </div>
                <div class="col-lg-4 col-md-6">
                    <div class="search-wrap">
                        <form action="/Serach" method="get" class="search-box" target="_blank">
                            <input type="text" name="keys" autocomplete="off" value>
                            <button type="submit">搜索</button>
                        </form>
                        <dl class="hot-search">
                            <dt>
                                <span>热门搜索:</span>
                            </dt>
                        </dl>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="navbar-style">
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <div class="container">
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                        <li class="nav-item">
                            <a class="nav-link active" href="./老年人评估系统.html">首页</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">老年人定期评估</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">评估数据查询</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">通知公告</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">政策法规</a>
                        <!-- </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">专家老师</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="#">课程中心</a>
                        </li> -->
                        <li class="nav-item">
                            <a class="nav-link" href="#">联系方式</a>
                        </li>
                        <!-- <li class="nav-item">
                            <a class="nav-link" href="#">证书查询</a>
                        </li> -->
                    </ul>
                </div>
            </div>
        </nav>
    </div>
    <div class="main-content">
        <div class="container">
            <div class="row justify-content-center">
                <div class="col-lg-6">
                    <div class="card">
                        <div class="card-header">
                            <h5 class="mb-0">用户注册</h5>
                        </div>
                        <div class="card-body">
                            <form id="registerForm">
                                <div class="mb-3">
                                    <label class="form-label">用户名:</label>
                                    <input type="text" class="form-control" id="username" required>
                                </div>

                                <div class="mb-3">
                                    <label class="form-label">图片验证码:</label>
                                    <div class="verification-code">
                                        <input type="text" class="form-control" id="imageCaptchaCode" required>
                                        <img src="https://www.jkheb2030.org.cn/Tools/SecurityCode?chk=11111111" valign ="middle"id="imgverify"align-="middle"alt="看不清?点击更换" onclick="this.src =this.src+'1'" width="80" height="34" style="cursor:pointer;">
                                    </div>
                                </div>

                                <div class="mb-3">
                                    <label class="form-label">设置密码:</label>
                                    <input type="password" class="form-control" id="password" required>
                                </div>

                                <div class="mb-3">
                                    <label class="form-label">确认密码:</label>
                                    <input type="password" class="form-control" id="confirmPassword" required>
                                </div>

                                <div class="d-flex justify-content-between align-items-center">
                                    <button type="button" class="btn btn-primary" onclick="submitRegister()">注册</button>
                                    <a href="./老年人评估系统.html" class="text-decoration-none">已有账号?立即登录</a>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script>
        // axios配置
        const instance = axios.create({
            baseURL: 'http://localhost:8080',
            withCredentials: true,
            headers: {
                'Content-Type': 'application/json'
            }
        });

        // 添加请求拦截器
        instance.interceptors.request.use(function (config) {
            // 在发送请求之前做些什么
            config.headers['Access-Control-Allow-Origin'] = 'http://127.0.0.1:5500';
            return config;
        }, function (error) {
            // 对请求错误做些什么
            return Promise.reject(error);
        });

        // 刷新验证码
        function refreshCaptcha() {
            document.getElementById('captchaImage').src = 
                'http://localhost:8080/api/captcha?' + new Date().getTime();
        }

        // 提交注册
        function submitRegister() {
            const username = document.getElementById('username').value;
            const password = document.getElementById('password').value;
            const confirmPassword = document.getElementById('confirmPassword').value;
            const imageCaptchaCode = document.getElementById('imageCaptchaCode').value;

            // 表单验证
            if (!username || !password || !confirmPassword || !imageCaptchaCode) {
                alert('请填写所有必填项');
                return;
            }

            if (password !== confirmPassword) {
                alert('两次输入的密码不一致');
                return;
            }

            // 构造请求数据
            const requestData = {
                username: username,
                password: password,
                imageCaptchaCode: imageCaptchaCode
            };

            // 发送请求
            axios.post('http://localhost:8080/api/register', requestData, {
                headers: {
                    'Content-Type': 'application/json'
                }
            })
            .then(response => {
                if (response.data.code === '1') {
                    alert('注册成功!');
                    window.location.href = './index.html';
                } else {
                    alert(response.data.msg || '注册失败');
                }
            })
            .catch(error => {
                console.error('Error:', error);
                if (error.response && error.response.data) {
                    alert(error.response.data.msg || '注册失败,请稍后重试');
                } else {
                    alert('注册失败,请检查网络连接');
                }
            });
        }
    </script>
</body>
</html>

用户基本信息填写

<!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 href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
        /* 继承老年人评估系统的全局样式 */
        body {
            background-color: #f5f5f5;
            font-family: "Microsoft YaHei", sans-serif;
        }

        .header {
            background-color: #fff;
            padding: 20px 0;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }

        .navbar-style {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .nav-link {
            color: white !important;
            padding: 15px 20px !important;
            font-size: 16px;
            transition: background-color 0.3s;
        }

        .navbar-style .nav-link:hover,
        .navbar-style .nav-link.active {
            background-color: #0056b3;
        }
        /* 搜索框样式 */
        .search-wrap {
            padding: 10px 0;
        }

        .search-box {
            display: flex;
            margin-bottom: 10px;
        }

        .search-box input {
            flex: 1;
            padding: 8px 15px;
            border: 2px solid #007bff;
            border-right: none;
            border-radius: 4px 0 0 4px;
            outline: none;
        }

        .search-box button {
            padding: 8px 20px;
            background: #007bff;
            color: white;
            border: none;
            border-radius: 0 4px 4px 0;
            cursor: pointer;
        }

        .hot-search {
            font-size: 14px;
            color: #666;
        }

        /* 导航栏样式 */
        .navbar-style {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .navbar {
            background: #007bff !important;
            padding: 0;
        }

        .navbar-style .nav-link {
            color: white !important;
            padding: 15px 20px !important;
            font-size: 16px;
            transition: background-color 0.3s;
        }

        .navbar-style .nav-link:hover,
        .navbar-style .nav-link.active {
            background-color: #0056b3;
        }

        /* 用户中心特定样式 */
        .user-info-card {
            background: #fff;
            border-radius: 8px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
            padding: 20px;
            margin-top: 20px;
        }

        .form-label {
            font-weight: 500;
        }

        .required::after {
            content: "*";
            color: red;
            margin-left: 4px;
        }

        .btn-save {
            background-color: #007bff;
            color: white;
            padding: 10px 30px;
            border: none;
            border-radius: 4px;
            font-size: 16px;
        }

        .btn-save:hover {
            background-color: #0056b3;
        }
    </style>
</head>
<body>
    <!-- 导航栏 -->
    <div class="navbar-style">
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <div class="container">
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarSupportedContent">
                    <ul class="navbar-nav me-auto mb-2 mb-lg-0">
                        <li class="nav-item">
                            <a class="nav-link" href="./index.html">首页</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link active" href="./用户中心.html">用户中心</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="./评估数据查询页面.html">评估数据查询</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="./通知公告.html">通知公告</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link" href="./联系方式.html">联系方式</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </div>

    <!-- 主要内容 -->
    <div class="container">
        <div class="user-info-card">
            <h3 class="mb-4">基本信息</h3>
            <form id="userInfoForm">
                <div class="row">
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">姓名</label>
                        <input type="text" class="form-control" id="name" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">性别</label>
                        <select class="form-select" id="gender" required>
                            <option value="">请选择</option>
                            <option value="male">男</option>
                            <option value="female">女</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">出生日期</label>
                        <input type="date" class="form-control" id="birthDate" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">身份证号</label>
                        <input type="text" class="form-control" id="idCard" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">社保卡号</label>
                        <input type="text" class="form-control" id="socialSecurityCard" required>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">民族</label>
                        <select class="form-select" id="ethnicity" required>
                            <option value="">请选择</option>
                            <option value="汉族">汉族</option>
                            <option value="other">其他</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">文化程度</label>
                        <select class="form-select" id="education" required>
                            <option value="">请选择</option>
                            <option value="小学">小学</option>
                            <option value="初中">初中</option>
                            <option value="高中">高中</option>
                            <option value="大专">大专</option>
                            <option value="本科">本科</option>
                            <option value="研究生">研究生</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label">宗教信仰</label>
                        <select class="form-select" id="religion">
                            <option value="">请选择</option>
                            <option value="none">无</option>
                            <option value="buddhism">佛教</option>
                            <option value="christianity">基督教</option>
                            <option value="islam">伊斯兰教</option>
                            <option value="other">其他</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">婚姻状况</label>
                        <select class="form-select" id="maritalStatus" required>
                            <option value="">请选择</option>
                            <option value="married">已婚</option>
                            <option value="single">未婚</option>
                            <option value="divorced">离异</option>
                            <option value="widowed">丧偶</option>
                        </select>
                    </div>
                    <div class="col-md-6 mb-3">
                        <label class="form-label required">居住情况</label>
                        <select class="form-select" id="livingCondition" required>
                            <option value="">请选择</option>
                            <option value="withFamily">与家人同住</option>
                            <option value="alone">独居</option>
                            <option value="nursingHome">养老院</option>
                            <option value="other">其他</option>
                        </select>
                    </div>
                </div>
                <div class="text-center mt-4">
                    <button type="button" class="btn btn-save" onclick="saveUserInfo()">保存信息</button>
                </div>
            </form>
        </div>
    </div>

    <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js"></script>
    <script>
        // 修改 axios 默认配置
        axios.defaults.baseURL = 'http://localhost:8080';
        axios.defaults.withCredentials = true;

        // 页面加载时获取用户信息
        document.addEventListener('DOMContentLoaded', function() {
            

            // 获取用户详细信息
            axios.get('http://localhost:8080/api/user/info/{idCard}', {
                params: {
                    idCard: localStorage.getItem('userIdCard') // 假设登录时存储了身份证号
                }
            })
            .then(response => {
                if (response.data.code === '1' && response.data.data) {
                    // 用户信息存在,填充表单
                    fillForm(response.data.data);
                    // 禁用表单编辑
                    disableForm(true);
                } else {
                    // 用户信息不存在,允许编辑
                    disableForm(false);
                }
            })
            .catch(error => {
                console.error('Get user info error:', error);
                // 发生错误时允许编辑
                disableForm(false);
            });
        });

        function fillForm(userInfo) {
            document.getElementById('name').value = userInfo.name || '';
            document.getElementById('gender').value = userInfo.gender || '';
            document.getElementById('birthDate').value = formatDate(userInfo.birthDate) || '';
            document.getElementById('idCard').value = userInfo.idCard || '';
            document.getElementById('socialSecurityCard').value = userInfo.socialSecurityCard || '';
            document.getElementById('ethnicity').value = userInfo.ethnicity || '';
            document.getElementById('education').value = userInfo.education || '';
            document.getElementById('religion').value = userInfo.religion || '';
            document.getElementById('maritalStatus').value = userInfo.maritalStatus || '';
            document.getElementById('livingCondition').value = userInfo.livingCondition || '';
        }

        function disableForm(disabled) {
            const formElements = document.querySelectorAll('#userInfoForm input, #userInfoForm select');
            formElements.forEach(element => {
                element.disabled = disabled;
            });
            
            // 如果表单被禁用,隐藏保存按钮
            const saveButton = document.querySelector('.btn-save');
            if (saveButton) {
                saveButton.style.display = disabled ? 'none' : 'block';
            }
        }

        function formatDate(dateString) {
            if (!dateString) return '';
            const date = new Date(dateString);
            return date.toISOString().split('T')[0];
        }

        function saveUserInfo() {
            const formData = {
                name: document.getElementById('name').value,
                gender: document.getElementById('gender').value,
                birthDate: document.getElementById('birthDate').value + 'T00:00:00', // 添加时间部分
                idCard: document.getElementById('idCard').value,
                socialSecurityCard: document.getElementById('socialSecurityCard').value,
                ethnicity: document.getElementById('ethnicity').value,
                education: document.getElementById('education').value,
                religion: document.getElementById('religion').value || null,
                maritalStatus: document.getElementById('maritalStatus').value,
                livingCondition: document.getElementById('livingCondition').value
            };

            // 表单验证
            if (!validateForm(formData)) {
                return;
            }

            // 发送保存请求
            axios.post('/api/user/info', formData)  // 直接发送对象,让axios处理序列化
                .then(response => {
                    if (response.data.code === '1') {
                        alert('保存成功!');
                        disableForm(true);
                        location.reload();
                    } else {
                        alert(response.data.msg || '保存失败');
                    }
                })
                .catch(error => {
                    console.error('Save error:', error);
                    alert(error.response?.data?.msg || '保存失败,请稍后重试');
                });
        }

        function validateForm(formData) {
            // 必填字段验证
            const requiredFields = ['name', 'gender', 'birthDate', 'idCard', 'socialSecurityCard', 
                                 'ethnicity', 'education', 'maritalStatus', 'livingCondition'];
            
            for (const field of requiredFields) {
                if (!formData[field]) {
                    alert(`请填写${getFieldName(field)}`);
                    return false;
                }
            }

            // 身份证号验证
            if (!/^\d{17}[\dX]$/.test(formData.idCard)) {
                alert('请输入正确的身份证号');
                return false;
            }

            // 验证日期不能大于当前日期
            const birthDate = new Date(formData.birthDate);
            const today = new Date();
            if (birthDate > today) {
                alert('出生日期不能大于当前日期');
                return false;
            }

            return true;
        }

        function getFieldName(field) {
            const fieldNames = {
                name: '姓名',
                gender: '性别',
                birthDate: '出生日期',
                idCard: '身份证号',
                socialSecurityCard: '社保卡号',
                ethnicity: '民族',
                education: '文化程度',
                maritalStatus: '婚姻状况',
                livingCondition: '居住情况'
            };
            return fieldNames[field] || field;
        }
    </script>
</body>
</html> 
posted @ 2025-02-07 20:40  haoyinuo  阅读(19)  评论(0)    收藏  举报