电子公文传输系统-个人贡献

发布时间 2023-12-01 23:02:11作者: 20211405周睿雅

个人完成的工作

博客内容撰写

1.团队展示

起队名,撰写本人队员风采

2.需求分析

撰写整篇博客

《需求规格说明书》

撰写引言

3.确定分工

修改完善上周提交的需求规格说明书,撰写上次《需求规格说明书》初稿的不足

4.描述设计

制作团队分工图,撰写工具选择

5.项目冲刺(1)

撰写整篇博客

5.项目冲刺(4)

撰写整篇博客

5.项目冲刺(5)

撰写整篇博客

程序代码编写

index.html
{% load static %}
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="csrf-token" content="{{ csrf_token }}">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>公文传输系统</title>
    <link rel="stylesheet" href="{% static 'css/style-syspage.css' %}">
    <link rel="stylesheet" href="{% static 'css/style-newnavi.css' %}">
    <link rel="stylesheet" href="{% static 'css/sidebarContainer.css' %}">
    <link rel="stylesheet" href="{% static 'css/homepage.css' %}">
    <link rel="stylesheet" href="{% static 'css/textmanagerpage.css' %}">
    <link rel="stylesheet" href="{% static 'css/textpage.css' %}">
    <link rel="stylesheet" href="{% static 'css/usermanagerpage.css' %}">
    <script src="https://cdn.jsdelivr.net/npm/vue@3.0.11/dist/vue.global.prod.js"></script>
    <!-- 在<head>标签中引入Quill.js的CSS文件 -->
    <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet">

    <!-- 在<body>标签中引入Quill.js的JavaScript文件 -->
    <script src="https://cdn.quilljs.com/1.3.6/quill.js"></script>
</head>
<body>
    <div>
        <div class="navbar-top">
            <div class="menu-content">
            <div class="menu-icon">&#9776;</div>
            <input type="text" class="search-box" placeholder="搜索...">
            <div class="user-info">
                <span class="help-button">帮助文档</span>
                <span class="user-name">您好 {{ username }}!</span>
                <input type="hidden" id="loggedInUserId" value="{{ user_id }}">
            </div>
        </div>
        </div>
        <div>
            <div class="navbar-left">
                <a href="/upload_avatar_page/">
                    <div class="Avatar">
                        <img src="{{ user_avatar_url }}" alt="User Avatar" class="user-avatar">
                    </div>
                </a>
                <div class="sys">
                    公文传输系统
                </div>
                <div class="nav-links">
                <!-- 在左侧导航栏的每个功能键上添加@click事件处理程序 -->
                <a href="#" class="tab-button" @click="handleTabClick('首页')" data-page="homePage">首页</a>
                <a href="#" class="tab-button" @click="handleTabClick('公文管理')" data-page="documentManagementPage">公文管理</a>
                <a href="#" class="tab-button" @click="handleTabClick('公文审核')" data-page="documentReviewPage">公文审核</a>
                <a href="#" class="tab-button" @click="handleTabClick('公文草拟')" data-page="documentDraftPage">公文草拟</a>
                <a href="#" class="tab-button" @click="handleTabClick('用户管理')" data-page="userManagementPage">用户管理</a>
                <a href="#" class="tab-button" @click="handleTabClick('日志管理')" data-page="logManagementPage">日志管理</a>
                </div>
                <a href="#" class="quit" id="logoutButton">
                    退出系统
                </a>
            </div>
            <div id="sidebarContainer"></div>
        </div>
    </div>

    <script src="{% static 'js/main.js' %}"></script>
    <script>
        window.accessLevel = {{ access_level|default_if_none:0 }};
        const logoutButton = document.getElementById('logoutButton');

        logoutButton.addEventListener('click', (event) => {
            event.preventDefault();

            fetch('/logout/', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json',
                    'X-CSRFToken': getCookie('csrftoken') // 替换为获取CSRF令牌的函数,这是一个示例
                },
                // ...其他请求数据
            })
            .then(response => {
                if (response.redirected) {
                    // 延迟3秒后执行重定向
                    setTimeout(() => {
                        window.location.href = response.url; // 重定向到指定页面
                    }, 3000); // 3000毫秒 = 3秒
                }
            })
            .catch(error => {
                console.error('退出时出错:', error);
            });
        });

        function getCookie(name) {
            const cookieValue = document.cookie.match('(^|;)\\s*' + name + '\\s*=\\s*([^;]+)');
            return cookieValue ? cookieValue.pop() : '';
        }
    </script>
