欢迎光临
我们一直在努力

点狮 OA 办公系统入门:核心功能解析与代码实践

1. 引言

随着企业数字化转型的深入,传统线下审批、纸质公文流转、信息孤岛等问题严重拖慢了办公效率。点狮 OA 作为一款面向中小企业和团队的协同办公平台,围绕“流程、表单、权限、数据”四大核心,把日常办公中的审批、公告、会议、任务等场景逐步搬到线上。

本文将从功能模块、技术架构和关键代码实现三个维度,带你了解点狮 OA 的常见能力,并给出可落地的代码示例。

相关链接

  • 🌐 官网:http://www.dianshixinxi.com/
  • 📱 演示站:http://admin.dianshixinxi.com:90/

源码地址

  • 🎨 Gitee:https://gitee.com/shandong-dianshi-information/L-ONE.git
  • 💻 GitCode:https://gitcode.com/Glory_Lion/pointlion-cloud

在这里插入图片描述

2. 点狮 OA 简介

点狮 OA 是一套浏览器/移动端双端可用的协同办公系统,主要解决以下几类问题:

  • 审批流程繁琐、难以追踪;
  • 组织架构与人员权限管理混乱;
  • 公文、公告缺乏统一发布渠道;
  • 任务、日程依赖人工口头传达;
  • 各类业务数据分散,无法形成报表。

它通常由以下层次组成:

#mermaid-svg-frhH6WVTtEzWBXpf{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-frhH6WVTtEzWBXpf .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-frhH6WVTtEzWBXpf .error-icon{fill:#552222;}#mermaid-svg-frhH6WVTtEzWBXpf .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-frhH6WVTtEzWBXpf .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-frhH6WVTtEzWBXpf .marker{fill:#333333;stroke:#333333;}#mermaid-svg-frhH6WVTtEzWBXpf .marker.cross{stroke:#333333;}#mermaid-svg-frhH6WVTtEzWBXpf svg{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-frhH6WVTtEzWBXpf p{margin:0;}#mermaid-svg-frhH6WVTtEzWBXpf .label{font-family:\”trebuchet ms\”,verdana,arial,sans-serif;color:#333;}#mermaid-svg-frhH6WVTtEzWBXpf .cluster-label text{fill:#333;}#mermaid-svg-frhH6WVTtEzWBXpf .cluster-label span{color:#333;}#mermaid-svg-frhH6WVTtEzWBXpf .cluster-label span p{background-color:transparent;}#mermaid-svg-frhH6WVTtEzWBXpf .label text,#mermaid-svg-frhH6WVTtEzWBXpf span{fill:#333;color:#333;}#mermaid-svg-frhH6WVTtEzWBXpf .node rect,#mermaid-svg-frhH6WVTtEzWBXpf .node circle,#mermaid-svg-frhH6WVTtEzWBXpf .node ellipse,#mermaid-svg-frhH6WVTtEzWBXpf .node polygon,#mermaid-svg-frhH6WVTtEzWBXpf .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-frhH6WVTtEzWBXpf .rough-node .label text,#mermaid-svg-frhH6WVTtEzWBXpf .node .label text,#mermaid-svg-frhH6WVTtEzWBXpf .image-shape .label,#mermaid-svg-frhH6WVTtEzWBXpf .icon-shape .label{text-anchor:middle;}#mermaid-svg-frhH6WVTtEzWBXpf .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-frhH6WVTtEzWBXpf .rough-node .label,#mermaid-svg-frhH6WVTtEzWBXpf .node .label,#mermaid-svg-frhH6WVTtEzWBXpf .image-shape .label,#mermaid-svg-frhH6WVTtEzWBXpf .icon-shape .label{text-align:center;}#mermaid-svg-frhH6WVTtEzWBXpf .node.clickable{cursor:pointer;}#mermaid-svg-frhH6WVTtEzWBXpf .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-frhH6WVTtEzWBXpf .arrowheadPath{fill:#333333;}#mermaid-svg-frhH6WVTtEzWBXpf .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-frhH6WVTtEzWBXpf .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-frhH6WVTtEzWBXpf .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-frhH6WVTtEzWBXpf .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-frhH6WVTtEzWBXpf .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-frhH6WVTtEzWBXpf .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-frhH6WVTtEzWBXpf .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-frhH6WVTtEzWBXpf .cluster text{fill:#333;}#mermaid-svg-frhH6WVTtEzWBXpf .cluster span{color:#333;}#mermaid-svg-frhH6WVTtEzWBXpf div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\”trebuchet ms\”,verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-frhH6WVTtEzWBXpf .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-frhH6WVTtEzWBXpf rect.text{fill:none;stroke-width:0;}#mermaid-svg-frhH6WVTtEzWBXpf .icon-shape,#mermaid-svg-frhH6WVTtEzWBXpf .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-frhH6WVTtEzWBXpf .icon-shape p,#mermaid-svg-frhH6WVTtEzWBXpf .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-frhH6WVTtEzWBXpf .icon-shape .label rect,#mermaid-svg-frhH6WVTtEzWBXpf .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-frhH6WVTtEzWBXpf .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-frhH6WVTtEzWBXpf .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-frhH6WVTtEzWBXpf :root{–mermaid-font-family:\”trebuchet ms\”,verdana,arial,sans-serif;}

