panhui há 5 anos atrás
pai
commit
fcc39a1967

+ 1 - 1
components/Header.js

@@ -13,7 +13,7 @@ export default function Header({ title, noBack }) {
       <Appbar.Header dark>
         {!noBack && <Appbar.BackAction onPress={goBack} />}
         <Appbar.Content
-          title={title}
+          title={title || ''}
           titleStyle={{ textAlign: 'center', fontSize: 16 }}
         />
         {!noBack && (

+ 25 - 0
flooks/User.js

@@ -82,6 +82,31 @@ const app = (now) => ({
         warnning(e.error);
       });
   },
+  loginByRegister(phone, password) {
+    const { loading, warnning, success } = now(Toast);
+    loading();
+    return request
+      .post('/auth/loginByRegister', {
+        data: {
+          phone: submitPhone(phone),
+          password,
+        },
+        requestType: 'form',
+      })
+      .then((res) => {
+        return addAsyncStorage('token', res);
+      })
+      .then(() => {
+        const { getUser } = now();
+        return getUser();
+      })
+      .then(() => {
+        success('注册成功');
+      })
+      .catch((e) => {
+        warnning(e.error);
+      });
+  },
 });
 
 export default app;

+ 4 - 0
navigation/BaseNavigator.jsx

@@ -26,6 +26,7 @@ import RiderApply from '../screens/User/RiderApplyScreen';
 import MerchatApply from '../screens/User/MerchatApplyScreen';
 import CompanyApply from '../screens/User/CompanyApplyScreen';
 import AppSetting from '../screens/User/AppSettingScreen';
+import Rule from '../screens/User/RuleScreen';
 
 // 地址
 import EditAddress from '../screens/Address/EditAddressScreen';
