更新记录

1.1.2(2024-12-20) 下载此版本

本次调整: 1、去掉submit事件,但对外暴露了submit函数,可在外部调用 2、去除了组件外部样式,在页面中使用时,自行调整 3、初始化表单数据中,增加属性 disabled: true, // 禁止,可选 false

1.1.1(2024-11-10) 下载此版本

无特殊

1.1.0(2024-09-26) 下载此版本

1、取消array类型表单,不再支持弹窗表单,新增table类型表单,通过提供回调函数、增加按钮的方式实现对列表数据的增加与删除,详见示例。 2、增加autPosition属性,默认为false,当设为true时,在宽屏时表单标题居于左侧并左对齐,在窄屏时表单标题居于顶部。

查看更多

平台兼容性

Vue2 Vue3
×
App 快应用 微信小程序 支付宝小程序 百度小程序 字节小程序 QQ小程序
HBuilderX 3.1.0 × × × × × ×
钉钉小程序 快手小程序 飞书小程序 京东小程序 鸿蒙元服务
× × × × ×
H5-Safari Android Browser 微信浏览器(Android) QQ浏览器(Android) Chrome IE Edge Firefox PC-Safari
× × × × × × × × ×

piao-form

本次调整: 1、去掉submit事件,但对外暴露了submit函数,可在外部调用 2、去除了组件外部样式,在页面中使用时,自行调整 3、初始化表单数据中,增加属性 disabled: true, // 禁止,可选 false

完整示例

<template>
    <uni-title
        type="h2"
        title="案件信息录入"
        align="center"
        style="margin-top: 40px; margin-bottom: 20px"
    ></uni-title>
    <piao-form
        ref="form"
        :formData="formData"
        :autPosition="true"
    ></piao-form>
</template>

<script setup>
import { post } from '@/common/request.js';

import { ref } from 'vue';
const form = ref();

/**组件提供两个方法来实现给组件指定表单动态赋值
 * 1、setItemValue(key,value):给主页面表单赋值,key为表单对应的对象属性,例如 "title"
 * 2、setPopupItemValue(key,value):给弹窗表单赋值,key为对应range(数组)中对应元素的序号,例如 1 
 */
function test(e) {
    form.value.setItemValue('authorizationType', 1);//调用setItemValue方法给指定表单(如:authorizationType)赋值为 1。
}

const formData = ref({
    title: {
        type: 'text',
        rules: [
            {
                required: true,
                errorMessage: '案件名称不能为空'
            },
            {
                minLength: 5,
                errorMessage: '案件名称不能少于5个字符'
            }
        ],
        placeholder: '建议命名规则:原告vs被告', 
        label: '案件名称', 
        isShow: true,
        btn: {
            type: 'primary', // 取值范围:warn、default、primary
            text: '搜索文章',
            callback: test,//注意,这里调用函数名称,不是 test()
            option: 'right' //可选:right、bottom,默认为 bottom
        }
    },
    caseReason: {
        type: 'piao-combox',
        rules: [
            {
                required: true,
                errorMessage: '案由不能为空'
            }
        ],
        placeholder: '请输入或选择案由',  
        label: '案由',  
        range: [
            { value: 0, text: '原告' },
            { value: 1, text: '被告' },
            { value: 2, text: '第三人' }
        ],
        callback: (e) => {
            form.value.setItemValue('authorizationType', 1); //让authorizationType项的值等于1,这里的key是对象的属性名称,与弹窗中调用setPopupItemValue(key,value)中的key有所不同
        },
        btn: {
            type: 'warn', // 取值范围:warn、default、primary
            text: '新增案由',
            callback: (e) => {
                console.log('表单组件按钮被单击', e);
                uni.navigateTo({
                    url: '/pages/Login/Login'
                });
            }
        }
    },
    consignorType: {
        type: 'checkbox',
        label: '委托人类型', 
        value: 0, // 给定初始值
        range: [
            { value: 0, text: '原告' },
            { value: 1, text: '被告' },
            { value: 2, text: '第三人' }
        ],
        multiple: false,
        rules: [
            {
                required: true,
                errorMessage: '请选择委托人类型'
            }
        ],
        callback: (e) => {
            console.log('我是表单回调函数,返回值:', e);
        }
    },
    authorizationType: {
        type: 'checkbox',
        label: '授权类型',
        value: 0, // 给定初始值
        disabled: true, // 禁止
        range: [
            { value: 0, text: '特别授权' },
            { value: 1, text: '一般授权' }
        ],
        multiple: false,
        rules: [
            {
                required: true,
                errorMessage: '请选择授权类型'
            }
        ],
        callback: (e) => {
            console.log('我是表单回调函数,返回值:', e);
        }
    },
    content: {
        type: 'textarea',
        placeholder: '请简要描述案情', 
        label: '案情简述',
        rules: [
            {
                required: true,
                errorMessage: '请简要描述案情'
            }
        ]
    },
    party: {
        type: 'table',
        label: '案件当事人',
        range: {
            name: {
                label: '名称',
                align: 'left',
                width: '150'
            },
            partyType: {
                label: '类型'
            }
        },
        value: [
            {
                name: '张三',
                partyType: {
                    text: '原告', //仅显示text字段
                    value: 0
                },
                id: '5454546464' // 未在range中定义,不会显示在表格中,但会在删除的回调函数中返回
            },
            {
                name: '贵州省人民医院',
                partyType: {
                    text: '被告',
                    value: 1
                },
                id: '5565656565656'
            }
        ],
        btn: {
            type: 'primary', // 取值范围:warn、default、primary
            text: '添加当事人',
            callback: (e) => {
                uni.navigateTo({
                    url: '/pages/case-operate/case-add-reason'
                });
            }
        },
        callback: (e) => {
            //点击删除按钮时的回调函数
            console.log(e);
        }
    },
    chargType: {
        type: 'textarea',
        placeholder: '请写明收费方式及内容', 
        label: '收费条款', 
        rules: [
            {
                required: true,
                errorMessage: '请填写收费条款'
            }
        ]
    },
    undertake: {
        type: 'checkbox',
        label: '承办律师',
        value: [], //当multiple为true时,value的值为数组类型
        range: [
            {
                text: '张律师',
                value: '10000000'
            },
            {
                text: '李律师',
                value: '20000000'
            },
            {
                text: '胡律师',
                value: '30000000'
            }
        ],
        multiple: true
    },
    grade: {
        type: 'picker',
        label: '年级',
        range: [
            //必填
            {
                text: '一年级',
                value: '1-0',
                children: [
                    {
                        text: '1.1班',
                        value: '1-1'
                    },
                    {
                        text: '1.2班',
                        value: '1-2'
                    }
                ]
            },
            {
                text: '二年级',
                value: '2-0'
            },
            {
                text: '三年级',
                value: '3-0'
            }
        ],
        placeholder: '请选择年级'
    },
    avatar: {
        type: 'file',
        label: '图片'
    }
});

async function sub() {
    let res=await form.value.submit()
    console.log(res);
}
</script>

返回值

异步调用submit函数直接返回表单数据

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问