s-material-react 0.1.13 → 0.1.15

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 (124) hide show
  1. package/css/common/addressItem.scss +41 -1
  2. package/css/common/card.scss +1 -0
  3. package/css/common/coupon.scss +8 -3
  4. package/css/common/icon.scss +79 -3
  5. package/css/pages/addressDetail.scss +79 -0
  6. package/css/pages/addressList.scss +32 -8
  7. package/css/pages/cart.scss +52 -5
  8. package/css/pages/couponList.scss +5 -0
  9. package/css/pages/goodsClassify.scss +32 -6
  10. package/css/pages/goodsDetail.scss +22 -67
  11. package/css/pages/index.scss +2 -0
  12. package/css/pages/mine.scss +2 -6
  13. package/css/pages/orderEntry.scss +4 -2
  14. package/css/pages/paymentMode.scss +75 -0
  15. package/css/pages/placeOrder.scss +30 -8
  16. package/css/pages/service.scss +1 -6
  17. package/css/pages/slider.scss +6 -0
  18. package/dist/common/addressItem/index.d.ts +1 -1
  19. package/dist/common/addressItem/index.js +6 -7
  20. package/dist/common/card/index.js +1 -1
  21. package/dist/common/coupon/index.d.ts +1 -1
  22. package/dist/common/coupon/index.js +4 -5
  23. package/dist/common/icon/index.d.ts +2 -1
  24. package/dist/common/icon/index.js +2 -2
  25. package/dist/common/mock/index.js +35 -0
  26. package/dist/components/AddressDetail/components/index.d.ts +0 -0
  27. package/dist/components/AddressDetail/components/index.js +1 -0
  28. package/dist/components/AddressDetail/components/skull.d.ts +2 -0
  29. package/dist/components/AddressDetail/components/skull.js +9 -0
  30. package/dist/components/AddressDetail/config.d.ts +51 -0
  31. package/dist/components/AddressDetail/config.js +65 -0
  32. package/dist/components/AddressDetail/hooks/index.d.ts +1 -0
  33. package/dist/components/AddressDetail/hooks/index.js +1 -0
  34. package/dist/components/AddressDetail/hooks/useAddAddress.d.ts +26 -0
  35. package/dist/components/AddressDetail/hooks/useAddAddress.js +80 -0
  36. package/dist/components/AddressDetail/index.d.ts +1 -1
  37. package/dist/components/AddressDetail/index.js +17 -107
  38. package/dist/components/AddressList/components/index.d.ts +1 -0
  39. package/dist/components/AddressList/components/index.js +1 -0
  40. package/dist/components/AddressList/components/skull.d.ts +2 -0
  41. package/dist/components/AddressList/components/skull.js +9 -0
  42. package/dist/components/AddressList/hooks/index.d.ts +1 -0
  43. package/dist/components/AddressList/hooks/index.js +1 -0
  44. package/dist/components/AddressList/hooks/useAddressList.d.ts +6 -0
  45. package/dist/components/AddressList/hooks/useAddressList.js +74 -0
  46. package/dist/components/AddressList/index.js +8 -6
  47. package/dist/components/Cart/components/cartItem.d.ts +3 -0
  48. package/dist/components/Cart/components/cartItem.js +34 -0
  49. package/dist/components/Cart/hooks/index.d.ts +19 -0
  50. package/dist/components/Cart/hooks/index.js +90 -0
  51. package/dist/components/Cart/index.js +14 -18
  52. package/dist/components/Cart/store/index.d.ts +10 -0
  53. package/dist/components/Cart/store/index.js +23 -0
  54. package/dist/components/CouponList/index.js +1 -1
  55. package/dist/components/Goods/index.js +3 -3
  56. package/dist/components/GoodsClassify/components/classifySkeleton.d.ts +1 -0
  57. package/dist/components/GoodsClassify/components/classifySkeleton.js +12 -0
  58. package/dist/components/GoodsClassify/index.js +4 -4
  59. package/dist/components/GoodsDetail/components/goodsDetailCollection.d.ts +1 -1
  60. package/dist/components/GoodsDetail/components/goodsDetailCollection.js +8 -3
  61. package/dist/components/GoodsDetail/components/goodsDetailCoupon.js +22 -33
  62. package/dist/components/GoodsDetail/components/goodsDetailHandleBar.js +23 -3
  63. package/dist/components/GoodsDetail/components/goodsDetailInfo.d.ts +1 -1
  64. package/dist/components/GoodsDetail/components/goodsDetailInfo.js +1 -1
  65. package/dist/components/GoodsDetail/components/goodsDetailPopup.d.ts +1 -1
  66. package/dist/components/GoodsDetail/components/goodsDetailPopup.js +9 -23
  67. package/dist/components/GoodsDetail/components/goodsDetailPromotion.js +2 -3
  68. package/dist/components/GoodsDetail/components/goodsDetailSize.d.ts +1 -1
  69. package/dist/components/GoodsDetail/components/goodsDetailSize.js +11 -2
  70. package/dist/components/GoodsDetail/hooks/index.d.ts +2 -0
  71. package/dist/components/GoodsDetail/hooks/index.js +2 -75
  72. package/dist/components/GoodsDetail/hooks/useAddShopping.d.ts +10 -0
  73. package/dist/components/GoodsDetail/hooks/useAddShopping.js +74 -0
  74. package/dist/components/GoodsDetail/hooks/useGoodsDetailImpl.d.ts +13 -0
  75. package/dist/components/GoodsDetail/hooks/useGoodsDetailImpl.js +85 -0
  76. package/dist/components/GoodsDetail/index.d.ts +5 -1
  77. package/dist/components/GoodsDetail/index.js +15 -8
  78. package/dist/components/GoodsDetail/store/index.d.ts +10 -0
  79. package/dist/components/GoodsDetail/store/index.js +34 -0
  80. package/dist/components/Mine/components/menuList.js +7 -6
  81. package/dist/components/Mine/components/orderEntry.js +17 -10
  82. package/dist/components/Mine/index.js +4 -3
  83. package/dist/components/OrderList/components/OrderListItem.js +2 -3
  84. package/dist/components/OrderList/components/orderItem.js +1 -2
  85. package/dist/components/PaymentMode/config.d.ts +6 -0
  86. package/dist/components/PaymentMode/config.js +14 -0
  87. package/dist/components/PaymentMode/hooks/useOrderResult.d.ts +11 -0
  88. package/dist/components/PaymentMode/hooks/useOrderResult.js +100 -0
  89. package/dist/components/PaymentMode/index.d.ts +4 -0
  90. package/dist/components/PaymentMode/index.js +17 -0
  91. package/dist/components/PlaceOrder/components/address.d.ts +12 -0
  92. package/dist/components/PlaceOrder/components/address.js +33 -0
  93. package/dist/components/PlaceOrder/components/orderPrice.d.ts +12 -0
  94. package/dist/components/PlaceOrder/components/orderPrice.js +8 -0
  95. package/dist/components/PlaceOrder/components/shop.d.ts +4 -0
  96. package/dist/components/PlaceOrder/components/shop.js +9 -0
  97. package/dist/components/PlaceOrder/hooks/usePlaceOrder.d.ts +18 -0
  98. package/dist/components/PlaceOrder/hooks/usePlaceOrder.js +234 -0
  99. package/dist/components/PlaceOrder/index.d.ts +6 -1
  100. package/dist/components/PlaceOrder/index.js +8 -3
  101. package/dist/components/PlaceOrderResult/hooks/useOrderResult.d.ts +3 -0
  102. package/dist/components/PlaceOrderResult/hooks/useOrderResult.js +93 -0
  103. package/dist/components/PlaceOrderResult/index.d.ts +3 -1
  104. package/dist/components/PlaceOrderResult/index.js +5 -3
  105. package/dist/components/Search/index.js +3 -2
  106. package/dist/components/SearchPage/index.js +50 -9
  107. package/dist/components/Service/index.d.ts +11 -1
  108. package/dist/components/Service/index.js +4 -3
  109. package/dist/components/index.d.ts +1 -0
  110. package/dist/components/index.js +1 -0
  111. package/dist/options/index.d.ts +0 -2
  112. package/dist/options/index.js +36 -31
  113. package/dist/routerMap/index.d.ts +7 -0
  114. package/dist/routerMap/index.js +8 -1
  115. package/dist/utils/payment.d.ts +14 -0
  116. package/dist/utils/payment.js +56 -0
  117. package/package.json +1 -1
  118. package/css/font/iconfont.ttf +0 -0
  119. package/css/font/iconfont.woff +0 -0
  120. package/css/font/iconfont.woff2 +0 -0
  121. package/dist/components/AddressDetail/option.d.ts +0 -2
  122. package/dist/components/AddressDetail/option.js +0 -32
  123. package/dist/components/Cart/useNumStep.d.ts +0 -1
  124. package/dist/components/Cart/useNumStep.js +0 -7
