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.

166 lines
4.4 KiB

<template>
<el-card style="margin-top: 0.1302rem">
<template #header>
<div style="font-size: 16px; font-weight: 600">我的奖项</div>
</template>
<el-table :data="tableData" border style="width: 100%">
<el-table-column
align="center"
prop="annualid_dictText"
label="年度"
width="70"
/>
<el-table-column
align="center"
prop="annalComp_dictText"
label="年度比赛"
/>
<el-table-column
align="center"
prop="annualCompP_dictText"
label="年度比赛项目"
/>
<el-table-column align="center" prop="enrollCode" label="报名编号" />
<el-table-column
align="center"
prop="awardname"
label="奖项名称"
width="90"
/>
<el-table-column align="center" prop="studentcode" label="学生学号" />
<el-table-column
align="center"
prop="studentname"
label="学生姓名"
width="100"
/>
<el-table-column align="center" prop="sczs" label="证书">
<template #default="{ row }">
<el-image
:src="setImageUrl(row.sczs)"
style="width: 0.2604rem; height: 0.2604rem"
:preview-src-list="[setImageUrl(row.sczs)]"
:z-index="100"
></el-image>
<!-- <img :src="setImageUrl(row.sczs)" alt=""> -->
</template>
</el-table-column>
<el-table-column
align="center"
prop="tj_dictText"
label="是否推荐"
width="90"
/>
<el-table-column align="center" label="操作">
<template #default="{ row }">
8 months ago
<el-button link type="primary" size="small" @click="uploadZs(row.id)">
上传证书
</el-button>
</template>
</el-table-column>
</el-table>
</el-card>
<el-dialog
v-model="dialogVisible"
v-if="dialogVisible"
title="上传证书"
width="25%"
:before-close="handleClose"
>
<el-form label-width="80" style="padding-right: 30px">
<el-form-item label="证书">
<el-upload
v-model:file-list="fileList"
action="#"
list-type="picture-card"
:auto-upload="false"
>
<el-icon><Plus /></el-icon>
</el-upload>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="submit">确认</el-button>
</div>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import { onMounted, reactive, ref, toRefs, watch } from 'vue'
8 months ago
import { getAwardslist, uploadFileZs, saveSz } from '@/api/race'
const dialogVisible = ref(false)
const tableData = ref<any>([])
const getAwardListApi = async () => {
const data = {
3 months ago
acpid: '',
column: 'createTime',
order: 'desc',
pageNo: 1,
pageSize: 10,
}
const res: any = await getAwardslist(data)
tableData.value = res.result.records
3 months ago
// console.log(tableData.value, 'tableData.value')
}
getAwardListApi()
const setImageUrl = (url: string) => {
return import.meta.env.VITE_APP_BASE_API + '/sys/common/staticzs/' + url
}
const fileList = ref<any>([])
const zsUrl = ref('')
const zsId = ref(0)
8 months ago
const uploadZs = (id: any) => {
zsId.value = id
dialogVisible.value = true
}
const uploadFileEvent = async () => {
const fromData = new FormData()
fromData.append('file', fileList.value[0].raw)
const res: any = await uploadFileZs(fromData)
zsUrl.value = res.message
}
const submit = async () => {
8 months ago
await uploadFileEvent()
let data = {
id: zsId.value,
sczs: zsUrl.value,
}
await saveSz(data)
getAwardListApi()
dialogVisible.value = false
fileList.value = []
}
const handleClose = () => {
dialogVisible.value = false
fileList.value = []
}
watch(
() => fileList.value,
(newVal, oldVal) => {
console.log(newVal, oldVal)
if (newVal.length === 1) {
;(document.querySelector('.el-upload') as HTMLElement).style.display =
'none'
} else {
setTimeout(() => {
;(document.querySelector('.el-upload') as HTMLElement).style.display =
'flex'
}, 0)
}
},
)
</script>
<style lang="scss" scoped>
:deep(.el-image-viewer__close) {
top: 160px;
}
:deep(.el-table__cell) {
position: static !important; // 解决el-image 和 el-table冲突层级冲突问题
}
</style>