@lc-bmp/approval-flow

审批流视图组件库 - 审批流程时间线、审批操作弹窗,支持跨模块复用
1,709
Install
npm install @lc-bmp/approval-flow
Latest Version:0.2.0
Vue:3
License:MIT
Last Updated:Sep 29, 2026
Links: npm
Maintainer: squidwardtentacles

@bmp/approval-flow

审批流视图组件库 — 审批流程时间线、审批操作弹窗,支持跨模块复用。

安装

pnpm add @bmp/approval-flow
# 或
npm install @bmp/approval-flow

前置依赖(peerDependencies)

依赖 版本要求 说明
vue >=3.3.0 Vue 3
vue-i18n >=9.0.0 国际化
element-plus >=2.0.0 UI 组件库
bmp-layout >=0.0.1 内部组件库(BmpDialog / bmp-button 等)
dayjs >=1.10.0 日期格式化

快速接入(3 步)

第 1 步:全局配置 request

在宿主项目的 main.js 中一次性配置:

import { setupApprovalFlow } from '@bmp/approval-flow'
import request from '@/utils/request'

setupApprovalFlow({ request })

⚠️ request 必须是宿主项目封装好的 axios 实例(支持 .get() / .post() 方法)。 若未配置,组件调用 API 时会抛出错误提示。

第 2 步:合并国际化文案

在宿主项目的 i18n 配置中合并本包的 locale:

// src/locales/zh-CN.js
import approvalZhCN from '@bmp/approval-flow/locale/zh-CN'

export default {
  // ...项目原有的文案
  ...approvalZhCN
}

同理处理 en.js 和 zh-TW.js:

import approvalEn from '@bmp/approval-flow/locale/en'
import approvalZhTW from '@bmp/approval-flow/locale/zh-TW'

如果宿主项目已有 approvalList 相关的国际化 key,可跳过此步,但需确保 key 一致。

第 3 步:在页面中使用

方式 A:弹窗模式(推荐)
<template>
  <div>
    <!-- 你的业务内容 -->
    <bmp-button @click="handleViewFlow(row)">查看审批流程</bmp-button>
  </div>

  <!-- 审批流弹窗 -->
  <ApprovalFlowViewerDialog ref="flowDialogRef" @success="onFlowSuccess" />
</template>

<script setup>
import { ref } from 'vue'
import { ApprovalFlowViewerDialog } from '@bmp/approval-flow'

const flowDialogRef = ref()

const handleViewFlow = (row) => {
  // 打开弹窗,传入流程实例 ID
  flowDialogRef.value.open(row.id)

  // 或自定义弹窗标题
  // flowDialogRef.value.open(row.id, '采购单审批流程')
}

const onFlowSuccess = () => {
  // 审批操作成功后的回调(如刷新列表)
  console.log('审批成功')
}
</script>
方式 B:内嵌模式

将审批流时间线直接嵌入页面(不弹窗):

<template>
  <ApprovalFlowViewer
    :instance-id="instanceId"
    @loaded="onLoaded"
    @success="onSuccess"
    @error="onError"
  />
</template>

<script setup>
import { ApprovalFlowViewer } from '@bmp/approval-flow'

const instanceId = 'xxx'

const onLoaded = (data) => { console.log('流程数据加载完成', data) }
const onSuccess = () => { console.log('审批操作成功') }
const onError = (err) => { console.error('加载失败', err) }
</script>

组件 API

ApprovalFlowViewerDialog(弹窗组件)

属性/方法 类型 说明
open(instanceId, title?) 方法 打开弹窗。instanceId 必传;title 可选,默认取国际化 approvalList.detail.title
@success 事件 审批操作(通过/驳回)成功后触发,弹窗自动关闭

ApprovalFlowViewer(视图组件)

属性 类型 默认值 说明
instanceId String/Number 必填 流程实例 ID
autoLoad Boolean true 是否在 instanceId 变化时自动加载数据
事件 参数 说明
@loaded (data) 流程数据加载完成
@success - 审批操作成功
@error (err) 加载或操作失败
暴露方法 说明
refresh() 手动刷新流程数据

ApprovalActionDialog(审批操作弹窗)

属性/方法 类型 说明
open(row, type) 方法 row 需包含 id 和 currentManUrlList;type 为 'approve' 或 'reject'
@success 事件 审批成功,参数为操作类型
@error 事件 审批失败,参数为错误对象

宿主项目需确保的国际化 key

本组件使用了以下 common.* key,需由宿主项目提供:

{
  common: {
    close: '关闭',    // ApprovalFlowViewerDialog 关闭按钮
    cancel: '取消',   // ApprovalActionDialog 取消按钮
    ok: '确定'        // ApprovalActionDialog 确定按钮
  }
}

这些 key 通常在 bmp-layout 或宿主项目的 locales 中已存在,无需额外添加。

构建与发布

# 进入包目录
cd bmp-approval-flow-ui

# 安装依赖
pnpm install

# 构建
pnpm build

# 发布到内部 npm 仓库
npm publish --registry=http://your-internal-registry.com

目录结构

bmp-approval-flow-ui/
├── src/
│   ├── index.js                    # 入口:setupApprovalFlow + 组件导出
│   ├── api/
│   │   ├── requestProxy.js         # request 代理(宿主项目注入)
│   │   ├── processPublic.js        # 公开查询 API
│   │   └── process.js              # 审批操作 API
│   ├── components/
│   │   ├── ApprovalFlowViewer.vue  # 审批流时间线视图
│   │   ├── ApprovalFlowViewerDialog.vue  # 弹窗封装
│   │   └── ApprovalActionDialog.vue      # 审批意见弹窗
│   └── locale/
│       ├── zh-CN.js
│       ├── en.js
│       └── zh-TW.js
├── locale/                         # 构建后供外部导入的 locale
│   ├── zh-CN.js
│   ├── en.js
│   └── zh-TW.js
├── package.json
├── vite.config.js
└── README.md

Related Packages

@composy/approval-vue

Vue 2.7 and Vue 3 wrapper components for @composy/approval-core

0
@stsdti/approvable-vue

Vue 3 components for laravel-approvable: approval trails, step actions, comments...

1,016
zj-plugin-ai-assistant

智能客服 / 智能体客户端 Vue 2 插件库。 > 通过 npm 包(`zj-plugin-intelligent`)...

805
@composy/flowchart-vue

Vue 3 adapter for OA approval flowcharts: components, composables, and plugins.

0

Version History

Version Released License
0.2.0 MIT
0.1.11 MIT
0.1.10 MIT
0.1.8 MIT
0.1.7 MIT