vue3+ts动态表单渲染,antd的useForm改造

    let fieldList: any = getFormFields(
      fieldInfo.coreNavigationList[0].list[0].list,
      fieldInfo.positionCodeRespVO,
      isCanBeUpdateProcess.value,
      isDetail.value === '1'
    );

fieldInfo数据格式:

{
    "name": "默认模板",
    "status": "ENABLE",
    "remark": "默认模板描述",
    "coreNavigationList": [
        {
            "id": "113",
            "menuId": "10000001",
            "coreName": "职位基础字段",
            "isBuiltIn": true,
            "status": "ENABLE",
            "list": [
                {
                    "createTime": "2023-05-16 11:22:50",
                    "updateTime": "2023-11-06 09:09:41",
                    "id": "216",
                    "menuId": "10000001",
                    "coreNavigationId": "113",
                    "coreClass": "com.lirenkeji.prt.business.ats.dal.entity.position.AtsPosition",
                    "coreName": "职位基础字段",
                    "coreKey": "ats_position",
                    "status": "ENABLE",
                    "list": [
                        {
                            "createTime": "2023-05-16 11:22:50",
                            "updateTime": "2024-01-16 10:19:04",
                            "id": "29005",
                            "coreNavigationGroupId": "216",
                            "coreKey": "name",
                            "coreName": "职位名称",
                            "coreField": "职位名称",
                            "tips": "1234",
                            "htmlType": "INPUT",
                            "isBuiltIn": true,
                            "isRequired": true,
                            "status": "ENABLE",
                            "sort": 0,
                            "convertNameField": "name",
                            "convertNameFieldStructure": null,
                            "tableName": null,
                            "coreCondition": {
                                "maxSize": 100
                            },
                            "roleStatus": null,
                            "coreTable": null,
                            "tableKey": null,
                            "description": null,
                            "isVisible": false,
                            "isEncrypted": false,
                            "isAppVisible": false,
                            "isAppRead": false,
                            "isAppRequired": true,
                            "coreInductionNavigationId": null,
                            "coreNavigationGroupKey": null,
                            "coreNavigationGroupName": null,
                            "menuId": null,
                            "convertKeyField": null,
                            "doCellValues": null,
                            "isCustom": null,
                            "isMultiple": null,
                            "showNameForKey": null
                        },
                        {
                            "createTime": "2023-08-30 14:08:37",
                            "updateTime": "2024-01-16 10:19:04",
                            "id": "29008",
                            "coreNavigationGroupId": "216",
                            "coreKey": "type",
                            "coreName": "职能类型",
                            "coreField": "职能类型",
                            "tips": "1234",
                            "htmlType": "SELECT",
                            "isBuiltIn": true,
                            "isRequired": true,
                            "status": "ENABLE",
                            "sort": 1,
                            "convertNameField": "",
                            "convertNameFieldStructure": null,
                            "tableName": null,
                            "coreCondition": {
                                "data": 17,
                                "type": "DATA_SOURCE"
                            },
                            "roleStatus": null,
                            "coreTable": null,
                            "tableKey": null,
                            "description": null,
                            "isVisible": false,
                            "isEncrypted": false,
                            "isAppVisible": false,
                            "isAppRead": false,
                            "isAppRequired": true,
                            "coreInductionNavigationId": null,
                            "coreNavigationGroupKey": null,
                            "coreNavigationGroupName": null,
                            "menuId": null,
                            "convertKeyField": null,
                            "doCellValues": null,
                            "isCustom": null,
                            "isMultiple": null,
                            "showNameForKey": null
                        },
                        {
                            "createTime": "2023-08-30 14:08:37",
                            "updateTime": "2024-01-16 10:19:04",
                            "id": "29009",
                            "coreNavigationGroupId": "216",
                            "coreKey": "dept_id",
                            "coreName": "所属部门",
                            "coreField": "所属部门",
                            "tips": "1234",
                            "htmlType": "SELECT",
                            "isBuiltIn": true,
                            "isRequired": true,
                            "searchAuthJson": {
                                "isShowSearch": null,
                                "isShowField": true,
                                "isQuickSearch": false,
                                "isList": null
                            },
                            "sublistTableJson": {
                                "tableAlias": "p",
                                "tableFieldAlias": null,
                                "quickSearchFieldAlias": null
                            },
                            "status": "ENABLE",
                            "sort": 3,
                            "convertNameField": "deptName",
                            "convertNameFieldStructure": null,
                            "tableName": null,
                            "coreCondition": {
                                "type": "ORGANIZATION"
                            },
                            "roleStatus": null,
                            "coreTable": null,
                            "tableKey": null,
                            "description": null,
                            "isVisible": false,
                            "isEncrypted": false,
                            "isAppVisible": false,
                            "isAppRead": false,
                            "isAppRequired": true,
                            "coreInductionNavigationId": null,
                            "coreNavigationGroupKey": null,
                            "coreNavigationGroupName": null,
                            "menuId": null,
                            "convertKeyField": null,
                            "doCellValues": null,
                            "isCustom": null,
                            "isMultiple": null,
                            "showNameForKey": null
                        },
                    ]
                }
            ]
        }
    ],
    "templateScopeList": null
}

