@conecli/cone-render 0.10.1-shop3.12 → 0.10.1-shop3.121

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 (118) 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/CountDownForApp/index.module.scss +52 -0
  22. package/dist/components/base/CountDownForApp/index.tsx +1 -0
  23. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  24. package/dist/components/base/CustomVideo/index.tsx +1 -1
  25. package/dist/components/base/CustomVideo/index.weapp.tsx +1 -0
  26. package/dist/components/base/ExposureSmart/index.h5.tsx +1 -1
  27. package/dist/components/base/ExposureSmart/index.tsx +1 -1
  28. package/dist/components/base/ExposureSmart/reporter.tsx +1 -1
  29. package/dist/components/base/InOrOutViewObserver/index.weapp.tsx +1 -0
  30. package/dist/components/base/InViewRender/index.tsx +1 -1
  31. package/dist/components/base/LazyLayoutLoad/index.module.scss +9 -9
  32. package/dist/components/base/LazyLayoutLoad/index.tsx +1 -1
  33. package/dist/components/base/LazyLoadImage/index.h5.tsx +1 -1
  34. package/dist/components/base/MobileCommonHeader/index.tsx +1 -1
  35. package/dist/components/base/MobileCommonHeader/index.weapp.tsx +1 -0
  36. package/dist/components/base/NetworkDataError/const.ts +1 -1
  37. package/dist/components/base/NetworkDataError/index.module.scss +118 -72
  38. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  39. package/dist/components/base/Price/Base/index.module.scss +12 -0
  40. package/dist/components/base/Price/Base/index.tsx +1 -1
  41. package/dist/components/base/Price/Double/index.module.scss +25 -1
  42. package/dist/components/base/Price/Double/index.tsx +1 -1
  43. package/dist/components/base/ShopLeGaoTag/index.h5.module.scss +35 -0
  44. package/dist/components/base/ShopLeGaoTag/index.h5.tsx +1 -0
  45. package/dist/components/base/ShopLeGaoTag/index.module.scss +33 -0
  46. package/dist/components/base/ShopLeGaoTag/index.tsx +1 -0
  47. package/dist/components/debug/DebugLayout/index.module.scss +2 -2
  48. package/dist/components/floorItem.tsx +1 -1
  49. package/dist/components/isv/Floor/index.tsx +1 -1
  50. package/dist/components/remoteFloorItem.tsx +1 -1
  51. package/dist/config/env.ts +1 -1
  52. package/dist/interface/common.ts +1 -1
  53. package/dist/interface/component.ts +1 -1
  54. package/dist/interface/jumpEventReport.ts +1 -1
  55. package/dist/interface/service.ts +1 -1
  56. package/dist/jumpEventReport/base.ts +1 -1
  57. package/dist/jumpEventReport/const.ts +1 -1
  58. package/dist/jumpEventReport/createReportFloorData.ts +1 -1
  59. package/dist/jumpEventReport/index.h5.ts +1 -1
  60. package/dist/jumpEventReport/index.jd.ts +1 -1
  61. package/dist/jumpEventReport/index.weapp.ts +1 -1
  62. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  63. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  64. package/dist/jumpEventReport/logEventConfig.h5.ts +1 -0
  65. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  66. package/dist/jumpEventReport/web/report.ts +1 -1
  67. package/dist/jumpEventReport/web.base.ts +1 -1
  68. package/dist/jumpEventReport/web.jd.ts +1 -1
  69. package/dist/jumpEventReport/web.pc.ts +1 -1
  70. package/dist/jumpEventReport/web.tjm.ts +1 -1
  71. package/dist/jumpEventReport/web.wxapp.ts +1 -1
  72. package/dist/language/en_US.json +397 -0
  73. package/dist/language/zh_CN.json +397 -0
  74. package/dist/language/zh_HK.json +397 -0
  75. package/dist/libs/openShopBridge.js +161 -0
  76. package/dist/libs/openShopBridge.min.js +1 -0
  77. package/dist/libs/taroAppReport.js +2 -2
  78. package/dist/modules/ContainerFloorList/index.h5.module.scss +16 -2
  79. package/dist/modules/ContainerFloorList/index.h5.tsx +1 -1
  80. package/dist/modules/ContainerFloorList/index.tsx +1 -1
  81. package/dist/modules/DecorateContainerFloorList/index.weapp.tsx +1 -0
  82. package/dist/open/api/environment.ts +1 -1
  83. package/dist/open/api/shopMember.ts +1 -1
  84. package/dist/open/api/shopMember.weapp.ts +1 -0
  85. package/dist/open/api/track.ts +1 -1
  86. package/dist/open/api/util.ts +1 -1
  87. package/dist/open/components/index.ts +1 -1
  88. package/dist/open/index.ts +1 -1
  89. package/dist/sass/app.h5.scss +19 -2
  90. package/dist/sass/base.scss +8 -4
  91. package/dist/service/fetchGateway.ts +1 -1
  92. package/dist/service/fetchGateway.weapp.ts +1 -1
  93. package/dist/service/fetchJsonp.weapp.ts +1 -0
  94. package/dist/service/http/const.ts +1 -1
  95. package/dist/service/http/h5Http.ts +1 -1
  96. package/dist/service/http/httpInterceptors.weapp.ts +1 -0
  97. package/dist/service/requestServer.h5.ts +1 -1
  98. package/dist/service/requestServer.ts +1 -1
  99. package/dist/service/requestServer.weapp.ts +1 -1
  100. package/dist/utils/connectNativeJsBridge.ts +1 -1
  101. package/dist/utils/h5Utils.ts +1 -1
  102. package/dist/utils/harmonyCallRouter.h5.ts +1 -0
  103. package/dist/utils/harmonyCallRouter.ts +0 -0
  104. package/dist/utils/index.h5.ts +1 -1
  105. package/dist/utils/index.ts +1 -1
  106. package/dist/utils/index.weapp.ts +1 -1
  107. package/dist/utils/jumpExtMapUtil.ts +1 -0
  108. package/dist/utils/jumpExtMapUtil.weapp.ts +1 -0
  109. package/dist/utils/log.ts +1 -0
  110. package/dist/utils/{sColor.js → sColor.ts} +1 -1
  111. package/dist/utils/sColor.weapp.ts +1 -0
  112. package/dist/utils/utils.ts +1 -1
  113. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  114. package/dist/wxapp/common/user_info.js +1 -1
  115. package/package.json +166 -141
  116. package/dist/jumpEventReport/web/wqshop.report.ts +0 -1
  117. package/dist/utils/priceUtils.js +0 -1
  118. /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
  if(isH5 && global?.info?.pageInfo?.dataType === BUSINESS_TYPE.ONLINE){
341
341
  draBusinessCustomReport({
342
342
  eventName: 'business',
343
343
  errorName: getSgmCustomCode(`${SgmCustomCode.PRICE_RENDER}_${type}`),
344
344
  errorMessage: '[双价格组件]' + text,
345
345
  extraData: JSON.stringify({
346
346
  type,
347
347
  data,
348
348
  }),
349
349
  });
350
350
  }
