haomingming b35ec1aef7 logo
2026-06-26 17:42:28 +08:00
1
2026-06-26 15:56:49 +08:00
34
2026-06-26 17:34:15 +08:00
2026-06-26 16:34:38 +08:00
12
2026-06-26 16:36:03 +08:00
34
2026-06-26 17:34:15 +08:00
2026-06-26 16:34:38 +08:00
2026-06-26 16:34:38 +08:00
1
2026-06-26 15:56:49 +08:00
1
2026-06-26 15:56:49 +08:00
1
2026-06-26 15:56:49 +08:00
1
2026-06-26 15:56:49 +08:00
1
2026-06-26 15:56:49 +08:00

合同流转审批系统

这是一个基于 Next.js 的合同流转审批系统。

如何启动服务

开发环境

  1. 安装依赖:

    npm install
    
  2. 启动开发服务:

    npm run dev
    

    服务将在 http://localhost:3000 上运行。

生产环境

  1. 安装依赖:

    npm install
    
  2. 构建项目:

    npm run build
    
  3. 启动生产服务:

    npm run start
    

    服务将在 http://localhost:3000 上运行。

部署到服务器

  1. 环境要求:

    • Node.js >= 18.x
    • 一个用于运行 Node.js 应用的进程管理器,如 PM2。
  2. 部署步骤:

    1. 将项目代码上传到服务器。
    2. 在服务器上进入项目根目录。
    3. 安装依赖:
      npm install
      
    4. 构建项目:
      npm run build
      
    5. 使用 PM2 启动服务:
      pm2 start npm --name "contract-approval-system" -- run start
      
  3. 数据持久化:

    • 本应用使用 SQLite 数据库,数据库文件位于 data/database.sqlite。在部署时,请确保此文件及其所在目录具有正确的读写权限,并且在更新部署时不会被意外覆盖。
    • 上传的文件存储在 public/uploads 目录,也需要注意持久化和备份。

数据库架构

数据库采用 SQLite包含以下数据表

departments - 部门表

存储公司部门信息。

字段名 类型 描述
id INTEGER 主键, 自增
name TEXT 部门名称, 唯一
created_at DATETIME 创建时间

users - 用户表

存储系统用户信息。

字段名 类型 描述
id INTEGER 主键, 自增
username TEXT 用户名, 唯一
password TEXT 密码 (bcrypt 加密)
real_name TEXT 真实姓名
role TEXT 角色 (e.g., employee, supervisor, finance, secretary, admin)
department_id INTEGER 所属部门ID, 外键关联 departments(id)
status INTEGER 状态 (1: 正常, 0: 禁用)
created_at DATETIME 创建时间

partners - 合作伙伴表

存储合作伙伴公司信息。

字段名 类型 描述
id INTEGER 主键, 自增
name TEXT 公司全称
short_name TEXT 公司简称
english_name TEXT 英文名称
website TEXT 公司官网
logo TEXT Logo 文件路径
address TEXT 公司地址
description TEXT 公司简介
is_deleted INTEGER 是否删除 (0: 未删除, 1: 已删除)
created_at DATETIME 创建时间

contracts - 合同表

存储合同主体信息和审批流转状态。

字段名 类型 描述
id INTEGER 主键, 自增
project_name TEXT 项目名称
partner_id INTEGER 合作伙伴ID, 外键关联 partners(id)
partner_name TEXT 合作伙伴名称
contract_content TEXT 合同内容简介
contract_years INTEGER 合同年限
contract_amount REAL 合同金额
estimated_profit REAL 预估利润
payment_type TEXT 收付款类型 (receive/pay)
sign_date TEXT 签订日期
status TEXT 审批状态 (e.g., pending_supervisor, pending_finance, approved)
creator_id INTEGER 创建人ID, 外键关联 users(id)
creator_name TEXT 创建人姓名
department_id INTEGER 所属部门ID, 外键关联 departments(id)
department_name TEXT 所属部门名称
project_leader TEXT 项目负责人
supervisor_opinion TEXT 主管审批意见
supervisor_approved INTEGER 主管审批结果 (1: 通过, 0: 驳回)
supervisor_id INTEGER 主管ID
supervisor_name TEXT 主管姓名
supervisor_time DATETIME 主管审批时间
finance_opinion TEXT 财务审批意见
finance_approved INTEGER 财务审批结果
finance_id INTEGER 财务ID
finance_name TEXT 财务姓名
finance_time DATETIME 财务审批时间
secretary_opinion TEXT 秘书审批意见
secretary_approved INTEGER 秘书审批结果
secretary_id INTEGER 秘书ID
secretary_name TEXT 秘书姓名
secretary_time DATETIME 秘书审批时间
reject_reason TEXT 驳回原因
created_at DATETIME 创建时间
updated_at DATETIME 更新时间

contract_attachments - 合同附件表

存储合同的附件文件信息。

字段名 类型 描述
id INTEGER 主键, 自增
contract_id INTEGER 合同ID, 外键关联 contracts(id)
file_name TEXT 文件名
file_path TEXT 文件存储路径
file_size INTEGER 文件大小 (bytes)
created_at DATETIME 创建时间

system_config - 系统配置表

存储系统级别的配置项。

字段名 类型 描述
id INTEGER 主键, 自增
config_key TEXT 配置键, 唯一
config_value TEXT 配置值
updated_at DATETIME 更新时间

role_permissions - 角色权限表

定义不同角色的菜单可见性。

字段名 类型 描述
id INTEGER 主键, 自增
role TEXT 角色名
menu_key TEXT 菜单标识
visible INTEGER 是否可见 (1: 可见, 0: 不可见)
Description
合同流转审批系统
Readme 8.3 MiB
Languages
JavaScript 86.9%
CSS 11.8%
Shell 1%
Dockerfile 0.3%