315 lines
14 KiB
HTML
315 lines
14 KiB
HTML
|
<link rel="stylesheet" type="text/css" href="__CDN__/assets/css/door/css/flyer.css">
|
|||
|
<link rel="stylesheet" type="text/css" href="__CDN__/assets/css/door/css/myMarch.css?v={$site.version}">
|
|||
|
<div class="fly-right">
|
|||
|
<div class="fr-wrap">
|
|||
|
<p class="my-event">我的赛事 | My Events</p>
|
|||
|
<div class="myMarch-name">
|
|||
|
<p>
|
|||
|
<span>赛事报名</span>
|
|||
|
<span>Apply</span>
|
|||
|
</p>
|
|||
|
<a href="tel:13136225305">加急审核请致电 / Please call for urgent review:0086+13136225305</a>
|
|||
|
</div>
|
|||
|
<div class="marchList">
|
|||
|
{empty name="matchlist"}
|
|||
|
<div class="onebox">
|
|||
|
<div class="onematch">您还未参与任何赛事 / You have not entered any races</div>
|
|||
|
<!--<div class="start">-->
|
|||
|
<!-- <a href="/">去参加赛事 Participate In Events</a>-->
|
|||
|
<!--</div>-->
|
|||
|
</div>
|
|||
|
{else /}
|
|||
|
<ul>
|
|||
|
<div>
|
|||
|
<p>赛事</p>
|
|||
|
<p>申请时间</p>
|
|||
|
<p>参与资格</p>
|
|||
|
<p>操作</p>
|
|||
|
</div>
|
|||
|
{foreach $matchlist as $key=>$vo }
|
|||
|
<li href="{:url('match/my_match_show', array('id' => $vo.id))}">
|
|||
|
<p class="myname">{$vo.match.title ?? '已过期赛事'}</p>
|
|||
|
<p>{$vo.created_at ?? '未知时间'}</p>
|
|||
|
<p
|
|||
|
class="{if $vo.status == 1} auditing {elseif $vo.status == 2} audited {else /} noaudit {/if}">
|
|||
|
{if $vo.status == 1} 审核中 | In Review {elseif $vo.status == 2} 审核通过 | Pass {else /} 审核不通过
|
|||
|
| Fail {/if}
|
|||
|
</p>
|
|||
|
<p class="btnbox"><button class="coursebtn"
|
|||
|
onclick="getcourse('{$vo.player_id}','{$vo.match_id}')">生成成绩证书</button>
|
|||
|
</p>
|
|||
|
</li>
|
|||
|
{/foreach}
|
|||
|
</ul>
|
|||
|
{/empty}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="bounced">
|
|||
|
<p class="bounced-img">
|
|||
|
<img id="bounced-img" src="__CDN__/assets/css/door/img/door/match.png">
|
|||
|
</p>
|
|||
|
<div class="bounced-name">
|
|||
|
<p id="bounced_title_zh"></p>
|
|||
|
<p id="bounced_title_en"></p>
|
|||
|
</div>
|
|||
|
<ul>
|
|||
|
<li>
|
|||
|
<p>申请时间</p>
|
|||
|
<p id="bounced_create_at"></p>
|
|||
|
</li>
|
|||
|
<li style="display:none">
|
|||
|
<p>支付费用</p>
|
|||
|
<p id="bounced_cost"></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>参与资格</p>
|
|||
|
<!-- 三种状态 -->
|
|||
|
<p id="bounced_check_status"></p>
|
|||
|
</li>
|
|||
|
<li>
|
|||
|
<p>审核说明</p>
|
|||
|
<p id="bounced_check_content"></p>
|
|||
|
</li>
|
|||
|
</ul>
|
|||
|
</div>
|
|||
|
<div class="coursepop"></div>
|
|||
|
<script src="__CDN__/assets/css/door/js/jquery.form.min.js"></script>
|
|||
|
<script src="__CDN__/assets/css/door/layui/layui.js"></script>
|
|||
|
<script src="/assets/addons/cms/js/html2canvas.min.js"></script>
|
|||
|
<script>
|
|||
|
layui.use(['layer'], function () {
|
|||
|
var check_status = JSON.parse('{"1":"\u5ba1\u6838\u4e2d","2":"\u5ba1\u6838\u901a\u8fc7","-1":"\u5ba1\u6838\u4e0d\u901a\u8fc7"}');
|
|||
|
var check_status_en = JSON.parse('{"1":"In Review","2":"Pass","-1":"Fail"}');
|
|||
|
$('.marchList>ul li p:not(.btnbox)').click(function () {
|
|||
|
$.post(
|
|||
|
$(this).parent('li').attr("href"),
|
|||
|
{ _token: '{{ csrf_token() }}' },
|
|||
|
function (data) {
|
|||
|
if (data) {
|
|||
|
layer.open({
|
|||
|
title: false,
|
|||
|
btn: '关闭<br>Close',
|
|||
|
yes: function (index, layero) {
|
|||
|
|
|||
|
layer.close(index);
|
|||
|
},
|
|||
|
type: 1,
|
|||
|
skin: 'bounbox', //样式类名
|
|||
|
closeBtn: 0, //不显示关闭按钮
|
|||
|
anim: 2,
|
|||
|
shadeClose: false, //开启遮罩关闭
|
|||
|
content: $('.bounced'),
|
|||
|
scrollbar: false
|
|||
|
});
|
|||
|
|
|||
|
var match = data.match;
|
|||
|
if (match.logo) {
|
|||
|
$("#bounced-img").attr("src", match.logo);
|
|||
|
}
|
|||
|
$("#bounced_title_zh").html(match.title);
|
|||
|
if (match.name_en) {
|
|||
|
$("#bounced_title_en").html(match.name_en);
|
|||
|
}
|
|||
|
$("#bounced_create_at").html(data.created_at);
|
|||
|
$("#bounced_check_status").removeAttr("class");
|
|||
|
$("#bounced_check_status").html(check_status[data.status] + " | " + check_status_en[data.status]);
|
|||
|
if (data.status == 1) {
|
|||
|
$("#bounced_check_status").addClass("auditing")
|
|||
|
} else if (data.status == 2) {
|
|||
|
$("#bounced_check_status").addClass("audited")
|
|||
|
} else {
|
|||
|
$("#bounced_check_status").addClass("noaudit")
|
|||
|
}
|
|||
|
$("#bounced_check_content").html(data.mark);
|
|||
|
$("#bounced_cost").html("0.00 元");
|
|||
|
}
|
|||
|
});
|
|||
|
|
|||
|
});
|
|||
|
});
|
|||
|
|
|||
|
// 生成成绩证书
|
|||
|
async function getcourse(player_id, match_id) {
|
|||
|
const match_type=await $.get('/index/league/judge_league?match_id='+match_id)
|
|||
|
let url=''
|
|||
|
if(match_type=='league'){
|
|||
|
url='/index/league/get_cert'
|
|||
|
}else if(match_type=='saishi'){
|
|||
|
url='/index/ranking/getCertificate'
|
|||
|
}
|
|||
|
$.ajax({
|
|||
|
url,
|
|||
|
type: 'post',
|
|||
|
data: { match_id, player_id },
|
|||
|
dataType: 'json',
|
|||
|
success: (res) => {
|
|||
|
if(res.code){
|
|||
|
coursedata(res.data,match_type)
|
|||
|
}else{
|
|||
|
layer.msg('未查询到成绩!');
|
|||
|
}
|
|||
|
},
|
|||
|
error: (err) => {
|
|||
|
layer.msg('未查询到成绩!');
|
|||
|
}
|
|||
|
})
|
|||
|
}
|
|||
|
function coursedata(data,match_type) {
|
|||
|
let vhtml=''
|
|||
|
switch(match_type){
|
|||
|
case 'saishi':
|
|||
|
let coursearr = [];
|
|||
|
let html = '';
|
|||
|
if (data.thirty_two) {
|
|||
|
coursearr.push(['排位赛', data.thirty_two.times, data.thirty_two.fly_num])
|
|||
|
}
|
|||
|
if (data.sixteen) {
|
|||
|
coursearr.push(['32进16', data.sixteen.times, data.sixteen.fly_num])
|
|||
|
}
|
|||
|
if (data.eight) {
|
|||
|
coursearr.push(['16进8', data.eight.times, data.eight.fly_num])
|
|||
|
}
|
|||
|
if (data.four) {
|
|||
|
coursearr.push(['8进4', data.four.times, data.four.fly_num])
|
|||
|
}
|
|||
|
coursearr.forEach(item => {
|
|||
|
html += `
|
|||
|
<div class="item">
|
|||
|
<p>${item[0]}</p>
|
|||
|
<p>${item[1]} ${item[2] == 'DNF' ? "" : "(" + item[2] + "圈)"}</p>
|
|||
|
</div>
|
|||
|
`
|
|||
|
})
|
|||
|
if (data.finals) {
|
|||
|
html += `
|
|||
|
<div class="item">
|
|||
|
<p>决赛</p>
|
|||
|
<p>总积分 (${data.finals.sum_integral}分)</p>
|
|||
|
</div>
|
|||
|
`
|
|||
|
}
|
|||
|
vhtml=`
|
|||
|
<img src="${data.endtime.course_poster}" width="350" height="600" style="position:absolute;z-index:-1;" />
|
|||
|
<div class="mingci">
|
|||
|
<p>荣获本次赛事第<span class="num">${data.bast.sort}</span>名</p>
|
|||
|
</div>
|
|||
|
<div class="infobox">
|
|||
|
<div class="text">
|
|||
|
<img src="${data.player_info.player_pic}" height="70" />
|
|||
|
<p>
|
|||
|
<span>姓名:</span>
|
|||
|
<span>${data.player_info.name}</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>编号:</span>
|
|||
|
<span>${data.player_info.player_id}</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>性别:</span>
|
|||
|
<span>${data.player_info.gender}</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>年龄:</span>
|
|||
|
<span>${data.player_info.age}</span>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
<div class="course">
|
|||
|
<div class="title">
|
|||
|
<p>所属赛程</p>
|
|||
|
<p>最优成绩</p>
|
|||
|
</div>
|
|||
|
<div>
|
|||
|
${html}
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="qrcode" style="display:inline-block;position:relative;left:44px;">
|
|||
|
<img width="60" src="https://www.fpvone.cn/qrcode/build?text=https://www.fpvone.cn/p/zhengshurenzheng?number=${data.certificate_number.certificate_number?data.certificate_number.certificate_number:data.certificate_number}" />
|
|||
|
</div>
|
|||
|
`
|
|||
|
case 'league':
|
|||
|
vhtml=`
|
|||
|
<img src="${data.endtime.course_poster}" width="350" height="600" style="position:absolute;z-index:-1;" />
|
|||
|
<div class="contbox">
|
|||
|
<div class="info">
|
|||
|
<div class="pic" style="margin-right:10px;"><img src="${data.player.player_pic}" height="70"></div>
|
|||
|
<div class="text">
|
|||
|
<p>
|
|||
|
<span>姓名:</span>
|
|||
|
<span>${data.player.real_name}</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>编号:</span>
|
|||
|
<span>${data.player.member_number}</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>性别:</span>
|
|||
|
<span>${data.player.gender}</span>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div class="pm">
|
|||
|
<p>
|
|||
|
<span>所属队伍:</span>
|
|||
|
<span>${data.club.name_short}</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>参赛名次:</span>
|
|||
|
<span>第${data.player.number}名</span>
|
|||
|
</p>
|
|||
|
<p>
|
|||
|
<span>本站积分:</span>
|
|||
|
<span>${data.player.grade}</span>
|
|||
|
</p>
|
|||
|
</div>
|
|||
|
</div>
|
|||
|
<div id="qrcode" class="code" style="display:inline-block;position:relative;left:44px;">
|
|||
|
<img width="60" src="https://www.fpvone.cn/qrcode/build?text=https://www.fpvone.cn/p/zhengshurenzheng?number=${data.certificate_number.certificate_number}" />
|
|||
|
</div>
|
|||
|
`
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
let nowtimestamp = parseInt(new Date().getTime() / 1000);
|
|||
|
let ezuhe = data.endtime.etime + ' ' + data.endtime.match_end_time;
|
|||
|
let etimestamp = parseInt(new Date(ezuhe.replace(/-/g, "/")).getTime() / 1000);
|
|||
|
if (data.endtime.is_open_course == 1) {
|
|||
|
layui.layer.msg(`成绩证书已关闭!`);
|
|||
|
} else {
|
|||
|
if (nowtimestamp > etimestamp) {
|
|||
|
let loadicon = layui.layer.load(0, { shade: [0.15, '#ccc'] });
|
|||
|
$('.coursepop').html(vhtml)
|
|||
|
let node = $(".coursepop")[0];
|
|||
|
setTimeout(() => {
|
|||
|
layer.close(loadicon);
|
|||
|
html2canvas(node, {
|
|||
|
useCORS: true,
|
|||
|
allowTaint: true,
|
|||
|
taintTest: false,
|
|||
|
width: node.scrollWidth,
|
|||
|
height: node.scrollHeight,
|
|||
|
scale: window.devicePixelRatio
|
|||
|
}).then((canvas) => {
|
|||
|
let hcurl = canvas.toDataURL('image/png')
|
|||
|
layui.layer.open({
|
|||
|
type: 1,
|
|||
|
title: false, // 不显示标题栏
|
|||
|
closeBtn: 0,
|
|||
|
area: ['350px', '600px'],
|
|||
|
shadeClose: true, // 点击遮罩关闭层
|
|||
|
content: `
|
|||
|
<img width="100%" src="${hcurl}" />
|
|||
|
`
|
|||
|
});
|
|||
|
})
|
|||
|
.catch((err) => {
|
|||
|
console.log('err', err)
|
|||
|
})
|
|||
|
}, 500);
|
|||
|
} else {
|
|||
|
layui.layer.msg(`${ezuhe}后可生成成绩证书!`);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
</script>
|