jufubao-mall 2.0.16-beta55 → 2.0.16-beta57

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jufubao-mall",
3
- "version": "2.0.16-beta55",
3
+ "version": "2.0.16-beta57",
4
4
  "private": false,
5
5
  "description": "聚福宝商城业务组件插件包",
6
6
  "main": "index.js",
@@ -514,7 +514,7 @@
514
514
 
515
515
  let data = {
516
516
  ...this.options,
517
- namespace: 'cake',//this.xnamespace,
517
+ namespace: this.xnamespace,
518
518
  keyword: this.keyword,
519
519
  city_code: this.stateCity.city_code,
520
520
  type:'sell',
@@ -773,7 +773,6 @@
773
773
  getList(){
774
774
  let data = this.getParams();
775
775
  console.log(data,this.namespace,'dddddd')
776
- // debugger
777
776
  data = {
778
777
  ...data,
779
778
  page_token: this.page_token,
@@ -784,10 +783,10 @@
784
783
  }
785
784
 
786
785
  if(this.dimension==='business'){
787
- data.namespace = this.namespace
786
+ data.namespaces = this.namespace
788
787
  } else {
789
788
  //当导航维度是按门店分类时,用category_id承载namespace
790
- data.category_id = this.namespace
789
+ data.category_ids = this.namespace
791
790
  }
792
791
  if(this.area_code) data.area_code = this.area_code;
793
792
  this.$xdShowLoading({});
@@ -810,7 +809,7 @@
810
809
  }else{
811
810
  this.shopList = this.shopList.concat(res.list);
812
811
  }
813
- this.next_page_token = res.next_page_token;
812
+ this.page_token = res.next_page_token;
814
813
  this.hasNextPage = res.next_page_token !== "";
815
814
 
816
815
  // if(this.page_token == 1){
@@ -881,10 +880,10 @@
881
880
  }
882
881
  // debugger
883
882
  if(this.dimension==='business'){
884
- data.namespace = this.namespace
883
+ data.namespaces = this.namespace
885
884
  } else {
886
885
  //当导航维度是按门店分类时,用category_id承载namespace
887
- data.category_id = this.namespace
886
+ data.category_ids = this.namespace
888
887
  }
889
888
  jfbRootExec("resourceGetSearchFilters", {
890
889
  vm: this,
@@ -914,6 +913,7 @@
914
913
  this.namespaceList = [{label: "全部", value: "all"}].concat(this.namespaceList);
915
914
  }
916
915
  this.namespace = this.namespaceList[0].value;
916
+ console.log(this.namespace,'nnnnn')
917
917
  }
918
918
  if(this.showAllBusinessLine == 'Y'){
919
919
  let hasAll = this.namespaceList.some(item=>item.value==='all');
@@ -921,7 +921,9 @@
921
921
  this.namespaceList = [{label: "全部", value: "all"}].concat(this.namespaceList);
922
922
  }
923
923
  }else{
924
- this.namespaceList = this.namespaceList.filter(item => item.value!=='all');
924
+ if(this.namespaceList.length){
925
+ this.namespaceList = this.namespaceList.filter(item => item.value!=='all');
926
+ }
925
927
  }
926
928
  }
927
929
  // setTimeout(()=>{
@@ -996,6 +998,13 @@
996
998
  this.getList();
997
999
  },
