logo
0
0
Login

待办事项应用部署和使用说明

项目结构

项目分为前端和后端两部分:

  • 前端:基于Vue.js开发,位于todo-kindle目录
  • 后端:基于Node.js + Express + MySQL开发,位于todo-kindle/server目录

部署步骤

1. 数据库配置

  1. 安装MySQL数据库(如果尚未安装)
  2. 创建数据库:
    CREATE DATABASE todo_kindle;
  3. 配置数据库连接信息:
    • 编辑todo-kindle/server/.env文件,修改以下配置:
    DB_HOST=localhost DB_USER=你的数据库用户名 DB_PASSWORD=你的数据库密码 DB_NAME=todo_kindle DB_PORT=3306

2. 后端部署

  1. 进入后端目录:

    cd todo-kindle/server
  2. 安装依赖:

    npm install
  3. 启动后端服务:

    npm run dev

    服务将在http://localhost:3000上运行,并自动初始化数据库表结构。

3. 前端部署

  1. 进入前端目录:

    cd todo-kindle
  2. 安装依赖:

    npm install
  3. 启动开发服务器:

    npm run dev

    前端将在http://localhost:5173上运行。

  4. 生产环境构建(可选):

    npm run build

    构建后的文件将位于dist目录,可以部署到任何静态文件服务器。

使用说明

用户注册和登录

  1. 访问应用首页http://localhost:5173,系统会自动跳转到登录页面。
  2. 如果是新用户,点击"注册新账号"链接,填写邮箱、密码和姓名(可选),然后点击"注册"按钮。
  3. 如果已有账号,直接在登录页面输入邮箱和密码,点击"登录"按钮。

查看和管理待办事项

  1. 登录成功后,系统会显示主页面,包含当前日期时间和今日待办事项列表。
  2. 页面会每分钟自动从服务器获取最新数据,并在页面上显示最后更新时间。

添加待办事项

  1. 在主页面点击"添加待办"按钮。
  2. 在弹出的模态框中填写以下信息:
    • 事项内容:待办事项的标题或描述
    • 日期:选择待办事项的日期
    • 全天事件:勾选此选项可创建全天事件,无需指定具体时间
    • 时间:如果不是全天事件,选择待办事项的具体时间
    • 重复事项:勾选此选项可创建重复事项
      • 重复类型:选择"按周重复"或"按月重复"
      • 按周重复:选择每周重复的星期(可多选)
      • 按月重复:选择每月重复的日期(可多选)
    • 负责人:填写负责该事项的人员姓名
  3. 点击"添加"按钮保存待办事项。

管理待办事项

  1. 在待办事项列表中,每个事项右侧有"完成"和"删除"按钮。
  2. 点击"完成"按钮可将待办事项标记为已完成。
  3. 点击"删除"按钮可删除待办事项。

退出登录

在页面右上角点击"退出"按钮可退出当前账号。

技术栈

前端

  • Vue.js 3
  • Vue Router
  • Axios(HTTP请求)
  • 自定义CSS(黑白灰色调设计)

后端

  • Node.js
  • Express.js
  • MySQL(数据库)
  • JWT(用户认证)
  • bcryptjs(密码加密)

注意事项

  1. 本应用使用JWT进行用户认证,token存储在浏览器的localStorage中。
  2. 前端会每分钟自动从后端获取一次数据,确保显示最新的待办事项。
  3. 如果后端API无法访问,前端会尝试使用本地存储的数据。
  4. 数据库连接信息存储在.env文件中,生产环境部署时请确保该文件的安全性。

常见问题解决

  1. 数据库连接失败:

    • 检查MySQL服务是否正常运行
    • 验证.env文件中的数据库连接信息是否正确
    • 确认数据库用户是否有足够的权限
  2. 前端无法连接后端:

    • 确认后端服务是否正常运行
    • 检查前端src/services/api.js中的baseURL是否正确
    • 检查浏览器控制台是否有CORS相关错误
  3. 注册或登录失败:

    • 检查邮箱格式是否正确
    • 确认密码长度是否符合要求
    • 查看后端日志以获取详细错误信息

About

No description, topics, or website provided.
Language
TypeScript67.7%
Vue15.4%
JavaScript11.6%
CSS2.7%
Others2.6%