jufubao-mall 2.0.29 → 2.0.31

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.
@@ -31,7 +31,7 @@
31
31
  >
32
32
  <image :src="curCate.category_img" mode="widthFix"></image>
33
33
  </view>
34
- <view class="product_list" :style="{padding:contMarginComp}">
34
+ <view class="product_list" :style="[contWrapStyle]">
35
35
  <!--骨架-->
36
36
  <view
37
37
  v-if="products === null"
@@ -76,7 +76,7 @@
76
76
  <view
77
77
  v-for="(column,index) in column_num"
78
78
  :key="column"
79
- :style="{marginRight:(column_num ===1 ? 0:(mainSpacing + 'rpx'))}"
79
+ :style="{marginRight:(column_num ===1 && columnOneLayout ==='H' ? 0:(mainSpacing + 'rpx'))}"
80
80
  >
81
81
  <view
82
82
  v-for="(item,idx) in getItemData(index,products)"
@@ -84,16 +84,19 @@
84
84
  :style="[contProductStyles]"
85
85
  >
86
86
  <cus-product
87
+ :column-one-layout="columnOneLayout"
87
88
  :image-radius="imageRadius"
88
- :brand-color="contBrandColor"
89
+ :brand-color="brandStyleComp"
89
90
  :height="contProductImageHeight"
90
91
  :cell="column_num"
91
92
  :name-font="itemFont"
92
93
  :product-config="productConfig"
94
+ :color="mainColor"
93
95
  :item="item"
94
96
  :isPlus="is_plus_site"
95
97
  :row-spacing="rowMainSpacing"
96
98
  :cell-spacing="contSpacing"
99
+ :cont-padding="contPadding"
97
100
  @on-product-detail="toProductInfo"
98
101
  ></cus-product>
99
102
  </view>
@@ -117,7 +120,7 @@
117
120
  import XdUnit from "@/components/XdUnit/XdUnit"
118
121
  import { jfbRootExec } from "@/utils/xd.event";
119
122
  import JfbMallSpecialInfoMixin from "./JfbMallSpecialInfoMixin";
120
- import { getContainerPropsValue,toProductDetail, getImageInfo } from "@/utils/xd.base";
123
+ import { getContainerPropsValue,toProductDetail, getImageInfo,gCPVal } from "@/utils/xd.base";
121
124
  import componentsMixins from "@/mixins/componentsMixins";
122
125
  import extsMixins from "@/mixins/extsMixins";
123
126
  import getServiceUrl from "@/common/getServiceUrl";
@@ -166,25 +169,29 @@
166
169
  is_show_brand: 'N',
167
170
 
168
171
  //基础属性
169
- mainSpacing: 30, //列间距
170
- rowMainSpacing: 30, //行间距
172
+ mainSpacing: 16, //列间距
173
+ rowMainSpacing: 16, //行间距
171
174
  column_num: 1,
172
175
  productConfig:{},
173
176
 
174
177
  //item
175
- imageRadius:'10',
176
- contRadius: '10',
178
+ imageRadius:'8',
179
+ contRadius: '16',
177
180
  contShadow:'0 0 0 rgba(0,0,0,0)',
178
181
  contBorder:0,
179
182
  contBgColor:'#fff',
180
- contTextColor:'#333',
181
- contBrandColor:'#999',
183
+ contBrandColor: '',
184
+ contBrandBgColor: '',
182
185
  contMargin:{},
183
186
  contPadding:{},
184
187
  itemFont:{},
185
- contSpacing: '20',
188
+ contSpacing: '16',
186
189
  need_show_tags: [],
187
- is_plus_site: false
190
+ is_plus_site: false,
191
+ columnOneLayout: 'H', //V=垂直 H=水平
192
+ contStyleBorder: 0,
193
+ contBackgroundColor: '',
194
+ contBackground: ''
188
195
  }
189
196
  },
