@conecli/cone-render 0.10.1-shop3.11 → 0.10.1-shop3.111

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 (115) hide show
  1. package/README.md +1 -1
  2. package/dist/api/index.ts +1 -1
  3. package/dist/common/accessibility.h5.ts +1 -0
  4. package/dist/common/accessibility.ts +1 -0
  5. package/dist/common/const.ts +1 -1
  6. package/dist/common/index.h5.ts +1 -1
  7. package/dist/common/index.jd.ts +1 -1
  8. package/dist/common/index.ts +1 -1
  9. package/dist/common/index.weapp.ts +1 -1
  10. package/dist/common/jdplayerSdk.weapp.tsx +1 -0
  11. package/dist/common/jssdk.ts +1 -1
  12. package/dist/common/jssdk.weapp.ts +1 -0
  13. package/dist/common/pageType.ts +1 -1
  14. package/dist/common/token/index.h5.ts +1 -1
  15. package/dist/common/token/token.jd.ts +1 -1
  16. package/dist/common/wxappApi.ascf.ts +1 -0
  17. package/dist/common/wxappApi.ts +1 -1
  18. package/dist/components/ErrorBoundary.tsx +1 -1
  19. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  20. package/dist/components/base/CountDown/index.tsx +1 -1
  21. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  22. package/dist/components/base/CustomVideo/index.tsx +1 -1
  23. package/dist/components/base/CustomVideo/index.weapp.tsx +1 -0
  24. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  25. package/dist/components/base/ExposureSmart/index.tsx +1 -1
  26. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  27. package/dist/components/base/InOrOutViewObserver/index.weapp.tsx +1 -0
  28. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  29. package/dist/components/base/LazyLayoutLoad/index.tsx +1 -1
  30. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  31. package/dist/components/base/MobileCommonHeader/index.tsx +1 -1
  32. package/dist/components/base/MobileCommonHeader/index.weapp.tsx +1 -0
  33. package/dist/components/base/NetworkDataError/const.ts +1 -1
  34. package/dist/components/base/NetworkDataError/index.module.scss +118 -72
  35. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  36. package/dist/components/base/Price/Base/index.module.scss +12 -0
  37. package/dist/components/base/Price/Base/index.tsx +1 -1
  38. package/dist/components/base/Price/Double/index.module.scss +25 -1
  39. package/dist/components/base/Price/Double/index.tsx +1 -1
  40. package/dist/components/base/ShopLeGaoTag/index.h5.module.scss +35 -0
  41. package/dist/components/base/ShopLeGaoTag/index.h5.tsx +1 -0
  42. package/dist/components/base/ShopLeGaoTag/index.module.scss +33 -0
  43. package/dist/components/base/ShopLeGaoTag/index.tsx +1 -0
  44. package/dist/components/debug/DebugLayout/index.module.scss +2 -2
  45. package/dist/components/floorItem.tsx +1 -1
  46. package/dist/components/isv/Floor/index.tsx +1 -1
  47. package/dist/components/remoteFloorItem.tsx +1 -1
  48. package/dist/config/env.ts +1 -1
  49. package/dist/interface/common.ts +1 -1
  50. package/dist/interface/component.ts +1 -1
  51. package/dist/interface/jumpEventReport.ts +1 -1
  52. package/dist/interface/service.ts +1 -1
  53. package/dist/jumpEventReport/base.ts +1 -1
  54. package/dist/jumpEventReport/const.ts +1 -1
  55. package/dist/jumpEventReport/createReportFloorData.ts +1 -1
  56. package/dist/jumpEventReport/index.h5.ts +1 -1
  57. package/dist/jumpEventReport/index.jd.ts +1 -1
  58. package/dist/jumpEventReport/index.weapp.ts +1 -1
  59. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  60. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  61. package/dist/jumpEventReport/logEventConfig.h5.ts +1 -0
  62. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  63. package/dist/jumpEventReport/web/report.ts +1 -1
  64. package/dist/jumpEventReport/web.base.ts +1 -1
  65. package/dist/jumpEventReport/web.jd.ts +1 -1
  66. package/dist/jumpEventReport/web.pc.ts +1 -1
  67. package/dist/jumpEventReport/web.tjm.ts +1 -1
  68. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  69. package/dist/language/en_US.json +395 -0
  70. package/dist/language/zh_CN.json +395 -0
  71. package/dist/language/zh_HK.json +395 -0
  72. package/dist/libs/openShopBridge.js +161 -0
  73. package/dist/libs/openShopBridge.min.js +1 -0
  74. package/dist/libs/taroAppReport.js +2 -2
  75. package/dist/modules/ContainerFloorList/index.h5.module.scss +16 -2
  76. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  77. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  78. package/dist/modules/DecorateContainerFloorList/index.weapp.tsx +1 -0
  79. package/dist/open/api/environment.ts +1 -1
  80. package/dist/open/api/shopMember.ts +1 -1
  81. package/dist/open/api/shopMember.weapp.ts +1 -0
  82. package/dist/open/api/track.ts +1 -1
  83. package/dist/open/api/util.ts +1 -1
  84. package/dist/open/components/index.ts +1 -1
  85. package/dist/open/index.ts +1 -1
  86. package/dist/sass/app.h5.scss +19 -2
  87. package/dist/sass/base.scss +8 -4
  88. package/dist/service/fetchGateway.ts +1 -1
  89. package/dist/service/fetchGateway.weapp.ts +1 -1
  90. package/dist/service/fetchJsonp.weapp.ts +1 -0
  91. package/dist/service/http/const.ts +1 -1
  92. package/dist/service/http/h5Http.ts +1 -1
  93. package/dist/service/http/httpInterceptors.weapp.ts +1 -0
  94. package/dist/service/requestServer.h5.ts +1 -1
  95. package/dist/service/requestServer.ts +1 -1
  96. package/dist/service/requestServer.weapp.ts +1 -1
  97. package/dist/utils/connectNativeJsBridge.ts +1 -1
  98. package/dist/utils/h5Utils.ts +1 -1
  99. package/dist/utils/harmonyCallRouter.h5.ts +1 -0
  100. package/dist/utils/harmonyCallRouter.ts +0 -0
  101. package/dist/utils/index.h5.ts +1 -1
  102. package/dist/utils/index.ts +1 -1
  103. package/dist/utils/index.weapp.ts +1 -1
  104. package/dist/utils/jumpExtMapUtil.ts +1 -0
  105. package/dist/utils/jumpExtMapUtil.weapp.ts +1 -0
  106. package/dist/utils/log.ts +1 -0
  107. package/dist/utils/{sColor.js → sColor.ts} +1 -1
  108. package/dist/utils/sColor.weapp.ts +1 -0
  109. package/dist/utils/utils.ts +1 -1
  110. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  111. package/dist/wxapp/common/user_info.js +1 -1
  112. package/package.json +165 -141
  113. package/dist/jumpEventReport/web/wqshop.report.ts +0 -1
  114. package/dist/utils/priceUtils.js +0 -1
  115. /package/dist/utils/{jumpExtMapUtil.js → jumpExtMapUtil.h5.ts} +0 -0
