个人报名api

main
significative 8 months ago
parent 02cad331cd
commit fe73766095
  1. 33
      src/api/person.ts
  2. 2
      src/utils/asyncHint.ts
  3. 3
      src/views/projectName/index.vue
  4. 61
      src/views/registrationPersonage/index.vue

@ -1,5 +1,14 @@
import request from '@/utils/requset'
function f(callback: Function) {
return (...arg: any[]) => {
return new Promise((resolve, reject) => {
callback(...arg).then((res: any) => {
if (res.code >= 200 && res.code < 300) resolve(res)
else reject(res)
}).catch(reject);
})
}
}
enum api {
liststu = '/abilityEvaluation/personalAbilityEvaluationCollect/liststu', // 个人能力评价列表
@ -9,17 +18,19 @@ enum api {
competitionOne = '/AnnualCompPoint/annualCompPoint/findcomppxq', // 比赛项目单个
signUp = '/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/edit', // 年度比赛项目报名 POST
}
export const getlEvaluateApi = (params: Record<'pageNo' | 'pageSize', number>) => request.get(api.liststu, { params });
export const getlIntegralApi = (params: Record<'pageNo' | 'pageSize', number>) => request.get(api.integral, { params });
export const getlEvaluateApi = f((params: Record<'pageNo' | 'pageSize', number>) => request.get(api.liststu, { params }));
export const getlIntegralApi = f((params: Record<'pageNo' | 'pageSize', number>) => request.get(api.integral, { params }));
export const getXsfxbgApi = (params = {}) => {
const par = { recreateFlag: false, annualid: '' };
Object.assign(par, params);
return request.get(api.PAGE_XSFXBG, { params: par });
};
export const getXsfxbgApi = f(
(params = {}) => {
const par = { recreateFlag: false, annualid: '' };
Object.assign(par, params);
return request.get(api.PAGE_XSFXBG, { params: par });
}
);
export const getCompetitionApi = (id: string) => request.get(api.competition, { params: { id } });
export const getCompetitionOneApi = (id: string) => request.get(api.competitionOne, { params: { id } });
export const getCompetitionApi = f((id: string) => request.get(api.competition, { params: { id } }));
export const getCompetitionOneApi = f((id: string) => request.get(api.competitionOne, { params: { id } }));
interface SignUpData {
annualCompid: string,
@ -28,4 +39,4 @@ interface SignUpData {
instructorSheetList?: any[],
teamManagementList?: any[],
}
export const getSignUpApi = (data: SignUpData) => request.post(api.signUp, data);
export const getSignUpApi = f((data: SignUpData) => request.post(api.signUp, data));

@ -54,8 +54,6 @@ export function getHint(pro: Promise<any>, options: Options = {}) {
if (opt.onRejected) opt.onRejected(err);
}
const onFinish = () => {
console.log(opt, opt.onFinish);
if (opt.onFinish) opt.onFinish();
}

@ -84,7 +84,8 @@ function handleSub() {
let path;
if (data.value.entryForm === 'Y') path = '/registrationGroup';
else path = '/registrationPersonage';
router.push({ path, query: { id: route.query.id } })
router.push({ path, query: { id: route.query.id,objName:data.value.objName } })
}
getData();

@ -79,7 +79,7 @@
<div class="head">
<div class="title">个人信息</div>
<div class="icon">
<img src="../../assets/images/ellipsis.png" alt="">
<!-- <img src="../../assets/images/ellipsis.png" alt=""> -->
</div>
</div>
<div class="info-box">
@ -106,6 +106,12 @@
<div class="label">邮箱</div>
<div class="text">{{ info.email }}</div>
</div>
<div class="info-box">
<div class="label">队伍名称</div>
<div class="text">
<el-input v-model="upData.teamName"></el-input>
</div>
</div>
<!-- <div class="info-box">
<div class="label">院系</div>
<div class="text">国际教育学院</div>
@ -134,20 +140,21 @@
</el-card>
<div class="bottom">
<el-button class="btn">取消报名</el-button>
<el-button class="btn" @click="() => router.push('/')">取消报名</el-button>
<el-button class="btn cyan" :loading="subLoading" @click="submit">确认报名</el-button>
</div>
</div>
</template>
<script lang="ts" setup>
import { ref, toRefs, watch } from 'vue';
import { ref, toRefs } from 'vue';
import { getSignUpApi } from '@/api/person';
import { getHint } from '@/utils/asyncHint';
import { useRoute } from 'vue-router';
import { ElMessage } from 'element-plus';
import { useRoute, useRouter } from 'vue-router';
import userStore from '@/store/module/user';
const user = userStore();
const route = useRoute();
const router = useRouter();
const { userInfo: info } = toRefs(user);
@ -160,23 +167,43 @@ function pasSex(num: number) {
//
const upData = ref<Parameters<typeof getSignUpApi>[0]>({
annualCompid: route.query.id as string,
annualCompid: route.query.objName as string,
entryFormat: '个人',
id: ''
id: route.query.id,
instructorSheetList: [],
teamManagementList: [{ realname: "", captain: "", teamSeq: "", userId: "" }],
teamName: ""
});
watch(() => info.value.id, newVal => upData.value.id = newVal);
const subLoading = ref(false);
const options = {
onFinish() {
subLoading.value = false
},
msgs: ['报名成功', '报名失败,请重新报名']
};
const subLoading = ref(false);
async function submit() {
subLoading.value = true;
await getHint(getSignUpApi(upData.value), options);
upData.value.teamManagementList[0].realname = info.value.realname
upData.value.teamManagementList[0].userId = info.value.id
if (!upData.value.teamName) {
ElMessage({
message: '队伍名称不能为空',
type: 'warning'
})
return
}
try {
subLoading.value = true;
const res: any = await getSignUpApi(upData.value);
ElMessage({
message: res?.message || res?.result || '报名成功',
type: 'success'
})
} catch (error) {
ElMessage({
// @ts-ignore
message: error?.message,
type: 'error'
})
} finally {
subLoading.value = false
}
}
</script>

Loading…
Cancel
Save