@@ -9,12 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  };
10
10
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { useEffect, useState, memo, useRef } from 'react';
12
- import { useComponent } from '@brushes/qj-simulate-component';
12
+ import { navigatorImpl, useComponent } from '@brushes/qj-simulate-component';
13
13
  import { querySkuNotOnShelf } from '@brushes/api';
14
14
  import { _ } from '@brushes/tools';
15
- // import { QjIcon } from '@brushes/share-resource';
16
15
  import classNames from 'classnames';
17
16
  import { QjMobileIcon } from '../../common/icon';
17
+ import { routerMap } from '../../routerMap';
18
18
  const { isEqual, isEmpty } = _;
19
19
  const GoodsJsx = ({ defaultValue = [], classCode = '', margin, circular, cell, gap = 10, goods = [], markedPrice, paddingTop, paddingBottom, paddingLeft, paddingRight }) => {
20
20
  const [list, setList] = useState(defaultValue);
@@ -64,6 +64,6 @@ const GoodsJsx = ({ defaultValue = [], classCode = '', margin, circular, cell, g
64
64
  } }, { children: list.map((item, index) => (_jsxs(View, Object.assign({ style: {
65
65
  overflow: 'hidden',
66
66
  borderRadius: circular === 2 ? 0 : '8px'
67
- }, className: 'goods' }, { children: [_jsx(View, { className: `goods-img`, style: { backgroundImage: `url(${item.dataPic})` } }), _jsxs(View, Object.assign({ className: 'space' }, { children: [_jsx(View, Object.assign({ className: 'titleType' }, { children: item.goodsName })), _jsx(View, Object.assign({ className: 'subTitle' }, { children: item.brandName })), _jsxs(View, Object.assign({ className: 'price' }, { children: [_jsx(Text, Object.assign({ className: 'subPrice' }, { children: "\u00A5" })), item.pricesetNprice, markedPrice === 1 && (_jsxs(Text, Object.assign({ className: 'markedPrice' }, { children: [_jsx(Text, Object.assign({ className: 'subPrice' }, { children: "\u00A5" })), item.pricesetMakeprice] })))] })), _jsx(View, Object.assign({ className: 'anticon' }, { children: _jsx(QjMobileIcon, { style: { fontSize: 30, color: '#f00' }, value: 'cart' }) }))] }))] }), index))) })) })));
67
+ }, onClick: () => navigatorImpl(`${routerMap.goodDetail}?skuCode=${item.skuCode}`), className: 'goods' }, { children: [_jsx(View, { className: `goods-img`, style: { backgroundImage: `url(${item.dataPic})` } }), _jsxs(View, Object.assign({ className: 'space' }, { children: [_jsx(View, Object.assign({ className: 'titleType' }, { children: item.goodsName })), _jsx(View, Object.assign({ className: 'subTitle' }, { children: item.brandName })), _jsxs(View, Object.assign({ className: 'price' }, { children: [_jsx(Text, Object.assign({ className: 'subPrice' }, { children: "\u00A5" })), item.pricesetNprice, markedPrice === 1 && (_jsxs(Text, Object.assign({ className: 'markedPrice' }, { children: [_jsx(Text, Object.assign({ className: 'subPrice' }, { children: "\u00A5" })), item.pricesetMakeprice] })))] })), _jsx(View, Object.assign({ className: 'anticon' }, { children: _jsx(QjMobileIcon, { style: { fontSize: 30, color: '#f00' }, value: 'cart' }) }))] }))] }), index))) })) })));
68
68
  };
