ipanel-rnapp-ajb-base 1.0.0

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 (155) hide show
  1. package/app/.local_dev/DemoPage.js +46 -0
  2. package/app/.local_dev/env.js +1 -0
  3. package/app/.local_dev/polyfill.js +83 -0
  4. package/app/App.js +485 -0
  5. package/app/api/homedApi.js +42 -0
  6. package/app/api/index.js +2 -0
  7. package/app/api/ipanelCloudApi.js +796 -0
  8. package/app/assets/img/add.png +0 -0
  9. package/app/assets/img/add_img.png +0 -0
  10. package/app/assets/img/album.png +0 -0
  11. package/app/assets/img/album2.png +0 -0
  12. package/app/assets/img/album3.png +0 -0
  13. package/app/assets/img/album@2x.png +0 -0
  14. package/app/assets/img/album@3x.png +0 -0
  15. package/app/assets/img/audioRecordBar.png +0 -0
  16. package/app/assets/img/bootom_bar_bg.png +0 -0
  17. package/app/assets/img/close.png +0 -0
  18. package/app/assets/img/computer.png +0 -0
  19. package/app/assets/img/confirm.png +0 -0
  20. package/app/assets/img/delete_pic.png +0 -0
  21. package/app/assets/img/disabled.png +0 -0
  22. package/app/assets/img/goBack.png +0 -0
  23. package/app/assets/img/goBack2.png +0 -0
  24. package/app/assets/img/ischeck.png +0 -0
  25. package/app/assets/img/launch_bg.png +0 -0
  26. package/app/assets/img/launch_bg_panyu.png +0 -0
  27. package/app/assets/img/launch_logo.png +0 -0
  28. package/app/assets/img/launch_logo_panyu.png +0 -0
  29. package/app/assets/img/launch_text.png +0 -0
  30. package/app/assets/img/launch_text_panyu.png +0 -0
  31. package/app/assets/img/link.png +0 -0
  32. package/app/assets/img/login_bg.png +0 -0
  33. package/app/assets/img/login_bg_new.png +0 -0
  34. package/app/assets/img/login_left.png +0 -0
  35. package/app/assets/img/login_right.png +0 -0
  36. package/app/assets/img/nocheck.png +0 -0
  37. package/app/assets/img/personal.png +0 -0
  38. package/app/assets/img/photo.png +0 -0
  39. package/app/assets/img/photo@2x.png +0 -0
  40. package/app/assets/img/photo@3x.png +0 -0
  41. package/app/assets/img/protocol_checked.png +0 -0
  42. package/app/assets/img/qiehuan.png +0 -0
  43. package/app/assets/img/scan_border_bottom_left.png +0 -0
  44. package/app/assets/img/scan_border_bottom_right.png +0 -0
  45. package/app/assets/img/scan_border_top_left.png +0 -0
  46. package/app/assets/img/scan_border_top_right.png +0 -0
  47. package/app/assets/img/scan_move.png +0 -0
  48. package/app/assets/img/szjt.png +0 -0
  49. package/app/assets/img/tab.png +0 -0
  50. package/app/assets/img/tykz.png +0 -0
  51. package/app/assets/img/update_bg.png +0 -0
  52. package/app/assets/img/video.png +0 -0
  53. package/app/assets/img/video@2x.png +0 -0
  54. package/app/assets/img/video@3x.png +0 -0
  55. package/app/assets/img/worker.png +0 -0
  56. package/app/assets/img/wx.png +0 -0
  57. package/app/assets/img/ykq.png +0 -0
  58. package/app/assets/img/zfb.png +0 -0
  59. package/app/base.js +342 -0
  60. package/app/components/VersionUpdateConfirm.js +117 -0
  61. package/app/components/common/AccordionCell/index.js +67 -0
  62. package/app/components/common/ActionPicker/BasicPicker.js +136 -0
  63. package/app/components/common/ActionPicker/index.js +106 -0
  64. package/app/components/common/AddressPicker/index.js +211 -0
  65. package/app/components/common/Card/index.js +19 -0
  66. package/app/components/common/Cell/index.js +381 -0
  67. package/app/components/common/CustomDialog/index.js +120 -0
  68. package/app/components/common/CustomTabBar/index.js +157 -0
  69. package/app/components/common/CustomTabBar_bak/TabBarInput.js +210 -0
  70. package/app/components/common/CustomTabBar_bak/index.js +832 -0
  71. package/app/components/common/DateTimingPicker/index.js +254 -0
  72. package/app/components/common/Dialog/Notify.js +36 -0
  73. package/app/components/common/Dialog/baseDialog.js +146 -0
  74. package/app/components/common/Dialog/index.js +113 -0
  75. package/app/components/common/Dialog/prompt.js +145 -0
  76. package/app/components/common/Dialog/quickSelect.js +54 -0
  77. package/app/components/common/Dialog/select.js +125 -0
  78. package/app/components/common/Dialog/styles.js +167 -0
  79. package/app/components/common/Loading/index.js +71 -0
  80. package/app/components/common/LoginType/index.js +171 -0
  81. package/app/components/common/LoginType/protocol.js +160 -0
  82. package/app/components/common/Notify/index.js +68 -0
  83. package/app/components/common/OnceTouchable/index.js +33 -0
  84. package/app/components/common/PaymentPicker/index.js +264 -0
  85. package/app/components/common/ProductOrderPicker/index.js +524 -0
  86. package/app/components/common/ScreenBackHeader/index.js +144 -0
  87. package/app/components/common/ScrollPicker/index.js +232 -0
  88. package/app/components/common/SelectPicker/index.js +171 -0
  89. package/app/components/common/SmsCodeInput/index.js +93 -0
  90. package/app/components/common/SmsCodeInput/indexNew.js +101 -0
  91. package/app/components/common/Steps/index.js +126 -0
  92. package/app/components/common/Tag/index.js +17 -0
  93. package/app/components/common/Toast/index.js +103 -0
  94. package/app/components/common/WeekDaysPicker/index.js +196 -0
  95. package/app/components/index.js +8 -0
  96. package/app/components/iot/AddDeviceActionSheet/index.js +934 -0
  97. package/app/components/iot/AddressActionSheet/index.js +91 -0
  98. package/app/components/iot/RoomActionSheet/index.js +205 -0
  99. package/app/components/iot/ViewDeviceActionSheet/index.js +834 -0
  100. package/app/components/sheets.js +30 -0
  101. package/app/eventBus/index.js +54 -0
  102. package/app/hooks/checkLogin.js +30 -0
  103. package/app/hooks/shopMessageManager.js +308 -0
  104. package/app/hooks/useAddress.js +179 -0
  105. package/app/hooks/useAddress2.js +587 -0
  106. package/app/hooks/useDebounceFn.js +6 -0
  107. package/app/hooks/useDynamicPackages.js +22 -0
  108. package/app/hooks/useKeyboard.js +25 -0
  109. package/app/hooks/useLatest.js +10 -0
  110. package/app/hooks/useMessageManager.js +368 -0
  111. package/app/hooks/useNavigationFocus.js +19 -0
  112. package/app/hooks/useUser.js +56 -0
  113. package/app/screens/BaseScreen.js +389 -0
  114. package/app/screens/CommonScreens/BindPhoneScreen/index.js +179 -0
  115. package/app/screens/CommonScreens/BossScreen/index.js +138 -0
  116. package/app/screens/CommonScreens/DeviceAnswerDetailScreen/index.js +50 -0
  117. package/app/screens/CommonScreens/DeviceFeedbackScreen/index.js +365 -0
  118. package/app/screens/CommonScreens/EditInvoiceTitleScreen/index.js +279 -0
  119. package/app/screens/CommonScreens/FamilyDetailScreen/index.js +421 -0
  120. package/app/screens/CommonScreens/InvoiceTitleListScreen/index.js +118 -0
  121. package/app/screens/CommonScreens/OperatorSelectScreen/index.js +315 -0
  122. package/app/screens/CommonScreens/PersonalScreen/index.js +348 -0
  123. package/app/screens/CommonScreens/ScanQRCodeScreen/index.js +407 -0
  124. package/app/screens/CommonScreens/TvAlbumScreen/index.js +407 -0
  125. package/app/screens/LoginScreen/OpenLogSheet.js +241 -0
  126. package/app/screens/LoginScreen/index.js +920 -0
  127. package/app/screens/LoginScreen/indexNew.js +1354 -0
  128. package/app/screens/ResePassword/index.js +364 -0
  129. package/app/screens/SbkScreen.js +19 -0
  130. package/app/screens/WebviewScreen.js +41 -0
  131. package/app/storage/index.js +166 -0
  132. package/app/utils/EventEmitter.js +43 -0
  133. package/app/utils/RootNavigation.js +32 -0
  134. package/app/utils/SBK_plugin/convert.js +90 -0
  135. package/app/utils/SBK_plugin/convertStatus.js +250 -0
  136. package/app/utils/SBK_plugin/eventProcess.js +339 -0
  137. package/app/utils/SBK_plugin/index.js +32 -0
  138. package/app/utils/SBK_plugin/ipanelDeviceToSbkDevice.js +68 -0
  139. package/app/utils/SBK_plugin/sbk_defs.js +191 -0
  140. package/app/utils/StyleComposite.js +37 -0
  141. package/app/utils/applyPermissions.js +251 -0
  142. package/app/utils/bundleUpdater.js +46 -0
  143. package/app/utils/common.js +380 -0
  144. package/app/utils/config.js +47 -0
  145. package/app/utils/errCodes.js +3 -0
  146. package/app/utils/homedData.js +57 -0
  147. package/app/utils/http.js +178 -0
  148. package/app/utils/notice.js +15 -0
  149. package/app/utils/priceConversion.js +30 -0
  150. package/app/utils/registerDialog.js +90 -0
  151. package/app/utils/scaleSize.js +12 -0
  152. package/app/utils/soundPlayer.js +85 -0
  153. package/bin/local-dev.js +7 -0
  154. package/index.js +8 -0
  155. package/package.json +18 -0