@@ -1 +1 @@
1
- import React from 'react';
2
1
  console.warn('🚗 ~~ file: index.tsx:22 ~~ reportException() ~~ {type, detail, text}:', {
3
2
  type,
4
3
  data,
5
4
  text,
6
5
  });
7
6
  sgmCustomReport({
8
7
  code: getSgmCustomCode(`${SgmCustomCode.PRICE_RENDER}_${type}`),
9
8
  msg: {
10
9
  type,
11
10
  data,
12
11
  text: '[双价格组件]' + text,
13
12
  },
14
13
  });
15
14
  return rest.some((item) => item === undefined || item === '');
16
15
  const numPrice = Number(strPrice);
17
16
  if (isNaN(numPrice)) {
18
17
  reportException({
19
18
  type: 'isNotNumericType',
20
19
  data: props,
21
20
  text: `传入价格字段值“${strPrice}”转换数字报错`,
22
21
  });
23
22
  return false;
24
23
  }
25
24
  else if (numPrice <= 0) {
26
25
  reportException({
27
26
  type: 'isNotPositiveNumber',
28
27
  data: props,
29
28
  text: `传入价格字段值“${strPrice}”不是一个正数`,
30
29
  });
31
30
  return false;
32
31
  }
33
32
  const result = numPrice.toString().match(/(\d+)(\.(\d+))?/);
34
33
  if (result && result[3]?.length > 2) {
35
34
  reportException({
36
35
  type: 'decimalPlaceTooLong',
37
36
  data: props,
38
37
  text: `传入价格字段值“${strPrice}”小数位不能超过2位`,
39
38
  });
40
39
  return false;
41
40
  }
42
41
  if (/^\d+(\.\d+)?[eE][+-]?\d+$/.test(strPrice)) {
43
42
  reportException({
44
43
  type: 'findScientificNotation',
45
44
  data: props,
46
45
  text: `传入价格字段值“${strPrice}”是一个科学计数法格式`,
47
46
  });
48
47
  }
49
48
  return true;
50
49
  const { jdPrice, finalPrice } = props;
51
50
  if (jdPrice && finalPrice && Number(jdPrice) <= Number(finalPrice)) {
52
51
  reportException({
53
52
  type: 'pricesCompareException',
54
53
  data: props,
55
54
  text: `身份/到手价必须小于松果价`,
56
55
  });
57
56
  return false;
58
57
  } else {
59
58
  return true;
60
59
  }
