对于表单配置类的前端处理方法

1、对于表单配置类,可以先将所有表单封装成一个组件,留一个配置项:config,通过config将配置信息传递进去,然后通过遍历的方式渲染,表单封装里用条件渲染来决定对表单使用,最后把所有选择项进行数据改造成接口需要的样子,进行传递

例子:

  

<van-row
        v-for="i in config.filter(m =>
          _type == 'private' ? m.isPublic === 0 : m.isPublic === 1
        )"
        :key="i.id"
      >
        <van-row
          v-if="i.type === 1"
          class="JNFP-row--flex"
          :class="{ border: _type == 'private' }"
          type="flex"
          align="center"
        >
          <!--  输入框 -->
          <JNPF-field
            :config="i"
            :alignType="_type"
            v-model="
              data[
                i.field == 'applicantDeptId' || i.field == 'applicant'
                  ? i.field + 'Name'
                  : i.field
              ]
            "
          ></JNPF-field>
          <!--   <van-field
            :input-align="
              _type == 'private' || !isCurrentAuth ? 'right' : 'left'
            "
            :class="[
              'JNPF-field',
              {
                'JNPF-field-required': i.isRequired,
                'JNPF-isPublic': _type == 'private' || !isCurrentAuth
              }
            ]"
            label-align="right"
            :readonly="i.isReadonly == 0 && isCurrentAuth ? false : true"
            :rules="[
              {
                required: i.isRequired == 0 ? false : true,
                message: `请填写${i.label}`,
                trigger: 'none'
              }
            ]"
            v-model="
              data[
                i.field == 'applicantDeptId' || i.field == 'applicant'
                  ? i.field + 'Name'
                  : i.field
              ]
            "
            :type="i.type===1 ?'text' :'digit'  "
            :required="i.isRequired == 0 ? false : true"
            :label="i.label"
            :placeholder="i.placeholder"
          ></van-field> -->
        </van-row>
        <!-- 数字输入框 -->
        <van-row
          v-if="i.type === 2"
          class="JNFP-row--flex"
          :class="{ border: _type == 'private' }"
          type="flex"
          align="center"
        >
          <JNPF-field
            :config="i"
            type="digit"
            :alignType="_type"
            v-model="data[i.field]"
          ></JNPF-field>
          <!--  <van-field
            :border="false"
            :input-align="
              _type == 'private' || !isCurrentAuth ? 'right' : 'left'
            "
            :class="[
              'JNPF-field',
              {
                'JNPF-field-required': i.isRequired,
                'JNPF-isPublic': _type == 'private' || !isCurrentAuth
              }
            ]"
            label-align="right"
            :readonly="i.isReadonly == 0 && isCurrentAuth ? false : true"
            v-model="data[i.field]"
            type="digit"
            :required="i.isRequired == 0 ? false : true"
            :label="i.label"
            :placeholder="i.placeholder"
          /> -->
        </van-row>
     

2、config数据例子

appCheckRule: null
configId: "5f2f94dce24f44c6b39c17a825d25411"
dataType: null
dataTypeParam: null
defaultType: 2
defaultTypeName: "当前用户ID"
defaultValue: ""
field: "applicant"
fieldScene: 2
fieldSceneName: "开票"
hidden: 0
hiddenName: "否"
id: 567
isMultiple: 0
isMultipleName: "否"
isPublic: 1
isPublicName: "是"
isReadonly: 0
isReadonlyName: "否"
isRequired: 1
isRequiredName: "是"
jsCheckRule: "{\n\t\"valueType\":\"string\",\n    \"organizeId\":\"applyUnit\"\n}"
label: "申请人"
placeHolder: null
showLabel: 1
showLabelName: "是"
sort: 0
span: 12
staticData: Array(0)
type: 102
typeName: "人员选择"

3、对排序的处理方法

  对于需要排序的,后端通常会按照优先级,传一个sort字段,通过sort字段,进行优先级排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于表单设计器组件的 class 设计,可以考虑以下几个方面: 1. FormDesignerComponent :作为表单设计器组件的根,负责整体的组件管理和控制。可以包含用于加载和保存表单配置方法,以及与其他组件进行交互的事件处理方法。 2. FieldComponent :表示表单设计器中的一个字段组件,负责展示字段的标签、输入框、验证信息等。可以包含字段的属性(如名称、型、默认值等),以及与字段相关的操作方法(如添加、删除、移动等)。 3. PropertiesPanelComponent :作为一个侧边栏面板组件,用于展示和编辑当前选中字段的属性。可以包含表单字段的各种属性输入框、下拉列表等,以及相应的事件处理方法。 4. ToolboxComponent :作为一个工具箱组件,用于展示可用的表单字段列表,供用户拖拽到表单设计器中。可以包含字段的图标、名称等,以及相关的事件处理方法(如拖拽开始、结束等)。 5. CanvasComponent :作为表单设计器的画布组件,负责展示已添加的字段组件,并处理字段之间的布局和交互。可以包含拖拽、缩放、对齐等操作的事件处理方法。 除了上述核心之外,还可以根据需要设计其他辅助或组件,例如用于字段验证的 Validator 、用于保存和加载表单配置的 FormConfig 等。 在设计这些时,可以考虑使用面向对象的思想,将不同的功能和责任分配给不同的,以便代码结构清晰、可维护性高。同时,可以利用现有的前端框架或库(如React、Vue等)来简开发过程,并提供更好的组件复用和扩展性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值