Sfoglia il codice sorgente

分享注册页面

快乐的梦鱼 1 mese fa
parent
commit
0537176151
2 ha cambiato i file con 15 aggiunte e 126 eliminazioni
  1. 14 125
      src/pages/dig/sharereg/share-reg-page.vue
  2. 1 1
      src/pages/user/login.vue

+ 14 - 125
src/pages/dig/sharereg/share-reg-page.vue

@@ -12,12 +12,11 @@
         <Button type="primary" @click="redirectTo('/pages/index')">返回首页</Button>
       </Result>
       <!--注册-->
-      <FlexCol v-else-if="step === 'register'" :padding="30">
+      <FlexCol v-else-if="step === 'register'">
         <DynamicForm
           ref="registerFormRef"
           :model="registerFormModel"
           :options="registerFormDefine"
-          :formGlobalParams="querys"
         />
         <Height :height="20" />
         <Button block type="primary" @click="registerSubmit" :loading="registerFormLoading">提交</Button>
@@ -72,21 +71,14 @@ import DynamicForm from '@/components/dynamic/DynamicForm.vue';
 import { useAppInit } from '@/common/composeabe/AppInit';
 import { UserApi } from '@/api/auth/UserApi';
 import { useAuthStore } from '@/store/auth';
-import { useAliOssUploadCo } from '@/common/components/upload/AliOssUploadCo';
 import { redirectTo } from '@/components/utils/PageAction';
 import { closeToast, toast } from '@/components/dialog/CommonRoot';
 import { showError } from '@/common/composeabe/ErrorDisplay';
 import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
 import { onMounted, ref } from 'vue';
