jufubao-food 1.0.12-beta7 → 1.0.12-beta8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/components/JfbFoodConfirmV2/JfbFoodConfirmV2.vue +31 -2
- package/src/components/JfbFoodProductInfo/JfbFoodProductInfo.vue +6 -4
- package/src/components/JfbFoodProductInfo/Mock.js +62 -0
- package/src/components/JfbFoodProductInfo/XdSku.vue +5 -4
- package/src/components/JfbFoodProductInfo/XdSpu.vue +129 -26
- package/src/components/JfbFoodProductList/JfbFoodProductList.vue +55 -35
package/package.json
CHANGED
|
@@ -135,7 +135,10 @@
|
|
|
135
135
|
</xd-list-item>
|
|
136
136
|
</view>
|
|
137
137
|
|
|
138
|
-
<view :style="
|
|
138
|
+
<view class="placeholderBottom" :style="bottomFixedStylePlaceholder"></view>
|
|
139
|
+
<view v-if="orderInfo.order_status === 'N'" class="alert_bottom" :style="alertBottomStyleComp">
|
|
140
|
+
{{ orderInfo.error_tip }}
|
|
141
|
+
</view>
|
|
139
142
|
<!-- 靠低支付 -->
|
|
140
143
|
<view class="fixe_bottom" :style="prod_bottom">
|
|
141
144
|
<view class="fixed_bottom_body" :style="[bottomBoxStyle]">
|
|
@@ -145,7 +148,7 @@
|
|
|
145
148
|
</view>
|
|
146
149
|
<view>
|
|
147
150
|
<xd-button type="primary" width="200rpx" size="small"
|
|
148
|
-
:disabled="
|
|
151
|
+
:disabled="orderInfo.order_status!=='Y'"
|
|
149
152
|
:radius="bottomBtnRadius + 'rpx'"
|
|
150
153
|
:style="{
|
|
151
154
|
height: bottomBtnHeight + 'rpx',
|
|
@@ -346,6 +349,13 @@
|
|
|
346
349
|
prod_bottom() {
|
|
347
350
|
return this.fixedStyle({height: 0, zIndex: 111});
|
|
348
351
|
},
|
|
352
|
+
alertBottomStyleComp(){
|
|
353
|
+
return this.fixedStyle({paddingBottom: 106, zIndex: 110})
|
|
354
|
+
},
|
|
355
|
+
bottomFixedStylePlaceholder() {
|
|
356
|
+
let tipAlert = this.orderInfo && this.orderInfo.order_status==='N' ? 120: 0
|
|
357
|
+
return this.fixedStyle({paddingBottom: tipAlert, zIndex: 110}, 'bottom', false);
|
|
358
|
+
},
|
|
349
359
|
bottomBoxStyle(){
|
|
350
360
|
return {
|
|
351
361
|
padding: '20rpx'
|
|
@@ -913,6 +923,25 @@
|
|
|
913
923
|
font-size: unit(24,rpx);
|
|
914
924
|
}
|
|
915
925
|
}
|
|
926
|
+
.placeholderBottom{
|
|
927
|
+
|
|
928
|
+
}
|
|
929
|
+
.alert_bottom{
|
|
930
|
+
background: rgba(255, 244, 191, 0.9);
|
|
931
|
+
color: rgba(255, 102, 26, 1);
|
|
932
|
+
display: flex;
|
|
933
|
+
justify-content: center;
|
|
934
|
+
text-align: center;
|
|
935
|
+
height: 60rpx;
|
|
936
|
+
line-height: 60rpx;
|
|
937
|
+
font-size: 28rpx;
|
|
938
|
+
position: fixed;
|
|
939
|
+
right:0;
|
|
940
|
+
left:0;
|
|
941
|
+
bottom:0;
|
|
942
|
+
width: 100%;
|
|
943
|
+
z-index: 111;
|
|
944
|
+
}
|
|
916
945
|
.fixe_bottom{
|
|
917
946
|
background: #FFF;
|
|
918
947
|
box-shadow: 0 0 unit(16, rpx) rgba(0,0,0,.05);
|
|
@@ -146,6 +146,7 @@
|
|
|
146
146
|
return {
|
|
147
147
|
'--main-color': this.mainColor,
|
|
148
148
|
'--bg-color': this.mainColorAlpha,
|
|
149
|
+
'--bg-main-color': this.mainColorAlpha,
|
|
149
150
|
}
|
|
150
151
|
},
|
|
151
152
|
prod_bottom() {
|
|
@@ -363,18 +364,19 @@
|
|
|
363
364
|
font-size: 32rpx;
|
|
364
365
|
color: #333333;
|
|
365
366
|
padding-right: 20rpx;
|
|
367
|
+
font-weight: 500;
|
|
366
368
|
}
|
|
367
369
|
}
|
|
368
370
|
.sku_wrap{
|
|
369
371
|
background-color: #FFFFFF;
|
|
370
|
-
padding:
|
|
371
|
-
margin:
|
|
372
|
+
padding: 24rpx;
|
|
373
|
+
margin: 16rpx;
|
|
372
374
|
border-radius: 16rpx;
|
|
373
375
|
}
|
|
374
376
|
.attr_wrap{
|
|
375
377
|
background-color: #FFFFFF;
|
|
376
|
-
padding:
|
|
377
|
-
margin:
|
|
378
|
+
padding: 24rpx;
|
|
379
|
+
margin: 16rpx;
|
|
378
380
|
border-radius: 16rpx;
|
|
379
381
|
}
|
|
380
382
|
.fixed_bottom{
|
|
@@ -16,6 +16,68 @@ module.exports = {
|
|
|
16
16
|
{
|
|
17
17
|
product_sku: "",
|
|
18
18
|
specs: [
|
|
19
|
+
{
|
|
20
|
+
code: "mahua_1",
|
|
21
|
+
name: "单选",
|
|
22
|
+
required: true,
|
|
23
|
+
multiple: false,
|
|
24
|
+
multiple_min: 1,
|
|
25
|
+
multiple_max: -1,
|
|
26
|
+
is_show_image: true,
|
|
27
|
+
values: [
|
|
28
|
+
{
|
|
29
|
+
code: "507887",
|
|
30
|
+
name: "奥利奥麦旋风",
|
|
31
|
+
image:
|
|
32
|
+
"https://menu-img.mcd.cn/pcm/prod/menu/20220713a/product/MS_507887_320.png",
|
|
33
|
+
price: 0,
|
|
34
|
+
num: 1,
|
|
35
|
+
checked: true,
|
|
36
|
+
enabled: true
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
code: "507888",
|
|
40
|
+
name: "草莓麦旋风",
|
|
41
|
+
image:
|
|
42
|
+
"https://menu-img.mcd.cn/pcm/prod/menu/20220713a/product/MS_507888_320.png",
|
|
43
|
+
price: 0,
|
|
44
|
+
num: 1,
|
|
45
|
+
checked: false,
|
|
46
|
+
enabled: true
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
code: "507889",
|
|
50
|
+
name: "草莓麦旋风",
|
|
51
|
+
image:
|
|
52
|
+
"https://menu-img.mcd.cn/pcm/prod/menu/20220713a/product/MS_507888_320.png",
|
|
53
|
+
price: 2,
|
|
54
|
+
num: 1,
|
|
55
|
+
checked: false,
|
|
56
|
+
enabled: true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
code: "507890",
|
|
60
|
+
name: "草莓麦旋风",
|
|
61
|
+
image:
|
|
62
|
+
"https://menu-img.mcd.cn/pcm/prod/menu/20220713a/product/MS_507888_320.png",
|
|
63
|
+
price: 2,
|
|
64
|
+
num: 1,
|
|
65
|
+
checked: false,
|
|
66
|
+
enabled: true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
code: "507891",
|
|
70
|
+
name: "草莓麦旋风",
|
|
71
|
+
image:
|
|
72
|
+
"https://menu-img.mcd.cn/pcm/prod/menu/20220713a/product/MS_507888_320.png",
|
|
73
|
+
price: 3,
|
|
74
|
+
num: 1,
|
|
75
|
+
checked: false,
|
|
76
|
+
enabled: true
|
|
77
|
+
},
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
|
|
19
81
|
{
|
|
20
82
|
code: "Cupsize",
|
|
21
83
|
name: "杯型",
|
|
@@ -267,7 +267,8 @@ export default {
|
|
|
267
267
|
}
|
|
268
268
|
.tag_tit{
|
|
269
269
|
font-size: 28rpx;
|
|
270
|
-
color: #
|
|
270
|
+
color: #333333;
|
|
271
|
+
font-weight: 500;
|
|
271
272
|
margin-bottom: 20rpx;
|
|
272
273
|
display: flex;
|
|
273
274
|
align-items: center;
|
|
@@ -291,14 +292,14 @@ export default {
|
|
|
291
292
|
border-radius: 12rpx;
|
|
292
293
|
background-color: #EDEDED;
|
|
293
294
|
font-size: 28rpx;
|
|
294
|
-
color: #
|
|
295
|
-
line-height:
|
|
295
|
+
color: #333333;
|
|
296
|
+
line-height: 70rpx;
|
|
296
297
|
padding: 0 32rpx;
|
|
297
298
|
margin-right: 20rpx;
|
|
298
299
|
margin-bottom: 20rpx;
|
|
299
300
|
// max-width: 208rpx;
|
|
300
301
|
box-sizing: border-box;
|
|
301
|
-
.uni-one-cut(
|
|
302
|
+
.uni-one-cut(70);
|
|
302
303
|
|
|
303
304
|
&.is-img{
|
|
304
305
|
border: none;
|
|
@@ -1,23 +1,33 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="xd_spu">
|
|
3
3
|
<view class="spu_group" v-for="(item, i) in uiList" :key="item.code">
|
|
4
|
-
<view class="spu_title">{{ item.name }}
|
|
4
|
+
<view class="spu_title">{{ item.name }} <text v-if="item.multiple_max > 0">(请选择{{item.multiple_max}}份)</text></view>
|
|
5
5
|
<view class="specs_list img_list" v-if="item.is_show_image">
|
|
6
6
|
<view v-for="(opt, ii) in item.values" :key="opt.code"
|
|
7
7
|
class="specs_img_item" :class="{ 'active': opt.checked }"
|
|
8
8
|
@click="handleCheck(i, ii)"
|
|
9
9
|
>
|
|
10
10
|
<image class="spec_img" :src="opt.image" mode=""></image>
|
|
11
|
-
<view class="
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
<view class="spec_main">
|
|
12
|
+
<view class="spec_name">{{ opt.name }}</view>
|
|
13
|
+
<view class="spec_price">
|
|
14
|
+
<template v-if="opt.price">+{{ opt.price/100 }}元</template>
|
|
15
|
+
</view>
|
|
16
|
+
<view v-if="item.multiple" class="spec_num" @click.stop>
|
|
17
|
+
<!-- <xd-number v-if="!checkIsDisabled(i, ii)" width="160" v-model="opt.num" :min="0" :max="99" @change="val => handleSpeNum(val, i, ii)"></xd-number> -->
|
|
18
|
+
<view v-if="!checkIsDisabled(i, ii)" class="num_box">
|
|
19
|
+
<view class="opt_box num_minus" @click="handleNumMinus(opt, i, ii)">-</view>
|
|
20
|
+
<view class="num_text">{{ opt.num }}</view>
|
|
21
|
+
<view class="opt_box num_plus" @click="handleNumAdd(opt, i, ii)">+</view>
|
|
22
|
+
</view>
|
|
23
|
+
</view>
|
|
15
24
|
</view>
|
|
16
|
-
<view class="p_t_r">
|
|
25
|
+
<!-- <view class="p_t_r">
|
|
17
26
|
<xd-radio v-if="item.multiple" :disabled="checkIsDisabled(i, ii)" class="xdCheckbox" v-model="opt.checked" :isClickEvent="false"></xd-radio>
|
|
18
27
|
<xd-radio v-else class="xdRadio" v-model="opt.checked" :isClickEvent="false"></xd-radio>
|
|
19
|
-
</view>
|
|
28
|
+
</view> -->
|
|
20
29
|
</view>
|
|
30
|
+
<view v-if="item.values.length%3===2" style="width:200rpx;height:1px;"></view>
|
|
21
31
|
</view>
|
|
22
32
|
<view class="specs_list" v-else>
|
|
23
33
|
<view v-for="(opt, ii) in item.values" :key="opt.code"
|
|
@@ -47,7 +57,7 @@ export default {
|
|
|
47
57
|
type: Array,
|
|
48
58
|
default: ()=>[
|
|
49
59
|
{
|
|
50
|
-
"code":"Cupsize","name":"杯型","required":
|
|
60
|
+
"code":"Cupsize","name":"杯型","required":true,"multiple":true,"multiple_min":1,"multiple_max":2,"is_show_image": true,
|
|
51
61
|
"values":[
|
|
52
62
|
{"code":"Tall","name":"中杯","image":"https://image.quanma51.com/self/mahua/sbk/product/6cdc540a91a84b2eb6b58ac510725a48!img","price":0,"num":1,"checked":true,"enabled":true},
|
|
53
63
|
{"code":"Grande","name":"大杯","image":"https://image.quanma51.com/self/mahua/sbk/product/782ac850a8c14bd38b7b5a22f03d6c74!img","price":600,"num":1,"checked":false,"enabled":true},
|
|
@@ -65,7 +75,13 @@ export default {
|
|
|
65
75
|
watch: {
|
|
66
76
|
list: {
|
|
67
77
|
handler(val){
|
|
68
|
-
this.uiList = val
|
|
78
|
+
this.uiList = val.map(item => {
|
|
79
|
+
item.values = item.values.map(opt => {
|
|
80
|
+
if(!opt.checked) opt.num = 0;
|
|
81
|
+
return opt;
|
|
82
|
+
})
|
|
83
|
+
return item;
|
|
84
|
+
});
|
|
69
85
|
},
|
|
70
86
|
immediate: true,
|
|
71
87
|
},
|
|
@@ -78,10 +94,44 @@ export default {
|
|
|
78
94
|
}
|
|
79
95
|
},
|
|
80
96
|
methods: {
|
|
97
|
+
handleNumAdd(opt, i, ii){
|
|
98
|
+
let parent = this.uiList[i];
|
|
99
|
+
let maxNum = parent.multiple_max;
|
|
100
|
+
let curNum = 0;
|
|
101
|
+
for(let j = 0; j < parent.values.length; j++){
|
|
102
|
+
if(parent.values[j].checked){
|
|
103
|
+
curNum += parent.values[j].num;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if(curNum >= maxNum) return;
|
|
107
|
+
if(this.checkIsDisabled(i, ii)) return;
|
|
108
|
+
this.$set(this.uiList[i].values[ii], 'num', opt.num + 1);
|
|
109
|
+
this.$set(this.uiList[i].values[ii], 'checked', true)
|
|
110
|
+
},
|
|
111
|
+
handleNumMinus(opt, i, ii){
|
|
112
|
+
let curNum = opt.num;
|
|
113
|
+
let parent = this.uiList[i];
|
|
114
|
+
if(curNum <= 0) return;
|
|
115
|
+
//如果是必选项,且最后一个选中项,则不允许减少到0
|
|
116
|
+
if(parent.required){
|
|
117
|
+
let checkedArr = this.uiList[i].values.filter(opt => opt.checked);
|
|
118
|
+
if(checkedArr.length === 1 && checkedArr[0].num === 1) return;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
let nextVal = opt.num - 1;
|
|
122
|
+
this.$set(this.uiList[i].values[ii], 'num', nextVal);
|
|
123
|
+
if(nextVal === 0){
|
|
124
|
+
this.$set(this.uiList[i].values[ii], 'checked', false)
|
|
125
|
+
}
|
|
126
|
+
},
|
|
81
127
|
handleCheck(i, ii){
|
|
128
|
+
let firstChild = this.uiList[i];
|
|
129
|
+
if(firstChild.multiple) return;
|
|
82
130
|
let curVal = this.uiList[i].values[ii];
|
|
83
131
|
if(!curVal.enabled) return;
|
|
84
|
-
|
|
132
|
+
this.setUIListChecked(i, ii);
|
|
133
|
+
},
|
|
134
|
+
setUIListChecked(i, ii){
|
|
85
135
|
this.uiList = this.uiList.map((item, j) => {
|
|
86
136
|
if(j === i){
|
|
87
137
|
let checkedArr = item.values.filter(opt => opt.checked);
|
|
@@ -151,7 +201,8 @@ export default {
|
|
|
151
201
|
.spu_title{
|
|
152
202
|
font-size: 28rpx;
|
|
153
203
|
color: #333333;
|
|
154
|
-
margin-bottom:
|
|
204
|
+
margin-bottom: 24rpx;
|
|
205
|
+
font-weight: 500;
|
|
155
206
|
}
|
|
156
207
|
.specs_list{
|
|
157
208
|
display: flex;
|
|
@@ -162,21 +213,25 @@ export default {
|
|
|
162
213
|
}
|
|
163
214
|
|
|
164
215
|
.specs_img_item{
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
border: 1px solid #EEEEEE;
|
|
168
|
-
border-radius: 4rpx;
|
|
216
|
+
border: 1px solid #F8F8F8;
|
|
217
|
+
border-radius: 8rpx;
|
|
169
218
|
display: flex;
|
|
170
219
|
flex-direction: column;
|
|
171
220
|
align-items: center;
|
|
172
221
|
font-size: 24rpx;
|
|
173
222
|
box-sizing: border-box;
|
|
174
|
-
padding: 16rpx;
|
|
175
223
|
color: #333333;
|
|
176
224
|
position: relative;
|
|
225
|
+
margin-bottom: 16rpx;
|
|
226
|
+
overflow: hidden;
|
|
177
227
|
|
|
178
228
|
&.active{
|
|
179
|
-
border-color:
|
|
229
|
+
border-color: var(--main-color);
|
|
230
|
+
|
|
231
|
+
.spec_main{
|
|
232
|
+
background-color: var(--bg-main-color);
|
|
233
|
+
color: var(--main-color);
|
|
234
|
+
}
|
|
180
235
|
}
|
|
181
236
|
.p_t_r{
|
|
182
237
|
position: absolute;
|
|
@@ -190,14 +245,60 @@ export default {
|
|
|
190
245
|
}
|
|
191
246
|
|
|
192
247
|
.spec_img{
|
|
193
|
-
width:
|
|
194
|
-
height:
|
|
248
|
+
width: 212rpx;
|
|
249
|
+
height: 212rpx;
|
|
250
|
+
}
|
|
251
|
+
.spec_main{
|
|
252
|
+
background-color: #F8F8F8;
|
|
253
|
+
width: 100%;
|
|
254
|
+
display: flex;
|
|
255
|
+
flex-direction: column;
|
|
256
|
+
align-items: center;
|
|
257
|
+
font-size: 28rpx;
|
|
258
|
+
color: #333333;
|
|
259
|
+
flex: 1;
|
|
195
260
|
}
|
|
196
261
|
.spec_name{
|
|
197
262
|
margin-top: 16rpx;
|
|
198
263
|
}
|
|
264
|
+
.spec_price{
|
|
265
|
+
height: 28rpx;
|
|
266
|
+
margin: 14rpx 0 20rpx;
|
|
267
|
+
line-height: 1;
|
|
268
|
+
}
|
|
199
269
|
.spec_num{
|
|
200
|
-
margin-
|
|
270
|
+
margin-bottom: 20rpx;
|
|
271
|
+
}
|
|
272
|
+
.num_box{
|
|
273
|
+
display: flex;
|
|
274
|
+
justify-content: center;
|
|
275
|
+
align-items: center;
|
|
276
|
+
|
|
277
|
+
.num_text{
|
|
278
|
+
padding: 0 40rpx;
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
.opt_box{
|
|
282
|
+
border-radius: 50%;
|
|
283
|
+
width: 40rpx;
|
|
284
|
+
height: 40rpx;
|
|
285
|
+
display: flex;
|
|
286
|
+
justify-content: center;
|
|
287
|
+
align-items: center;
|
|
288
|
+
font-size: 28rpx;
|
|
289
|
+
box-sizing: border-box;
|
|
290
|
+
padding-bottom: 4rpx;
|
|
291
|
+
|
|
292
|
+
&.num_plus{
|
|
293
|
+
background-color: var(--main-color);
|
|
294
|
+
color: #FFFFFF;
|
|
295
|
+
}
|
|
296
|
+
&.num_minus{
|
|
297
|
+
border: 1px solid var(--main-color);
|
|
298
|
+
color: var(--main-color);
|
|
299
|
+
background-color: #FFFFFF;
|
|
300
|
+
}
|
|
301
|
+
}
|
|
201
302
|
}
|
|
202
303
|
::v-deep .uni-numbox{
|
|
203
304
|
height: 40rpx;
|
|
@@ -219,16 +320,18 @@ export default {
|
|
|
219
320
|
|
|
220
321
|
.specs_item{
|
|
221
322
|
padding: 16rpx 32rpx;
|
|
222
|
-
background-color: #
|
|
223
|
-
color: #
|
|
224
|
-
font-size:
|
|
225
|
-
border-radius:
|
|
323
|
+
background-color: #F8F8F8;
|
|
324
|
+
color: #333333;
|
|
325
|
+
font-size: 28rpx;
|
|
326
|
+
border-radius: 8rpx;
|
|
226
327
|
margin-bottom: 16rpx;
|
|
227
328
|
margin-right: 16rpx;
|
|
329
|
+
border: 1px solid #F8F8F8;
|
|
228
330
|
|
|
229
331
|
&.active{
|
|
230
|
-
background-color:
|
|
231
|
-
color:
|
|
332
|
+
background-color: var(--bg-main-color);
|
|
333
|
+
color: var(--main-color);
|
|
334
|
+
border: 1px solid var(--main-color);
|
|
232
335
|
}
|
|
233
336
|
}
|
|
234
337
|
}
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
:scroll-top="prodScrollTop"
|
|
48
48
|
@scroll="handleScroll"
|
|
49
49
|
>
|
|
50
|
-
<view v-for="(cate, i) in
|
|
50
|
+
<view v-for="(cate, i) in showCategoryList" :key="cate.category_id"
|
|
51
51
|
class="product_group"
|
|
52
52
|
:id="getID(cate)"
|
|
53
53
|
:data-next="cate.nextHeight"
|
|
@@ -68,28 +68,21 @@
|
|
|
68
68
|
<view class="prod_specs" v-if="item.sub_name">{{item.sub_name}}</view>
|
|
69
69
|
<view class="prod_price">
|
|
70
70
|
<view style="display:flex;align-items:center">
|
|
71
|
-
<CusPrice :isPlus="is_plus_site"
|
|
71
|
+
<CusPrice :isPlus="is_plus_site" :isShowIcon="false" :showPrice="item.show_prices"></CusPrice>
|
|
72
72
|
</view>
|
|
73
|
-
<view style="font-size: 28rpx;color:#999"
|
|
74
|
-
<view v-if="item.has_choose" class="chose_spu"
|
|
75
|
-
|
|
73
|
+
<view style="font-size: 28rpx;color:#999">
|
|
74
|
+
<view v-if="item.has_choose" class="chose_spu" @click="toProductDetail(item)">
|
|
75
|
+
选规格
|
|
76
|
+
<view v-if="item.num" class="cart_edg">{{ item.num }}</view>
|
|
77
|
+
</view>
|
|
78
|
+
<view v-else>
|
|
79
|
+
<xd-number v-if="item.num" v-model="item.num" @change="val => handleCartNumChange(val, item)"></xd-number>
|
|
80
|
+
<xd-font-icon v-else icon="iconaddcart" :color="mainColor" size="46"></xd-font-icon>
|
|
81
|
+
</view>
|
|
76
82
|
</view>
|
|
77
83
|
</view>
|
|
78
84
|
</view>
|
|
79
85
|
</view>
|
|
80
|
-
<!-- <cus-product
|
|
81
|
-
:image-radius="imageRadius"
|
|
82
|
-
:brand-color="brandColor"
|
|
83
|
-
:height="200"
|
|
84
|
-
:cell="column_num"
|
|
85
|
-
:name-font="itemFontStyle"
|
|
86
|
-
:product-config="productConfig"
|
|
87
|
-
:isPlus="is_plus_site"
|
|
88
|
-
:item="item"
|
|
89
|
-
:row-spacing="rowSpacing"
|
|
90
|
-
:cell-spacing="itemSpacing"
|
|
91
|
-
@on-product-detail="toProductDetail"
|
|
92
|
-
></cus-product> -->
|
|
93
86
|
</view>
|
|
94
87
|
</view>
|
|
95
88
|
<view class="product_list" v-else>
|
|
@@ -113,7 +106,7 @@
|
|
|
113
106
|
<xd-unit :price="cartPrice" :isOld="false"></xd-unit>
|
|
114
107
|
</view>
|
|
115
108
|
<view>
|
|
116
|
-
<xd-button width="
|
|
109
|
+
<xd-button width="170rpx" size="small" type="primary" :disabled="!cartProductList.length" @click="handleSubmitCart">选好了</xd-button>
|
|
117
110
|
</view>
|
|
118
111
|
</view>
|
|
119
112
|
<view class="cart_product_modal" v-if="cartProductShow">
|
|
@@ -134,7 +127,7 @@
|
|
|
134
127
|
<view class="prod_info">
|
|
135
128
|
<view class="prod_tit"
|
|
136
129
|
:class="{
|
|
137
|
-
prod_tit_one:prod.
|
|
130
|
+
prod_tit_one:prod.sub_name
|
|
138
131
|
}">{{prod.product_name}}</view>
|
|
139
132
|
<!-- <view class="prod_brand" :style="{color:brandTextColor}" v-if="prod.brand_name">{{prod.brand_name}}</view> -->
|
|
140
133
|
<view class="prod_specs" v-if="prod.sub_name">{{prod.sub_name}}</view>
|
|
@@ -150,7 +143,7 @@
|
|
|
150
143
|
</view>
|
|
151
144
|
</view>
|
|
152
145
|
<view v-else class="prod_list">
|
|
153
|
-
<xd-no-data>购物车暂无商品</xd-no-data>
|
|
146
|
+
<xd-no-data height="250rpx" :scaleSize="0.8">购物车暂无商品</xd-no-data>
|
|
154
147
|
</view>
|
|
155
148
|
</view>
|
|
156
149
|
</view>
|
|
@@ -267,6 +260,16 @@
|
|
|
267
260
|
fixed_bottom() {
|
|
268
261
|
return this.fixedStyle({height: 30, zIndex: 111});
|
|
269
262
|
},
|
|
263
|
+
showCategoryList(){
|
|
264
|
+
return this.categoryList.map(item => {
|
|
265
|
+
item.productList = (item.productList || []).map(prod => {
|
|
266
|
+
let cartProd = this.cartProductList.find(item => item.product_id === prod.product_id);
|
|
267
|
+
prod.num = cartProd ? cartProd.num : 0;
|
|
268
|
+
return prod;
|
|
269
|
+
});
|
|
270
|
+
return item;
|
|
271
|
+
})
|
|
272
|
+
},
|
|
270
273
|
},
|
|
271
274
|
watch: {
|
|
272
275
|
container(value, oldValue) {
|
|
@@ -651,7 +654,20 @@
|
|
|
651
654
|
|
|
652
655
|
.jfb-food-product-list {
|
|
653
656
|
&__body{
|
|
654
|
-
background-color: #
|
|
657
|
+
background-color: #FFFFFF;
|
|
658
|
+
|
|
659
|
+
.cart_edg{
|
|
660
|
+
position: absolute;
|
|
661
|
+
right: -8rpx;
|
|
662
|
+
top: -24rpx;
|
|
663
|
+
color: #FFFFFF;
|
|
664
|
+
background-color: #FF4D4F;
|
|
665
|
+
border-radius: 24rpx;
|
|
666
|
+
padding: 0 12rpx;
|
|
667
|
+
font-size: 24rpx;
|
|
668
|
+
// box-sizing: border-box;
|
|
669
|
+
border: 4rpx solid #FFFFFF;
|
|
670
|
+
}
|
|
655
671
|
.flex-center{
|
|
656
672
|
display: flex;
|
|
657
673
|
align-items: center;
|
|
@@ -665,6 +681,7 @@
|
|
|
665
681
|
background-color: #FFFFFF;
|
|
666
682
|
box-sizing: border-box;
|
|
667
683
|
margin-bottom: 20rpx;
|
|
684
|
+
border-bottom: 1px solid #F8F8F8;
|
|
668
685
|
padding: 30rpx;
|
|
669
686
|
position: fixed;
|
|
670
687
|
top: 0;
|
|
@@ -681,18 +698,17 @@
|
|
|
681
698
|
text-overflow: ellipsis;
|
|
682
699
|
max-width: 460rpx;
|
|
683
700
|
flex: 1;
|
|
701
|
+
font-weight: 500;
|
|
684
702
|
}
|
|
685
703
|
}
|
|
686
704
|
.section_main{
|
|
687
705
|
display: flex;
|
|
688
|
-
padding-top: 16rpx;
|
|
689
706
|
box-sizing: border-box;
|
|
690
707
|
.left_nav{
|
|
691
708
|
width: 160rpx;
|
|
692
|
-
background-color: #
|
|
709
|
+
background-color: #F8F8F8;
|
|
693
710
|
font-size: 24rpx;
|
|
694
|
-
|
|
695
|
-
margin-left: 16rpx;
|
|
711
|
+
color: #333333;
|
|
696
712
|
.nav_item{
|
|
697
713
|
padding: 24rpx;
|
|
698
714
|
text-align: center;
|
|
@@ -711,14 +727,15 @@
|
|
|
711
727
|
}
|
|
712
728
|
|
|
713
729
|
&.active{
|
|
714
|
-
color: var(--main-color);
|
|
730
|
+
// color: var(--main-color);
|
|
731
|
+
font-weight: 500;
|
|
715
732
|
&::after{
|
|
716
733
|
content: '';
|
|
717
734
|
position: absolute;
|
|
718
735
|
left: 0;
|
|
719
|
-
top:
|
|
720
|
-
bottom:
|
|
721
|
-
width:
|
|
736
|
+
top: 28rpx;
|
|
737
|
+
bottom: 28rpx;
|
|
738
|
+
width: 12rpx;
|
|
722
739
|
background-color: var(--main-color);
|
|
723
740
|
}
|
|
724
741
|
}
|
|
@@ -726,17 +743,19 @@
|
|
|
726
743
|
}
|
|
727
744
|
.right_product{
|
|
728
745
|
flex: 1;
|
|
729
|
-
margin: 0 16rpx;
|
|
746
|
+
margin: 0 16rpx 0 32rpx;
|
|
730
747
|
|
|
731
748
|
.product_group{
|
|
732
749
|
.group_title{
|
|
733
750
|
font-size: 24rpx;
|
|
751
|
+
color: #333333;
|
|
752
|
+
font-weight: 500;
|
|
734
753
|
background-color: #FFFFFF;
|
|
735
754
|
margin-bottom: 16rpx;
|
|
736
755
|
height: 64rpx;
|
|
737
756
|
line-height: 64rpx;
|
|
738
|
-
text-align: center;
|
|
739
757
|
border-radius: 16rpx;
|
|
758
|
+
padding-left: 16rpx;
|
|
740
759
|
}
|
|
741
760
|
.product_list{
|
|
742
761
|
.product_loading{
|
|
@@ -760,13 +779,14 @@
|
|
|
760
779
|
font-size: 24rpx;
|
|
761
780
|
border-radius: 40rpx;
|
|
762
781
|
box-sizing: border-box;
|
|
782
|
+
position: relative;
|
|
763
783
|
}
|
|
764
784
|
|
|
765
785
|
.prod_img{
|
|
766
786
|
width: 200rpx;
|
|
767
787
|
height: 200rpx;
|
|
768
|
-
margin-right:
|
|
769
|
-
|
|
788
|
+
margin-right: 16rpx;
|
|
789
|
+
background: #f8f8f8;
|
|
770
790
|
// border-radius: 16rpx;
|
|
771
791
|
image{
|
|
772
792
|
width: 100%;
|
|
@@ -893,7 +913,7 @@
|
|
|
893
913
|
.prod_specs{
|
|
894
914
|
padding-top: unit(10, rpx);
|
|
895
915
|
display: block;
|
|
896
|
-
font-size:
|
|
916
|
+
font-size: 28rpx;
|
|
897
917
|
color: #999999;
|
|
898
918
|
line-height: unit(32, rpx);
|
|
899
919
|
}
|