61
60
  const numPrice = Number(strPrice);
62
61
  const result = numPrice.toString().match(/(\d+)(\.(\d+))?/);
63
62
  if (result) {
64
63
  return {
65
64
  integerPrice: result[1],
66
65
  decimalPrice: (result[3] || '').replace(/0+$/, ''),
67
66
  };
68
67
  } else {
69
68
  reportException({
70
69
  type: 'deconstructException',
71
70
  data: props,
72
71
  text: `解构传入价格字段值“${strPrice}”解构发生异常`,
73
72
  });
74
73
  return null;
75
74
  }
76
75
  const {
77
76
  jdPrice,
78
77
  finalPrice,
79
78
  priceText = '',
80
79
  priceType,
81
80
  hitUserIdentity = false,
82
81
  fallbackRender = null,
83
82
  className = null,
84
83
  style = {},
85
84
  childrenClassName = null,
86
85
  bigNoPriceClassName = null,
87
86
  bigSymbolClassName = null,
88
87
  bigIntegerClassName = null,
89
88
  bigDecimalClassName = null,
90
89
  priceDescClassName = null,
91
90
  smallPriceClassName = null,
92
91
  lineNumber = 1,
93
92
  size = 'M',
94
93
  isDefaultRemoveSmallPrice = false,
95
94
  } = props;
96
95
  let useBackstop = false;
97
96
  if (isNull(props.jdPrice, props.priceType)) {
98
97
  useBackstop = true;
99
98
  reportException({
100
99
  type: 'paramMiss',
101
100
  data: props,
102
101
  text: '缺少必要入参:jdPrice、priceType',
103
102
  });
104
103
  } else if (
105
104
  !allowedNoHitUserIdentityTypes.includes(props.priceType) &&
106
105
  props.hitUserIdentity === undefined
107
106
  ) {
108
107
  useBackstop = true;
109
108
  reportException({
110
109
  type: 'paramMiss',
111
110
  data: props,
112
111
  text: `价格类型${props.priceType}缺少必要入参:hitUserIdentity`,
113
112
  });
114
113
  }
115
114
  const especialHitStyleType = {
116
115
  7: 'plusStyle',
117
116
  9: 'samStyle',
118
117
  };
119
118
  const especialMissStyleType = {
120
119
  7: 'plusStyle',
121
120
  8: 'fansStyle',
122
121
  9: 'samStyle',
123
122
  10: 'studentStyle',
124
123
  12: 'yhdStyle',
125
124
  13: 'memberStyle',
126
125
  };
127
126
  const isUseFinalPriceAsBigPrice = allowedNoHitUserIdentityTypes.includes(priceType);
128
127
  const isEquivalentHit = isUseFinalPriceAsBigPrice || hitUserIdentity;
129
128
  const isOnlyShowBigPrice = priceType === 3 || isNull(finalPrice);
130
129
  const smallPrice = isEquivalentHit ? jdPrice : finalPrice;
131
130
  const isHideSmallPrice =
132
131
  priceType === 14 || isDefaultRemoveSmallPrice || isNaN(Number(smallPrice));
133
132
  const isTextPrice = priceType === 4;
134
133
  if (!isTextPrice && !useBackstop) {
135
134
  if (finalPrice && !numericPriceValidate(finalPrice, props)) {
136
135
  useBackstop = true;
137
136
  } else if (!numericPriceValidate(jdPrice, props)) {
138
137
  useBackstop = true;
139
138
  }
140
139
  if (!useBackstop && !isOnlyShowBigPrice && !isHideSmallPrice && !pricesCompareValidate(props)) {
141
140
  useBackstop = true;
142
141
  }
143
142
  }
144
143
  const bigPriceObj =
145
144
  isTextPrice || useBackstop
146
145
  ? {}
147
146
  : getDeconstructPrice(isEquivalentHit && !isNull(finalPrice) ? finalPrice : jdPrice, props);
148
147
  const { integerPrice = '', decimalPrice = '' } = bigPriceObj || {};
149
148
  const isPriceDescInFront = isEquivalentHit;
150
149
  const hitColorStyle = isEquivalentHit ? styles[especialHitStyleType[priceType]] : null;
151
150
  const missColorStyle = isEquivalentHit ? null : styles[especialMissStyleType[priceType]];
152
151
  const isBigPriceHasDecimal = decimalPrice !== '' && !/^0+$/.test(decimalPrice);
153
152
  const sizeLineHeight = {
154
153
  XS: 28,
155
154
  S: 34,
156
155
  M: 40,
157
156
  L: 46,
158
157
  XL: 52,
159
158
  };
