index.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. <template>
  2. <view class="register-bg">
  3. <auth-wrap class="register-container" ref="authWrap">
  4. <view class="form-content" slot="content">
  5. <RegistForm
  6. v-if="rules"
  7. :rules="rules"
  8. ref="registForm"
  9. @onSubmitHandle="onFormSubmit"
  10. :regist-info="model1.userInfo">
  11. </RegistForm>
  12. </view>
  13. </auth-wrap>
  14. </view>
  15. </template>
  16. <script>
  17. import { fetchUsrApplyDetail, formCfg, putUsrRegist } from '@/common/api';
  18. import { FORM_MOD, ICON_CFG, MEETING_TYPE, USR_TYPE_LIST } from '@/common/EnumConst';
  19. import AuthWrap from '@/components/AuthComp/index.vue';
  20. import RegistForm from '@/components/RegistForm';
  21. import SingleDropList from '@/components/SingleDropList/index.vue';
  22. const staticRules = {
  23. 'userInfo.email': {
  24. pattern: /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/,
  25. },
  26. };
  27. export default {
  28. name: 'login',
  29. components: {
  30. RegistForm,
  31. AuthWrap,
  32. SingleDropList,
  33. },
  34. props: {},
  35. data() {
  36. return {
  37. ICON_CFG,
  38. USR_TYPE_LIST,
  39. showEnterprise: false,
  40. loading: false,
  41. model1: {
  42. userInfo: {
  43. usrName: '',
  44. conferenceFlag: '0',
  45. themeFlag: '0',
  46. usrType: '1',
  47. follows: [],
  48. },
  49. },
  50. rules: null,
  51. };
  52. },
  53. created() {
  54. },
  55. async onLoad(res) {
  56. const { msg } = await formCfg('meet_form_cfg');
  57. if (msg) {
  58. const cfgJson = JSON.parse(msg);
  59. Object.keys(staticRules).forEach(item => {
  60. if (!cfgJson[item]) {
  61. Object.assign(cfgJson[item], staticRules[item]);
  62. }
  63. });
  64. this.rules = cfgJson;
  65. }
  66. //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
  67. this.$refs.authWrap.reloadPage();
  68. this.$refs.registForm?.setFormRules();
  69. if (res && res.mode === FORM_MOD.modify) {
  70. await this.getUsrMeetingInfo(res.apply);
  71. } else {
  72. this.$refs.registForm?.restForm();
  73. }
  74. },
  75. onReady() {
  76. },
  77. methods: {
  78. hideKeyboard() {
  79. uni.hideKeyboard();
  80. },
  81. async onFormSubmit(userInfo) {
  82. const { code } = await putUsrRegist(userInfo, MEETING_TYPE.meeting.value);
  83. if (code !== 200) {
  84. return;
  85. }
  86. uni.showToast({
  87. mask: true,
  88. title: '报名完成',
  89. icon: 'success',
  90. success: async () => {
  91. let pages = getCurrentPages(); //获取当前页面
  92. let beforePage = pages[pages.length - 2]; //获取上一个页面的实例
  93. //1、调用上一个页面onLoad
  94. beforePage.onLoad();
  95. uni.navigateBack({
  96. delta: 1,
  97. });
  98. },
  99. });
  100. },
  101. async getUsrMeetingInfo(id) {
  102. const { data } = await fetchUsrApplyDetail(id);
  103. if (!data) {
  104. return;
  105. }
  106. this.model1.userInfo = data;
  107. },
  108. },
  109. };
  110. </script>
  111. <style lang="scss" src="./index.scss" />;