998
1000
  handleSelectNamespace(val){
1001
+ if(this.dimension==='business'){
1002
+ this.category_ids = '';
1003
+ }else if(this.dimension==='store'){
1004
+ this.namespaces = '';
1005
+ }
1006
+ this.searchFilterParams = {};
1007
+ this.searchFilterLabels = {};
999
1008
  this.page_token = 1;
1000
1009
  if(this.namespace !== val){
1001
1010
  this.namespace = val;
@@ -10,6 +10,11 @@ module.exports = {
10
10
  { label: "电影", value: "movie" },
11
11
  { label: "商城百货1", value: "market" }
12
12
  ],
13
+ categories:[
14
+ {label: "商超", value: 100518},
15
+ {label: "蛋糕店", value: 100519},
16
+ {label: "电影", value: 200000},
17
+ ],
13
18
  brands: [
14
19
  {
15
20
  label: "味多美",
@@ -42,6 +42,21 @@ export default (data, gValue, gColor, oldData) => {
42
42
  bodyPaddingStatus:['bodyPadding'],
43
43
  cardItemSpaceStatus:['cardItemSpace'],
44
44
  }
45
+ let filterModeValue = dataVal({data, key:'filterMode', dValue:[['filter']], gValue});
46
+ console.log(data.styleLayout,filterModeValue,'filterModeValue')
47
+ if(data.styleLayout=='2'){
48
+ filterModeValue = filterModeValue.filter(item=>item!=='area')
49
+ }
50
+ if(data.styleLayout=='3'){
51
+ filterModeValue = filterModeValue.filter(item=>item!=='brand')
52
+ }
53
+ if(data.dimension==='business'){
54
+ filterModeValue = filterModeValue.filter(item=>item!=='business_line')
55
+ }
56
+ if(data.dimension==='store'){
57
+ filterModeValue = filterModeValue.filter(item=>item!=='shop_category')
58
+ }
59
+ console.log(filterModeValue,'filterModeValue1')
45
60
  return [
46
61
  //内容
47
62
  {
@@ -205,7 +220,8 @@ export default (data, gValue, gColor, oldData) => {
205
220
  ele: "xd-check",
206
221
  groupKey:'content',
207
222
  valueKey: "filterMode",
208
- value: dataVal({data, key:'filterMode', dValue:[['filter']], gValue}),
223
+ // value: dataVal({data, key:'filterMode', dValue:[['filter']], gValue}),
224
+ value:filterModeValue,
209
225
  list:[
210
226
  {"label": "区域", "value": 'area',disabled:data.styleLayout==2?true:false},
211
227
  {"label": "品牌", "value": 'brand',disabled:data.styleLayout==3?true:false},
@@ -51,8 +51,8 @@
51
51
  <view class="addr_detail">{{getAddress(shopInfo)}}</view>
52
52
  <view class="addr_foot">
53
53
  <view>
54
- <template v-if="shopInfo.timeStr">
55
- 营业时间:<text>{{ shopInfo.timeStr }}</text>
54
+ <template v-if="shopInfo.business_time_name">
55
+ 营业时间:<text>{{ shopInfo.business_time_name }}</text>
56
56
  </template>
57
57
  </view>
58
58
  <view class="p_n_box">
@@ -285,7 +285,9 @@
285
285
  rowSpacing: 16,
286
286
  columnSpacing: 16,
287
287
  showPrice: "",
288
+ showDiscount: "",
288
289
  isAddCart: "",
290
+ differ: "",
289
291
  }
290
292
  },
291
293
  watch: {
@@ -542,7 +544,9 @@
542
544
  this.cartStyle = gCPVal(container, 'cartStyle', 'icongouwuche-01');
543
545
  this.cartName = gCPVal(container, 'cartName', '购买');
544
546
  this.showPrice = gCPVal(container, 'showPrice', 'Y');
547
+ this.showDiscount = gCPVal(container, 'showDiscount', 'Y');
545
548
  this.isAddCart = gCPVal(container, 'isAddCart', 'Y');
549
+ this.differ = gCPVal(container, 'differ', 1);
546
550
 
547
551
  console.log("cartStyle", this.cartName, this.cartStyle);
548
552
 
@@ -550,6 +554,12 @@
550
554
  console.log("this.row_num", this.row_num);
551
555
  },
552
556
  p_getProductList(){
557
+ let params = {}
558
+ if(this.showPrice==='Y' && this.showDiscount==='Y'){
559
+ params.is_show_uprice = this.$xdUniHelper.multiplyFloatNumber(this.differ,100)
560
+ } else {
561
+ params.is_show_uprice=-1
562
+ }
553
563
  jfbRootExec("getShopProductList", {
554
564
  vm: this,
555
565
  data: {
@@ -563,6 +573,7 @@
563
573
  sort: 'default',
564
574
  page_size: this.page_size,
565
575
  page_token: this.page_token,
576
+ ...params,
566
577
  }
567
578
  }).then(res => {
568
579
  let list = res.list.map(item => {
@@ -9,7 +9,9 @@ import {
9
9
  } from "@/utils/AttrTools";
10
10
 
11
11
  export default function (data, gValue,gColor,oldData){
12
- let isShowCashier = data.isShowCashier || "Y";
12
+ let isShowCashier = data.isShowCashier || "";
13
+ let isShowExchange = data.isShowExchange || "";
14
+ let oldShowCashier = isShowCashier || isShowExchange;
13
15
  let showOtherEnter = "N";
14
16
  if(gValue.isAdd === true && gValue.isFirst) {
15
17
  showOtherEnter = "Y";
@@ -88,7 +90,7 @@ export default function (data, gValue,gColor,oldData){
88
90
  label: '聚好兑',
89
91
  ele: 'xd-cus-switch',
90
92
  valueKey: 'showExchange',
91
- value: dataVal({ data, key: 'showExchange', dValue: isShowCashier, gValue }),
93
+ value: dataVal({ data, key: 'showExchange', dValue: oldShowCashier, gValue }),
92
94
  className: 'input100',
93
95
  labelInline: true,
94
96
  groupKey: 'content',
@@ -131,7 +133,7 @@ export default function (data, gValue,gColor,oldData){
131
133
  label: '扫一扫',
132
134
  ele: 'xd-cus-switch',
133
135
  valueKey: 'showScan',
134
- value: dataVal({ data, key: 'showScan', dValue: isShowCashier, gValue }),
136
+ value: dataVal({ data, key: 'showScan', dValue: oldShowCashier, gValue }),
135
137
  className: 'input100',
136
138
  labelInline: true,
137
139
  groupKey: 'content',
@@ -174,7 +176,7 @@ export default function (data, gValue,gColor,oldData){
174
176
  label: '快捷码',
175
177
  ele: 'xd-cus-switch',
176
178
  valueKey: 'showTake',
177
- value: dataVal({ data, key: 'showTake', dValue: isShowCashier, gValue }),
179
+ value: dataVal({ data, key: 'showTake', dValue: oldShowCashier, gValue }),
178
180
  className: 'input100',
179
181
  labelInline: true,
180
182
  groupKey: 'content',
@@ -0,0 +1,591 @@
1
+
2
+ <template>
3
+ <view :style="[{'--main-color': mainColor,'--sub-main-color': subMainColor},activeComp]">
4
+ <view class="shopping-ske" v-if="dataShopList ===null">null</view>
5
+ <view
6
+ class="shopping"
7
+ v-else-if="dataShopList.length > 0"
8
+ :style="[cusStyle['box']||{}]"
9
+ >
10
+ <view
11
+ class="shopping-list"
12
+ v-for="(item) in dataShopList"
13
+ :key="item[compMK.id]"
14
+ :id="`shop_item_${item[compMK.id]}`"
15
+ :class="{active: [
16
+ item[compMK.id].toString(),
17
+ item[compMK.shop_id].toString()
18
+ ].includes(selectId)}"
19
+ :style="[cusStyle['item']||{}]"
20
+ @click="handleClick(item, 'DL')"
21
+ >
22
+ <!--图片区域-->
23
+ <view class="shopping-img" v-if="image" :style="[cusStyle['image']||{}]">
24
+ <image v-if="!item.errorStatus" :src="item[compMK.image]" :alt="item[compMK.name]" mode="aspectFit" @error="handleError(item)"></image>
25
+ <image v-if="item.errorStatus" :src="errorImage" :alt="item[compMK.name]"></image>
26
+ </view>
27
+ <!--图片区域-->
28
+ <!--信息区域-->
29
+ <view class="shopping-cont" :class="{noImage: !image}">
30
+ <view class="shopping-cont-nameInfo">
31
+ <view class="shopping-name">
32
+ <view class="name" :style="[cusStyle['name']||{}]" v-html="item[compMK.name]"></view>
33
+ <view
34
+ class="distance"
35
+ v-if="distance && distanceStyle === 'title' && item[compMK.distance]"
36
+ :style="[cusStyle['distance']||{}]"
37
+ >{{item[compMK.distance]}}</view>
38
+ <view class="priceAndDiscount" v-if="distanceStyle === 'button'">
39
+ <view class="price" v-if="price && item[compMK.price]">
40
+ <text>{{item[compMK.price]|filterPrice}}</text>
41
+ <text>起</text>
42
+ </view>
43
+ <view class="discount" v-if="discount && item[compMK.discount]">
44
+ <text>{{item[compMK.discount]|filterDiscount}}</text>
45
+ <text>折</text>
46
+ </view>
47
+ </view>
48
+ </view>
49
+ <view class="shopping-info">
50
+ <view
51
+ class="shopping-address"
52
+ :class="{one: tagPos === 'info'}"
53
+ v-if="address"
54
+ v-html="item[compMK.address]"
55
+ ></view>
56
+ <view class="tags-info" v-if="tagPos === 'info'">
57
+ <view class="tags-info-tag">
58
+ <xd-font-icon icon="iconduihuan" color="#43CF7C" size="28" style="margin-right: 8rpx;"></xd-font-icon>
59
+ <text>支持到店使用</text>
60
+ </view>
61
+ </view>
62
+ </view>
63
+ </view>
64
+ <view class="shopping-btn">
65
+ <!--v3-->
66
+ <view class="distance" v-if="distance && distanceStyle === 'button' && item[compMK.distance]" >
67
+ <xd-font-icon :style="[cusStyle['distance']||{}]" icon="icondizhi" size="26"></xd-font-icon>
68
+ <text :style="[cusStyle['distance']||{}]" style="margin-left: 10rpx" >{{item[compMK.distance]}}</text>
69
+ </view>
70
+ <!--v3-->
71
+ <!--v2-->
72
+ <view v-if="tagPos === 'info'">
73
+ <view class="priceAndDiscount">
74
+ <view class="price" v-if="price && item[compMK.price]">
75
+ <text>{{item[compMK.price]|filterPrice}}</text>
76
+ <text>起</text>
77
+ </view>
78
+ <view class="discount" v-if="discount && item[compMK.discount]">
79
+ <text>{{item[compMK.discount]|filterDiscount}}</text>
80
+ <text>折</text>
81
+ </view>
82
+ </view>
83
+ </view>
84
+ <!--v2-->
85
+ <!--v1-->
86
+ <template v-if="tagPos === 'btn'">
87
+ <view v-if="!isShowBtn" class="tags">
88
+ <view v-for="it in item[compMK.mode]" :key="it" :style="[compTagsStyle]">{{item[compMK.modeName]|filterMode(it)}}</view>
89
+ </view>
90
+ <view class="priceAndDiscount">
91
+ <view class="price" v-if="price && item[compMK.price]">
92
+ <text>{{item[compMK.price]|filterPrice}}</text>
93
+ <text>起</text>
94
+ </view>
95
+ <view class="discount" v-if="discount && item[compMK.discount]">
96
+ <text>{{item[compMK.discount]|filterDiscount}}</text>
97
+ <text>折</text>
98
+ </view>
99
+ </view>
100
+ </template>
101
+ <!--v1-->
102
+ <!--按钮-->
103
+ <view class="buttons" v-if="isShowBtn && isBtn">
104
+ <!-- CV:店员核销(小蜜蜂);WB:用户扫水牌;CR:收银机;POS:POS机;JHD:聚好兑; QP:快捷支付;MC电影去购买-->
105
+ <template v-for="it in item[compMK.mode]">
106
+ <view
107
+ v-if="compEntry[mapCodeKeys[it]] === true"
108
+ class="change_btn"
109
+ @click.stop="handleClick(item, it)"
110
+ >{{ compNames[mapCodeKeys[it]]}}</view>
111
+ </template>
112
+ </view>
113
+ <!--按钮-->
114
+ </view>
115
+ </view>
116
+ <!--信息区域-->
117
+ </view>
118
+ </view>
119
+ <view class="shopping-empty" v-else-if="dataShopList.length === 0"></view>
120
+ </view>
121
+
122
+ </template>
123
+
124
+ <script>
125
+ import XdFontIcon from "@/components/XdFontIcon/XdFontIcon.vue";
126
+ import Color from "color";
127
+ let $vm = null;
128
+
129
+ export default {
130
+ name:'CusShops',
131
+ components:{
132
+ XdFontIcon
133
+ },
134
+ props:{
135
+ list: {
136
+ type: Array|null,
137
+ default(){
138
+ return []
139
+ }
140
+ },
141
+ cusStyle:{
142
+ type: Object,
143
+ // image,item,box,name,distance
144
+ default(){
145
+ return {}
146
+ }
147
+ },
148
+ layout:{
149
+ type: String,
150
+ required: true
151
+ },
152
+ content:{
153
+ type: Array|null,
154
+ default(){
155
+ return ['image', 'address', 'distance', 'discount','price']
156
+ }
157
+ },
158
+ isShowBtn:{
159
+ type:Boolean,
160
+ default: false,
161
+ },
162
+ mainColor:{
163
+ type: String,
164
+ required: true
165
+ },
166
+ subMainColor:{
167
+ type: String,
168
+ required: true
169
+ },
170
+ names:{
171
+ type: Object,
172
+ //jhd,scan,takeGoods,buyTicket,code,hdSelf
173
+ default(){
174
+ return {}
175
+ }
176
+ },
177
+ mapKeys:{
178
+ type:Object,
179
+ default(){
180
+ return {}
181
+ }
182
+ },
183
+ entry:{
184
+ type:Object,
185
+ default(){
186
+ return {}
187
+ }
188
+ },
189
+ selectId:{
190
+ type:String,
191
+ default:''
192
+ }
193
+ },
194
+ data(){
195
+ return {
196
+ distanceStyle:'title',//title:标题后面 button: 操作按钮左侧
197
+ tagPos: 'info', //info=>信息下方 btn: 操作按钮左侧
198
+ errorImage:'https://img0.jufubao.cn/common/empty/shop.png?v1=1',
199
+
200
+ //内容区状态
201
+ image: false,
202
+ address:true,
203
+ distance: false,
204
+ price: false,
205
+ discount: false,
206
+
207
+ //数据键值map关系
208
+ defMapKeys:{
209
+ id: 'resource_shop_id',
210
+ brand_id: 'brand_id',//品牌ID
211
+ shop_id:'shop_id',//整理前的门店ID
212
+ name: 'resource_shop_name', //店铺名字
213
+ distance: 'distance', //距离
214
+ address:'address', //店铺地址
215
+ image:'shop_icon', //店铺图片
216
+ discount : 'discount_ratio', //折扣
217
+ price:'price', //价格
218
+ mode:'consume_mode',//标签类型[]
219
+ modeName:'consume_mode_name',//服务类型名称{CODE:NAME}
220
+ defType:'default_consume_type',
221
+ },
222
+ modeName:{
223
+ CODE:'电子码',
224
+ SELL:'支持核销',
225
+ SEAT:'在线选座',
226
+ TRAVEL:'在线订票',
227
+ HDSELF:'到店自取'
228
+ },
229
+
230
+ mapCodeKeys:{
231
+ CODE:'code',
232
+ SELL: 'cashier',
233
+ SEAT:'buyTicket',
234
+ TRAVEL:'travel',
235
+ HDSELF:'hdSelf'
236
+ },
237
+
238
+ //自定义名称
239
+ defName:{
240
+ cashier:'去买单',
241
+ buyTicket: "去购票", //在选选座
242
+ code:'电子码', //电子码名字
243
+ hdSelf:'到店自取', //到店自取名字
244
+ travel: '去购票 ', //旅游订票
245
+ },
246
+
247
+ defEntry:{
248
+ cashier:false, //支持核销
249
+ buyTicket: false, //去购票名称
250
+ code:false, //电子码名字
251
+ hdSelf:false, //电子码名字
252
+ travel: false, //旅游订票
253
+ },
254
+
255
+ //按钮功能
256
+ buttons:[],
257
+
258
+ dataShopList:null,
259
+ }
260
+ },
261
+ computed:{
262
+ activeComp(){
263
+ let border = `rgba(${Color(this.mainColor).alpha(0.6).array().join(',')})`;
264
+ let bgColor= `rgba(${Color(this.mainColor).alpha(.05).array().join(',')})`;
265
+ return {
266
+ '--xd-bgColor': bgColor,
267
+ '--xd-border': `1px solid ${border}`
268
+ }
269
+ },
270
+
271
+ compTagsStyle(){
272
+ let textColor = `rgba(${Color(this.mainColor).alpha(0.1).array().join(',')})`;
273
+ return {
274
+ backgroundColor: textColor,
275
+ color: this.mainColor,
276
+ }
277
+ },
278
+
279
+ compNames(){
280
+ return Object.assign({}, this.defName,this.$xdUniHelper.cloneDeep(this.names) )
281
+ },
282
+ compMK(){
283
+ return Object.assign({},this.defMapKeys,this.$xdUniHelper.cloneDeep(this.mapKeys))
284
+ },
285
+ compEntry(){
286
+ return Object.assign({},this.defEntry,this.$xdUniHelper.cloneDeep(this.entry))
287
+ },
288
+ isBtn(){
289
+ let flag = false;
290
+ Object.keys(this.compEntry).map(key=>{
291
+ if(this.compEntry[key] === true) flag = true;
292
+ });
293
+ return flag
294
+ }
295
+ },
296
+ filters:{
297
+ filterPrice(val){
298
+ if(typeof val === 'string') val = Number(val)
299
+ return $vm.$xdUniHelper.divisionFloatNumber(val,100);
300
+ },
301
+ filterDiscount(val){
302
+ if(typeof val === 'string') val = Number(val)
303
+ return $vm.$xdUniHelper.divisionFloatNumber(val,1000);
304
+ },
305
+ filterMode(value, code){
306
+ if(!value) return $vm.modeName[code];
307
+ return value[code];
308
+ }
309
+ },
310
+ watch:{
311
+ layout(val){
312
+ this.layoutParse(val)
313
+ },
314
+ content(val){
315
+ this.contentParse(val)
316
+ },
317
+ list(){
318
+ this.initData();
319
+ },
320
+ },
321
+ created() {
322
+ $vm = this;
323
+ this.layoutParse(this.layout);
324
+ this.contentParse(this.content);
325
+ this.initData();
326
+ },
327
+ methods:{
328
+ initData(){
329
+ if(this.list === null) this.dataShopList = null;
330
+ else if(this.$xdUniHelper.checkVarType(this.list) === 'array'){
331
+ this.dataShopList = this.$xdUniHelper.cloneDeep(this.list).map(item=>{
332
+ item[this.compMK['mode']] = item[this.compMK['mode']].filter(it=>{
333
+ return this.mapCodeKeys[it];
334
+ });
335
+ item['is_detail_to_btn'] = this.isShowBtn && item[this.compMK['mode']].length === 1;
336
+ if(item['errorStatus'] === undefined) item['errorStatus'] = false;
337
+ return item
338
+ });
339
+ }
340
+ else this.dataShopList = [];
341
+ },
342
+ handleError(item){
343
+ item.errorStatus = true;
344
+ },
345
+ layoutParse(value){
346
+ let distanceStyle = 'title';
347
+ let tagPos = '';
348
+
349
+ //布局1
350
+ if(['v1'].includes(value)) {
351
+ tagPos = 'btn'
352
+ }
353
+
354
+ //布局2
355
+ if(['v2'].includes(value)) {
356
+ tagPos = 'info'
357
+ }
358
+
359
+ //电影模式
360
+ if(['v3'].includes(value)) {
361
+ distanceStyle = 'button';
362
+ }
363
+ this.tagPos = tagPos;
364
+ this.distanceStyle = distanceStyle;
365
+ },
366
+ contentParse(value){
367
+ this.image = value.includes('image')
368
+ this.address = value.includes('address')
369
+ this.distance = value.includes('distance')
370
+ //价格和折扣只有在v1,v2线上
371
+ this.price = value.includes('price')
372
+ this.discount = value.includes('discount')
373
+ },
374
+
375
+ /**
376
+ * @description 事件操作
377
+ * @param item {Object} 数据对象
378
+ * @param type {string} 类型
379
+ */
380
+ handleClick(item, type) {
381
+ //当只有一个服务器点击详情直接进入服务
382
+ if(item.is_detail_to_btn === true) type = item[this.compMK['mode']][0]
383
+ this.$emit('on-event', {item,type});
384
+ }
385
+ }
386
+ }
387
+
388
+ </script>
389
+ <style scoped lang="less">
390
+ .shopping {
391
+ &-list {
392
+ background-color: #fff;
393
+ display: flex;
394
+ justify-content: space-between;
395
+ align-items: flex-start;
396
+
397
+ &:first-child {
398
+ margin-top: 0;
399
+ }
400
+
401
+ &.active {
402
+ background-color: var(--xd-bgColor)!important;
403
+ border: var(--xd-border)!important;
404
+ }
405
+ }
406
+ &-img {
407
+ width: 200rpx;
408
+ height: 200rpx;
409
+ margin-right: 16rpx;
410
+ flex-shrink: 0;
411
+ overflow: hidden;
412
+
413
+ & > image {
414
+ width: 200rpx;
415
+ height: 200rpx;
416
+ }
417
+ }
418
+
419
+ &-cont {
420
+ flex: 1;
421
+ display: flex;
422
+ flex-wrap: wrap;
423
+ align-content: space-between;
424
+ min-height: 200rpx;
425
+ justify-items: flex-end;
426
+
427
+
428
+ // #ifdef MP-WEIXIN
429
+ &-nameInfo {
430
+ width: 100%;
431
+ }
432
+
433
+ & > .shopping-btn {
434
+ width: 100%;
435
+ }
436
+ // #endif
437
+
438
+
439
+ &.noImage {
440
+ min-height: 0;
441
+ align-content: normal;
442
+ display: block;
443
+
444
+ & .shopping-btn {
445
+ margin-top: 16rpx;
446
+ }
447
+ }
448
+
449
+ & > * {
450
+ width: 100%;
451
+ flex-shrink: 0;
452
+ }
453
+ }
454
+
455
+ &-name {
456
+ display: flex;
457
+ justify-content: flex-start;
458
+ align-items: center;
459
+ & .name {
460
+ font-size: 32rpx;
461
+ font-weight: 400;
462
+ line-height: 1.5;
463
+ .uni-cut(1,48);
464
+ flex: 1;
465
+ color: #333;
466
+ word-wrap: break-word;
467
+ word-break: break-all;
468
+ }
469
+
470
+ & .distance {
471
+ margin-left: 20rpx;
472
+ font-size: 24rpx;
473
+ color: #999;
474
+ }
475
+ }
476
+
477
+ &-info {
478
+ & .tags-info {
479
+ margin-top: 16rpx;
480
+ display: flex;
481
+ flex-flow: wrap;
482
+ justify-content: flex-start;
483
+ &-tag {
484
+ display: flex;
485
+ justify-content: flex-start;
486
+ align-items: center;
487
+ font-size: 24rpx;
488
+ color: #999;
489
+ flex-shrink: 0;
490
+ margin-top: 10rpx;
491
+
492
+ width: 45%;
493
+ margin-right: 10%;
494
+ &:nth-child(2n) {
495
+ margin-right: 0;
496
+ }
497
+
498
+ &:nth-child(1), &:nth-child(2) {
499
+ margin-top: 0;
500
+ }
501
+ }
502
+ }
503
+ }
504
+
505
+ &-address {
506
+ margin-top: 16rpx;
507
+ font-size: 24rpx;
508
+ color: #999;
509
+ line-height: 1.5em;
510
+ word-wrap: break-word;
511
+ word-break: break-all;
512
+ .uni-max-cut(2,72);
513
+
514
+ &.one {
515
+ .uni-max-cut(1,36);
516
+ }
517
+ }
518
+
519
+ &-btn {
520
+ display: flex;
521
+ justify-content: space-between;
522
+ align-items: center;
523
+ margin-top: 16rpx;
524
+
525
+ & .distance {
526
+ display: flex;
527
+ justify-items: flex-start;
528
+ flex-shrink: 0;
529
+ font-size: 24rpx;
530
+ color: #999;
531
+ }
532
+
533
+ & .tags {
534
+ display: flex;
535
+ justify-content: flex-start;
536
+ align-items: center;
537
+ & > view {
538
+ font-size: 24rpx;
539
+ height: 42rpx;
540
+ line-height: 42rpx;
541
+ border-radius: 12rpx;
542
+ padding: 0 16rpx;
543
+ margin-right: 16rpx;
544
+ &:last-child {
545
+ margin-right: 0;
546
+ }
547
+ }
548
+
549
+ }
550
+
551
+ & .buttons {
552
+ display: flex;
553
+ justify-content: flex-end;
554
+ align-items: center;
555
+ & .change_btn{
556
+ padding: 0 16rpx;
557
+ height: 48rpx;
558
+ line-height: 48rpx;
559
+ border-radius: 24rpx;
560
+ background-color: var(--main-color);
561
+ font-size: 24rpx;
562
+ flex-shrink: 0;
563
+ color: #fff;
564
+ & + .change_btn{
565
+ margin-left: 10rpx;
566
+ }
567
+
568
+ &.code {
569
+ background-color: var(--sub-main-color);
570
+ }
571
+ }
572
+ }
573
+ }
574
+
575
+ & .priceAndDiscount{
576
+ & > .price, & > .discount {
577
+ font-size: 24rpx;
578
+ & > text {
579
+ &:first-child {
580
+ color: rgb(255, 44, 24)
581
+ }
582
+ &:last-child {
583
+ color: #999;
584
+ margin-left: 4rpx;
585
+ }
586
+ }
587
+
588
+ }
589
+ }
590
+ }
591
+ </style>
@@ -122,7 +122,7 @@
122
122
  import { getContainerPropsValue,gCPVal } from "@/utils/xd.base";
123
123
  import componentsMixins from "@/mixins/componentsMixins";
124
124
  import getServiceUrl from "@/common/getServiceUrl";
125
- import CusShops from "@/components/CusShops/CusShops.vue"
125
+ import CusShops from "./CusShops.vue"
126
126
  // #ifdef H5
127
127
  import XdBaiduMap from "./XdBaiduMap"
128
128
  // #endif