微信小程序 图文混编 重写picker组件

效果图:

微信小程序 图文混编 重写picker组件显示控件  点击弹出 picker选择

微信小程序 图文混编 重写picker组件弹出选择界面 选择回显

微信小程序 图文混编 重写picker组件回显,再次点击弹出界面并标识褚显示哪一个

微信小程序 图文混编 重写picker组件

<view class="userdata" bindtap='showModel'>
<view class="userdata-name">领维</view>
<view class="userdata-symbol"></view>
<text class="userdata-input">{{goodsInfoIndexName}}</text>
<image class='img-picker' src='{{goodsInfo[goodsInfoIndex].image}}'></image>
</view>

<!-- 遮罩层 -->
<view class="goods-detail" hidden="{{isShowSelectInfo}}">
<view class="mask"></view>
<view class="goodsdetail">
<view class="dialogtip">
<text class="tipview">请您选择</text>
</view>
<radio-group bindchange="radioChangeNeck">
<view wx:for="{{goodsInfo}}">
<view class="radio-group" data-name="{{index}}" bindtap='radioChangeNeckBind'>
<view class='radio-rad'>
<radio value="{{item.radioValue}}" checked='{{index == goodsInfoIndex?true:false}}'/>
</view>
<view class='radio-pic'>
<image src="{{item.image}}"></image>
<!-- <image src="../../assets/images/wrongdel.png"></image> -->
</view>
<view class='radio-title'>
<text>{{item.title}}</text>
</view>
</view>
<view class='radioLine'></view>
</view>
</radio-group>
</view>
</view>

Page({
data: {
goodsInfoIndexName: '请您选择',
isShowSelectInfo: true, //遮罩层是否显示
goodsInfo: [ //遮罩层样式
{ image: '../../assets/images/neck0.png', title: '温莎领也叫敞角领,左右领构成的角度在120度~180度之间。是偏正式而优雅的风格,适用于各种正式、半正式风格。', radioValue: '0', radioName: '单扣大开领'}, //单扣大开领
{ image: '../../assets/images/neck1.png', title: '超大的开角,配以宽大的领结,味道与众不同。本身带有老派绅士的气质。', radioValue: '1', radioName: '单扣一字领'},//单扣一字领
{ image: '../../assets/images/neck2.png', title: '单扣小方领和标准领类似,两片衬衫领的角度适中,只是领子宽度较窄,这就属于时尚风格,适合年轻人,特别是学生穿着。', radioValue: '2', radioName: '单扣小方领'},//单扣小方领
{ image: '../../assets/images/neck3.png', title: '圆角领也是一种个性十足的领子。也可以叫伊顿领,源自伊顿公学的校服,也有浓厚的学院风。', radioValue: '3', radioName: '单扣圆领'},//单扣圆领
{ image: '../../assets/images/neck4.png', title: '立领是只有领座没有翻领的领型,它不在西装体系内,款式也有局限,几乎只能作休闲穿。', radioValue: '4', radioName: '立领'},//立领
{ image: '../../assets/images/neck5.png', title: '迷你小方领和标准领类似,两片衬衫领的角度适中,只是领子宽度较窄,这就属于时尚风格,适合年轻人,特别是学生穿着。', radioValue: '5', radioName: '迷你小方领'},//迷你小方领
]
},
radioChangeNeck: function (e) { // 单选按钮点击样式
var that = this
console.log('radio发生change事件,携带value值为:', e.detail.value)
that.setData({
isShowSelectInfo: true,
goodsInfoIndex: e.detail.value,
goodsInfoIndexName: that.data.goodsInfo[e.detail.value].radioName,
})
},
radioChangeNeckBind:function(e){
var that = this
console.log('radio发生change事件,携带value值为:', e.currentTarget.dataset.name)
that.setData({
isShowSelectInfo: true,
goodsInfoIndex: e.currentTarget.dataset.name,
goodsInfoIndexName: that.data.goodsInfo[e.currentTarget.dataset.name].radioName,
})
}
})

.userdata { /*下部分四个输入框*/
margin: 10rpx 0rpx 0rpx 0rpx;
border: 1rpx solid #6c6c6c;
width: 90%;
display: flex;
flex-direction: row;
border-radius: 10rpx;
align-items: center;
background-color: #fff
}
.userdata-name {
width: 110rpx;
padding: 20rpx 0rpx 20rpx 20rpx;
}
.userdata-symbol:after { /*第一个箭头*/
content: "";
display: inline-block;
width: 40rpx;
height: 40rpx;
margin: 15rpx 0rpx 10rpx 0rpx;
border-left: 1rpx solid #6c6c6c;
}
.userdata-input { /*后面三个箭头*/
width: 380rpx;
}
.img-picker {
width: 80rpx;
height: 80rpx;
}
.goods-detail .mask { /* 遮罩层 */
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: 999999;
}
.goods-detail .mask {
background: rgba(0, 0, 0, 0.7);
}
.goodsdetail {
position: fixed;
bottom: 0%;
width: 100%;
left: 0%;
margin-top: -50%;
background: #fff;
z-index: 99999999999999;
overflow: hidden;
}
.dialogtip { /* 顶部提示信息 */
margin-top: 20rpx;
margin-left: 20%;
}
.tipview {
font-size: 26rpx;
color: #e60012;
}
.radio-group { /* 遮罩层单选按钮 */
margin: 0rpx 2% 0rpx 2%;
display: flex;
}
.radio-rad {
width: 60rpx;
height: 125rpx;
text-align: center;
line-height: 125rpx;
}
.radio-pic {
width: 125rpx;
height: 125rpx;
}
.radio-pic image {
width: 100%;
height: 100%;
}
.radio-title {
display: flex;
width: 500rpx;
height: 125rpx;
}
.radio-title text {
margin-left: 20rpx;
color: #000;
font-size: 24rpx;
}
.radioLine {
display: block;
width: 100%;
border-bottom: 1rpx solid #f1f1f1;
}