160
159
  const lineHeight = Taro.pxTransform(sizeLineHeight[size] * 1.25);
161
160
  const wrapHeight = Taro.pxTransform(sizeLineHeight[size] * 1.25 * lineNumber);
162
161
  const computedHeightStyle = {
163
162
  height: wrapHeight,
164
163
  };
165
164
  const itemCommonStyle = {
166
165
  height: lineHeight,
167
166
  };
168
167
  const needSizeStyles = [
169
168
  'bigNoPrice',
170
169
  'bigSymbol',
171
170
  'bigInteger',
172
171
  'bigDecimal',
173
172
  'priceDesc',
174
173
  'smallPrice',
175
174
  ];
176
175
  const sizeStyles = needSizeStyles.reduce((acc, cur) => {
177
176
  acc[cur] = styles[cur + size];
178
177
  return acc;
179
178
  }, {});
180
179
  const finalFallbackText = !isLanguageForEn ? '暂无报价' : 'Unpriced';
181
180
  const noPriceShowText =
182
181
  priceText || (/^[\u4e00-\u9fa5]+$/.test(jdPrice) ? jdPrice : finalFallbackText);
183
182
  if (useBackstop && fallbackRender) {
184
183
  return fallbackRender;
185
184
  }
186
185
  return (
187
186
  <View
188
187
  className={classNames(styles.wrap, className)}
189
188
  style={{ ...computedHeightStyle, ...style }}
190
189
  >
191
190
  {isTextPrice || useBackstop ? (
192
191
  <Text
193
192
  className={classNames(
194
193
  styles.childStyle,
195
194
  styles.bigStyle,
196
195
  styles.bigNoPrice,
197
196
  sizeStyles['bigNoPrice'],
198
197
  childrenClassName,
199
198
  bigNoPriceClassName,
200
199
  )}
201
200
  style={{ ...itemCommonStyle }}
202
201
  >
203
202
  {useBackstop ? finalFallbackText : noPriceShowText}
204
203
  </Text>
205
204
  ) : (
206
205
  [
207
206
  <Text
208
207
  className={classNames(
209
208
  styles.childStyle,
210
209
  styles.bigStyle,
211
210
  styles.bigSymbol,
212
211
  sizeStyles['bigSymbol'],
213
212
  hitColorStyle,
214
213
  childrenClassName,
215
214
  bigSymbolClassName,
216
215
  )}
217
216
  key="bigSymbol"
218
217
  style={{ ...itemCommonStyle }}
219
218
  >
220
219
  ¥
221
220
  </Text>,
222
221
  <Text
223
222
  className={classNames(
224
223
  styles.childStyle,
225
224
  styles.bigStyle,
226
225
  styles.bigInteger,
227
226
  sizeStyles['bigInteger'],
228
227
  hitColorStyle,
229
228
  !isOnlyShowBigPrice && !isBigPriceHasDecimal && !isPriceDescInFront
230
229
  ? styles.rightMargin
231
230
  : null,
232
231
  childrenClassName,
233
232
  bigIntegerClassName,
234
233
  )}
235
234
  key="bigInteger"
236
235
  style={{ ...itemCommonStyle }}
237
236
  >
238
237
  {integerPrice}
239
238
  </Text>,
240
239
  isBigPriceHasDecimal ? (
241
240
  <Text
242
241
  className={classNames(
243
242
  styles.childStyle,
244
243
  styles.bigStyle,
245
244
  styles.bigDecimal,
246
245
  sizeStyles['bigDecimal'],
247
246
  hitColorStyle,
248
247
  isPriceDescInFront ? null : styles.rightMargin,
249
248
  childrenClassName,
250
249
  bigDecimalClassName,
251
250
  )}
252
251
  key="bigDecimal"
253
252
  style={{ ...itemCommonStyle }}
254
253
  >
255
254
  .{decimalPrice}
256
255
  </Text>
257
256
  ) : null,
258
257
  !isOnlyShowBigPrice && [
259
258
  isPriceDescInFront && (
260
259
  <Text
261
260
  className={classNames(
262
261
  styles.childStyle,
263
262
  styles.priceDesc,
264
263
  {
265
264
  [styles['priceEnDesc']]: isLanguageForEn,
266
265
  },
267
266
  {
268
267
  [styles['priceHiddenDesc']]: priceText === '',
269
268
  },
270
269
  sizeStyles['priceDesc'],
271
270
  styles.bigStyle,
272
271
  hitColorStyle,
273
272
  isPriceDescInFront ? styles.rightMargin : null,
274
273
  childrenClassName,
275
274
  priceDescClassName,
276
275
  )}
277
276
  key="descFront"
278
277
  style={{ ...itemCommonStyle }}
279
278
  >
280
279
  {priceText === '' ? '_' : priceText}
281
280
  </Text>
282
281
  ),
283
282
  <View
284
283
  style={{
285
284
  display: 'inline-flex',
286
285
  }}
287
286
  >
288
287
  {smallPrice && !isHideSmallPrice ? (
289
288
  <Text
290
289
  className={classNames(
291
290
  styles.childStyle,
292
291
  styles.smallPrice,
293
292
  sizeStyles['smallPrice'],
294
293
  styles.smallStyle,
295
294
  missColorStyle,
296
295
  childrenClassName,
297
296
  smallPriceClassName,
298
297
  )}
299
298
  key="smallPrice"
300
299
  style={{ ...itemCommonStyle }}
301
300
  >
302
301
  ¥{Number(smallPrice)}
303
302
  </Text>
304
303
  ) : null}
305
304
  {!isPriceDescInFront && !isHideSmallPrice && (
306
305
  <Text
307
306
  className={classNames(
308
307
  styles.childStyle,
309
308
  styles.priceDesc,
310
309
  {
311
310
  [styles['priceEnDesc']]: isLanguageForEn,
312
311
  },
313
312
  {
314
313
  [styles['priceHiddenDesc']]: priceText === '',
315
314
  },
316
315
  sizeStyles['priceDesc'],
317
316
  styles.smallStyle,
318
317
  styles.missPriceDesc,
319
318
  missColorStyle,
320
319
  childrenClassName,
321
320
  priceDescClassName,
322
321
  )}
323
322
  key="descBack"
324
323
  style={{ ...itemCommonStyle }}
325
324
  >
326
325
  {priceText === '' ? '_' : priceText}
327
326
  </Text>
328
327
  )}
329
328
  </View>,
330
329
  ],
331
330
  ]
332
331
  )}
333
332
  </View>
334
333
  );