351
351
  return rest.some((item) => item === undefined || item === '');
352
352
  const numPrice = Number(strPrice);
353
353
  if (isNaN(numPrice)) {
354
354
  reportException({
355
355
  type: 'isNotNumericType',
356
356
  data: props,
357
357
  text: `传入价格字段值“${strPrice}”转换数字报错`,
358
358
  });
359
359
  return false;
360
360
  }
361
361
  else if (numPrice <= 0) {
362
362
  reportException({
363
363
  type: 'isNotPositiveNumber',
364
364
  data: props,
365
365
  text: `传入价格字段值“${strPrice}”不是一个正数`,
366
366
  });
367
367
  return false;
368
368
  }
369
369
  const result = numPrice.toString().match(/(\d+)(\.(\d+))?/);
370
370
  if (result && result[3]?.length > 2) {
371
371
  reportException({
372
372
  type: 'decimalPlaceTooLong',
373
373
  data: props,
374
374
  text: `传入价格字段值“${strPrice}”小数位不能超过2位`,
375
375
  });
376
376
  return false;
377
377
  }
378
378
  if (/^\d+(\.\d+)?[eE][+-]?\d+$/.test(strPrice)) {
379
379
  reportException({
380
380
  type: 'findScientificNotation',
381
381
  data: props,
382
382
  text: `传入价格字段值“${strPrice}”是一个科学计数法格式`,
383
383
  });
384
384
  }