getFormFields方法,处理大量数据,生成动态表单

render函数的渲染

arr.push({
    field: `${field.coreKey == 'dept_id' ? 'deptId' : field.coreKey}`,
    component: typeSwicth(field.htmlType),
    label: field.coreName,
    ifShow: field.isShow,
    required: field.isRequired,
    colProps: {
      span: 12,
    },
    // slot: 'customSlot',
    render({ model, field: fieldValue }) {
      return h(AnewOrgSelect, {
        value: model[fieldValue],
        disabled: disabled,
        'onUpdate:value': (e) => {
          model[fieldValue] = e;
        },
        maxNumber: field.htmlType === 'CHECKBOX' ? 100 : 1,
        onChange: async (e) => {
          // 处理接口需要的字段数据格式
          const { values } = e;

          //根据所属部门回填编码
          if (values.length !== 0) {
            const res = await getCodeRules(values[0]);
            model['code'] = res?.code;
            model['ruleId'] = res?.ruleId;
          } else {
            model['code'] = '';
            model['ruleId'] = '';
          }

          //console.log('编码', res);

          if (field.htmlType === 'CHECKBOX') {
            model[field.coreKey] = values;
          } else {
            model[field.coreKey] = values?.join(',');
          }
        },
      });
    },
  });

得到的数据

render属性

render?: (renderCallbackParams: RenderCallbackParams) => VNode | VNode[] | string;

传参合返回值定义如上

return h函数,h函数是vue里面

文章中的h函数使用

    return h(AnewOrgSelect, {
                    value: model[fieldValue],
                    disabled: disabled,
                    'onUpdate:value': (e) => {
                      model[fieldValue] = e;
                    },
                    maxNumber: field.htmlType === 'CHECKBOX' ? 100 : 1,
                    onChange: async (e) => {
                      // 处理接口需要的字段数据格式
                      const { values } = e;

                      //根据所属部门回填编码
                      if (values.length !== 0) {
                        const res = await getCodeRules(values[0]);
                        model['code'] = res?.code;
                        model['ruleId'] = res?.ruleId;
                      } else {
                        model['code'] = '';
                        model['ruleId'] = '';
                      }

                      //console.log('编码', res);

                      if (field.htmlType === 'CHECKBOX') {
                        model[field.coreKey] = values;
                      } else {
                        model[field.coreKey] = values?.join(',');
                      }
                    },
                  });

友情连接

vue中的h函数_vue h函数-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/467413.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

03、判断和循环

三、判断与循环 文章目录 三、判断与循环顺序结构分支结构If语句在程序中就是用来判断的switch 循环结构forwhiledo while 顺序结构 顺序结构是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次执行。 分支结构 If语句在程序中就是用来判断的 …

opc客户端

支持opc,da,ua通信(匿名登陆及用户登陆) 支持批量节点数据监听,当数据有变化时更新 支持单个节点读取和写入 KeepServer做为modbus server keepserver通信配置 https://blog.csdn.net/xiaochenXIHUA/article/detail…

高通推出第三代骁龙8s移动平台,首款终端预计将于3月面市

2024年3月18日,圣迭戈——高通技术公司今日宣布推出第三代骁龙8s移动平台,为更多Android旗舰智能手机带来骁龙8系平台上最广受欢迎的特性,实现非凡的顶级移动体验。这款全新旗舰级平台的主要特性包括支持强大的终端侧生成式AI功能、始终感知的…

操作系统核心知识点大梳理

计算机结构 现代计算机模型是基于-冯诺依曼计算机模型 计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工,然后再按地址把结果送到内存中去…

【Leetcode-21合并两个有序链表】

