下拉表格组件

技术下拉表格组件 下拉表格组件封装下拉表格组件
!-- my-selectv-model="changeForm.productname" //双向绑定的数据 (必传):arrData="cpNameO

下拉表格组件

封装下拉表格组件!我的选择

v-model='变更表单。产品名称'//双向绑定的数据(必传)

:arrData='cpNameOptions' //值(下拉列表数据)(内部会自动筛选) (非必传)

:默认值=' { label : ' name ',value: 'name'}' //默认绑定的价值和标签(非必传)

@change='changeEvent' //选中发生改变时触发的事件(参数:选中的值)

:options='[{name: '产品名称,value: 'name'},{name: '规格,值: '标准' },名称: '包装单位,value: 'unitname'}]'//表头名字名称和身体展示的数据价值属性(必传)

: getdata='查询名称搜索//异步请求:从服务器上拉下来的数据函数,该函数返回承诺对象(arrData属性和获取数据必填一个)

如:查询名称搜索(查询字符串){ 0

//console.log(queryString,)模糊姓名查询');

让公司id=会话存储。getitem('公司id ');

让参数={ 0

key: queryString,

};

归还这个$ API。frienduncompanylist(params,companyid)

}

@click='参数为对象项目'//点击选中的对象

setstyle='span的类名' 如: setstyle=' { ' min-width ' : ' 160px ' } '//单元格的样式

/my-select -

模板

!埃尔形式项目标签='产品名称: ' prop=' select value ' : rules=' { required : true,message: '基本名称不能为空1 ',trigger: 'change'}' -

el-select

:值='选择值'

@input='inputEvent '

style='width: 180px '

清晰的

可滤过的

遥远的

:远程方法='远程方法'

@visible-change='focusEvent1 '

@change='handleSelect '

!- @change='handleSelect' -

El-option class=' as dasd ' : disabled=' true '值=' label=' '

差异

span :style='setstyle '序号/span

span : style=' setstyle ' v-for='(项目,索引)在选项:键=' item。名字索引数学。random()' { { item。名称} }/span中

/div

/el-option

埃尔选项

v-show='filterArr.length!=0'

filterArr || this.arrData中的v-for='(项,索引)

:key='item.id Math.random()'

class='asdasd '

:标签=' item[DefalutValue。标签]'

:值=' item[DefalutValue。值]'

div @click='clickOption(项目)'

span : style=' setstyle ' { index 1 } }/span

span : style=' setstyle ' v-for='(第1项,索引1)在选项:键='索引1项[项1。价值]数学。random()' { { item[item 1。值]} }中/span

/div

/e

l-option
el-option
v-show="filterArr.length == 0"
value=""
label=""
style="text-align: center; border-top: 1px solid black; margin: 0 6px"
:disabled="true"

