Form.jsx 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import React from 'react';
  2. import Taro from '@tarojs/taro';
  3. import { View } from '@tarojs/components';
  4. import { Form, FormItem, Field, Button } from '@antmjs/vantui'
  5. import { useModel } from '@/store';
  6. import user from '@/assets/image/user.png';
  7. import password from '@/assets/image/password.png';
  8. import './form.less';
  9. export default (props) => {
  10. const { onSuccess } = props;
  11. const { signin } = useModel('user');
  12. const form = Form.useForm();
  13. const [accErr, setAccErr] = React.useState();
  14. const [pwdErr, setPwdErr] = React.useState();
  15. const onFinish = (errs, res) => {
  16. if (!res.account) {
  17. setAccErr('账户不能为空');
  18. return;
  19. } else {
  20. setAccErr();
  21. }
  22. if (!res.password) {
  23. setPwdErr('密码不能为空');
  24. return;
  25. } else {
  26. setPwdErr();
  27. }
  28. signin(res).then(onSuccess);
  29. }
  30. const onForgetPwd = () => {
  31. Taro.navigateTo({
  32. url: '/pages/reset-password/index'
  33. });
  34. }
  35. return (
  36. <View className="login-form">
  37. <Form form={form} onFinish={onFinish}>
  38. <FormItem
  39. name="account"
  40. valueFormat={(e) => e.detail}
  41. >
  42. <Field
  43. border
  44. label="账号"
  45. leftIcon={user}
  46. errorMessage={accErr}
  47. placeholder="请输入您的登录账号"
  48. ></Field>
  49. </FormItem>
  50. <FormItem
  51. name="password"
  52. valueFormat={(e) => e.detail}
  53. >
  54. <Field
  55. password
  56. label="密码"
  57. leftIcon={password}
  58. errorMessage={pwdErr}
  59. placeholder="请输入您的登录密码"
  60. ></Field>
  61. </FormItem>
  62. <View className="forget-password" onClick={onForgetPwd}>
  63. 忘记密码?
  64. </View>
  65. <View>
  66. <Button
  67. block
  68. type="primary"
  69. formType="submit"
  70. >
  71. 登录
  72. </Button>
  73. </View>
  74. </Form>
  75. </View>
  76. )
  77. }