2026-05-29-tboss-oa-database.md 22 KB

TBOSS OA — 数据库表字段详细设计

日期: 2026-05-29 后端: .NET Framework 4.8 · SQL Server(推荐)


约定

  • 主键统一使用 VARCHAR(36) 存储 GUID
  • 金额字段使用 DECIMAL(18,2)
  • 所有表含 CreateTime DATETIME NOT NULL DEFAULT GETDATE()UpdateTime DATETIME
  • 状态字段用 VARCHAR(20) 存英文标识,前端映射中文
  • IsDeleted BIT NOT NULL DEFAULT 0 软删除

1. 基础数据表

1.1 SysUser(用户表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
UserName NVARCHAR(50) 登录名
RealName NVARCHAR(50) 真实姓名
PasswordHash VARCHAR(128) 密码哈希
Role VARCHAR(20) employee / approver / finance / admin
DeptId VARCHAR(36) FK 所属部门
Position NVARCHAR(50) 岗位名称
Phone VARCHAR(20) 手机号
Email VARCHAR(100) 邮箱
AvatarUrl VARCHAR(500) 头像URL
IsActive BIT 启用/停用,默认1
CreateTime DATETIME
UpdateTime DATETIME

1.2 SysDepartment(部门表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
DeptName NVARCHAR(100) 部门名称
ParentId VARCHAR(36) 上级部门ID
ManagerId VARCHAR(36) FK→SysUser 部门负责人
SortOrder INT 排序,默认0
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

1.3 SysProject(项目表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ProjectName NVARCHAR(200) 项目名称
ProjectCode VARCHAR(50) 项目编号
DeptId VARCHAR(36) FK→SysDepartment 归属部门
BudgetAmount DECIMAL(18,2) 项目预算总额
StartDate DATE 项目开始日期
EndDate DATE 项目结束日期
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

1.4 SysBudgetSubject(预算科目表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
SubjectName NVARCHAR(100) 科目名称
SubjectCode VARCHAR(50) 科目编码
ParentId VARCHAR(36) 上级科目ID
SortOrder INT 排序
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

1.5 SysCostCenter(成本中心表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
CenterName NVARCHAR(100) 成本中心名称
CenterCode VARCHAR(50) 编码
DeptId VARCHAR(36) FK→SysDepartment 归属部门
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

1.6 SysVehicle(车辆信息表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
LicensePlate VARCHAR(20) 车牌号
VehicleType VARCHAR(20) 轿车/SUV/商务车/面包车
Brand NVARCHAR(50) 品牌型号
Seats INT 座位数
DriverName NVARCHAR(50) 默认司机
Status VARCHAR(20) idle/in_use/maintenance,默认idle
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

1.7 SysCustomer(客户表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
CustomerName NVARCHAR(200) 客户名称
ShortName NVARCHAR(100) 简称
Address NVARCHAR(500) 地址
Longitude DECIMAL(10,6) 经度
Latitude DECIMAL(10,6) 纬度
SalespersonId VARCHAR(36) FK→SysUser 负责业务员
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

1.8 SysCustomerContact(客户联系人表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
CustomerId VARCHAR(36) FK→SysCustomer
ContactName NVARCHAR(50) 姓名
Position NVARCHAR(50) 职务
Phone VARCHAR(20) 电话
Email VARCHAR(100) 邮箱
SortOrder INT 排序
CreateTime DATETIME
UpdateTime DATETIME

2. 业务主表

2.1 Expense(报销单表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ReportNo VARCHAR(30) 报销单号,如 BX-20260529-001
ApplicantId VARCHAR(36) FK→SysUser ✅ 申请人
ApplicantName NVARCHAR(50) 冗余,申请人姓名
DeptId VARCHAR(36) FK→SysDepartment ✅ 申请部门
DeptName NVARCHAR(100) 冗余,部门名称
ExpenseType VARCHAR(20) 差旅费/办公用品/招待费/交通费/通讯费/其他
TotalAmount DECIMAL(18,2) 报销总金额
InvoiceCount INT 发票张数,默认0
CostCenterId VARCHAR(36) FK→SysCostCenter 成本中心
ProjectId VARCHAR(36) FK→SysProject 关联项目
ProjectName NVARCHAR(200) 冗余,项目名称
BudgetSubjectId VARCHAR(36) FK→SysBudgetSubject 预算科目
LoanWriteoffAmount DECIMAL(18,2) 冲销借款金额,默认0
PaymentMethod VARCHAR(20) 银行转账/现金/支票
PaymentStatus VARCHAR(20) unpaid/paid/paying,默认unpaid
AccountId VARCHAR(36) 收款账户ID
AccountName NVARCHAR(50) 收款账户名
VoucherNo VARCHAR(50) 财务凭证号
Remark NVARCHAR(500) 备注说明
Status VARCHAR(20) draft/pending/approved/rejected/withdrawn
CurrentApproverId VARCHAR(36) FK→SysUser 当前审批人
CreateTime DATETIME
UpdateTime DATETIME
IsDeleted BIT 默认0

2.2 ExpenseDetail(报销明细表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ExpenseId VARCHAR(36) FK→Expense ✅ 关联报销单
ExpenseDate DATE 费用发生日期
ExpenseType VARCHAR(20) 费用类别
ExpenseDesc NVARCHAR(200) 费用描述
Amount DECIMAL(18,2) 金额(不含税)
TaxAmount DECIMAL(18,2) 税额,默认0
TotalAmount DECIMAL(18,2) 价税合计
InvoiceNo VARCHAR(50) 发票号码
InvoiceCode VARCHAR(50) 发票代码
InvoiceType VARCHAR(20) 增值税专用发票/普通发票/无发票
IsDeductible BIT 是否抵扣,默认0
TaxRate DECIMAL(5,4) 税率,如 0.09
Remark NVARCHAR(200) 备注
SortOrder INT 排序,默认1
CreateTime DATETIME
UpdateTime DATETIME

2.3 ExpenseAttachment(报销附件表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ExpenseId VARCHAR(36) FK→Expense ✅ 关联报销单
DetailId VARCHAR(36) 关联明细,为空表示整单附件
FileName NVARCHAR(200) 原始文件名
FileUrl VARCHAR(500) 存储URL
FileSize BIGINT 文件大小(字节)
FileType VARCHAR(20) image/pdf/doc
SortOrder INT 排序
CreateTime DATETIME

2.4 ExpenseApplication(报销申请单表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ApplicationNo VARCHAR(30) 申请单号,如 BXSQ-20260529-001
ApplicantId VARCHAR(36) FK→SysUser ✅ 申请人
ApplicantName NVARCHAR(50)
DeptId VARCHAR(36) FK→SysDepartment
DeptName NVARCHAR(100)
ExpenseType VARCHAR(20) 差旅费/办公用品/招待费/交通费/通讯费/其他
EstimatedAmount DECIMAL(18,2) 预估总金额
EstimatedStartDate DATE 预计费用开始日期
EstimatedEndDate DATE 预计费用结束日期
Urgency VARCHAR(10) normal/urgent/critical,默认normal
Purpose NVARCHAR(500) 申请事由
ProjectId VARCHAR(36) FK→SysProject 关联项目
ProjectName NVARCHAR(200) 冗余
BudgetSubjectId VARCHAR(36) FK→SysBudgetSubject 预算科目
Remark NVARCHAR(500) 备注
Status VARCHAR(20) draft/pending/approved/rejected/withdrawn
CurrentApproverId VARCHAR(36) FK→SysUser 当前审批人
CreateTime DATETIME
UpdateTime DATETIME
IsDeleted BIT 默认0

2.5 ExpenseAppDetail(报销申请明细表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ApplicationId VARCHAR(36) FK→ExpenseApplication
ItemName NVARCHAR(200) 费用项目名称
EstimatedAmount DECIMAL(18,2) 预估金额
Remark NVARCHAR(200) 备注
SortOrder INT 排序,默认1
CreateTime DATETIME
UpdateTime DATETIME

2.6 Overtime(加班申请单表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ApplicationNo VARCHAR(30) 申请单号,如 JB-20260529-001
ApplicantId VARCHAR(36) FK→SysUser ✅ 申请人
ApplicantName NVARCHAR(50)
DeptId VARCHAR(36) FK→SysDepartment
DeptName NVARCHAR(100)
Position NVARCHAR(50) 岗位
OtDate DATE 加班日期
StartTime DATETIME 开始时间
EndTime DATETIME 结束时间
OtHours DECIMAL(4,1) 申请加班时长
ActualOtHours DECIMAL(4,1) 实际加班时长(审批后填写)
ClockInTime DATETIME 关联打卡-上班
ClockOutTime DATETIME 关联打卡-下班
MealDeductHours DECIMAL(3,1) 用餐扣除时长,默认0.5
OtType VARCHAR(10) workday/weekend/holiday
CompensationType VARCHAR(10) overtime_pay/comp_leave
Reason NVARCHAR(500) 加班原因
Remark NVARCHAR(500) 备注
Status VARCHAR(20) draft/pending/approved/rejected/withdrawn
CurrentApproverId VARCHAR(36) FK→SysUser 当前审批人
CreateTime DATETIME
UpdateTime DATETIME
IsDeleted BIT 默认0

2.7 Vehicle(用车申请单表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ApplicationNo VARCHAR(30) 申请单号,如 YC-20260529-001
ApplicantId VARCHAR(36) FK→SysUser ✅ 申请人
ApplicantName NVARCHAR(50)
DeptId VARCHAR(36) FK→SysDepartment
DeptName NVARCHAR(100)
VehicleType VARCHAR(20) 轿车/SUV/商务车/面包车
VehicleId VARCHAR(36) FK→SysVehicle 指定车辆(审批后分配)
LicensePlate VARCHAR(20) 车牌号(冗余)
Purpose VARCHAR(20) 客户接待/商务出行/内部公务/其他
StartTime DATETIME 预计开始时间
EndTime DATETIME 预计结束时间
ReturnTime DATETIME 实际还车时间
Origin NVARCHAR(200) 出发地点
Destination NVARCHAR(200) 目的地
PassengerCount INT 乘车人数,默认1
Driver VARCHAR(20) 自驾/配驾
DriverName NVARCHAR(50) 驾驶员姓名
EstimatedMileage DECIMAL(10,2) 预估里程(公里)
ActualMileage DECIMAL(10,2) 实际里程
StartOdometer DECIMAL(10,2) 起始里程表读数
EndOdometer DECIMAL(10,2) 结束里程表读数
EstimatedCost DECIMAL(18,2) 预估费用
ActualCost DECIMAL(18,2) 实际费用
Reason NVARCHAR(500) 用车事由
Status VARCHAR(20) draft/pending/approved/rejected/withdrawn
CurrentApproverId VARCHAR(36) FK→SysUser 当前审批人
CreateTime DATETIME
UpdateTime DATETIME
IsDeleted BIT 默认0

2.8 VehiclePassenger(用车同行人员表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
ApplicationId VARCHAR(36) FK→Vehicle
UserId VARCHAR(36) FK→SysUser 关联系统用户
PassengerName NVARCHAR(50) 姓名(冗余/外部人员)
CreateTime DATETIME

2.9 OutingLog(业务员外出日志表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
VisitNo VARCHAR(30) 拜访编号,如 VST-20260529-001
SalespersonId VARCHAR(36) FK→SysUser ✅ 业务员
SalespersonName NVARCHAR(50)
DeptId VARCHAR(36) FK→SysDepartment
DeptName NVARCHAR(100)
CustomerId VARCHAR(36) FK→SysCustomer 客户
CustomerName NVARCHAR(200)
ContactId VARCHAR(36) FK→SysCustomerContact 联系人
ContactName NVARCHAR(50)
ContactPhone VARCHAR(20)
ContactPosition NVARCHAR(50)
VisitDate DATE 拜访日期
VisitStartTime DATETIME 签到时间
VisitEndTime DATETIME 签退时间
VisitType VARCHAR(20) 商务沟通/产品演示/售后服务/合同签约/催款/其他
VisitPurpose NVARCHAR(500) 拜访目的
VisitLocation NVARCHAR(200) 拜访地点
VisitAddressDetail NVARCHAR(200) 详细地址
Longitude DECIMAL(10,6) 签到时经度
Latitude DECIMAL(10,6) 签到时纬度
CheckInStatus VARCHAR(20) normal/deviation,默认normal
DistanceDeviation INT 定位偏差距离(米),默认0
Participants NVARCHAR(200) 参与人员(我方)
VisitSummary NVARCHAR(2000) 拜访总结
VisitResult VARCHAR(20) 待跟进/已成交/需再次拜访/无意愿
CustomerFeedback NVARCHAR(1000) 客户反馈
CompetitorInfo NVARCHAR(1000) 竞品信息
NextVisitTime DATETIME 下次拜访时间
NextVisitContent NVARCHAR(500) 下次拜访内容
Materials NVARCHAR(500) 携带资料
Status VARCHAR(20) completed/draft
CreateTime DATETIME
UpdateTime DATETIME
IsDeleted BIT 默认0

2.10 OutingLogAttachment(外出日志附件表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
LogId VARCHAR(36) FK→OutingLog
FileName NVARCHAR(200)
FileUrl VARCHAR(500)
FileType VARCHAR(20) sign_in_photo/sign_out_photo/visit_photo/other
SortOrder INT 排序
CreateTime DATETIME

2.11 Announcement(公告表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
Title NVARCHAR(200) 公告标题
Content NVARCHAR(MAX) 公告正文
ContentType VARCHAR(10) text/html,默认text
Type VARCHAR(20) 通知公告/制度文件/活动通知/其他
PublisherId VARCHAR(36) FK→SysUser ✅ 发布人
PublisherName NVARCHAR(50)
PublishTime DATETIME 发布时间
IsTop BIT 是否置顶,默认0
PrivateLevel INT 可见级别:0=全员 1=指定部门 2=指定用户
RequireConfirm BIT 需确认已读,默认0
ExpiryDate DATETIME 过期时间
CreateTime DATETIME
UpdateTime DATETIME
IsDeleted BIT 默认0

2.12 AnnouncementTarget(公告可见范围表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
AnnouncementId VARCHAR(36) FK→Announcement
TargetType VARCHAR(10) dept/user
TargetId VARCHAR(36) 部门ID或用户ID
CreateTime DATETIME

2.13 AnnouncementAttachment(公告附件表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
AnnouncementId VARCHAR(36) FK→Announcement
FileName NVARCHAR(200)
FileUrl VARCHAR(500)
FileSize BIGINT
CreateTime DATETIME

2.14 AnnouncementReadLog(公告已读记录表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
AnnouncementId VARCHAR(36) FK→Announcement
UserId VARCHAR(36) FK→SysUser
ReadTime DATETIME 阅读时间
IsConfirmed BIT 是否确认(需确认时),默认0
ConfirmTime DATETIME 确认时间

3. 审批与工作流表

3.1 ApprovalRecord(审批记录表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
BizId VARCHAR(36) 业务单据ID
BizType VARCHAR(30) expense/expense_application/overtime/vehicle
ApproverId VARCHAR(36) FK→SysUser ✅ 审批人
ApproverName NVARCHAR(50)
ApprovalLevel INT 审批层级(1,2,3...)
Action VARCHAR(20) pending/approve/reject/withdraw
Opinion NVARCHAR(500) 审批意见
ApprovalTime DATETIME 审批时间
CreateTime DATETIME

3.2 ApprovalChain(审批链配置表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
BizType VARCHAR(30) 业务类型
DeptId VARCHAR(36) 适用部门(空=全局)
LevelNo INT 审批层级
ApproverId VARCHAR(36) FK→SysUser 指定审批人
ApproverRole VARCHAR(20) 按角色:dept_manager/finance/admin
IsActive BIT 默认1
CreateTime DATETIME
UpdateTime DATETIME

4. 消息通知表

4.1 Message(消息通知表)

字段 类型 必填 说明
Id VARCHAR(36) PK GUID
UserId VARCHAR(36) FK→SysUser ✅ 接收人
Title NVARCHAR(200) 消息标题
Content NVARCHAR(500) 消息摘要
MsgType VARCHAR(20) approval_notice/approval_result/announcement/system
BizType VARCHAR(30) 关联业务类型
BizId VARCHAR(36) 关联业务ID
IsRead BIT 已读,默认0
ReadTime DATETIME 阅读时间
CreateTime DATETIME

5. 枚举值汇总

5.1 业务状态

中文 适用表
draft 草稿 所有申请表
pending 待审批 所有申请表
approved 已通过 所有申请表
rejected 已拒绝 所有申请表
withdrawn 已撤回 所有申请表
completed 已完成 OutingLog

5.2 报销类型

差旅费 / 办公用品 / 招待费 / 交通费 / 通讯费 / 其他

5.3 加班类型

workday(工作日加班)/ weekend(休息日加班)/ holiday(节假日加班)

5.4 补偿方式

overtime_pay(加班费)/ comp_leave(调休)

5.5 用车目的

客户接待 / 商务出行 / 内部公务 / 其他

5.6 发票类型

增值税专用发票 / 增值税普通发票 / 无发票

5.7 付款状态

unpaid(未付款)/ paying(付款中)/ paid(已付款)

5.8 紧急程度

normal(普通)/ urgent(紧急)/ critical(特急)

5.9 拜访类型

商务沟通 / 产品演示 / 售后服务 / 合同签约 / 催款 / 其他

5.10 拜访结果

待跟进 / 已成交 / 需再次拜访 / 无意愿

5.11 公告类型

通知公告 / 制度文件 / 活动通知 / 其他

5.12 消息类型

approval_notice(审批通知)/ approval_result(审批结果)/ announcement(公告提醒)/ system(系统消息)

5.13 用户角色

employee / approver / finance / admin

5.14 车辆类型

轿车 / SUV / 商务车 / 面包车

5.15 车辆状态

idle(空闲)/ in_use(使用中)/ maintenance(维修中)


6. 表关系图(关键外键)

SysUser ──┬── Expense (ApplicantId, CurrentApproverId)
          ├── ExpenseApplication
          ├── Overtime
          ├── Vehicle
          ├── OutingLog (SalespersonId)
          ├── Announcement (PublisherId)
          ├── ApprovalRecord (ApproverId)
          ├── Message (UserId)
          └── SysDepartment (ManagerId)

SysDepartment ──┬── SysUser (DeptId)
                ├── Expense (DeptId)
                ├── ExpenseApplication (DeptId)
                ├── Overtime (DeptId)
                ├── Vehicle (DeptId)
                ├── OutingLog (DeptId)
                └── ApprovalChain (DeptId)

SysProject ──┬── Expense (ProjectId)
             └── ExpenseApplication (ProjectId)

SysCustomer ──┬── OutingLog (CustomerId)
              └── SysCustomerContact (CustomerId)

SysVehicle ──── Vehicle (VehicleId)

ApprovalRecord ──┬── Expense (BizId, BizType='expense')
                 ├── ExpenseApplication (BizId, BizType='expense_application')
                 ├── Overtime (BizId, BizType='overtime')
                 └── Vehicle (BizId, BizType='vehicle')

7. 索引建议

索引字段 类型 说明
Expense Status, ApplicantId, DeptId, CreateTime DESC 复合 列表查询主路径
Expense ReportNo 唯一 单号唯一约束
ExpenseDetail ExpenseId 普通 关联查询
ExpenseApplication Status, ApplicantId, DeptId 复合
Overtime Status, ApplicantId, OtDate DESC 复合
Vehicle Status, ApplicantId, DeptId 复合
OutingLog SalespersonId, VisitDate DESC 复合
Announcement IsTop DESC, PublishTime DESC 复合 列表排序
AnnouncementReadLog AnnouncementId, UserId 唯一 防重复记录
ApprovalRecord BizId, BizType 复合 关联查询
Message UserId, IsRead, CreateTime DESC 复合 消息列表