div
span :style="setstyle"暂无数据/span
/div
/el-option
/el-select
!-- /el-form-item --
/template
script
export default {
name:"GridSelect",
mounted() {
this.filterArr = JSON.parse(JSON.stringify(this.arrData));
this.selectValue = this.value JSON.parse(JSON.stringify(this.value)): null;
},
data() {
return {
selectValue: "", //选中的值
filterArr: [], //过滤后的数组
};
},
watch: {
value: {
handler(newvalue,oldvalue) {//监听 父级绑定的 v-model 变化
this.selectValue = this.value
},
deep: true
}
// filterArr: {
// handler(oldvalue, newvalue) {
// console.log(oldvalue,newvalue,111)
// },
// deep: true
// }
},
props: {
value: {
default: null
},
setstyle:{
type: Object,
default() {
return {}
}
},
defalutValue: {
//默认展示数据的value 和 label值
type: Object,
default() {
return {
value: "id",
label: "name",
};
},
},
arrData: {
//查询到的数组
type: Array,
default() {
return [];
},
},
options: {
type: Array,
request: true,
},
getData: {
type: Function,
default: null
}
},
methods: {
//点击下拉框事件clickOption
clickOption(item) {
// console.log(item,'点击下拉框事件clickOption')
this.$emit('click',item)
},
//$emit('input', $event)
inputEvent(value) {
// console.log(value, "inputEvent-----------");
this.selectValue = value;//value 为选中的值
this.$emit("input", value);
},
// handleSelect 当选中状态改变时触发
handleSelect($event) {
// console.log('Select事件触发--',$event)
this.$emit('change',$event)//$event 为选中的值
},
//下拉框显示隐藏时触发
async focusEvent1(flag) {
// console.log(flag, "下拉框显示隐藏时触发--");
if (flag) {
if(this.getData) {//当请求数据函数存在时触发
let {result} = await this.getData('')
// console.log(result, 'result=-------')
this.filterArr = result
return;
}
this.filterArr = this.arrData; //重置过滤后的数组
}
},
//模糊查询方法
async remoteMethod(query) {
// console.log( query,"query-----",);
if(this.getData) {//当请求数据函数存在时触发
let {result} = await this.getData(query)
// console.log(result, 'result=-------')
this.filterArr = result
return;
}
if (query != "") {
//如果输入不为空
this.filterArr = this.arrData.filter((item) = {
return (
item[this.defalutValue.label]
.toLowerCase()
.indexOf(query.toLowerCase()) -1
);
});
} else {
//如果输入为空
this.filterArr = this.arrData;
}
},
},
};
/script
style
.asdasd {
white-space: nowrap;
width: unset;
border-right: 1px solid #ddd;
border-top: 1px solid #ddd;
padding: 0;
margin: 0 6px;
}
/* .asdasd:first-child{
border-right: 1px solid black;
} */
.asdasd:nth-last-child(2){
border-bottom: 1px solid #ddd;
}
.asdasd div {
width: 100%;
display: flex;
}
.asdasd div span {
min-width: 120px;
padding-left: 10px;
overflow-x:hidden;
text-overflow: ellipsis;
/* border-right: 1px solid black; */
border-left: 1px solid #ddd;
border-collapse: separate;
}
.asdasd:last-of-type {
border-bottom: 1px solid #ddd;
width: 60px;
}
.asdasd div:first-of-type span {
width: 60px;
}
/style

在组件中使用

template
  
   grid-select v-model="queryParams.jobName" :defalutValue="{label: 'name',value: 'jobName'}"
             :options="[{name: '职业名称', value: 'jobName'},{name: '工种', value: 'jobBranch'},{name: '等级', value: 'jobLevel'}]"
             :arrData="planJobList" @click="gridSelect"/grid-select
 /template
import GridSelect from "@/components/GridSelect/index"; //下拉表格
export default {
   name:"",
   components:{
           GridSelect
   }
}

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/62057.html

(0)

相关推荐

  • 指针的初步学习

    技术指针的初步学习 指针的初步学习1.指针变量计算机将内存分割为字节,字节可以存储八位的信息,而每个字节都有唯一的地址。如下,如果内存中有n个字节,可以把地址看作0到n-1的数地址
    内容0  
    0101

    礼包 2021年11月15日
  • 如何用css设置div悬浮

    技术如何用css设置div悬浮这篇文章主要讲解了“如何用css设置div悬浮”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何用css设置div悬浮”吧!

    攻略 2021年11月15日
  • 2月2龙抬头吃什么,农历二月初二为什么不能吃面条?

    技术2月2龙抬头吃什么,农历二月初二为什么不能吃面条?俗称二月二“龙抬头”2月2龙抬头吃什么。这一天传统习俗活动很多: 天亮之前用黄豆炒“料豆”,又称炒“蝎子爪”,有甜的,有威的,传说吃了料豆当年不遭蝎子蜇。 撒青灰。沿

    生活 2021年10月27日
  • 树莓派如何控制温湿度传感器DHT11

    技术树莓派如何控制温湿度传感器DHT11树莓派如何控制温湿度传感器DHT11,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。小π因为好几次断电之前没有关掉

    攻略 2021年11月19日
  • 造纸术是哪个朝代发明的,纸的发明经历了哪四个时间段

    技术造纸术是哪个朝代发明的,纸的发明经历了哪四个时间段上古时代祖先主要依靠结绳记事,以后渐渐发明了文字,开始用甲骨来作为书写材料。后来又发现和利用竹片和木片(即简牍)以及缣帛作为书写材料。但由于缣帛太昂贵,竹木太笨重,于

    生活 2021年10月30日
  • 提升Azure App Service的几个建议分别是什么

    技术提升Azure App Service的几个建议分别是什么这篇文章将为大家详细讲解有关提升Azure App Service的几个建议分别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后

    攻略 2021年11月18日