334
+ import React from 'react';
335
335
  console.warn('🚗 ~~ file: index.tsx:22 ~~ reportException() ~~ {type, detail, text}:', {
336
336
  type,
337
337
  data,
338
338
  text,
339
339
  });
340
340
  draBusinessCustomReport({
341
341
  eventName: 'business',
342
342
  errorName: getSgmCustomCode(`${SgmCustomCode.PRICE_RENDER}_${type}`),
343
343
  errorMessage: '[双价格组件]' + text,
344
344
  extraData: JSON.stringify({
345
345
  type,
346
346
  data,
347
347
  }),
348
348
  });
349
349
  return rest.some((item) => item === undefined || item === '');
350
350
  const numPrice = Number(strPrice);
351
351
  if (isNaN(numPrice)) {
352
352
  reportException({
353
353
  type: 'isNotNumericType',
354
354
  data: props,
355
355
  text: `传入价格字段值“${strPrice}”转换数字报错`,
356
356
  });
357
357
  return false;
358
358
  }
359
359
  else if (numPrice <= 0) {
360
360
  reportException({
361
361
  type: 'isNotPositiveNumber',
362
362
  data: props,
363
363
  text: `传入价格字段值“${strPrice}”不是一个正数`,
364
364
  });
365
365
  return false;
366
366
  }
367
367
  const result = numPrice.toString().match(/(\d+)(\.(\d+))?/);
368
368
  if (result && result[3]?.length > 2) {
369
369
  reportException({
370
370
  type: 'decimalPlaceTooLong',
371
371
  data: props,
372
372
  text: `传入价格字段值“${strPrice}”小数位不能超过2位`,
373
373
  });
374
374
  return false;
375
375
  }
376
376
  if (/^\d+(\.\d+)?[eE][+-]?\d+$/.test(strPrice)) {
377
377
  reportException({
378
378
  type: 'findScientificNotation',
379
379
  data: props,
380
380
  text: `传入价格字段值“${strPrice}”是一个科学计数法格式`,
381
381
  });
382
382
  }
383
383
  return true;
384
384
  const { jdPrice, finalPrice, forceShowFinalPrice } = props;
385
385
  if (jdPrice && finalPrice) {
386
386
  const getLastPassValidateState = forceShowFinalPrice || Number(finalPrice) < Number(jdPrice);
387
387
  !getLastPassValidateState &&
388
388
  reportException({
389
389
  type: 'pricesCompareException',
390
390
  data: props,
391
391
  text: `身份/到手价必须小于松果价`,
392
392
  });
393
393
  return getLastPassValidateState;
394
394
  } else {
395
395
  return true;
396
396
  }
397
397
  const numPrice = Number(strPrice);
398
398
  const result = numPrice.toString().match(/(\d+)(\.(\d+))?/);
