d793ca6b by 杨炀

no message

1 parent ce2e4083
......@@ -245,14 +245,17 @@
</div>
</el-col>
<el-col :lg="24">
<el-button round class="mt20 btn-lineG" size="large" v-if="form.viewStatus=='1'||form.viewStatus=='5'" type="primary" @click="exportPdf">
<div class="text-center">
<el-button round class="mt20 btn-lineG" size="large" v-if="(form.viewStatus=='1'||form.viewStatus=='5')&&type == 'hotel'" type="primary" @click="exportPdf">
<el-icon><Upload /></el-icon>
{{ language==0?'导出酒店预订单':'Export PDF' }}
</el-button>
<el-button round class="mt20 btn-lineG" size="large" v-if="form.viewStatus=='1'||form.viewStatus=='5'" type="primary"
@click="exportPdf">
{{ language==0?'下载收据':'Upload Invoice' }}
<el-button round class="mt20 btn-lineG" size="large" v-if="(form.viewStatus=='1'||form.viewStatus=='5')&&(type=='makeUp'||type=='hotel')" type="primary"
@click="downInvoice">
<el-icon><Download /></el-icon>
{{ language==0?'下载收据':'DownLoad Invoice' }}
</el-button>
</div>
</el-col>
</el-row>
</div>
......@@ -374,6 +377,24 @@
</el-result>
</div>
<Dialog ref="DialogRef" />
<el-dialog :title="language==0?'开收据':'Issue a receipt'" v-model="showSJDialog" width="460px"
:close-on-click-modal="false" :close-on-press-escape="false">
<div class="flex">
<el-form-item :label="language==0?'开票人':'Name'">
<div class="flex">
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"></el-input>
<el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button>
</div>
</el-form-item>
</div>
<div class="tip mt20" v-if="remark">
<label>{{ language == 0 ? '开电子收据须知' : 'Receipt notice' }}:</label>
<div class="pd10">
{{ remark }}
</div>
</div>
</el-dialog>
</div>
</template>
......@@ -400,10 +421,10 @@ const groupId = ref()
import useUserStore from "@/store/modules/user";
import FileUpload from "@/components/FileUpload";
import {useStorage} from "@vueuse/core/index";
import {ElMessage} from "element-plus";
import {ElMessage, ElMessageBox} from "element-plus";
import {
cancelOrder,
cancelOrder2,
cancelOrder2, getBaseInfoByActiveId,
getCarBilldetailbyId,
getFoodBilldetailbyId,
getMealOrderInfoByLogex, getPhotoOrderInfo, getPhotoOrderInfoByLogex
......@@ -420,6 +441,10 @@ const formInfo=ref({})
const type = ref('')
const errorBox = ref(false)
const hideconfirmbtn = ref(false)
const remark = ref('')
const showSJDialog = ref(false)
const loading = ref(false)
const lpName = ref('')
const user = useUserStore().user
if (useUserStore().user) {
......@@ -453,7 +478,9 @@ onMounted(() => {
break
}
}
if(route.query.matchId){
matchId.value = route.query.matchId
}
getData()
})
......@@ -583,6 +610,7 @@ function MakeUpOrder(){
return booking.getMealOrderInfo({orderId: orderId.value}).then(res => {
form.value=res.data
totalFee.value=language.value==0?form.value.total:form.value.totalEn
matchId.value = form.value.activeId
MakeUpIno()
console.log(res)
}).catch(err => {
......@@ -590,7 +618,6 @@ function MakeUpOrder(){
errorBox.value = true
})
}
function MakeUpIno(){
booking.getMealOrderInfoByLogex({asmId: form.value.asmId}).then(res=>{
formInfo.value=res.data
......@@ -670,6 +697,48 @@ function handleView(){
proxy.$refs['DialogRef'].open(language.value==0? form.value.details:form.value.detailsEn)
}
function downInvoice() {
getremark()
if (form.value.receiptFlag == '0') {
showSJDialog.value = true
} else {
showSJ()
}
}
function getremark(){
getBaseInfoByActiveId(matchId.value).then(res => {
if (res.data) {
remark.value = res.data.remarks
}
})
}
function submitSJ() {
loading.value = true
ElMessageBox.confirm(language.value == 0 ? '提交后无法修改开票人,确认提交吗?' : 'Confirm to submit ?', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
showSJ()
})
}
const showSJ = () => {
// 查看电子收据预览信息
var obj = {
orderId: orderId.value,
type: 1
}
if (form.value.receiptFlag == '0') {
obj.receiptInfo = lpName.value
}
// 报名
proxy.download(`/ota/norder/getReceipt/${obj.orderId}`, {
...obj
}, `Receipt_${new Date().getTime()}.pdf`)
showSJDialog.value = false
getData()
}
</script>
<style scoped lang="scss">
......
......@@ -152,7 +152,8 @@ function goDetail(b) {
name: 'bookingPay',
query: {
orderId: b.id,
orderType: b.orderType
orderType: b.orderType,
activeId:b.activeId
}
})
}
......
<template>
<el-dialog
v-model="show" :close-on-click-modal="false" :title="language==0?'背号查询':'Back Number'" append-to-body
v-model="show" :close-on-click-modal="false" :title="language==0?'背号查询':'Competition Number'" append-to-body
center class="pcloginpop"
close-icon="CircleClose" destroy-on-close
width="460px"
......@@ -8,8 +8,8 @@
<div style="min-height: 300px">
<div v-if="!type||type==''">
<div @click="type='0'" class="rItem">个人查询</div>
<div @click="type='1'" class="rItem">团队查询</div>
<div @click="type='0'" class="rItem">{{ language == 0 ? '个人查询':'Personal Query' }}</div>
<div @click="type='1'" class="rItem">{{ language == 0 ? '团队查询':'Team Query' }}</div>
</div>
<div v-if="type=='0'">
......@@ -59,7 +59,7 @@
{{language == 0 ? '查询' : 'Search' }}
</el-button>
</div>
<span class="tip">*模糊查询</span>
<span class="tip">*{{ language == 0 ?'模糊查询':'Fuzzy query' }}</span>
<div v-if="teamlist.length>0" class="temell mt20">
<el-collapse v-model="activeNames" accordion>
......
......@@ -313,7 +313,7 @@
</div>
<div>
<a target="_blank" class="text-primary"
href="https://wdsfwuxicenter.com/stage-api/fs/file/Schedule-WDSF_ASIAN_DANCESPORT_FESTIVAL_2024.WUXI.pdf">
href="https://wdsfwuxicenter.com/stage-api/fs/file/WUXI_COMPETITION_TIMETABLE.pdf">
<el-icon style="position: relative;top: 2px">
<download/>
</el-icon>
......
......@@ -142,7 +142,7 @@
<!-- <a class="zn-btn ml20 btn-q forPc" v-show="matchData?.id=='1778253367748993026'" style="font-size: 15px;margin-right: 20px" @click="popMaster">-->
<!-- Junior &Youth Camp REGISTER<el-icon><Edit /></el-icon>-->
<!-- </a>-->
<a class="zn-btn ml20 btn-q" v-show="matchData?.id=='1778253367748993026'" @click="backNumberSearch">Back Number</a>
<a class="zn-btn ml20 btn-q" v-show="matchData?.id=='1778253367748993026'" @click="backNumberSearch">Competition Number</a>
<!-- <div>-->
<!-- <a class=" ding" style="font-size: 15px;margin-top: 10px" @click="handlePickup">Pick-up/drop-off service-->
<!-- </a>-->
......
......@@ -11,7 +11,7 @@
<coach-info-row v-if="groupId" :group-id="groupId" :match-id="matchId"/>
<div class="pd20" v-if="user.utype=='1'&&myMemberTable.length>0">
<div class="leftboderTT">{{ language==0?'随行人员清单':'List of accompanying personnel' }}
<div class="leftboderTT">{{ language == 0 ? '随行人员清单' : 'List of accompanying personnel' }}
</div>
<div>
<el-table class="mt20" :data="myMemberTable" border>
......@@ -19,8 +19,8 @@
<el-table-column :label="language=='1'?'Surname':'姓氏'" prop="xing" min-width="100"/>
<el-table-column :label="language=='0'?'名':'Name'" prop="ming" min-width="100"/>
<el-table-column :label="language==0?'国家/地区':'Nationality'" prop="countryName" min-width="100"/>
<!-- <el-table-column :label="language=='1'?'Passport number':'护照号'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column :label="language=='1'?'Birthday':'生日'" prop="birth"/>-->
<!-- <el-table-column :label="language=='1'?'Passport number':'护照号'" prop="idcCode" min-width="120"/>-->
<!-- <el-table-column :label="language=='1'?'Birthday':'生日'" prop="birth"/>-->
<el-table-column :label="language=='1'?'Gender':'性别'" prop="sexStr"/>
<el-table-column :label="language=='1'?'Role':'角色'" min-width="160">
<template #default="scope">
......@@ -63,28 +63,45 @@
</div>
<el-row class="priceBar">
<el-col :lg="12" :xs="24" class="pl-15">
<el-link class="mr10" type="primary" @click="exportSignList(1)"><el-icon><Upload /></el-icon>
{{ language==0?'导出参赛人员清单':'Export Participant List' }}</el-link>
<el-link class="mr10" type="primary" @click="exportSignList(2)"><el-icon><Upload /></el-icon>
{{ language==0?'导出设项报名清单':'Export LIST OF REGISTERED COMPETITIONS' }}</el-link>
<el-link class="mr10" type="primary" @click="exportSignList(1)">
<el-icon>
<Upload/>
</el-icon>
{{ language == 0 ? '导出参赛人员清单' : 'Export Participant List' }}
</el-link>
<el-link class="mr10" type="primary" @click="exportSignList(2)">
<el-icon>
<Upload/>
</el-icon>
{{ language == 0 ? '导出设项报名清单' : 'Export LIST OF REGISTERED COMPETITIONS' }}
</el-link>
<el-link type="primary" @click="exportPdf"><el-icon><Upload /></el-icon>
{{ language==0?'导出pdf':'Export PDF' }}
<el-link type="primary" @click="exportPdf">
<el-icon>
<Upload/>
</el-icon>
{{ language == 0 ? '导出pdf' : 'Export PDF' }}
</el-link>
</el-col>
<el-col :lg="12" :xs="24">
<div class="flex" v-if="Number(form.totalFee)>0">
<div class="item" v-if="signInfoList?.length>0"><label>{{ language==0?'参赛服务费':'REGISTRATION FEE' }}:</label><span>{{ language==0?'¥':'€' }}{{serviceFeeTotal}}</span></div>
<div class="item" v-if="zuTableList?.length>0"><label>{{ language==0?'保险费':'INSURANCE' }}:</label><span>{{ language==0?'¥':'€' }}{{insuranceFeeTotal}}</span></div>
<div class="item"><label>{{ language==0?'费用总计':'Total Cost' }}:</label><span class="size26">{{ language==0?'¥':'€' }}{{form.totalFee}}</span></div>
<div class="item" v-if="signInfoList?.length>0"><label>{{
language == 0 ? '参赛服务费' : 'REGISTRATION FEE'
}}:</label><span>{{ language == 0 ? '¥' : '€' }}{{ serviceFeeTotal }}</span></div>
<div class="item" v-if="zuTableList?.length>0"><label>{{
language == 0 ? '保险费' : 'INSURANCE'
}}:</label><span>{{ language == 0 ? '¥' : '€' }}{{ insuranceFeeTotal }}</span></div>
<div class="item"><label>{{ language == 0 ? '费用总计' : 'Total Cost' }}:</label><span
class="size26">{{ language == 0 ? '¥' : '€' }}{{ form.totalFee }}</span></div>
</div>
</el-col>
</el-row>
</div>
<div v-else class="pd20 skeletonBox">
<el-skeleton :rows="8"/>
<el-button type="primary" class="btn-lineG" size="large" :style="language == 0 ?'width:200px':'width:400px'" round @click="showLogin">
{{ language == 0 ?'登录后查看详细报项信息':'View detailed report information after logging in' }}
<el-button type="primary" class="btn-lineG" size="large" :style="language == 0 ?'width:200px':'width:400px'"
round @click="showLogin">
{{ language == 0 ? '登录后查看详细报项信息' : 'View detailed report information after logging in' }}
</el-button>
</div>
</el-card>
......@@ -94,45 +111,51 @@
<el-col :lg="12">
<div class="text-warning flex" v-if="form.auditStatus=='1'">
<img src="@/assets/img/ing.png">
{{ language==0?'报名信息审核中':'Registration Information under review' }}
{{ language == 0 ? '报名信息审核中' : 'Registration Information under review' }}
</div>
<div class="text-success flex" v-if="form.auditStatus=='2'">
<img src="@/assets/img/r.png">
{{ language==0?'报名信息审核通过':'Registration Information Approved' }}
{{ language == 0 ? '报名信息审核通过' : 'Registration Information Approved' }}
</div>
<div class="text-danger flex" v-if="form.auditStatus=='3'">
<img src="@/assets/img/w.png">
<div>
{{ language==0?'报名信息审核拒绝':'Registration Information rejected' }}
<div v-if="form.reason" class="rre">{{language==0?'驳回理由':'Reason'}}:{{form.reason}}</div>
{{ language == 0 ? '报名信息审核拒绝' : 'Registration Information rejected' }}
<div v-if="form.reason" class="rre">{{ language == 0 ? '驳回理由' : 'Reason' }}:{{ form.reason }}</div>
</div>
</div>
<div class="text-danger flex" v-if="form.auditStatus=='4'">
<img src="@/assets/img/w.png">
<div>
{{ language==0?'报名已取消':'Registration cancelled' }}
{{ language == 0 ? '报名已取消' : 'Registration cancelled' }}
</div>
</div>
</el-col>
<el-col :lg="12" v-if="Number(form.totalFee)>0">
<div class="priceb" v-if="form.payStatus=='0'">{{ language==0?'待支付金额':'Amount Due' }}:<span class="price">{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else-if="form.payStatus=='1'">{{ language==0?'线下支付待核销':'Amount Due' }}:<span class="price">{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else-if="form.payStatus=='3'">{{ language==0?'已支付金额':'Amount Due' }}:<span class="price">{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else-if="form.payStatus=='5'">{{ language==0?'已退款':'Refunded' }}:<span class="price">{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else>{{ language==0?'费用总计':'Amount Due' }}:<span class="price">{{ language==0?'¥':'€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-if="form.payStatus=='0'">{{ language == 0 ? '待支付金额' : 'Amount Due' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else-if="form.payStatus=='1'">{{
language == 0 ? '线下支付待核销' : 'Amount Due'
}}:<span class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else-if="form.payStatus=='3'">{{ language == 0 ? '已支付金额' : 'Amount Due' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else-if="form.payStatus=='5'">{{ language == 0 ? '已退款' : 'Refunded' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
<div class="priceb" v-else>{{ language == 0 ? '费用总计' : 'Amount Due' }}:<span
class="price">{{ language == 0 ? '¥' : '€' }}{{ Number(totalFee).toFixed(2) }}</span></div>
</el-col>
</el-row>
</el-card>
<el-card class="mb60" v-if="form.auditStatus=='2'&&form.payStatus=='0'&&Number(form.totalFee)>0">
<div class="leftboderTT">{{ language==0?'选择支付方式':'Choose payment method' }}</div>
<div class="leftboderTT">{{ language == 0 ? '选择支付方式' : 'Choose payment method' }}</div>
<div class="mt20">
<el-radio-group v-model="payType" @change="changePaytype">
<!-- 0 线下 1 支付宝 2 微信 3 paypal-->
<!-- 0 线下 1 支付宝 2 微信 3 paypal-->
<!-- <el-radio label="1" border>-->
<!-- <svg t="1709003181386" class="icon" viewBox="0 0 3283 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="31015" width="100" height="40"><path d="M1163.122759 94.631724H593.92A133.826207 133.826207 0 0 0 459.034483 228.457931v567.084138a133.473103 133.473103 0 0 0 133.826207 133.826207h570.262069a133.826207 133.826207 0 0 0 134.17931-133.826207v-5.296552s-217.864828-90.394483-328.033103-143.36c-73.445517 90.747586-168.783448 145.478621-267.652414 145.478621-167.017931 0-223.514483-145.831724-144.419311-241.875862a169.136552 169.136552 0 0 1 92.16-51.906207c70.62069-17.302069 184.32 10.946207 290.604138 45.903448A587.211034 587.211034 0 0 0 988.689655 429.373793h-328.73931v-32.838621h168.783448V337.213793h-204.446896v-33.191724h204.446896V219.630345a14.124138 14.124138 0 0 1 14.477241-14.477242h82.273104v98.868966h202.328276v33.191724h-202.328276v59.321379h165.252414a677.605517 677.605517 0 0 1-70.62069 176.551725c50.14069 18.008276 94.984828 35.310345 128.529655 46.256551a930.427586 930.427586 0 0 0 147.950345 42.725518V228.457931a133.826207 133.826207 0 0 0-133.473103-133.826207z" fill="#089fe8" p-id="31016"></path><path d="M663.481379 548.016552a162.78069 162.78069 0 0 0-81.566896 30.366896c-64.617931 55.790345-26.129655 158.190345 104.165517 158.190345 75.917241 0 151.481379-48.375172 211.862069-125.704827-85.804138-40.96-156.424828-70.267586-234.46069-62.852414zM2488.673103 225.28h239.757242v47.668966h85.804138V216.805517a22.951724 22.951724 0 0 0-21.892414-23.304827h-139.122759V149.009655h-89.335172v44.137931h-160.662069v79.80138h85.451034zM1882.394483 360.518621h67.442758v247.172413h73.798621V280.011034h-26.835862l55.437241-126.764137H1970.317241l-87.922758 207.271724zM2824.827586 596.391724l-26.835862-90.747586a13.771034 13.771034 0 0 0-13.064827-10.24h-70.62069l20.48 70.62069H2648.275862v-135.944828h164.546207v-32.132414H2648.275862v-63.55862h164.546207v-32.132414h-409.6v32.132414h164.546207v63.55862h-164.546207v32.132414h164.546207V564.965517h-164.546207v32.132414H2824.827586zM2158.521379 323.442759a16.595862 16.595862 0 0 0-15.183448-9.886897h-63.558621l49.434483 156.424828h75.564138z" fill="#089fe8" p-id="31017"></path><path d="M2319.889655 156.777931h-76.623448v80.154483h-188.557241v32.132414h188.557241v287.426206a13.064828 13.064828 0 0 1-12.358621 12.005518h-38.841379v31.77931h99.222069a30.013793 30.013793 0 0 0 28.601379-29.66069V269.064828h31.073104v-32.132414h-31.073104zM1871.448276 577.677241a913.831724 913.831724 0 0 1-168.783448-80.507586 357.34069 357.34069 0 0 0 141.241379-194.56H1694.896552V249.997241h170.195862v-32.83862H1694.896552V150.422069h-75.211035a15.536552 15.536552 0 0 0-15.183448 15.536552v51.2h-169.136552v32.83862h169.136552v52.612414h-141.241379v32.838621h284.248276a278.951724 278.951724 0 0 1-93.572414 127.470345 360.871724 360.871724 0 0 1-93.572414-94.984828H1483.034483a423.724138 423.724138 0 0 0 122.173793 130.295173 662.775172 662.775172 0 0 1-172.667586 77.329655v39.194482A773.296552 773.296552 0 0 0 1653.230345 529.655172 781.771034 781.771034 0 0 0 1871.448276 614.753103zM1553.655172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.188966-79.095172 26.482758 79.095172zM1796.237241 674.78069h-34.251034v190.675862h115.464827v-26.129655h-81.213793v-164.546207zM2003.155862 674.78069h34.251035v190.322758h-34.251035zM2250.328276 674.78069h-74.151724v190.675862h35.310345v-73.445518h39.900689a58.615172 58.615172 0 1 0 0-117.230344z m-2.118621 91.100689H2210.427586v-64.971034h37.782069a31.073103 31.073103 0 0 1 30.366897 32.485517 30.72 30.72 0 0 1-30.366897 32.485517zM2465.015172 674.78069l-70.620689 190.675862h35.310345l13.417931-38.488276h70.620689l12.711724 38.488276h35.310345l-70.620689-190.675862z m-12.711724 128.176551l27.542069-79.095172 27.188966 79.095172zM2716.071724 755.994483l-38.135172-81.213793H2641.213793l57.555862 112.286896v78.388966h33.897931v-78.388966l0.353104-0.353103 57.555862-111.933793h-37.075862l-37.428966 81.213793z" fill="#089fe8" p-id="31018"></path></svg>-->
<!-- </el-radio>-->
<el-radio label="2" v-if="form.payTypeArr.indexOf('2')>-1" border>
<!-- 微信-->
<!-- 微信-->
<svg t="1709002960407" class="icon" viewBox="0 0 3152 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="24747" width="94" height="40">
<path
......@@ -144,7 +167,7 @@
</svg>
</el-radio>
<el-radio label="3" v-if="form.payTypeArr.indexOf('0')>-1" border>
<!-- 线下-->
<!-- 线下-->
<svg t="1709003441012" class="icon" viewBox="0 0 3527 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="32905" width="90" height="40">
<path
......@@ -174,7 +197,7 @@
</svg>
</el-radio>
<el-radio label="4" v-if="form.payTypeArr.indexOf('3')>-1" border>
<!-- paypal-->
<!-- paypal-->
<svg t="1709002828937" class="icon" viewBox="0 0 4220 1024" version="1.1"
xmlns="http://www.w3.org/2000/svg" p-id="22654" width="94" height="40">
<path
......@@ -217,7 +240,8 @@
</div>
<div class="tip text-center text-danger" v-if="language==0">
支付后不要关闭此窗口,等待确认支付成功.
若长时间未收到支付成功提醒,请刷新页面</div>
若长时间未收到支付成功提醒,请刷新页面
</div>
<div class="tip text-center text-danger" v-else>
After payment, do not close this window and wait for confirmation of successful payment.
<br/>
......@@ -229,90 +253,110 @@
<div v-if="payType == '3'">
<table class="table-border table" cellpadding="0" cellspacing="0">
<tr>
<th colspan="2" class="head">{{ language==0?'线下缴费的收款信息':'Offline Payment Collection Information' }}</th>
<th colspan="2" class="head">
{{ language == 0 ? '线下缴费的收款信息' : 'Offline Payment Collection Information' }}
</th>
</tr>
<tr>
<th>{{ language==0?'付款金额':'Payment Amount' }}</th>
<th>{{ language == 0 ? '付款金额' : 'Payment Amount' }}</th>
<td>
{{ language==0?'¥':'€' }}{{ totalFee }}
<div class="text-gray">{{ language==0?'请按照指定金额进行打款':'Please make the payment according to the specified amount' }}</div>
{{ language == 0 ? '¥' : '€' }}{{ totalFee }}
<div class="text-gray">{{
language == 0 ? '请按照指定金额进行打款' : 'Please make the payment according to the specified amount'
}}
</div>
</td>
</tr>
<tr>
<th>{{ language==0?'收款账号':`Receiver's Account Number` }}</th>
<th>{{ language == 0 ? '收款账号' : `Receiver's Account Number` }}</th>
<td>
{{ form.payInformation?.receivingAccount }}
<span v-if="language==0" class="text-primary size12 pointer" @click="copy(form.payInformation?.receivingAccount)">复制25位账号</span>
<span v-if="language==0" class="text-primary size12 pointer"
@click="copy(form.payInformation?.receivingAccount)">复制25位账号</span>
<span v-else class="text-primary size12 pointer" @click="copy(form.payInformation?.receivingAccount)">Copy 25-digit Account Number</span>
<div v-if="language==0" class="text-gray">请勿重复打款</div>
<div v-else class="text-gray">Please do not make duplicate payments</div>
</td>
</tr>
<tr>
<th>{{ language==0?'收款公司名':'Name of the Payee Company' }}</th>
<th>{{ language == 0 ? '收款公司名' : 'Name of the Payee Company' }}</th>
<td>{{ form.payInformation?.receivingCompany }}</td>
</tr>
<tr>
<th>{{ language==0?'开户银行':'Bank Name' }}</th>
<th>{{ language == 0 ? '开户银行' : 'Bank Name' }}</th>
<td>{{ form.payInformation?.openingBank }}</td>
</tr>
<tr>
<th>{{ language==0?'备注信息':'Remarks' }}</th>
<th>{{ language == 0 ? '备注信息' : 'Remarks' }}</th>
<td>
{{ form.payInformation?.remarks }}
</td>
</tr>
<tr>
<th>{{ language==0?'联系人':'Contacts' }}</th>
<th>{{ language == 0 ? '联系人' : 'Contacts' }}</th>
<td>
{{ form.payInformation?.contacts }}
</td>
</tr>
<tr>
<th>{{ language==0?'联系电话':'Telephone' }}</th>
<th>{{ language == 0 ? '联系电话' : 'Telephone' }}</th>
<td>{{ form.payInformation?.contactPhone }}</td>
</tr>
<tr>
<th>{{ language==0?'操作':'Actions' }}</th>
<th>{{ language == 0 ? '操作' : 'Actions' }}</th>
<td>
<file-upload :limit="1" v-model="voucherObj" :button-type="1" :is-show-tip="false" :button-text="language==0?'上传汇款单':'Upload Remittance Receipt'"/>
<span v-if="language==0" class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<file-upload :limit="1" v-model="voucherObj" :button-type="1" :is-show-tip="false"
:button-text="language==0?'上传汇款单':'Upload Remittance Receipt'"/>
<span v-if="language==0"
class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<span v-else class="text-danger size12">*You can confirm with the contact person by phone after uploading the remittance form. The specific payment results can be viewed in the My Registration section of the personal center to check the progress</span>
</td>
</tr>
</table>
<div class="text-center">
<el-button type="primary" @click="upRR" round class="btn-lineG w200px">{{ language==0?'保存':'Save' }}</el-button>
<el-button type="primary" @click="upRR" round class="btn-lineG w200px">{{
language == 0 ? '保存' : 'Save'
}}
</el-button>
</div>
</div>
<div class="text-center mt20" v-else>
<el-button v-if="!hideconfirmbtn" type="primary" @click="goPay" round class="btn-lineG w200px">
{{ language==0?'确定':'Submit' }}</el-button>
{{ language == 0 ? '确定' : 'Submit' }}
</el-button>
</div>
</div>
</el-card>
<el-card class="mb60" v-if="form.payStatus == '3'">
<div class="text-center">
<el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
<p class="text-success">{{ language==0?'支付成功':'successful!' }}</p>
<h3 class="wePrice">{{ language==0?'¥':'€' }}{{form.totalFee || 0}}</h3>
<el-card class="mb60">
<div class="text-center" v-if="form.payStatus == '3'">
<el-icon color="#32B16C" size="80">
<SuccessFilled/>
</el-icon>
<p class="text-success">{{ language == 0 ? '支付成功' : 'successful!' }}</p>
<h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ form.totalFee || 0 }}</h3>
<el-button type="primary" round class="btn-lineG w200px" @click="downInvoice">
{{ language == 0 ? '下载收据' : 'DownLoad Invoice' }}
</el-button>
</div>
</el-card>
<el-card class="mb60" v-if="form.payStatus == '1' && form.curPayType=='2'">
<!-- 线下支付待核销-->
<label>{{ language==0?'线下支付':'Offline Payment' }}</label>
<label>{{ language == 0 ? '线下支付' : 'Offline Payment' }}</label>
<div class="text-center">
<el-icon color="#32B16C" size="80"><SuccessFilled /></el-icon>
<p class="text-success">{{ language==0?'支付成功':'successfully!' }}</p>
<h3 class="wePrice">{{ language==0?'¥':'€' }}{{form.totalFee}}</h3>
<span v-if="language==0" class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<el-icon color="#32B16C" size="80">
<SuccessFilled/>
</el-icon>
<p class="text-success">{{ language == 0 ? '支付成功' : 'successfully!' }}</p>
<h3 class="wePrice">{{ language == 0 ? '¥' : '€' }}{{ form.totalFee }}</h3>
<span v-if="language==0"
class="text-danger size12">*您可以在上传汇款单完成后,与联系人进行电话确认。具体缴费结果,可以在个人中心-我的报名中查看进度</span>
<span v-else class="text-danger size12">*You can confirm with the contact person by phone after uploading the remittance form. The specific payment results can be viewed in the My Registration section of the personal center to check the progress</span>
</div>
</el-card>
</div>
<div class="box" v-if="errorBox">
<el-result
icon="error"
......@@ -320,10 +364,31 @@
:sub-title="language==0?'请确认订单号是否正确':'Please confirm if the order number is correct'"
>
<template #extra>
<el-button type="primary" @click="goHome" class="btn-lineG w200px" round>{{ language==0?'返回首页':'Home' }}</el-button>
<el-button type="primary" @click="goHome" class="btn-lineG w200px" round>
{{ language == 0 ? '返回首页' : 'Home' }}
</el-button>
</template>
</el-result>
</div>
<el-dialog :title="language==0?'开收据':'Issue a receipt'" v-model="showSJDialog" width="460px"
:close-on-click-modal="false" :close-on-press-escape="false">
<div class="flex">
<el-form-item :label="language==0?'开票人':'Name'">
<div class="flex">
<el-input v-model="lpName" :placeholder="language==0?'请输入开票人':'Please enter your name'"></el-input>
<el-button type="primary" @click="submitSJ">{{ language == 0 ? '提交并下载' : 'Submit' }}</el-button>
</div>
</el-form-item>
</div>
<div class="tip mt20">
<label>{{ language == 0 ? '开电子收据须知' : 'Receipt notice' }}:</label>
<div class="pd10">
{{ remark }}
</div>
</div>
</el-dialog>
</div>
</template>
......@@ -331,9 +396,10 @@
import {Search} from "@element-plus/icons-vue"
import {getCurrentInstance, ref} from 'vue'
import {onMounted} from "@vue/runtime-core"
import {useRoute,useRouter} from "vue-router"
import {useRoute, useRouter} from "vue-router"
import * as match from "@/apiPc/match"
import MatchInfoRow from "@/viewsPc/match/components/matchInfo-row";
const {proxy} = getCurrentInstance()
const route = useRoute()
const router = useRouter()
......@@ -348,9 +414,11 @@ import ZuTable from "@/viewsPc/match/components/zu-table";
import useUserStore from "@/store/modules/user";
import FileUpload from "@/components/FileUpload";
import {useStorage} from "@vueuse/core/index";
import {ElMessage} from "element-plus";
import {ElMessage, ElMessageBox} from "element-plus";
import {getBaseInfoByActiveId, getReceipt} from "@/apiPc/booking";
const isLogin = ref(false)
const language= useStorage('language',0)
const language = useStorage('language', 0)
const signInfoList = ref([])
const zuTableList = ref([])
const totalFee = ref('')
......@@ -359,7 +427,7 @@ const form = ref({})
const voucherObj = ref([])
const myMemberTable = ref([])
const upForm = ref({
orderId:orderId.value
orderId: orderId.value
})
const errorBox = ref(false)
const hideconfirmbtn = ref(false)
......@@ -371,17 +439,21 @@ const zuQuery = ref({
groupId: groupId.value
})
const user = useUserStore().user
const remark = ref('')
const showSJDialog = ref(false)
const loading = ref(false)
const lpName = ref('')
console.log(route.query.orderId)
// 1763462073870237698
onMounted(() => {
if (route.query.orderId) {
getData()
}
if(route.query.lang){
if(route.query.lang=='ZH'){
if (route.query.lang) {
if (route.query.lang == 'ZH') {
language.value = 0
}
if(route.query.lang=='EN'){
if (route.query.lang == 'EN') {
language.value = 1
}
}
......@@ -397,8 +469,9 @@ onMounted(() => {
if (useUserStore().user) {
isLogin.value = true
}
function getData() {
return match.getMyOrderDetail({orderId:orderId.value}).then(res => {
return match.getMyOrderDetail({orderId: orderId.value}).then(res => {
totalFee.value = res.data.totalFee
form.value = res.data
form.value.payTypeArr = res.data.payType.split(',')
......@@ -406,128 +479,137 @@ function getData() {
groupId.value = form.value.groupId || 0
zuQuery.value.groupId = groupId.value
zuQuery.value.cptId = matchId.value
if(isLogin.value){
if (isLogin.value) {
getSignList()
if(user.utype=='1'){
if (user.utype == '1') {
getMyMemberTable()
}
}
}).catch(err=>{
}).catch(err => {
console.log(err)
errorBox.value = true
})
}
function getMyMemberTable() {
match.getPerPersonList({cptId: matchId.value, searchLabels: '1,2,3,4,5,6'}, user.userId).then(res => {
myMemberTable.value = res.rows
})
}
function upRR() {
if(voucherObj.value.length==0){
ElMessage.warning(language.value==0?'请上传凭证':'Please upload the voucher')
if (voucherObj.value.length == 0) {
ElMessage.warning(language.value == 0 ? '请上传凭证' : 'Please upload the voucher')
return
}
upForm.value.voucher = voucherObj.value[0].url
match.upReceipt(upForm.value).then(res=>{
match.upReceipt(upForm.value).then(res => {
getData()
})
}
function getSignList() {
match.getMySignInfoList(zuQuery.value).then(res => {
insuranceFeeTotal.value = 0
serviceFeeTotal.value = 0
signInfoList.value = res.data?.singleData || []
zuTableList.value = res.data?.zuData || []
for(var s of signInfoList.value){
for (var s of signInfoList.value) {
insuranceFeeTotal.value = insuranceFeeTotal.value + Number(s.insuranceFee)
}
for(var z of zuTableList.value){
for (var z of zuTableList.value) {
serviceFeeTotal.value = serviceFeeTotal.value + Number(z.project.serviceFee)
}
}).catch(err=>{
if(isLogin.value){
router.push({name:'myMatch'})
}).catch(err => {
if (isLogin.value) {
router.push({name: 'myMatch'})
return
}
})
}
function goHome() {
router.push('/')
}
function changePaytype() {
hideconfirmbtn.value = false
wePayCodeUrl.value = ''
if(handle) {
if (handle) {
clearTimeout(handle)
handle=null
handle = null
}
}
function goPay(){
if(payType.value=='2' && form.value.payTypeArr.indexOf('2')>-1){
if(isphone.value){
function goPay() {
if (payType.value == '2' && form.value.payTypeArr.indexOf('2') > -1) {
if (isphone.value) {
//拉起移动支付
match.createWePayPhone({orderId:orderId.value}).then(res=>{
match.createWePayPhone({orderId: orderId.value}).then(res => {
hideconfirmbtn.value = true
window.location.href = res.data
})
} else {
match.createWePay({orderId:orderId.value}).then(res=>{
match.createWePay({orderId: orderId.value}).then(res => {
wePayCodeUrl.value = res.data
hideconfirmbtn.value = true
startforGetData()
})
}
} else if(payType.value=='2' && form.value.payTypeArr.indexOf('2')==-1){
} else if (payType.value == '2' && form.value.payTypeArr.indexOf('2') == -1) {
ElMessage.warning(language.value == 0 ? '请选择支付方式' : 'Please select payment method')
return
}
if(payType.value=='4'){
match.createPalPay({orderId:orderId.value}).then(res=>{
if(res.data){
location.href=res.data
if (payType.value == '4') {
match.createPalPay({orderId: orderId.value}).then(res => {
if (res.data) {
location.href = res.data
}
})
}
}
let handle;
function startforGetData() {
handle= setTimeout(()=>{
getData().then(()=>{
if( form.value.payTime){
if(handle) {
handle = setTimeout(() => {
getData().then(() => {
if (form.value.payTime) {
if (handle) {
clearTimeout(handle)
handle=null
handle = null
}
}else{
} else {
startforGetData()
}
})
},2000)
}, 2000)
}
function showLogin(){
function showLogin() {
useUserStore().setReLogin()
}
function exportSignList(n) {
var obj = {
cptId: matchId.value,
groupId: groupId.value,
type:n
type: n
}
var fileName
if(language.value==0){
if(n==1){
if (language.value == 0) {
if (n == 1) {
fileName = '参赛人员清单'
}else {
} else {
fileName = '设项报名清单'
}
proxy.download('/league/sign/exportCn', {
...obj
}, `${fileName}_${new Date().getTime()}.xlsx`)
} else {
if(n==1){
if (n == 1) {
fileName = 'Participant List'
}else {
} else {
fileName = 'LIST OF REGISTERED COMPETITIONS'
}
proxy.download('/league/sign/exportEn', {
......@@ -536,13 +618,14 @@ function exportSignList(n) {
}
}
function exportPdf() {
var obj = {
cptId: matchId.value,
groupId: groupId.value
}
var fileName
if(language.value==0){
if (language.value == 0) {
fileName = '设项报名清单'
proxy.download('/pdf/exportMySignInfoList', {
...obj
......@@ -555,19 +638,93 @@ function exportPdf() {
}
}
function copy(str) {
navigator.clipboard.writeText(str).then(() => {
ElMessage.success(language.value==0?'复制成功':'Copy successfully')
ElMessage.success(language.value == 0 ? '复制成功' : 'Copy successfully')
})
}
function downInvoice() {
getremark()
if (form.value.receiptFlag == '0') {
showSJDialog.value = true
} else {
showSJ()
}
}
function getremark() {
getBaseInfoByActiveId(matchId.value).then(res => {
if (res.data) {
remark.value = res.data.remarks
}
})
}
function submitSJ() {
loading.value = true
ElMessageBox.confirm(language.value == 0 ? '提交后无法修改开票人,确认提交吗?' : 'Confirm to submit ?', {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
showSJ()
})
}
function downloadAndSend() {
getReceipt({
orderId: orderId.value,
receiptInfo: lpName.value,
type: 1
}).then(res => {
loading.value = false
ElMessageBox.confirm(language.value == 0 ? `已发送至您的邮箱 ${user.userName},请注意查收` : `A receipt has been sent to your email ${user.userName}, please check it`, {
confirmButtonText: language.value == 0 ? '确定' : 'Confirm',
cancelButtonText: language.value == 0 ? '取消' : 'Cancel',
type: 'warning'
}).then(() => {
showSJDialog.value = false
showSJ()
})
}).catch(err => {
loading.value = false
})
}
const showSJ = () => {
// 查看电子收据预览信息
var obj = {
orderId: form.value.oid,
type: 1
}
if (form.value.receiptFlag == '0') {
obj.receiptInfo = lpName.value
}
// 报名
proxy.download(`/league/signOrder/getReceipt/${obj.orderId}`, {
...obj
}, `Receipt_${new Date().getTime()}.pdf`)
showSJDialog.value = false
getData()
}
</script>
<style scoped lang="scss">
.wePrice{font-size: 24px;font-weight: 400;}
.wePrice {
font-size: 24px;
font-weight: 400;
}
.el-radio.is-bordered {
height: 40px;
}
.border{border: 1px solid #e1e1e1;}
.border {
border: 1px solid #e1e1e1;
}
.leftboderTT {
font-weight: 600;
font-size: 16px;
......@@ -649,22 +806,60 @@ function copy(str) {
}
}
}
.skeletonBox{position: relative;overflow: hidden;
.btn-lineG{position: absolute;left: 0;right: 0;margin: auto;top: 0;bottom: 0;
width: 200px;box-shadow: 0 0 1000px 500px rgba(255,255,255,0.5);
.skeletonBox {
position: relative;
overflow: hidden;
.btn-lineG {
position: absolute;
left: 0;
right: 0;
margin: auto;
top: 0;
bottom: 0;
width: 200px;
box-shadow: 0 0 1000px 500px rgba(255, 255, 255, 0.5);
}
}
.payImgbox{text-align: center;border: 1px solid #fff;padding: 20px;}
.priceBar{padding: 0 0 20px;
.flex{display: flex;justify-content: right;align-items: baseline;
.item{font-size: 16px;margin-right: 15px;
label{color: #95A1A6;}
span{font-family: DIN Alternate;}
.payImgbox {
text-align: center;
border: 1px solid #fff;
padding: 20px;
}
.priceBar {
padding: 0 0 20px;
.flex {
display: flex;
justify-content: right;
align-items: baseline;
.item {
font-size: 16px;
margin-right: 15px;
label {
color: #95A1A6;
}
span {
font-family: DIN Alternate;
}
}
}
.size26{font-size: 26px;}
.size26 {
font-size: 26px;
}
}
.rre {
color: #333;
font-size: 16px;
margin-top: 10px
}
.rre{color: #333;font-size: 16px;margin-top: 10px}
</style>
......
......@@ -83,14 +83,14 @@ export default defineConfig(({ mode, command }) => {
},
'/dev-api': {
// target: 'http://192.168.1.118:8081/',
// target: 'http://192.168.1.131:8081/',
target: 'http://192.168.1.131:8081/',
// target: 'https://jijin.wtwuxicenter.com/stage-api',
target: 'https://wdsfwuxicenter.com/stage-api/',
// target: 'https://wdsfwuxicenter.com/stage-api/',
changeOrigin: true,
rewrite: (p) => p.replace(/^\/dev-api/, '')
},
'/ticket': {
target: 'http://192.168.1.118:8098/',
target: 'http://192.168.1.131:8081/',
// target: 'http://192.168.1.131:8081/',
// target: 'https://jijin.wtwuxicenter.com/h5',
// target: 'https://ticketh5.wdsfwuxicenter.com/h5/stage-api',
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!