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.
cz-hjjc-budget/docs/payment-template-element-ty...

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.php
    • backend/Modules/Budget/database/migrations/2025_12_17_144831_add_field_type_to_payment_template_elements_table.php
    • backend/Modules/Budget/database/migrations/2025_12_22_000001_add_options_to_payment_template_elements_table.php

验证规则

前端验证

前端在 formRules 中定义了以下验证规则:

  1. 元素类型验证:

    • type: 必填,必须选择元素类型
  2. 勾选清单验证:

    • options: 当类型为 checklist 时,必须至少添加一个选项,且选项值不能重复
  3. 普通表单元素验证:

    • field_type: 当类型为 form_element 时,必须选择字段类型
  4. 审批流程验证:

    • model_id: 当类型为 approval_flow 时,必须选择关联模型

后端验证

后端在 PaymentTemplateElementController 中定义了以下验证规则:

  1. 类型验证:

    'type' => 'required|in:approval_flow,meeting_minutes,form_element,checklist'
    
  2. 字段类型验证:

    'field_type' => 'nullable|in:single_line_text,multi_line_text,attachment'
    
  3. 业务规则验证:

    • 审批流程必须提供 model_id
    • 会议纪要不能有 model_id
    • 普通表单元素必须提供 field_type,且不能有 model_id
    • 勾选清单必须提供 options至少1个且不能有 model_idfield_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
}

注意事项

  1. 类型切换: 当切换元素类型时,系统会自动清除不相关的字段(如 model_idfield_typeoptions

  2. 选项格式: 勾选清单的 options 必须是 JSON 数组格式,每个选项包含 labelvalue 字段,且 value 不能重复

  3. 字段类型限制: 字段类型(field_type)仅在元素类型为 form_element 时有效

  4. 模型关联: 审批流程类型必须关联一个有效的OA模型is_sub = 0 的非子表单模型)

  5. 数据存储:

    • options 字段以 JSON 格式存储在数据库中
    • is_active 字段在数据库中为布尔类型,前端使用 1/0 进行转换

更新记录

  • 2025-01-XX: 初始文档创建,整理所有元素类型定义和使用规则
  • 2025-01-XX: 补充 checklist 类型到前端表单选择器和筛选器中