</body>
</html>
adduser.html
<!-- adduser.html -->
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>新增用户</title>
    <link rel="stylesheet" href="{% static 'css/adduserpage.css' %}">
    <!-- 此处包含您的样式表或其他资源 -->
</head>
<body>
    <h1>新增用户</h1>
    <form method="post" action="{% url 'create_user' %}">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">确认</button>
        <a href="{% url 'index' %}">取消</a>
    </form>
    <script src="{% static 'js/verify_up.js' %}"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            document.querySelector('form').addEventListener('submit', function(event) {
                event.preventDefault(); // 阻止表单默认提交行为

                // 提交表单后,等待 3 秒后跳转到 index 页面
                setTimeout(function() {
                    document.querySelector('form').submit(); // 提交表单
                }, 3000); // 等待 3 秒
            });
        });
    </script>
</body>
</html>
change_userinfo.html
{% load static %}
<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改用户信息</title>
    <link rel="stylesheet" href="{% static 'css/change_userinfo.css' %}">
    <!-- 此处包含您的样式表或其他资源 -->
</head>
<body>
    <h1>修改用户信息</h1>
    <form method="post" action="{% url 'change_userinfo' user_profile.id %}">
        {% csrf_token %}
        <label for="id">学号:</label>
        <input type="text" id="id" name="id" value="{{ user_profile.id }}" disabled><br><br>

        <label for="username">用户名:</label>
        <input type="text" id="username" name="username_up" value="{{ user_profile.username_up }}"><br><br>

        <label for="email">邮箱:</label>
        <input type="email" id="email" name="email" value="{{ user_profile.email }}"><br><br>

        <label for="password">密码:</label>
        <input type="password" id="password" name="password_up" value="{{ user_profile.password_up }}"><br><br>

        <!-- 如果还有其他字段需要修改,继续添加 -->

        <button type="submit">提交</button>
        <a href="{% url 'index' %}">取消</a>
    </form>
    <script src="{% static 'js/verify_up.js' %}"></script>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            document.querySelector('form').addEventListener('submit', function(event) {
                event.preventDefault(); // 阻止表单默认提交行为

                // 提交表单后,等待 3 秒后跳转到 index 页面
                setTimeout(function() {
                    document.querySelector('form').submit(); // 提交表单
                }, 3000); // 等待 3 秒
            });
        });
    </script>
</body>
</html>
login.html
{% load static %}
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <link href="{% static 'images/icon.ico' %}" rel="icon" type="icon">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>公文传输系统登录界面</title>
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>
    <section>
        <div class="login">
            <h2>登录界面</h2>
            <div class="innner">
                <!-- 登录 -->
                <div class="container__form container--sign">
                    <form action="{% url 'login' %}" class="form" id="form1" onsubmit="return validateForm_in()" name="signin" method="post">
                    {% csrf_token %}
                    <input type="text" placeholder="学号(8位)或用户名" name="id_in" class="input" />
                    <input type="password" placeholder="密码(6-16位字母、数字或下划线)" name="password_in" class="input" />
                    <input type="submit" value="登录" id="btn">
                    {% if messages %}
                    <ul class="messages">
                        {% for message in messages %}
                            <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
                        {% endfor %}
                    </ul>
                    {% endif %}
                    </form>
                </div>
                <div class="group">
                    <a href="#">忘记密码?</a>
                    <a href="{% url 'register' %}">还没有账号?赶紧注册</a>
                </div>
            </div>
        </div>

    </section>

    <script src="{% static 'js/verify_in.js' %}"></script>
</body>
</html>
manage_permission.html
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>用户权限管理</title>
    <link href="../static/images/icon.ico" rel="icon" type="icon">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="{% static 'css/manage.css' %}">