69
69
  export const Goods = memo(GoodsJsx);
@@ -0,0 +1 @@
1
+ export declare const ClassifySkeleton: () => JSX.Element;
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useComponent } from '@brushes/qj-simulate-component';
3
+ import { getEnv } from '@brushes/api';
4
+ import { useRef } from 'react';
5
+ export const ClassifySkeleton = () => {
6
+ const flag = getEnv();
7
+ const { View, Skeleton } = useComponent();
8
+ const lBlcArr = useRef(Array(3).fill(1));
9
+ return (_jsxs(View, Object.assign({ className: 'classifySkeleton', style: { height: flag ? 'calc(100vh - 51px)' : '667px' } }, { children: [_jsx(View, Object.assign({ className: 'lPart' }, { children: lBlcArr.current.map((item, index) => {
10
+ return _jsx(Skeleton, { animated: true, className: 'blc' }, index);
11
+ }) })), _jsx(View, Object.assign({ className: 'rPart' }, { children: _jsx(Skeleton.Paragraph, { lineCount: 5, animated: true }) }))] })));
12
+ };
@@ -7,7 +7,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
7
7
  step((generator = generator.apply(thisArg, _arguments || [])).next());
8
8
  });
9
9
  };
10
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
10
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  import { memo, useEffect, useState } from 'react';
12
12
  import { useComponent, antdMobile, navigatorImpl } from '@brushes/qj-simulate-component';
13
13
  import { ClassifyFloor } from './components/classifyFloor';
@@ -31,15 +31,15 @@ const GoodsClassifyJsx = () => {
31
31
  try {
32
32
  let commits = yield queryGoodsClassTree();
33
33
  setNavList(commits || []);
34
- const code = get(commits, 'commits[0].goodsClassCode');
34
+ const code = get(commits, '[0].goodsClassCode');
35
35
  setActiveKey(code);
36
36
  }
37
37
  catch (err) {
38
38
  console.log(err);
39
39
  }
40
40
  });
41
- return (_jsxs(_Fragment, { children: [_jsx(View, Object.assign({ className: 'goods-classify' }, { children: _jsxs(View, Object.assign({ className: 'goods-classify-search', onClick: () => navigatorImpl(routerMap.search) }, { children: [_jsx(QjMobileIcon, { value: "fenxiang" }), _jsx(Text, { children: "\u641C\u7D22\u5546\u54C1" })] })) })), _jsxs(View, Object.assign({ className: 'goodsClassifyContainer', style: { height: flag ? 'calc(100vh - 51px)' : '600px' } }, { children: [_jsx(View, Object.assign({ className: 'side' }, { children: _jsx(SideBar, Object.assign({ activeKey: activeKey, onChange: setActiveKey, style: {
41
+ return (_jsxs(View, Object.assign({ className: 'goodsClassifyWrap', style: { height: flag ? '100%' : '667px' } }, { children: [_jsx(View, Object.assign({ className: 'goods-classify' }, { children: _jsxs(View, Object.assign({ className: 'goods-classify-search', onClick: () => navigatorImpl(routerMap.search) }, { children: [_jsx(QjMobileIcon, { value: "fenxiang" }), _jsx(Text, { children: "\u641C\u7D22\u5546\u54C1" })] })) })), _jsxs(View, Object.assign({ className: 'goodsClassifyContainer' }, { children: [_jsx(View, Object.assign({ className: 'side' }, { children: _jsx(SideBar, Object.assign({ activeKey: activeKey, onChange: setActiveKey, style: {
42
42
  '--width': '88px'
43
- } }, { children: navList.map((item) => (_jsx(SideBar.Item, { title: item.goodsClassName }, item.goodsClassCode))) })) })), _jsx(View, Object.assign({ className: 'main' }, { children: _jsx(ClassifyFloor, { navList: navList, activeKey: activeKey }) }))] }))] }));
43
+ } }, { children: navList.map((item) => (_jsx(SideBar.Item, { title: item.goodsClassName }, item.goodsClassCode))) })) })), _jsx(View, Object.assign({ className: 'main' }, { children: _jsx(ClassifyFloor, { navList: navList, activeKey: activeKey }) }))] }))] })));
44
44
  };
45
45
  export const GoodsClassify = memo(GoodsClassifyJsx);
@@ -1,2 +1,2 @@
1
- declare const GoodsDetailCollection: ({ goods, checkCollectionObj, setCheckCollectionObj }: any) => JSX.Element;
1
+ declare const GoodsDetailCollection: ({ checkCollectionObj, setCheckCollectionObj, goods }: any) => JSX.Element;
2
2
  export default GoodsDetailCollection;
@@ -14,7 +14,7 @@ import { checkCollectExit, saveCollect, deleteCollectByCode } from '@brushes/api
14
14
  import { _ } from '@brushes/tools';
15
15
  import { useEffect } from 'react';
16
16
  const { isEmpty } = _;
