Commit c338b4909b35f1ad5bad2844fc5ede34bbd12fa8
Exists in
master
完善页面跳转逻辑
Showing
9 changed files
Show diff stats
src/components/CommodityCard/CommodityCard.vue
1 | 1 | <template> |
2 | - <view class="card" @tap="toGoods(goods.id)"> | |
3 | - <image mode="widthFix" :src="goods.imgurl" ></image> | |
2 | + <view class="card" @tap="toGoods(goods.goods_id)"> | |
3 | + <image mode="widthFix" :src="goods.img" ></image> | |
4 | 4 | <view class="name">{{goods.name}}</view> |
5 | 5 | <view class="info"> |
6 | 6 | <view class="priceBox"> |
7 | - <view class="price">{{goods.rsSon.Min_Price}}</view> | |
8 | - <view class="originCost"> | |
9 | - {{Math.round(goods.rsSon.Min_Price / goods.rsSon.discount * 100)}} | |
10 | - <!-- {{goods.oldPrice}} --> | |
7 | + <view class="price">{{goods.price}}</view> | |
8 | + <view class="originCost"> | |
9 | + {{goods.originCost}} | |
11 | 10 | </view> |
12 | 11 | </view> |
13 | - <view class="slogan">{{goods.trade_num}}</view> | |
12 | + <view class="slogan">{{goods.slogan}}</view> | |
14 | 13 | </view> |
15 | 14 | </view> |
16 | 15 | </template> |
... | ... | @@ -22,16 +21,17 @@ |
22 | 21 | * 商品数据 |
23 | 22 | */ |
24 | 23 | goods: { |
25 | - id: Number, | |
26 | - imgurl: String, | |
24 | + goods_id: Number, | |
25 | + img: String, | |
27 | 26 | name: String, |
28 | - oldPrice:String, | |
27 | + originCost:String, | |
29 | 28 | price: String, |
30 | - memo:String | |
29 | + slogan:String | |
31 | 30 | } |
32 | 31 | |
33 | 32 | }, |
34 | 33 | created() { |
34 | + console.log(this.goods) | |
35 | 35 | }, |
36 | 36 | data() { |
37 | 37 | return { | ... | ... |
src/components/UniCountdown/UniCountdown.vue
... | ... | @@ -0,0 +1,190 @@ |
1 | +<template> | |
2 | + <view class="uni-countdown"> | |
3 | + <text v-if="showDay" :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ d }}</text> | |
4 | + <text v-if="showDay" :style="{ color: splitorColor }" class="uni-countdown__splitor">天</text> | |
5 | + <text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ h }}</text> | |
6 | + <text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '时' }}</text> | |
7 | + <text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ i }}</text> | |
8 | + <text :style="{ color: splitorColor }" class="uni-countdown__splitor">{{ showColon ? ':' : '分' }}</text> | |
9 | + <text :style="{ borderColor: borderColor, color: color, backgroundColor: backgroundColor }" class="uni-countdown__number">{{ s }}</text> | |
10 | + <text v-if="!showColon" :style="{ color: splitorColor }" class="uni-countdown__splitor">秒</text> | |
11 | + </view> | |
12 | +</template> | |
13 | +<script> | |
14 | + export default { | |
15 | + name: 'UniCountdown', | |
16 | + props: { | |
17 | + | |
18 | + showDay: { | |
19 | + type: Boolean, | |
20 | + default: true | |
21 | + }, | |
22 | + showColon: { | |
23 | + type: Boolean, | |
24 | + default: true | |
25 | + }, | |
26 | + backgroundColor: { | |
27 | + type: String, | |
28 | + default: '#FFFFFF' | |
29 | + }, | |
30 | + borderColor: { | |
31 | + type: String, | |
32 | + default: '#000000' | |
33 | + }, | |
34 | + color: { | |
35 | + type: String, | |
36 | + default: '#000000' | |
37 | + }, | |
38 | + splitorColor: { | |
39 | + type: String, | |
40 | + default: '#000000' | |
41 | + }, | |
42 | + day: { | |
43 | + type: Number, | |
44 | + default: 0 | |
45 | + }, | |
46 | + hour: { | |
47 | + type: Number, | |
48 | + default: 0 | |
49 | + }, | |
50 | + minute: { | |
51 | + type: Number, | |
52 | + default: 0 | |
53 | + }, | |
54 | + second: { | |
55 | + type: Number, | |
56 | + default: 0 | |
57 | + } | |
58 | + }, | |
59 | + data() { | |
60 | + return { | |
61 | + timer: null, | |
62 | + syncFlag: false, | |
63 | + d: '00', | |
64 | + h: '00', | |
65 | + i: '00', | |
66 | + s: '00', | |
67 | + leftTime: 0, | |
68 | + seconds: 0 | |
69 | + } | |
70 | + }, | |
71 | + watch: { | |
72 | + day(val) { | |
73 | + this.changeFlag() | |
74 | + }, | |
75 | + hour(val) { | |
76 | + this.changeFlag() | |
77 | + }, | |
78 | + minute(val) { | |
79 | + this.changeFlag() | |
80 | + }, | |
81 | + second(val) { | |
82 | + this.changeFlag() | |
83 | + } | |
84 | + }, | |
85 | + created: function(e) { | |
86 | + this.startData(); | |
87 | + }, | |
88 | + beforeDestroy() { | |
89 | + clearInterval(this.timer) | |
90 | + }, | |
91 | + methods: { | |
92 | + toSeconds(day, hours, minutes, seconds) { | |
93 | + return day * 60 * 60 * 24 + hours * 60 * 60 + minutes * 60 + seconds | |
94 | + }, | |
95 | + timeUp() { | |
96 | + clearInterval(this.timer) | |
97 | + this.$emit('timeup') | |
98 | + }, | |
99 | + countDown() { | |
100 | + let seconds = this.seconds | |
101 | + let [day, hour, minute, second] = [0, 0, 0, 0] | |
102 | + if (seconds > 0) { | |
103 | + day = Math.floor(seconds / (60 * 60 * 24)) | |
104 | + hour = Math.floor(seconds / (60 * 60)) - (day * 24) | |
105 | + minute = Math.floor(seconds / 60) - (day * 24 * 60) - (hour * 60) | |
106 | + second = Math.floor(seconds) - (day * 24 * 60 * 60) - (hour * 60 * 60) - (minute * 60) | |
107 | + } else { | |
108 | + this.timeUp() | |
109 | + } | |
110 | + if (day < 10) { | |
111 | + day = '0' + day | |
112 | + } | |
113 | + if (hour < 10) { | |
114 | + hour = '0' + hour | |
115 | + } | |
116 | + if (minute < 10) { | |
117 | + minute = '0' + minute | |
118 | + } | |
119 | + if (second < 10) { | |
120 | + second = '0' + second | |
121 | + } | |
122 | + this.d = day | |
123 | + this.h = hour | |
124 | + this.i = minute | |
125 | + this.s = second | |
126 | + }, | |
127 | + startData() { | |
128 | + this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second) | |
129 | + if (this.seconds <= 0) { | |
130 | + return | |
131 | + } | |
132 | + this.countDown() | |
133 | + this.timer = setInterval(() => { | |
134 | + this.seconds-- | |
135 | + if (this.seconds < 0) { | |
136 | + this.timeUp() | |
137 | + return | |
138 | + } | |
139 | + this.countDown() | |
140 | + }, 1000) | |
141 | + }, | |
142 | + changeFlag() { | |
143 | + if (!this.syncFlag) { | |
144 | + this.seconds = this.toSeconds(this.day, this.hour, this.minute, this.second) | |
145 | + this.startData(); | |
146 | + this.syncFlag = true; | |
147 | + } | |
148 | + clearInterval(this.timer) | |
149 | + } | |
150 | + } | |
151 | + } | |
152 | +</script> | |
153 | +<style lang="scss" scoped> | |
154 | + @import '~@/uni.scss'; | |
155 | + $countdown-height: 48rpx; | |
156 | + $countdown-width: 52rpx; | |
157 | + | |
158 | + .uni-countdown { | |
159 | + /* #ifndef APP-NVUE */ | |
160 | + display: flex; | |
161 | + /* #endif */ | |
162 | + flex-direction: row; | |
163 | + justify-content: flex-start; | |
164 | + padding: 2rpx 0; | |
165 | + } | |
166 | + | |
167 | + .uni-countdown__splitor { | |
168 | + /* #ifndef APP-NVUE */ | |
169 | + display: flex; | |
170 | + /* #endif */ | |
171 | + justify-content: center; | |
172 | + line-height: $countdown-height; | |
173 | + padding: 5rpx; | |
174 | + font-size: 18px; | |
175 | + } | |
176 | + | |
177 | + .uni-countdown__number { | |
178 | + /* #ifndef APP-NVUE */ | |
179 | + display: flex; | |
180 | + /* #endif */ | |
181 | + justify-content: center; | |
182 | + align-items: center; | |
183 | + width: $countdown-width; | |
184 | + height: $countdown-height; | |
185 | + line-height: $countdown-height; | |
186 | + margin: 5rpx; | |
187 | + text-align: center; | |
188 | + font-size: 18px; | |
189 | + } | |
190 | +</style> | ... | ... |
src/pages.json
... | ... | @@ -68,10 +68,22 @@ |
68 | 68 | "path": "pages/predelivery/predelivery" |
69 | 69 | }, |
70 | 70 | { |
71 | - "path": "pages/customerService/customerService" | |
71 | + "path": "pages/customerService/customerService", | |
72 | + "style":{ | |
73 | + "navigationBarTitleText" : "在线客服" | |
74 | + } | |
72 | 75 | }, |
73 | 76 | { |
74 | - "path": "pages/myOrderPaying/myOrderPaying" | |
77 | + "path": "pages/myOrderPaying/myOrderPaying", | |
78 | + "style":{ | |
79 | + "navigationBarTitleText" : "我的订单" | |
80 | + } | |
81 | + }, | |
82 | + { | |
83 | + "path": "pages/detailsChoiceArgs/detailsChoiceArgs", | |
84 | + "style":{ | |
85 | + "navigationBarTitleText" : "镜片名称名称" | |
86 | + } | |
75 | 87 | }, |
76 | 88 | { |
77 | 89 | "path" : "pages/detailStandard/detailStandard_sun", |
... | ... | @@ -117,5 +129,15 @@ |
117 | 129 | "text": "我的" |
118 | 130 | } |
119 | 131 | ] |
132 | + }, | |
133 | + "condition" : { //模式配置,仅开发期间生效 | |
134 | + "current": 0, //当前激活的模式(list 的索引项) | |
135 | + "list": [ | |
136 | + { | |
137 | + "name": "", //模式名称 | |
138 | + "path": "", //启动页面,必选 | |
139 | + "query": "" //启动参数,在页面的onLoad函数里面得到 | |
140 | + } | |
141 | + ] | |
120 | 142 | } |
121 | 143 | } | ... | ... |
src/pages/cart/cart.vue
1 | 1 | <template> |
2 | 2 | <view class="content"> |
3 | - <checkbox-group name=""> | |
4 | - <label> | |
5 | - <view class="card"> | |
6 | - <view class="cardHeader"> | |
7 | - <checkbox color="#FF6B4A" :value="totalPrice" style="transform:scale(0.7)"/> | |
8 | - <image src="../../static/customerService-btn.png" mode="aspectFill"></image> | |
9 | - <text>非常戴镜</text> | |
3 | + | |
4 | + <view class="card"> | |
5 | + <view class="cardHeader"> | |
6 | + <!-- <MyCheckbox :isOpenProp="controlCheck.partent" ></MyCheckbox> --> | |
7 | + <block v-if="pIsoPen"> | |
8 | + <view class="partentChecked" @click="pChange(pIsoPen)"> | |
9 | + <span class="status correct"></span> | |
10 | 10 | </view> |
11 | - <view class="cardBody"> | |
12 | - <checkbox color="#FF6B4A" :value="totalPrice" style="transform:scale(0.7)" /> | |
13 | - <view class="goodInfo"> | |
14 | - <view class="imageWrap"> | |
15 | - <image src="../../static/img/detail/d1.png" mode="aspectFill" style="width: 188rpx;height: 168rpx;"></image> | |
16 | - </view> | |
17 | - <view class="infoRight"> | |
18 | - <text class="goodName">商品名称商品名称商品名称名称名称商品名称名商品名称名</text> | |
19 | - <view class="describ"><text>支持7天无理由退货 顺丰发货支持7天无理由退货 顺丰发货支持7天无理由退货 顺丰发货</text> | |
20 | - <!-- <text class="icon">></text> --> | |
21 | - </view> | |
22 | - <view class="priceBox"> | |
23 | - <view class="price">¥198</view> | |
24 | - <text>(限购{{maxCount}}副)</text> | |
25 | - <view class="counter"> | |
26 | - <view class="btn" disabled="this.addDisabled" type="default" @click="counter(false)">-</view> | |
27 | - <text>{{count}}</text> | |
28 | - <view class="btn" disabled="this.desDisabled" type="default" @click="counter(true)">+</view> | |
29 | - </view> | |
30 | - </view> | |
11 | + </block> | |
12 | + <block v-else> | |
13 | + <view class="partentCheck" @click="pChange(pIsoPen)"></view> | |
14 | + </block> | |
15 | + <image src="../../static/store.png" mode="aspectFill"></image> | |
16 | + <text>非常戴镜</text> | |
17 | + </view> | |
18 | + | |
19 | + <view class="cardBody"> | |
20 | + <!-- <MyCheckbox :isOpenProp="controlCheck.child1"></MyCheckbox> --> | |
21 | + <template v-if="childIsOpen.child1"> | |
22 | + <view class="partentChecked" @click="cChange(childIsOpen.child1,'child1')"> | |
23 | + <span class="status correct"></span> | |
24 | + </view> | |
25 | + </template> | |
26 | + <template v-else> | |
27 | + <view class="partentCheck" @click="cChange(childIsOpen.child1,'child1')"></view> | |
28 | + </template> | |
29 | + <view class="goodInfo"> | |
30 | + <view class="imageWrap"> | |
31 | + <image src="../../static/img/detail/d1.png" mode="aspectFill" style="width: 188rpx;height: 168rpx;"></image> | |
32 | + </view> | |
33 | + <view class="infoRight"> | |
34 | + <text class="goodName">眼镜名称眼镜名称眼镜名称眼镜名称</text> | |
35 | + <view class="describ"><text>颜色 玫瑰金 /材质 钛合金 / 功能 防日光 / 配件 免费送 /折射 … </text> | |
36 | + <!-- <text class="icon">></text> --> | |
37 | + </view> | |
38 | + <view class="priceBox"> | |
39 | + <view class="price">¥{{198*this.count}}</view> | |
40 | + <text>(限购{{maxCount}}副)</text> | |
41 | + <view class="counter"> | |
42 | + <view class="btn" disabled="this.addDisabled" type="default" @click="counter(false)">-</view> | |
43 | + <text>{{count}}</text> | |
44 | + <view class="btn" disabled="this.desDisabled" type="default" @click="counter(true)">+</view> | |
31 | 45 | </view> |
32 | 46 | </view> |
33 | 47 | </view> |
34 | 48 | </view> |
35 | - </label> | |
36 | - </checkbox-group> | |
37 | - | |
49 | + </view> | |
50 | + <view class="cardBody"> | |
51 | + <!-- <MyCheckbox :isOpenProp="controlCheck.child1"></MyCheckbox> --> | |
52 | + <template v-if="childIsOpen.child2"> | |
53 | + <view class="partentChecked" @click="cChange(childIsOpen.child2,'child2')"> | |
54 | + <span class="status correct"></span> | |
55 | + </view> | |
56 | + </template> | |
57 | + <template v-else> | |
58 | + <view class="partentCheck" @click="cChange(childIsOpen.child2,'child2')"></view> | |
59 | + </template> | |
60 | + <view class="goodInfo"> | |
61 | + <view class="imageWrap"> | |
62 | + <image src="../../static/img/detail/d1.png" mode="aspectFill" style="width: 188rpx;height: 168rpx;"></image> | |
63 | + </view> | |
64 | + <view class="infoRight"> | |
65 | + <text class="goodName">眼镜名称眼镜名称眼镜名称眼镜名称</text> | |
66 | + <view class="describ"><text>颜色 玫瑰金 /材质 钛合金 / 功能 防日光 / 配件 免费送 /折射 … </text> | |
67 | + <!-- <text class="icon">></text> --> | |
68 | + </view> | |
69 | + <view class="priceBox"> | |
70 | + <view class="price">¥{{198*this.count}}</view> | |
71 | + <text>(限购{{maxCount}}副)</text> | |
72 | + <view class="counter"> | |
73 | + <view class="btn" disabled="this.addDisabled" type="default" @click="counter(false)">-</view> | |
74 | + <text>{{count}}</text> | |
75 | + <view class="btn" disabled="this.desDisabled" type="default" @click="counter(true)">+</view> | |
76 | + </view> | |
77 | + </view> | |
78 | + </view> | |
79 | + </view> | |
80 | + </view> | |
81 | + </view> | |
38 | 82 | |
39 | 83 | <view class="footer"> |
40 | 84 | <view class="footerLeft">实付金额:<text>¥{{totalPrice}}</text></view> |
41 | 85 | <view class="footerRight"> |
42 | - <view class="paybtn">立即支付</view> | |
86 | + <navigator url="/pages/myOrderPaying/myOrderPaying" hover-class="navigator-hover"> | |
87 | + <view class="paybtn">立即支付</view> | |
88 | + </navigator> | |
43 | 89 | </view> |
44 | 90 | </view> |
91 | + | |
45 | 92 | </view> |
46 | 93 | </template> |
47 | 94 | |
48 | 95 | <script> |
49 | 96 | export default { |
97 | + | |
50 | 98 | data() { |
51 | 99 | return { |
52 | 100 | totalPrice: 360, |
53 | 101 | count:1, |
54 | 102 | maxCount:20, |
103 | + pIsoPen: false, | |
104 | + childIsOpen:{ | |
105 | + "child1":true, | |
106 | + "child2":true | |
107 | + }, | |
55 | 108 | } |
56 | 109 | }, |
57 | 110 | onLoad() { |
58 | 111 | |
59 | - }, | |
112 | + } | |
113 | + , | |
60 | 114 | methods: { |
61 | 115 | counter(isadd){ |
62 | 116 | if(isadd){ |
... | ... | @@ -65,6 +119,21 @@ |
65 | 119 | this.count <= 1? this.desDisabled = true:this.count--; |
66 | 120 | } |
67 | 121 | }, |
122 | + pChange(isopen){ | |
123 | + // console.log(isopen) | |
124 | + this.pIsoPen=!isopen | |
125 | + this.childIsOpen.child1=!isopen | |
126 | + this.childIsOpen.child2=!isopen | |
127 | + }, | |
128 | + cChange(isopen,child){ | |
129 | + // console.log(child) | |
130 | + if(child==='child1'){ | |
131 | + this.childIsOpen.child1=!isopen | |
132 | + } | |
133 | + if(child==='child2'){ | |
134 | + this.childIsOpen.child2=!isopen | |
135 | + } | |
136 | + } | |
68 | 137 | } |
69 | 138 | } |
70 | 139 | </script> |
... | ... | @@ -72,7 +141,7 @@ |
72 | 141 | <style lang="scss"> |
73 | 142 | .content { |
74 | 143 | min-height: 100vh; |
75 | - background-color: #F7F6F6; | |
144 | + background-color: #f2f2f2; | |
76 | 145 | display: flex; |
77 | 146 | flex-direction: column; |
78 | 147 | align-items: center; |
... | ... | @@ -80,6 +149,40 @@ |
80 | 149 | padding: 20rpx 40rpx; |
81 | 150 | box-sizing: border-box; |
82 | 151 | |
152 | + .partentCheck{ | |
153 | + width: 16px; | |
154 | + height: 16px; | |
155 | + border-radius: 18px; | |
156 | + border: 1px solid #CFCFCF; | |
157 | + background-color: #FFFFFF; | |
158 | + } | |
159 | + .partentChecked{ | |
160 | + width: 18px; | |
161 | + height: 18px; | |
162 | + border-radius: 18px; | |
163 | + background-color: #FF6B4A; | |
164 | + .correct { | |
165 | + display: inline-block; | |
166 | + width: 5px; | |
167 | + height: 1px; | |
168 | + background: #FFFFFF; | |
169 | + line-height: 0; | |
170 | + font-size: 0; | |
171 | + position: relative; | |
172 | + top: -10px; | |
173 | + left: 4px; | |
174 | + -webkit-transform: rotate(45deg); | |
175 | + } | |
176 | + .correct:after { | |
177 | + content: '/'; | |
178 | + display: block; | |
179 | + width: 8px; | |
180 | + height: 1px; | |
181 | + background: #FFFFFF; | |
182 | + -webkit-transform: rotate(-90deg) translateY(50%) translateX(50%); | |
183 | + } | |
184 | + } | |
185 | + | |
83 | 186 | .card{ |
84 | 187 | background-color: #FFFFFF; |
85 | 188 | border-radius: 16rpx; |
... | ... | @@ -98,6 +201,14 @@ |
98 | 201 | image{ |
99 | 202 | height: 32rpx; |
100 | 203 | width: 32rpx; |
204 | + padding-left: 6px; | |
205 | + padding-right: 10px; | |
206 | + } | |
207 | + text{ | |
208 | + // font-family: PingFangSC-Regular; | |
209 | + font-size: 14px; | |
210 | + color: #333333; | |
211 | + letter-spacing: -0.26px; | |
101 | 212 | } |
102 | 213 | } |
103 | 214 | .cardBody{ |
... | ... | @@ -111,11 +222,13 @@ |
111 | 222 | display: flex; |
112 | 223 | flex-direction: row; |
113 | 224 | justify-content: flex-start; |
225 | + padding-left: 6px; | |
114 | 226 | .imageWrap{ |
115 | 227 | height: 188rpx; |
116 | 228 | width: 188rpx; |
117 | - margin-right: 28rpx; | |
229 | + margin-right: 28rpx; | |
118 | 230 | image{ |
231 | + border-radius: 4px; | |
119 | 232 | height: 188rpx; |
120 | 233 | width: 188rpx; |
121 | 234 | } |
... | ... | @@ -125,7 +238,7 @@ |
125 | 238 | flex-direction: column; |
126 | 239 | align-items: flex-start; |
127 | 240 | justify-content: space-between; |
128 | - height: 220rpx; | |
241 | + height: 240rpx; | |
129 | 242 | .goodName{ |
130 | 243 | font-size: 28rpx; |
131 | 244 | color: #333333; |
... | ... | @@ -155,6 +268,7 @@ |
155 | 268 | display: flex; |
156 | 269 | justify-content: space-between; |
157 | 270 | align-items: center; |
271 | + // margin-top: 26px; | |
158 | 272 | width: 100%; |
159 | 273 | font-size: 14px; |
160 | 274 | color: #999999; |
... | ... | @@ -189,7 +303,7 @@ |
189 | 303 | .footer{ |
190 | 304 | position: fixed; |
191 | 305 | left: 0; |
192 | - bottom: 0; | |
306 | + bottom: 50px; | |
193 | 307 | height: 112rpx; |
194 | 308 | width: 100%; |
195 | 309 | background-color: #FFFFFF; |
... | ... | @@ -229,4 +343,6 @@ |
229 | 343 | } |
230 | 344 | } |
231 | 345 | |
346 | + | |
347 | + | |
232 | 348 | </style> | ... | ... |
src/pages/detailsChoiceArgs/compoents/MyCollapse.vue
... | ... | @@ -0,0 +1,228 @@ |
1 | +<template> | |
2 | + <!-- 折叠框 --> | |
3 | + <view class="myCollapse"> | |
4 | + <view class="head"> | |
5 | + <view>{{title}}</view> | |
6 | + <view v-if="title==='折射率'" class="headMid">注:折射率越高,镜片越薄,看着更美观。</view> | |
7 | + <view class="headRighted" v-if="this.isOpen" @click="myCollapseChange(isOpen)"></view> | |
8 | + <view class="headRight" v-else @click="myCollapseChange(isOpen)" ></view> | |
9 | + </view> | |
10 | + <view class="body"> | |
11 | + <block v-if="this.isOpen"> | |
12 | + <view style="background-color: #FFFFFF;" class="funBox"> | |
13 | + <template v-if="title==='镜片种类'"> | |
14 | + <view class="noRange"> | |
15 | + <block v-for="(item,index) in funList" :key="item.key"> | |
16 | + <view class="boxChoiced" v-if="item.isChioce" @click="choice(item.key-1,item.isChioce)">{{item.name}}</view> | |
17 | + <view class="boxChoice" v-else @click="choice(item.key-1,item.isChioce)">{{item.name}}</view> | |
18 | + </block> | |
19 | + </view> | |
20 | + <view class="noRange"> | |
21 | + <block v-for="(item,index) in funList2" :key="item.key"> | |
22 | + <view class="boxChoiced-C" :style="colorList[index]" v-if="item.isChioce" @click="choice2(index,item.key-1,item.isChioce)"></view> | |
23 | + <view class="boxChoice-C" :style="colorList[index]" v-else @click="choice2(index,item.key-1,item.isChioce)"></view> | |
24 | + </block> | |
25 | + </view> | |
26 | + </template> | |
27 | + <template v-else> | |
28 | + <view class="range" v-for="(item,index) in funList" :key="item.key">{{item.range}}</view> | |
29 | + <view class="noRange"> | |
30 | + <block v-for="(item,index) in funList" :key="item.key"> | |
31 | + <view class="boxChoiced" v-if="item.isChioce" @click="choice(item.key-1,item.isChioce)">{{item.name}}</view> | |
32 | + <view class="boxChoice" v-else @click="choice(item.key-1,item.isChioce)">{{item.name}}</view> | |
33 | + </block> | |
34 | + </view> | |
35 | + <!-- 手动换行 --> | |
36 | + <view class="range" v-for="(item) in funList2" :key="item.key">{{item.range}}</view> | |
37 | + <view class="noRange" style="max-width: 624rpx"> | |
38 | + <block v-for="(item,index) in funList2" :key="item.key"> | |
39 | + <view class="boxChoiced" v-if="item.isChioce" @click="choice2(index,item.key-1,item.isChioce)">{{item.name}}</view> | |
40 | + <view class="boxChoice" v-else @click="choice2(index,item.key-1,item.isChioce)">{{item.name}}</view> | |
41 | + </block> | |
42 | + </view> | |
43 | + </template> | |
44 | + | |
45 | + </view> | |
46 | + </block> | |
47 | + <block v-else> | |
48 | + *<text v-for="(item,index) in funContent" :key="index">{{item}}</text> | |
49 | + </block> | |
50 | + </view> | |
51 | + </view> | |
52 | + | |
53 | +</template> | |
54 | + | |
55 | +<script> | |
56 | + export default { | |
57 | + props:{ | |
58 | + isOpenProps:{ | |
59 | + // 是否展开,默认 true | |
60 | + type: Boolean, | |
61 | + default: true | |
62 | + }, | |
63 | + funList:{ | |
64 | + type: Array, | |
65 | + default: [] | |
66 | + }, | |
67 | + funList2:{ | |
68 | + type:Array, | |
69 | + | |
70 | + } | |
71 | + , | |
72 | + funContent: { | |
73 | + type: Array, | |
74 | + default: [] | |
75 | + }, | |
76 | + title:{ | |
77 | + type: String, | |
78 | + default: '' | |
79 | + } | |
80 | + }, | |
81 | + data() { | |
82 | + return { | |
83 | + isOpen:this.isOpenProps, | |
84 | + // 颜色数组要与传入的值手动相同 | |
85 | + colorList:[ | |
86 | + "background-image: linear-gradient(180deg, #ECEAEA 1%, #f2f2f2 100%);", | |
87 | + "background-image: linear-gradient(180deg, #ECEAEA 1%, #8D8C8C 100%);", | |
88 | + "background-image: linear-gradient(180deg, #AEA8A8 1%, #624B3F 100%);", | |
89 | + "background-image: linear-gradient(180deg, #AEA096 1%, #5E3521 100%);", | |
90 | + "background-image: linear-gradient(180deg, #6F6864 1%, #352B26 100%);" | |
91 | + ] | |
92 | + }; | |
93 | + }, | |
94 | + methods:{ | |
95 | + myCollapseChange(isopen){ | |
96 | + this.isOpen = !isopen | |
97 | + }, | |
98 | + choice(index,isChoice){ | |
99 | + this.funList[index].isChioce = !isChoice | |
100 | + if(!isChoice){ | |
101 | + this.funContent[index] = this.funList[index].name | |
102 | + } | |
103 | + else{ | |
104 | + this.funContent[index] = '' | |
105 | + } | |
106 | + }, | |
107 | + choice2(index,conIndex,isChoice){ | |
108 | + this.funList2[index].isChioce = !isChoice | |
109 | + if(!isChoice){ | |
110 | + this.funContent[conIndex] = this.funList2[index].name | |
111 | + } | |
112 | + else{ | |
113 | + this.funContent[conIndex] = '' | |
114 | + } | |
115 | + } | |
116 | + } | |
117 | + } | |
118 | +</script> | |
119 | + | |
120 | +<style lang="scss"> | |
121 | + .myCollapse{ | |
122 | + width: 100%; | |
123 | + padding-bottom: 28rpx; | |
124 | + margin-top: 7px; | |
125 | + border-bottom: 1px solid #E9E9E9; | |
126 | + .head{ | |
127 | + display: flex; | |
128 | + justify-content: space-between; | |
129 | + height: 24px; | |
130 | + // font-family: PingFangSC-Medium; | |
131 | + font-size: 16px; | |
132 | + color: #333333; | |
133 | + letter-spacing: -0.3px; | |
134 | + text-align: justify; | |
135 | + line-height: 24px; | |
136 | + margin-bottom: 18rpx; | |
137 | + .headRighted{ | |
138 | + width: 0; | |
139 | + height: 0; | |
140 | + border-left: 4px solid transparent; | |
141 | + border-right: 4px solid transparent; | |
142 | + border-bottom: 4px solid #CFCFCF; | |
143 | + transform: scaleY(-1); | |
144 | + margin-top: 10px; | |
145 | + } | |
146 | + .headMid{ | |
147 | + // font-family: PingFangSC-Regular; | |
148 | + font-size: 10px; | |
149 | + color: #999999; | |
150 | + letter-spacing: -0.19px; | |
151 | + margin-left: -120rpx; | |
152 | + } | |
153 | + .headRight{ | |
154 | + width: 0; | |
155 | + height: 0; | |
156 | + border-left: 4px solid transparent; | |
157 | + border-right: 4px solid transparent; | |
158 | + border-bottom: 4px solid #CFCFCF; | |
159 | + margin-top: 10px; | |
160 | + } | |
161 | + } | |
162 | + .body{ | |
163 | + // font-family: PingFangSC-Regular; | |
164 | + font-size: 12px; | |
165 | + color: #666666; | |
166 | + letter-spacing: 0; | |
167 | + display: flex; | |
168 | + flex-wrap: wrap; | |
169 | + text{ | |
170 | + padding-left: 4px; | |
171 | + } | |
172 | + } | |
173 | + } | |
174 | + .funBox { | |
175 | + // display: flex; | |
176 | + width: 100%; | |
177 | + // flex-wrap: wrap; | |
178 | + // max-width: 624rpx; | |
179 | + .range{ | |
180 | + // font-family: PingFangSC-Regular; | |
181 | + font-size: 10px; | |
182 | + color: #999999; | |
183 | + letter-spacing: -0.19px; | |
184 | + margin-bottom: 5px; | |
185 | + } | |
186 | + .noRange{ | |
187 | + display: flex; | |
188 | + flex-wrap: wrap; | |
189 | + // max-width: 624rpx; | |
190 | + // margin-bottom: 28rpx; | |
191 | + .boxChoiced,.boxChoice{ | |
192 | + height: 60rpx; | |
193 | + border-radius: 4rpx; | |
194 | + // font-family: PingFangSC-Regular; | |
195 | + font-size: 12px; | |
196 | + letter-spacing: 0; | |
197 | + line-height: 60rpx; | |
198 | + box-sizing: border-box; | |
199 | + padding: 0 20rpx; | |
200 | + margin-right: 20rpx; | |
201 | + margin-bottom: 13rpx; | |
202 | + } | |
203 | + .boxChoiced{ | |
204 | + background: rgba(255,107,74,0.15); | |
205 | + color: #FF6B4A; | |
206 | + } | |
207 | + .boxChoice{ | |
208 | + background: #F2F2F2; | |
209 | + color: #666666; | |
210 | + } | |
211 | + .boxChoiced-C,.boxChoice-C{ | |
212 | + width: 64rpx; | |
213 | + height: 64rpx; | |
214 | + border-radius: 32rpx; | |
215 | + margin-right: 8px; | |
216 | + } | |
217 | + .boxChoiced-C{ | |
218 | + opacity: 0.7; | |
219 | + border: 1px solid #FF6B4A; | |
220 | + } | |
221 | + .boxChoice-C{ | |
222 | + opacity: 0.7; | |
223 | + border: 1px solid #FFFFFF; | |
224 | + } | |
225 | + } | |
226 | + | |
227 | + } | |
228 | +</style> | ... | ... |
src/pages/detailsChoiceArgs/detailsChoiceArgs.vue
... | ... | @@ -0,0 +1,571 @@ |
1 | +<template> | |
2 | + <view class="content"> | |
3 | + <view class="goods-info"> | |
4 | + <image src="../../static/myorder-paying-pic.png"></image> | |
5 | + <view class="box-right"> | |
6 | + <text class="p1">镜片名称型号功能镜片名称型镜片名称型号功能非球面…</text> | |
7 | + <text class="p2">支持7天无理由退货 顺丰发货</text> | |
8 | + <view class="priceBox"> | |
9 | + <view class="price">¥{{price*count}}</view> | |
10 | + <view class="counter"> | |
11 | + <view class="btn" disabled="this.disabled" @click="counter(false)">-</view> | |
12 | + <text>{{count}}</text> | |
13 | + <view class="btn" @click="counter(true)">+</view> | |
14 | + </view> | |
15 | + </view> | |
16 | + </view> | |
17 | + </view> | |
18 | + <view class="goods-data"> | |
19 | + <!-- 实用功能折叠框 --> | |
20 | + <MyCollapse :isOpenProps="funIsOpen" :funList="funList" :funContent="funContent" title="实用功能"></MyCollapse> | |
21 | + <MyCollapse :isOpenProps="kindIsOpen" :funList="kindList1" :funList2="kindList2" :funContent="kindContent" title="镜片种类"></MyCollapse> | |
22 | + <MyCollapse :isOpenProps="maIsOpen" :funList="maList1" :funList2="maList2" :funContent="maContent" title="材质选择"></MyCollapse> | |
23 | + <MyCollapse :isOpenProps="reIsOpen" :funList="reList1" :funList2="reList2" :funContent="reContent" title="折射率"></MyCollapse> | |
24 | + | |
25 | + <view class="opCollapse"> | |
26 | + <view class="head"> | |
27 | + <view v-if="!opIsOpen">填写验光数据</view> | |
28 | + <view v-else></view> | |
29 | + <view class="headRighted" v-if="this.opIsOpen" @click="myCollapseChange(opIsOpen)"></view> | |
30 | + <view class="headRight" v-else @click="myCollapseChange(opIsOpen)" ></view> | |
31 | + </view> | |
32 | + <view class="body"> | |
33 | + <block v-if="this.opIsOpen"> | |
34 | + | |
35 | + <view class="goods-form"> | |
36 | + <text class="p1">填写验光数据</text> | |
37 | + <text class="p2">没有验光数据?请到线下眼镜店验光哦~</text> | |
38 | + <view class="picker" > | |
39 | + <view class="picker-choice"> | |
40 | + <view class="choice-left"> | |
41 | + <text class="p11">{{pickerInfoList[0].nameC}}</text> | |
42 | + <text class="p12">{{pickerInfoList[0].nameE}}</text> | |
43 | + </view> | |
44 | + <text class="p13">左 (OD)</text> | |
45 | + <text class="p14">{{pickerInfoList[0].nameArray1[pickerInfoList[0].nameIndex1]}}</text> | |
46 | + <picker @change="bindPickerChange01" :value="pickerInfoList[0].nameIndex1" :range="pickerInfoList[0].nameArray1"> | |
47 | + <image src="../../static/detail-tabicon.png" ></image> | |
48 | + </picker> | |
49 | + <text class="p13">右 (OS)</text> | |
50 | + <text class="p14">{{pickerInfoList[0].nameArray2[pickerInfoList[0].nameIndex2]}}</text> | |
51 | + <picker @change="bindPickerChange02" :value="pickerInfoList[0].nameIndex2" :range="pickerInfoList[0].nameArray2"> | |
52 | + <image src="../../static/detail-tabicon.png" ></image> | |
53 | + </picker> | |
54 | + </view> | |
55 | + </view> | |
56 | + <view class="picker" > | |
57 | + <view class="picker-choice"> | |
58 | + <view class="choice-left"> | |
59 | + <text class="p11">{{pickerInfoList[1].nameC}}</text> | |
60 | + <text class="p12">{{pickerInfoList[1].nameE}}</text> | |
61 | + </view> | |
62 | + <text class="p13">左 (OD)</text> | |
63 | + <text class="p14">{{pickerInfoList[1].nameArray1[pickerInfoList[1].nameIndex1]}}</text> | |
64 | + <picker @change="bindPickerChange11" :value="pickerInfoList[1].nameIndex1" :range="pickerInfoList[1].nameArray1"> | |
65 | + <image src="../../static/detail-tabicon.png" ></image> | |
66 | + </picker> | |
67 | + <text class="p13">右 (OS)</text> | |
68 | + <text class="p14">{{pickerInfoList[1].nameArray2[pickerInfoList[1].nameIndex2]}}</text> | |
69 | + <picker @change="bindPickerChange12" :value="pickerInfoList[1].nameIndex2" :range="pickerInfoList[1].nameArray2"> | |
70 | + <image src="../../static/detail-tabicon.png" ></image> | |
71 | + </picker> | |
72 | + </view> | |
73 | + </view> | |
74 | + <view class="picker" > | |
75 | + <view class="picker-choice"> | |
76 | + <view class="choice-left"> | |
77 | + <text class="p11">{{pickerInfoList[2].nameC}}</text> | |
78 | + <text class="p12">{{pickerInfoList[2].nameE}}</text> | |
79 | + </view> | |
80 | + <text class="p13">左 (OD)</text> | |
81 | + <text class="p14">{{pickerInfoList[2].nameArray1[pickerInfoList[2].nameIndex1]}}</text> | |
82 | + <picker @change="bindPickerChange21" :value="pickerInfoList[2].nameIndex1" :range="pickerInfoList[2].nameArray1"> | |
83 | + <image src="../../static/detail-tabicon.png" ></image> | |
84 | + </picker> | |
85 | + <text class="p13">右 (OS)</text> | |
86 | + <text class="p14">{{pickerInfoList[2].nameArray2[pickerInfoList[2].nameIndex2]}}</text> | |
87 | + <picker @change="bindPickerChange22" :value="pickerInfoList[2].nameIndex2" :range="pickerInfoList[2].nameArray2"> | |
88 | + <image src="../../static/detail-tabicon.png" ></image> | |
89 | + </picker> | |
90 | + </view> | |
91 | + </view> | |
92 | + <view class="picker" > | |
93 | + <view class="picker-choice"> | |
94 | + <view class="choice-left"> | |
95 | + <text class="p11">{{pickerInfoList[3].nameC}}</text> | |
96 | + <text class="p12">{{pickerInfoList[3].nameE}}</text> | |
97 | + </view> | |
98 | + <text class="p13">左 (OD)</text> | |
99 | + <text class="p14">{{pickerInfoList[3].nameArray1[pickerInfoList[3].nameIndex1]}}</text> | |
100 | + <picker @change="bindPickerChange31" :value="pickerInfoList[3].nameIndex1" :range="pickerInfoList[3].nameArray1"> | |
101 | + <image src="../../static/detail-tabicon.png" ></image> | |
102 | + </picker> | |
103 | + <text class="p13">右 (OS)</text> | |
104 | + <text class="p14">{{pickerInfoList[3].nameArray2[pickerInfoList[3].nameIndex2]}}</text> | |
105 | + <picker @change="bindPickerChange32" :value="pickerInfoList[3].nameIndex2" :range="pickerInfoList[3].nameArray2"> | |
106 | + <image src="../../static/detail-tabicon.png" ></image> | |
107 | + </picker> | |
108 | + </view> | |
109 | + </view> | |
110 | + <view class="picker" > | |
111 | + <view class="picker-choice"> | |
112 | + <view class="choice-left"> | |
113 | + <text class="p11">{{pickerInfoList[4].nameC}}</text> | |
114 | + </view> | |
115 | + <text class="p13-date">年 (Y)</text> | |
116 | + <text class="p14" style="width: 34px;">{{pickerInfoList[4].nameArray1[pickerInfoList[4].nameIndex1]}}</text> | |
117 | + <picker @change="bindPickerChange41" :value="pickerInfoList[4].nameIndex1" :range="pickerInfoList[4].nameArray1"> | |
118 | + <image src="../../static/detail-tabicon.png" ></image> | |
119 | + </picker> | |
120 | + <text class="p13-date">月 (M)</text> | |
121 | + <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray2[pickerInfoList[4].nameIndex2]}}</text> | |
122 | + <picker @change="bindPickerChange42" :value="pickerInfoList[4].nameIndex2" :range="pickerInfoList[4].nameArray2"> | |
123 | + <image src="../../static/detail-tabicon.png" ></image> | |
124 | + </picker> | |
125 | + <text class="p13-date">日 (D)</text> | |
126 | + <text class="p14" style="width: 30px;">{{pickerInfoList[4].nameArray3[pickerInfoList[4].nameIndex3]}}</text> | |
127 | + <picker @change="bindPickerChange43" :value="pickerInfoList[4].nameIndex3" :range="pickerInfoList[4].nameArray3"> | |
128 | + <image src="../../static/detail-tabicon.png" ></image> | |
129 | + </picker> | |
130 | + </view> | |
131 | + </view> | |
132 | + <view class="confirm"> | |
133 | + <image :src="tablist.confirm ? tabicon[0] : tabicon[1]" @click="changeConfirm"></image> | |
134 | + <text>确认以上输入信息来源于我的验光数据!</text> | |
135 | + </view> | |
136 | + </view> | |
137 | + | |
138 | + </block> | |
139 | + <block v-else> | |
140 | + <view v-for="item in pickerInfoList" :key="item.key" class="bodyBox"> | |
141 | + <template v-if="item.nameC==='验光日期'"> | |
142 | + <text class="names">{{item.nameC}}</text> | |
143 | + <text style="margin-right: 5px;">{{item.nameArray1[item.nameIndex1]}}年</text> | |
144 | + <text style="margin-right: 5px;">{{item.nameArray2[item.nameIndex2]}}月</text> | |
145 | + <text>{{item.nameArray3[item.nameIndex2]}}日</text> | |
146 | + </template> | |
147 | + <template v-else> | |
148 | + <template v-if="item.nameC==='度数'"> | |
149 | + <text style="display: inline;">*</text> | |
150 | + </template> | |
151 | + | |
152 | + <text class="names">{{item.nameC}}</text> | |
153 | + <text style="margin-right: 10px;">左 {{item.nameArray1[item.nameIndex1]}}</text> | |
154 | + <text>右 {{item.nameArray2[item.nameIndex2]}}</text> | |
155 | + </template> | |
156 | + </view> | |
157 | + </block> | |
158 | + </view> | |
159 | + </view> | |
160 | + | |
161 | + </view> | |
162 | + <view class="submit">立即结算</view> | |
163 | + </view> | |
164 | +</template> | |
165 | + | |
166 | +<script> | |
167 | + import MyCollapse from './compoents/MyCollapse.vue' | |
168 | + export default { | |
169 | + components: { | |
170 | + MyCollapse | |
171 | + }, | |
172 | + data() { | |
173 | + return { | |
174 | + count:1, | |
175 | + disabled:false, | |
176 | + price:180, | |
177 | + // 实用功能参数 | |
178 | + funIsOpen:true, // 默认myCollapse开启 | |
179 | + funList: [ | |
180 | + {"name":"防紫外线","isChioce":false,key:1}, | |
181 | + {"name":"防蓝光","isChioce":false,key:2}, | |
182 | + {"name":"智能变色","isChioce":false,key:3}, | |
183 | + {"name":"易清洁","isChioce":false,key:4}, | |
184 | + {"name":"防辐射","isChioce":false,key:5}, | |
185 | + {"name":"抗疲劳","isChioce":false,key:6}, | |
186 | + ], | |
187 | + funContent:[], | |
188 | + | |
189 | + // 镜片种类参数 | |
190 | + kindIsOpen:false, // 默认myCollapse开启 | |
191 | + kindList1: [ | |
192 | + {"name":"染色","isChioce":false,key:1}, | |
193 | + {"name":"渐变","isChioce":false,key:2}, | |
194 | + ], | |
195 | + kindList2: [ | |
196 | + {"name":"JB234759","isChioce":false,key:3}, | |
197 | + {"name":"JB234759","isChioce":false,key:4}, | |
198 | + {"name":"JB234759","isChioce":false,key:5}, | |
199 | + {"name":"JB234759","isChioce":false,key:6}, | |
200 | + {"name":"JB234759","isChioce":false,key:7}, | |
201 | + ], | |
202 | + kindContent:[], | |
203 | + // 材质选择 | |
204 | + maIsOpen:false, | |
205 | + maList1: [ | |
206 | + {"name":"树脂镜片","isChioce":false,key:1,"range":"0-300度","isRange":true}, | |
207 | + {"name":"特殊镜片","isChioce":false,key:2}, | |
208 | + ], | |
209 | + maList2: [ | |
210 | + {"name":"玻璃镜片","isChioce":false,key:3,"range":"300-1000度","isRange":true}, | |
211 | + {"name":"玻璃镜片","isChioce":false,key:4}, | |
212 | + ], | |
213 | + maContent:[], | |
214 | + // 折射率参数 | |
215 | + reIsOpen:false, | |
216 | + reList1: [ | |
217 | + {"name":"1.56(推荐)","isChioce":false,key:1,"range":"0-300度","isRange":true}, | |
218 | + {"name":"1.60","isChioce":false,key:2}, | |
219 | + ], | |
220 | + reList2: [ | |
221 | + {"name":"1.71(推荐)","isChioce":false,key:3,"range":"300-1000度","isRange":true}, | |
222 | + {"name":"1.67","isChioce":false,key:4}, | |
223 | + {"name":"1.71","isChioce":false,key:5}, | |
224 | + {"name":"1.74","isChioce":false,key:6}, | |
225 | + ], | |
226 | + reContent:[], | |
227 | + // 验光参数 | |
228 | + opIsOpen:false, | |
229 | + tablist: { | |
230 | + // read: true, | |
231 | + // seeLong: false, | |
232 | + confirm: false | |
233 | + }, | |
234 | + tabicon:['/static/detail-button.png','/static/detail-button-unselected.png'], | |
235 | + // 度数相关数据 | |
236 | + pickerInfoList:[ | |
237 | + {nameC:"度数",nameE:"(SPH)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:0}, | |
238 | + {nameC:"散光",nameE:"(CYL)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:1}, | |
239 | + {nameC:"散光轴位",nameE:"(AXI)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:2}, | |
240 | + {nameC:"双眼瞳距",nameE:"(PD)",nameArray1:[1.5,2.5,3.5,4.5],nameIndex1:0,nameArray2:[1.5,2.5,3.5,4.5],nameIndex2:0,key:3}, | |
241 | + {nameC:"验光日期",nameE:'',nameArray1:[2017,2018,2019,2020,2021],nameIndex1:0,nameArray2:[1,2,3,4,5,6,7],nameIndex2:0,nameArray3:[1,2,3,4,5,6],nameIndex3:0} | |
242 | + ], | |
243 | + | |
244 | + } | |
245 | + }, | |
246 | + methods: { | |
247 | + counter(isadd){ | |
248 | + if(isadd){ | |
249 | + this.count++ | |
250 | + }else{ | |
251 | + this.count <= 1? this.disabled = true:this.count-- | |
252 | + } | |
253 | + }, | |
254 | + myCollapseChange(isopen){ | |
255 | + // console.log(isopen) | |
256 | + this.opIsOpen = !isopen | |
257 | + }, | |
258 | + changeConfirm() { | |
259 | + this.tablist.confirm = !this.tablist.confirm | |
260 | + }, | |
261 | + | |
262 | + bindPickerChange01: function(e) { | |
263 | + this.pickerInfoList[0].nameIndex1 = e.target.value | |
264 | + }, | |
265 | + bindPickerChange02: function(e) { | |
266 | + this.pickerInfoList[0].nameIndex2 = e.target.value | |
267 | + }, | |
268 | + | |
269 | + bindPickerChange11: function(e) { | |
270 | + this.pickerInfoList[1].nameIndex1 = e.target.value | |
271 | + }, | |
272 | + bindPickerChange12: function(e) { | |
273 | + this.pickerInfoList[1].nameIndex2 = e.target.value | |
274 | + }, | |
275 | + | |
276 | + bindPickerChange21: function(e) { | |
277 | + this.pickerInfoList[2].nameIndex1 = e.target.value | |
278 | + }, | |
279 | + bindPickerChange22: function(e) { | |
280 | + this.pickerInfoList[2].nameIndex2 = e.target.value | |
281 | + }, | |
282 | + | |
283 | + bindPickerChange31: function(e) { | |
284 | + this.pickerInfoList[3].nameIndex1 = e.target.value | |
285 | + }, | |
286 | + bindPickerChange32: function(e) { | |
287 | + this.pickerInfoList[3].nameIndex2 = e.target.value | |
288 | + }, | |
289 | + | |
290 | + bindPickerChange41: function(e) { | |
291 | + this.pickerInfoList[4].nameIndex1 = e.target.value | |
292 | + }, | |
293 | + bindPickerChange42: function(e) { | |
294 | + this.pickerInfoList[4].nameIndex2 = e.target.value | |
295 | + }, | |
296 | + bindPickerChange43: function(e) { | |
297 | + this.pickerInfoList[4].nameIndex3 = e.target.value | |
298 | + }, | |
299 | + } | |
300 | + } | |
301 | +</script> | |
302 | + | |
303 | +<style lang="scss" scoped> | |
304 | + .content{ | |
305 | + width: 100%; | |
306 | + background-color: #F2F2F2; | |
307 | + display: flex; | |
308 | + flex-direction: column; | |
309 | + align-items: center; | |
310 | + } | |
311 | + | |
312 | + .goods-info{ | |
313 | + width: 100%; | |
314 | + height: 272rpx; | |
315 | + box-sizing: border-box; | |
316 | + padding: 40rpx 40rpx 36rpx 36rpx; | |
317 | + margin: 36rpx 0 18rpx 0; | |
318 | + // margin-bottom: -18rpx; | |
319 | + // margin-top: -36rpx; | |
320 | + background: #FFFFFF; | |
321 | + border-radius: 16rpx; | |
322 | + display: flex; | |
323 | + image{ | |
324 | + width: 94px; | |
325 | + height: 94px; | |
326 | + margin-right: 28rpx; | |
327 | + } | |
328 | + .box-right{ | |
329 | + width: 458rpx; | |
330 | + display: flex; | |
331 | + flex-direction: column; | |
332 | + align-items: flex-start; | |
333 | + justify-content: space-between; | |
334 | + .p1 { | |
335 | + // font-family: PingFangSC-Regular; | |
336 | + font-size: 14px; | |
337 | + color: #333333; | |
338 | + letter-spacing: -0.26px; | |
339 | + text-align: justify; | |
340 | + line-height: 18px; | |
341 | + } | |
342 | + .p2 { | |
343 | + // font-family: PingFangSC-Regular; | |
344 | + font-size: 10px; | |
345 | + color: #999999; | |
346 | + letter-spacing: -0.19px; | |
347 | + margin-top: -20rpx; | |
348 | + } | |
349 | + .priceBox{ | |
350 | + display: flex; | |
351 | + flex-direction: row; | |
352 | + justify-content: space-between; | |
353 | + width: 100%; | |
354 | + .price{ | |
355 | + color: #FF6B4A; | |
356 | + font-size: 28rpx; | |
357 | + } | |
358 | + .counter{ | |
359 | + display: flex; | |
360 | + flex-direction: row; | |
361 | + justify-content: space-between; | |
362 | + font-size: 28rpx; | |
363 | + color: #333333; | |
364 | + width: 122rpx; | |
365 | + .btn{ | |
366 | + display: flex; | |
367 | + justify-content: center; | |
368 | + line-height: 32rpx; | |
369 | + height: 32rpx; | |
370 | + width: 32rpx; | |
371 | + background-color: #F2F2F2; | |
372 | + color: #CFCFCF; | |
373 | + } | |
374 | + } | |
375 | + } | |
376 | + } | |
377 | + } | |
378 | + | |
379 | + .goods-data{ | |
380 | + width: 100%; | |
381 | + box-sizing: border-box; | |
382 | + padding: 37rpx 40rpx 0 40rpx; | |
383 | + background: #FFFFFF; | |
384 | + border-radius: 12rpx; | |
385 | + margin-bottom: 92px; | |
386 | + .opCollapse{ | |
387 | + width: 100%; | |
388 | + padding-bottom: 28rpx; | |
389 | + margin-top: 7px; | |
390 | + border-bottom: 1px solid #E9E9E9; | |
391 | + .head{ | |
392 | + display: flex; | |
393 | + justify-content: space-between; | |
394 | + height: 24px; | |
395 | + // font-family: PingFangSC-Medium; | |
396 | + font-size: 16px; | |
397 | + color: #333333; | |
398 | + letter-spacing: -0.3px; | |
399 | + text-align: justify; | |
400 | + line-height: 24px; | |
401 | + margin-bottom: 18rpx; | |
402 | + .headRighted{ | |
403 | + width: 0; | |
404 | + height: 0; | |
405 | + border-left: 4px solid transparent; | |
406 | + border-right: 4px solid transparent; | |
407 | + border-bottom: 4px solid #CFCFCF; | |
408 | + transform: scaleY(-1); | |
409 | + margin-top: 10px; | |
410 | + } | |
411 | + .headMid{ | |
412 | + // font-family: PingFangSC-Regular; | |
413 | + font-size: 10px; | |
414 | + color: #999999; | |
415 | + letter-spacing: -0.19px; | |
416 | + margin-left: -120rpx; | |
417 | + } | |
418 | + .headRight{ | |
419 | + width: 0; | |
420 | + height: 0; | |
421 | + border-left: 4px solid transparent; | |
422 | + border-right: 4px solid transparent; | |
423 | + border-bottom: 4px solid #CFCFCF; | |
424 | + margin-top: 10px; | |
425 | + } | |
426 | + } | |
427 | + .body{ | |
428 | + // font-family: PingFangSC-Regular; | |
429 | + font-size: 12px; | |
430 | + color: #666666; | |
431 | + letter-spacing: 0; | |
432 | + .bodyBox{ | |
433 | + margin-top: 15px; | |
434 | + .names{ | |
435 | + // font-family: PingFangSC-Regular; | |
436 | + font-size: 12px; | |
437 | + color: #151515; | |
438 | + letter-spacing: 0; | |
439 | + text-align: justify; | |
440 | + line-height: 17px; | |
441 | + margin-left: 5px; | |
442 | + margin-right: 10px; | |
443 | + } | |
444 | + text{ | |
445 | + // font-family: PingFangSC-Regular; | |
446 | + font-size: 12px; | |
447 | + color: #666666; | |
448 | + letter-spacing: 0; | |
449 | + text-align: justify; | |
450 | + } | |
451 | + } | |
452 | + | |
453 | + } | |
454 | + } | |
455 | + | |
456 | + } | |
457 | + | |
458 | + .goods-form { | |
459 | + display: flex; | |
460 | + flex-direction: column; | |
461 | + align-items: center; | |
462 | + justify-content: center; | |
463 | + background-color: #fff; | |
464 | + width: 100%; | |
465 | + | |
466 | + .p1 { | |
467 | + font-size: 16px; | |
468 | + color: #333333; | |
469 | + letter-spacing: -0.3px; | |
470 | + text-align: justify; | |
471 | + line-height: 24px; | |
472 | + margin: 4px 0; | |
473 | + | |
474 | + } | |
475 | + .p2 { | |
476 | + font-size: 12px; | |
477 | + color: #999999; | |
478 | + letter-spacing: -0.23px; | |
479 | + margin-bottom: 18rpx; | |
480 | + } | |
481 | + image{ | |
482 | + width: 28rpx; | |
483 | + height: 26rpx; | |
484 | + } | |
485 | + .confirm { | |
486 | + display: flex; | |
487 | + align-items: center; | |
488 | + font-size: 12px; | |
489 | + color: #666666; | |
490 | + letter-spacing: -0.23px; | |
491 | + width: 684rpx; | |
492 | + image{ | |
493 | + margin-right:25rpx; | |
494 | + } | |
495 | + } | |
496 | + .picker{ | |
497 | + display: flex; | |
498 | + flex-direction: column; | |
499 | + justify-content: center; | |
500 | + align-items: center; | |
501 | + width: 100%; | |
502 | + image{ | |
503 | + width: 10px; | |
504 | + height: 10px; | |
505 | + margin-right: 5px; | |
506 | + } | |
507 | + .picker-choice{ | |
508 | + display: flex; | |
509 | + width: 684rpx; | |
510 | + align-items: center; | |
511 | + margin-bottom: 40rpx; | |
512 | + .choice-left{ | |
513 | + width: 210rpx; | |
514 | + .p11 { | |
515 | + font-size: 14px; | |
516 | + color: #333333; | |
517 | + letter-spacing: -0.26px; | |
518 | + text-align: justify; | |
519 | + line-height: 24px; | |
520 | + // margin-right: 10px; | |
521 | + } | |
522 | + .p12 { | |
523 | + font-size: 10px; | |
524 | + color: #3F3F3F; | |
525 | + letter-spacing: -0.19px; | |
526 | + text-align: justify; | |
527 | + line-height: 24px; | |
528 | + } | |
529 | + | |
530 | + | |
531 | + } | |
532 | + .p13 { | |
533 | + font-size: 10px; | |
534 | + color: #999999; | |
535 | + letter-spacing: -0.19px; | |
536 | + margin-right: 10px; | |
537 | + } | |
538 | + .p13-date { | |
539 | + font-size: 10px; | |
540 | + color: #999999; | |
541 | + letter-spacing: -0.19px; | |
542 | + margin-right: 5px; | |
543 | + } | |
544 | + .p14 { | |
545 | + font-size: 14px; | |
546 | + color: #666666; | |
547 | + letter-spacing: -0.26px; | |
548 | + text-align: center; | |
549 | + width: 124rpx; | |
550 | + border-bottom: 1px solid #CFCFCF; | |
551 | + } | |
552 | + | |
553 | + } | |
554 | + } | |
555 | + } | |
556 | + | |
557 | + .submit{ | |
558 | + width: 100%; | |
559 | + height: 112rpx; | |
560 | + background: #FF6B4A; | |
561 | + position: fixed; | |
562 | + bottom: 0; | |
563 | + text-align: center; | |
564 | + line-height: 112rpx; | |
565 | + // font-family: PingFangSC-Regular; | |
566 | + font-size: 16px; | |
567 | + color: #FFFFFF; | |
568 | + letter-spacing: -0.3px; | |
569 | + } | |
570 | + | |
571 | +</style> | ... | ... |
src/pages/myOrder/myOrder.vue
... | ... | @@ -20,7 +20,8 @@ |
20 | 20 | <OrderCard :order = "order" :current="current"></OrderCard> |
21 | 21 | </view> |
22 | 22 | </view> |
23 | - <view class="footer">已显示全部</view> | |
23 | + <navigator url="/pages/user/user" open-type="switchTab"><view class="footer">已显示全部</view></navigator> | |
24 | + <!-- <view class="footer">已显示全部</view> --> | |
24 | 25 | </view> |
25 | 26 | </template> |
26 | 27 | <script> | ... | ... |
src/pages/myOrderPaying/myOrderPaying.vue
1 | 1 | <template> |
2 | - <view class="content"> | |
3 | - <view class="header"> | |
4 | - <view class="header-name"> | |
5 | - <navigator open-type="navigateBack" hover-class="navigator-hover"> | |
6 | - <image src="/static/back.png"></image> | |
7 | - </navigator> | |
8 | - <text>我的订单</text> | |
9 | - </view> | |
2 | + <view class="content"> | |
3 | + <view class="order-hr"></view> | |
4 | + <view class="order-time"> | |
5 | + <text>请在</text> | |
6 | + <!-- <text class="p2"></text> --> | |
7 | + <uni-countdown color="#EC5D3B" splitor-color="#EC5D3B" :show-day="false" | |
8 | + :hour="0" :minute="59" :second="58" style="margin: 36rpx 20rpx 0 20rpx"></uni-countdown> | |
9 | + <text>内完成付款</text> | |
10 | 10 | </view> |
11 | - <scroll-view scroll-y class="scroll-view" :style="{ height: scrollHeight?1000:800 + 'px' }"> | |
12 | - <view class="order-hr"></view> | |
13 | - <view class="order-time"> | |
14 | - <text>请在</text> | |
15 | - <text class="p2">00:59:58 </text> | |
16 | - <text>内完成付款</text> | |
17 | - </view> | |
11 | + <view class="order"> | |
18 | 12 | <view class="order-user"> |
19 | 13 | <view class="order-user-head"> |
20 | 14 | <text class="p1">钱大大</text> |
... | ... | @@ -30,13 +24,16 @@ |
30 | 24 | <image src="../../static/myorder-paying-pic.png"></image> |
31 | 25 | <view class="order-info-head-r"> |
32 | 26 | <text class="p1">眼镜名称眼镜名称眼镜名称眼镜名称…</text> |
33 | - <text class="p2">规格:玫瑰金 / 钛合金 / 防日光防紫外线 / 超薄超轻</text> | |
34 | - <text class="p3">¥180</text> | |
27 | + <view class="p2" style="margin: 0;"> | |
28 | + 规格:玫瑰金 / 钛合金 / 防日光防紫外线 / 超薄超轻 | |
29 | + <!-- <view class="arrow"></view> --> | |
30 | + </view> | |
31 | + <text class="p3"><span>¥180</span><span class="p4">X1</span></text> | |
35 | 32 | </view> |
36 | 33 | </view> |
37 | - <view class="order-info-goodsnum"> | |
34 | +<!-- <view class="order-info-goodsnum"> | |
38 | 35 | <text>X1</text> |
39 | - </view> | |
36 | + </view> --> | |
40 | 37 | <text class="order-info-freight"> |
41 | 38 | <text class="p1">运费</text> |
42 | 39 | <text class="p2">0.00</text> |
... | ... | @@ -61,7 +58,7 @@ |
61 | 58 | <text>联系客服</text> |
62 | 59 | </view> |
63 | 60 | </view> |
64 | - </scroll-view> | |
61 | + </view> | |
65 | 62 | <view class="order-confim"> |
66 | 63 | <button class="b1">取消订单</button> |
67 | 64 | <button class="b2">立即支付</button> |
... | ... | @@ -70,7 +67,11 @@ |
70 | 67 | </template> |
71 | 68 | |
72 | 69 | <script> |
70 | + import UniCountdown from '../../components/UniCountdown/UniCountdown.vue' | |
73 | 71 | export default { |
72 | + components: { | |
73 | + UniCountdown | |
74 | + }, | |
74 | 75 | data() { |
75 | 76 | return { |
76 | 77 | scrollHeight: false, |
... | ... | @@ -88,39 +89,13 @@ |
88 | 89 | flex-direction: column; |
89 | 90 | justify-content: center; |
90 | 91 | align-items: center; |
92 | + background-color: #f2f2f2; | |
91 | 93 | } |
92 | 94 | |
93 | - .header{ | |
94 | - display: flex; | |
95 | - flex-direction: column; | |
96 | - align-items: center; | |
97 | - justify-content: center; | |
98 | - width: 100%; | |
99 | - height: 44px; | |
100 | - position: fixed; | |
101 | - top: 0; | |
102 | - z-index: 999; | |
103 | - background-color: #fff; | |
104 | - .header-name{ | |
105 | - display: flex; | |
106 | - align-items: center; | |
107 | - width: 670rpx; | |
108 | - image { | |
109 | - width: 11px; | |
110 | - height: 18px; | |
111 | - } | |
112 | - text { | |
113 | - // font-family: PingFangSC-Regular; | |
114 | - font-size: 36rpx; | |
115 | - color: #333333; | |
116 | - letter-spacing: -0.34px; | |
117 | - margin: 0 0 10rpx 54rpx; | |
118 | - } | |
119 | - } | |
120 | - } | |
121 | 95 | |
122 | - .scroll-view { | |
123 | - // height: 1760rpx; // 测试 | |
96 | + .order { | |
97 | + min-height: 1196rpx; | |
98 | + margin-bottom: 112rpx; | |
124 | 99 | background: #F2F2F2; |
125 | 100 | } |
126 | 101 | .order-hr { |
... | ... | @@ -222,8 +197,30 @@ |
222 | 197 | text{ |
223 | 198 | display: block; |
224 | 199 | } |
200 | + // .arrow{ | |
201 | + // width: 0; | |
202 | + // height: 0; | |
203 | + // border-left: 5px transparent; | |
204 | + // border-right: 5px transparent; | |
205 | + // border-top: 5px #979797; | |
206 | + // border-bottom: 0 transparent; | |
207 | + // border-style: solid; | |
208 | + // position: relative; | |
209 | + // // transform: scaleY(-1); | |
210 | + // } | |
211 | + // .arrow::after{ | |
212 | + // content: ''; | |
213 | + // position: absolute; | |
214 | + // top: -6.5px; | |
215 | + // left: -5px; | |
216 | + // border-left: 5px transparent; | |
217 | + // border-right: 5px transparent; | |
218 | + // border-top: 5px #FFFFFF; | |
219 | + // border-bottom: 0 transparent; | |
220 | + // border-style: solid; | |
221 | + // } | |
225 | 222 | .p1 { |
226 | - height: 40px; | |
223 | + min-height: 40px; | |
227 | 224 | // font-family: PingFangSC-Regular; |
228 | 225 | font-size: 14px; |
229 | 226 | color: #333333; |
... | ... | @@ -246,21 +243,27 @@ |
246 | 243 | color: #FF6B4A; |
247 | 244 | letter-spacing: -0.26px; |
248 | 245 | } |
246 | + .p4{ | |
247 | + font-size: 12px; | |
248 | + color: #999999; | |
249 | + letter-spacing: -0.23px; | |
250 | + margin-left: 10px; | |
251 | + } | |
249 | 252 | } |
250 | 253 | |
251 | 254 | } |
252 | - .order-info-goodsnum { | |
253 | - display: flex; | |
254 | - align-items: center; | |
255 | - justify-content: flex-end; | |
256 | - text { | |
257 | - margin-right: 44rpx; | |
258 | - // ont-family: PingFangSC-Regular; | |
259 | - font-size: 12px; | |
260 | - color: #999999; | |
261 | - letter-spacing: -0.23px; | |
262 | - } | |
263 | - } | |
255 | + // .order-info-goodsnum { | |
256 | + // display: flex; | |
257 | + // align-items: center; | |
258 | + // justify-content: flex-end; | |
259 | + // text { | |
260 | + // margin-right: 44rpx; | |
261 | + // // ont-family: PingFangSC-Regular; | |
262 | + // font-size: 12px; | |
263 | + // color: #999999; | |
264 | + // letter-spacing: -0.23px; | |
265 | + // } | |
266 | + // } | |
264 | 267 | .order-info-freight { |
265 | 268 | display: block; |
266 | 269 | margin-left: 40rpx; | ... | ... |
src/pages/user/user.vue
... | ... | @@ -22,19 +22,19 @@ |
22 | 22 | </view> |
23 | 23 | </view> |
24 | 24 | <view class="orderBody"> |
25 | - <view class="item,waitPay" @click=toMyOrderPaying> | |
26 | - <image src="../../static/waitPay.png" mode="aspectFill"></image> | |
25 | + <view class="item waitPay" @click="toMyOrderPaying"> | |
26 | + <image src="../../static/waitDeliver.png" mode="aspectFill"></image> | |
27 | 27 | <text>待付款</text> |
28 | 28 | </view> |
29 | - <view class="item,waitDeliver" @click=toPredelivery> | |
29 | + <view class="item waitDeliver" @click="toPredelivery" > | |
30 | 30 | <image src="../../static/waitDeliver.png" mode="aspectFill"></image> |
31 | 31 | <text>待发货</text> |
32 | 32 | </view> |
33 | - <view class="item,waitReceive"> | |
33 | + <view class="item waitReceive" @click="torefunProgress"> | |
34 | 34 | <image src="../../static/waitReceive.png" mode="aspectFill"></image> |
35 | 35 | <text>待收货</text> |
36 | 36 | </view> |
37 | - <view class="item,service"> | |
37 | + <view class="item service" @click="torefundment"> | |
38 | 38 | <image src="../../static/service.png" mode="aspectFill"></image> |
39 | 39 | <text>退换/售后</text> |
40 | 40 | </view> |
... | ... | @@ -72,7 +72,7 @@ |
72 | 72 | |
73 | 73 | //商品数据 |
74 | 74 | goodsList:[ |
75 | - { goods_id: 0, img: '/static/img/goods/p1.jpg', name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' }, | |
75 | + { goods_id: 0, img: "/static/img/goods/p1.jpg", name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' }, | |
76 | 76 | { goods_id: 1, img: '/static/img/goods/p2.jpg', name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' }, |
77 | 77 | { goods_id: 2, img: '/static/img/goods/p3.jpg', name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' }, |
78 | 78 | { goods_id: 3, img: '/static/img/goods/p4.jpg', name: '商品名称',originCost:'¥198',price: '¥168', slogan:'1235人浏览' }, |
... | ... | @@ -101,7 +101,7 @@ |
101 | 101 | }, |
102 | 102 | toPredelivery(){ |
103 | 103 | uni.navigateTo({ |
104 | - url: '../Predelivery/Predelivery', | |
104 | + url: '../predelivery/predelivery', | |
105 | 105 | success: res => {}, |
106 | 106 | fail: () => {}, |
107 | 107 | complete: () => {} |
... | ... | @@ -109,11 +109,21 @@ |
109 | 109 | }, |
110 | 110 | toMyOrderPaying(){ |
111 | 111 | uni.navigateTo({ |
112 | - url: '../myorder-paying/myorder-paying', | |
112 | + url: '../myorderPaying/myorderPaying', | |
113 | 113 | success: res => {}, |
114 | 114 | fail: () => {}, |
115 | 115 | complete: () => {} |
116 | 116 | }); |
117 | + }, | |
118 | + torefundment(){ | |
119 | + uni.navigateTo({ | |
120 | + url:'../refundment/refundment', | |
121 | + }) | |
122 | + }, | |
123 | + torefunProgress(){ | |
124 | + uni.navigateTo({ | |
125 | + url:'../refundProgress/refundProgress' | |
126 | + }) | |
117 | 127 | } |
118 | 128 | } |
119 | 129 | } |
... | ... | @@ -240,6 +250,7 @@ |
240 | 250 | box-shadow: 0 0 4px 0 rgba(133,107,107,0.10); |
241 | 251 | border-radius: 6px; |
242 | 252 | border-radius: 6px; |
253 | + width: 100%; | |
243 | 254 | .title{ |
244 | 255 | display: flex; |
245 | 256 | flex-direction: row; | ... | ... |