jufubao-mall 2.0.32-beta8 → 2.0.32

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.
Files changed (26) hide show
  1. package/package.json +1 -1
  2. package/src/components/CusCouponChose/CusCouponChose.vue +13 -10
  3. package/src/components/CusEnter/CusEnter.vue +1 -9
  4. package/src/components/CusPoster/CusPoster.vue +62 -17
  5. package/src/components/CusProduct/CusProduct.vue +184 -576
  6. package/src/components/CusShops/CusShops.vue +209 -409
  7. package/src/components/CusTab/CusTab.vue +22 -159
  8. package/src/components/JfbMallProductInfo/cusAttr/content.js +0 -2
  9. package/src/components/JfbMallProductList/Attr.js +0 -1
  10. package/src/components/JfbMallProductList/JfbMallProductList.vue +1 -7
  11. package/src/components/JfbMallProductList/XdCateV1.vue +1 -0
  12. package/src/components/SkeProduct/SkeProduct.vue +3 -88
  13. package/src/components/CusListItem/CusListItem.vue +0 -141
  14. package/src/components/CusPrice/CusPrice.vue +0 -391
  15. package/src/components/CusVipList/CusVipList.vue +0 -169
  16. package/src/components/JfbMallNetworkMedia/Api.js +0 -94
  17. package/src/components/JfbMallNetworkMedia/Attr.js +0 -20
  18. package/src/components/JfbMallNetworkMedia/JfbMallNetworkMedia.vue +0 -1167
  19. package/src/components/JfbMallNetworkMedia/JfbMallNetworkMediaLess.less +0 -80
  20. package/src/components/JfbMallNetworkMedia/JfbMallNetworkMediaMixin.js +0 -30
  21. package/src/components/JfbMallNetworkMedia/Mock.js +0 -372
  22. package/src/components/JfbMallNetworkMedia/cusAttr/advanced.js +0 -60
  23. package/src/components/JfbMallNetworkMedia/cusAttr/content.js +0 -230
  24. package/src/components/JfbMallNetworkMedia/cusAttr/font.js +0 -123
  25. package/src/components/JfbMallNetworkMedia/cusAttr/icon.js +0 -257
  26. package/src/components/JfbMallNetworkMedia/cusAttr/style.js +0 -12
@@ -1,135 +1,141 @@
1
1
 
2
2
  <template>
3
- <view :style="[{'--main-color': mainColor,'--sub-main-color': subMainColor},activeComp]">
4
- <view class="shopping-ske-box" v-if="dataShopList ===null">
5
- <view
6
- class="shopping-ske-item"
7
- v-for="item in skeNumComp"
8
- :key="item"
9
- :style="[cusStyle['item']||{}]"
10
- >
11
- <view class="shopping-ske-image" v-if="image">
12
- <view></view>
13
- </view>
14
- <view class="shopping-ske-cont">
15
- <view class="shopping-ske-name"></view>
16
- <view class="shopping-ske-address">
17
- <view class="address" v-if="address"></view>
18
- <view class="shopping-ske-v2" v-if="layout === 'v2'">
19
- <view>
20
- <view class="ske1"></view>
21
- <view class="ske2"></view>
22
- <view class="ske3"></view>
23
- <view class="ske4"></view>
24
- </view>
25
- <view>
26
- <view class="ske1"></view>
27
- <view class="ske2"></view>
28
- <view class="ske3"></view>
29
- </view>
30
- </view>
31
- </view>
32
- <view class="shopping-ske-v3" v-if="layout === 'v3'">
33
- <view></view>
34
- <view>
35
- <view></view>
36
- <view></view>
37
- </view>
38
-
39
- </view>
40
- </view>
41
- </view>
42
- </view>
3
+ <view :style="[{'--main-color': mainColor,'--sub-main-color': subMainColor}]">
4
+ <view class="shopping-ske" v-if="dataList ===null">null</view>
43
5
  <view
44
6
  class="shopping"
45
- v-else-if="dataShopList.length > 0"
7
+ v-else-if="dataList.length > 0"
46
8
  :style="[cusStyle['box']||{}]"
47
9
  >
48
10
  <view
49
11
  class="shopping-list"
50
- v-for="(item) in dataShopList"
12
+ v-for="item in dataList"
51
13
  :key="item[compMK.id]"