17
- const GoodsDetailCollection = ({ goods, checkCollectionObj, setCheckCollectionObj }) => {
17
+ const GoodsDetailCollection = ({ checkCollectionObj, setCheckCollectionObj, goods }) => {
18
18
  const { Text, View } = useComponent();
19
19
  useEffect(() => {
20
20
  checkCollection();
@@ -24,8 +24,13 @@ const GoodsDetailCollection = ({ goods, checkCollectionObj, setCheckCollectionOb
24
24
  collectType: 0,
25
25
  collectOpcode: goods.rsSkuDomainList[0].skuCode || ''
26
26
  };
27
- const result = yield checkCollectExit(checkCollectionParams);
28
- setCheckCollectionObj(result);
27
+ try {
28
+ const result = yield checkCollectExit(checkCollectionParams);
29
+ setCheckCollectionObj(result);
30
+ }
31
+ catch (err) {
32
+ console.log(err);
33
+ }
29
34
  });
30
35
  const handleSaveCollect = () => __awaiter(void 0, void 0, void 0, function* () {
31
36
  const saveCollectParmas = {
@@ -1,56 +1,45 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useComponent, antdMobile } from '@brushes/qj-simulate-component';
2
+ import { useComponent, Popup, SmoothRadio } from '@brushes/qj-simulate-component';
3
3
  import { THREE_DOTS } from '../../../static';
4
4
  import { useState } from 'react';
5
5
  import { Coupon } from '../../../common/coupon';
6
- const { Popup, Radio } = antdMobile;
6
+ import { useDispatchImpl, useStore } from '../store';
7
7
  const fake = [
8
8
  {
9
9
  title: '五一大促疯抢 满100立减10',
10
10
  date: '2022-10-01',
11
- price: 10
11
+ price: 10,
12
+ id: 1
12
13
  },
13
14
  {
14
15
  title: '五一大促疯抢 满100立减10',
15
16
  date: '2022-10-01',
16
- price: 10
17
+ price: 20,
18
+ id: 2
17
19
  },
18
20
  {
19
21
  title: '五一大促疯抢 满100立减10',
20
22
  date: '2022-10-01',
21
- price: 10
22
- },
23
- {
24
- title: '五一大促疯抢 满100立减10',
25
- date: '2022-10-01',
26
- price: 10
27
- },
28
- {
29
- title: '五一大促疯抢 满100立减10',
30
- date: '2022-10-01',
31
- price: 10
32
- },
33
- {
34
- title: '五一大促疯抢 满100立减10',
35
- date: '2022-10-01',
36
- price: 10
37
- },
38
- {
39
- title: '五一大促疯抢 满100立减10',
40
- date: '2022-10-01',
41
- price: 10
42
- },
43
- {
44
- title: '五一大促疯抢 满100立减10',
45
- date: '2022-10-01',
46
- price: 10
23
+ price: 30,
24
+ id: 3
47
25
  }
48
26
  ];
49
27
  const GoodsDetailCoupon = () => {
50
28
  const { View, Text } = useComponent();
51
29
  const [visible, setVisible] = useState(false);
52
- return (_jsxs(_Fragment, { children: [_jsxs(View, Object.assign({ className: 'goodsDetail-coupon', onClick: () => setVisible(true) }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u4F18\u60E0\u5238" })), _jsxs(View, Object.assign({ className: 'info' }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u8BF7\u9009\u62E9\u4F18\u60E0\u5238" })), _jsx("img", { src: THREE_DOTS, alt: "", className: 'icon' })] }))] })), _jsx(Popup, Object.assign({ visible: visible, onMaskClick: () => setVisible(false) }, { children: _jsxs(View, Object.assign({ className: 'goodsDetail-coupon-popup' }, { children: [_jsx(View, Object.assign({ className: 'stampWrap' }, { children: _jsx(Radio.Group, Object.assign({ defaultValue: 0 }, { children: fake.map((item, index) => {
53
- return _jsx(Coupon, { index: index, item: item }, index);
54
- }) })) })), _jsx(View, Object.assign({ className: 'confirm' }, { children: "\u786E\u5B9A" }))] })) }))] }));
30
+ const dispatch = useDispatchImpl();
31
+ const { couponValue } = useStore();
32
+ console.log(34, couponValue);
33
+ const onChange = (value) => {
34
+ dispatch({
35
+ type: 'select',
36
+ payload: {
37
+ couponValue: value.detail.value
38
+ }
39
+ });
40
+ };
41
+ return (_jsxs(_Fragment, { children: [_jsxs(View, Object.assign({ className: 'goodsDetail-coupon', onClick: () => setVisible(true) }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u4F18\u60E0\u5238" })), _jsxs(View, Object.assign({ className: 'info' }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: couponValue ? `已选择: ${couponValue}` : '请选择优惠券' })), _jsx("img", { src: THREE_DOTS, alt: "", className: 'icon' })] }))] })), _jsx(Popup, Object.assign({ popupVisible: visible, popupHandler: setVisible }, { children: _jsx(View, Object.assign({ className: 'goodsDetail-coupon-popup' }, { children: _jsx(View, Object.assign({ className: 'stampWrap' }, { children: _jsx(SmoothRadio, Object.assign({ onChange: onChange, defaultValue: 0 }, { children: fake.map((item, index) => {
42
+ return _jsx(Coupon, { index: index, item: item }, index);
43
+ }) })) })) })) }))] }));
55
44
  };
56
45
  export default GoodsDetailCoupon;
