Avue实现选择下拉框的多种方式

news/2024/7/19 14:03:59 标签: avue, js, vue

目录

  • 前言
  • 1. 实战Demo
  • 2. 基本内容

前言

对应的拓展知识推荐阅读:【vuevue>avue-crud表单属性配置(表格以及列)

本文主要补充实战遇到的问题以及优化的方式

1. 实战Demo

了解基础知识先从Demo入手!

获取数据库的内容,最终显示在下拉框中

<template>
  <vue>avue-form :option="option"></vue>avue-form>
</template>
<script>

let baseUrl = '/manongyanjiuseng';

export default {
  data () {
    return {
      option: {
        column: [{
              label: "设备编号",
              prop: "equipmentNo",
              width:90,
              search:true,
              rules: [{
                required: true,
                message: "请输入设备编号",
                trigger: "blur"
              }],
              dicUrl: `${baseUrl}/info/queryAllByTenantId?tenantId=`+website.tenantId,
              type: "tree",
              clearable:false,
              searchSpan: 4,
              props: {
                label: 'equipmentNo',
                value: 'equipmentNo'
              },
            },
      }
    }
  }
}
</script>

对应捕捉后端数据的内容

此处主要以Java为主,也展示下:

/**
 * 根据租户查询
 * @param tenantId
 * @return
 */
@GetMapping("/queryAllByTenantId")
@ApiOperationSupport(order=15)
@ApiOperation(value = "全部" , notes = "传入租户")
public R<List<Info>> queryAllByTenantId(String tenantId){
	List<Info> list = infoService.list(new QueryWrapper<Info>().eq("tenant_id", tenantId).orderByAsc("equipment_no"));
	return  R.data(list);
}

对应的Java内容推荐阅读:java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)

如果数据库的内容比较少,可以通过前端的字典属性补充:

<template>
  <vue>avue-form :option="option"></vue>avue-form>
</template>
<script>