385
385
  return true;
386
386
  const { jdPrice, finalPrice, forceShowFinalPrice } = props;
387
387
  if (jdPrice && finalPrice) {
388
388
  const getLastPassValidateState = forceShowFinalPrice || Number(finalPrice) < Number(jdPrice);
389
389
  !getLastPassValidateState &&
390
390
  reportException({
391
391
  type: 'pricesCompareException',
392
392
  data: props,
393
393
  text: `身份/到手价必须小于松果价`,
394
394
  });
395
395
  return getLastPassValidateState;
396
396
  } else {
397
397
  return true;
398
398
  }
399
399
  const numPrice = Number(strPrice);
400
400
  const result = numPrice.toString().match(/(\d+)(\.(\d+))?/);
401
401
  if (result) {
402
402
  return {
403
403
  integerPrice: result[1],
404
404
  decimalPrice: (result[3] || '').replace(/0+$/, ''),
405
405
  };
406
406
  } else {
407
407
  reportException({
408
408
  type: 'deconstructException',
409
409
  data: props,
410
410
  text: `解构传入价格字段值“${strPrice}”解构发生异常`,
411
411
  });
412
412
  return null;
413
413
  }
414
414
  const {
415
415
  jdPrice,
416
416
  finalPrice,
417
417
  priceText = '',
418
418
  priceTextColor = '',
419
419
  subPriceTextColor = '',
420
420
  subPriceColor = '',
421
421
  priceUnit = '',
422
422
  priceType,
423
423
  hitUserIdentity = false,
424
424
  forceShowFinalPrice = false,
425
425
  hideSmallPrice = false,
426
426
  fallbackRender = null,
427
427
  className = null,
428
428
  style = {},
429
429
  childrenClassName = null,
430
430
  bigNoPriceClassName = null,
431
431
  bigSymbolClassName = null,
432
432
  bigIntegerClassName = null,
433
433
  bigDecimalClassName = null,
434
434
  priceDescClassName = null,
435
435
  smallPriceClassName = null,
436
436
  smallPriceDescClassName = null,
437
437
  lineNumber = 1,
438
438
  size = 'M',
439
439
  isDefaultRemoveSmallPrice = false,
440
440
  useFontV2 = false,
441
441
  useFontV2Bold = false,
442
442
  useSmallFontV2 = false,
443
443
  useSmallFontV2Bold = false,
444
444
  nativeProps,
445
445
  } = props;
446
446
  let useBackstop = false;
447
447
  const isShowPriceUnit = priceUnit && priceUnit !== '';
448
448
  if (isNull(props.priceType)) {
449
449
  useBackstop = true;
450
450
  reportException({
451
451
  type: 'paramMiss',
452
452
  data: props,
453
453
  text: '缺少必要入参:priceType',
454
454
  });
455
455
  } else if (
456
456
  !allowedNoHitUserIdentityTypes.includes(props.priceType) &&
457
457
  props.hitUserIdentity === undefined
458
458
  ) {
459
459
  useBackstop = true;
460
460
  reportException({
461
461
  type: 'paramMiss',
462
462
  data: props,
463
463
  text: `价格类型${props.priceType}缺少必要入参:hitUserIdentity`,
464
464
  });
465
465
  }
466
466
  const especialHitStyleType = {
467
467
  7: 'plusStyle',
468
468
  9: 'samStyle',
469
469
  };
