antd vue 组件 使用下拉框的层级来显示后面的输入框

news2024/10/7 12:17:22

效果图:
在这里插入图片描述
代码:

HTML:

		<dir>
          <a-row>
            <a-col :span="4">
              <a-form-model-item label="审批层级" >
                <a-select
                  placeholder="请选择审批层级"
                  v-model="form.PlatformPurchaseApproveLevel"
                  @change="(e) => handelChange(e, 'approverList')"
                >
                  <a-select-option :value="1">一级</a-select-option>
                  <a-select-option :value="2">二级</a-select-option>
                  <a-select-option :value="3">三级</a-select-option>
                </a-select>
              </a-form-model-item>
            </a-col>
            <a-col :span="14">
              <div v-for="(item, index) in form.approverList" :key="index">
                <a-form-model-item
                  label="审批人"
                  :prop="'approverList.' + index + '.approver'"
                  :rules="{
                    required: true,
                    message: `请选择${index + 1}级审批人`,
                  }"
                >
                  <a-select
                    mode="multiple"
                    style="width: 300px"
                    v-model="item.approver"
                    :maxTagCount="4"
                    allowClear
                    placeholder="选择审批人"
                  >
                    <a-select-option v-for="i in 5" :key="i+1">
                      {{ i+1}}
                    </a-select-option>
                  </a-select>
                </a-form-model-item>
              </div>
            </a-col>
          </a-row>
        </dir>

Data:

 form: {
 		//默认层级是一级所以默认:1
        PlatformPurchaseApproveLevel: 1,
        approverList: [{}], 
        },
 codeList: [
        {
          code: 'PRODUCT_PURCHASE',
          name: 'approverList',
          type: 0, //'审批类型(0-平台审批;1-公司审批)'
          status: 'platformPurchaseStatus',
          level: 'PlatformPurchaseApproveLevel',
        },
        {
        //这里就可以增加其他的数据
		}
     ]

Methods:

// 本方法是公共的, string可以作为后续的参数在change事件后面进行传递
 handelChange(e, string) {
      // 已经选择的审批人层级
      var auditLength = this.form[string].length
      // 选择的审批人层级 减去 已经选择审批人层级
      var num = e - auditLength
      // 若num大于0 则添加 num个层级
      if (num > 0) {
        for (let index = 0; index < num; index++) {
          this.form[string].push({})
        }
      } else {
        // 若小于0 则审批层级减去num  从e开始是需要删除的下标  Math.abs(num)负数转正数 需要删除的数量
        this.form[string].splice(e, Math.abs(num))
      }
    },
  //数据回显
   loadData() {
	//接口成功后处理数据回显,因为后端返回的数据是一个数组包含多条数据,需要前端自己去处理回显
	 if (res.code == 200) {
            let records = res.result.records
            if (records.length) {
              this.codeList.forEach((item) => {
              //这里使用了一个封装了公共的处理方法
                this.withdrawal(records, item)
              })
            }
      	}
	},
	// 处理查询时的数据格式公共方法
    withdrawal(records, obj) {
    //先重置一下
      this.form[obj.name] = []
      //筛选出相同的
      let endList = records.filter((el) => {
        return el.templateCode == obj.code && el.approveType == obj.type
      })
      //这里要判断一下有没有,有在进行,没有就展示data里面定义的展示
      if (!endList.length) return
      let endListOne = endList[0]
      this.form[obj.status] = endListOne.status.toString()
      this.form[obj.level] = endListOne.templateType
      //这里循环是为了知道你之前选择了几级审批的模板,比如:1级,2级 templateType
      for (let index = 0; index < endListOne.templateType; index++) {
        this.form[obj.name].push({ approver: [] })
      }
      endList.forEach((item) => {
        this.form[obj.name].forEach((el, index) => {
        //知道了你是几级的审批模板 还需要知道你是模板后面的审批层级
        //这一步是将你是第几级审批还原回去,approveLevel 表示你是第几级的审批
          if (item.approveLevel - 1 == index) {
            el.approver.push(item.approver)
          }
        })
      })
    },

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安达发|人工智能在APS高级计划与排程中的应用

随着人工智能&#xff08;AI&#xff09;技术的发展&#xff0c;其在生产计划与排程&#xff08;APS&#xff09;领域的应用也日益广泛。APS是一种复杂的系统工程&#xff0c;它需要处理大量的数据&#xff0c;包括需求预测、资源优化、路径规划等。AI技术的应用可以帮助企业更…

身份证读卡器ubuntu虚拟机实现RK3399 Arm Linux开发板交叉编译libdonsee.so找不到libusb解决办法

昨天一个客户要在RK3399 Linux开发板上面使用身份证读卡器&#xff0c;由于没有客户的开发板&#xff0c;故只能用本机ubuntu虚拟机来交叉编译&#xff0c;用客户发过来的交叉编译工具&#xff0c;已经编译好libusb然后编译libdonsee.so的时候提示找不到libusb&#xff0c;报错…

语音芯片KT142C两种音频输出方式PWM和DAC的区别

目录 语音芯片KT142C两种音频输出方式PWM和DAC的区别 一般的语音芯片&#xff0c;输出方式&#xff0c;无外乎两种&#xff0c;即dac输出&#xff0c;或者PWM输出 其中dac的输出&#xff0c;一般应用场景都是外挂功放芯片&#xff0c;实现声音的放大&#xff0c;比如常用的音箱…

csapp-Machine-Level Representation of Program-review

Machine-Level Representation of Program收获和思考 Basics Machine-Level Programming可以看成是机器执行对于上层代码的一种翻译&#xff0c;即硬件是如何通过一个个的指令去解释每一行代码&#xff0c;然后操纵各种硬件执行出对应的结果。 Machine-Level Programming有2种…

