master
parent
442cecdc4d
commit
f6b37bbe8c
@ -0,0 +1,165 @@
|
|||||||
|
<template>
|
||||||
|
|
||||||
|
<div class="cs">
|
||||||
|
|
||||||
|
<ReadExcel @file-change="excelFileChange">
|
||||||
|
|
||||||
|
<div class="import-button">导入</div>
|
||||||
|
|
||||||
|
</ReadExcel>
|
||||||
|
<div>
|
||||||
|
<div>团队总量:{{teamCount}}</div>
|
||||||
|
<div>队员总量:{{memberCount}}</div>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<el-button @click="startImport" type="primary">开始导入</el-button>
|
||||||
|
</div>
|
||||||
|
<el-table :data="teamList">
|
||||||
|
<el-table-column v-for="(item,$index) in tableHeader" :key="$index" :label="item" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span v-if="$index == 0">{{ scope.row.teamName}}</span>
|
||||||
|
<div v-if="$index == 1">
|
||||||
|
<div v-for="(member,$index2) in scope.row.memberList" :key="$index2">
|
||||||
|
{{member.memberName}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="$index == 2">
|
||||||
|
<div v-for="(member,$index2) in scope.row.memberList" :key="$index2">
|
||||||
|
{{member.studentNo}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div v-if="$index == 3">
|
||||||
|
<div v-for="(member,$index2) in scope.row.memberList" :key="$index2">
|
||||||
|
{{member.className}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<span v-if="$index == 4">
|
||||||
|
{{scope.row.school}}
|
||||||
|
</span>
|
||||||
|
<span v-if="$index == 5">
|
||||||
|
{{scope.row.teacher}}
|
||||||
|
</span>
|
||||||
|
<span v-if="$index == 7">
|
||||||
|
{{scope.row.province}}
|
||||||
|
</span>
|
||||||
|
<span v-if="$index == 8">
|
||||||
|
{{scope.row.level}}
|
||||||
|
</span>
|
||||||
|
<span v-if="$index == 9">
|
||||||
|
{{scope.row.area}}
|
||||||
|
</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</template>
|
||||||
|
<script>
|
||||||
|
import * as competition from '@/api/competition'
|
||||||
|
import * as teamMemberApi from '@/api/teammember'
|
||||||
|
import ReadExcel from './components/teamImport.vue'
|
||||||
|
export default {
|
||||||
|
data(){
|
||||||
|
return {
|
||||||
|
teamInfo:{
|
||||||
|
teamName:'',
|
||||||
|
teacher: '',
|
||||||
|
province: '',
|
||||||
|
level: '',
|
||||||
|
area: '',
|
||||||
|
school: '',
|
||||||
|
memberList:[]
|
||||||
|
},
|
||||||
|
teamList: [],
|
||||||
|
tableHeader: [],
|
||||||
|
fileName: '',
|
||||||
|
teamCount: 0,
|
||||||
|
memberCount: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
components: {
|
||||||
|
|
||||||
|
ReadExcel,
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
|
||||||
|
excelFileChange(data) {
|
||||||
|
let { merges, body, name, header } = data
|
||||||
|
// console.log(merges, body, name, header)
|
||||||
|
this.fileName =name
|
||||||
|
this.tableHeader = header
|
||||||
|
this.dataToObj(body)
|
||||||
|
},
|
||||||
|
startImport(){
|
||||||
|
let item = this.teamList[0]
|
||||||
|
if(!item){
|
||||||
|
alert("导入完成")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
teamMemberApi.importTeamMember({
|
||||||
|
compI: 3,
|
||||||
|
stageId: 1,
|
||||||
|
teamName: item.teamName,
|
||||||
|
province: item.province,
|
||||||
|
level: item.level,
|
||||||
|
school: item.school,
|
||||||
|
area: item.area,
|
||||||
|
teacher: item.teacher,
|
||||||
|
memberList: item.memberList
|
||||||
|
}).then(res=>{
|
||||||
|
if(res.code == 200){
|
||||||
|
this.teamList.splice(0,1)
|
||||||
|
this.startImport()
|
||||||
|
}else{
|
||||||
|
alert(res.msg)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
dataToObj(data){
|
||||||
|
let rs = []
|
||||||
|
for(let i = 1;i<data.length;i++){
|
||||||
|
let teamInfo = null;
|
||||||
|
let item = data[i]
|
||||||
|
let teamName = item[0]
|
||||||
|
let member = item[1]
|
||||||
|
let studentNo = item[2]
|
||||||
|
let className = item[3]
|
||||||
|
let school = item[4]
|
||||||
|
let teacher1 = item[5]
|
||||||
|
if(!teacher1){
|
||||||
|
teacher1 = ''
|
||||||
|
}
|
||||||
|
let teacher2 = item[6]
|
||||||
|
let province = item[7]
|
||||||
|
let level = item[8]
|
||||||
|
let area = item[9]
|
||||||
|
if(!teamName){
|
||||||
|
teamInfo = rs[rs.length-1]
|
||||||
|
}else{
|
||||||
|
teamInfo = JSON.parse(JSON.stringify(this.teamInfo))
|
||||||
|
teamInfo.teamName = teamName
|
||||||
|
teamInfo.teacher = !!teacher2?teacher1+","+teacher2:teacher1
|
||||||
|
teamInfo.province = province
|
||||||
|
teamInfo.level = level
|
||||||
|
teamInfo.area = area
|
||||||
|
teamInfo.school = school
|
||||||
|
rs.push(teamInfo)
|
||||||
|
}
|
||||||
|
teamInfo.memberList.push({
|
||||||
|
memberName: member,
|
||||||
|
studentNo: studentNo,
|
||||||
|
className: className
|
||||||
|
})
|
||||||
|
this.memberCount +=1
|
||||||
|
}
|
||||||
|
// console.log(rs)
|
||||||
|
this.teamList = rs
|
||||||
|
this.teamCount = rs.length
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
@ -0,0 +1,139 @@
|
|||||||
|
<template>
|
||||||
|
<div class="app-container">
|
||||||
|
<div class="tz-line">
|
||||||
|
<el-date-picker v-model="listQuery.shortDate" format="yyyy-MM-dd" value-format="yyyy-MM-dd" />
|
||||||
|
<el-button type="primary" @click="fetchData" icon="el-icon-search">查询</el-button>
|
||||||
|
<el-button type="primary" @click="exprot" icon="el-icon-searh">导出</el-button>
|
||||||
|
</div>
|
||||||
|
<el-table
|
||||||
|
v-loading="listLoading"
|
||||||
|
:data="list"
|
||||||
|
element-loading-text="Loading"
|
||||||
|
border
|
||||||
|
fit
|
||||||
|
highlight-current-row
|
||||||
|
>
|
||||||
|
<el-table-column label="学号" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
{{ scope.row.studentNo }}
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="姓名" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.name }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="ip" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.ip }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="学校" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ scope.row.school }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="更新时间" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<span>{{ new Date(scope.row.updateTime).Format('yyyy-MM-dd hh:mm:ss') }}</span>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
<el-pagination
|
||||||
|
:current-page="listQuery.pageNo"
|
||||||
|
:page-sizes="[10,15,20]"
|
||||||
|
:page-size="listQuery.pageSize"
|
||||||
|
layout="total,prev,pager,next,jumper,sizes"
|
||||||
|
:total="total"
|
||||||
|
@size-change="fetchData"
|
||||||
|
@current-change="fetchData"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import * as competition from '@/api/competition'
|
||||||
|
export default {
|
||||||
|
filters: {
|
||||||
|
statusFilter(status) {
|
||||||
|
const statusMap = {
|
||||||
|
published: 'success',
|
||||||
|
draft: 'info',
|
||||||
|
deleted: 'danger'
|
||||||
|
}
|
||||||
|
return statusMap[status]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
list: null,
|
||||||
|
listLoading: true,
|
||||||
|
listQuery: {
|
||||||
|
pageNo: 0,
|
||||||
|
pageSize: 20,
|
||||||
|
shortDate: ''
|
||||||
|
},
|
||||||
|
total: 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.fetchData()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
fetchData() {
|
||||||
|
this.listLoading = true
|
||||||
|
if(this.listQuery.shortDate.length==0){
|
||||||
|
this.listQuery.shortDate = new Date().Format("yyyy-MM-dd")
|
||||||
|
}
|
||||||
|
competition.getMemberLogList(this.listQuery).then(response => {
|
||||||
|
this.list = response.data.list
|
||||||
|
this.total = response.data.total
|
||||||
|
this.listLoading = false
|
||||||
|
})
|
||||||
|
},
|
||||||
|
formatJson(filterVal,jsonData){
|
||||||
|
return jsonData.map(v => filterVal.map(j => {
|
||||||
|
if(j=='updateTime'){
|
||||||
|
return new Date(v[j]).Format('yyyy-MM-dd hh:mm:ss')
|
||||||
|
}
|
||||||
|
return v[j]
|
||||||
|
}))
|
||||||
|
},
|
||||||
|
exprot(){
|
||||||
|
if(this.listQuery.shortDate.length==0){
|
||||||
|
this.listQuery.shortDate = new Date().Format("yyyy-MM-dd")
|
||||||
|
}
|
||||||
|
competition.getMemberLogListAll(this.listQuery).then(res => {
|
||||||
|
// this.downloadLoading = true
|
||||||
|
import('@/vendor/Export2Excel').then(excel => {
|
||||||
|
const tHeader = [ '学号','姓名','ip','学校','时间']
|
||||||
|
const filterVal = ['studentNo','name','ip','school','updateTime']
|
||||||
|
const list = res.data.list
|
||||||
|
const data = this.formatJson(filterVal, list)
|
||||||
|
console.log(data)
|
||||||
|
excel.export_json_to_excel({
|
||||||
|
header: tHeader,
|
||||||
|
data,
|
||||||
|
filename: 'member-log',
|
||||||
|
autoWidth: true,
|
||||||
|
bookType: 'xlsx'
|
||||||
|
})
|
||||||
|
// this.downloadLoading = false
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<style scoped>
|
||||||
|
.tz-line{
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
}
|
||||||
|
.tz-line button{
|
||||||
|
margin-left: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
Loading…
Reference in New Issue