-import VillageApi, { type VolunteerInfo } from '@/api/inhert/VillageApi';
-import CommonContent from '@/api/CommonContent';
-import type { IDynamicFormItemCallbackAdditionalProps, IDynamicFormOptions, IDynamicFormRef } from '@/components/dynamic';
-import type { FieldProps } from '@/components/form/Field.vue';
-import type { RuleItem } from 'async-validator';
-import type { PickerIdFieldProps } from '@/components/dynamic/wrappers/PickerIdField';
-import type { RadioValueProps } from '@/components/dynamic/wrappers/RadioValue';
-import type { UploaderFieldProps } from '@/components/form/UploaderField.vue';
-import type { FormProps } from '@/components/form/Form.vue';
+import { getVolunteerForm } from '../admin/data/volunteer';
+import VillageApi, { VolunteerInfo } from '@/api/inhert/VillageApi';
+import type { IDynamicFormOptions, IDynamicFormRef } from '@/components/dynamic';
 
 /**
  * 分享注册页面
@@ -110,6 +102,13 @@ onMounted(async () => {
     step.value = 'error';
     return;
   }
+  registerFormDefine.value = getVolunteerForm({
+    canSetCatalog: false,
+    villageId: querys.value.villageId,
+    onlyPassword: false,
+    isNew: ref(true),
+    formRef: registerFormRef,
+  });
   if (authStore.isLogged) {
     try {
       await VillageApi.getVolunteerInfo();
@@ -154,118 +153,8 @@ async function loginWechat() {
 
 const registerFormLoading = ref(false);
 const registerFormRef = ref<IDynamicFormRef>();
-const registerFormModel = ref<VolunteerInfo>();
-const registerFormDefine : IDynamicFormOptions = {
-  formItems: [
-    {
-      name: 'groupBase',
-      type: 'flat-simple',
-      children: [
-        { 
-          label: '登录账号', name: 'username', type: 'text',
-          additionalProps: { 
-            placeholder: '请输入用户名',
-          },
-          rules: [{ required: true, message: '请输入用户名' }],
-        },
-        {
-          label: '密码',
-          name: 'password',
-          type: 'text',
-          additionalProps: { 
-            placeholder: '请输入密码',
-            type: 'password',
-          } as FieldProps,
-          rules: [{ required: true, message: '请输入密码' }],
-        },
-        {
-          label: '确认密码',
-          name: 'passwordRepeat',
-          type: 'text',
-          additionalProps: { 
-            placeholder: '请再输入一次密码',
-            type: 'password',
-          } as FieldProps,
-          rules: [
-            { required: true, message: '请再输入一次密码' },
-            {
-              async validator(rule, value) {
-                if (value != registerFormRef.value?.getValueByPath('password'))
-                  throw '两次输入密码不一致,请检查';
-              },
-            }
-          ] as RuleItem[],
-        },
-      ]
-    },
-    {
-      name: 'groupExtra',
-      type: 'flat-simple',
-      childrenColProps: {
-        span: 24,
-      },
-      children: [
-        {
-          label: '真实名称', name: 'name', type: 'text',
-          additionalProps: { placeholder: '请输入真实名称' },
-          rules: [{ required: true, message: '请输入真实名称' }],
-        },
-        {
-          label: '手机号', name: 'mobile', type: 'text',
-          additionalProps: { placeholder: '请输入手机号' },
-          rules: [{ required: true, message: '请输入手机号' }],
-        },
-        { 
-          label: '区域', name: 'regionId', type: 'select-id',
-          additionalProps: {
-            placeholder: '请选择区域',
-            loadData: async () => (await CommonContent.getCategoryList(1)).map(p => ({ text: p.title, value: p.id, raw: p }))
-          } as IDynamicFormItemCallbackAdditionalProps<PickerIdFieldProps>,
-          rules: [{ required: true, message: '请选择区域' }],
-        },
-        {
-          label: '性别', name: 'sex', type: 'radio-value',
-          additionalProps: {
-            options: [
-              { text: '男', value: 1 },
-              { text: '女', value: 2 }
-            ]
-          } as RadioValueProps,
-        },
-        { 
-          label: '头像', name: 'image', type: 'uploader',
-          additionalProps: {
-            single: true,
-            maxFileSize: 1024 * 1024 * 10,
-            upload: useAliOssUploadCo('xiangyuan/volunteer/images')
-          } as UploaderFieldProps,
-        },
-        { label: '地址', name: 'address', type: 'text', additionalProps: { placeholder: '请输入地址' } },
-        { 
-          label: '介绍', 
-          name: 'intro', 
-          type: 'textarea', 
-          additionalProps: { 
-            placeholder: '请输入介绍',
-            showWordLimit: true,
-            maxLength: 200,
-          } as FieldProps,
-        },
-        { 
-          label: '村落认领说明', name: 'claimReason', type: 'text', 
-          additionalProps: { placeholder: '请输入村落认领说明' } ,
-        },
-      ]
-    },
-  ],
-  formAdditionaProps: {
-    labelWidth: '160rpx',
-    labelAlign: 'right',
-    innerStyle: {
-      radius: '10rpx',
-    },
-  } as Omit<FormProps, 'model'>,
-}
+const registerFormModel = ref<VolunteerInfo>(new VolunteerInfo());
+const registerFormDefine = ref<IDynamicFormOptions>();
 
 async function registerSubmit() {
   if (!registerFormRef.value || !registerFormModel.value)
@@ -279,7 +168,7 @@ async function registerSubmit() {
   try {
     registerFormLoading.value = true;
     registerFormModel.value!.villageId = querys.value.villageId;
-    const loginRes = await VillageApi.shareAddVolunteer(registerFormModel.value!);
+    const loginRes = await VillageApi.shareAddVolunteer(registerFormModel.value as VolunteerInfo);
     await authStore.loginResultHandle(loginRes, UserApi.LOGIN_TYPE_USER);
     await init();
     toast({ content: '注册成功' });

+ 1 - 1
src/pages/user/login.vue

@@ -141,7 +141,7 @@ const fieldStyle = themeContext.useThemeStyle({
 });
 
 const isTestCode = ref(false);
-const tipBindWechat = new MemoryTimeOut('TipBindWechat', 1000 * 3600 * 12);
+const tipBindWechat = new MemoryTimeOut('TipBindWechat', 1000 * 3600 * 72);
 
 async function loginWechat() {