190
197
  computed: {
@@ -224,18 +231,20 @@
224
231
  return this.categories.find(item => Number(item.category_id) === category_id) || {};
225
232
  },
226
233
 
227
- contMarginComp(){
228
- let str = `${this.checkValue(this.contMargin.top, 0)}rpx`;
229
- str = `${str} ${this.checkValue(this.contMargin.right, 0)}rpx`;
230
- str = `${str} ${this.checkValue(this.contMargin.bottom, 0)}rpx`;
231
- str = `${str} ${this.checkValue(this.contMargin.left, 0)}rpx`;
232
- return str
234
+ contWrapStyle(){
235
+ return {
236
+ padding: this.getMarginAndPadding(this.contMargin, 0),
237
+ backgroundColor: this.contBackgroundColor,
238
+ backgroundImage: `url(${this.contBackground})`,
239
+ backgroundSize: `100% 100%`,
240
+ backgroundRepeat: 'no-repeat'
241
+ }
233
242
  },
234
243
  contPaddingComp(){
235
- let str = `${this.checkValue(this.contPadding.top, 20)}rpx`;
236
- str = `${str} ${this.checkValue(this.contPadding.right, 20)}rpx`;
237
- str = `${str} ${this.checkValue(this.contPadding.bottom, 20)}rpx`;
238
- str = `${str} ${this.checkValue(this.contPadding.left, 20)}rpx`;
244
+ let str = `${this.checkValue(this.contPadding.top, 16)}rpx`;
245
+ str = `${str} ${this.checkValue(this.contPadding.right, 16)}rpx`;
246
+ str = `${str} ${this.checkValue(this.contPadding.bottom, 16)}rpx`;
247
+ str = `${str} ${this.checkValue(this.contPadding.left, 16)}rpx`;
239
248
  return str
240
249
  },
241
250
 
@@ -253,7 +262,7 @@
253
262
 
254
263
 
255
264
  //item内容填充
256
- let paddinRL = (Number(this.checkValue(this.contPadding.left, 20)) + Number(this.checkValue(this.contPadding.right, 20))) * this.column_num;
265
+ let paddinRL = (Number(this.checkValue(this.contPadding.left, 16)) + Number(this.checkValue(this.contPadding.right, 16))) * this.column_num;
257
266
  //内容列表区域边距
258
267
  let marginUl = (Number(this.checkValue(this.contMargin.left, 0)) + Number(this.checkValue(this.contMargin.right, 0)))
259
268
 
@@ -263,12 +272,7 @@
263
272
  if(this.$configProject['isPreview']) isPreview = 2 * this.$pxNum;
264
273
 
265
274
  //边框
266
- let borderRL = 0;
267
- if(this.contBorderOrg.type === 'Y') {
268
- if(this.contBorderOrg.value && this.contBorderOrg.value.width !== undefined) {
269
- borderRL = Number(this.contBorderOrg.value.width) * 2;
270
- }
271
- }
275
+ let borderRL = this.contStyleBorder * 2;
272
276
  borderRL = borderRL * this.column_num;
273
277
  return {
274
278
  marginTop: this.rowMainSpacing + 'rpx',
@@ -303,6 +307,13 @@
303
307
  padding: `${top} ${this.rowMainSpacing}rpx ${this.mainSpacing}rpx`
304
308
  }
305
309
  },
310
+ //品牌样式
311
+ brandStyleComp(){
312
+ return {
313
+ color: this.contBrandColor,
314
+ bgColor: this.contBrandBgColor,
315
+ }
316
+ }
306
317
  },
307
318
  watch: {
308
319
  container(value,oldValue) {
@@ -328,7 +339,13 @@
328
339
  if (this.$configProject['isPreview']){
329
340
  this.getList();
330
341
  }
331
- }
342
+ },
343
+ columnOneLayout(){
344
+ this.reHandlePoster()
345
+ },
346
+ column_num(){
347
+ this.reHandlePoster()
348
+ },
332
349
  },