@@ -1,8 +1,28 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { navigatorImpl, useComponent } from '@brushes/qj-simulate-component';
3
- import { QjMobileIcon } from '../../../common/icon';
2
+ import { switchTabImpl, useComponent, IconMobile } from '@brushes/qj-simulate-component';
3
+ import { useDispatchImpl } from '../store';
4
+ import { routerMap } from '../../../routerMap';
4
5
  const GoodsDetailHandleBar = () => {
5
6
  const { Text, View } = useComponent();
6
- return (_jsxs(View, Object.assign({ className: 'goodsDetailHandleBar' }, { children: [_jsxs(View, Object.assign({ className: 'linkGroup' }, { children: [_jsx(QjMobileIcon, { value: 'kefu', style: { fontSize: 22, display: 'block' } }), _jsx(Text, Object.assign({ className: 'txt' }, { children: "\u5BA2\u670D" }))] })), _jsxs(View, Object.assign({ className: 'linkGroup' }, { children: [_jsx(QjMobileIcon, { value: 'gouwuche', style: { fontSize: 22, display: 'block' } }), _jsx(Text, Object.assign({ className: 'txt' }, { children: "\u8D2D\u7269\u8F66" }))] })), _jsxs(View, Object.assign({ className: 'btnGroup' }, { children: [_jsx(View, Object.assign({ className: 'btn addCart', onClick: () => navigatorImpl('/subpackage/orderconfirm/index') }, { children: "\u52A0\u5165\u8D2D\u7269\u8F66" })), _jsx(View, Object.assign({ onClick: () => navigatorImpl('/subpackage/orderconfirm/index'), className: 'btn buy' }, { children: "\u7ACB\u5373\u8D2D\u4E70" }))] }))] })));
7
+ const dispatch = useDispatchImpl();
8
+ return (_jsxs(View, Object.assign({ className: 'goodsDetailHandleBar' }, { children: [_jsxs(View, Object.assign({ className: 'linkGroup' }, { children: [_jsx(IconMobile, { value: 'kefu', style: { fontSize: 22, display: 'block' } }), _jsx(Text, Object.assign({ className: 'txt' }, { children: "\u5BA2\u670D" }))] })), _jsxs(View, Object.assign({ className: 'linkGroup', onClick: () => switchTabImpl(routerMap.shopping) }, { children: [_jsx(IconMobile, { value: 'gouwuche', style: { fontSize: 22, display: 'block' } }), _jsx(Text, Object.assign({ className: 'txt' }, { children: "\u8D2D\u7269\u8F66" }))] })), _jsxs(View, Object.assign({ className: 'btnGroup' }, { children: [_jsx(View, Object.assign({ className: 'btn addCart', onClick: () => {
9
+ dispatch({
10
+ type: 'popupImpl',
11
+ payload: {
12
+ orderType: 0,
13
+ popupVisible: true,
14
+ isNeedButton: true
15
+ }
16
+ });
17
+ } }, { children: "\u52A0\u5165\u8D2D\u7269\u8F66" })), _jsx(View, Object.assign({ onClick: () => {
18
+ dispatch({
19
+ type: 'popupImpl',
20
+ payload: {
21
+ orderType: 1,
22
+ popupVisible: true,
23
+ isNeedButton: true
24
+ }
25
+ });
26
+ }, className: 'btn buy' }, { children: "\u7ACB\u5373\u8D2D\u4E70" }))] }))] })));
7
27
  };
8
28
  export default GoodsDetailHandleBar;
@@ -1,2 +1,2 @@
1
- declare const GoodsDetailInfo: ({ goods, tabActive }: any) => JSX.Element;
1
+ declare const GoodsDetailInfo: ({ tabActive, goods }: any) => JSX.Element;
2
2
  export default GoodsDetailInfo;
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useComponent } from '@brushes/qj-simulate-component';
3
3
  import { useEffect, useState } from 'react';