const DIC= {
  LEVEL:[
    { label: "低", value: "低" },
    { label: "中", value: "中" },
    { label: "高", value: "高" }

  ],
}
export default {
  data () {
    return {
      option: {
        column: [{
           label: "报障等级",
           prop: "level",
           search:true,
           width:70,
           rules: [{
             required: true,
             message: "请输入报障等级",
             trigger: "blur"
           }],
           searchSpan: 4,
           type: "select", // 使用下拉框选择类型
           dicData: DIC.LEVEL // 数据字典
         },
      }
    }
  }
}
</script>

2. 基本内容

拉回正文,上述文章讲述

  • 通过将type属性的值指定为select,同时配置dicData为字典值
  • 配置dicUrl指定后台接口的地址

对应Select选择框还有其他的属性玩法:

最基本的Demo如下:

<template>
  <vue>avue-form :option="option"></vue>avue-form>
</template>
<script>
export default {
  data () {
    return {
      option: {
        column: [
          {
            label: '下拉框',
            prop: 'select',
            type: 'select',
            dicData: [{
              label: '字典1',
              value: 0,
              desc: '字典描述' // 配置下拉数据中desc字段,主要是该数据的提示词
            }, {
              label: '字典2',
              value: 1,
              disabled: true // 单个数据字典进行禁用,本身默认为false
            }],
            value: 0 , // 增加默认值,去除的话,默认没有默认值
            disabled: true , //设置禁用状态,本身默认为false
            clearable: false, // 设置可以清空选项
          }
        ]
      }
    }
  }
}
</script>
  • :增加一个value属性
  • 禁用状态:增加disabled: true,如果是单个字典禁用,则在字典数据中添加
  • 清空选项:增加一个clearable: false
  • 数据提示词:配置下拉数据中desc字段

对应如果增加分组:

<template>
  <vue>avue-form :option="option"
             v-model="obj"></vue>avue-form>
</template>
<script>
export default {
  data () {
    return {
      obj: {
        select: 'Shanghai'
      },
      option: {
        column: [
          {
            label: '分组',
            prop: 'select',
            type: 'select',
            group: true,
            dicData: [{
              label: '热门城市',
              groups: [{
                value: 'Shanghai',
                label: '上海',
                desc: '描述'
              }, {
                value: 'Beijing',
                label: '北京'
              }]
            }, {
              label: '城市名',
              groups: [{
                value: 'Chengdu',
                label: '成都'
              }, {
                value: 'Shenzhen',
                label: '深圳'
              }, {
                value: 'Guangzhou',
                label: '广州'
              }, {
                value: 'Dalian',
                label: '大连'
              }]
            }]
          }
        ]
      }
    }
  }
}
</script>

增加多级联动:

<template>
  <vue>avue-form :option="option"
             v-model="form"></vue>avue-form>
</template>
<script>
var baseUrl = 'https://cli.vue>avuejs.com/api/area'
export default {
  data () {
    return {
      form: {
        province: '110000',
        city: '110100',
        area: '110101'
      },
      option: {
        column: [{
          label: '省份',
          prop: 'province',
          type: 'select',
          props: {
            label: 'name',
            value: 'code'
          },
          cascader: ['city'],
          dicUrl: `${baseUrl}/getProvince`,
          rules: [
            {
              required: true,
              message: '请选择省份',
              trigger: 'blur'
            }
          ]
        },
        {
          label: '城市',
          prop: 'city',
          type: 'select',
          cascader: ['area'],
          props: {
            label: 'name',
            value: 'code'
          },
          row: true,
          dicUrl: `${baseUrl}/getCity/{{key}}?province={{province}}`,
          rules: [
            {
              required: true,
              message: '请选择城市',
              trigger: 'blur'
            }
          ]
        },
        {
          label: '地区',
          prop: 'area',
          type: 'select',
          props: {
            label: 'name',
            value: 'code'
          },
          dicUrl: `${baseUrl}/getArea/{{key}}?city={{city}}`,
          rules: [
            {
              required: true,
              message: '请选择地区',
              trigger: 'blur'
            }
          ]
        }]
      }
    }
  }
}
</script>

http://www.niftyadmin.cn/n/5417060.html

相关文章

移动端精准测试之跨版本覆盖率合并

一&#xff0c;项目简介 在移动端项目测试过程中&#xff0c;尤其是发版前的回归测试阶段&#xff0c;会遇到这样的情况&#xff0c;在测试过程中测试不断地发现问题&#xff0c;开发就进行修改&#xff0c;然后打包测试。而测试完成后呢&#xff0c;业务测试同学想知道整个回归…

【深度学习笔记】6_1 语言模型lang-model

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 6.1 语言模型 语言模型&#xff08;language model&#xff09;是自然语言处理的重要技术。自然语言处理中最常见的数据是文本数据。我…

每日OJ题_链表④_力扣23. 合并 K 个升序链表(小根堆_归并)

目录 力扣23. 合并 K 个升序链表 解析代码1&#xff08;小根堆优化&#xff09; 解析代码2&#xff08;递归_归并&#xff09; 力扣23. 合并 K 个升序链表 23. 合并 K 个升序链表 难度 困难 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并…

程序如何知道mqtt设备是否在线

在做物联网设备的时候经常会碰到设备的在线与掉线 问题&#xff1a;emqx如何来实现这个在线与掉线 实现&#xff1a;添加一个规则&#xff0c;程序监控这个规则 1、SELECT * FROM "$events/client_connected", "$events/client_disconnected" 2、添加一…

【校园导航小程序】2.0版本 静态/云开发项目 升级日志

演示视频 【校园导航小程序】2.0版本 静态/云开发项目 演示 首页 重做了首页&#xff0c;界面更加高效和美观 校园指南页 新增了 “校园指南” 功能&#xff0c;可以搜索和浏览校园生活指南 地图页 ①弃用路线规划插件&#xff0c;改用SDK开发包。可以无阻通过审核并发布…

js里Object和Map的区别

一、键的类型 Object的键必须是字符串或Symbol类型Map的键可以是任何类型的值&#xff0c;包括函数、对象或其他Map实例 二、键的唯一性 在Object中&#xff0c;如果使用相同的键多次&#xff0c;后面的值会覆盖前面的值在Map中&#xff0c;如果使用相同的键多次&#xff0c;…

C++:string的介绍

C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合面向对象的思想&#xff0c;而且底层空间需要用户自己管理&#xff0c;稍不留…

OWASP Top 10 网络安全10大漏洞——A02:A02:2021-加密机制失效

10大Web应用程序安全风险 2021年top10中有三个新类别、四个类别的命名和范围变化&#xff0c;以及一些合并。 A02&#xff1a;A02:2021-加密机制失效 上升一个位置&#xff0c;当前top2&#xff0c;以前称为敏感数据泄露&#xff0c;是一种状况而不是根本原因。更新后的类别…