货物类型,两级分类,每列都要有不限选项,数据里没有不限选项,需要做数据变异,而且选择器是通过索引取值的,比较麻烦的地方就是,修改时获取的是类别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 选择器相关推荐

  1. picker多选 vant_vant框架picker选择器形式列表,以及封装

    以下是VantUi插件中常用的各种选择器下拉列表,项目中遇到,就在这里总结以下,下面是代码 第一种Vant -DropdownMenu 下拉框单选形式 Array = [ { text: " ...

  2. picker多选 vant_Vant Picker 选择器

    介绍 提供多个选项集合供用户选择,支持单列选择和多列级联,通常与 弹出层 组件配合使用 引入import Vue from 'vue'; import { Picker } from 'vant'; ...

  3. picker多选 vant_Vant picker 多级联动操作

    官网地址:链接 官网文档可能不是很完善,但仔细看文档,方法,类型其实都讲到的. 度娘也没有找到,花了大半天爬坑试错. 搭配弹出层使用 const citys = [ // 我们习惯的格式. 可以后台给 ...

  4. EGO1—实现8选1的数据选择器74HC151

    数字设计 FPGA 应用,第三章组合逻辑设计和 VIVADO 进阶,课程设计性质的作业题1 第一题:构建工程,实现 8 选 1 的数据选择器 74HC151,编写仿真代码进行测试,将该工程并生成 IP ...

  5. 四选一、八选一的多路选择器

    1.多路选择器设计方式 case语句 if else 语句 2.四选一的选择器 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换: d0    11 d1    10 d2    01 ...

  6. 硬件 - 数字电路 - 使用反向门、与门、或门搭建二选一的多路选择器

    文章目录 基础知识 分析 这是一个二选一的多路选择器,其由一个反向门 U3,两个二输入与门 U1.U2,以及一个二输入或门 U4 组成: 通过 SELECTION(选择端)可以选择信号的输入源:要么 ...

  7. picker多选 vant_浅谈vant组件Picker 选择器选单选问题

    浅谈vant组件Picker 选择器选单选问题 1.写遮罩 2.定义data 3.写事件 4.效果图 补充知识:vue使用vant编辑用户性别 我就废话不多说了,大家还是直接看代码吧~ v-model ...

  8. range 小程序picker_微信小程序-官方组件picker云开发省市区三级联动选择器

    早在一年多以前,我写过一篇微信小程序-省市区县三级联动选择器的文章,那时候小程序刚起步,网上找了很久没有相关的文献,官方也没有相关的组件,我就自己动手写了一个,也因为刚开始接触写的不是很好. 当时省市 ...

  9. 小程序picker组件中的(普通选择器:mode = selector)

    本例代码借鉴官方picker案例: WXML: <picker bindchange="pickChange" value="{{index}}" ran ...

最新文章

  1. android -各种适配器
  2. BizTalk2006的帮助文件又更新了,对于还没有安装BizTalk环境又想学习的,不妨看看帮助先...
  3. pytorch dropout用法
  4. ABAP Netweaver上调用Java程序
  5. 机器学习笔记(二)---- 线性回归
  6. 京东方明年iPhone OLED面板供应量是今年3倍 份额占比约为20%
  7. C/C++面试之算法系列--去除数组中的重复数字
  8. js获取ck_js取不到ckeditor textarea值
  9. Maven工程解决pom依赖红色波浪线报错
  10. 论文密级_2019年毕业研究生论文提交的通知
  11. sstream用法(后续更新)
  12. mall商城 -小程序,h5和pc vue前后端分离
  13. 常见病饮食宜忌速查手册
  14. navicat 1146错误
  15. 我和你,不是影子一样的朋友,只在光明的日子里相随
  16. 微信打开链接提示用浏览器打开
  17. 谷歌浏览器网页翻译修复BAT脚本
  18. ESP32基础应用之使用两个ESP32通过阿里云物联网平台实现相互通信
  19. Android给Activity取消title标题
  20. 激光脉冲产生发光的等离子灯丝 或使远程监控成为可能

热门文章

  1. 第五人格怎么投屏 轻松玩电脑版手游
  2. 高洛峰mysql_【干货】MySQL 安装与安全优化
  3. Python画美国盾牌
  4. 阿里云飞天技术总架构师唐洪:飞天技术与应用
  5. ZPL 打印条码、二维码及小票(中文/汉字),生成条码、二维码图片【Asp.Net】-含示例代码
  6. 综合案例:实现注册、登录和跳转到主页面的功能。
  7. Bitmap对象在内存中的大小和转化为字节流的大小
  8. java比较炫的登录界面_教你写一个炫酷的Material Design 风格的登录和注册页面
  9. 一文搞懂Spark的Task调度器(TaskScheduler)
  10. 廖雪峰——练习 请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']。