picker多选 vant_vant的Picker 选择器
货物类型,两级分类,每列都要有不限选项,数据里没有不限选项,需要做数据变异,而且选择器是通过索引取值的,比较麻烦的地方就是,修改时获取的是类别id,需要在变异的数据中找到对应项并记录其索引
clickable
name="goodstypeval":value="goodstypeval"label="货物类型"placeholder="点击选择"v-on:click="columnsGoodsShow"
>
:columns="columnsgoods"v-on:confirm="onConfirmgoods"v-on:cancel="onCancelgoods"v-on:change="onChangegoods"
>
变异后的数据格式:
goodstypelist:[
{
id:0,
text:"不限",
children:[
{id:0,text: "不限"}
]
},
{
id:1,
text:"农用物资",
children:[
{id:0,text: "不限"},
{id:2,text: "农业运输机械"},
{id:3,text: "生产及加工机械"},
...
]
},
...
]
data:
//货物类型
columnsgoods_show: false,
goodstypeval:'',//筛选的货物类型值
CategoryParentID:0,
CategoryID:0,
goodstypelistsource:[],//数据源
goodstypelist:[],//变异后的货物类型表
columnsgoods: [],//对象数组,配置每一列显示的数据
suoyin1:[],//索引
方法:
//打开货物类型
columnsGoodsShow(){//console.log(this.suoyin1)
this.columnsgoods_show = true;//如果没有选中过就不走里面
if(this.suoyin1.length != 0){//通过索引拿到数据表中选中的二级类全部数据
let obj1 = this.columnsgoods[0].values[this.suoyin1[0]]//将当前选中的一级类数据和二级类数据赋值给数据表
this.columnsgoods= [{values: this.columnsgoods[0].values},{values: obj1.children}]this.$nextTick(function(){//通过索引在数据表中找到选中的那一项
this.$refs.ppkk.setIndexes(this.suoyin1)
})
}
},//改变货物类型
onChangegoods(picker, values,index) {//values会得到当前选中的一级和二级,因为一级下带有所有的二级,所以在children中找
picker.setColumnValues(1, values[0].children.filter(item =>item.text));
},//货物类型确认按钮
onConfirmgoods(value, index) {//console.log(value, index)
this.goodstypeval = value[0].text + '-' + value[1].text;this.CategoryParentID = value[0].id;//一级id
this.CategoryID = value[1].id;//二级id
this.columnsgoods_show = false;//将当前选中的索引存起来
this.suoyin1 =index;
},//选择货物类型取消按钮,这里如果没有别的操作可以把他写到行内v-on:cancel="columnsgoods_show = false"
onCancelgoods() {this.columnsgoods_show = false;
},//货物类型
async goodsCategory(){
let self= this;
await getCategoryList(1).then(msg =>{//console.log(msg.row_data.record,'1')
if (msg.status.code == 1) {this.goodstypelistsource = msg.row_data.record;//数据源
let ary = [{id:0,text:'不限',children:[{id:0,text:'不限'}]}];//初始化就有第一项不限
let source =msg.row_data.record;//console.log(source)
source.forEach(item =>{if(item.ParentID==0){
let obj={};
obj.id=item.CategoryID;
obj.text=item.CategoryName;
ary.push(obj);
}
});//第一项不限不循环
for(let i=1;i
let cur=ary[i];
ary[i].children= [{id:0,text:'不限'}];
source.forEach(item=>{if(item.ParentID ==cur.id){
let obj={};
obj.id=item.CategoryID;
obj.text=item.CategoryName;
ary[i].children.push(obj);
}
})
}this.goodstypelist =ary;
console.log(this.goodstypelist)this.columnsgoods= [{values:this.goodstypelist.filter(item => item.text)},{values:this.goodstypelist[0].children.filter(item => item.text)}];//货物类型数据和初始化
//console.log(this.columnsgoods)
}else{
self.$toast(msg.status.msg)return;
};
}).catch(msg =>{
console.log(msg)//self.$toast(msg)
})
},
获取数据:
//获取货物类型
let getCategoryList = (typeID) => {
return axios.get("/Management/Goods_TruckAttribute_GetList", {
params: {
typeID:typeID
}
})
};
修改时:从接口得到两个类型id,用双循环找索引,因为用forEach不能中断,我们只要找到想要的,后面不需要再循环了,这一步是在created里完成了suoyin1的赋值,所以在触发展开事件后就能拿到正确的索引打开选中项
this.CategoryParentID = curInfo.CategoryParentID;//货物类型
this.CategoryID = curInfo.CategoryID;//货物类型
for(let i=0;i
let item= this.goodstypelist[i];if(item.id ==self.CategoryParentID){
this.suoyin1.push(i);for(let j=0;j
let cur=item.children[j];if(cur.id ==self.CategoryID){
this.suoyin1.push(j);break;
}
}break;
}
}
picker多选 vant_vant的Picker 选择器相关推荐
- picker多选 vant_vant框架picker选择器形式列表,以及封装
以下是VantUi插件中常用的各种选择器下拉列表,项目中遇到,就在这里总结以下,下面是代码 第一种Vant -DropdownMenu 下拉框单选形式 Array = [ { text: " ...
- picker多选 vant_Vant Picker 选择器
介绍 提供多个选项集合供用户选择,支持单列选择和多列级联,通常与 弹出层 组件配合使用 引入import Vue from 'vue'; import { Picker } from 'vant'; ...
- picker多选 vant_Vant picker 多级联动操作
官网地址:链接 官网文档可能不是很完善,但仔细看文档,方法,类型其实都讲到的. 度娘也没有找到,花了大半天爬坑试错. 搭配弹出层使用 const citys = [ // 我们习惯的格式. 可以后台给 ...
- EGO1—实现8选1的数据选择器74HC151
数字设计 FPGA 应用,第三章组合逻辑设计和 VIVADO 进阶,课程设计性质的作业题1 第一题:构建工程,实现 8 选 1 的数据选择器 74HC151,编写仿真代码进行测试,将该工程并生成 IP ...
- 四选一、八选一的多路选择器
1.多路选择器设计方式 case语句 if else 语句 2.四选一的选择器 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换: d0 11 d1 10 d2 01 ...
- 硬件 - 数字电路 - 使用反向门、与门、或门搭建二选一的多路选择器
文章目录 基础知识 分析 这是一个二选一的多路选择器,其由一个反向门 U3,两个二输入与门 U1.U2,以及一个二输入或门 U4 组成: 通过 SELECTION(选择端)可以选择信号的输入源:要么 ...
- picker多选 vant_浅谈vant组件Picker 选择器选单选问题
浅谈vant组件Picker 选择器选单选问题 1.写遮罩 2.定义data 3.写事件 4.效果图 补充知识:vue使用vant编辑用户性别 我就废话不多说了,大家还是直接看代码吧~ v-model ...
- range 小程序picker_微信小程序-官方组件picker云开发省市区三级联动选择器
早在一年多以前,我写过一篇微信小程序-省市区县三级联动选择器的文章,那时候小程序刚起步,网上找了很久没有相关的文献,官方也没有相关的组件,我就自己动手写了一个,也因为刚开始接触写的不是很好. 当时省市 ...
- 小程序picker组件中的(普通选择器:mode = selector)
本例代码借鉴官方picker案例: WXML: <picker bindchange="pickChange" value="{{index}}" ran ...
最新文章
- android -各种适配器
- BizTalk2006的帮助文件又更新了,对于还没有安装BizTalk环境又想学习的,不妨看看帮助先...
- pytorch dropout用法
- ABAP Netweaver上调用Java程序
- 机器学习笔记(二)---- 线性回归
- 京东方明年iPhone OLED面板供应量是今年3倍 份额占比约为20%
- C/C++面试之算法系列--去除数组中的重复数字
- js获取ck_js取不到ckeditor textarea值
- Maven工程解决pom依赖红色波浪线报错
- 论文密级_2019年毕业研究生论文提交的通知
- sstream用法(后续更新)
- mall商城 -小程序,h5和pc vue前后端分离
- 常见病饮食宜忌速查手册
- navicat 1146错误
- 我和你,不是影子一样的朋友,只在光明的日子里相随
- 微信打开链接提示用浏览器打开
- 谷歌浏览器网页翻译修复BAT脚本
- ESP32基础应用之使用两个ESP32通过阿里云物联网平台实现相互通信
- Android给Activity取消title标题
- 激光脉冲产生发光的等离子灯丝 或使远程监控成为可能
热门文章
- 第五人格怎么投屏 轻松玩电脑版手游
- 高洛峰mysql_【干货】MySQL 安装与安全优化
- Python画美国盾牌
- 阿里云飞天技术总架构师唐洪:飞天技术与应用
- ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
- 综合案例:实现注册、登录和跳转到主页面的功能。
- Bitmap对象在内存中的大小和转化为字节流的大小
- java比较炫的登录界面_教你写一个炫酷的Material Design 风格的登录和注册页面
- 一文搞懂Spark的Task调度器(TaskScheduler)
- 廖雪峰——练习 请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']。