下拉表格组件

技术下拉表格组件 下拉表格组件封装下拉表格组件
!-- 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)

相关推荐

  • Python基础知识-1.6数据类型

    技术Python基础知识-1.6数据类型 Python基础知识-1.6数据类型一、引入
    在数学中我们知道有整数、小数、复数等,简言之数据是有类型之分的
    同样,在Python编程语言中,数据也是有类型的

    礼包 2021年12月5日
  • 什么是公钥、私钥、密码、助记词

    技术什么是公钥、私钥、密码、助记词 什么是公钥、私钥、密码、助记词1. 什么是公钥
    公钥:相当于钱包的地址,可理解成银行账户。拥有私钥,可以算出公钥,拥有公钥却不能算出私钥。公钥的地址(钱包的地址):可

    礼包 2021年11月26日
  • 怎样用Java final 关键字

    技术怎样用Java final 关键字怎样用Java final 关键字,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面好好地讲一讲 final 关键字,

    攻略 2021年12月2日
  • ambari禁用kerberos认证(ambari关闭kerberos认证)

    技术Ambari 开启kerberos报错add_principal:分析主体时主体的格式不正确怎么解决Ambari 开启kerberos报错add_principal:分析主体时主体的格式不正确怎么解决,很多新手对此不

    攻略 2021年12月23日
  • MySQL如何在线开启/关闭GTID

    技术MySQL如何在线开启/关闭GTID小编给大家分享一下MySQL如何在线开启/关闭GTID,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一

    攻略 2021年11月6日
  • MySQL数据库索引的弊端及怎么使用

    技术MySQL数据库索引的弊端及怎么使用本篇内容介绍了“MySQL数据库索引的弊端及怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅

    攻略 2021年11月29日