RegisterSeScreen.js 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365
  1. /* eslint-disable no-shadow */
  2. /* eslint-disable camelcase */
  3. import * as WebBrowser from "expo-web-browser";
  4. import * as React from "react";
  5. import { useModel } from "flooks";
  6. import { StyleSheet } from "react-native";
  7. import { Layout, Text, useTheme, Button, Card } from "@ui-kitten/components";
  8. import { useFocusEffect } from "@react-navigation/native";
  9. import ScrollPage from "../components/ScrollPage";
  10. import FormInput from "../components/FormInput";
  11. import ConnectButton from "../components/ConnectButton";
  12. import GuideHeaderBar from "../components/GuideHeaderBar";
  13. import * as RootNavigation from "../navigation/RootNavigation";
  14. const styles = StyleSheet.create({
  15. container: {
  16. flex: 1,
  17. paddingBottom: 33,
  18. },
  19. tabContent: {
  20. backgroundColor: "#fff",
  21. marginTop: 20,
  22. },
  23. logo: {
  24. width: 100,
  25. height: 100,
  26. alignSelf: "center",
  27. },
  28. logo2: {
  29. width: 97,
  30. height: 21,
  31. alignSelf: "center",
  32. marginTop: 2,
  33. },
  34. text: {
  35. marginTop: 16,
  36. },
  37. layoutLeft: {
  38. flexDirection: "row",
  39. paddingVertical: 10,
  40. justifyContent: "center",
  41. },
  42. form: {
  43. paddingHorizontal: 26,
  44. paddingVertical: 20,
  45. },
  46. });
  47. export default function RegisterScreen() {
  48. const theme = useTheme();
  49. const { changeBackground } = useModel("barModel");
  50. const { httpGet } = useModel("httpModel", true);
  51. const { mid, registerSecend, registerInfo, userInfo, checkAgain } = useModel(
  52. "userModel"
  53. );
  54. const { verifiedInfo, registerVerifiedInfo } = useModel("verifiedModel");
  55. const {
  56. guideHome_title1,
  57. guideHome_title2,
  58. guideHome_form_1,
  59. guideHome_form_2,
  60. guideHome_form_4,
  61. guideHome_form_5,
  62. guideHome_form_6,
  63. guideHome_form_7,
  64. // guideHome_pla_2,
  65. guideHome_pla_3,
  66. next,
  67. } = useModel("wordsModel");
  68. const [categoryList, changeCategoryList] = React.useState([]);
  69. const [merchantNatureList, changeMerchantNatureList] = React.useState([]);
  70. const [qualification, changeQualification] = React.useState("");
  71. useFocusEffect(
  72. React.useCallback(() => {
  73. changeBackground(theme["color-primary-500"]);
  74. httpGet("/category/tree", { id: 1 }).then(res => {
  75. changeCategoryList(res);
  76. });
  77. httpGet("/merchantNature/all").then(res => {
  78. changeMerchantNatureList(res.content);
  79. });
  80. }, [])
  81. );
  82. const [category, changeCategory] = React.useState("");
  83. const [address, changeAddress] = React.useState("");
  84. const [week, changeWeek] = React.useState("");
  85. const [startTime, changeStartTime] = React.useState("08:00:00");
  86. const [endTime, changeEndTime] = React.useState("22:00:00");
  87. const [merchantNatureId, changeMerchantNatureId] = React.useState("");
  88. const [logo, changeLogo] = React.useState();
  89. const [doorHeadImg, changeDoorHeadeImg] = React.useState("");
  90. const [img, changeImg] = React.useState("");
  91. // 法人信息
  92. const [realName, setRealName] = React.useState("");
  93. const [idNo, setIdNo] = React.useState("");
  94. const [idNoImg, setIdNoImg] = React.useState("");
  95. const [handheldIdNo, setHandheldIdNo] = React.useState("");
  96. React.useEffect(() => {
  97. if (registerVerifiedInfo && registerVerifiedInfo.realName) {
  98. setRealName(registerVerifiedInfo.realName);
  99. }
  100. if (registerVerifiedInfo && registerVerifiedInfo.idNo) {
  101. setIdNo(registerVerifiedInfo.idNo);
  102. }
  103. if (registerVerifiedInfo && registerVerifiedInfo.idNoImg) {
  104. setIdNoImg(registerVerifiedInfo.idNoImg);
  105. }
  106. if (registerVerifiedInfo && registerVerifiedInfo.handheldIdNo) {
  107. setHandheldIdNo(registerVerifiedInfo.handheldIdNo);
  108. }
  109. }, [registerVerifiedInfo]);
  110. React.useEffect(() => {
  111. if (verifiedInfo && verifiedInfo.realName) {
  112. setRealName(verifiedInfo.realName);
  113. }
  114. if (verifiedInfo && verifiedInfo.idNo) {
  115. setIdNo(verifiedInfo.idNo);
  116. }
  117. if (verifiedInfo && verifiedInfo.idNoImg) {
  118. setIdNoImg(verifiedInfo.idNoImg);
  119. }
  120. if (verifiedInfo && verifiedInfo.handheldIdNo) {
  121. setHandheldIdNo(verifiedInfo.handheldIdNo);
  122. }
  123. }, [verifiedInfo]);
  124. React.useEffect(() => {
  125. if (registerInfo && registerInfo.qualification) {
  126. changeQualification(registerInfo.qualification);
  127. }
  128. if (registerInfo && registerInfo.doorHeadImg) {
  129. changeDoorHeadeImg(registerInfo.doorHeadImg);
  130. }
  131. if (registerInfo && registerInfo.img) {
  132. changeImg(registerInfo.img);
  133. }
  134. }, [registerInfo]);
  135. React.useEffect(() => {
  136. if (mid) {
  137. if (userInfo.category.length > 0) {
  138. changeCategory(userInfo.category[0].id);
  139. }
  140. changeAddress(userInfo.address);
  141. changeWeek(userInfo.week);
  142. changeLogo(userInfo.logo);
  143. changeMerchantNatureId(userInfo.merchantNatureId);
  144. changeStartTime(userInfo.startTime);
  145. changeEndTime(userInfo.endTime);
  146. changeQualification(userInfo.qualification);
  147. changeDoorHeadeImg(userInfo.doorHeadImg);
  148. changeImg(userInfo.img);
  149. console.log(userInfo);
  150. }
  151. }, [mid]);
  152. const timeValue = React.useMemo(() => {
  153. if (week && startTime && endTime) {
  154. return `${week} ${startTime}~${endTime}`;
  155. }
  156. return " ";
  157. }, [week, startTime, endTime]);
  158. const canNext = React.useMemo(() => {
  159. if (
  160. category &&
  161. address &&
  162. merchantNatureId &&
  163. logo &&
  164. week &&
  165. startTime &&
  166. endTime &&
  167. doorHeadImg &&
  168. img &&
  169. realName &&
  170. idNo &&
  171. idNoImg &&
  172. handheldIdNo &&
  173. qualification
  174. ) {
  175. return true;
  176. }
  177. return false;
  178. }, [
  179. category,
  180. address,
  181. merchantNatureId,
  182. logo,
  183. week,
  184. startTime,
  185. endTime,
  186. doorHeadImg,
  187. img,
  188. realName,
  189. idNo,
  190. idNoImg,
  191. handheldIdNo,
  192. qualification,
  193. ]);
  194. return (
  195. <>
  196. <GuideHeaderBar />
  197. <ScrollPage>
  198. <Layout style={styles.container}>
  199. {mid === 0 && (
  200. <Card appearance="headFilled">
  201. <Text category="s1">{guideHome_title1}</Text>
  202. <Text category="s1">{guideHome_title2}</Text>
  203. </Card>
  204. )}
  205. <Card appearance="formFilled">
  206. {/* 输入商家名称 */}
  207. <FormInput
  208. label={guideHome_form_1}
  209. selectTitle={guideHome_form_1}
  210. type="select"
  211. value={category}
  212. onChange={changeCategory}
  213. textAlign="right"
  214. selectList={categoryList}
  215. style={{ paddingVertical: 5 }}
  216. />
  217. <FormInput
  218. label={guideHome_form_2}
  219. value={address}
  220. onChange={changeAddress}
  221. textAlign="right"
  222. />
  223. <FormInput
  224. label={guideHome_form_4}
  225. selectTitle={guideHome_form_4}
  226. type="openTime"
  227. value={timeValue}
  228. week={week}
  229. startTime={startTime}
  230. endTime={startTime}
  231. onChange={(week, startTime, endTime) => {
  232. changeWeek(week);
  233. changeStartTime(startTime);
  234. changeEndTime(endTime);
  235. }}
  236. textAlign="right"
  237. style={{ paddingVertical: 5 }}
  238. />
  239. <FormInput
  240. label={guideHome_form_5}
  241. type="url"
  242. value={qualification ? "已上传" : " "}
  243. textAlign="right"
  244. style={{ paddingVertical: 5 }}
  245. changePath={() => {
  246. RootNavigation.navigate("Qualification");
  247. }}
  248. />
  249. <FormInput
  250. label="门店信息"
  251. type="url"
  252. value={doorHeadImg && img ? "已上传" : " "}
  253. textAlign="right"
  254. style={{ paddingVertical: 5 }}
  255. changePath={() => {
  256. RootNavigation.navigate("Store");
  257. }}
  258. />
  259. <FormInput
  260. label="法人信息"
  261. type="url"
  262. value={
  263. realName && idNo && idNoImg && handheldIdNo ? "已上传" : " "
  264. }
  265. textAlign="right"
  266. style={{ paddingVertical: 5 }}
  267. changePath={() => {
  268. RootNavigation.navigate("LegalPerson");
  269. }}
  270. />
  271. <FormInput
  272. label={guideHome_form_6}
  273. sub={guideHome_pla_3}
  274. selectTitle={guideHome_form_6}
  275. type="select"
  276. value={merchantNatureId}
  277. textAlign="right"
  278. style={{ paddingVertical: 5 }}
  279. onChange={changeMerchantNatureId}
  280. selectList={merchantNatureList}
  281. />
  282. <FormInput
  283. label={guideHome_form_7}
  284. type="img"
  285. value={logo}
  286. textAlign="right"
  287. onChange={changeLogo}
  288. />
  289. <Layout style={styles.layoutLeft} level="1">
  290. {mid !== 0 ? (
  291. <Button
  292. status="primary"
  293. disabled={!canNext}
  294. onPress={() => {
  295. const categorys = [...categoryList].filter(item => {
  296. return item.id === category;
  297. });
  298. checkAgain({
  299. category: categorys,
  300. address,
  301. week,
  302. startTime,
  303. endTime,
  304. qualification,
  305. merchantNatureId,
  306. logo,
  307. });
  308. }}
  309. >
  310. 提交审核
  311. </Button>
  312. ) : (
  313. <Button
  314. status="primary"
  315. disabled={!canNext}
  316. onPress={() =>
  317. registerSecend({
  318. category,
  319. address,
  320. week,
  321. startTime,
  322. endTime,
  323. qualification,
  324. merchantNatureId,
  325. logo,
  326. img,
  327. doorHeadImg,
  328. })
  329. }
  330. >
  331. {next}
  332. </Button>
  333. )}
  334. </Layout>
  335. </Card>
  336. <ConnectButton />
  337. </Layout>
  338. </ScrollPage>
  339. </>
  340. );
  341. }