| 1 |
- import{o as e,t,p as l,w as a,v as s,R as u,Q as o,x as i,y as n,D as c,F as m,E as h,B as r,q as d,b3 as p,b4 as f}from"./index-P0fyQ2Em.js";import{_}from"./u-popup.CXrq2y3n.js";import{r as x}from"./uni-app.es.DOtS5Ldl.js";import{_ as y}from"./_plugin-vue_export-helper.BCo6x5W8.js";const v=y({emits:["update:modelValue","input","confirm","cancel"],props:{value:{type:Boolean,default:!1},modelValue:{type:Boolean,default:!1},list:{type:Array,default:()=>[]},border:{type:Boolean,default:!0},cancelColor:{type:String,default:"#606266"},confirmColor:{type:String,default:"#2979ff"},zIndex:{type:[String,Number],default:0},safeAreaInsetBottom:{type:Boolean,default:!1},maskCloseAble:{type:Boolean,default:!0},defaultValue:{type:Array,default:()=>[0]},mode:{type:String,default:"single-column"},valueName:{type:String,default:"value"},labelName:{type:String,default:"label"},childName:{type:String,default:"children"},title:{type:String,default:""},cancelText:{type:String,default:"取消"},confirmText:{type:String,default:"确认"},blur:{type:[Number,String],default:0}},data:()=>({keyPicker:+new Date,popupValue:!1,defaultSelector:[0],columnData:[],selectValue:[],lastSelectIndex:[],columnNum:0,moving:!1,reset:!1}),watch:{valueCom:{immediate:!0,handler(e){e&&(this.reset=!0,setTimeout((()=>this.init()),10)),this.popupValue=e}}},computed:{uZIndex(){return this.zIndex?this.zIndex:this.$u.zIndex.popup},valueCom(){return this.modelValue},showColumnCom:()=>!0},methods:{pickstart(){},pickend(){},init(){this.reset=!1,this.setColumnNum(),this.setDefaultSelector(),this.setColumnData(),this.setSelectValue()},setDefaultSelector(){this.defaultSelector=this.defaultValue.length==this.columnNum?this.defaultValue:Array(this.columnNum).fill(0),this.lastSelectIndex=this.$u.deepClone(this.defaultSelector),this.keyPicker=+new Date},setColumnNum(){if("single-column"==this.mode)this.columnNum=1;else if("mutil-column"==this.mode)this.columnNum=this.list.length;else if("mutil-column-auto"==this.mode){let e=1,t=this.list;for(;t[0][this.childName];)t=t[0]?t[0][this.childName]:{},e++;this.columnNum=e}},setColumnData(){let e=[];if(this.selectValue=[],"mutil-column-auto"==this.mode){let t=this.list[this.defaultSelector.length?this.defaultSelector[0]:0];for(let l=0;l<this.columnNum;l++)0==l?(e[l]=this.list,t=t[this.childName]):(e[l]=t,t=t[this.defaultSelector[l]][this.childName])}else"single-column"==this.mode?e[0]=this.list:e=this.list;this.columnData=e},setSelectValue(){let e=null;for(let t=0;t<this.columnNum;t++){e=this.columnData[t][this.defaultSelector[t]];let l={index:this.defaultSelector[t],value:e?e[this.valueName]:null,label:e?e[this.labelName]:null};e&&void 0!==e.extra&&(l.extra=e.extra),this.selectValue.push(l)}},columnChange(e){let t=null,l=e.detail.value;if(this.selectValue=[],"mutil-column-auto"==this.mode){this.lastSelectIndex.map(((e,a)=>{e!=l[a]&&(t=a)})),this.defaultSelector=l;for(let e=t+1;e<this.columnNum;e++)this.columnData[e]=this.columnData[e-1][e-1==t?l[t]:0][this.childName],this.defaultSelector[e]=0;l.map(((e,t)=>{let a=this.columnData[t][l[t]],s={index:l[t],value:a?a[this.valueName]:null,label:a?a[this.labelName]:null};a&&void 0!==a.extra&&(s.extra=a.extra),this.selectValue.push(s)})),this.lastSelectIndex=l}else if("single-column"==this.mode){let e=this.columnData[0][l[0]],t={index:l[0],value:e?e[this.valueName]:null,label:e?e[this.labelName]:null};e&&void 0!==e.extra&&(t.extra=e.extra),this.selectValue.push(t),this.lastSelectIndex=l}else"mutil-column"==this.mode&&(l.map(((e,t)=>{let a=this.columnData[t][l[t]],s={index:l[t],value:a?a[this.valueName]:null,label:a?a[this.labelName]:null};a&&void 0!==a.extra&&(s.extra=a.extra),this.selectValue.push(s)})),this.lastSelectIndex=l)},close(){this.$emit("input",!1),this.$emit("update:modelValue",!1)},getResult(e=null){e&&this.$emit(e,this.selectValue),this.close()},selectHandler(){this.$emit("click")}}},[["render",function(y,v,S,b,N,g){const C=d,k=p,V=f,I=x(e("u-popup"),_);return t(),l(C,{class:"u-select"},{default:a((()=>[s(I,{blur:S.blur,maskCloseAble:S.maskCloseAble,mode:"bottom",popup:!1,modelValue:N.popupValue,"onUpdate:modelValue":v[4]||(v[4]=e=>N.popupValue=e),length:"auto",safeAreaInsetBottom:S.safeAreaInsetBottom,onClose:g.close,"z-index":g.uZIndex},{default:a((()=>[s(C,{class:"u-select"},{default:a((()=>[s(C,{class:"u-select__header",onTouchmove:v[3]||(v[3]=u((()=>{}),["stop","prevent"]))},{default:a((()=>[s(C,{class:"u-select__header__cancel u-select__header__btn",style:o({color:S.cancelColor}),"hover-class":"u-hover-class","hover-stay-time":150,onClick:v[0]||(v[0]=e=>g.getResult("cancel"))},{default:a((()=>[i(n(S.cancelText),1)])),_:1},8,["style"]),s(C,{class:"u-select__header__title"},{default:a((()=>[i(n(S.title),1)])),_:1}),s(C,{class:"u-select__header__confirm u-select__header__btn",style:o({color:N.moving?S.cancelColor:S.confirmColor}),"hover-class":"u-hover-class","hover-stay-time":150,onTouchmove:v[1]||(v[1]=u((()=>{}),["stop"])),onClick:v[2]||(v[2]=u((e=>g.getResult("confirm")),["stop"]))},{default:a((()=>[i(n(S.confirmText),1)])),_:1},8,["style"])])),_:1}),s(C,{class:"u-select__body"},{default:a((()=>[(t(),l(V,{onChange:g.columnChange,class:"u-select__body__picker-view",value:N.defaultSelector,onPickstart:g.pickstart,onPickend:g.pickend,key:N.keyPicker},{default:a((()=>[g.showColumnCom?(t(!0),c(m,{key:0},h(N.columnData,((e,u)=>(t(),l(k,{key:u},{default:a((()=>[(t(!0),c(m,null,h(e,((e,u)=>(t(),l(C,{class:"u-select__body__picker-view__item",key:u},{default:a((()=>[s(C,{class:"u-line-1"},{default:a((()=>[i(n(e[S.labelName]),1)])),_:2},1024)])),_:2},1024)))),128))])),_:2},1024)))),128)):r("",!0)])),_:1},8,["onChange","value","onPickstart","onPickend"]))])),_:1})])),_:1})])),_:1},8,["blur","maskCloseAble","modelValue","safeAreaInsetBottom","onClose","z-index"])])),_:1})}],["__scopeId","data-v-de5b97c3"]]);export{v as _};
|