题目详情: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 2: 输入:l1 [], l2 […

由浅到深认识C语言(4):数组

该文章Github地址:https://github.com/AntonyCheng/c-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.csdn…

市场复盘总结 20240318

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 二进三: 进级率中 36% 最常用…

【LeetCode每日一题】303. 区域和检索 - 数组不可变

文章目录 [303. 区域和检索 - 数组不可变](https://leetcode.cn/problems/range-sum-query-immutable/)思路:前缀和代码: 303. 区域和检索 - 数组不可变 思路:前缀和 1.因为要根据给出的两个索引,来返回索引区间的和 2.创建一个…

选Gitee还是GitHub?

2024年3月18日,周一晚上 我选择GitHub 因为GitHub可以无限创建仓库

电脑装win11(作si版)

装win11经历 前言:因为我的u盘今天到了,迫不及待试试装机 然后在一系列准备好工具后,便是开始拿学校的机房电脑来试试手了~~ 前期准备 下载好win11镜像(可以去微软官网下载) 下载Rufus工具 https://www.lanzoue.com/…

Qt学习--继承(并以分文件实现)

基类 & 派生类 一个类可以派生自多个类,这意味着,它可以从多个基类继承数据和函数。定义一个派生类,我们使用一个类派生列表来指定基类。类派生列表以一个或多个基类命名。 总结:简单来说,父类有的,子…

【Chapter1】操作系统概述,计算机操作系统教程,第四版,左万利,王英

文章目录 一、操作系统的基本概念1.1操作系统的层次结构1.2操作系统的运行视图1.3操作系统的概念(定义)1.4操作系统的功能和目标1.4.1操作系统的功能和目标——作为系统资源的管理者1.4.2操作系统的功能和目标——向上层提供方便易用的服务1.4.2.1GUI:图形化用户接口…

力扣函数题:查找子字符串

//C语言strstr(str1,str2);判断字符串str2是否是str1的子串&#xff0c;是返回str1字符串从str2第一次出现的位置开始到str1结尾的字符串&#xff0c;否则返回NULLint numOfStrings(char ** patterns, int patternsSize, char * word){int n0;int i0;while(i<patternsSize){…

综合交易模型----可转债三低策略实盘qmt版,提供源代码

链接 综合交易模型----可转债三低策略实盘qmt版&#xff0c;提供源代码 (qq.com) 可转债3低策略是指选择正股市值低、转债余额低、溢价率低的可转债进行投资的策略。 市值低&#xff1a;指的是可转债对应的正股市场价值较小&#xff0c;这通常意味着需要较少的资金就可以对股价…

upload-labs-pass01

1.安装好环境进入关卡&#xff08;记得打开小皮&#xff09; 2.可以看到第一关是要求上传图片&#xff0c;但是同时限制了图片类型&#xff0c;那么如果我们将木马写入图片&#xff0c;但是类型又不在白名单&#xff0c;就要想办法绕过 3.可以看到这里的要求是有check&#xff…

二、python基础

一、关键字&#xff08;保留字&#xff09; 指在python中赋予特定意义的一类单词&#xff0c;不能将关键字作为函数、变量、类、模块的名称 import keyword#利用内存模块keyword print(keyword.kwlist)#输出所有关键 print(len(keyword.kwlist))#利用内置函数len()输出关键字的…

Python--类中作用域

1、在面向对象编程中&#xff0c;主要的变量就是成员变量&#xff08;属性&#xff09;和局部变量 class Cat:# 属性name Noneage None# n1, n2, result为局部变量def cal(self, n1, n2):result n1 n2print(f"result{result}") 2、作用域的分类&#xff1a;属性…

单链表OJ题

单链表OJ题&#xff08;文字解读 图解&#xff09; 1. 移除链表元素2. 反转链表3. 链表的中间结点4. 返回倒数第 k 个节点5. 合并两个有序链表 1. 移除链表元素 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff…

Obsidian使用200+插件与70+种主题分享

主题资源 下载方式一&#xff1a; 网盘下载 密码:a3eu 下载方式二&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1fOgP8lY29sYxkUAbTlQQCw 提取码&#xff1a;qhxa 下载解压打开红色框文件夹 上面的是插件&#xff0c;下面的是主题 以下介绍安装主题 打开Obsidi…

【小白笔记:JetsonNano学习(一)SDKManager系统烧录】

参考文章&#xff1a;SDKManager系统烧录 小白烧录文件系统可能遇到的问题 担心博主删除文章&#xff0c;可能就找不到比较详细的教程了&#xff0c;特意记录一下。 Jetson Nano采用四核64位ARM CPU和128核集成NVIDIA GPU&#xff0c;可提供472 GFLOPS的计算性能。它还包括4GB…