|
|
@@ -11,12 +11,28 @@
|
|
|
<Height :height="20" />
|
|
|
<Button block type="primary" @click="registerSubmit" :loading="registerFormLoading">提交</Button>
|
|
|
</FlexCol>
|
|
|
+ <!--认领-->
|
|
|
+ <FlexCol v-else-if="step === 'add'">
|
|
|
+ <Alert
|
|
|
+ type="info"
|
|
|
+ message="您已经是志愿者,请填写以下信息,认领当前村落"
|
|
|
+ />
|
|
|
+ <DynamicForm
|
|
|
+ ref="addFormRef"
|
|
|
+ :model="addFormModel"
|
|
|
+ :options="addFormDefine"
|
|
|
+ />
|
|
|
+ <Height :height="20" />
|
|
|
+ <Button block type="primary" @click="addSubmit" :loading="addFormLoading">提交</Button>
|
|
|
+ </FlexCol>
|
|
|
<!--注册完成-->
|
|
|
<Result
|
|
|
v-else-if="step === 'finished'"
|
|
|
status="success"
|
|
|
- title="注册志愿者成功"
|
|
|
- description="请等待管理员审核,在此期间,可以在社区中先逛逛,学习如何采编村社文化资源信息吧"
|
|
|
+ :title="finishedMode === 'claim' ? '认领申请已提交' : '注册志愿者成功'"
|
|
|
+ :description="finishedMode === 'claim'
|
|
|
+ ? '请等待管理员审核认领申请,审核通过后即可采编该村落文化资源'
|
|
|
+ : '请等待管理员审核,在此期间,可以在社区中先逛逛,学习如何采编村社文化资源信息吧'"
|
|
|
>
|
|
|
<Height :size="20" />
|
|
|
<Button type="primary" @click="back()">进入首页</Button>
|
|
|
@@ -67,9 +83,11 @@ import { showError } from '@/common/composeabe/ErrorDisplay';
|
|
|
import { useLoadQuerys } from '@/common/composeabe/LoadQuerys';
|
|
|
import { onMounted, ref } from 'vue';
|
|
|
import { getVolunteerForm } from '@/pages/dig/admin/data/volunteer';
|
|
|
-import VillageApi, { VillageListItem, VolunteerInfo } from '@/api/inhert/VillageApi';
|
|
|
+import VillageApi, { VillageClaimInfo, VillageListItem, VolunteerInfo } from '@/api/inhert/VillageApi';
|
|
|
import type { IDynamicFormOptions, IDynamicFormRef } from '@/components/dynamic';
|
|
|
import { assertNotNull, waitTimeOut } from '@imengyu/imengyu-utils';
|
|
|
+import { fillClaimFromVolunteer, getClaimVillageForm } from './form/claim';
|
|
|
+import Alert from '@/components/feedback/Alert.vue';
|
|
|
|
|
|
/**
|
|
|
* 分享注册页面
|
|
|
@@ -81,7 +99,8 @@ const { init } = useAppInit();
|
|
|
const { querys } = useLoadQuerys({
|
|
|
villageId: 0,
|
|
|
});
|
|
|
-const step = ref<'register'|'finished'|'error'>('register');
|
|
|
+const step = ref<'register' | 'add' | 'finished' | 'error'>('register');
|
|
|
+const finishedMode = ref<'register' | 'claim'>('register');
|
|
|
const village = ref<VillageListItem>();
|
|
|
|
|
|
onMounted(async () => {
|
|
|
@@ -89,7 +108,24 @@ onMounted(async () => {
|
|
|
step.value = 'error';
|
|
|
return;
|
|
|
}
|
|
|
- village.value = JSON.parse(uni.getStorageSync('VillageTemp') || '{}'),
|
|
|
+ village.value = JSON.parse(uni.getStorageSync('VillageTemp') || '{}');
|
|
|
+
|
|
|
+ if (authStore.isLogged) {
|
|
|
+ try {
|
|
|
+ const volunteerInfo = await VillageApi.getVolunteerInfo();
|
|
|
+ if (volunteerInfo) {
|
|
|
+ step.value = 'add';
|
|
|
+ addFormDefine.value = getClaimVillageForm({ formRef: addFormRef });
|
|
|
+ const model = new VillageClaimInfo();
|
|
|
+ model.villageId = querys.value.villageId;
|
|
|
+ fillClaimFromVolunteer(model, volunteerInfo);
|
|
|
+ addFormModel.value = model;
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ } catch {
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
await waitTimeOut(1000);
|
|
|
|
|
|
registerFormDefine.value = getVolunteerForm({
|
|
|
@@ -151,6 +187,7 @@ async function registerSubmit() {
|
|
|
await authStore.loginResultHandle(loginRes, UserApi.LOGIN_TYPE_USER);
|
|
|
await init();
|
|
|
toast({ content: '注册成功' });
|
|
|
+ finishedMode.value = 'register';
|
|
|
step.value = 'finished';
|
|
|
} catch (e) {
|
|
|
showError(e);
|
|
|
@@ -158,4 +195,33 @@ async function registerSubmit() {
|
|
|
registerFormLoading.value = false;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+const addFormLoading = ref(false);
|
|
|
+const addFormRef = ref<IDynamicFormRef>();
|
|
|
+const addFormModel = ref<VillageClaimInfo>(new VillageClaimInfo());
|
|
|
+const addFormDefine = ref<IDynamicFormOptions>();
|
|
|
+
|
|
|
+async function addSubmit() {
|
|
|
+ if (!addFormRef.value || !addFormModel.value)
|
|
|
+ return;
|
|
|
+ try {
|
|
|
+ await addFormRef.value.validate();
|
|
|
+ } catch (e) {
|
|
|
+ toast({ content: '有必填项未填写,请检查' });
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ addFormLoading.value = true;
|
|
|
+ addFormModel.value.villageId = querys.value.villageId;
|
|
|
+ await VillageApi.claimVallage(addFormModel.value as VillageClaimInfo);
|
|
|
+ toast({ content: '提交成功' });
|
|
|
+ finishedMode.value = 'claim';
|
|
|
+ step.value = 'finished';
|
|
|
+ } catch (e) {
|
|
|
+ showError(e);
|
|
|
+ } finally {
|
|
|
+ addFormLoading.value = false;
|
|
|
+ }
|
|
|
+}
|
|
|
</script>
|