399
399
  if (result) {
400
400
  return {
401
401
  integerPrice: result[1],
402
402
  decimalPrice: (result[3] || '').replace(/0+$/, ''),
403
403
  };
404
404
  } else {
405
405
  reportException({
406
406
  type: 'deconstructException',
407
407
  data: props,
408
408
  text: `解构传入价格字段值“${strPrice}”解构发生异常`,
409
409
  });
410
410
  return null;
411
411
  }
412
412
  const {
413
413
  jdPrice,
414
414
  finalPrice,
415
415
  priceText = '',
416
416
  priceTextColor = '',
417
417
  subPriceTextColor = '',
418
418
  subPriceColor = '',
419
419
  priceUnit = '',
420
420
  priceType,
421
421
  hitUserIdentity = false,
422
422
  forceShowFinalPrice = false,
423
423
  hideSmallPrice = false,
424
424
  fallbackRender = null,
425
425
  className = null,
426
426
  style = {},
427
427
  childrenClassName = null,
428
428
  bigNoPriceClassName = null,
429
429
  bigSymbolClassName = null,
430
430
  bigIntegerClassName = null,
431
431
  bigDecimalClassName = null,
432
432
  priceDescClassName = null,
433
433
  smallPriceClassName = null,
434
434
  smallPriceDescClassName = null,
435
435
  lineNumber = 1,
436
436
  size = 'M',
437
437
  isDefaultRemoveSmallPrice = false,
438
438
  useFontV2 = false,
439
439
  useFontV2Bold = false,
440
440
  useSmallFontV2 = false,
441
441
  useSmallFontV2Bold = false,
442
442
  nativeProps,
443
443
  } = props;
444
444
  let useBackstop = false;
445
445
  const isShowPriceUnit = priceUnit && priceUnit !== '';
446
446
  if (isNull(props.priceType)) {
447
447
  useBackstop = true;
448
448
  reportException({
449
449
  type: 'paramMiss',
450
450
  data: props,
451
451
  text: '缺少必要入参:priceType',
452
452
  });
453
453
  } else if (
454
454
  !allowedNoHitUserIdentityTypes.includes(props.priceType) &&
455
455
  props.hitUserIdentity === undefined
456
456
  ) {
457
457
  useBackstop = true;
458
458
  reportException({
459
459
  type: 'paramMiss',
460
460
  data: props,
461
461
  text: `价格类型${props.priceType}缺少必要入参:hitUserIdentity`,
462
462
  });
463
463
  }
464
464
  const especialHitStyleType = {
465
465
  7: 'plusStyle',
466
466
  9: 'samStyle',
467
467
  };
468
468
  const especialMissStyleType = {
469
469
  7: 'plusStyle',
470
470
  8: 'fansStyle',
471
471
  9: 'samStyle',
472
472
  10: 'studentStyle',
473
473
  12: 'yhdStyle',
474
474
  13: 'memberStyle',
475
475
  };
476
476
  const isUseFinalPriceAsBigPrice = allowedNoHitUserIdentityTypes.includes(priceType);
477
477
  const isEquivalentHit = isUseFinalPriceAsBigPrice || hitUserIdentity;
478
478
  const isOnlyShowBigPrice = priceType === 3 || isNull(finalPrice);
479
479
  const smallPrice = isEquivalentHit ? jdPrice : finalPrice;
480
480
  const isHideSmallPrice =
481
481
  hideSmallPrice || priceType === 14 || isDefaultRemoveSmallPrice || isNaN(Number(smallPrice));
482
482
  const isTextPrice = priceType === 4;
483
483
  if (!isTextPrice && !useBackstop) {
484
484
  if (finalPrice && !numericPriceValidate(finalPrice, props)) {
485
485
  useBackstop = true;
486
486
  } else if (jdPrice && !numericPriceValidate(jdPrice, props)) {
487
487
  useBackstop = true;
488
488
  }
489
489
  if (!useBackstop && !isOnlyShowBigPrice && !isHideSmallPrice && !pricesCompareValidate(props)) {
490
490
  useBackstop = true;
491
491
  }
492
492
  }
493
493
  const bigPriceObj =
494
494
  isTextPrice || useBackstop
495
495
  ? {}
496
496
  : getDeconstructPrice(isEquivalentHit && !isNull(finalPrice) ? finalPrice : jdPrice, props);
497
497
  const { integerPrice = '', decimalPrice = '' } = bigPriceObj || {};
498
498
  const isPriceDescInFront = isEquivalentHit;
499
499
  const hitColorStyle = isEquivalentHit ? styles[especialHitStyleType[priceType]] : null;
500
500
  const missColorStyle = isEquivalentHit ? null : styles[especialMissStyleType[priceType]];
501
501
  const isBigPriceHasDecimal = decimalPrice !== '' && !/^0+$/.test(decimalPrice);
502
502
  const sizeLineHeight = {
503
503
  XS: 28,
504
504
  S: 34,
505
505
  M: 40,
506
506
  L: 46,
507
507
  XL: 52,
508
508
  };
