@composy/expense-vue

Vue 3 adapter for @composy/expense-core
Install
npm install @composy/expense-vue
Latest Version:0.0.2
Vue:3
License:MIT
Last Updated:Oct 12, 2026
Links: npm
Maintainer: swimly

@composy/expense-vue

Vue 3 费用报销单组件 - Vue 3 adapter for @composy/expense-core.

功能特性

  • Vue 3 组件 <ExpenseForm />
  • v-model 双向绑定
  • 组合式函数 useExpenseForm()
  • Vue 插件 ExpensePlugin
  • TypeScript 完整类型

安装

npm install @composy/expense-vue

快速开始

<script setup lang="ts">
import type { ExpenseItem } from '@composy/expense-vue'
import { ExpenseForm } from '@composy/expense-vue'
import { ref } from 'vue'

const items = ref<ExpenseItem[]>([])

function handleSubmit(data: { items: ExpenseItem[] }) {
  void data
}
</script>

<template>
  <ExpenseForm v-model="items" type="travel" theme="light" @submit="handleSubmit" />
</template>

Composable

在 Vue setup 中调用 useExpenseForm(),它返回响应式的 instance、items、receipts、summary、budget 与校验状态,以及创建表单、管理明细和票据、提交、销毁等方法。

Plugin

import { createExpensePlugin } from '@composy/expense-vue'

app.use(createExpensePlugin({ name: 'LdExpenseForm' }))

Component Props

Prop Type Default 说明
modelValue ExpenseItem[] [] 费用项列表 (v-model)
type ExpenseType 'travel' 报销单类型
theme ThemeMode 'light' 主题模式
budget BudgetInfo - 预算信息
complianceRules ComplianceRule[] - 合规规则
baseCurrency string 'CNY' 基础币种
currencies string[] ['CNY','USD',...] 可用币种
categories ExpenseCategory[] - 自定义类别
disabled boolean false 禁用状态
readonly boolean false 只读状态
receipts Receipt[] [] 初始票据
maxReceipts number 20 最多可关联的票据数
maxReceiptSize number 10485760 单个票据最大字节数
className string - 额外 CSS class

exchangeRates、exchangeRateProvider、exchangeRateDate、roundingMode 和 strictExchangeRates 会传递到 Core,用于带日期的汇率计算和财务舍入。组件实例还暴露 getSnapshot()、restoreSnapshot(snapshot)、setExchangeRates(rates, asOf?)、receipts、complianceResult 和 error。

Component Events

事件 参数 说明
update:modelValue ExpenseItem[] 费用项变化
change ExpenseItem[] 费用项变化
submit { items, receipts, summary } 提交
validate ComplianceResult 校验结果
error Error 错误
receipt-change Receipt[] 票据变化

构建产物

目录 格式 入口
dist/ UMD dist/index.js, dist/index.min.js
es/ ESM es/index.js
esm/ ESM esm/index.js
lib/ CJS lib/index.cjs

依赖

  • @composy/expense-core — 核心引擎
  • vue ^3.5.32 (peerDependency)

验证命令

pnpm --dir libraries/expense/packages/vue run type-check
pnpm --dir libraries/expense/packages/vue run build

License

MIT

Related Packages

@ldesign/desktop

基于vue2和@vue/composition-api桌面端组件库

1,858
@ldesign/site-component

LDesign 文档公共组件,基于hybrids的webcomponent组件,可用于vue,react等前端框架!

1,705
@composy/queue-vue

Vue 3 composables, runtime plugin, and engine plugin for @composy/queue-core

0
@composy/emoji-picker-vue

Vue 3 components for @composy/emoji-picker-core

0
@ldesign/desktop-next

基于vue3的桌面端组件库

3,833

Version History

Version Released Vue License
0.0.2 3.5.32 MIT
0.0.1 ^3.5.32 MIT