Skip to content

Frame 框架组件

Frame 组件允许在表单中嵌入子页面,用户可以通过弹出框选择数据或进行操作。它特别适用于需要在表单中通过弹出框选择图片、文件或其他数据的场景。

当子页面需要关闭时,可以调用父级页面的 fApi.closeModel 方法来关闭弹出框。

规则

js
{
    type:"frame",
    title:"素材",
    field:"fodder",
    value:["/uploads/20131030/30-075657_191.jpg?4"],
    props:{
        type:"image",
        src:"iframe.html",
        maxLength:2,


},
    validate:[
        {required:true, type: 'array', min: 2, message: '请选择2张图片', trigger: 'change'}
    ],
}

value: String | Number | Array 组件的值可以是字符串、数字或数组。

配置

属性说明类型默认值
typeframe显示类型,有input(字符串),file(文件),image(图片)Stringinput
src框架页面的地址String-
helper开启框架页面内助手方法Booleanfalse
disabled禁用组件Booleanfalse
icon打开弹出框的按钮图标String-
srcKeyvalueObject[]时需要定义 srcKeyString-
width弹出框宽度String-
height弹出框高度String-
maxLength最大选择数量Number'-'
okBtnText弹出框确定按钮文字String'确定'
closeBtnText弹出框关闭按钮文字String'关闭'
modalTitle图片预览弹出框标题文字String'预览'
handleIcon操作按钮的图标 ,设置为false将不显示,设置为true为默认的预览图标,类型为file时默认为false,image类型默认为trueString | Boolean-
title弹出框标题String-
modal配置弹出框 propsObject-
okBtn是否显示确认按钮Boolean-
closeBtn是否显示关闭按钮Boolean-
allowRemove是否可删除,设置为false是不显示删除按钮,type等于 image 或者 file 时有效Booleantrue
onChangevalue改变时触发Function-
onOpen打开弹出层回调Function-
onOk点击确定时的回调,返回false将不关闭弹窗Function-
onHandle点击操作按钮事件,默认为图片预览Function-
onBeforeRemove点击删除按钮删除前事件,返回false将不删除Function-
onRemove点击删除按钮事件Function-
onCancel弹出框关闭时触发,返回false将不关闭弹窗Function-

助手方法详解

当开启 helper 选项时,框架页面将自动注入 form_create_helper 全局变量,提供以下便捷操作:

api

  • 说明: 获取表单的 API 对象。

  • 示例:

js
form_create_helper.api.formData()

close

  • 参数:

    • field 组件的 field
  • 说明: 关闭当前 frame 组件的弹出框。

  • 示例:

js
form_create_helper.close(field)

get

  • 参数:

    • field 组件的 field
  • 说明: 获取当前 frame 组件的值。

  • 示例:

js
const value = form_create_helper.get(field)

set

  • 参数:

    • field 组件的 field
    • value 组件的值
  • 说明: 修改当前 frame 组件的值。

  • 示例:

js
form_create_helper.set(field,[1,2,3])

onOk

  • 参数:

    • callback 回调
  • 说明: 在点击确定按钮时触发回调。

  • 示例:

js
form_create_helper.onOk(()=>{
    //todo
})

onClose

  • 参数:

    • callback 回调
  • 说明: 在点击关闭按钮时触发回调。

  • 示例:

js
form_create_helper.onClose(()=>{
    //todo
})

示例

图片选择器

在表单中嵌入一个图片选择器,允许用户选择多张图片,并在表单中展示已选择的图片。

vue
<template>
  <form-create :rule="rule" v-model="formData"></form-create>
</template>


<script setup>
import { ref } from 'vue';
const formData = ref({fodder: []});
const rule = [
  {
    type: 'frame',
    title: '选择图片',
    field: 'fodder',
    value: [],
    props: {
      type: 'image',
      src: 'image-selector.html',
      maxLength: 3,
      handleIcon: true,
      modalTitle: '图片预览',
    },
    validate: [
      { required: true, type: 'array', min: 1, message: '请至少选择一张图片', trigger: 'change' }
    ],
  }
];
</script>

动态数据加载

在某些应用中,数据可能需要从不同的来源动态加载,并在选择过程中进行过滤和处理。Frame 组件可以通过子页面的动态数据加载,实现复杂的数据交互场景。

vue
<template>
  <form-create :rule="rule" v-model="formData"></form-create>
</template>


<script setup>
import { ref } from 'vue';
const formData = ref({fodder: []});
const rule = [
    {
        type: 'frame',
        title: '选择产品',
        field: 'products',
        value: [],
        props: {
            type: 'input',
            src: '/product-selector.html', // 产品选择页面,支持分类筛选和分页加载
            maxLength: 10,
            modalTitle: '产品选择器',
            handleIcon: false,
        },
        validate: [
            { required: true, type: 'array', min: 1, message: '请至少选择一个产品', trigger: 'change' }
        ],
    }
];
</script>

FormCreate 是一个开源项目,基于 MIT 许可证发布,欢迎个人和企业用户免费使用