333
350
  created() {
334
351
  this.init(this.container);
@@ -340,45 +357,67 @@
340
357
  * @param container {object} 业务组件对象自己
341
358
  */
342
359
  init(container) {
343
- this.mainSpacing = getContainerPropsValue(container, 'content.mainSpacing', 30);
344
- this.rowMainSpacing = getContainerPropsValue(container, 'content.rowMainSpacing', 30);
345
- this.column_num = getContainerPropsValue(container, 'content.column_num', 2);
346
- if( this.column_num === 1) this.skeNumber = 6;
347
- if( this.column_num === 2) this.skeNumber = 4;
348
- if( this.column_num === 3) this.skeNumber = 5;
349
- if(this.column_num === 3) this.pages_size = 21;
350
- else this.pages_size = 20;
351
-
352
- //商品内容设置
353
- this.isCategoryImage = getContainerPropsValue(container, 'content.isCategoryImage', 'N');
354
- this.productConfig = this.getProductConfig(container);
355
-
356
- //item
357
- this.contRadius = getContainerPropsValue(container, 'content.contRadius', '10');
358
- this.imageRadius = getContainerPropsValue(container, 'content.imageRadius', '10');
359
- this.contShadow = this.getXdShadow({width:20, color:'rgba(0,0,0,0)'},getContainerPropsValue(container, 'content.contShadow', {}))
360
- this.contBorder = this.getXdBorder({width:2,color:'rgba(0,0,0,0)'},getContainerPropsValue(container, 'content.contBorder', {}));
361
- this.contBorderOrg = getContainerPropsValue(container, 'content.contBorder', {});
362
- this.contRadius = getContainerPropsValue(container, 'content.contRadius', '10');
363
- this.contPadding = getContainerPropsValue(container, 'content.contPadding', {});
364
- this.contMargin = getContainerPropsValue(container, 'content.contMargin', {});
365
- this.contBgColor = getContainerPropsValue(container, 'content.contBgColor', '#fff');
366
- this.contTextColor = getContainerPropsValue(container, 'content.contTextColor', '#333');
367
- this.contBrandColor = getContainerPropsValue(container, 'content.contBrandColor', '#999');
368
- this.contSpacing = getContainerPropsValue(container, 'content.contSpacing', '20');
369
- let contStyle = getContainerPropsValue(container, 'content.contStyle', {});
360
+ //content
361
+ this.xnamespace = gCPVal(container, 'xnamespace', this.projectAttr.business_code, {});
362
+ let compConfig = getContainerPropsValue(container, "content.compConfig", null);
363
+ let tagsKeys= this.getProductTagsKeys(compConfig,container)
364
+ this.need_show_tags = this.getProductTagsParams(compConfig, tagsKeys)
365
+ this.productConfig = this.getProductConfig(container, { cartStyle: 'icongouwuche-01' });
366
+ let column_num = gCPVal(container, 'column_num', 2);
367
+ this.column_num = column_num;
368
+ //一列水平
369
+ if (column_num === 1) {
370
+ this.skeNumber = 6;
371
+ this.columnOneLayout = 'H';
372
+ }
373
+ if (column_num === 3) {
374
+ this.skeNumber = 5;
375
+ this.page_size = 21;
376
+ } else this.page_size = 20;
377
+ //一列垂直
378
+ if(column_num === 4) {
379
+ this.column_num = 1;
380
+ this.columnOneLayout = 'V';
381
+ this.skeNumber = 10;
382
+ this.page_size = 20;
383
+ }
384
+ this.isCategoryImage = gCPVal(container, 'isCategoryImage', 'N');
385
+ this.productConfig = this.getProductConfig(container, { cartStyle: 'icongouwuche-01' });
386
+ //商品样式关联属性
387
+ const sValue = "{\"border\":0,\"backgroundColor\":\"#fff\"}";
388
+ let itemBgcColoStyle = this.getRelationStatus(container,'productStyle',{ contBgColorStatus:['contBgColor'],bgBorder:['contBorder', 'bs']},sValue);
389
+ this.contBgColor = gCPVal(container, 'contBgColor', ['#fff'], {sKey: 'contBgColorStatus', cusFields: ['productStyle','backgroundColor',itemBgcColoStyle]});
390
+
391
+ //style
392
+ let contStyle = gCPVal(
393
+ container,
394
+ "contStyle",
395
+ [{
396
+ color: '#333',
397
+ fontWeight: '500',
398
+ }],
399
+ {sKey:'contStyleStatus',fields:['contStyle'],isMerge: true}
400
+ );
370
401
  this.itemFont = {
371
- color: contStyle.color || '#333',
372
- fontSize: contStyle.fontSize|| '30rpx',
373
- fontWeight:contStyle.fontWeight || 500
402
+ color: contStyle.color,
403
+ fontWeight: parseInt(contStyle.fontWeight)
374
404
  };
375
-
376
- //高级属性
405
+ this.contBrandColor = gCPVal(container, 'contBrandColor', '#999', { sKey: 'contBrandStatus', fields: ['contBrandColor','contBrandBgColor'] });
406
+ this.contBrandBgColor = gCPVal(container, 'contBrandBgColor', '', { sKey: 'contBrandStatus', fields: ['contBrandColor','contBrandBgColor'] });
407
+ this.contBorder = gCPVal(container, 'contBorder', [{ color: '#fff', width: 2, style: 'solid' }], { isBorder: true, bsOld: ['is_border', 'is_border_w', 'is_border_c'], cusFields: ['productStyle', 'border', itemBgcColoStyle] });
408
+ this.contStyleBorder = gCPVal(container, 'contBorder', [{ color: '#fff', width: 2, style: 'solid' }], { isBorder: true, isBsWidth: true, bsOld: ['is_border', 'is_border_w', 'is_border_c'], cusFields: ['productStyle', 'border', itemBgcColoStyle] });
409
+ this.contRadius = gCPVal(container, 'contRadius', [16], {sKey:'contRadiusStatus', fields:['contRadius']})||0;
410
+ this.imageRadius = gCPVal(container, 'imageRadius', [8], {sKey:'imageRadiusStatus', fields:['imageRadius']})||0;
411
+ this.contShadow = gCPVal(container, 'contShadow', [{width:20, color:'rgba(0,0,0,0)'},'none'], {isShadow:true, bsOld:['is_shadow','is_shadow_w','is_shadow_bg']});
412
+ this.rowMainSpacing = Number(gCPVal(container,'rowMainSpacing', 16, {sKey:'columnRowStatus',fields:['rowMainSpacing','mainSpacing']}));
413
+ this.mainSpacing = Number(gCPVal(container,'mainSpacing', 16, {sKey:'columnRowStatus',fields:['rowMainSpacing','mainSpacing']}));
414
+ this.contPadding = gCPVal(container,'contPadding', [16], {sKey:'contPaddingStatus',fields:['contPadding'],isPMR: true});
415
+ this.contBackgroundColor = gCPVal(container, 'contBackgroundColor', '', { sKey: 'contBgStatus', fields: ['contBackgroundColor', 'contBackground'] });
416
+ this.contBackground = getServiceUrl(gCPVal(container, 'contBackground', {url:''}, { sKey: 'contBgStatus', fields: ['contBackgroundColor','contBackground'] }).url);
417
+ this.contMargin = gCPVal(container, 'contMargin', [0], { sKey: 'contMarginStatus', fields: ['contMargin'], isPMR: true });
418
+ this.contSpacing = gCPVal(container, 'contSpacing', '16', { sKey: 'contStyleStatus', fields: ['contSpacing'] });
419
+ //advanced
377
420
  this.productInfoPath = getContainerPropsValue(container, 'content.productInfoPath', {value: ""}).value;
378
- this.xnamespace = getContainerPropsValue(container, 'content.xnamespace', this.projectAttr.business_code);
379
- let compConfig = getContainerPropsValue(container, "content.compConfig", null);
380
- let tagsKeys= this.getProductTagsKeys(compConfig,container)
381
- this.need_show_tags = this.getProductTagsParams(compConfig,tagsKeys)
382
421
  },
383
422
 
384
423
  onJfbLoad(options) {
@@ -651,7 +690,7 @@
651
690
  }
652
691
  .skeTwoBox {
653
692
  display: flex;
654
- justify-content: space-between;
693
+ justify-content: space-around;
655
694
  align-items: flex-start;
656
695
  &> view:last-child{
657
696
  margin-right: 0!important;
@@ -659,7 +698,7 @@
659
698
  }
660
699
  .skeThreeBox {
661
700
  display: flex;
662
- justify-content: space-between;
701
+ justify-content: space-around;
663
702
  align-items: flex-start;
664
703
  &> view:last-child{
665
704
  margin-right: 0!important;
@@ -149,151 +149,6 @@ module.exports = {
149
149
  }
150
150
  ],
151
151
  },
152
- {
153
- product_id: 60008818,
154
- product_type: "good",
155
- brand_id: 40413,
156
- brand_name: "良品铺子",
157
- list_title: "百草味原色无漂白盐焗味开心果500g 每日坚果干果零食量贩 送礼团购",
158
- status: "soldout",
159
- sale_num: 0,
160
- market_price: 4300,
161
- thumb: "//sandbox-img.jufubao.cn/uploads/20230522/d394f125cdbea07de0b7c33838fc680f.jpg",
162
- sale_price: 5356,
163
- show_prices: [
164
- {
165
- "p": 3347,
166
- "n": "PLUS价",
167
- "t": "S"
168
- },
169
- {
170
- "p": 4300,
171
- "n": "原价",
172
- "t": "U"
173
- }
174
- ],
175
- },
176
- {
177
- product_id: 600070912,
178
- product_type: "good",
179
- brand_id: 40503,
180
- brand_name: "Meixin/美心",
181
- list_title: "惠普(HP)战66 四代 15.6英寸轻薄笔记本电脑",
182
- status: "ok",
183
- sale_num: 0,
184
- market_price: 4300,
185
- thumb: "//sandbox-img.jufubao.cn/uploads/20230517/d01ab9cd8344d226c43919b47f8ed534.jpg",
186
- sale_price: 1300,
187
- show_prices: [
188
- {
189
- "p": 1300,
190
- "n": "PLUS价",
191
- "t": "S"
192
- },
193
- {
194
- "p": 4300,
195
- "n": "原价",
196
- "t": "U"
197
- }
198
- ],
199
- },
200
- {
201
- product_id: 600088162,
202
- product_type: "good",
203
- brand_id: 40413,
204
- brand_name: "良品铺子",
205
- list_title: "良品铺子手撕面包2斤装 量贩早餐小面包代餐休闲零食办公室点心整箱装礼盒",
206
- status: "ok",
207
- sale_num: 0,
208
- market_price: 4300,
209
- thumb: "//sandbox-img.jufubao.cn/uploads/20230522/24f0e3386a80c2a6659d71862eedcae7.jpg",
210
- sale_price: 2678,
211
- show_prices: [
212
- {
213
- "p": 2678,
214
- "n": "PLUS价",
215
- "t": "S"
216
- },
217
- {
218
- "p": 4300,
219
- "n": "原价",
220
- "t": "U"
221
- }
222
- ],
223
- },
224
- {
225
- product_id: 600088212,
226
- product_type: "good",
227
- brand_id: 40189,
228
- brand_name: "好丽友",
229
- list_title:
230
- "好丽友(orion)零食休闲零食薯条膨化食品呀!土豆番茄酱味70g/袋",
231
- status: "soldout",
232
- sale_num: 0,
233
- market_price: 4300,
234
- thumb: "//sandbox-img.jufubao.cn/uploads/20230522/eb1d4222f69559e1ac0c999ae01da8ae.jpg",
235
- sale_price: 2678,
236
- show_prices: [
237
- {
238
- "p": 2678,
239
- "n": "PLUS价",
240
- "t": "S"
241
- },
242
- {
243
- "p": 4300,
244
- "n": "原价",
245
- "t": "U"
246
- }
247
- ],
248
- },
249
- {
250
- product_id: 600088172,
251
- product_type: "good",
252
- brand_id: 40413,
253
- brand_name: "良品铺子",
254
- list_title: "港荣蒸蛋糕 奶香味手撕蛋糕900g/箱面包蛋糕早餐面包办公室零食",
255
- status: "off",
256
- sale_num: 0,
257
- market_price: 4300,
258
- thumb: "//sandbox-img.jufubao.cn/uploads/20230522/f1a75df336de07214278e97232207e97.jpg",
259
- sale_price: 3347,
260
- show_prices: [
261
- {
262
- "p": 3347,
263
- "n": "PLUS价",
264
- "t": "S"
265
- },
266
- {
267
- "p": 4300,
268
- "n": "原价",
269
- "t": "U"
270
- }
271
- ],
272
- },
273
- {
274
- product_id: 600088182,
275
- product_type: "good",
276
- brand_id: 40413,
277
- brand_name: "良品铺子",
278
- list_title: "百草味原色无漂白盐焗味开心果500g 每日坚果干果零食量贩 送礼团购",
279
- status: "soldout",
280
- sale_num: 0,
281
- market_price: 4300,
282
- thumb: "//sandbox-img.jufubao.cn/uploads/20230522/d394f125cdbea07de0b7c33838fc680f.jpg",
283
- sale_price: 5356,
284
- show_prices: [
285
- {
286
- "p": 3347,
287
- "n": "PLUS价",
288
- "t": "S"
289
- },
290
- {
291
- "p": 4300,
292
- "n": "原价",
293
- "t": "U"
294
- }
295
- ],
296
- }
297
152
  ],
298
153
  request_id: "d649550fb3e62d43"
299
154
  },
