更新记录

1.0.2(2024-05-22) 下载此版本

控制整体表单是否禁用

1.0.1(2024-05-21) 下载此版本

重新上传封面

1.0.0(2024-05-21) 下载此版本

初始化组件

查看更多

平台兼容性

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

tf-general-forms

  1. 组件作用
    • 根据json数据快速生成表单
    • 支持的数据格式有:integer:整数,decimal:小数,money:金额,input:单行文本输入,basicData:基础资料, date:日期,dateTime:日期时间,radio:单选,checkbox:多选,image:图片,textarea:多行文本,money:金额
    • 由于此组件依赖tf-picker-date-time,tf-remark-not-form,tf-img-upload,tf-thousand-input,tf-thousand-money-input,使用此组件时首先导入以上组件以支持对应类型的数据
  2. 组件引用例子
<template>
  <view class="content">
    <TfGeneralForms ref="tfGeneralForms" v-model="formData"></TfGeneralForms>
    <view class="subform" @click="sub">提交表单</view>
  </view>
</template>

<script>
import TfGeneralForms from "@/uni_modules/tf-general-forms/components/tf-general-forms/tf-general-forms.vue";
export default {
  components: {
    TfGeneralForms,
  },
  data() {
    return {
      formData: [
        {
          label: "年龄",//表单label,必要属性
          fieldType: "radio",//字段类型,必要属性
          disabled:false,//是否禁用,必要属性
          show: true,//控制是否显示此字段,必要属性
          list: [//单选数据列表,fieldType为radio或checkbox时必要
            {
              value: 1,
              label: "15岁以下"
            },
            {
              value: 2,
              label: "16~20岁"
            }

          ],
          rules: {//校验规则,数据回显涉及的字段
            name: "age",//字段键,必要属性
            value: '', // 字段值,必要属性
            verify: true,//是否必填,必要属性
            errMess: "请选择年龄段",//校验必填失败提示,设置verify为true时必要
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "未选择获客时间",
          label: "获客时间",
          fieldType: "dateTime",
          show: true,
          disabled: false,
          showDate:false,//控制时间弹窗的显示和隐藏,fieldType为date、dateTime时必要
          rules: {
            name: "createTime",
            value: "",
            verify: true,
            errMess: "未选择获客时间",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "输入整数",
          label: "整数",
          fieldType: "integer",
          show: true,
          disabled: false,
          unit:'吨',//单位,fieldType为integer、decimal、money、input、basicData、date、dateTime、radio、checkbox时有此属性,非必要
          rules: {
            name: "integer",
            value: "520",
            verify: false,
            errMess: "请输入数字小数",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "输入小数",
          label: "小数",
          fieldType: "decimal",
          show: true,
          disabled: false,
          decimalPlaces:2,//精度,fieldType为decimal时有此属性,默认保留两位小数,非必要
          rules: {
            name: "decimal",
            value: "520",
            verify: true,
            errMess: "请输入",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "输入金额",
          label: "金额",
          fieldType: "money",
          show: true,
          disabled: false,  
          rules: {
            name: "money",
            value: 52012,
            verify: true,
            errMess: "请输入金额",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "输入名字",
          label: "姓名",
          fieldType: "input",
          show: true,
          disabled: false,
          rules: {
            name: "name",
            value: "李四",
            verify: true,
            errMess: "姓名未填写",
            regexp: "^李" ,//自定义校验规则(目前只支持正则检验),当且仅当verify为true时生效 非必要属性
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "选择基础资料",
          label: "基础资料",
          fieldType: "basicData",
          show: true, //是否显示
          disabled: false,
          :this.onSelect,//点击选择箭头触发onSelect事件,fieldType为basicData时必要
          rules: {
            name: "basicData",
            value: "基础资料",//基础资料显示的值
            id: "111",//基础资料id
            verify: false,
            errMess: "请选择基础资料",
            showErrMess:false //校验文字提示
          },
        },
        {
          label: "图片",
          fieldType: "image",
          show: true,
          disabled: false,
          formData: { //具体参数根据情况而定,fieldType为image时必要
            bizId: null,
            bizType: 'SETTLEMENT_BILL_FILES',
            fileAcl: 'PUBLIC_READ_WRITE'
         },
         action: 'xxxxxx',//上传照片后端地址,fieldType为image时必要
         header: {//请求头,具体参数根据情况而定,fieldType为image时必要
            Authorization: 'xxxxxx',
            token: "xxx"
         },
         maxCount:9,//最大支持上传数量,默认9张,非必要
          rules: {
            name: "photo",
            fileList: [{url:'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg'}], //显示已上传的文件列表,fieldType为image时必要
            verify: true,
            errMess: "请选择图片",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "请选择兴趣",
          label: "兴趣",
          fieldType: "checkbox",
          show: true,
          disabled:false,
          list: [
            {
              value: 1,
              name: "篮球",
              disabled: false, //是否禁用
              checked: false,
            },
            {
              value: 2,
              name: "足球",
              checked: false,
            }
          ],
          rules: {
            name: "interest",
            value: [],
            verify: true,
            errMess: "请选择兴趣",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "请输入公司名称",
          label: "公司",
          fieldType: "input",
          show: true,
          disabled:false,
          rightOperation:'查看附近',//附加操作,点击时触发onRightOperation事件,非必要属性
          onRightOperation:this.onRightOperationBasicData,//附加操作事件,设置了rightOperation必要
          rules: {
            name: "company",
            value: "cat公司",
            verify: false,
            errMess: "公司名称不能为空",
            showErrMess:false //校验文字提示
          },
        },
        {
          placeholder: "请输入备注",
          label: "备注",
          fieldType: "textarea",
          show: true,
          disabled: false,
          rules: {
            name: "experience",
            value: "备注回显", 
            verify: true,
            errMess: "请输入备注",
            showErrMess:false //校验文字提示
          },
        },
      ],
    };
  },
  methods: {
    // 提交表单
    sub() {
      this.$refs.tfGeneralForms
        .validate()
        .then(async (form) => {
          console.log("表单对象:", form);
        })
        .catch((err) => {
          console.log("err", err);
        });
    },
    /**
     * @param {Object} done 基础资料事件
     */
    (){
        //选择基础资料,在此做相应操作,跳转页面或者弹出下拉列表'
        //给this.formData中相应的基础资料字段的rules.value和rules.id赋值
        console.log('选择基础资料')
        // this.formData.forEach(item=>{
        //  if(item.rules.name === 'basicData'){
        //      item.rules.value = 'yayyyy'
        //      item.rules.id = '1'
        //  }
        // })
    },
    onRightOperationBasicData(){
        console.log('附加操作')
    }
  },
};
</script>

<style lang="less">
.content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;

  .subform {
    margin: 30rpx;
    padding: 20rpx 60rpx;
    border-radius: 18rpx;
    background-color: bisque;
  }
}
</style>
  1. 组件属性说明
属性名 类型 默认值 说明
value Array [] 表单数据(请将实际接口数据转换成此组件需要的数据格式,见组件引用例子)
num Boolean false 是否显示序号
disabled Boolean false 控制表单整体是否禁用
  1. 组件方法说明(需要通过ref手动调用)
事件名 说明 回调参数
validate 表单校验及提交事件 返回一个promise,resolve:表单数据,reject:校验失败

隐私、权限声明

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

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

插件不采集任何数据

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

许可协议

MIT协议

暂无用户评论。

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