RegisterSeScreen.js 10 KB

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