52
- :id="`shop_item_${item[compMK.id]}`"
53
- :class="{active: [
54
- item[compMK.id].toString(),
55
- item[compMK.shop_id].toString()
56
- ].includes(selectId)}"
57
14
  :style="[cusStyle['item']||{}]"
58
- @click="handleClick(item, 'DL')"
15
+ @click="handleClick(item, 'handleToDetail', 'DL')"
59
16
  >
60
17
  <!--图片区域-->
61
18
  <view class="shopping-img" v-if="image" :style="[cusStyle['image']||{}]">
62
- <image v-if="!item.errorStatus" :src="item[compMK.image]" :alt="item[compMK.name]" mode="aspectFit" @error="handleError(item)"></image>
63
19
  <image v-if="item.errorStatus" :src="errorImage" :alt="item[compMK.name]"></image>
20
+ <image v-else :src="item[compMK.image]" :alt="item[compMK.name]" mode="aspectFit" @error="handleError(item)"></image>
64
21
  </view>
65
22
  <!--图片区域-->
66
23
  <!--信息区域-->
67
24
  <view class="shopping-cont" :class="{noImage: !image}">
68
25
  <view class="shopping-cont-nameInfo">
69
26
  <view class="shopping-name">
70
- <view class="name" :style="[cusStyle['name']||{}]">{{item[compMK.name]}}</view>
71
- <view class="distance" v-if="!address && distance && layout === 'v2' && item[compMK.distance]">{{item[compMK.distance]}}</view>
27
+ <view class="name" :style="[cusStyle['name']||{}]" v-html="item[compMK.name]"></view>
28
+ <view
29
+ class="distance"
30
+ v-if="distance && distanceStyle === 'title' && item[compMK.distance]"
31
+ v-html="item[compMK.distance]"
32
+ :style="[cusStyle['distance']||{}]"
33
+ ></view>
34
+ <view class="priceAndDiscount" v-if="distanceStyle === 'button'">
35
+ <view class="price" v-if="price && item[compMK.price]">
36
+ <text>{{item[compMK.price]|filterPrice}}</text>
37
+ <text>起</text>
38
+ </view>
39
+ <view class="discount" v-if="discount && item[compMK.discount]">
40
+ <text>{{item[compMK.discount]|filterDiscount}}</text>
41
+ <text>折</text>
42
+ </view>
43
+ </view>
72
44
  </view>
73
45
  <view class="shopping-info">
74
46
  <view
75
- :class="{'shopping-address-v2': layout === 'v2'}"
76
47
  class="shopping-address"
77
- v-if="address || distance"
78
- >
79
- <view class="address one" v-if="address && item[compMK.address]">{{item[compMK.address]}}</view>
80
- <view class="distance" v-if="address && distance && layout === 'v2' && item[compMK.distance]">{{item[compMK.distance]}}</view>
81
- </view>
82
- <view class="tags-info" v-if="layout === 'v2' && isBtn">
83
- <view
84
- class="tags-info-item"
85
- v-for="btn in item[compMK.options]"
86
- :key="btn['consume_mode']"
87
- >
88
- <view class="tags-info-icon"><xd-font-icon :icon="btn.icon" size="32" :color="iconThemeStyle[btn.icon]"></xd-font-icon></view>
89
- <view class="tags-info-price" v-if="price && btn.show_prices && btn.show_prices.length > 0">
90
- <cus-price
91
- type="normal"
92
- :isPlus="isPlus"
93
- :icon-size=".20"
94
- text-font-size="22"
95
- :showPrice="btn.show_prices"
96
- ></cus-price>
97
- </view>
98
- <view class="tags-info-desc">{{btn.desc}}</view>
99
- <view
100
- class="tags-info-btn"
101
- v-if="btn['consume_mode'] !== 'CODE'"
102
- @click.stop="handleClick(item, btn['consume_mode'])"
103
- ><view>{{btn['consume_mode']|filterName}}</view></view>
48
+ :class="{one: tagPos === 'info'}"
49
+ v-if="address"
50
+ v-html="item[compMK.address]"
51
+ ></view>
52
+ <view class="tags-info" v-if="tagPos === 'info'">
53
+ <view class="tags-info-tag">
54
+ <xd-font-icon icon="iconduihuan" color="#43CF7C" size="28" style="margin-right: 8rpx;"></xd-font-icon>
55
+ <text>支持到店使用</text>
104
56
  </view>
