0
点赞
收藏
分享

微信扫一扫

下拉框添加新增选项按钮

半秋L 2022-04-01 阅读 51

下拉框添加新增选项按钮

效果图

在这里插入图片描述

代码

<template>
	<el-select v-model="submitData.src_type"
	           ref="template"
	           style="width:370px"
	           @visible-change="(v)=>visibleChange(v,'template')"  >
	       <el-option v-for="(item,index) in sourceList"
	                  :key="index"
	                  :label="item.name"
	                  :value="item.value">
	              <span style="float:left" class="span-style">{{item.name}}</span>
				  <span style="float:right" class="span-style" @click.stop="delitem(index)">
				  <i class="el-tag_close el-icon-close"/>
				  </span>
				  <div class="flag" @click="showShipTemplate(index,true)">
				  </div>
	        </el-option>
	 </el-select>
</template>
<script lang="ts">
  delitem(index){
      let vm=this as any
      vm.sourceList.splice(index,1)
    }
   visibleChange(visible,refName){
  if(visible){
    let vm=this as any
    const ref=vm.$ref[refName];
    let popper=ref.$refs.popper;
    if(popper.$el)popper=popper.$el;
    if(!Array.form(popper.children).some(
     (v)=>v.className==='el-template-menu_list'
   ){
     const el=document.createElment('ul');
     el.className='el-template-menu_list';
     el-style="border-top:2px solid grey;padding:0; color:grey; font-size:13px";
     el-innerHtml=`<li class="el-cascader-node text-center" style="height:37px;line-height:50px;margin-left:10px;">
     <span class="el-cascader-node_label"><i class="font-blue el-icon-plus"></i>新增</span>
     </li>`;
     popper.apendChild(el);
     el.onclick=()=>{
      vm.showShipTemplate(null,false)
      }
   })
  }
   
 }
  showShipTemplate(){
	let vm=this as any
	 vm.$showDialog({
      title:'新增来源选项',
      buttons:[{
       label:'确定',
       cssClass:'btn-primary',
       action:(dialogVNode,formDialog) =>{
          let form=formDialog.$refs.addform;
          let data=form.getDate()
          vm.sourceList.push({name:data,value:data})
          dialogVNode.close()
        } 
      },{
        label:'取消'action:(dialogVNode)=>{
         dialogVNode.clse();
      }
     }],
     vueOptions:{
      template:'<AddCheck ref="addform" @appendSource="appendFn" />'
      components:{
       AddCheck
     },
    }
    })
  }
</script>
举报

相关推荐

0 条评论