用户端:PC浏览器 / 移动端 H5 / 小程序

应用层:审批、公文、日程、任务等

平台层:流程引擎、表单引擎、权限中心、消息中心

数据层:关系型数据库 / 缓存 / 文件存储

3. 核心功能模块

3.1 组织与权限管理

点狮 OA 支持树形组织架构维护,包括部门、岗位、职级、角色等维度。权限体系通常采用 RBAC 模型,将“菜单权限、数据权限、按钮权限”分离,便于精细化控制。

常见功能点:

  • 组织架构导入导出;
  • 员工账号与状态管理;
  • 角色授权与数据范围隔离;
  • 登录认证与单点登录(SSO)。

3.2 流程审批

流程审批是 OA 系统最核心的模块,覆盖请假、报销、采购、用章、合同审批等场景。点狮 OA 提供可视化流程设计器,支持:

  • 固定流程与自由流程;
  • 会签、或签、转办、加签、退回;
  • 条件分支与审批表单绑定;
  • 催办、超时提醒与流程跟踪。

3.3 表单设计器

表单设计器允许管理员通过拖拽方式生成审批单、业务表单,无需开发即可上线新流程。设计器输出 JSON Schema,前端渲染器读取 JSON 动态生成表单。

3.4 公文与公告

点狮 OA 提供公文起草、审核、发布、归档的完整链路,并支持公告分类、置顶、已读统计。公文流转与流程引擎复用,保证发布合规可控。

3.5 日程、任务与会议

  • 个人/团队日历;
  • 任务分配、进度跟踪与提醒;
  • 会议室预订与会议纪要沉淀。

3.6 移动办公与消息中心

通过 H5 或小程序提供移动审批、待办提醒。消息中心统一推送站内信、短信、邮件和 WebSocket 通知,让用户及时处理待办事项。

4. 技术架构概览

一个典型的点狮 OA 后端可采用 Spring Boot + MyBatis-Plus + MySQL 组合,前端采用 Vue 3 + Element Plus。其分层结构如下:

dianshi-oa
├── oa-common # 通用工具、常量、异常
├── oa-security # 安全认证、JWT、权限
├── oa-system # 组织、用户、角色、菜单
├── oa-flow # 流程引擎、审批操作
├── oa-form # 动态表单
├── oa-message # 消息通知
└── oa-web # 控制器入口

5. 关键代码示例

5.1 审批流程节点定义

流程引擎中,流程定义可通过 JSON 描述节点与连接关系。下面是一个“申请人 -> 部门经理 -> 财务复核”的简单流程结构:

{
"processKey": "expense_approval",
"name": "费用报销审批",
"nodes": [
{ "id": "start", "type": "start", "name": "发起申请" },
{ "id": "manager", "type": "approval", "name": "部门经理审批", "assigneeType": "role", "assigneeValue": "DEPT_MANAGER" },
{ "id": "finance", "type": "approval", "name": "财务复核", "assigneeType": "role", "assigneeValue": "FINANCE" },
{ "id": "end", "type": "end", "name": "流程结束" }
],
"edges": [
{ "from": "start", "to": "manager" },
{ "from": "manager", "to": "finance" },
{ "from": "finance", "to": "end" }
]
}