</head>
<body>
    <h1>用户权限管理</h1>
    <p>用户 ID: {{ user.id }}</p>
    <p>用户名: {{ user.username_up }}</p>
    <p>邮箱: {{ user.email }}</p>
    <p>密码: {{ user.password_up }}</p>

    <form method="post" action="{% url 'manage_permission' user.id %}">
        {% csrf_token %}
        <label for="accessLevel">访问权限:</label>
        <select id="accessLevel" name="access_level">
            <option value="0" {% if user.access_level == 0 %} selected {% endif %}>0</option>
            <option value="1" {% if user.access_level == 1 %} selected {% endif %}>1</option>
            <option value="2" {% if user.access_level == 2 %} selected {% endif %}>2</option>
            <option value="3" {% if user.access_level == 3 %} selected {% endif %}>3</option>
        </select>

        <button type="submit">保存权限</button>
        <a href="{% url 'index' %}">取消</a>

        <!-- 提示用户权限含义 -->
        <p>
            0: 普通用户<br>
            1: 管理员<br>
            2: 不能发送公文的普通用户<br>
            3: 黑名单用户,无法进行任何操作
        </p>
    </form>
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            document.querySelector('form').addEventListener('submit', function(event) {
                event.preventDefault(); // 阻止表单默认提交行为

                // 提交表单后,等待 3 秒后跳转到 index 页面
                setTimeout(function() {
                    document.querySelector('form').submit(); // 提交表单
                }, 3000); // 等待 3 秒
            });
        });
    </script>
</body>
</html>
register.html
{% load static %}
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <link href="{% static 'images/icon.ico' %}" rel="icon" type="icon">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>注册账户</title>
    <link rel="stylesheet" href="{% static 'css/style.css' %}">
</head>
<body>
    <section>
        <div class="login">
            <h2>注册界面</h2>
            <div class="innner">
                 <!-- 注册 -->
                <div class="container__form container--signup">
                   <form action="{% url 'register' %}" class="form" id="form1" onsubmit="return validateForm_up()" name="signup" method="post">
                        {% csrf_token %}
                        <input type="text" placeholder="学号(8位)" name="id" class="input" />
                        <input type="text" placeholder="用户名(6-16位字母、数字或下划线)" name="username_up" class="input" />
                        <input type="email" placeholder="邮箱" name="email" class="input" />
                        <input type="password" placeholder="密码(6-16位字母、数字或下划线)" name="password_up" class="input" />
                        <input type="submit" value="注册" id="btn">
                        {% if messages %}
                        <ul class="messages">
                            {% for message in messages %}
                                <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
                            {% endfor %}
                        </ul>
                        {% endif %}
                    </form>
                </div>
                <div class="group">
                    <a>已经有账户了?点击右边登录</a>
                    <a href="{% url 'login' %}">登录</a>
                </div>
            </div>
        </div>
    </section>

    <script src="{% static 'js/verify_up.js' %}"></script>
</body>
</html>
upload_avatar.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传用户头像</title>
</head>
<body>
    <form id="avatarUploadForm" action="/upload_avatar/" method="post" enctype="multipart/form-data">
        {% csrf_token %}
        <input type="file" name="avatarFile" accept="image/*">
        <input type="submit" value="上传头像">
    </form>
</body>
</html>

其它

制作《需求规格说明书》PDF版

https://pan.baidu.com/s/1mgPEos-gnwcpqicpAvJyUw?pwd=hwkm

查找好用的绘图软件


上传代码到码云Gitee

系统测试

测试登录、注册、公文管理、公文审核、公文草拟、用户管理、日志管理等功能

统筹协调管理

作为组长,合理进行组内分工,及时提醒组员完成任务

代码

小组总共的代码行数

3900行

我贡献的代码行数

330行

相关链接

终版代码包:https://gitee.com/SHIBATORI/document-transmission-system/releases/tag/final_version

文档

小组总共的文档数

12篇

我贡献的文档数

4篇

相关链接

2.需求分析:https://www.cnblogs.com/icdamlkn/p/17796703.html
5.项目冲刺(1):https://www.cnblogs.com/icdamlkn/p/17844488.html
5.项目冲刺(4):https://www.cnblogs.com/icdamlkn/p/17852482.html
5.项目冲刺(5):https://www.cnblogs.com/icdamlkn/p/17853272.html