# ldesign-approval
**Repository Path**: ldesign-v1/ldesign-approval
## Basic Information
- **Project Name**: ldesign-approval
- **Description**: ?????UI?? - ??????????????
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-03-12
- **Last Updated**: 2026-04-09
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# @ldesign/approval
审批运行时 UI 组件库,提供原生 JavaScript 核心组件与 Vue 包装层,覆盖审批意见、流程状态、时间线、会签、加签、转办、催办、统计和单据摘要等常见工作台场景。
## 包结构
- `@ldesign/approval`
原生 JS / TypeScript 核心库。
- `@ldesign/approval-vue`
Vue 3 包装层,提供组件、插件和 `useApproval` composable。
- `playground`
基于 Vite 的演示站,同时展示原生接入和 Vue 接入。
## 当前能力
- `ApprovalPanel`
组合式审批面板,可拼装单据、状态流、时间线、统计和催办。
- `OpinionPanel`
审批意见输入区,支持多种审批动作。
- `Timeline`
审批记录时间线,支持动作标签与附件展示。
- `StatusFlow`
流程状态图,支持横向 / 纵向布局与当前节点高亮。
- `CountersignPanel`
会签进度、投票意见与参与人状态展示。
- `TransferPanel`
转办 / 委托面板,支持候选人搜索。
- `ExtraSignPanel`
前加签、后加签、并行加签。
- `UrgeButton`
催办次数、最近催办时间与记录概览。
- `Statistics`
审批量、结案率、平均耗时与超时节点。
- `DocumentCard`
单据摘要、字段信息、附件与详情入口。
## 已完成优化
- 统一补上业务文本转义,修复 `innerHTML` 直接拼接导致的 XSS 风险。
- 为 `ApprovalPanel` 增加 `update` 和 `setUrgeInfo`,解决类型里存在但运行时未接线的问题。
- 增强时间线、状态流、会签、转办、加签与单据卡片的真实交互能力。
- 补齐 Vue 包装层组件矩阵,并完善插件注册与 composable 生命周期。
- 将 `playground` 重构为标准 Vite 演示站,构建链路不再依赖旧 launcher。
## 安装
```bash
pnpm add @ldesign/approval
pnpm add @ldesign/approval-vue
```
## 原生 JS 快速开始
```ts
import { createApprovalPanel } from '@ldesign/approval';
const panel = createApprovalPanel({
container: '#approval-root',
actions: ['approve', 'reject', 'transfer', 'urge'],
currentNode: {
id: 'node-2',
name: '财务复核',
status: 'processing',
assignee: { id: 'u-2', name: '沈屿', department: '财务共享' },
},
records: [],
nodes: [],
onSubmit(action, opinion) {
console.log(action, opinion);
},
onUrge() {
console.log('urge');
},
});
panel.update({
records: [
{
id: 'r-1',
nodeId: 'node-1',
nodeName: '提交申请',
action: 'submit',
operator: { id: 'u-1', name: '许望舒' },
opinion: '提交审批',
timestamp: new Date().toISOString(),
},
],
});
```
## Vue 快速开始
```vue
```
## useApproval
```ts
import { useApproval } from '@ldesign/approval-vue';
const { create, update, setTheme, destroy } = useApproval();
create(containerElement, {
actions: ['approve', 'reject'],
currentNode,
records,
nodes,
});
update({ stats, urgeInfo });
setTheme('dark');
destroy();
```
## 构建
```bash
# 打包两个库(@ldesign/builder)
pnpm build
# 构建 playground(Vite)
pnpm build:playground
```
## 演示站
```bash
pnpm --filter @ldesign/approval-playground dev
```
## 后续建议
- 审批常用语模板与快捷批语。
- 流程 SLA 预警和瓶颈分析。
- 更完整的移动端抽屉式交互。
- 渲染钩子与插槽级扩展点。