RegisterSeScreen.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. import * as WebBrowser from "expo-web-browser";
  2. import * as React from "react";
  3. import {
  4. Image,
  5. Platform,
  6. StyleSheet,
  7. TouchableOpacity,
  8. View,
  9. ImageBackground,
  10. } from "react-native";
  11. import scrollPage from "../decorator/scrollPage";
  12. import { useModel } from "flooks";
  13. import {
  14. Layout,
  15. Tab,
  16. TabView,
  17. Text,
  18. useTheme,
  19. Button,
  20. Card,
  21. } from "@ui-kitten/components";
  22. import FormInput from "../components/FormInput";
  23. import { useFocusEffect } from "@react-navigation/native";
  24. import ScrollPage from "../components/ScrollPage";
  25. import ConnectButton from "../components/ConnectButton";
  26. import GuideHeaderBar from "../components/GuideHeaderBar";
  27. import OpenTime from "../components/OpenTime";
  28. export default function RegisterScreen({ navigation, route }) {
  29. const theme = useTheme();
  30. const { changeBackground } = useModel("barModel");
  31. const { setNavigation, pushRouter } = useModel("routersModel", true);
  32. const { httpGet } = useModel("httpModel", true);
  33. const { registerSecend } = useModel("userModel", true);
  34. const {
  35. guideHome_title1,
  36. guideHome_title2,
  37. guideHome_form_1,
  38. guideHome_form_2,
  39. guideHome_form_3,
  40. guideHome_form_4,
  41. guideHome_form_5,
  42. guideHome_form_6,
  43. guideHome_form_7,
  44. guideHome_pla_1,
  45. guideHome_pla_2,
  46. guideHome_pla_3,
  47. next,
  48. } = useModel("wordsModel");
  49. const [categoryList, changeCategoryList] = React.useState([]);
  50. const [merchantNatureList, changeMerchantNatureList] = React.useState([]);
  51. useFocusEffect(
  52. React.useCallback(() => {
  53. changeBackground(theme["color-primary-500"]);
  54. setNavigation(navigation);
  55. httpGet("/category/tree", { id: 1 }).then((res) => {
  56. changeCategoryList(res);
  57. });
  58. httpGet("/merchantNature/all").then((res) => {
  59. changeMerchantNatureList(res.content);
  60. });
  61. }, [])
  62. );
  63. const [category, changeCategory] = React.useState("");
  64. const [address, changeAddress] = React.useState("");
  65. const [week, changeWeek] = React.useState("");
  66. const [startTime, changeStartTime] = React.useState("08:00");
  67. const [endTime, changeEndTime] = React.useState("22:00");
  68. const [qualification, changeQualification] = React.useState("");
  69. const [merchantNatureId, changeMerchantNatureId] = React.useState("");
  70. const [logo, changeLogo] = React.useState();
  71. const timeValue = React.useMemo(() => {
  72. if (week && startTime && endTime) {
  73. return week + " " + startTime + "~" + endTime;
  74. } else {
  75. return " ";
  76. }
  77. }, [week, startTime, endTime]);
  78. const canNext = React.useMemo(() => {
  79. return true;
  80. }, [logo]);
  81. const { registerFirst } = useModel("userModel", true);
  82. return (
  83. <>
  84. <GuideHeaderBar />
  85. <ScrollPage>
  86. <Layout style={styles.container}>
  87. <Card appearance='headFilled'>
  88. <Text category='s1'>{guideHome_title1}</Text>
  89. <Text category='s1'>{guideHome_title2}</Text>
  90. </Card>
  91. <Card appearance='formFilled'>
  92. {/* 输入商家名称 */}
  93. <FormInput
  94. label={guideHome_form_1}
  95. selectTitle={guideHome_form_1}
  96. type='select'
  97. value={category}
  98. onChange={changeCategory}
  99. textAlign='right'
  100. selectList={categoryList}
  101. style={{ paddingVertical: 5 }}
  102. />
  103. <FormInput
  104. label={guideHome_form_2}
  105. value={address}
  106. onChange={changeAddress}
  107. textAlign='right'
  108. />
  109. <FormInput
  110. label={guideHome_form_4}
  111. selectTitle={guideHome_form_4}
  112. type='openTime'
  113. value={timeValue}
  114. onChange={(week, startTime, endTime) => {
  115. changeWeek(week);
  116. changeStartTime(startTime);
  117. changeEndTime(endTime);
  118. }}
  119. textAlign='right'
  120. style={{ paddingVertical: 5 }}
  121. />
  122. <FormInput
  123. label={guideHome_form_5}
  124. sub={guideHome_pla_2}
  125. type='url'
  126. value={qualification ? "已上传" : " "}
  127. textAlign='right'
  128. style={{ paddingVertical: 5 }}
  129. changePath={() => {
  130. pushRouter("Qualification");
  131. }}
  132. />
  133. <FormInput
  134. label={guideHome_form_6}
  135. sub={guideHome_pla_3}
  136. selectTitle={guideHome_form_6}
  137. type='select'
  138. value={merchantNatureId}
  139. textAlign='right'
  140. style={{ paddingVertical: 5 }}
  141. onChange={changeMerchantNatureId}
  142. selectList={merchantNatureList}
  143. />
  144. <FormInput
  145. label={guideHome_form_7}
  146. type='img'
  147. value={logo}
  148. textAlign='right'
  149. onChange={changeLogo}
  150. />
  151. <Layout style={styles.layoutLeft} level='1'>
  152. <Button
  153. status='primary'
  154. disabled={!canNext}
  155. onPress={() =>
  156. registerSecend({
  157. category,
  158. address,
  159. week,
  160. startTime,
  161. endTime,
  162. qualification,
  163. merchantNatureId,
  164. logo,
  165. })
  166. }
  167. >
  168. {next}
  169. </Button>
  170. </Layout>
  171. </Card>
  172. <ConnectButton />
  173. </Layout>
  174. </ScrollPage>
  175. </>
  176. );
  177. }
  178. const styles = StyleSheet.create({
  179. container: {
  180. flex: 1,
  181. paddingBottom: 33,
  182. },
  183. tabContent: {
  184. backgroundColor: "#fff",
  185. marginTop: 20,
  186. },
  187. logo: {
  188. width: 100,
  189. height: 100,
  190. alignSelf: "center",
  191. },
  192. logo2: {
  193. width: 97,
  194. height: 21,
  195. alignSelf: "center",
  196. marginTop: 2,
  197. },
  198. text: {
  199. marginTop: 16,
  200. },
  201. layoutLeft: {
  202. flexDirection: "row",
  203. paddingVertical: 10,
  204. justifyContent: "center",
  205. },
  206. form: {
  207. paddingHorizontal: 26,
  208. paddingVertical: 20,
  209. },
  210. });