5.2 审批服务核心代码

后端启动流程并生成待办任务的示例:

@Service
@RequiredArgsConstructor
public class ProcessInstanceService {

private final ProcessDefinitionService definitionService;
private final TaskService taskService;

@Transactional
public Long startProcess(String processKey, String businessKey, Map<String, Object> variables) {
ProcessDefinition definition = definitionService.getByKey(processKey);
if (definition == null) {
throw new BusinessException("流程定义不存在:" + processKey);
}

ProcessInstance instance = new ProcessInstance();
instance.setProcessKey(processKey);
instance.setName(definition.getName());
instance.setBusinessKey(businessKey);
instance.setStatus(ProcessStatus.RUNNING.getCode());
instance.setVariables(JsonUtils.toJson(variables));
instance.setCreateTime(LocalDateTime.now());
processInstanceMapper.insert(instance);

// 生成第一个待办节点,分配到对应审批人
Node firstNode = definition.getFirstNode();
taskService.createTask(instance.getId(), firstNode, variables);

return instance.getId();
}
}

5.3 待办任务审批

审批通过后流转到下一节点,若为结束节点则完成流程:

@Service
@RequiredArgsConstructor
public class TaskService {

private final ProcessInstanceMapper instanceMapper;
private final NodeResolver nodeResolver;

@Transactional
public void approve(Long taskId, Long operatorId, String comment, ApprovalAction action) {
TaskEntity task = taskMapper.selectById(taskId);
if (task == null || !ApprovalStatus.PENDING.equals(task.getStatus())) {
throw new BusinessException("当前任务不可审批");
}

task.setOperatorId(operatorId);
task.setComment(comment);
task.setAction(action.getCode());
task.setCompleteTime(LocalDateTime.now());
task.setStatus(ApprovalStatus.DONE.getCode());
taskMapper.updateById(task);

ProcessInstance instance = instanceMapper.selectById(task.getInstanceId());
Node nextNode = action == ApprovalAction.APPROVE
? nodeResolver.resolveNext(instance, task.getNodeId())
: nodeResolver.resolveReject(instance, task.getNodeId());

if (nextNode == null) {
instance.setStatus(ProcessStatus.FINISHED.getCode());
instance.setEndTime(LocalDateTime.now());
instanceMapper.updateById(instance);
messageService.notify(instance.getApplicantId(), "您的审批流程已结束");
} else {
createTask(instance.getId(), nextNode, parseVariables(instance.getVariables()));
}
}
}

5.4 动态表单渲染思路

表单设计器输出 JSON Schema,前端动态渲染组件:

<template>
<el-form :model="formData" label-width="100px">
<template v-for="field in formSchema.fields" :key="field.key">
<el-form-item :label="field.label" :required="field.required">
<el-input
v-if="field.type === 'input'"
v-model="formData[field.key]"
:placeholder="field.placeholder"
/>
<el-select
v-else-if="field.type === 'select'"
v-model="formData[field.key]"
:placeholder="field.placeholder">
<el-option
v-for="opt in field.options"
:key="opt.value"
:label="opt.label"
:value="opt.value" />
</el-select>
<el-date-picker
v-else-if="field.type === 'date'"
v-model="formData[field.key]"
type="date" />
</el-form-item>
</template>
</el-form>
</template>

<script setup>
import { reactive } from 'vue'

defineProps({
formSchema: {
type: Object,
required: true
}
})

const formData = reactive({})
</script>

6. 总结

点狮 OA 以“低代码流程 + 动态表单 + 精细权限”为核心,帮助企业快速搭建标准化、留痕可查的协同办公体系。对开发者而言,理解流程引擎的状态流转和动态表单渲染是二次开发的关键。

如果你的团队正在评估 OA 系统,建议优先确认以下能力是否满足需求:

  • 流程设计器是否支持复杂审批场景;
  • 权限体系能否覆盖数据隔离要求;
  • 表单能否通过 JSON Schema 动态扩展;
  • 消息提醒与移动端体验是否顺畅。

后续可以结合实际业务,逐步引入电子签章、数据报表、第三方系统集成等功能,进一步释放 OA 系统的价值。

赞(0)
未经允许不得转载:171主机测评 » 点狮 OA 办公系统入门:核心功能解析与代码实践
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址