Jprofiler V14中文使用文档

JProfiler介绍 什么是JProfiler? JProfiler是一个用于分析运行JVM内部情况的专业工具。 在开发中你可以使用它,用于质量保证,也可以解决你的生产系统遇到的问题。 JProfiler处理四个主要问题: 方法调用 这通常被称为"CPU分析"。方法调用可以通过不同的方式进行测…

【剑指Offer】33.二叉搜索树的后序遍历序列

题目 输入一个整数数组&#xff0c;判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。 数据范围&#xff1a; 节点数量 0≤n≤1000 &#xff0c;节点上的值满足 1≤val≤10^5 &#xff0c;保证节…

Xcode报错“compact unwind compressed function offset doesn‘t fit in 24 bits

Assertion failed: (false && “compact unwind compressed function offset doesn’t fit in 24 bits”), function operator(), file Layout.cpp, line 5758. 解决方案&#xff1a;targerts->build settings->other linker Flages增加-ld64

企业数据防泄密软件-文件外发管理,文件,文档,图纸不外泄

企业数据防泄密软件可以帮助保护企业的重要数据和知识产权&#xff0c;其中文件外发管理是一个重要的环节。 PC访问地址&#xff1a;https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是一些关键功能&#xff1a; 透明加密&#xff1a;加密软件…

【框架源码篇 01】Spring源码-手写IOC

Spring源码手写篇-手写IoC 一、IoC分析 1.Spring的核心 在Spring中非常核心的内容是 IOC和 AOP. 2.IoC的几个疑问? 2.1 IoC是什么&#xff1f; IoC:Inversion of Control 控制反转&#xff0c;简单理解就是&#xff1a;依赖对象的获得被反转了。 2.2 IoC有什么好处? IoC带…

浏览器的四种缓存协议

❤️浏览器缓存 在HTTP里所谓的缓存本质上只是浏览器和业务侧根据不同的报文字段做出不同的缓存动作而已 四种缓存协议如下 Cache-ControlExpiresETag/If-None-MatchLast-Modified/If-Modified-Since &#x1f3a1;Cache-Control 通过响应头设置Cache-Control和max-age&…

【必须安排】书单|1024程序员狂欢节充能书单!

注&#xff1a;以上书单可从京东商城优惠购买&#xff0c;点击以下链接进入图书专题&#xff01;1024程序员狂欢节充能书单 一年一度的1024程序员狂欢节又到啦&#xff01;成为更卓越的自己&#xff0c;坚持阅读和学习&#xff0c;别给自己留遗憾&#xff0c;行动起来吧&#x…

UniApp百度人脸识别插件YL-FaceDetect

插件地址&#xff1a;https://ext.dcloud.net.cn/plugin?id15061 插件说明&#xff1a; 百度离线人脸识别&#xff0c;人脸收集&#xff0c;属性&#xff08;性别年龄&#xff09;识别等&#xff0c;目前只支持安卓端&#xff01; 另&#xff1a;该插件支持的功能为属性识别…

win10下yolox tensorrt模型部署

TensorRT系列之 Win10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速部署…

51系列—基于51单片机的数字频率计(代码+文档资料)

本文主要说明基于51单片机的数字频率计设计&#xff0c;完整资料见文末链接 数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号&#xff0c;方波信…

安达发|AI在APS生产计划排程系统中的应用与优势

随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;已经在许多领域取得了显著的成果。在生产管理计划系统中&#xff0c;AI技术的应用也日益受到关注。本文将探讨如何将AI人工智能用在生产管理计划系统上&#xff0c;以提高生产效率、降低成本并优化资源配置。…

Qt之使用bitblt抓取bitmap(位图)并转QImage

一.效果 点击按钮抓取窗口自身并显示到QLable中 二.实现 pro文件 QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsCONFIG += c++11SOURCES += \main.cpp \mainwindow.cppHEADERS += \mainwindow.hFORMS += \mainwindow.uiLIBS += -lgdi32 -luser32 -l…

前端数据可视化之【Echarts下载使用】

目录 &#x1f31f;下载&#x1f31f;浏览器引入&#x1f31f;模块化引入 &#x1f31f;使用&#x1f31f;基本使用步骤 &#x1f31f;绘制一个简单的图表&#x1f31f;写在最后 &#x1f31f;下载 &#x1f31f;浏览器引入 官网下载界面&#xff1a;官方网站 或 Echarts中文…

旺店通企业版与金蝶云星辰数据集成方案分享

今天我们将深入介绍旺店通企业版与金蝶云星辰业财一体化数据集成方案&#xff0c;以丰富的业务场景示例展示该平台如何以无缝的方式连接不同系统&#xff0c;实现数据同步、提高效率&#xff0c;同时突显轻易云的出色能力。 概述 旺店通企业版与金蝶云星辰业财一体化数据集成方…

【一周安全资讯1021】工业和信息化部等六部门印发《算力基础设施高质量发展行动计划》;思科未修补的零日漏洞正被积极利用

要闻速览 1、工业和信息化部等六部门印发《算力基础设施高质量发展行动计划》 2、香港芭蕾舞团电脑遭勒索软件入侵读取个人及内部资料 3、日本最大通信运营商九百万条数据被盗&#xff0c;泄露时间长达十年 4、疑似迪卡侬 8000 名员工个人信息暴露暗网上 5、Kwik Trip遭遇“神…

【算法题】统计无向图中无法互相到达点对数

题目&#xff1a; 给你一个整数 n &#xff0c;表示一张 无向图 中有 n 个节点&#xff0c;编号为 0 到 n - 1 。同时给你一个二维整数数组 edges &#xff0c;其中 edges[i] [ai, bi] 表示节点 ai 和 bi 之间有一条 无向 边。 请你返回 无法互相到达 的不同 点对数目 。 示…