470
470
  const especialMissStyleType = {
471
471
  7: 'plusStyle',
472
472
  8: 'fansStyle',
473
473
  9: 'samStyle',
474
474
  10: 'studentStyle',
475
475
  12: 'yhdStyle',
476
476
  13: 'memberStyle',
477
477
  };
478
478
  const isUseFinalPriceAsBigPrice = allowedNoHitUserIdentityTypes.includes(priceType);
479
479
  const isEquivalentHit = isUseFinalPriceAsBigPrice || hitUserIdentity;
480
480
  const isOnlyShowBigPrice = priceType === 3 || isNull(finalPrice);
481
481
  const smallPrice = isEquivalentHit ? jdPrice : finalPrice;
482
482
  const isHideSmallPrice =
483
483
  hideSmallPrice || priceType === 14 || isDefaultRemoveSmallPrice || isNaN(Number(smallPrice));
484
484
  const isTextPrice = priceType === 4;
485
485
  if (!isTextPrice && !useBackstop) {
486
486
  if (finalPrice && !numericPriceValidate(finalPrice, props)) {
487
487
  useBackstop = true;
488
488
  } else if (jdPrice && !numericPriceValidate(jdPrice, props)) {
489
489
  useBackstop = true;
490
490
  }
491
491
  if (!useBackstop && !isOnlyShowBigPrice && !isHideSmallPrice && !pricesCompareValidate(props)) {
492
492
  useBackstop = true;
493
493
  }
494
494
  }
495
495
  const bigPriceObj =
496
496
  isTextPrice || useBackstop
497
497
  ? {}
498
498
  : getDeconstructPrice(isEquivalentHit && !isNull(finalPrice) ? finalPrice : jdPrice, props);
499
499
  const { integerPrice = '', decimalPrice = '' } = bigPriceObj || {};
500
500
  const isPriceDescInFront = isEquivalentHit;
501
501
  const hitColorStyle = isEquivalentHit ? styles[especialHitStyleType[priceType]] : null;
502
502
  const missColorStyle = isEquivalentHit ? null : styles[especialMissStyleType[priceType]];
503
503
  const isBigPriceHasDecimal = decimalPrice !== '' && !/^0+$/.test(decimalPrice);
504
504
  const sizeLineHeight = {
505
505
  XS: 28,
506
506
  S: 34,
507
507
  M: 40,
508
508
  L: 46,
509
509
  XL: 52,
510
510
  };
511
511
  const lineHeight = Taro.pxTransform(sizeLineHeight[size] * 1.25);
512
512
  const wrapHeight = Taro.pxTransform(sizeLineHeight[size] * 1.25 * lineNumber);
513
513
  const computedHeightStyle = {
514
514
  height: wrapHeight,
515
515
  };
516
516
  const itemCommonStyle = {
517
517
  height: lineHeight,
518
518
  };
519
519
  const bigPriceTextStyle = priceTextColor ? { color: priceTextColor } : {};
520
520
  const smallPriceTextStyle = subPriceTextColor ? { color: subPriceTextColor } : {};
521
521
  const smallPriceStyle = subPriceColor ? { color: subPriceColor } : {};
522
522
  const needSizeStyles = [
523
523
  'bigNoPrice',
524
524
  'bigSymbol',
525
525
  'bigInteger',
526
526
  'bigDecimal',
527
527
  'priceDesc',
528
528
  'smallPrice',
529
529
  'priceUnit',
530
530
  ];
531
531
  const sizeStyles = needSizeStyles.reduce((acc, cur) => {
532
532
  acc[cur] = styles[cur + size];
533
533
  return acc;
534
534
  }, {});
535
535
  const finalFallbackText = global?.languageJsonData?.noPriceTip || '暂无报价';
536
536
  const noPriceShowText =
537
537
  priceText || (/^[\u4e00-\u9fa5]+$/.test(jdPrice) ? jdPrice : finalFallbackText);
