You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
346 lines
8.9 KiB
346 lines
8.9 KiB
<template> |
|
<div class="container"> |
|
<el-card> |
|
<template #header> |
|
<div style="font-size: 16px; font-weight: 600">我的比赛</div> |
|
</template> |
|
<el-table :data="list" v-loading="isLoading" > |
|
<el-table-column |
|
label="年度比赛名称" |
|
prop="compName" |
|
/> |
|
<el-table-column |
|
label="年度比赛项目名称" |
|
prop="annualCompid_dictText" |
|
/> |
|
<el-table-column label="比赛类型" prop="entryFormat" /> |
|
<el-table-column label="报名编号" prop="enrollCode" /> |
|
<el-table-column label="比赛状态" prop="enrollStatic_dictText" /> |
|
<el-table-column label="报名状态"> |
|
<template #default="{ row }"> |
|
{{ formatstatus(row.workStatus) }} |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="作品名称" prop="fileName" /> |
|
<el-table-column label="作品文件" prop="fileName"> |
|
<template #default="{ row }"> |
|
<el-button |
|
link |
|
type="primary" |
|
size="small" |
|
@click="download(row.fileUrl,row.fileName)" |
|
v-if="row.uploadWorkFlag != 'no'" |
|
> |
|
下载文件 |
|
</el-button> |
|
<div v-else>无作品文件</div> |
|
</template> |
|
</el-table-column> |
|
|
|
<el-table-column label="上传作品"> |
|
<template #default="{ row }"> |
|
<el-button |
|
link |
|
:type="row.enrollStatic == '2' ? 'primary': 'warning' " |
|
size="small" |
|
@click="uploadZp(row.annualCompid, row.enrollStatic)" |
|
v-if="row.uploadWorkFlag != 'yes'" |
|
> |
|
{{row.enrollStatic == '2' ? '上传作品' : '未审核'}} |
|
</el-button> |
|
<el-tag v-else>已上传作品</el-tag> |
|
</template> |
|
</el-table-column> |
|
<el-table-column label="操作" prop="fileName"> |
|
<template #default="{ row }"> |
|
<div class="action-buttons"> |
|
<el-button |
|
link |
|
type="primary" |
|
size="small" |
|
@click="saveEvent(row.enrollCode)" |
|
v-if="row.enrollStatic == '0' || row.enrollStatic == '3'" |
|
> |
|
提交 |
|
</el-button> |
|
<el-button |
|
link |
|
type="primary" |
|
size="small" |
|
@click="editEvent(row.id,row.annualCompid,row.enrollCode,row.entryFormat)" |
|
v-if="row.enrollStatic == '0' || row.enrollStatic == '3'" |
|
> |
|
编辑 |
|
</el-button> |
|
|
|
<el-button |
|
link |
|
type="primary" |
|
size="small" |
|
@click="InfoEvent(row.id,row.annualCompid,row.enrollCode,row.entryFormat)" |
|
> |
|
详情 |
|
</el-button> |
|
<el-button |
|
link |
|
type="warning" |
|
size="small" |
|
v-if="row.enrollStatic == '1'" |
|
@click="cancelEvent(row.id)" |
|
> |
|
取消 |
|
</el-button> |
|
</div> |
|
</template> |
|
</el-table-column> |
|
</el-table> |
|
<div class="page"> |
|
<el-pagination |
|
background |
|
layout="prev, pager, next" |
|
@change="headerChange" |
|
:size="page.pageSize" |
|
:total="total" |
|
/> |
|
</div> |
|
</el-card> |
|
</div> |
|
<el-dialog |
|
v-model="dialogVisible" |
|
title="上传作品" |
|
width="500" |
|
:before-close="handleClose" |
|
v-if="dialogVisible" |
|
:close-on-click-modal="false" |
|
> |
|
<el-form label-width="80" style="padding-right: 30px"> |
|
<el-form-item label="作品名称"> |
|
<el-input v-model="raceName" /> |
|
</el-form-item> |
|
<el-form-item label="作品"> |
|
<el-upload |
|
ref="upload" |
|
class="upload-demo" |
|
action="#" |
|
v-model:file-list="fileList" |
|
:limit="1" |
|
:auto-upload="false" |
|
> |
|
<template #trigger> |
|
<el-button type="primary">选择文件</el-button> |
|
</template> |
|
|
|
<template #tip> |
|
<div class="el-upload__tip text-red">作品只允许上传一个</div> |
|
</template> |
|
</el-upload> |
|
</el-form-item> |
|
</el-form> |
|
<template #footer> |
|
<div class="dialog-footer"> |
|
<el-button @click="handleClose">取消</el-button> |
|
<el-button type="primary" @click="submit">确认</el-button> |
|
</div> |
|
</template> |
|
</el-dialog> |
|
</template> |
|
|
|
<script setup lang="ts"> |
|
import { ref } from 'vue' |
|
|
|
import { getStuRaceList, uploadFileZp, sava ,cancelRace} from '@/api/race' |
|
import { ElMessage } from 'element-plus' |
|
import { useRouter } from 'vue-router' |
|
const router = useRouter() |
|
const list = ref<any>([]) |
|
const page = ref<any>({ |
|
pageNo: 1, |
|
pageSize: 10, |
|
}) |
|
const total = ref(0) |
|
const isLoading = ref(false) |
|
|
|
const getList = async () => { |
|
isLoading.value = true |
|
const res: any = await getStuRaceList(page.value) |
|
console.log(res) |
|
list.value = res.result.records |
|
total.value = res.result.total |
|
isLoading.value = false |
|
} |
|
getList() |
|
const fileList = ref<any>([]) |
|
const raceName = ref<any>('') |
|
const dialogVisible = ref(false) |
|
const annualCompid = ref('') |
|
const uploadZp = (id: any, staus: any) => { |
|
if (staus != 2) return ElMessage.warning('审核后方可上传作品') |
|
//console.log(id) |
|
annualCompid.value = id |
|
dialogVisible.value = true |
|
} |
|
const handleClose = () => { |
|
dialogVisible.value = false |
|
fileList.value = [] |
|
raceName.value = '' |
|
annualCompid.value = '' |
|
} |
|
const submit = async () => { |
|
if (!raceName.value) return ElMessage.warning('请输入作品名称') |
|
if (!fileList.value.length) return ElMessage.warning('请上传作品') |
|
console.log(fileList.value[0].raw, raceName, 'fileList.value[0].raw') |
|
const fromData = new FormData() |
|
fromData.append('files', fileList.value[0].raw) |
|
fromData.append('annualCompid', annualCompid.value) |
|
fromData.append('workName', raceName.value) |
|
const res: any = await uploadFileZp(fromData).then((res: any) => { |
|
console.log(res) |
|
if (res.code == 500) return ElMessage.warning(res.message) |
|
ElMessage.success(res.message) |
|
}) |
|
console.log(res) |
|
handleClose() |
|
getList() |
|
} |
|
const headerChange = (pageNumber: any) => { |
|
console.log(pageNumber) |
|
page.value.pageNo = pageNumber |
|
getList() |
|
} |
|
// 下载文件 |
|
const download = async (url:any,name:any) => { |
|
window.open(import.meta.env.VITE_APP_BASE_API + '/sys/common/zuopin/' + url) |
|
const a = document.createElement('a') |
|
a.style.display = 'none' |
|
document.body.appendChild(a) |
|
a.href = import.meta.env.VITE_APP_BASE_API + '/sys/common' + url |
|
a.setAttribute('download', name); |
|
a.click() |
|
document.body.removeChild(a) |
|
|
|
} |
|
|
|
const saveEvent = async (id: any) => { |
|
const res: any = await sava({ applyCode: id, status: 5 }) |
|
ElMessage.success(res.message) |
|
getList() |
|
|
|
} |
|
|
|
const formatstatus = (status: any) => { |
|
if (!status) return '未上传作品' |
|
switch (status) { |
|
case '0': |
|
return '待评分' |
|
break |
|
case '1': |
|
return '已评分' |
|
break |
|
case '2': |
|
return '待驳回' |
|
break |
|
case '3': |
|
return '已驳回' |
|
break |
|
case '4': |
|
return '待提交' |
|
break |
|
case '5': |
|
return '已提交' |
|
break |
|
} |
|
} |
|
|
|
const editEvent = (id: any,annualCompid: any,enrollCode:any,entryFormat:any) => { |
|
if(entryFormat == '团队'){ |
|
router.push({ |
|
path: '/registrationGroup', |
|
query:{ |
|
id, |
|
annualCompid, |
|
enrollCode, |
|
edit: true |
|
} |
|
}) |
|
}else{ |
|
router.push({ |
|
path: 'registrationPersonage', |
|
query:{ |
|
id, |
|
annualCompid, |
|
enrollCode, |
|
edit: true |
|
} |
|
}) |
|
} |
|
console.log(id); |
|
|
|
|
|
} |
|
|
|
const InfoEvent = (id: any,annualCompid: any,enrollCode:any,entryFormat:any) => { |
|
if(entryFormat == '团队'){ |
|
router.push({ |
|
path: '/registrationGroup', |
|
query:{ |
|
id, |
|
annualCompid, |
|
enrollCode, |
|
edit: true, |
|
info: true |
|
} |
|
}) |
|
}else{ |
|
router.push({ |
|
path: 'registrationPersonage', |
|
query:{ |
|
id, |
|
annualCompid, |
|
enrollCode, |
|
edit: true, |
|
info: true |
|
|
|
} |
|
}) |
|
} |
|
// router.push({ |
|
// path: '/registrationGroup', |
|
// query:{ |
|
// id, |
|
// annualCompid, |
|
// enrollCode, |
|
// edit: true, |
|
// info: true |
|
// } |
|
// }) |
|
} |
|
|
|
const cancelEvent = async (id: any) => { |
|
const res: any = await cancelRace({id }) |
|
ElMessage.success(res.message) |
|
getList() |
|
} |
|
</script> |
|
|
|
<style scoped lang="scss"> |
|
.action-buttons { |
|
display: flex; |
|
justify-content: space-between; /* 平均分布间距 */ |
|
align-items: center; |
|
} |
|
.container { |
|
margin-top: 25px; |
|
.page { |
|
display: flex; |
|
margin-top: 20px; |
|
justify-content: center; |
|
} |
|
} |
|
:deep(.el-table__row) { |
|
height: 50px; |
|
} |
|
:deep(.el-button){ |
|
|
|
margin-left: 0px !important; |
|
} |
|
</style>
|
|
|