@composy/expense-vue
@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
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 0.0.2 | 3.5.32 | MIT | |
| 0.0.1 | ^3.5.32 | MIT |