user-auth.tsx 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import request from '@/helpers/request';
  2. import { state } from '@/state';
  3. import { Button, CellGroup, Field, Form } from 'vant';
  4. import { defineComponent } from 'vue';
  5. import styles from './user-auth.module.less';
  6. import OHeader from '@/components/m-header';
  7. export default defineComponent({
  8. name: 'UserAuth',
  9. props: {
  10. onSuccess: {
  11. // 实名成功
  12. type: Function,
  13. default: () => {}
  14. },
  15. hideHeader: {
  16. type: Boolean,
  17. default: false
  18. }
  19. },
  20. data() {
  21. return {
  22. form: {
  23. realName: '',
  24. idCardNo: ''
  25. }
  26. };
  27. },
  28. mounted() {
  29. // 初始化数据
  30. const users = state.user.data;
  31. console.log(users, 'users');
  32. this.form.realName = users?.account?.realName;
  33. },
  34. methods: {
  35. async onSubmit() {
  36. try {
  37. const url = '/edu-app/sysAccount/realNameAuth';
  38. await request.post(url, {
  39. data: {
  40. ...this.form,
  41. contract: true,
  42. save: true
  43. }
  44. });
  45. state.user.data.account.realName = this.form.realName;
  46. state.user.data.account.idCardNo = this.form.idCardNo;
  47. this.onSuccess();
  48. } catch {
  49. //
  50. }
  51. }
  52. },
  53. render() {
  54. return (
  55. <Form class={styles.userAuth} onSubmit={this.onSubmit}>
  56. {!this.hideHeader && <OHeader title="实名认证" />}
  57. <CellGroup inset class={styles.cellGroup}>
  58. <Field
  59. required
  60. label="真实姓名"
  61. v-model={this.form.realName}
  62. rules={[{ required: true, message: '请填写真实姓名' }]}
  63. name="realName"
  64. placeholder="请填写真实姓名"
  65. autocomplete="off"
  66. maxlength="50"></Field>
  67. <Field
  68. required
  69. label="身份证号"
  70. v-model={this.form.idCardNo}
  71. maxlength={18}
  72. autocomplete="off"
  73. rules={[
  74. { required: true, message: '请输入身份证号' },
  75. {
  76. pattern:
  77. /^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(1[0-2]))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/,
  78. message: '请输入正确的身份证号'
  79. }
  80. ]}
  81. placeholder="请输入身份证号"></Field>
  82. </CellGroup>
  83. <div class={['btnGroup']}>
  84. <Button
  85. block
  86. round
  87. type="primary"
  88. native-type="submit"
  89. class={styles.otherBtn}>
  90. 确定
  91. </Button>
  92. </div>
  93. </Form>
  94. );
  95. }
  96. });