509
509
  const lineHeight = Taro.pxTransform(sizeLineHeight[size] * 1.25);
510
510
  const wrapHeight = Taro.pxTransform(sizeLineHeight[size] * 1.25 * lineNumber);
511
511
  const computedHeightStyle = {
512
512
  height: wrapHeight,
513
513
  };
514
514
  const itemCommonStyle = {
515
515
  height: lineHeight,
516
516
  };
517
517
  const bigPriceTextStyle = priceTextColor ? { color: priceTextColor } : {};
518
518
  const smallPriceTextStyle = subPriceTextColor ? { color: subPriceTextColor } : {};
519
519
  const smallPriceStyle = subPriceColor ? { color: subPriceColor } : {};
520
520
  const needSizeStyles = [
521
521
  'bigNoPrice',
522
522
  'bigSymbol',
523
523
  'bigInteger',
524
524
  'bigDecimal',
525
525
  'priceDesc',
526
526
  'smallPrice',
527
527
  'priceUnit',
528
528
  ];
529
529
  const sizeStyles = needSizeStyles.reduce((acc, cur) => {
530
530
  acc[cur] = styles[cur + size];
531
531
  return acc;
532
532
  }, {});
533
533
  const finalFallbackText = global?.languageJsonData?.noPriceTip || '暂无报价';
534
534
  const noPriceShowText =
535
535
  priceText || (/^[\u4e00-\u9fa5]+$/.test(jdPrice) ? jdPrice : finalFallbackText);
536
536
  if (useBackstop && fallbackRender) {
537
537
  return fallbackRender;
538
538
  }