@@ -93,6 +94,9 @@ export default function BasicScreens(Screen) {
       <Screen name="CompanyApply" component={CompanyApply} />
       {/* app设置 */}
       <Screen name="AppSetting" component={AppSetting} />
+      {/* 隐私政策 */}
+      <Screen name="Rule" component={Rule} />
+
       <Screen name="Address" component={AddressScreen} />
       {/* 编辑address */}
       <Screen name="EditAddress" component={EditAddress} />

+ 1 - 1
navigation/BottomTabNavigator.jsx

@@ -10,7 +10,7 @@ const BottomTab = createBottomTabNavigator();
 
 export default function BottomTabNavigator() {
   return (
-    <BottomTab.Navigator initialRouteName="Order">
+    <BottomTab.Navigator initialRouteName="Home">
       <BottomTab.Screen
         name="Home"
         component={HomeScreen}

+ 1 - 1
screens/Login/BackPasswordScreen.jsx

@@ -15,7 +15,7 @@ export default function BackPasswordScreen() {
 
   return (
     <Div flex={1} bg="white">
-      <Header />
+      <Header title="找回密码" />
 
       <View style={styles.list}>
         <WingBlank>

+ 8 - 1
screens/Login/LoginScreen.jsx

@@ -27,7 +27,14 @@ export default function LoginScreen({ navigation }) {
       >
         忘记密码
       </Button>
-      <Button text size="small" type="info" onPress={() => {}}>
+      <Button
+        text
+        size="small"
+        type="info"
+        onPress={() => {
+          navigation.navigate('Register');
+        }}
+      >
         用户注册
       </Button>
     </View>

+ 83 - 0
screens/Login/RegisterScreen.jsx

@@ -0,0 +1,83 @@
+import * as WebBrowser from 'expo-web-browser';
+import * as React from 'react';
+import { StyleSheet, View } from 'react-native';
+import { WingBlank, InputItem } from '@ant-design/react-native';
+import { Caption, Paragraph } from 'react-native-paper';
+import { Div } from 'react-native-magnus';
+import useModel from 'flooks';
+import { useCreation } from '@umijs/hooks';
+import user from '../../flooks/User';
+import Header from '../../components/Header';
+import Button from '../../components/Button';
+
+export default function RegisterScreen() {
+  const [phone, setphone] = React.useState();
+  const [password, setPassword] = React.useState();
+
+  const { loginByRegister } = useModel(user, []);
+
+  const canSubmit = useCreation(() => {
+    if (password && phone) {
+      return true;
+    } else {
+      return false;
+    }
+  }, [phone, password]);
+
+  return (
+    <Div flex={1} bg="white">
+      <Header title="用户注册" />
+
+      <View style={styles.list}>
+        <WingBlank>
+          <View>
+            <InputItem
+              clear
+              type="phone"
+              value={phone}
+              onChange={setphone}
+              placeholder="输入手机号"
+              style={{ fontSize: 14 }}
+            >
+              <Paragraph>手机号</Paragraph>
+            </InputItem>
+            <InputItem
+              clear
+              type="password"
+              value={password}
+              onChange={setPassword}
+              placeholder="输入密码"
+              style={{ fontSize: 14 }}
+            >
+              <Paragraph>密码</Paragraph>
+            </InputItem>
+
+            <View style={[styles.btn]}>
+              <Button
+                disabled={!canSubmit}
+                size="normal"
+                style={styles.btn}
+                onPress={() => loginByRegister(phone, password)}
+                block
+              >
+                确定
+              </Button>
+            </View>
+          </View>
+        </WingBlank>
+      </View>
+    </Div>
+  );
+}
+
+const styles = StyleSheet.create({
+  list: {
+    backgroundColor: '#fff',
+    borderWidth: 0,
+    flex: 1,
+    paddingTop: 20,
+  },
+  btn: {
+    marginTop: 40,
+  },
+});

+ 2 - 0
screens/Login/index.js

@@ -2,12 +2,14 @@ import * as WebBrowser from 'expo-web-browser';
 import * as React from 'react';
 import LoginScreen from './LoginScreen';
 import BackPasswordScreen from './BackPasswordScreen';
+import RegisterScreen from './RegisterScreen';
 
 export default function Bank(Screen) {
   return (
     <>
       <Screen name="Login" component={LoginScreen} />
       <Screen name="BackPassword" component={BackPasswordScreen} />
+      <Screen name="Register" component={RegisterScreen} />
     </>
   );
 }

+ 5 - 0
screens/User/AppSettingScreen.jsx

@@ -4,9 +4,14 @@ import * as Application from 'expo-application';
 import { Div, Button, Image, Text, Avatar, Icon } from 'react-native-magnus';
 import { ScrollView } from 'react-native-gesture-handler';
 
+import useModel from 'flooks';
+import User from '../../flooks/User';
+
 import Header from '../../components/Header';
 
 export default function AppSettingScreen() {
+  const { logout } = useModel(User, []);
+
   return (
     <>
       <Header title="设置" />

+ 41 - 0
screens/User/RuleScreen.jsx

@@ -0,0 +1,41 @@
+import * as WebBrowser from 'expo-web-browser';
+import * as React from 'react';
+import * as Application from 'expo-application';
+import { Div, Button, Image, Text, Avatar, Icon } from 'react-native-magnus';
+import { ScrollView } from 'react-native-gesture-handler';
+
+import useModel from 'flooks';
+import User from '../../flooks/User';
+
+import Header from '../../components/Header';
+
+export default function RuleScreen() {
+  const { logout } = useModel(User, []);
+
+  return (
+    <>
+      <Header title="隐私条款" />
+      <Div
+        bg="white"
+        mt={10}
+        alignItems="center"
+        pt={20}
+        pb={10}
+        borderColor="gray200"
+        borderBottomWidth={1}
+      >
+        <Text fontSize="sm">隐私政策</Text>
+      </Div>
+      <ScrollView>
+        <Div p={10} bg="white">
+          <Text fontSize="sm" color="gray300">
+            您的订单已经被取消收款方老司机的发链接SDK溜老司机
+            的上路考订水房间了圣诞节弗兰克斯家电快溜缝胶看楼上的甲方 看了圣诞节
+            放凌空加施蒂利克福建省浪蝶狂蜂监考老师的加菲看楼上的积分 了开机啥的
+            敖德萨所多
+          </Text>
+        </Div>
+      </ScrollView>
+    </>
+  );
+}

+ 1 - 0
screens/User/UserScreen.jsx

@@ -116,6 +116,7 @@ export default function UserScreen({ navigation }) {
               <List.Icon {...props} icon="card-text" color="#FFB11E" />
             )}
             right={(props) => <List.Icon {...props} icon="chevron-right" />}
+            onPress={() => navigation.navigate('Rule')}
           />
         </Div>
         <Div bg="white" mb={5}>