You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.2 KiB
7.2 KiB
付款模板元素类型整理文档
概述
本文档整理了付款模板元素设置页面(/settings/payment-template-element-settings)中支持的所有元素类型及其使用规则。
元素类型(type)
付款模板元素支持以下4种类型:
1. 审批流程(approval_flow)
- 类型值:
approval_flow - 显示标签: 审批流程
- 标签颜色:
warning(橙色) - 用途: 关联OA模块的自定义模型,用于审批流程管理
- 必填字段:
model_id: 必须关联一个OA模型ID
- 禁用字段:
field_type: 不需要字段类型options: 不需要选项配置
- 使用场景: 当需要关联事前流程的审批记录时使用
2. 会议纪要(meeting_minutes)
- 类型值:
meeting_minutes - 显示标签: 会议纪要
- 标签颜色:
success(绿色) - 用途: 用于关联会议纪要记录
- 必填字段: 无
- 禁用字段:
model_id: 不能关联模型field_type: 不需要字段类型options: 不需要选项配置
- 使用场景: 当需要关联会议纪要时使用
3. 普通表单元素(form_element)
- 类型值:
form_element - 显示标签: 普通表单元素
- 标签颜色:
info(蓝色) - 用途: 用于创建常规的表单输入字段
- 必填字段:
field_type: 必须选择字段类型(见下方字段类型说明)
- 禁用字段:
model_id: 不能关联模型options: 不需要选项配置
- 使用场景: 当需要创建文本输入、附件上传等常规表单字段时使用
4. 勾选清单(checklist)
- 类型值:
checklist - 显示标签: 勾选清单
- 标签颜色:
primary(主题色) - 用途: 用于创建可多选的勾选清单
- 必填字段:
options: 必须至少配置一个选项(JSON数组格式:[{label, value}])
- 禁用字段:
model_id: 不能关联模型field_type: 不需要字段类型
- 使用场景: 当需要创建可多选的勾选清单时使用
字段类型(field_type)
注意: 字段类型仅当元素类型为 form_element(普通表单元素)时使用。
1. 单行文本(single_line_text)
- 类型值:
single_line_text - 显示标签: 单行文本
- 标签颜色:
primary(主题色) - 用途: 单行文本输入框
2. 多行文本(multi_line_text)
- 类型值:
multi_line_text - 显示标签: 多行文本
- 标签颜色:
success(绿色) - 用途: 多行文本输入框(文本域)
3. 附件(attachment)
- 类型值:
attachment - 显示标签: 附件
- 标签颜色:
warning(橙色) - 用途: 文件上传字段
元素类型与字段的对应关系
| 元素类型 | 是否需要 model_id | 是否需要 field_type | 是否需要 options |
|---|---|---|---|
| approval_flow | ✅ 必填 | ❌ 不需要 | ❌ 不需要 |
| meeting_minutes | ❌ 不能有 | ❌ 不需要 | ❌ 不需要 |
| form_element | ❌ 不能有 | ✅ 必填 | ❌ 不需要 |
| checklist | ❌ 不能有 | ❌ 不需要 | ✅ 必填(至少1个) |
代码位置
前端代码
- 页面组件:
czemc-budget-execution-frontend/src/views/settings/PaymentTemplateElementSettings.vue - 类型标签映射函数:
getElementTypeLabel()(第272-280行) - 类型标签颜色映射函数:
getTypeTagType()(第283-291行) - 字段类型标签映射函数:
getFieldTypeLabel()(第294-301行) - 字段类型标签颜色映射函数:
getFieldTypeTagType()(第304-311行)
后端代码
- 控制器:
backend/Modules/Budget/app/Http/Controllers/Api/PaymentTemplateElementController.php - 模型:
backend/Modules/Budget/app/Models/PaymentTemplateElement.php - 数据库表:
budget_payment_template_elements - 迁移文件:
backend/Modules/Budget/database/migrations/2025_12_15_145312_create_payment_template_elements_table.phpbackend/Modules/Budget/database/migrations/2025_12_17_144831_add_field_type_to_payment_template_elements_table.phpbackend/Modules/Budget/database/migrations/2025_12_22_000001_add_options_to_payment_template_elements_table.php
验证规则
前端验证
前端在 formRules 中定义了以下验证规则:
-
元素类型验证:
type: 必填,必须选择元素类型
-
勾选清单验证:
options: 当类型为checklist时,必须至少添加一个选项,且选项值不能重复
-
普通表单元素验证:
field_type: 当类型为form_element时,必须选择字段类型
-
审批流程验证:
model_id: 当类型为approval_flow时,必须选择关联模型
后端验证
后端在 PaymentTemplateElementController 中定义了以下验证规则:
-
类型验证:
'type' => 'required|in:approval_flow,meeting_minutes,form_element,checklist' -
字段类型验证:
'field_type' => 'nullable|in:single_line_text,multi_line_text,attachment' -
业务规则验证:
- 审批流程必须提供
model_id - 会议纪要不能有
model_id - 普通表单元素必须提供
field_type,且不能有model_id - 勾选清单必须提供
options(至少1个),且不能有model_id和field_type
- 审批流程必须提供
使用示例
创建审批流程元素
{
name: "合同审批流程",
type: "approval_flow",
model_id: 123, // OA模型ID
description: "关联合同审批流程",
sort_order: 1,
is_active: true
}
创建会议纪要元素
{
name: "会议纪要",
type: "meeting_minutes",
description: "关联会议纪要",
sort_order: 2,
is_active: true
}
创建普通表单元素
{
name: "备注说明",
type: "form_element",
field_type: "multi_line_text", // 多行文本
description: "备注说明字段",
sort_order: 3,
is_active: true
}
创建勾选清单元素
{
name: "验收清单",
type: "checklist",
options: [
{ label: "材料齐全", value: "材料齐全" },
{ label: "质量合格", value: "质量合格" },
{ label: "手续完备", value: "手续完备" }
],
description: "验收检查清单",
sort_order: 4,
is_active: true
}
注意事项
-
类型切换: 当切换元素类型时,系统会自动清除不相关的字段(如
model_id、field_type、options) -
选项格式: 勾选清单的
options必须是 JSON 数组格式,每个选项包含label和value字段,且value不能重复 -
字段类型限制: 字段类型(
field_type)仅在元素类型为form_element时有效 -
模型关联: 审批流程类型必须关联一个有效的OA模型(
is_sub = 0的非子表单模型) -
数据存储:
options字段以 JSON 格式存储在数据库中is_active字段在数据库中为布尔类型,前端使用 1/0 进行转换
更新记录
- 2025-01-XX: 初始文档创建,整理所有元素类型定义和使用规则
- 2025-01-XX: 补充
checklist类型到前端表单选择器和筛选器中