4
- const GoodsDetailInfo = ({ goods, tabActive }) => {
4
+ const GoodsDetailInfo = ({ tabActive, goods }) => {
5
5
  const { View } = useComponent();
6
6
  const [goodsDetail, setDetail] = useState('');
7
7
  useEffect(() => {
@@ -1,2 +1,2 @@
1
- declare const GoodsDetailPopup: ({ popupVisible, setPopupVisible, goods }: any) => JSX.Element;
1
+ declare const GoodsDetailPopup: ({ goods }: any) => JSX.Element;
2
2
  export default GoodsDetailPopup;
@@ -1,26 +1,12 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Popup, NumStep } from '@brushes/qj-simulate-component';
3
+ import { useAddShopping } from '../hooks';
2
4
  import { useComponent } from '@brushes/qj-simulate-component';
3
- import { useState } from 'react';
4
- const GoodsDetailPopup = ({ popupVisible, setPopupVisible, goods }) => {
5
- const { View, Text, Image, RootPortal } = useComponent();
6
- const [selectSizeCoe, setSelectSizeCoe] = useState(0);
7
- const [count, setCount] = useState(1);
8
- const handleChooseSize = (index) => {
9
- setSelectSizeCoe(index);
10
- console.log(12, selectSizeCoe);
11
- };
12
- const handleStep = (type) => {
13
- switch (type) {
14
- case 'minus':
15
- setCount((count) => count - 1);
16
- break;
17
- case 'plus':
18
- setCount((count) => count + 1);
19
- break;
20
- }
21
- };
22
- return (_jsx(_Fragment, { children: popupVisible && (_jsx(RootPortal, { children: _jsxs(View, Object.assign({ className: 'goodsDetail-size-popup' }, { children: [_jsxs(View, Object.assign({ className: 'content' }, { children: [_jsx(View, Object.assign({ className: 'closeWrap' }, { children: _jsx(Text, { className: 'icon', onClick: () => setPopupVisible(false) }) })), _jsxs(View, Object.assign({ className: 'goodsInfo' }, { children: [_jsx(View, Object.assign({ className: 'lPart' }, { children: _jsx(Image, { mode: 'widthFix', src: "", alt: "", className: 'goodsImg' }) })), _jsxs(View, Object.assign({ className: 'rPart' }, { children: [_jsx(View, Object.assign({ className: 'name' }, { children: goods.goodsShowname || '' })), _jsxs(View, Object.assign({ className: 'price' }, { children: ["\uFFE5: ", goods.pricesetNprice.toFixed(2) || ''] })), _jsx(View, Object.assign({ className: 'chosen' }, { children: "\u5DF2\u9009\u62E9: 15ml" }))] }))] })), _jsxs(View, Object.assign({ className: 'sizeArr' }, { children: [_jsx(Text, Object.assign({ className: 'title' }, { children: "\u9009\u62E9\u989C\u8272" })), _jsx(View, Object.assign({ className: 'sizeArrItemWrap' }, { children: goods.rsSpecValueDomainList.map((item, index) => {
23
- return (_jsx(View, Object.assign({ className: `sizeItem ${index === selectSizeCoe ? 'active' : ''}`, "data-index": index, onClick: handleChooseSize.bind(null, index) }, { children: item.specValueValue }), index));
24
- }) }))] })), _jsxs(View, Object.assign({ className: 'countWrap' }, { children: [_jsx(View, Object.assign({ className: 'label' }, { children: "\u8D2D\u4E70\u6570\u91CF" })), _jsxs(View, Object.assign({ className: 'numStep' }, { children: [_jsx(Text, Object.assign({ className: 'btn minus', onClick: handleStep.bind(null, 'minus') }, { children: "-" })), _jsx(Text, Object.assign({ className: 'content' }, { children: count })), _jsx(Text, Object.assign({ className: 'btn plus', onClick: handleStep.bind(null, 'plus') }, { children: "+" }))] }))] }))] })), _jsx(View, Object.assign({ className: 'btnWrap' }, { children: _jsx(Text, Object.assign({ className: 'btn' }, { children: "\u786E\u8BA4" })) }))] })) })) }));
5
+ const GoodsDetailPopup = ({ goods }) => {
6
+ const { count, spec, popupVisible, isNeedButton, handleChooseSize, handleStep, popupHandler, addShoppingImpl } = useAddShopping();
7
+ const { View, Text, Image } = useComponent();
8
+ return (_jsx(Popup, Object.assign({ popupVisible: popupVisible, popupHandler: popupHandler }, { children: _jsxs(View, Object.assign({ className: 'goodsDetail-size-popup' }, { children: [_jsxs(View, Object.assign({ className: 'content' }, { children: [_jsxs(View, Object.assign({ className: 'goodsInfo' }, { children: [_jsx(View, Object.assign({ className: 'lPart' }, { children: _jsx(Image, { src: goods.dataPic, alt: "", className: 'goodsImg' }) })), _jsxs(View, Object.assign({ className: 'rPart' }, { children: [_jsx(View, Object.assign({ className: 'name' }, { children: goods.goodsShowname || '' })), _jsxs(View, Object.assign({ className: 'price' }, { children: ["\uFFE5 ", goods.pricesetNprice.toFixed(2) || ''] })), _jsxs(View, Object.assign({ className: 'chosen' }, { children: ["\u5DF2\u9009\u62E9: ", spec] }))] }))] })), _jsxs(View, Object.assign({ className: 'sizeArr' }, { children: [_jsx(Text, Object.assign({ className: 'title' }, { children: "\u9009\u62E9\u989C\u8272" })), _jsx(View, Object.assign({ className: 'sizeArrItemWrap' }, { children: goods.rsSpecValueDomainList.map((item, index) => {
9
+ return (_jsx(View, Object.assign({ className: `sizeItem ${spec === item.specValueValue ? 'active' : ''}`, onClick: handleChooseSize.bind(null, item.specValueValue) }, { children: item.specValueValue }), index));
10
+ }) }))] })), _jsxs(View, Object.assign({ className: 'countWrap' }, { children: [_jsx(View, Object.assign({ className: 'label' }, { children: "\u8D2D\u4E70\u6570\u91CF" })), _jsx(NumStep, { count: count, handleStep: handleStep })] }))] })), isNeedButton && (_jsx(View, Object.assign({ className: 'btnWrap', onClick: addShoppingImpl }, { children: _jsx(Text, Object.assign({ className: 'btn' }, { children: "\u786E\u8BA4" })) })))] })) })));
25
11
  };
26
12
  export default GoodsDetailPopup;
@@ -1,10 +1,9 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useComponent } from '@brushes/qj-simulate-component';
3
- const fake = ['促销', '大促销', '大大促销', '大大大大促销', '大大大大大促销', '大促销', '大促销'];
4
3
  const GoodsDetailPromotion = ({ promotionList }) => {
5
4
  const { View, Text } = useComponent();
6
- return (_jsxs(View, Object.assign({ className: 'goodsDetail-promotion' }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u4FC3\u9500" })), _jsx(View, Object.assign({ className: 'group' }, { children: promotionList.length ? (fake.map((item, index) => {
7
- return (_jsx(View, Object.assign({ className: 'item' }, { children: item }), index));
5
+ return (_jsxs(View, Object.assign({ className: 'goodsDetail-promotion' }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u4FC3\u9500" })), _jsx(View, Object.assign({ className: 'group' }, { children: promotionList.length ? (promotionList.map(({ discName }, index) => {
6
+ return (_jsx(View, Object.assign({ className: 'item' }, { children: discName }), index));
8
7
  })) : (_jsx(View, Object.assign({ className: 'noPromotion' }, { children: "\u6682\u65E0\u4FC3\u9500\u6D3B\u52A8" }))) }))] })));
9
8
  };
10
9
  export default GoodsDetailPromotion;
@@ -1,2 +1,2 @@
1
- declare const GoodsDetailSize: ({ goods, popupVisible, setPopupVisible }: any) => JSX.Element;
1
+ declare const GoodsDetailSize: ({ goods }: any) => JSX.Element;
2
2
  export default GoodsDetailSize;
@@ -2,8 +2,17 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useComponent } from '@brushes/qj-simulate-component';
3
3
  import { THREE_DOTS } from '../../../static';
4
4
  import GoodsDetailPopup from './goodsDetailPopup';