539
539
  return (
540
540
  <View
541
541
  className={classNames(styles.wrap, className)}
542
542
  style={{ ...computedHeightStyle, ...style }}
543
543
  {...nativeProps}
544
544
  >
545
545
  {isTextPrice || useBackstop ? (
546
546
  <Text
547
547
  className={classNames(
548
548
  styles.childStyle,
549
549
  styles.bigStyle,
550
550
  styles.bigNoPrice,
551
551
  sizeStyles['bigNoPrice'],
552
552
  childrenClassName,
553
553
  bigNoPriceClassName,
554
554
  )}
555
555
  style={{ ...itemCommonStyle }}
556
556
  >
557
557
  {useBackstop ? finalFallbackText : noPriceShowText}
558
558
  </Text>
559
559
  ) : (
560
560
  [
561
561
  <Text
562
562
  className={classNames(
563
563
  styles.childStyle,
564
564
  styles.bigStyle,
565
565
  styles.bigSymbol,
566
566
  sizeStyles['bigSymbol'],
567
567
  hitColorStyle,
568
568
  childrenClassName,
569
569
  bigSymbolClassName,
570
570
  {
571
571
  [styles.fontV2]: useFontV2,
572
572
  [styles.fontV2Bold]: useFontV2Bold,
573
573
  },
574
574
  )}
575
575
  key="bigSymbol"
576
576
  style={{ ...itemCommonStyle }}
577
577
  >
578
578
  ¥
579
579
  </Text>,
580
580
  <Text
581
581
  className={classNames(
582
582
  styles.childStyle,
583
583
  styles.bigStyle,
584
584
  styles.bigInteger,
585
585
  sizeStyles['bigInteger'],
586
586
  hitColorStyle,
587
587
  !isOnlyShowBigPrice &&
588
588
  !isBigPriceHasDecimal &&
589
589
  !isPriceDescInFront &&
590
590
  !isShowPriceUnit
591
591
  ? styles.rightMargin
592
592
  : null,
593
593
  childrenClassName,
594
594
  bigIntegerClassName,
595
595
  {
596
596
  [styles.fontV2]: useFontV2,
597
597
  [styles.fontV2Bold]: useFontV2Bold,
598
598
  },
599
599
  )}
600
600
  key="bigInteger"
601
601
  style={{ ...itemCommonStyle }}
602
602
  >
603
603
  {integerPrice}
604
604
  </Text>,
605
605
  isBigPriceHasDecimal ? (
606
606
  <Text
607
607
  className={classNames(
608
608
  styles.childStyle,
609
609
  styles.bigStyle,
610
610
  styles.bigDecimal,
611
611
  sizeStyles['bigDecimal'],
612
612
  hitColorStyle,
613
613
  isPriceDescInFront || priceText === '' || isShowPriceUnit
614
614
  ? null
615
615
  : styles.rightMargin,
616
616
  childrenClassName,
617
617
  bigDecimalClassName,
618
618
  {
619
619
  [styles.fontV2]: useFontV2,
620
620
  [styles.fontV2Bold]: useFontV2Bold,
621
621
  },
622
622
  )}
623
623
  key="bigDecimal"
624
624
  style={{ ...itemCommonStyle }}
625
625
  >
626
626
  .{decimalPrice}
627
627
  </Text>
628
628
  ) : null,
629
629
  isShowPriceUnit ? (
630
630
  <Text
631
631
  className={classNames(
632
632
  styles.childStyle,
633
633
  styles.priceUnit,
634
634
  styles.rightMargin,
635
635
  sizeStyles['priceUnit'],
636
636
  styles.bigStyle,
637
637
  hitColorStyle,
638
638
  childrenClassName,
639
639
  priceDescClassName,
640
640
  )}
641
641
  key="descFrontUnit"
642
642
  style={{ ...itemCommonStyle }}
643
643
  >
644
644
  {priceUnit}
645
645
  </Text>
646
646
  ) : null,
647
647
  !isOnlyShowBigPrice && [
648
648
  isPriceDescInFront && (
649
649
  <Text
650
650
  className={classNames(
651
651
  styles.childStyle,
652
652
  styles.priceDesc,
653
653
  {
654
654
  [styles['priceEnDesc']]: isLanguageForEn,
655
655
  },
656
656
  {
657
657
  [styles['priceHiddenDesc']]: priceText === '',
658
658
  },
659
659
  sizeStyles['priceDesc'],
660
660
  styles.bigStyle,
661
661
  hitColorStyle,
662
662
  isPriceDescInFront && !isShowPriceUnit && !isHideSmallPrice
663
663
  ? styles.rightMargin
664
664
  : null,
665
665
  childrenClassName,
666
666
  priceDescClassName,
667
667
  )}
668
668
  key="descFront"
669
669
  style={{ ...itemCommonStyle, ...bigPriceTextStyle }}
670
670
  >
671
671
  {priceText === '' ? '_' : priceText}
672
672
  </Text>
673
673
  ),
674
674
  <View
675
675
  style={{
676
676
  display: 'inline-flex',
677
677
  }}
678
678
  >
679
679
  {smallPrice && !isHideSmallPrice ? (
680
680
  <Text
681
681
  className={classNames(
682
682
  styles.childStyle,
683
683
  styles.smallPrice,
684
684
  sizeStyles['smallPrice'],
685
685
  styles.smallStyle,
686
686
  missColorStyle,
687
687
  childrenClassName,
688
688
  smallPriceClassName,
689
689
  {
690
690
  [styles.fontV2]: useSmallFontV2Bold ? false : useSmallFontV2 || useFontV2,
691
691
  [styles.fontV2Bold]: useSmallFontV2
692
692
  ? false
693
693
  : useSmallFontV2Bold || useFontV2Bold,
694
694
  },
695
695
  )}
696
696
  key="smallPrice"
697
697
  style={{ ...itemCommonStyle, ...smallPriceStyle }}
698
698
  >
699
699
  ¥{Number(smallPrice)}
700
700
  </Text>
701
701
  ) : null}
702
702
  {isShowPriceUnit && !isHideSmallPrice ? (
703
703
  <Text
704
704
  className={classNames(
705
705
  styles.childStyle,
706
706
  styles.priceUnit,
707
707
  sizeStyles['priceUnit'],
708
708
  styles.smallStyle,
709
709
  styles.missPriceDesc,
710
710
  missColorStyle,
711
711
  childrenClassName,
712
712
  smallPriceDescClassName || priceDescClassName,
713
713
  )}
714
714
  key="descFrontUnit"
715
715
  style={{ ...itemCommonStyle, ...smallPriceStyle }}
716
716
  >
717
717
  {priceUnit}
718
718
  </Text>
719
719
  ) : null}
720
720
  {!isPriceDescInFront && !isHideSmallPrice && (
721
721
  <Text
722
722
  className={classNames(
723
723
  styles.childStyle,
724
724
  styles.priceDesc,
725
725
  {
726
726
  [styles['priceEnDesc']]: isLanguageForEn,
727
727
  },
728
728
  {
729
729
  [styles['priceHiddenDesc']]: priceText === '',
730
730
  },
731
731
  sizeStyles['priceDesc'],
732
732
  styles.smallStyle,
733
733
  styles.missPriceDesc,
734
734
  missColorStyle,
735
735
  childrenClassName,
736
736
  smallPriceDescClassName || priceDescClassName,
737
737
  )}
738
738
  key="descBack"
739
739
  style={{ ...itemCommonStyle, ...smallPriceTextStyle }}
740
740
  >
741
741
  {priceText === '' ? '_' : priceText}
742
742
  </Text>
743
743
  )}
744
744
  </View>,
745
745
  ],
746
746
  ]
747
747
  )}
748
748
  </View>
749
749
  );