105
57
  </view>
106
58
  </view>
107
59
  </view>
108
- <view class="shopping-btn" v-if="layout === 'v3'">
60
+ <view class="shopping-btn">
109
61
  <!--v3-->
110
- <view class="distance" v-show="distance && item[compMK.distance]" >
62
+ <view class="distance" v-if="distanceStyle === 'button' && item[compMK.distance]" >
111
63
  <xd-font-icon :style="[cusStyle['distance']||{}]" icon="icondizhi" size="26"></xd-font-icon>
112
- <text :style="[cusStyle['distance']||{}]" style="margin-left: 10rpx" >{{item[compMK.distance]}}</text>
64
+ <text :style="[cusStyle['distance']||{}]" style="margin-left: 10rpx" v-html="item[compMK.distance]"></text>
113
65
  </view>
114
- <view class="buttons" v-if="isBtn">
115
- <view
116
- v-for="btn in item[compMK.options]"
117
- :key="btn['consume_mode']"
118
- class="change_btn"
119
- @click.stop="handleClick(item, btn['consume_mode'])"
120
- >
121
- <view>{{btn['consume_mode']|filterName}}</view>
66
+ <!--v3-->
67
+ <!--v2-->
68
+ <view v-if="tagPos === 'info'">
69
+ <view class="priceAndDiscount">
70
+ <view class="price" v-if="price && item[compMK.price]">
71
+ <text>{{item[compMK.price]|filterPrice}}</text>
72
+ <text>起</text>
73
+ </view>
74
+ <view class="discount" v-if="discount && item[compMK.discount]">
75
+ <text>{{item[compMK.discount]|filterDiscount}}</text>
76
+ <text>折</text>
77
+ </view>
122
78
  </view>
123
79
  </view>
124
- <!--v3-->
80
+ <!--v2-->
81
+ <!--v1-->
82
+ <template v-if="tagPos === 'btn'">
83
+ <view v-if="!isShowBtn" class="tags">
84
+ <view :style="[compTagsStyle]" v-if="item[compMK.mode].includes('SELL')">支持核销</view>
85
+ <view :style="[compTagsStyle]" v-if="item[compMK.mode].includes('SEAT')">在线选座</view>
86
+ </view>
87
+ <view class="priceAndDiscount">
88
+ <view class="price" v-if="price && item[compMK.price]">
89
+ <text>{{item[compMK.price]|filterPrice}}</text>
90
+ <text>起</text>
91
+ </view>
92
+ <view class="discount" v-if="discount && item[compMK.discount]">
93
+ <text>{{item[compMK.discount]|filterDiscount}}</text>
94
+ <text>折</text>
95
+ </view>
96
+ </view>
97
+ </template>
98
+ <!--v1-->
99
+ <!--按钮-->
100
+ <view class="buttons" v-if="isShowBtn && isBtn">
101
+ <!-- CV:店员核销(小蜜蜂);WB:用户扫水牌;CR:收银机;POS:POS机;JHD:聚好兑; QP:快捷支付;MC电影去购买-->
102
+ <template v-if="item[compMK.mode].includes('SELL')">
103
+ <view
104
+ v-if="item[compMK.defType] === 'WB' && compEntry.scan === true"
105
+ class="change_btn"
106
+ @click.stop="handleClick(item, 'handleToScan', item[compMK.defType])"
107
+ >{{ compNames.scan }}</view>
108
+ <view
109
+ v-else-if="item[compMK.defType] === 'QP' && compEntry.takeGoods === true"
110
+ class="change_btn"
111
+ @click.stop="handleClick(item,'handleToEasyPay',item[compMK.defType])"
112
+ >{{ compNames.takeGoods }}</view>
113
+ <view
114
+ v-else-if="item[compMK.defType] === 'JHD' && compEntry.jhd === true"
115
+ class="change_btn"
116
+ @click.stop="handleClick(item,'handleToExchange',item[compMK.defType])"
117
+ >{{ compNames.jhd }}</view>
118
+ </template>
119
+ <template v-if="item[compMK.mode].includes('SEAT') && compEntry.buyTicket === true">
120
+ <view
121
+ class="change_btn"
122
+ @click.stop="handleClick(item,'toSchedulePath','SEAT')"
123
+ >{{ compNames.buyTicket}}</view>
124
+ </template>
125
+ <template v-if="item[compMK.mode].includes('CODE') && compEntry.code === true">
126
+ <view
127
+ class="change_btn code"
128
+ @click.stop="handleClick(item,'toCodePath','CODE')"
129
+ >{{ compNames.code}}</view>
130
+ </template>
131
+ </view>
132
+ <!--按钮-->
125
133
  </view>