538
538
  if (useBackstop && fallbackRender) {
539
539
  return fallbackRender;
540
540
  }
541
541
  return (
542
542
  <View
543
543
  className={classNames(styles.wrap, className)}
544
544
  style={{ ...computedHeightStyle, ...style }}
545
545
  {...nativeProps}
546
546
  >
547
547
  {isTextPrice || useBackstop ? (
548
548
  <Text
549
549
  className={classNames(
550
550
  styles.childStyle,
551
551
  styles.bigStyle,
552
552
  styles.bigNoPrice,
553
553
  sizeStyles['bigNoPrice'],
554
554
  childrenClassName,
555
555
  bigNoPriceClassName,
556
556
  )}
557
557
  style={{ ...itemCommonStyle }}
558
558
  >
559
559
  {useBackstop ? finalFallbackText : noPriceShowText}
560
560
  </Text>
561
561
  ) : (
562
562
  [
563
563
  <Text
564
564
  className={classNames(
565
565
  styles.childStyle,
566
566
  styles.bigStyle,
567
567
  styles.bigSymbol,
568
568
  sizeStyles['bigSymbol'],
569
569
  hitColorStyle,
570
570
  childrenClassName,
571
571
  bigSymbolClassName,
572
572
  {
573
573
  [styles.fontV2]: useFontV2,
574
574
  [styles.fontV2Bold]: useFontV2Bold,
575
575
  },
576
576
  )}
577
577
  key="bigSymbol"
578
578
  style={{ ...itemCommonStyle }}
579
579
  >
580
580
  ¥
581
581
  </Text>,
582
582
  <Text
583
583
  className={classNames(
584
584
  styles.childStyle,
585
585
  styles.bigStyle,
586
586
  styles.bigInteger,
587
587
  sizeStyles['bigInteger'],
588
588
  hitColorStyle,
589
589
  !isOnlyShowBigPrice &&
590
590
  !isBigPriceHasDecimal &&
591
591
  !isPriceDescInFront &&
592
592
  !isShowPriceUnit
593
593
  ? styles.rightMargin
594
594
  : null,
595
595
  childrenClassName,
596
596
  bigIntegerClassName,
597
597
  {
598
598
  [styles.fontV2]: useFontV2,
599
599
  [styles.fontV2Bold]: useFontV2Bold,
600
600
  },
601
601
  )}
602
602
  key="bigInteger"
603
603
  style={{ ...itemCommonStyle }}
604
604
  >
605
605
  {integerPrice}
606
606
  </Text>,
607
607
  isBigPriceHasDecimal ? (
608
608
  <Text
609
609
  className={classNames(
610
610
  styles.childStyle,
611
611
  styles.bigStyle,
612
612
  styles.bigDecimal,
613
613
  sizeStyles['bigDecimal'],
614
614
  hitColorStyle,
615
615
  isPriceDescInFront || priceText === '' || isShowPriceUnit
616
616
  ? null
617
617
  : styles.rightMargin,
618
618
  childrenClassName,
619
619
  bigDecimalClassName,
620
620
  {
621
621
  [styles.fontV2]: useFontV2,
622
622
  [styles.fontV2Bold]: useFontV2Bold,
623
623
  },
624
624
  )}
625
625
  key="bigDecimal"
626
626
  style={{ ...itemCommonStyle }}
627
627
  >
628
628
  .{decimalPrice}
629
629
  </Text>
630
630
  ) : null,
631
631
  isShowPriceUnit ? (
632
632
  <Text
633
633
  className={classNames(
634
634
  styles.childStyle,
635
635
  styles.priceUnit,
636
636
  styles.rightMargin,
637
637
  sizeStyles['priceUnit'],
638
638
  styles.bigStyle,
639
639
  hitColorStyle,
640
640
  childrenClassName,
641
641
  priceDescClassName,
642
642
  )}
643
643
  key="descFrontUnit"
644
644
  style={{ ...itemCommonStyle }}
645
645
  >
646
646
  {priceUnit}
647
647
  </Text>
648
648
  ) : null,
649
649
  !isOnlyShowBigPrice && [
650
650
  isPriceDescInFront && (
651
651
  <Text
652
652
  className={classNames(
653
653
  styles.childStyle,
654
654
  styles.priceDesc,
655
655
  {
656
656
  [styles['priceEnDesc']]: isLanguageForEn,
657
657
  },
658
658
  {
659
659
  [styles['priceHiddenDesc']]: priceText === '',
660
660
  },
661
661
  sizeStyles['priceDesc'],
662
662
  styles.bigStyle,
663
663
  hitColorStyle,
664
664
  isPriceDescInFront && !isShowPriceUnit && !isHideSmallPrice
665
665
  ? styles.rightMargin
666
666
  : null,
667
667
  childrenClassName,
668
668
  priceDescClassName,
669
669
  )}
670
670
  key="descFront"
671
671
  style={{ ...itemCommonStyle, ...bigPriceTextStyle }}
672
672
  >
673
673
  {priceText === '' ? '_' : priceText}
674
674
  </Text>
675
675
  ),
676
676
  <View
677
677
  style={{
678
678
  display: 'inline-flex',
679
679
  }}
680
680
  >
681
681
  {smallPrice && !isHideSmallPrice ? (
682
682
  <Text
683
683
  className={classNames(
684
684
  styles.childStyle,
685
685
  styles.smallPrice,
686
686
  sizeStyles['smallPrice'],
687
687
  styles.smallStyle,
688
688
  missColorStyle,
689
689
  childrenClassName,
690
690
  smallPriceClassName,
691
691
  {
692
692
  [styles.fontV2]: useSmallFontV2Bold ? false : useSmallFontV2 || useFontV2,
693
693
  [styles.fontV2Bold]: useSmallFontV2
694
694
  ? false
695
695
  : useSmallFontV2Bold || useFontV2Bold,
696
696
  },
697
697
  )}
698
698
  key="smallPrice"
699
699
  style={{ ...itemCommonStyle, ...smallPriceStyle }}
700
700
  >
701
701
  ¥{Number(smallPrice)}
702
702
  </Text>
703
703
  ) : null}
704
704
  {isShowPriceUnit && !isHideSmallPrice ? (
705
705
  <Text
706
706
  className={classNames(
707
707
  styles.childStyle,
708
708
  styles.priceUnit,
709
709
  sizeStyles['priceUnit'],
710
710
  styles.smallStyle,
711
711
  styles.missPriceDesc,
712
712
  missColorStyle,
713
713
  childrenClassName,
714
714
  smallPriceDescClassName || priceDescClassName,
715
715
  )}
716
716
  key="descFrontUnit"
717
717
  style={{ ...itemCommonStyle, ...smallPriceStyle }}
718
718
  >
719
719
  {priceUnit}
720
720
  </Text>
721
721
  ) : null}
722
722
  {!isPriceDescInFront && !isHideSmallPrice && (
723
723
  <Text
724
724
  className={classNames(
725
725
  styles.childStyle,
726
726
  styles.priceDesc,
727
727
  {
728
728
  [styles['priceEnDesc']]: isLanguageForEn,
729
729
  },
730
730
  {
731
731
  [styles['priceHiddenDesc']]: priceText === '',
732
732
  },
733
733
  sizeStyles['priceDesc'],
734
734
  styles.smallStyle,
735
735
  styles.missPriceDesc,
736
736
  missColorStyle,
737
737
  childrenClassName,
738
738
  smallPriceDescClassName || priceDescClassName,
739
739
  )}
740
740
  key="descBack"
741
741
  style={{ ...itemCommonStyle, ...smallPriceTextStyle }}
742
742
  >
743
743
  {priceText === '' ? '_' : priceText}
744
744
  </Text>
745
745
  )}
746
746
  </View>,
747
747
  ],
748
748
  ]
749
749
  )}
750
750
  </View>
751
751
  );