@@ -0,0 +1,160 @@
1
+ import React from 'react';
2
+ import {Divider} from '@rneui/themed';
3
+ import {
4
+ View,
5
+ Text,
6
+ StyleSheet,
7
+ TouchableOpacity,
8
+ Dimensions,
9
+ } from 'react-native';
10
+ import {WebView} from 'react-native-webview';
11
+ import px from '../../../utils/scaleSize';
12
+ const ProtocolDialog = ({
13
+ type,
14
+ url,
15
+ handleOneDisagree,
16
+ handleOneAgree,
17
+ dialogTitle,
18
+ }) => {
19
+ const agree = type => {
20
+ handleOneAgree(type);
21
+ };
22
+ const disagree = type => {
23
+ handleOneDisagree(type);
24
+ };
25
+ return (
26
+ <View style={styles.agreementMask}>
27
+ <View style={styles.agreementConfirmContent}>
28
+ {dialogTitle ? (
29
+ <View style={styles.agreementConfirmHead}>
30
+ <Text style={styles.agreementConfirmTitle}>{dialogTitle}</Text>
31
+ </View>
32
+ ) : (
33
+ <></>
34
+ )}
35
+ <View style={{flex: 1}}>
36
+ <WebView
37
+ style={{}}
38
+ source={{
39
+ uri: url,
40
+ }}
41
+ />
42
+ </View>
43
+
44
+ <View style={styles.agreementButtons}>
45
+ <TouchableOpacity
46
+ style={styles.agreeBtn}
47
+ activeOpacity={0.7}
48
+ onPress={() => agree(type)}>
49
+ <Text style={styles.agreeBtnText}>同意</Text>
50
+ </TouchableOpacity>
51
+ </View>
52
+ <View style={styles.agreementButtons}>
53
+ <TouchableOpacity
54
+ style={styles.disagreeBtn}
55
+ activeOpacity={0.7}
56
+ onPress={() => disagree(type)}>
57
+ <Text style={styles.disagreeBtnText}>不同意</Text>
58
+ </TouchableOpacity>
59
+ </View>
60
+ </View>
61
+ </View>
62
+ );
63
+ };
64
+
65
+ const styles = StyleSheet.create({
66
+ agreementMask: {
67
+ position: 'absolute',
68
+ left: 0,
69
+ top: 0,
70
+ bottom: 0,
71
+ right: 0,
72
+ zIndex: 2,
73
+ backgroundColor: 'rgba(0,0,0,0.7)',
74
+ },
75
+ agreementConfirmContent: {
76
+ position: 'absolute',
77
+ height: Dimensions.get('window').height * 0.7,
78
+ left: px(75),
79
+ right: px(75),
80
+ top: Dimensions.get('window').height * 0.15,
81
+ backgroundColor: '#fff',
82
+ paddingBottom: 0,
83
+ borderRadius: px(29),
84
+ },
85
+ agreementConfirmHead: {
86
+ marginTop: px(52),
87
+ marginBottom: px(34),
88
+ },
89
+ headerLeft: {
90
+ position: 'absolute',
91
+ top: 15,
92
+ left: 10,
93
+ zIndex: 2,
94
+ },
95
+ goBackImg: {
96
+ width: 20,
97
+ height: 20,
98
+ },
99
+ agreementConfirmTitleBox: {
100
+ // flex: 1,
101
+ position: 'absolute',
102
+ top: 10,
103
+ bottom: 0,
104
+ left: 0,
105
+ right: 0,
106
+ zIndex: 1,
107
+ },
108
+ agreementConfirmTitle: {
109
+ fontSize: 20,
110
+ // lineHeight: 50,
111
+ color: '#000',
112
+ textAlign: 'center',
113
+ // paddingTop: 20,
114
+ },
115
+ agreementConfirmText: {
116
+ fontSize: px(40),
117
+ lineHeight: px(69),
118
+ color: '#333',
119
+ marginHorizontal: px(40),
120
+ },
121
+ agreementConfirmImportantText: {
122
+ color: 'rgba(234, 96, 0, 1)',
123
+ },
124
+ agreementButtons: {
125
+ // justifyContent: 'center',
126
+ alignItems: 'center',
127
+
128
+ // marginTop: px(12),
129
+ // flexDirection: 'row',
130
+ // justifyContent: 'center',
131
+ // borderBottomLeftRadius: px(29),
132
+ },
133
+ disagreeBtn: {
134
+ width: px(850),
135
+ height: px(132),
136
+ justifyContent: 'center',
137
+ alignItems: 'center',
138
+ },
139
+ disagreeBtnText: {
140
+ color: '#666',
141
+ fontSize: px(52),
142
+ textAlign: 'center',
143
+ fontWeight: '400',
144
+ },
145
+ agreeBtn: {
146
+ width: px(850),
147
+ height: px(132),
148
+ justifyContent: 'center',
149
+ alignItems: 'center',
150
+ backgroundColor: '#E86003',
151
+ borderRadius: px(23),
152
+ },
153
+ agreeBtnText: {
154
+ color: '#fff',
155
+ fontSize: px(52),
156
+ textAlign: 'center',
157
+ fontWeight: '600',
158
+ },
159
+ });
160
+ export default ProtocolDialog;
@@ -0,0 +1,68 @@
1
+ import React, {useImperativeHandle, useState} from 'react';
2
+ import {View, Modal, StyleSheet, Text, StatusBar} from 'react-native';
3
+ import px from '../../../utils/scaleSize';
4
+
5
+ export default ({onRef}) => {
6
+ const [visible, setVisible] = useState(false);
7
+ const [options, setOptions] = useState(null);
8
+
9
+ useImperativeHandle(onRef, () => {
10
+ return {
11
+ show: args => {
12
+ setOptions(args);
13
+ setVisible(true);
14
+ },
15
+ hide: () => {
16
+ setVisible(false);
17
+ },
18
+ };
19
+ });
20
+
21
+ return (
22
+ visible && (
23
+ <Modal
24
+ animationType="fade"
25
+ transparent={true}
26
+ visible={visible}
27
+ statusBarTranslucent={true}>
28
+ <View style={styles.mask} />
29
+ <View style={styles.notifyContainer}>
30
+ <Text style={styles.title}>{options?.title}</Text>
31
+ <Text style={styles.content}>{options?.content}</Text>
32
+ </View>
33
+ </Modal>
34
+ )
35
+ );
36
+ };
37
+
38
+ const styles = StyleSheet.create({
39
+ mask: {
40
+ position: 'absolute',
41
+ top: 0,
42
+ bottom: 0,
43
+ opacity: 0.5,
44
+ left: 0,
45
+ right: 0,
46
+ backgroundColor: '#000',
47
+ zIndex: 100,
48
+ },
49
+ notifyContainer: {
50
+ marginTop: px(29) + StatusBar.currentHeight,
51
+ marginHorizontal: px(40),
52
+ borderRadius: px(17),
53
+ backgroundColor: '#fff',
54
+ paddingHorizontal: px(40),
55
+ paddingVertical: px(69),
56
+ },
57
+ title: {
58
+ fontWeight: '600',
59
+ color: '#333',
60
+ fontSize: px(46),
61
+ marginBottom: px(29),
62
+ },
63
+ content: {
64
+ fontSize: px(40),
65
+ color: '#333',
66
+ fontWeight: '400',
67
+ },
68
+ });
@@ -0,0 +1,33 @@
1
+ import React, {useCallback, useState} from 'react';
2
+ import {TouchableOpacity} from 'react-native';
3
+
4
+ /**
5
+ * @param type 按钮类型 TouchableOpacity | TouchableHighlight | TouchableWithoutFeedback
6
+ * @param onPress
7
+ * @param disabled
8
+ * @param style
9
+ * @param props
10
+ * @returns {React.CElement<Readonly<TouchableOpacityProps> | TouchableOpacityProps, TouchableOpacity>}
11
+ */
12
+ export default ({type, onPress, disabled, style, ...props}) => {
13
+ const [buttonDisabled, setButtonDisabled] = useState(false);
14
+ const handlePress = useCallback(
15
+ async (...args) => {
16
+ setButtonDisabled(true);
17
+ typeof onPress === 'function' && (await onPress(...args));
18
+ setButtonDisabled(false);
19
+ },
20
+ [onPress],
21
+ );
22
+ return React.createElement(type || TouchableOpacity, {
23
+ ...props,
24
+ disabled: buttonDisabled || disabled,
25
+ style: [
26
+ style,
27
+ {
28
+ opacity: buttonDisabled || disabled ? 0.3 : 1,
29
+ },
30
+ ],
31
+ onPress: handlePress,
32
+ });
33
+ };
@@ -0,0 +1,264 @@
1
+ import React, { useEffect, useRef, useState } from "react";
2
+ import {
3
+ View,
4
+ Text,
5
+ StyleSheet,
6
+ TouchableOpacity,
7
+ Image,
8
+ Platform,
9
+ } from "react-native";
10
+ import ActionSheet, { SheetManager } from "react-native-actions-sheet";
11
+ import px from "../../../utils/scaleSize";
12
+ import { regFenToYuan } from "../../../utils/priceConversion";
13
+
14
+ import useLatest from "../../../hooks/useLatest";
15
+
16
+ const Index = ({ sheetId, payload }) => {
17
+ // 价格 购买类型 规格
18
+ const { price = 0, onPay, itemInfo, payTime, payTimeOut } = payload;
19
+ const [payType, setPayType] = useState(11);
20
+ const handleCancel = () => {
21
+ // SheetManager.hide(sheetId);
22
+ global.dialog.confirm({
23
+ containerStyle: {
24
+ paddingHorizontal: px(0),
25
+ },
26
+ contentStyle: {
27
+ paddingVertical: px(22),
28
+ marginBottom: px(16),
29
+ },
30
+ titleBoxStyle: {
31
+ paddingVertical: px(16),
32
+ },
33
+ titleStyle: {
34
+ fontSize: px(44),
35
+ },
36
+ contentTextStyle: {
37
+ color: "#333",
38
+ },
39
+ title: "是否放弃本次付款?",
40
+ component: "超过时效订将被取消,请尽快完成付款",
41
+ confirmButtonText: "确定离开",
42
+ confirmCallback: () => {
43
+ onPay(payType, "cancel", itemInfo);
44
+ SheetManager.hide(sheetId);
45
+ },
46
+ cancelButtonText: "继续支付",
47
+ cancelCallback: () => {},
48
+ });
49
+ };
50
+ const timer = useRef(null);
51
+ let difTime = 24 * 60 * 60 * 1000;
52
+ if (payTime) {
53
+ difTime =
54
+ 24 * 60 * 60 * 1000 -
55
+ (new Date().getTime() - new Date(payTime.replace(/-/g, "/")).getTime());
56
+ }
57
+ const [count, setCount] = useState(difTime);
58
+ const latestCount = useLatest(count);
59
+ const formatDate = (maxtime) => {
60
+ var d = Math.floor(maxtime / (1000 * 60 * 60 * 24));
61
+ var h = Math.floor(maxtime / (1000 * 3600)) - d * 24;
62
+ var m = Math.floor(maxtime / (1000 * 60)) - d * 24 * 60 - h * 60;
63
+ var s =
64
+ Math.floor(maxtime / 1000) - d * 24 * 60 * 60 - h * 60 * 60 - m * 60;
65
+ var hour = d * 24 + h,
66
+ minutes = m,
67
+ seconds = s;
68
+ if (hour > 100) {
69
+ hour = 99;
70
+ }
71
+ if (hour < 10) {
72
+ hour = "0" + hour;
73
+ }
74
+ if (m < 10) {
75
+ minutes = "0" + minutes;
76
+ }
77
+ if (s < 10) {
78
+ seconds = "0" + seconds;
79
+ }
80
+ return hour + ":" + minutes + ":" + seconds;
81
+ };
82
+
83
+ useEffect(() => {
84
+ timer.current = setInterval(() => {
85
+ setCount(latestCount.current - 1000);
86
+ if (latestCount.current <= 0) {
87
+ payTimeOut(itemInfo?.order_id);
88
+ clearInterval(timer.current);
89
+ SheetManager.hide(sheetId);
90
+ }
91
+ }, 1000);
92
+ return () => {
93
+ clearInterval(timer.current);
94
+ };
95
+ }, []);
96
+
97
+ const handleConfirm = () => {
98
+ onPay(payType, "confirm", itemInfo);
99
+ SheetManager.hide(sheetId);
100
+ };
101
+
102
+ return (
103
+ <>
104
+ <ActionSheet id={sheetId} isModal={false}>
105
+ <View style={styles.content}>
106
+ <Text style={styles.price}>¥ {regFenToYuan(price)}</Text>
107
+ <View style={styles.centerRow}>
108
+ <Text style={styles.remainder}>支付剩余时间</Text>
109
+ <Text style={styles.time}>{formatDate(latestCount.current)}</Text>
110
+ </View>
111
+ <TouchableOpacity
112
+ style={[styles.row, styles.flexBetween, styles.payType]}
113
+ onPress={() => {
114
+ setPayType(11);
115
+ }}
116
+ >
117
+ <View style={styles.row}>
118
+ <Image
119
+ source={require("../../../assets/img/wx.png")}
120
+ style={styles.wx}
121
+ />
122
+ <Text style={styles.wxTitle}>微信支付</Text>
123
+ </View>
124
+ {payType === 11 ? (
125
+ <Image
126
+ source={require("../../../assets/img/ischeck.png")}
127
+ style={styles.check}
128
+ />
129
+ ) : (
130
+ <Image
131
+ source={require("../../../assets/img/nocheck.png")}
132
+ style={styles.check}
133
+ />
134
+ )}
135
+ </TouchableOpacity>
136
+ <TouchableOpacity
137
+ disabled
138
+ style={[styles.row, styles.flexBetween, styles.payType]}
139
+ onPress={() => {
140
+ setPayType(5);
141
+ }}
142
+ >
143
+ <View style={styles.row}>
144
+ <Image
145
+ source={require("../../../assets/img/zfb.png")}
146
+ style={styles.wx}
147
+ />
148
+ <Text style={styles.wxTitle}>支付宝支付</Text>
149
+ </View>
150
+ {payType === 5 ? (
151
+ <Image
152
+ source={require("../../../assets/img/ischeck.png")}
153
+ style={styles.check}
154
+ />
155
+ ) : (
156
+ <Image
157
+ source={require("../../../assets/img/disabled.png")}
158
+ style={styles.check}
159
+ />
160
+ )}
161
+ </TouchableOpacity>
162
+ <TouchableOpacity
163
+ style={Platform.OS === "ios" ? styles.iosBottomBtns : styles.buy}
164
+ onPress={handleConfirm}
165
+ >
166
+ <Text style={styles.buyText}>确认支付</Text>
167
+ </TouchableOpacity>
168
+ <TouchableOpacity style={styles.closeBox} onPress={handleCancel}>
169
+ <Image
170
+ source={require("../../../assets/img/close.png")}
171
+ style={styles.closeImg}
172
+ />
173
+ </TouchableOpacity>
174
+ </View>
175
+ </ActionSheet>
176
+ </>
177
+ );
178
+ };
179
+
180
+ const styles = StyleSheet.create({
181
+ content: {
182
+ paddingHorizontal: px(55),
183
+ paddingTop: px(38),
184
+ position: "relative",
185
+ backgroundColor: "#fff",
186
+ },
187
+ price: {
188
+ color: "#EA6000",
189
+ fontSize: px(66),
190
+ fontWeight: "bold",
191
+ textAlign: "center",
192
+ marginTop: px(72),
193
+ marginBottom: px(22),
194
+ },
195
+ centerRow: {
196
+ flexDirection: "row",
197
+ fontSize: px(33),
198
+ alignItems: "center",
199
+ justifyContent: "center",
200
+ },
201
+ remainder: {
202
+ color: "#333",
203
+ marginRight: px(6),
204
+ },
205
+ time: {
206
+ color: "#EA6000",
207
+ },
208
+ row: {
209
+ flexDirection: "row",
210
+ alignItems: "center",
211
+ },
212
+ flexBetween: {
213
+ justifyContent: "space-between",
214
+ },
215
+ buy: {
216
+ height: px(115),
217
+ backgroundColor: "#ea6000",
218
+ justifyContent: "center",
219
+ alignItems: "center",
220
+ borderRadius: px(69),
221
+ marginTop: px(206),
222
+ },
223
+ iosBottomBtns: {
224
+ marginBottom: px(50),
225
+ height: px(115),
226
+ backgroundColor: "#ea6000",
227
+ justifyContent: "center",
228
+ alignItems: "center",
229
+ borderRadius: px(69),
230
+ marginTop: px(206),
231
+ },
232
+ buyText: {
233
+ fontSize: px(44),
234
+ color: "#fff",
235
+ fontWeight: "500",
236
+ },
237
+ payType: {
238
+ marginTop: px(115),
239
+ },
240
+ closeBox: {
241
+ position: "absolute",
242
+ top: px(36),
243
+ right: px(44),
244
+ },
245
+ closeImg: {
246
+ width: px(70),
247
+ height: px(70),
248
+ },
249
+ check: {
250
+ width: px(55),
251
+ height: px(55),
252
+ },
253
+ wx: {
254
+ width: px(82),
255
+ height: px(82),
256
+ },
257
+ wxTitle: {
258
+ color: "#333",
259
+ fontSize: px(49),
260
+ marginLeft: px(22),
261
+ },
262
+ });
263
+
264
+ export default Index;