diff --git a/package.json b/package.json index f4d4f28..367fe90 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "preinstall": "node ./scripts/preinstall.js" }, "dependencies": { + "@ant-design/icons-vue": "^7.0.1", "@element-plus/icons-vue": "^2.3.1", "axios": "^1.6.8", "echarts": "5.3.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 557beaa..085ad97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,6 +1,9 @@ lockfileVersion: '6.0' dependencies: + '@ant-design/icons-vue': + specifier: ^7.0.1 + version: 7.0.1(vue@3.4.21) '@element-plus/icons-vue': specifier: ^2.3.1 version: 2.3.1(vue@3.4.21) @@ -131,6 +134,26 @@ packages: '@jridgewell/trace-mapping': 0.3.25 dev: true + /@ant-design/colors@6.0.0: + resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==} + dependencies: + '@ctrl/tinycolor': 3.6.1 + dev: false + + /@ant-design/icons-svg@4.4.2: + resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==} + dev: false + + /@ant-design/icons-vue@7.0.1(vue@3.4.21): + resolution: {integrity: sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==} + peerDependencies: + vue: '>=3.0.3' + dependencies: + '@ant-design/colors': 6.0.0 + '@ant-design/icons-svg': 4.4.2 + vue: 3.4.21(typescript@5.2.2) + dev: false + /@babel/code-frame@7.24.7: resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} engines: {node: '>=6.9.0'} diff --git a/src/api/person.ts b/src/api/person.ts index 27ad773..97db75a 100644 --- a/src/api/person.ts +++ b/src/api/person.ts @@ -1,37 +1,58 @@ -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); - }) +import req1 from '@/utils/requset'; +import { AxiosInstance } from 'axios'; +function copyRequest(req1: AxiosInstance, instanceConfig = {}) { + let request: AxiosInstance, copyStatus: boolean; + try { + // @ts-ignore + const req2 = req1.create(instanceConfig); + function acopyInterceptors(target: any, interceptorManager: any) { + const handlers = interceptorManager.handlers; + for (let index = 0; index < handlers?.length; index++) { + + const { fulfilled, rejected, runWhen, synchronous } = handlers[index]; + let options; + if (synchronous !== false || runWhen !== null) options = { synchronous, runWhen }; + target.use(fulfilled, rejected, options) + } + } + acopyInterceptors(req2.interceptors.request, req1.interceptors.request); + acopyInterceptors(req2.interceptors.response, req1.interceptors.response); + request = req2; + copyStatus = true; + } catch (error) { + console.warn('拷贝失败,私有拦截器可能失效:\n', error); + request = req1; + copyStatus = false; } + + return { request, copyStatus }; +} + +const { request, copyStatus } = copyRequest(req1); + +// 若拷贝成功,添加自己独有的拦截器 +if (copyStatus) { + request.interceptors.response.use((response: any) => { + if (response.code >= 200 && response.code < 300) return response; + else return Promise.reject(response); + }) } +// ============================================================================= enum api { - liststu = '/abilityEvaluation/personalAbilityEvaluationCollect/liststu', // 个人能力评价列表 - integral = '/annualScore/personalCompTotalScore/liststu', // 个人积分列表 + liststu = '/abilityEvaluation/personalAbilityEvaluationCollect/liststu', // 个人能力评价列表 + integral = '/annualScore/personalCompTotalScore/liststu', // 个人积分列表 PAGE_XSFXBG = '/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/xsfxbg', // 个人能力报告 - competition = '/AnnualCompPoint/annualCompPoint/findcompp', // 比赛项目列表 - competitionOne = '/AnnualCompPoint/annualCompPoint/findcomppxq', // 比赛项目单个 - signUp = '/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/edit', // 年度比赛项目报名 POST + competition = '/AnnualCompPoint/annualCompPoint/findcompp', // 比赛项目列表 + competitionOne = '/AnnualCompPoint/annualCompPoint/findcomppxq', // 比赛项目单个 + signUp = '/annualcompetitionprojectregistration/annualCompetitionProjectRegistration/edit', // 年度比赛项目报名 POST + membersList = '/online/cgreport/api/getData/1696139786651197442', // 团队成员列表 + adviserList = '/online/cgreport/api/getData/1828357196360998913', // 指导老师列表 + listStudent = '/AnnualCompPoint/annualCompPoint/listStudent', // 比赛项目报名表 } -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 = f( - (params = {}) => { - const par = { recreateFlag: false, annualid: '' }; - Object.assign(par, params); - return request.get(api.PAGE_XSFXBG, { params: par }); - } -); -export const getCompetitionApi = f((id: string) => request.get(api.competition, { params: { id } })); -export const getCompetitionOneApi = f((id: string) => request.get(api.competitionOne, { params: { id } })); +// http://10.115.2.247:3300/jeecgboot/AnnualCompPoint/annualCompPoint/listStudent?column=createTime&order=desc&pageNo=1&pageSize=10&_t=1727422864387 interface SignUpData { annualCompid: string, entryFormat: '团队' | '个人', @@ -39,4 +60,31 @@ interface SignUpData { instructorSheetList?: any[], teamManagementList?: any[], } -export const getSignUpApi = f((data: SignUpData) => request.post(api.signUp, data)); \ No newline at end of file + +interface MembersOrAdviser { + pageNo: number, + pageSize: number, + onlRepUrlParamStr: `annualCompid=${string}`, + entryFormat: '团队' | '个人', + id: string, + column?: string, + order?: 'asc' | 'desc' +} + +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 getXsfxbgApi = (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 getSignUpApi = (data: SignUpData) => request.post(api.signUp, data); + +export const getMembersList = (params: MembersOrAdviser) => request.get(api.membersList, { params }); +export const getAdviserList = (params: MembersOrAdviser) => request.get(api.adviserList, { params }); + diff --git a/src/views/projectName/index.vue b/src/views/projectName/index.vue index cf585aa..516cda5 100644 --- a/src/views/projectName/index.vue +++ b/src/views/projectName/index.vue @@ -84,7 +84,6 @@ function handleSub() { let path; if (data.value.entryForm === 'Y') path = '/registrationGroup'; else path = '/registrationPersonage'; - router.push({ path, query: { id: route.query.id,objName:data.value.objName } }) } diff --git a/src/views/registrationGroup copy/components/dalog.vue b/src/views/registrationGroup copy/components/dalog.vue new file mode 100644 index 0000000..bcfad46 --- /dev/null +++ b/src/views/registrationGroup copy/components/dalog.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup copy/components/edit.vue b/src/views/registrationGroup copy/components/edit.vue new file mode 100644 index 0000000..c8d72fe --- /dev/null +++ b/src/views/registrationGroup copy/components/edit.vue @@ -0,0 +1,78 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup copy/components/infoList.vue b/src/views/registrationGroup copy/components/infoList.vue new file mode 100644 index 0000000..c0c9a80 --- /dev/null +++ b/src/views/registrationGroup copy/components/infoList.vue @@ -0,0 +1,153 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup copy/index.vue b/src/views/registrationGroup copy/index.vue new file mode 100644 index 0000000..876b490 --- /dev/null +++ b/src/views/registrationGroup copy/index.vue @@ -0,0 +1,585 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup/components/stuDialog.vue b/src/views/registrationGroup/components/stuDialog.vue new file mode 100644 index 0000000..d8cbfeb --- /dev/null +++ b/src/views/registrationGroup/components/stuDialog.vue @@ -0,0 +1,119 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup/components/stuList.vue b/src/views/registrationGroup/components/stuList.vue new file mode 100644 index 0000000..e493811 --- /dev/null +++ b/src/views/registrationGroup/components/stuList.vue @@ -0,0 +1,163 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup/components/teaDialog.vue b/src/views/registrationGroup/components/teaDialog.vue new file mode 100644 index 0000000..2799cef --- /dev/null +++ b/src/views/registrationGroup/components/teaDialog.vue @@ -0,0 +1,122 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup/components/teaList.vue b/src/views/registrationGroup/components/teaList.vue new file mode 100644 index 0000000..4707fe9 --- /dev/null +++ b/src/views/registrationGroup/components/teaList.vue @@ -0,0 +1,217 @@ + + + + + \ No newline at end of file diff --git a/src/views/registrationGroup/index.vue b/src/views/registrationGroup/index.vue index 2ee996b..a1916f9 100644 --- a/src/views/registrationGroup/index.vue +++ b/src/views/registrationGroup/index.vue @@ -78,9 +78,6 @@
个人信息
-
- -
姓名
@@ -106,71 +103,55 @@
邮箱
{{ info.email }}
-
- -
-
- 添加队员 -
已选2位
-
- -
- + +
+
+ + + + + + + + + + +
-
-
- - - - - - - -
- + + + + + +
+ +
- 取消报名 - 确认报名 + 取消报名 + 确认报名
+