126
134
  </view>
127
135
  <!--信息区域-->
128
136
  </view>
129
137
  </view>
130
- <view class="shopping-empty" v-else-if="dataShopList.length === 0">
131
- <xd-no-data :scale-size="2" icon-type="shop">暂无门店信息</xd-no-data>
132
- </view>
138
+ <view class="shopping-empty" v-else-if="dataList.length === 0"></view>
133
139
  </view>
134
140
 
135
141
  </template>
@@ -137,17 +143,12 @@
137
143
  <script>
138
144
  import XdFontIcon from "@/components/XdFontIcon/XdFontIcon.vue";
139
145
  import Color from "color";
140
- import CusPrice from "@/components/CusPrice/CusPrice.vue";
141
- import XdNoData from "@/components/XdNoData/XdNoData.vue";
142
- import getServiceUrl from "@/common/getServiceUrl";
143
146
  let $vm = null;
144
147
 
145
148
  export default {
146
149
  name:'CusShops',
147
150
  components:{
148
- CusPrice,
149
- XdFontIcon,
150
- XdNoData
151
+ XdFontIcon
151
152
  },
152
153
  props:{
153
154
  list: {
@@ -170,7 +171,7 @@ export default {
170
171
  content:{
171
172
  type: Array|null,
172
173
  default(){
173
- return ['image', 'address', 'distance','price']
174
+ return ['image', 'address', 'distance', 'discount','price']
174
175
  }
175
176
  },
176
177
  isShowBtn:{
@@ -187,7 +188,7 @@ export default {
187
188
  },
188
189
  names:{
189
190
  type: Object,
190
- //jhd,wb,qp,seat,code,hdself,travel
191
+ //jhd,scan,takeGoods,buyTicket,code
191
192
  default(){
192
193
  return {}
193
194
  }
@@ -198,41 +199,29 @@ export default {
198
199
  return {}
199
200
  }
200
201
  },
201
- //jhd,wb,qp,seat,code,hdself,travel
202
202
  entry:{
203
203
  type:Object,
204
204
  default(){
205
205
  return {}
206
206
  }
207
- },
208
- selectId:{
209
- type:String,
210
- default:''
211
- },
212
- //是否智能识别一个按钮模式
213
- isAutoJump:{
214
- type:Array,
215
- default(){
216
- return []
217
- },
218
- },
207
+ }
219
208
  },
220
209
  data(){
221
210
  return {
211
+ distanceStyle:'title',//title:标题后面 button: 操作按钮左侧
212
+ tagPos: 'info', //info=>信息下方 btn: 操作按钮左侧
222
213
  errorImage:'https://img0.jufubao.cn/common/empty/shop.png?v1=1',
223
214
 
224
215
  //内容区状态
225
216
  image: false,
226
- address:false,
217
+ address:true,
227
218
  distance: false,
228
219
  price: false,
229
- isPlus:false,
220
+ discount: false,
230
221
 
231
222
  //数据键值map关系
232
223
  defMapKeys:{
233
224
  id: 'resource_shop_id',
234
- brand_id: 'brand_id',//品牌ID
235
- shop_id:'shop_id',//整理前的门店ID
236
225
  name: 'resource_shop_name', //店铺名字
237
226
  distance: 'distance', //距离
238
227
  address:'address', //店铺地址
@@ -240,164 +229,129 @@ export default {
240
229
  discount : 'discount_ratio', //折扣
241
230
  price:'price', //价格
242
231
  mode:'consume_mode',//标签类型[]
243
- options:'consume_options',
232
+ defType:'default_consume_type',
244
233
  },
245
234
 
246
235
  //自定义名称
247
236
  defName:{
248
- jhd:'聚好兑', //聚好兑
249
- wb:'扫一扫', //扫一扫
250
- qp:'去提货', //快捷码
251
- seat: "去订票", //在选选座
252
- code:'电子码', //电子码名字
253
- hdself:'去下单', //到店自取名字
254
- travel: '去订票 ', //旅游订票
237
+ jhd: "聚好兑", //聚好兑名称
238
+ scan: "扫一扫", //扫一扫名称
239
+ takeGoods: "展快捷码", //展快捷码名称
240
+ buyTicket: "去购票", //去购票名称
241
+ code:'电子码' //电子码名字
255
242
  },
256
243
 
257
244
  defEntry:{
258
- jhd:false, //聚好兑
259
- wb:false, //扫一扫
260
- qp:false, //快捷码
261
- seat: false, //在选选座
262
- code:false, //电子码
263
- hdself:false, //到店自取
264
- travel: false, //旅游订票
245
+ jhd: false, //聚好兑名称
246
+ scan: false, //扫一扫名称
247
+ takeGoods: false, //展快捷码名称
248
+ buyTicket: false, //去购票名称
249
+ code:false //电子码名字
265
250
  },
266
251
 
267
-
268
- dataShopList:null,
269
-
270
- iconThemeStyle:{}
252
+ //按钮功能
253
+ buttons:[],
271
254
  }
272
255
  },
273
256
  computed:{
274
- skeNumComp(){
275
- return this.layout === 'v2'?5: 6;
257
+ dataList(){
258
+ if(this.list === null) return null;
259
+ else if(this.$xdUniHelper.checkVarType(this.list) === 'array'){
260
+ return this.$xdUniHelper.cloneDeep(this.list);
261
+ }
262
+ return []
276
263
  },
277
- activeComp(){
278
- let border = `rgba(${Color(this.mainColor).alpha(0.6).array().join(',')})`;
279
- let bgColor= `rgba(${Color(this.mainColor).alpha(.05).array().join(',')})`;
264
+
265
+ compTagsStyle(){
266
+ let textColor = `rgba(${Color(this.mainColor).alpha(0.1).array().join(',')})`;
280
267
  return {
281
- '--xd-bgColor': bgColor,
282
- '--xd-border': `1px solid ${border}`
268
+ backgroundColor: textColor,
269
+ color: this.mainColor,
283
270
  }
284
271
  },
285
272
 
286
273
  compNames(){
287
- return Object.assign({},this.defName,this.$xdUniHelper.cloneDeep(this.names))
274
+ return Object.assign({}, this.defName,this.$xdUniHelper.cloneDeep(this.names) )
288
275
  },
289
-
290
276
  compMK(){
291
277
  return Object.assign({},this.defMapKeys,this.$xdUniHelper.cloneDeep(this.mapKeys))
292
278
  },
293
279
  compEntry(){
294
280
  return Object.assign({},this.defEntry,this.$xdUniHelper.cloneDeep(this.entry))
295
281
  },
296
-
297
282
  isBtn(){
298
283
  let flag = false;
299
284
  Object.keys(this.compEntry).map(key=>{
300
285
  if(this.compEntry[key] === true) flag = true;
301
286
  });
302
- return flag && this.isShowBtn
287
+ return flag
303
288
  }
304
289
  },
305
290
  filters:{
306
- filterName(val){
307
- return $vm.compNames[val.toLocaleLowerCase()];
291
+ filterPrice(val){
292
+ if(typeof val === 'string') val = Number(val)
293
+ return $vm.$xdUniHelper.divisionFloatNumber(val,100);
294
+ },
295
+ filterDiscount(val){
296
+ if(typeof val === 'string') val = Number(val)
297
+ return $vm.$xdUniHelper.divisionFloatNumber(val,1000);
308
298
  },
309
299
  },
310
300
  watch:{
301
+ layout(val){
302
+ this.layoutParse(val)
303
+ },
311
304
  content(val){
312
305
  this.contentParse(val)
313
306
  },
314
- list(){
315
- this.initData();
316
- },
317
- compMK(){
318
- this.initData();
319
- },
320
- compEntry(){
321
- this.initData();
322
- }
323
307
  },
324
308
  created() {
325
309
  $vm = this;
310
+ this.layoutParse(this.layout);
326
311
  this.contentParse(this.content);
327
- this.initData();
328
- this.iconThemeStyle = {
329
- iconduihuan: '#43CF7C',
330
- iconquan: '#FF8D1A',
331
- icongou: '#FF5733',
332
- iconzuo: '#3091FF',
333
- iconpiao1: '#3091FF'
334
- }
335
312
  },
336
313
  methods:{
337
- filterNotSupportCode(options){
338
- let supportCode = ['seat','hdself','travel','code','jhd','wb','qp'];
339
- return options.filter(it=>{
340
- return supportCode.includes(it.consume_mode.toLocaleLowerCase()); //过滤不支持的按钮
341
- }).filter(it=>{
342
- return this.entry[it.consume_mode.toLocaleLowerCase()] //过滤未开启按钮设置
343
- });
344
- },
345
- checkOneCodeDetailJumpCode(item){
346
- //未开启智能识别功能并且没有返回options字段
347
- if(this.isAutoJump.length === 0 ||
348
- item[this.compMK['options']] === undefined ||
349
- item[this.compMK['options']].length === 0
350
- ) return false
351
-
352
-
353
- //按钮数量大于1一条不处理
354
- let options = item[this.compMK['options']];
355
- if(options.length > 1) return false;
356
-
357
- //智能识别
358
- let filterCode = ['seat','hdself','travel'];
359
- return filterCode.includes(options[0].consume_mode.toLocaleLowerCase())
314
+ handleError(item){
315
+ item.errorStatus = true;
360
316
  },
361
- initData(){
362
- if(this.list === null) this.dataShopList = null;
363
- else if(this.$xdUniHelper.checkVarType(this.list) === 'array'){
364
- this.dataShopList = this.$xdUniHelper.cloneDeep(this.list).map((item,index)=>{
317
+ layoutParse(value){
318
+ let distanceStyle = 'title';
319
+ let tagPos = '';
365
320
 
366
- //过滤不支持的按钮
367
- if(item[this.compMK['options']] && item[this.compMK['options']].length > 0) {
368
- item[this.compMK['options']] = this.filterNotSupportCode(item[this.compMK['options']])
369
- }
370
- else item[this.compMK['options']] = [];
321
+ //布局1
322
+ if(['v1'].includes(value)) {
323
+ tagPos = 'btn'
324
+ }
371
325
 
372
- item[this.compMK['image']] = getServiceUrl(item[this.compMK['image']], 'size2')
373
- //是否智能识别一个按钮模式
374
- item['isOneCodeDetailJumpCode'] = this.checkOneCodeDetailJumpCode(item);
326
+ //布局2
327
+ if(['v2'].includes(value)) {
328
+ tagPos = 'info'
329
+ }
375
330
 
376
- if(item['errorStatus'] === undefined) item['errorStatus'] = false;
377
- return item
378
- });
331
+ //电影模式
332
+ if(['v3'].includes(value)) {
333
+ distanceStyle = 'button';
379
334
  }
380
- else this.dataShopList = [];
381
- },
382
- handleError(item){
383
- item.errorStatus = true;
335
+ this.tagPos = tagPos;
336
+ this.distanceStyle = distanceStyle;
384
337
  },
385
338
  contentParse(value){
386
339
  this.image = value.includes('image')
387
340
  this.address = value.includes('address')
388
341
  this.distance = value.includes('distance')
342
+ //价格和折扣只有在v1,v2线上
389
343
  this.price = value.includes('price')
344
+ this.discount = value.includes('discount')
390
345
  },
391
346
 
392
347
  /**
393
348
  * @description 事件操作
394
349
  * @param item {Object} 数据对象
350
+ * @param funcName {string} 操作方法名字
395
351
  * @param type {string} 类型
396
352
  */
397
- handleClick(item, type) {
398
- //当只有一个服务器点击详情直接进入服务
399
- if(item['isOneCodeDetailJumpCode'] === true) type = item[this.compMK['mode']][0]
400
- this.$emit('on-event', {item,type});
353
+ handleClick(item, funcName, type) {
354
+ this.$emit('on-event', {item,funcName,type});
401
355
  }
402
356
  }
403
357
  }
@@ -405,8 +359,10 @@ export default {
405
359
  </script>
406
360
  <style scoped lang="less">
407
361
  .shopping {
408
- &-list,&-ske-item {
362
+ &-list {
409
363
  background-color: #fff;
364
+ padding: 20rpx;
365
+ margin-top: 20rpx;
410
366
  display: flex;
411
367
  justify-content: space-between;
412
368
  align-items: flex-start;
@@ -414,60 +370,32 @@ export default {
414
370
  &:first-child {
415
371
  margin-top: 0;
416
372
  }
417
-
418
- &:last-child {
419
- margin-bottom: 0!important;
420
- }
421
-
422
- &.active {
423
- background-color: var(--xd-bgColor)!important;
424
- border: var(--xd-border)!important;
425
- }
426
373
  }
427
- &-img,&-ske-image {
428
- width: 160rpx;
429
- height: 160rpx;
430
- margin-right: 16rpx;
374
+ &-img {
375
+ width: 200rpx;
376
+ height: 200rpx;
377
+ margin-right: 20rpx;
431
378
  flex-shrink: 0;
432
- overflow: hidden;
433
379
 
434
380
  & > image {
435
- width: 160rpx;
436
- height: 160rpx;
381
+ width: 200rpx;
382
+ height: 200rpx;
437
383
  }
438
384
  }
439
385
 
440
- &-ske-image{
441
- .skeleton-item(160rpx, 160rpx)
442
- }
443
-
444
- &-cont,&-ske-cont {
386
+ &-cont {
445
387
  flex: 1;
446
388
  display: flex;
447
389
  flex-wrap: wrap;
448
390
  align-content: space-between;
449
- min-height: 160rpx;
391
+ min-height: 200rpx;
450
392
  justify-items: flex-end;
451
393
 
452
-
453
- // #ifdef MP-WEIXIN
454
- &-nameInfo {
455
- width: 100%;
456
- }
457
-
458
- & > .shopping-btn {
459
- width: 100%;
460
- }
461
- // #endif
462
-
463
-
464
394
  &.noImage {
465
395
  min-height: 0;
466
- align-content: normal;
467
- display: block;
468
396
 
469
397
  & .shopping-btn {
470
- margin-top: 16rpx;
398
+ margin-top: 32rpx;
471
399
  }
472
400
  }
473
401
 
@@ -477,19 +405,17 @@ export default {
477
405
  }
478
406
  }
479
407
 
480
- &-name,&-ske-name {
408
+ &-name {
481
409
  display: flex;
482
410
  justify-content: flex-start;
483
411
  align-items: center;
484
412
  & .name {
485
413
  font-size: 32rpx;
486
414
  font-weight: 400;
487
- line-height: 1.5;
488
- .uni-cut(1,48);
415
+ line-height: 40rpx;
416
+ .uni-cut(1,40);
489
417
  flex: 1;
490
418
  color: #333;
491
- word-wrap: break-word;
492
- word-break: break-all;
493
419
  }
494
420
 
495
421
  & .distance {
@@ -499,151 +425,36 @@ export default {
499
425
  }
500
426
  }
501
427
 
502
- &-ske-name {
503
- .skeleton-item(80%, 50rpx)
504
- }
505
-
506
- &-ske-address {
507
- margin-top: 10rpx;
508
- & .address {
509
- .skeleton-item(100%, 36rpx)
510
- }
511
- }
512
-
513
- &-ske-v2 {
514
- & > view {
515
- display: flex;
516
- justify-content: flex-start;
517
- align-items: center;
518
- & > view {
519
- margin-top: 10rpx;
520
- margin-right: 10rpx;
521
- &:last-child {
522
- margin-right: 0;
523
- }
524
- }
525
-
526
- & > .ske1 {
527
- .skeleton-item(36rpx, 36rpx);
528
- flex-shrink: 0;
529
- }
530
- & > .ske2 {
531
- .skeleton-item(80rpx, 36rpx);
532
- flex-shrink: 0;
533
- }
534
- & > .ske3 {
535
- .skeleton-item(60%, 36rpx);
536
- flex: 1;
537
- }
538
- & > .ske4 {
539
- .skeleton-item(80rpx, 36rpx);
540
- flex-shrink: 0;
541
- }
542
- }
543
- }
544
-
545
- &-ske-v3 {
546
- display: flex;
547
- justify-content: space-between;
548
- align-items: flex-end;
549
- margin-top: 10rpx;
550
-
551
- & > view:first-child {
552
- .skeleton-item(100rpx, 26rpx);
553
- }
554
-
555
- & > view {
556
- display: flex;
557
- justify-content: flex-end;
558
- align-items: center;
559
- view {
560
- .skeleton-item(120rpx, 50rpx);
561
- margin-left: 10rpx;
562
- }
563
-
564
- }
565
- }
566
-
567
428
  &-info {
568
429
  & .tags-info {
569
- margin-top: 8rpx;
570
-
571
- &-item {
430
+ margin-top: 16rpx;
431
+ &-tag {
572
432
  display: flex;
573
433
  justify-content: flex-start;
574
434
  align-items: center;
575
- min-height: 64rpx;
576
-
577
- & > view {
578
- margin-right: 10rpx;
579
- font-size: 24rpx;
580
- flex-shrink: 0;
581
-
582
- &.tags-info-desc {
583
- color: #999;
584
- flex: 1;
585
- .uni-cut(1,32);
586
- }
587
- }
588
- }
589
-
590
- &-btn {
591
- height: 64rpx;
592
- display: flex;
593
- justify-content: center;
594
- align-items: center;
595
- padding-left: 40rpx;
596
- margin-right: 0!important;
597
- & > view {
598
- height: 48rpx;
599
- padding: 0 16rpx;
600
- line-height: 48rpx;
601
- background-color: var(--g-theme-mainColor);
602
- color: #fff;
603
- border-radius: 24rpx;
604
- }
605
-
435
+ font-size: 24rpx;
436
+ color: #999;
606
437
  }
607
438
  }
608
439
  }
609
440
 
610
441
  &-address {
611
442
  margin-top: 16rpx;
443
+ font-size: 24rpx;
444
+ color: #999;
445
+ line-height: 32rpx;
446
+ .uni-max-cut(2,64);
612
447
 
613
- &-v2 {
614
- display: flex;
615
- justify-content: flex-start;
616
- align-items: center;
617
-
618
- & > view.distance {
619
- flex-shrink: 0;
620
- margin-left: 20rpx;
621
- font-size: 24rpx;
622
- color: #999;
623
- }
448
+ &.one {
449
+ .uni-max-cut(1,32);
624
450
  }
625
- & > view.address {
626
- font-size: 24rpx;
627
- color: #999;
628
- line-height: 1.5em;
629
- word-wrap: break-word;
630
- word-break: break-all;
631
- .uni-max-cut(2,72);
632
- flex: 1;
633
-
634
- &.one {
635
- .uni-max-cut(1,36);
636
- }
637
- }
638
-
639
451
  }
640
452
 
641
453
  &-btn {
642
454
  display: flex;
643
- justify-content: flex-end;
644
- align-items: flex-end;
645
- height: 64rpx;
646
- margin-top: 10rpx;
455
+ justify-content: space-between;
456
+ align-items: center;
457
+ margin-top: 16rpx;
647
458
 
648
459
  & .distance {
649
460
  display: flex;
@@ -651,23 +462,15 @@ export default {
651
462
  flex-shrink: 0;
652
463
  font-size: 24rpx;
653
464
  color: #999;
654
- margin-bottom: 12rpx;
655
465
  }
656
466
 
657
467
  & .tags {
658
- display: flex;
659
- justify-content: flex-start;
660
- align-items: center;
661
468
  & > view {
662
469
  font-size: 24rpx;
663
470
  height: 42rpx;
664
471
  line-height: 42rpx;
665
472
  border-radius: 12rpx;
666
473
  padding: 0 16rpx;
667
- margin-right: 16rpx;
668
- &:last-child {
669
- margin-right: 0;
670
- }
671
474
  }
672
475
 
673
476
  }
@@ -676,24 +479,21 @@ export default {
676
479
  display: flex;
677
480
  justify-content: flex-end;
678
481
  align-items: center;
679
- flex: 1;
680
- height: 64rpx;
681
-
682
482
  & .change_btn{
483
+ padding: 0 16rpx;
683
484
  height: 48rpx;
684
- padding-top: 16rpx;
685
- padding-left: 16rpx;
686
- padding-bottom: 16rpx;
687
-
688
- & > view {
689
- padding: 0 16rpx;
690
- height: 48rpx;
691
- line-height: 48rpx;
692
- border-radius: 24rpx;
693
- background-color: var(--main-color);
694
- font-size: 24rpx;
695
- flex-shrink: 0;
696
- color: #fff;
485
+ line-height: 48rpx;
486
+ border-radius: 24rpx;
487
+ background-color: var(--main-color);
488
+ font-size: 24rpx;
489
+ flex-shrink: 0;
490
+ color: #fff;
491
+ & + .change_btn{
492
+ margin-left: 10rpx;
493
+ }
494
+
495
+ &.code {
496
+ background-color: var(--sub-main-color);
697
497
  }
698
498
  }
699
499
  }