diff --git a/index.html b/index.html index dde16aa..8f61c06 100644 --- a/index.html +++ b/index.html @@ -4,7 +4,7 @@ - Vite + Vue + TS + 高赛通
diff --git a/src/Layout/footer/index.vue b/src/Layout/footer/index.vue index 84b9185..b6c1707 100644 --- a/src/Layout/footer/index.vue +++ b/src/Layout/footer/index.vue @@ -1,6 +1,17 @@ @@ -18,8 +29,32 @@ import {} from 'vue' background: url('../../assets//images/footer.png') no-repeat; background-size: cover; display: flex; + flex-direction: column; align-items: center; - justify-content: center; - color: #000; + // justify-content: center; + color: #333333; + .footer-nav { + display: flex; + margin-top: 120px; + .item { + width: 180px; + text-align: center; + font-size: 18px; + cursor: pointer; + } + .item:nth-child(2) { + border-left: 1px solid #333333; + border-right: 1px solid #333333; + } + .item:hover { + color: #0bd7c6; + } + } + .copyright{ + margin-top: 80px; + } + .report{ + margin-top: .1042rem; + } } diff --git a/src/Layout/tabbar/index.vue b/src/Layout/tabbar/index.vue index 978f492..2a7cf98 100644 --- a/src/Layout/tabbar/index.vue +++ b/src/Layout/tabbar/index.vue @@ -23,7 +23,7 @@
-
注册
+
注册
登录
diff --git a/src/api/race.ts b/src/api/race.ts index a6462e5..18941c8 100644 --- a/src/api/race.ts +++ b/src/api/race.ts @@ -1,53 +1,75 @@ import request from '@/utils/requset' // 获取年度比赛项目列表 -export const getRaceProjectList = (params:any) => { - return request({ - url:'/AnnualCompPoint/annualCompPoint/listStudent', - params - }) +export const getRaceProjectList = (params: any) => { + return request({ + url: '/AnnualCompPoint/annualCompPoint/listStudent', + params, + }) } // 获取年度比赛列表 -export const getYearRaceList = (params:any) => { - return request({ - url:'/annualcomp/annualComp/findndbswlj', - params - }) +export const getYearRaceList = (params: any) => { + return request({ + url: '/annualcomp/annualComp/findndbswlj', + params, + }) } // 获取比赛列表 -export const getRaceList = (params:any) => { - return request({ - url:'/comp/comp/complistnolj', - params - }) +export const getRaceList = (params: any) => { + return request({ + url: '/comp/comp/complistnolj', + params, + }) } // 获取比赛详细信息 -export const getRaceInfo = (params:any) => { - return request({ - url:'/comp/comp/complistnoxq', - params - }) +export const getRaceInfo = (params: any) => { + return request({ + url: '/comp/comp/complistnoxq', + params, + }) } // 获取院系列表 -export const getFaculties = (params:any) => { - return request({ - url:'/sys/sysDepart/queryDepartStuTreeSync', - params - }) +export const getFaculties = (params: any) => { + return request({ + url: '/sys/sysDepart/queryDepartStuTreeSync', + params, + }) } // 上传文件 -export const uploadFile = (data:any) => { - return request({ - url:'/sys/common/upload', - method:'POST', - data - }) +export const uploadFile = (data: any) => { + return request({ + url: '/sys/common/upload', + method: 'POST', + data, + }) } // 修改用户信息 -export const editUserInfoApi = (data:any) => { - return request({ - url:'/sys/user/login/setting/userEdit', - method:'POST', - data - }) +export const editUserInfoApi = (data: any) => { + return request({ + url: '/sys/user/login/setting/userEdit', + method: 'POST', + data, + }) +} +// 获取奖项 +export const getAwardslist = (params: any) => { + return request({ + url: '/awardpersion/awardPersion/list', + params, + }) +} +// 上传证书 +export const uploadFileZs = (data: any) => { + return request({ + url: '/sys/common/uploadzs', + method: 'POST', + data, + }) +} +export const saveSz = (data: any) => { + return request({ + url: 'awardpersion/awardPersion/sczs', + method: 'POST', + data, + }) } \ No newline at end of file diff --git a/src/api/user.ts b/src/api/user.ts index 6a653a0..367ed86 100644 --- a/src/api/user.ts +++ b/src/api/user.ts @@ -22,4 +22,12 @@ export const logOut = () => { return request({ url:'/sys/logout' }) +} +// 注册 +export const sturegister = (data:any) => { + return request({ + url:'/sys/user/sturegister', + method:"POST", + data + }) } \ No newline at end of file diff --git a/src/permissions.ts b/src/permissions.ts index cee1648..b1cb509 100644 --- a/src/permissions.ts +++ b/src/permissions.ts @@ -13,7 +13,7 @@ const asyncRouter = (path: string) => { } router.beforeEach(async (to, form, next) => { const useuserStore = userStore() - + document.title = to.meta.title ? '高赛通-' + to.meta.title : '高赛通' if (useuserStore.token) { if (to.path === '/login') { next({ path: '/' }) diff --git a/src/router/module/constRouter/index.ts b/src/router/module/constRouter/index.ts index 5f092e8..96bc5e6 100644 --- a/src/router/module/constRouter/index.ts +++ b/src/router/module/constRouter/index.ts @@ -49,6 +49,16 @@ export const constRouter: any = { // hidden: false, // }, // }, + { + path: '/raceList', + name: 'RaceList', + component: () => import('@/views/raceList/index.vue'), + meta: { + icon: '', + title: '竞赛列表', + hidden: false, + }, + }, { path: '/competition', name: 'Competition', @@ -88,29 +98,16 @@ export const constRouter: any = { title: '竞赛新闻', hidden: false, }, - children: [ - { - path: '/newsList', - name: 'newsList', - component: () => import('@/views/news/components/newsList.vue'), // 新闻列表组件 - meta: { - icon: '', - title: '新闻列表', - hidden: false, - }, - }, - { - // path: '/newsDetail', - path: 'detail/:id', - name: 'newsDetail', - component: () => import('@/views/news/components/newsDetail.vue'), - meta: { - icon: '', - title: '新闻内容详情', - hidden: true, - } - } - ], + }, + { + path: 'detail/:id', + name: 'newsDetail', + component: () => import('@/views/news/components/newsDetail.vue'), + meta: { + icon: '', + title: '新闻内容详情', + hidden: true, + } }, { path: '/user-info', diff --git a/src/utils/requset.ts b/src/utils/requset.ts index 8140ca0..f64c8e3 100644 --- a/src/utils/requset.ts +++ b/src/utils/requset.ts @@ -5,23 +5,29 @@ import pinia from '@/store' import userStore from '@/store/module/user' // 创建axios实例 const server = axios.create({ - baseURL: import.meta.env.VITE_APP_BASE_API, - timeout:30000, + baseURL: import.meta.env.VITE_APP_BASE_API, + timeout: 30000, }) // 创建请求拦截器 + server.interceptors.request.use((config) => { -const useuserStore = userStore(pinia) + const useuserStore = userStore(pinia) - config.headers.Authorization = useuserStore.token - config.headers['x-access-token'] = useuserStore.token - return config - + config.headers.Authorization = useuserStore.token + config.headers['x-access-token'] = useuserStore.token + return config }) // 创建相应拦截器 server.interceptors.response.use((response) => { - return response.data + const useuserStore = userStore(pinia) + + if (response.data.code === 401) { + useuserStore.logout() + return + } + return response.data }) // 暴露axios实例 -export default server \ No newline at end of file +export default server diff --git a/src/views/home/index.vue b/src/views/home/index.vue index e0ec3fa..0842f20 100644 --- a/src/views/home/index.vue +++ b/src/views/home/index.vue @@ -25,22 +25,23 @@
--> +
更多
-
竞赛导航
+
新闻资讯
30+项目登陆后报名
- 全部 + {{ item }}
@@ -75,6 +76,8 @@ import { ElLoading } from 'element-plus' const router = useRouter() const reacProjectList = ref([]) const isLoading = ref(false) + +const News =ref(['全部','通知公告','赛事资讯','活动速递','政策文件']) const getRaceProjectListEvent = async () => { let page = { column: 'createTime', @@ -96,7 +99,7 @@ const getRaceProjectListEvent = async () => { loading.close() } getRaceProjectListEvent() -const active = ref(1) +const active = ref(0) const setImageUrl = (url: string) => { return import.meta.env.VITE_APP_BASE_API + url } @@ -168,6 +171,7 @@ const toDetail = (id: number) => { } } .race-list { +position: relative; width: 100%; display: grid; grid-template-columns: repeat(4, 1fr); @@ -216,6 +220,14 @@ const toDetail = (id: number) => { .item:nth-child(n) { margin-top: 20px; } + .more{ + position: absolute; + right: 20px; + top: -20px; + color: #0bd7c6; + cursor: pointer; + font-size: 14px; + } } .news-list { margin-top: 170px; diff --git a/src/views/login/index.vue b/src/views/login/index.vue index d598bae..9c774f4 100644 --- a/src/views/login/index.vue +++ b/src/views/login/index.vue @@ -1,20 +1,24 @@ @@ -35,7 +43,7 @@ import { getCode } from '@/api/user' import userStore from '@/store/module/user' import { ElMessage } from 'element-plus' import { useRouter } from 'vue-router' - +import RegisTered from './registered.vue' const useUserStore = userStore() const form = ref({ account: '', @@ -52,7 +60,13 @@ getcodeinfo() const Router = useRouter() const submit = async () => { console.log(111, useUserStore) - + if (!form.value.account) { + return ElMessage('账号不能为空') + } else if (!form.value.password) { + return ElMessage('密码不能为空') + } else if (!form.value.captcha) { + return ElMessage('验证码不能为空') + } let data = { captcha: form.value.captcha, checkKey: 1629428467008, @@ -67,10 +81,31 @@ const submit = async () => { } else if (res === 1) { ElMessage('账号或密码错误') getcodeinfo() - }else{ + } else { Router.push('/') } } +onMounted(() => { + window.addEventListener('keydown', keyDown) + +}) +const keyDown = (e: any) => { + //如果是回车则执行登录方法 + if (e.keyCode == 13) { + //需要执行的登录方法 + submit() + } +} + +const status = ref(true) +const registered = () => { + console.log(111); + status.value = false +} +const backLoginEvent = () => { + status.value = true + +} diff --git a/src/views/news/components/newsDetail.vue b/src/views/news/components/newsDetail.vue index beb973a..e567552 100644 --- a/src/views/news/components/newsDetail.vue +++ b/src/views/news/components/newsDetail.vue @@ -24,7 +24,7 @@ const data = ref({}); //通过id获取文章详细信息 queryEssayApi(route.params.id).then(res=>{ data.value = res.result[0] - console.log(data.value,'data') + console.log(`当前id为${route.params.id}新闻详细信息`,data.value) }) // 定义一个计算属性来处理图片路径 @@ -44,6 +44,7 @@ const completeImageUrl = computed(() => { overflow-y: scroll; padding: 0; display: block; + margin-top: 100px; } .container::-webkit-scrollbar { width: 0; diff --git a/src/views/news/components/newsList.vue b/src/views/news/components/newsList.vue deleted file mode 100644 index 3932ccb..0000000 --- a/src/views/news/components/newsList.vue +++ /dev/null @@ -1,164 +0,0 @@ - - - - - \ No newline at end of file diff --git a/src/views/news/index.vue b/src/views/news/index.vue index 89f8e34..f784ae8 100644 --- a/src/views/news/index.vue +++ b/src/views/news/index.vue @@ -1,12 +1,166 @@ \ No newline at end of file diff --git a/src/views/raceInfo/index.vue b/src/views/raceInfo/index.vue index abb919b..2e8253c 100644 --- a/src/views/raceInfo/index.vue +++ b/src/views/raceInfo/index.vue @@ -56,10 +56,10 @@
@@ -106,7 +106,7 @@
附件:
- fhsuihfiaosdufasiu.pdf + {{ raceInfo.compFile }}
@@ -174,6 +174,11 @@ getraceInfoEvent() const goToCompetition = (id:any) => { Router.push({ path: '/competition', query: { id } }) } + +const doLoadFile = (url:any) => { + // console.log( import.meta.env.VITE_APP_BASE_API + "/sys/common/static/" + url) + window.open( import.meta.env.VITE_APP_BASE_API + "/sys/common/static/" + url) +} diff --git a/src/views/userInfo/components/awardeList.vue b/src/views/userInfo/components/awardeList.vue new file mode 100644 index 0000000..6d31e30 --- /dev/null +++ b/src/views/userInfo/components/awardeList.vue @@ -0,0 +1,171 @@ + + + + + diff --git a/src/views/userInfo/index.vue b/src/views/userInfo/index.vue index 01bb835..0df0370 100644 --- a/src/views/userInfo/index.vue +++ b/src/views/userInfo/index.vue @@ -80,9 +80,9 @@
@@ -90,32 +90,35 @@
姓名
-
{{ userInfo.realname }}
+
{{ useUserStore.userInfo.realname}}
姓别
-
{{ userInfo.sex === 1 ? '男' : '女' }}
+
{{ useUserStore.userInfo.sex === 1 ? '男' : '女' }}
+
+
+
生日
+
{{ useUserStore.userInfo.birthday }}
-
学号
-
{{ userInfo.workNo }}
+
{{ useUserStore.userInfo.workNo }}
手机号
-
{{ userInfo.phone }}
+
{{ useUserStore.userInfo.phone }}
-
+
邮箱
-
{{ userInfo.email }}
+
{{ useUserStore.userInfo.email }}
@@ -141,6 +144,7 @@ + - + ({}) console.log(useUserStore.userInfo, 'useUserStore') @@ -214,17 +218,17 @@ const Router = useRouter() const dialogVisible = ref(false) // 修改用户信息 const editUserInfo = () => { - form.name = userInfo.value.realname - form.birthday = userInfo.value.birthday - form.sex = userInfo.value.sex - form.email = userInfo.value.email - // form.facultiesId = userInfo.value.facultiesId - form.phone = userInfo.value.phone + form.name = useUserStore.userInfo.realname + form.birthday = useUserStore.userInfo.birthday + form.sex = useUserStore.userInfo.sex + form.email = useUserStore.userInfo.email + // form.facultiesId = useUserStore.userInfo.facultiesId + form.phone = useUserStore.userInfo.phone dialogVisible.value = true nextTick(() => { fileList.value = [ { - url: setImageUrl(userInfo.value.avatar), + url: setImageUrl(useUserStore.userInfo.avatar), }, ] }) @@ -273,6 +277,8 @@ const submit = async () => { } await editUserInfoApi(data) useUserStore.getUserInfo() + userInfo.value = useUserStore.userInfo + dialogVisible.value = false } onMounted(() => {})