5
- const GoodsDetailSize = ({ goods, popupVisible, setPopupVisible }) => {
5
+ import { useDispatchImpl, useStore } from '../store';
6
+ const GoodsDetailSize = ({ goods }) => {
6
7
  const { View, Text } = useComponent();
7
- return (_jsxs(_Fragment, { children: [_jsxs(View, Object.assign({ className: 'goodsDetail-size', onClick: () => setPopupVisible(true) }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u89C4\u683C" })), _jsxs(View, Object.assign({ className: 'info' }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u8BF7\u9009\u62E9 \u89C4\u683C" })), _jsx("img", { src: THREE_DOTS, alt: "", className: 'icon' })] }))] })), _jsx(GoodsDetailPopup, { popupVisible: popupVisible, setPopupVisible: setPopupVisible, goods: goods })] }));
8
+ const { count, spec } = useStore();
9
+ const dispatch = useDispatchImpl();
10
+ return (_jsxs(_Fragment, { children: [_jsxs(View, Object.assign({ className: 'goodsDetail-size', onClick: () => dispatch({
11
+ type: 'popupImpl',
12
+ payload: {
13
+ popupVisible: true,
14
+ isNeedButton: false
15
+ }
16
+ }) }, { children: [_jsx(Text, Object.assign({ className: 'label' }, { children: "\u89C4\u683C" })), _jsxs(View, Object.assign({ className: 'info' }, { children: [_jsxs(Text, Object.assign({ className: 'label' }, { children: ["\u5DF2\u9009\u62E9 \u6570\u91CF: ", count, " \u89C4\u683C: ", spec] })), _jsx("img", { src: THREE_DOTS, alt: "", className: 'icon' })] }))] })), _jsx(GoodsDetailPopup, { goods: goods })] }));
8
17
  };
9
18
  export default GoodsDetailSize;