@@ -459,38 +314,6 @@ module.exports = {
459
314
  }
460
315
  ],
461
316
  },
462
- {
463
- partner_id: 0,
464
- product_id: 60008275,
465
- product_type: "card",
466
- brand_id: 3,
467
- brand_name: "好利来",
468
- product_name: "",
469
- sub_title: "",
470
- short_title: "",
471
- list_title: "电子码(用于测试搜索)0510",
472
- channel_code: "",
473
- supplier_id: "",
474
- status: "ok",
475
- sale_num: 0,
476
- thumb: "//sandbox-img.jufubao.cn/uploads/20230510/058bb3097724eba08db852546f7cbf88.jpg",
477
- sale_price: 1339,
478
- market_tags: [],
479
- created_time: 0,
480
- updated_time: 0,
481
- show_prices: [
482
- {
483
- "p": 1339,
484
- "n": "PLUS价",
485
- "t": "S"
486
- },
487
- {
488
- "p": 4300,
489
- "n": "原价",
490
- "t": "U"
491
- }
492
- ],
493
- }
494
317
  ]
495
318
  },
496
319
  {
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ import {
3
+ dataVal,
4
+ statusDataVal,
5
+ statusShow
6
+ } from "@/utils/AttrTools";
7
+ export default (data, gValue, gColor, oldData) => {
8
+ return [
9
+ {
10
+ label: '商品详情',
11
+ ele: 'xd-select-pages-path',
12
+ labelInline: true,
13
+ valueKey: 'productInfoPath',
14
+ placeholder: '请选择商品详情',
15
+ value: dataVal({ data, key: 'productInfoPath', dValue: null, gValue }),
16
+ groupKey: 'advanced',
17
+ className: 'input100',
18
+ setting: {
19
+ mode: 'new',
20
+ router: XdBus.getParentApi('getPagesTree'),
21
+ },
22
+ },
23
+ ]
24
+ }