index.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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. usrType: '1',
  46. },
  47. },
  48. rules: null,
  49. };
  50. },
  51. created() {
  52. },
  53. async onLoad(res) {
  54. const { msg } = await formCfg('meet_form_cfg');
  55. if (msg) {
  56. const cfgJson = JSON.parse(msg);
  57. Object.keys(staticRules).forEach(item => {
  58. if (!cfgJson[item]) {
  59. Object.assign(cfgJson[item], staticRules[item]);
  60. }
  61. });
  62. this.rules = cfgJson;
  63. }
  64. //如果需要兼容微信小程序,并且校验规则中含有方法等,只能通过setRules方法设置规则。
  65. this.$refs.authWrap.reloadPage();
  66. this.$refs.registForm?.setFormRules();
  67. if (res && res.mode === FORM_MOD.modify) {
  68. await this.getUsrMeetingInfo(res.apply);
  69. } else {
  70. this.$refs.registForm?.restForm();
  71. }
  72. },
  73. onReady() {
  74. },
  75. methods: {
  76. hideKeyboard() {
  77. uni.hideKeyboard();
  78. },
  79. async onFormSubmit(userInfo) {
  80. const { code } = await putUsrRegist(userInfo, MEETING_TYPE.meeting.value);
  81. if (code !== 200) {
  82. return;
  83. }
  84. uni.showToast({
  85. mask: true,
  86. title: '报名完成',
  87. icon: 'success',
  88. success: async () => {
  89. let pages = getCurrentPages(); //获取当前页面
  90. let beforePage = pages[pages.length - 2]; //获取上一个页面的实例
  91. //1、调用上一个页面onLoad
  92. beforePage.onLoad();
  93. uni.navigateBack({
  94. delta: 1,
  95. });
  96. },
  97. });
  98. },
  99. async getUsrMeetingInfo(id) {
  100. const { data } = await fetchUsrApplyDetail(id);
  101. if (!data) {
  102. return;
  103. }
  104. this.model1.userInfo = data;
  105. },
  106. },
  107. };
  108. </script>
  109. <style lang="scss" src="./index.scss" />;