@@ -0,0 +1,2 @@
1
+ export * from './useAddShopping';
2
+ export * from './useGoodsDetailImpl';
@@ -1,75 +1,2 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { useEffect, useState } from 'react';
11
- import { useComponent } from '@brushes/qj-simulate-component';
12
- import { getResourceGoodsInfoBySkuCode, queryPromotionListByGoodsCode } from '@brushes/api';
13
- import { _ } from '@brushes/tools';
14
- const { isEmpty, get } = _;
15
- export function useGoodsDetailmpl(skuCode) {
16
- const [goods, setGoods] = useState({});
17
- const { View, Text, Skeleton } = useComponent();
18
- const [promotionArr, setPromotionArr] = useState([]);
19
- const [checkCollectionObj, setCheckCollectionObj] = useState({});
20
- const [sliderArr, setSliderArr] = useState([]);
21
- const [tabActive, setTabActive] = useState(1);
22
- const [popupVisible, setPopupVisible] = useState(false);
23
- useEffect(() => {
24
- getGoodsDetailData();
25
- }, []);
26
- const getGoodsDetailData = () => __awaiter(this, void 0, void 0, function* () {
27
- try {
28
- const goodsDetailResult = yield getResourceGoodsInfoBySkuCode({
29
- skuCode
30
- });
31
- const promotionListParams = {
32
- skuNo: goodsDetailResult.skuNo || '',
33
- skuCode: goodsDetailResult.rsSkuDomainList[0].skuCode || '',
34
- classtreeCode: goodsDetailResult.classtreeCode || '',
35
- brandCode: goodsDetailResult.brandCode || '',
36
- pntreeCode: goodsDetailResult.pntreeCode || '',
37
- memberCode: goodsDetailResult.memberCode || ''
38
- };
39
- console.log(22, goodsDetailResult.rsGoodsFileDomainList);
40
- const arr = get(goodsDetailResult, 'rsGoodsFileDomainList', []);
41
- if (isEmpty(arr))
42
- return;
43
- const sliderData = arr.map((item) => {
44
- return {
45
- imgUrl: item.goodsFileUrl,
46
- link: ''
47
- };
48
- });
49
- setSliderArr(sliderData);
50
- setGoods(goodsDetailResult);
51
- getPromotionData(promotionListParams);
52
- }
53
- catch (err) {
54
- console.log(59, err);
55
- }
56
- });
57
- const getPromotionData = (params) => __awaiter(this, void 0, void 0, function* () {
58
- const result = yield queryPromotionListByGoodsCode(params);
59
- setPromotionArr(result);
60
- });
61
- return {
62
- View,
63
- Text,
64
- Skeleton,
65
- goods,
66
- promotionArr,
67
- checkCollectionObj,
68
- setCheckCollectionObj,
69
- sliderArr,
70
- tabActive,
71
- setTabActive,
72
- popupVisible,
73
- setPopupVisible
74
- };
75
- }
1
+ export * from './useAddShopping';
2
+ export * from './useGoodsDetailImpl';
@@ -0,0 +1,10 @@
1
+ export declare function useAddShopping(): {
2
+ count: any;
3
+ spec: any;
4
+ popupVisible: any;
5
+ isNeedButton: any;
6
+ handleChooseSize: (value: string) => void;
7
+ handleStep: (type: string) => void;
8
+ addShoppingImpl: () => void;
9
+ popupHandler: () => void;
10
+ };
@@ -0,0 +1,74 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { useDispatchImpl, useStore } from '../store';
11
+ import { _ } from '@brushes/tools';
12
+ import { checkSkuSpec, addCardSku } from '../../../utils/payment';
13
+ import { navigatorImpl } from '@brushes/qj-simulate-component';
14
+ import { routerMap } from '../../../routerMap';
15
+ const { get } = _;
16
+ export function useAddShopping() {
17
+ const { count, spec, orderType, popupVisible, isNeedButton, goodsCode } = useStore();
18
+ const dispatch = useDispatchImpl();
19
+ const handleChooseSize = (value) => {
20
+ dispatch({
21
+ type: 'select',
22
+ payload: {
23
+ spec: value
24
+ }
25
+ });
26
+ };
27
+ const popupHandler = () => {
28
+ dispatch({
29
+ type: 'popupImpl',
30
+ payload: {
31
+ popupVisible: !popupVisible
32
+ }
33
+ });
34
+ };
35
+ const handleStep = (type) => {
36
+ dispatch({
37
+ type
38
+ });
39
+ };
40
+ const addCardImpl = () => __awaiter(this, void 0, void 0, function* () {
41
+ try {
42
+ const data = yield checkSkuSpec(spec, goodsCode);
43
+ const skuId = get(data, 'dataObj.skuId');
44
+ yield addCardSku(skuId, count);
45
+ popupHandler();
46
+ }
47
+ catch (err) { }
48
+ });
49
+ const cashImpl = () => __awaiter(this, void 0, void 0, function* () {
50
+ const data = yield checkSkuSpec(spec, goodsCode);
51
+ const skuId = get(data, 'dataObj.skuId');
52
+ navigatorImpl(`${routerMap.confirm}?skuId=${skuId}&goodsNum=${count}`);
53
+ });
54
+ const addShoppingImpl = () => {
55
+ if (orderType === 0) {
56
+ // 添加到购物车
57
+ addCardImpl();
58
+ }
59
+ else {
60
+ // 去支付页面
61
+ cashImpl();
62
+ }
63
+ };
64
+ return {
65
+ count,
66
+ spec,
67
+ popupVisible,
68
+ isNeedButton,
69
+ handleChooseSize,
70
+ handleStep,
71
+ addShoppingImpl,
72
+ popupHandler
73
+ };
74
+ }
@@ -0,0 +1,13 @@
1
+ /// <reference types="react" />
2
+ import { itemType } from '../../Slider';
3
+ export declare const useGoodsDetailImpl: (skuCode: string) => {
4
+ promotionArr: never[];
5
+ checkCollectionObj: {};
6
+ setCheckCollectionObj: import("react").Dispatch<import("react").SetStateAction<{}>>;
7
+ sliderArr: itemType[];
8
+ tabActive: number;
9
+ setTabActive: import("react").Dispatch<import("react").SetStateAction<number>>;
10
+ popupVisible: boolean;
11
+ setPopupVisible: import("react").Dispatch<import("react").SetStateAction<boolean>>;
12
+ goods: {};
13
+ };
@@ -0,0 +1,85 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { useEffect, useState } from 'react';
11
+ import { getResourceGoodsInfoBySkuCode, queryPromotionListByGoodsCode } from '@brushes/api';
12
+ import { _ } from '@brushes/tools';
13
+ import { useDispatchImpl } from '../store';
14
+ const { isEmpty, get } = _;
15
+ export const useGoodsDetailImpl = (skuCode) => {
16
+ const [goods, setGoods] = useState({});
17
+ const [promotionArr, setPromotionArr] = useState([]);
18
+ const [checkCollectionObj, setCheckCollectionObj] = useState({});
19
+ const [sliderArr, setSliderArr] = useState([]);
20
+ const [tabActive, setTabActive] = useState(1);
21
+ const [popupVisible, setPopupVisible] = useState(false);
22
+ const dispatch = useDispatchImpl();
23
+ useEffect(() => {
24
+ getGoodsDetailData();
25
+ }, []);
26
+ const getGoodsDetailData = () => __awaiter(void 0, void 0, void 0, function* () {
27
+ try {
28
+ const goodsDetailResult = yield getResourceGoodsInfoBySkuCode({
29
+ skuCode
30
+ // isLocalMock: true
31
+ });
32
+ const promotionListParams = {
33
+ skuNo: goodsDetailResult.skuNo || '',
34
+ skuCode: goodsDetailResult.rsSkuDomainList[0].skuCode || '',
35
+ classtreeCode: goodsDetailResult.classtreeCode || '',
36
+ brandCode: goodsDetailResult.brandCode || '',
37
+ pntreeCode: goodsDetailResult.pntreeCode || '',
38
+ memberCode: goodsDetailResult.memberCode || ''
39
+ };
40
+ const arr = get(goodsDetailResult, 'rsGoodsFileDomainList', []);
41
+ if (isEmpty(arr))
42
+ return;
43
+ const sliderData = arr.map((item) => {
44
+ return {
45
+ imgUrl: item.goodsFileUrl,
46
+ link: ''
47
+ };
48
+ });
49
+ dispatch({
50
+ type: 'initGoods',
51
+ payload: {
52
+ spec: get(goodsDetailResult, 'rsSpecValueDomainList[0].specValueValue', ''),
53
+ goodsCode: goodsDetailResult.goodsCode,
54
+ goodsNum: goodsDetailResult.goodsNum
55
+ }
56
+ });
57
+ setSliderArr(sliderData);
58
+ setGoods(goodsDetailResult);
59
+ getPromotionData(promotionListParams);
60
+ }
61
+ catch (err) {
62
+ console.log(59, err);
63
+ }
64
+ });
65
+ const getPromotionData = (params) => __awaiter(void 0, void 0, void 0, function* () {
66
+ try {
67
+ const result = yield queryPromotionListByGoodsCode(params);
68
+ setPromotionArr(result);
69
+ }
70
+ catch (err) {
71
+ console.log(err);
72
+ }
73
+ });
74
+ return {
75
+ promotionArr,
76
+ checkCollectionObj,
77
+ setCheckCollectionObj,
78
+ sliderArr,
79
+ tabActive,
80
+ setTabActive,
81
+ popupVisible,
82
+ setPopupVisible,
83
+ goods
84
+ };
85
+ };
@@ -1,2 +1,6 @@
1
1
  /// <reference types="react" />
2
- export declare const GoodsDetail: import("react").NamedExoticComponent<{}>;
2
+ interface GoodsDetailType {
3
+ skuCode: string;
4
+ }
5
+ export declare const GoodsDetail: import("react").NamedExoticComponent<GoodsDetailType>;
6
+ export {};