EASYAIuniappNewUI/dist/build/mp-weixin/components/firstui/fui-picker/fui-picker.js
2025-02-16 11:40:12 +08:00

2 lines
9.3 KiB
JavaScript

"use strict";const t=require("../../../common/vendor.js"),e={name:"fui-picker",emits:["change","cancel"],props:{options:{type:Array,default:()=>[]},layer:{type:[Number,String],default:1},show:{type:Boolean,default:!1},value:{type:[Array,String,Number],default:()=>[]},linkage:{type:Boolean,default:!1},fields:{type:Array,default:()=>["text","value","children"]},radius:{type:Boolean,default:!1},height:{type:[Number,String],default:520},size:{type:[Number,String],default:16},color:{type:String,default:""},title:{type:String,default:""},titleSize:{type:[Number,String],default:28},titleColor:{type:String,default:""},confirmText:{type:String,default:"确定"},confirmColor:{type:String,default:""},cancelText:{type:String,default:"取消"},cancelColor:{type:String,default:""},btnSize:{type:[Number,String],default:32},background:{type:String,default:""},theme:{type:String,default:"light"},maskClosable:{type:Boolean,default:!0},maskBackground:{type:String,default:"rgba(0,0,0,.6)"},zIndex:{type:[Number,String],default:996},isClose:{type:Boolean,default:!0},param:{type:[Number,String],default:0}},created(){this.initialize(),this.isShow=this.show},computed:{cancelStyl(){let t=`fontSize:${this.btnSize}rpx;`;return this.cancelColor&&(t+=`color:${this.cancelColor};`),t},confrimStyl(){let t=`font-size:${this.btnSize}rpx;`,e=this.confirmColor;return e&&(t+=`color:${e};`),t},titleStyl(){let t=`font-size:${this.titleSize}rpx;`;return this.titleColor&&(t+=`color:${this.titleColor};`),t},contentStyl(){let t=`font-size:${this.size}px;`;return this.color&&(t+=`color:${this.color};`),t},headerStyl(){let t="";return this.background&&(t+=`background:${this.background};`),t},maskStyl(){return`background:${this.maskBackground};z-index:${Number(this.zIndex-10)};`}},watch:{layer(t){this.reset()},value(t){t&&this.setDefaultOptions()},options(t){setTimeout((()=>{this.initialize()}),50)},fields(t){setTimeout((()=>{this.initialize()}),50)},isShow:{handler(t){t&&(this.isInitShow=!0)},immediate:!0},show(t){this.isShow=t}},data:()=>({immediate:!0,firstArr:[],secondArr:[],thirdArr:[],fourthArr:[],vals:[],nvueVals:[],darkStyle:"background-image: -webkit-linear-gradient(top, rgba(35, 35, 35, .95), rgba(35, 35, 35, .6)), -webkit-linear-gradient(bottom, rgba(35, 35, 35, .95), rgba(35, 35, 35, .6));",indicatorStyl:"border-color: #333;height: 44px;",darkBottomStyle:"",tKey:"text",vKey:"value",cKey:"children",isEnd:!0,isShow:!1,isInitShow:!1}),methods:{initialize(){this.linkage?(this.getFields(this.fields),this.setLayerData(-1,0,0,0)):this.initData(),this.$nextTick((()=>{setTimeout((()=>{this.setDefaultOptions()}),50)}))},getFields(t){t&&0!==t.length&&(this.tKey=t[0]||"text",this.vKey=t[1]||"value",this.cKey=t[2]||"children")},btnCancel(t){this.isShow=!1,this.$emit("cancel",{param:this.param})},maskClick(t){this.maskClosable&&this.btnCancel(t)},getValue(t=1){let e=this.vals,i={};if(this.linkage){let s=this.options;const r=this.cKey;1==t?i=s[e[0]]:2==t?s[e[0]][r]&&(i=s[e[0]][r][e[1]]):3==t?s[e[0]][r]&&s[e[0]][r][e[1]][r]&&(i=s[e[0]][r][e[1]][r][e[2]]):s[e[0]][r]&&s[e[0]][r][e[1]][r]&&s[e[0]][r][e[1]][r][e[2]][r]&&(i=s[e[0]][r][e[1]][r][e[2]][r][e[3]])}else i=1==t?this.firstArr[e[0]]||"":2==t?this.secondArr[e[1]]||"":3==t?this.thirdArr[e[2]]||"":this.fourthArr[e[3]]||"";return i},checkChildrenData(t,e,i,s,r){let a=[];const h=this.cKey;return 1==e?t[i]&&(a=t[i][h]||[]):2==e?t[i]&&t[i][h]&&t[i][h][s]&&(a=t[i][h][s][h]||[]):t[i]&&t[i][h]&&t[i][h][s]&&t[i][h][s][h]&&t[i][h][s][h][r]&&(a=t[i][h][s][h][r][h]||[]),a},handleData(t,e){e=e||this.tKey;let i=[];if(t&&t.length>0)for(let s of t)i.push(s[e]);return i},initData(){let t=this.options;if(!t||0===t.length)return this.firstArr=[],this.secondArr=[],this.thirdArr=[],void(this.fourthArr=[]);1!=this.layer||Array.isArray(t[0])?this.firstArr=t[0]:this.firstArr=t,2==this.layer?this.secondArr=t[1]:3==this.layer?(this.secondArr=t[1],this.thirdArr=t[2]):4==this.layer&&(this.secondArr=t[1],this.thirdArr=t[2],this.fourthArr=t[3])},setLayerData(t,e,i,s){let r=this.options;if(!r||0===r.length)return this.firstArr=[],this.secondArr=[],this.thirdArr=[],void(this.fourthArr=[]);1==this.layer?this.firstArr=this.handleData(r):2==this.layer?(-1==t&&(this.firstArr=this.handleData(r)),this.secondArr=this.handleData(this.checkChildrenData(r,1,e))):3==this.layer?(-1==t&&(this.firstArr=this.handleData(r)),1!=t&&-1!=t||(this.secondArr=this.handleData(this.checkChildrenData(r,1,e))),this.thirdArr=this.handleData(this.checkChildrenData(r,2,e,i))):(-1==t&&(this.firstArr=this.handleData(r)),1!=t&&-1!=t||(this.secondArr=this.handleData(this.checkChildrenData(r,1,e))),1!=t&&-1!=t&&2!=t||(this.thirdArr=this.handleData(this.checkChildrenData(r,2,e,i))),this.fourthArr=this.handleData(this.checkChildrenData(r,3,e,i,s)))},reset(){const t=[[0],[0,0],[0,0,0],[0,0,0,0]][Number(this.layer)-1];this.vals=[...t]},open(){this.isShow=!0},close(){this.isShow=!1},setDefaultOptions(){let t=this.value;1!=this.layer||Array.isArray(t)||(t=t?[t]:[]);let e=[],i=this.firstArr;const s=t.length,r=i.indexOf(t[0]);if(s>0&&-1!==r){e.push(r);for(let i=1;i<s;i++)1===i?(this.linkage&&(this.secondArr=this.handleData(this.checkChildrenData(this.options,1,e[0]))),e.push(this.secondArr.indexOf(t[i]))):2===i?(this.linkage&&(this.thirdArr=this.handleData(this.checkChildrenData(this.options,2,e[0],e[1]))),e.push(this.thirdArr.indexOf(t[i]))):(this.linkage&&(this.fourthArr=this.handleData(this.checkChildrenData(this.options,3,e[0],e[1],e[2]))),e.push(this.fourthArr.indexOf(t[i])));if(this.vals.join("")===e.join(""))return;this.vals=[],this.$nextTick((()=>{setTimeout((()=>{this.vals=[...e]}),200)}))}else this.vals=[],this.$nextTick((()=>{setTimeout((()=>{this.reset()}),200)}))},setOneLayers(t){this.vals[0]!=t[0]&&(this.vals=t)},setTwoLayers(t){this.vals[0]!=t[0]?(this.setLayerData(0,t[0]),this.vals=[t[0],0]):this.vals=t},setThreeLayers(t){this.vals[0]!=t[0]?(this.setLayerData(1,t[0],0),this.vals=[t[0],0,0]):this.vals[1]!=t[1]?(this.setLayerData(0,t[0],t[1]),this.vals=[t[0],t[1],0]):this.vals=t},setFourLayers(t){this.vals[0]!=t[0]?(this.setLayerData(1,t[0],0,0),this.vals=[t[0],0,0,0]):this.vals[1]!=t[1]?(this.setLayerData(2,t[0],t[1],0),this.vals=[t[0],t[1],0,0]):this.vals[2]!=t[2]?(this.setLayerData(0,t[0],t[1],t[2]),this.vals=[t[0],t[1],t[2],0]):this.vals=t},emitChange(){let t=[],e=[],i="";if(this.options.length>0)if(1==this.layer){const s=this.getValue();this.linkage?(t=s[this.tKey],e=s[this.vKey]):(t=s,e=s),i=t}else if(2==this.layer){const s=this.getValue(),r=this.getValue(2);this.linkage?(t=[s[this.tKey],r[this.tKey]||""],e=[s[this.vKey],r[this.vKey]||""]):(t=[s,r||""],e=[s,r||""]),i=t.join("")}else if(3==this.layer){const s=this.getValue(),r=this.getValue(2),a=this.getValue(3);this.linkage?(t=[s[this.tKey],r[this.tKey]||"",a[this.tKey]||""],e=[s[this.vKey],r[this.vKey]||"",a[this.vKey]||""]):(t=[s,r||"",a||""],e=[s,r||"",a||""]),i=t.join("")}else{const s=this.getValue(),r=this.getValue(2),a=this.getValue(3),h=this.getValue(4);this.linkage?(t=[s[this.tKey],r[this.tKey]||"",a[this.tKey]||"",h[this.tKey]||""],e=[s[this.vKey],r[this.vKey]||"",a[this.vKey]||"",h[this.vKey]||""]):(t=[s,r||"",a||"",h||""],e=[s,r||"",a||"",h||""]),i=t.join("")}this.$emit("change",{text:t,value:e,index:this.vals,result:i,param:this.param})},waitForTrigger(t=0){this.isEnd?this.emitChange():(++t>=20&&(this.isEnd=!0),setTimeout((()=>{this.waitForTrigger(t)}),50))},btnConfirm(t){setTimeout((()=>{this.isClose&&(this.isShow=!1),this.waitForTrigger()}),50)},pickerChange(t){let e=t.detail.value;this.isInitShow&&e.length==this.layer&&(this.linkage?1==this.layer?this.setOneLayers(e):2==this.layer?this.setTwoLayers(e):3==this.layer?this.setThreeLayers(e):this.setFourLayers(e):this.vals=e,this.isEnd=!0)},pickerstart(){this.isEnd=!1},stop(t){}}};const i=t._export_sfc(e,[["render",function(e,i,s,r,a,h){return t.e({a:t.o(((...t)=>h.stop&&h.stop(...t))),b:a.isShow?1:"",c:t.s(h.maskStyl),d:t.o(((...t)=>h.maskClick&&h.maskClick(...t))),e:t.t(s.cancelText),f:t.n("dark"===s.theme?"fui-pk__cancel-color_dark":"fui-pk__cancel-color"),g:t.s(h.cancelStyl),h:t.o(((...t)=>h.btnCancel&&h.btnCancel(...t))),i:t.t(s.title),j:t.n("dark"===s.theme?"fui-pk__title-color_dark":"fui-pk__title-color"),k:t.s(h.titleStyl),l:t.t(s.confirmText),m:s.confirmColor&&!0!==s.confirmColor?"":1,n:t.s(h.confrimStyl),o:t.o(((...t)=>h.btnConfirm&&h.btnConfirm(...t))),p:"dark"===s.theme?1:"",q:s.radius?1:"",r:t.s(h.headerStyl),s:t.f(a.firstArr,((e,i,s)=>({a:t.t(e),b:i}))),t:t.s(h.contentStyl),v:"dark"===s.theme?1:"",w:2==s.layer||3==s.layer||4==s.layer},2==s.layer||3==s.layer||4==s.layer?{x:t.f(a.secondArr,((e,i,s)=>({a:t.t(e),b:i}))),y:t.s(h.contentStyl),z:"dark"===s.theme?1:""}:{},{A:3==s.layer||4==s.layer},3==s.layer||4==s.layer?{B:t.f(a.thirdArr,((e,i,s)=>({a:t.t(e),b:i}))),C:t.s(h.contentStyl),D:"dark"===s.theme?1:""}:{},{E:4==s.layer},4==s.layer?{F:t.f(a.fourthArr,((e,i,s)=>({a:t.t(e),b:i}))),G:t.s(h.contentStyl),H:"dark"===s.theme?1:""}:{},{I:"dark"===s.theme?a.darkStyle:"",J:"dark"===s.theme?a.darkBottomStyle:"",K:"dark"===s.theme?a.darkStyle:"",L:"dark"===s.theme?a.indicatorStyl:"height: 44px;border-top-width:0.5px;border-bottom-width:0.5px;",M:"dark"===s.theme?"fui-picker__indicator":"",N:s.height+"rpx",O:s.theme+s.layer,P:a.vals,Q:a.immediate,R:t.o(((...t)=>h.pickerChange&&h.pickerChange(...t))),S:t.o(((...t)=>h.pickerstart&&h.pickerstart(...t))),T:s.theme,U:"dark"===s.theme?1:"",V:a.isShow?1:"",W:s.radius?1:"",X:s.zIndex,Y:t.o(((...t)=>h.stop&&h.stop(...t)))})}],["__scopeId","data-v-5cdbf017"]]);wx.createComponent(i);