8dd3fd27 by 华明祺

no message

1 parent 117eb0be
......@@ -171,7 +171,7 @@ export function queryTicket(qy) {
}
export function getHomeInviteQuery(params) {
return request({
url: `/league/person/getHomeInviteQuery`,
url: `/league/visa/getHomeSearchVisaList`,
method: 'get',
params: params
})
......@@ -185,7 +185,7 @@ export function getHomeCarQuery(params) {
}
export function getHomeRoomQuery(params) {
return request({
url: `/league/person/getHomeRoomQuery`,
url: `/ota/norder/getHomeRoomQuery`,
method: 'get',
params: params
})
......
......@@ -832,6 +832,14 @@ export function aircraft(params) {
})
}
export function getHomePickQuery(params) {
return request({
url: `/league/pickup/getHomePickQuery`,
method: 'get',
params
})
}
// 关于我们
export function getAboutUs(params) {
return request({
......
......@@ -3,46 +3,51 @@
<div class="box">
<el-card class="mt20 mb20" :body-style="{'padding':'0'}">
<div class="lineHead">
<h3>{{ language==0?'服务查询': 'Service Search' }}</h3>
<h3>{{ language == 0 ? '服务查询' : 'Service Search' }}</h3>
</div>
<div class="pd20">
<div class="topsearch">
<el-input v-if="activeTab==0" :placeholder="language==0?'请输入护照号搜索':'Please enter passport number to search'"
v-model="query.passportNo"/>
<el-input v-else :placeholder="language==0?'请输入姓名搜索':'Please enter name to search'"
v-model="query.contacts"/>
<el-input :placeholder="language==0?'请输入手机号或邮箱搜索':'Please enter phone or email to search'"
v-model="query.remarks" @keyup.enter="search"/>
<el-button class="btn-lineG" type="primary" @click="search">
<el-icon class="mr20">
<Search/>
</el-icon>
{{ language==0?'搜索': 'Search' }}
{{ language == 0 ? '搜索' : 'Search' }}
</el-button>
</div>
<div class="stab">
<div :class="activeTab==0?'active':''" @click="changeActiveTab(0)">
<div :class="activeTab==0?'active':''" @click="changeActiveTab('0')">
<img v-show="activeTab!=0" src="@/assets/img/tag01@2x.png"/>
<img v-show="activeTab==0" src="@/assets/img/tag01_dwn@2x.png"/>
{{language==0?'签证服务':'Visa Services'}}
{{ language == 0 ? '签证服务' : 'Visa Services' }}
</div>
<div :class="activeTab==1?'active':''" @click="changeActiveTab(1)">
<div :class="activeTab==1?'active':''" @click="changeActiveTab('1')">
<img v-show="activeTab!=1" src="@/assets/img/tag02@2x.png"/>
<img v-show="activeTab==1" src="@/assets/img/tag02_dwn@2x.png"/>
{{language==0?'酒店预定':'Hotel Reservation'}}
{{ language == 0 ? '酒店预定' : 'Hotel Reservation' }}
</div>
<div :class="activeTab==2?'active':''" @click="changeActiveTab(2)">
<div :class="activeTab==2?'active':''" @click="changeActiveTab('2')">
<img v-show="activeTab!=2" src="@/assets/img/tag03@2x.png"/>
<img v-show="activeTab==2" src="@/assets/img/tag03_dwn@2x.png"/>
{{language==0?'接送服务':'Pick-up Service'}}
{{ language == 0 ? '接送服务' : 'Pick-up Service' }}
</div>
</div>
<div>
<div v-for="item in list">
{{item}}
<div v-if="activeTab==0">
<el-empty v-if="list1.length==0"/>
<visa-info v-else :list="list1"></visa-info>
</div>
<div v-if="activeTab==1">
<el-empty v-if="list2.length==0"/>
<reservation-info v-else :list="list2" min></reservation-info>
</div>
<div v-if="activeTab==2">
<el-empty v-if="list3.length==0"/>
<pickup-info v-else :list="list3"></pickup-info>
</div>
</div>
<el-empty v-if="list.length==0"/>
</div>
</el-card>
</div>
......@@ -50,65 +55,89 @@
</template>
<script setup>
import {ref, computed, onMounted} from 'vue'
import {getHomeCarQuery, getHomeInviteQuery, getHomeRoomQuery} from "@/apiPc/common";
import {ref, onMounted} from 'vue'
import { getHomeInviteQuery, getHomeRoomQuery} from "@/apiPc/common";
import {ElMessage} from "element-plus";
import {useStorage} from "@vueuse/core/index";
import VisaInfo from "/src/viewsPc/center/info/visaInfo.vue";
import ReservationInfo from "/@/viewsPc/center/info/reservationInfo.vue";
import {useRouteQuery} from '@vueuse/router'
import PickupInfo from "/@/viewsPc/center/info/pickupInfo.vue";
import { getHomePickQuery} from "/@/apiPc/match";
const language = useStorage('language', 0)
const activeTab = ref(0)
const activeTab = useRouteQuery('n', 0)
const searchVal = useRouteQuery('s')
const form = ref({})
const list = ref([])
const list1 = ref([])
const list2 = ref([])
const list3 = ref([])
const query = ref({
status: 1
status: 1,
remarks: ''
})
const loading = ref(false)
function changeActiveTab(n) {
activeTab.value = n
query.value.passportNo = ''
query.value.contacts = ''
if (query.value.remarks) {
search()
}
}
onMounted(() => {
if (searchVal.value) {
query.value.remarks = searchVal.value
search()
}
})
function search() {
if (!query.value.passportNo && activeTab.value == 0) {
ElMessage.warning(language.value==0?'请输入护照号搜索':'Please enter keyword to search')
if (!query.value.remarks) {
ElMessage.warning(language.value == 0 ? '请输入手机号或邮箱搜索' : 'Please enter phone or email to search')
return
}
if (!query.value.contacts && activeTab.value != 0) {
ElMessage.warning(language.value==0?'请输入关键字搜索':'Please enter keyword to search')
return
if (activeTab.value == 0) {
delete query.value.status
}else{
query.value.status = 1
}
searchVal.value = query.value.remarks
loading.value = true
if(activeTab.value == 0){
if (activeTab.value == 0) {
// 签证服务
getHomeInviteQuery(query.value).then(res=>{
if (!res.data||res.data.length==0) {
list.value = []
ElMessage.warning(language.value==0?'未找到结果,请重新查询':'No result')
getHomeInviteQuery(query.value).then(res => {
if (!res.data || res.data.length == 0) {
list1.value = []
ElMessage.warning(language.value == 0 ? '未查到预定信息' : 'No reservation information found.')
return
}
list.value = res.data
list1.value = res.data
})
}
if(activeTab.value == 1){
if (activeTab.value == 1) {
// 酒店预定
getHomeRoomQuery(query.value).then(res=>{
if (!res.data||res.data.length==0) {
list.value = []
ElMessage.warning(language.value==0?'未找到结果,请重新查询':'No result')
getHomeRoomQuery(query.value).then(res => {
if (!res.data || res.data.length == 0) {
list2.value = []
ElMessage.warning(language.value == 0 ? '未查到预定信息' : 'No reservation information found.')
return
}
list.value = res.data
list2.value = res.data
})
}
if(activeTab.value == 2){
if (activeTab.value == 2) {
// 接送服务
getHomeCarQuery(query.value).then(res=>{
if (!res.data||res.data.length==0) {
list.value = []
ElMessage.warning(language.value==0?'未找到结果,请重新查询':'No result')
getHomePickQuery(query.value).then(res => {
if (!res.data || res.data.length == 0) {
list3.value = []
ElMessage.warning(language.value == 0 ? '未查到预定信息' : 'No reservation information found.')
return
}
list.value = res.data
list3.value = res.data
})
}
}
......@@ -118,17 +147,47 @@ function search() {
.highlight {
background: yellow;
}
.topsearch{display: flex;gap:10px;
.el-input {--el-input-bg-color: #F5F7F9;height: 50px;
--el-input-border-radius: 10px;}
.btn-lineG{border-radius: 10px;height: 50px;width: 130px;font-size: 20px;}
.topsearch {
display: flex;
gap: 10px;
.el-input {
--el-input-bg-color: #F5F7F9;
height: 50px;
--el-input-border-radius: 10px;
}
.btn-lineG {
border-radius: 10px;
height: 50px;
width: 130px;
font-size: 20px;
}
}
.stab{display: flex;gap: 20px;margin: 20px 0 0 ;
div{font-weight: 400;padding: 10px 0;display: flex;align-items: center;
font-size: 18px;cursor: pointer;
.stab {
display: flex;
gap: 20px;
margin: 20px 0 0;
div {
font-weight: 400;
padding: 10px 0;
display: flex;
align-items: center;
font-size: 18px;
cursor: pointer;
color: #4C5359;
img{height: 30px;}
img {
height: 30px;
}
}
.active {
color: #030303;
border-bottom: 2px solid #030303;
}
.active{color: #030303;border-bottom: 2px solid #030303;}
}
</style>
......
......@@ -141,8 +141,9 @@ onMounted(() => {
currMenu = _.find((language.value == 0? menus3.value: menus3En.value), (m) => {
return m.routeName === route.name
})
currMenu.isActive = true
if(currMenu) {
currMenu.isActive = true
}
})
const toInfo = (item, list) => {
......
<template>
<div class="pd20">
<div v-for="b in list" class="item">
<div class="title">
<label class="orangeTag"> {{ language == 0 ? '接送服务' : 'Station Transfer' }} </label>
<span>{{ language == 0 ? '编号:' : 'No.' }} {{ b.id }}</span>
</div>
<div class="status-po">
<span v-if="b.serviceType == '2'" class="bg-gary">{{ 'Drop-off' }}</span>
<span v-if="b.serviceType == '1'" class="bg-blue">{{ 'Pick-up' }}</span>
</div>
<el-row align="middle" class="pd20 mt10" justify="space-between">
<el-col>
<el-descriptions>
<el-descriptions-item :label="language == 0 ? '联系人:' : 'Contact Person:'">
{{ b.name }}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '联系电话:' : 'Phone Number:'">
{{ b.phone }}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '预计抵达时间:' : 'Estimated Arrival Time:'">
{{ b.arrivalDate }} {{b.arrivaTime}}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '航班/车次:' : 'Flight/Train Number:'">
{{ b.flight }}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '机场/火车站:' : 'Airport/Train Station:'">
{{ b.stationName }}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '航站楼:' : 'Terminal:'">
{{ b.terminal }}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '接机/站人数:' : 'Number of Passengers:'">
{{ b.counts }}
</el-descriptions-item>
<el-descriptions-item :label="language == 0 ? '送达酒店:' : 'Destination Hotel:'">
{{ b.hotle }}
</el-descriptions-item>
</el-descriptions>
</el-col>
</el-row>
<!-- <el-row align="middle" class="pd20 mt10" justify="space-between">-->
<!-- <el-col >-->
<!-- <div>-->
<!-- <p>{{language == 0 ? '联系人:' : 'Contact Person:'}} {{ b.name }}</p>-->
<!-- <p>{{language == 0 ? '联系电话:' : 'Phone Number:'}} {{ b.phone }}</p>-->
<!-- </div>-->
<!-- </el-col>-->
<!-- </el-row>-->
</div>
<affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
</div>
</template>
<script setup>
import {getUplaodFile} from "/src/apiPc/match";
import {fillImgUrl} from "/src/utils/ruoyi";
import AffixInvitationView from "/src/viewsPc/match/components/affix-invitation-view.vue";
import {ref} from "vue";
import {useStorage} from "@vueuse/core";
const language = useStorage('language', 0)
const affixInvitationRef = ref(null)
defineProps({
list: {
type: Array,
default: () => []
},
min: {
type: Boolean,
default: false
},
})
function goDetail(b) {
affixInvitationRef.value.open(b)
}
function handleDownload(b) {
getUplaodFile({id: b.id}).then(res => {
window.open(fillImgUrl(res.msg), '_blank')
})
}
</script>
<style scoped lang="scss">
.bigMoney {
font-size: 24px;
font-family: "DIN Alternate";
}
.name {
font-size: 18px;
margin: 0;
}
.status-po {
position: absolute;
right: 0;
top: 0;
font-size: 12px;
color: #FFFFFF;
span {
border-radius: 0px 10px 0px 10px;
padding: 4px 10px;
}
.bg-danger {
background: #E60012;
}
.bg-warning {
background: #e89f39;
}
.bg-pink {
background: #F740A6;
}
.bg-primary {
background: var(--el-color-primary)
}
.bg-blue {
background: #00a0e9
}
}
.indexTitle {
margin: 20px 0 12px;
overflow: visible;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
.fr {
margin: -8px 0 0
}
h3 {
display: inline-block;
font-size: 16px;
color: var(--el-color-primary);
}
}
.item {
.name {
font-size: 18px;
color: #000000;
margin: 0 0 10px;
}
p {
margin: 8px 0 0;
color: #707070;
font-size: 14px;
}
margin: 0 0 20px;
border: 1px solid #E5E5E5;
border-radius: 10px;
position: relative;
.bbody {
padding: 0 15px 20px;
}
.title {
background: #F7F7F7;
border-bottom: 1px solid #E5E5E5;
span {
font-size: 14px;
color: #4C5359;
}
}
.title label {
border-radius: 5px 0 5px 0;
font-size: 12px;
color: #fff;
padding: 4px 10px;
margin-right: 10px;
}
.blueTag {
background-color: #1EC886;
}
.purpleTag {
background-color: #717bef;
}
.orangeTag {
background-color: #ff8124;
}
}
.billFoot {
.price {
width: 100%;
justify-content: space-between;
}
}
.billFoot .tip {
font-size: 24px;
color: #999;
font-weight: 500;
margin: 0 20px;
}
.status {
position: absolute;
right: 10px;
bottom: 60px;
white-space: nowrap;
.warning {
color: #ff8124;
}
.danger {
color: #da2a2a;
}
.gary {
color: #666;
}
.success {
color: #1EC886;
}
}
</style>
<template>
<div class="pd20">
<div v-for="b in list" class="item">
<div class="title">
<label class="orangeTag"> {{ b.applicatTypeName }} </label>
<span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
</div>
<div class="status-po">
<span v-if="b.status == '0'" class="bg-gary">{{ 'Under Review' }}</span>
<span v-if="b.status == '1'" class="bg-blue">{{ 'Approved' }}</span>
<span v-if="b.status == '2'" class="bg-danger">{{ 'Rejected' }}</span>
</div>
<el-row align="middle" class="pd20 mt10" justify="space-between">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<div>
<h3 class="name">{{ b.fullName }}</h3>
<p>{{ b.email }}</p>
<p>{{ b.createTime }}</p>
</div>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ b.invitationTypeName }} </span>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right">
<el-button class="mb10" :disabled="b.emailFlag!='1'" plain round size="small" type="primary"
@click="handleDownload(b)">
{{ language == 0 ? '下载邀请函' : 'Download Invitation' }}
</el-button>
<el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
{{ language == 0 ? '详情' : 'Detail' }}
</el-button>
</div>
</el-col>
</el-row>
</div>
<affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
</div>
</template>
<script setup >
import {getUplaodFile} from "/src/apiPc/match";
import {fillImgUrl} from "/src/utils/ruoyi";
import AffixInvitationView from "/src/viewsPc/match/components/affix-invitation-view.vue";
import {ref} from "vue";
import {useStorage} from "@vueuse/core";
const language = useStorage('language', 0)
const affixInvitationRef = ref(null)
defineProps({
list: {
type: Array,
default: () => []
},
min: {
type: Boolean,
default: false
},
})
function goDetail(b) {
affixInvitationRef.value.open(b)
}
function handleDownload(b) {
getUplaodFile({id: b.id}).then(res => {
window.open(fillImgUrl(res.msg), '_blank')
})
}
</script>
<style scoped lang="scss">
.bigMoney {
font-size: 24px;
font-family: "DIN Alternate";
}
.name {
font-size: 18px;
margin: 0;
}
.status-po {
position: absolute;
right: 0;
top: 0;
font-size: 12px;
color: #FFFFFF;
span {
border-radius: 0px 10px 0px 10px;
padding: 4px 10px;
}
.bg-danger {
background: #E60012;
}
.bg-warning {
background: #e89f39;
}
.bg-pink {
background: #F740A6;
}
.bg-primary {
background: var(--el-color-primary)
}
.bg-blue {
background: #00a0e9
}
}
.indexTitle {
margin: 20px 0 12px;
overflow: visible;
padding: 0 20px 15px;
border-bottom: 1px solid #e5e5e5;
.fr {
margin: -8px 0 0
}
h3 {
display: inline-block;
font-size: 16px;
color: var(--el-color-primary);
}
}
.item {
.name {
font-size: 18px;
color: #000000;
margin: 0 0 10px;
}
p {
margin: 8px 0 0;
color: #707070;
font-size: 14px;
}
margin: 0 0 20px;
border: 1px solid #E5E5E5;
border-radius: 10px;
position: relative;
.bbody {
padding: 0 15px 20px;
}
.title {
background: #F7F7F7;
border-bottom: 1px solid #E5E5E5;
span {
font-size: 14px;
color: #4C5359;
}
}
.title label {
border-radius: 5px 0 5px 0;
font-size: 12px;
color: #fff;
padding: 4px 10px;
margin-right: 10px;
}
.blueTag {
background-color: #1EC886;
}
.purpleTag {
background-color: #717bef;
}
.orangeTag {
background-color: #ff8124;
}
}
.billFoot {
.price {
width: 100%;
justify-content: space-between;
}
}
.billFoot .tip {
font-size: 24px;
color: #999;
font-weight: 500;
margin: 0 20px;
}
.status {
position: absolute;
right: 10px;
bottom: 60px;
white-space: nowrap;
.warning {
color: #ff8124;
}
.danger {
color: #da2a2a;
}
.gary {
color: #666;
}
.success {
color: #1EC886;
}
}
</style>
......@@ -9,150 +9,9 @@
<!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>-->
</div>
<el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
<div class="pd20">
<div v-for="b in list" class="item">
<div class="title">
<label v-if="b.orderType == 0" class="blueTag"> {{ language == 0 ? '酒店' : 'HOTEL' }} </label>
<label v-if="b.orderType == 1" class="purpleTag"> {{ language == 0 ? '车辆' : 'TRANSPORTATION' }} </label>
<label v-if="b.orderType == 2" class="orangeTag"> {{ language == 0 ? '餐饮' : 'DINING' }} </label>
<label v-if="b.orderType == 3" class="orangeTag"> {{ language == 0 ? '化妆' : 'MakeUp' }} </label>
<label v-if="b.orderType == 4" class="orangeTag"> {{ language == 0 ? '拍摄' : 'Shooting ' }} </label>
<label v-if="b.orderType == 5" class="orangeTag"> {{ language == 0 ? '票务' : 'TICKETING ' }} </label>
<span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
</div>
<div class="status-po">
<span v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'" class="bg-warning">
{{ language == 0 ? '待支付' : 'Unpaid' }}
</span>
<span v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')" class="bg-warning">{{
language == 0 ? '已取消' : 'Canceled'
}}</span>
<span v-if="b.status == '1'" class="bg-blue">{{ language == 0 ? '支付成功' : 'successful' }}</span>
<span v-if="b.status == '2'" class="bg-warning">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
<span v-if="b.status == '3'||b.status == '4'" class="bg-danger">{{
language == 0 ? '已退订' : 'Refunded'
}}</span>
<span v-if="b.status == '7'" class="bg-danger">{{
language == 0 ? '退款审核中' : 'Refund in review'
}}</span>
<span v-if="b.status == '-1'" class="bg-blue">{{
language == 0 ? '已核销' : 'Completed'
}}</span>
</div>
<el-row align="middle" class="pd20 mt10" justify="space-between">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<div v-if="b.orderType == 0">
<h3 class="name">{{ b.name }}</h3>
<p v-if="language==0">{{ b.messageObj?.roomStayDate }}</p>
<p v-else>{{ b.messageObj?.roomStayDate.replace('共', ' total ').replace('晚', ' days') }}</p>
<p>{{ b.messageObj?.roomInfo }}</p>
</div>
<div v-if="b.orderType == 1">
<h3 class="name">{{ b.name }}</h3>
<div v-for="(car,index) in b.messageObj.carsList" :key="index">
<p v-if="car.num>0">{{ car.typeName }}{{ car.name }}{{ car.num }} {{
language == 0 ? '辆' : 'Cars'
}}</p>
</div>
<!-- <p>{{b.messageObj}}</p>-->
<!-- <p>{{b.extJsonObj}}</p>-->
</div>
<div v-if="b.orderType == 2">
<h3 class="name">{{ b.name }}</h3>
<div v-for="(n,index) in b.messageObj.foodsList" :key="index">
<p v-if="n.num > 0">
{{ n.name }}({{ n.categoryName }}) * <span>{{ n.num }} {{ language == 0 ? '份' : 'pcs' }}</span>
</p>
</div>
<p>{{ language == 0 ? '配送日期' : 'Delivery Date' }}{{ b.extJsonObj.dcEnd }} ~
{{ b.extJsonObj.dcEnd }}</p>
</div>
<div v-if="b.orderType==3 ||b.orderType == 4">
<h3 class="name">{{ b.name }}</h3>
<p>
{{
dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]
}}
</p>
</div>
<div v-if="b.orderType==5">
<h3 class="name">{{ b.name }}</h3>
<p>
<!-- {{-->
<!-- dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]-->
<!-- }}-->
{{ b.extJsonObj.ticketDate.name }}
</p>
</div>
</el-col>
<el-col :lg="6" :md="12" :sm="12" :xs="24">
<div v-if="b.orderType == 0">
<p>{{ b.messageObj?.roomName }}</p>
<p>{{ b.messageObj?.roomInfo }}</p>
</div>
<div v-if="b.orderType == 1">
</div>
<div v-if="b.orderType == 2">
</div>
<div v-if="b.orderType == 3||b.orderType == 4">
<p>{{ b.extJsonObj.packageName }}</p>
</div>
<div v-if="b.orderType == 5">
<p>{{ b.extJsonObj.packageName }}</p>
</div>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ language == 0 ? '¥' : '$' }}
<span class="bigMoney">{{ language == 0 ? b.total : b.totalEn }}</span>
</span>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right mb20 text-danger" v-if="b.paymentType!='4'&&b.paymentType!='5'">
<el-countdown
v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
:value="b.countdown"
format="mm:ss"
value-style="color:#E60012;font-size:16px;"
@finish="finish(b)"/>
</div>
<div class="text-right">
<el-button v-if="(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0" class="mb10" plain round
size="small" type="success"
@click="Rebook(b)">
{{ language == 0 ? '再次预订' : 'Rebook' }}
</el-button>
<el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
{{ language == 0 ? '详情' : 'Detail' }}
</el-button>
<el-button v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" class="mb10"
plain round size="small" type="primary" @click="goDetail(b)">
<span v-if="b.paymentType=='4'||b.paymentType=='5'">{{language == 0 ? '上传凭证' : 'Upload Receipt'}}</span>
<span v-else>{{ language == 0 ? '支付' : 'Pay' }}</span>
</el-button>
<el-button v-if="b.viewStatus==0" class="mb10" plain round size="small" type="warning"
@click="cancel(b)">
{{ language == 0 ? '取消订单' : 'Cancel Order' }}
</el-button>
<el-button v-if="b.viewStatus==5" class="mb10" plain round size="small" type="" @click="unsubscribe(b)">
{{ language == 0 ? '退订' : 'Unsubscribe' }}
</el-button>
</div>
</el-col>
</el-row>
</div>
</div>
<reservation-info v-else :list="list"></reservation-info>
</el-card>
<div class="pd20"></div>
</div>
</template>
......@@ -161,10 +20,8 @@ import {onMounted, getCurrentInstance} from "@vue/runtime-core";
import {useStorage} from "@vueuse/core/index";
import {newbilllist} from "@/apiPc/common";
import useUserStore from "@/store/modules/user";
import dayjs from 'dayjs'
import {cancelOrder2, cancelOrder} from "/@/apiPc/booking";
import {ElMessage} from "element-plus";
import ReservationInfo from "/@/viewsPc/center/info/reservationInfo.vue";
const router = useRouter()
const language = useStorage('language', 0)
......@@ -176,10 +33,6 @@ onMounted(() => {
getList()
})
function finish(bill) {
bill.status = '2'
// getList()
}
function getList() {
newbilllist({createById: user.userId}).then(res => {
......@@ -202,65 +55,6 @@ function getList() {
})
}
function goDetail(b) {
router.push({
name: 'bookingPay',
query: {
orderId: b.id,
orderType: b.orderType
}
})
}
function Rebook(row) {
console.log(row)
if (row.orderType == 0) {
router.push({
name: 'hotelDetail',
params: {
cptId: row.activeId,
hotelId: row.hotelId
},
query: {
id: row.extId
}
})
} else {
router.push({
name: 'ticket',
params: {
activeId: row.activeId,
}
})
}
}
const cancel = (row) => {
//取消订单
proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => {
return cancelOrder2(row.id).then(res => {
getList()
ElMessage({
message: language.value == 0 ? '操作成功' : 'Successful operation!',
type: 'success'
})
})
})
}
const unsubscribe = (row) => {
proxy.$modal.confirm(language.value == 0 ? `确定退款吗 ?` : 'Are you sure to refund?').then(() => {
return cancelOrder(row.id).then(res => {
getList()
ElMessage({
message: language.value == 0 ? '已提交退款,请等待审核!' : 'Refund has been submitted, please wait for review!',
type: 'success'
})
})
})
}
function toInvoice() {
router.push({
name: 'invoice'
......
......@@ -9,64 +9,21 @@
<!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>-->
</div>
<el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
<div class="pd20">
<div v-for="b in list" class="item">
<div class="title">
<label class="orangeTag"> {{ b.applicatTypeName }} </label>
<span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
</div>
<div class="status-po">
<span v-if="b.status == '0'" class="bg-gary">{{ 'Under Review' }}</span>
<span v-if="b.status == '1'" class="bg-blue">{{ 'Approved' }}</span>
<span v-if="b.status == '2'" class="bg-danger">{{ 'Rejected' }}</span>
</div>
<el-row align="middle" class="pd20 mt10" justify="space-between">
<el-col :lg="9" :md="12" :sm="12" :xs="24">
<div>
<h3 class="name">{{ b.fullName }}</h3>
<p>{{ b.email }}</p>
<p>{{ b.createTime }}</p>
</div>
</el-col>
<el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
<span class="text-warning"> {{ b.invitationTypeName }} </span>
</el-col>
<el-col :lg="6" :md="16" :sm="16" :xs="16">
<div class="text-right">
<el-button class="mb10" :disabled="b.emailFlag!='1'" plain round size="small" type="primary"
@click="handleDownload(b)">
{{ language == 0 ? '下载邀请函' : 'Download Invitation' }}
</el-button>
<el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
{{ language == 0 ? '详情' : 'Detail' }}
</el-button>
</div>
</el-col>
</el-row>
</div>
</div>
<visa-info v-else :list="list"></visa-info>
</el-card>
<affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
</div>
</template>
<script setup>
import {onMounted, getCurrentInstance} from "@vue/runtime-core";
import {useStorage} from "@vueuse/core/index";
// import {newbilllist} from "@/apiPc/common";
import useUserStore from "@/store/modules/user";
// import dayjs from 'dayjs'
import {cancelOrder2, cancelOrder} from "/@/apiPc/booking";
import {ElMessage} from "element-plus";
import {downInvite, getUplaodFile, getVisaInfo} from "/@/apiPc/match";
import AffixInvitationView from "/@/viewsPc/match/components/affix-invitation-view.vue";
import {getVisaInfo} from "/@/apiPc/match";
import {ref} from "vue";
import {useRouter} from "vue-router";
import {fillImgUrl} from "/@/utils/ruoyi";
import VisaInfo from "/src/viewsPc/center/info/visaInfo.vue";
const router = useRouter()
const language = useStorage('language', 0)
......@@ -74,8 +31,6 @@ const list = ref([])
const user = useUserStore().user
const {proxy} = getCurrentInstance()
const affixInvitationRef = ref(null)
onMounted(() => {
getList()
})
......@@ -91,23 +46,6 @@ function getList() {
})
}
function goDetail(b) {
affixInvitationRef.value.open(b)
// router.push({
// name: 'bookingPay',
// query: {
// orderId: b.id,
// orderType: b.orderType
// }
// })
}
function handleDownload(b) {
getUplaodFile({id: b.id}).then(res => {
window.open(fillImgUrl(res.msg), '_blank')
})
}
function Rebook(row) {
console.log(row)
if (row.orderType == 0) {
......
......@@ -66,8 +66,9 @@
required>
<div style="padding: 1px">
<el-date-picker
v-model="form.pickUpBo.arrivalDate" :disabled-date="disabledDateRZ"
default-value="'2024-09-27'" format="YYYY-MM-DD"
v-model="form.pickUpBo.arrivalDate" :disabled-date="disabledDateDP"
default-value="2025-10-18"
format="YYYY-MM-DD"
placeholder="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
......@@ -127,8 +128,8 @@
<!-- </el-checkbox-group>-->
<!-- </el-form-item>-->
<el-form-item :label="language==0?'队伍俱乐部':'Team/Club Name'" prop="pickUpBo.standing" required>
<el-input v-model="form.pickUpBo.standing"/>
<el-form-item :label="language==0?'队伍俱乐部':'Team/Club Name'" prop="downOffBo.standing" required>
<el-input v-model="form.downOffBo.standing"/>
</el-form-item>
<el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="downOffBo.nationalitys" required>
......@@ -162,7 +163,8 @@
<div style="padding: 1px">
<el-date-picker
v-model="form.downOffBo.arrivalDate" :disabled-date="disabledDateDP"
default-value="'2024-09-30'" format="YYYY-MM-DD"
default-value="2025-10-31"
format="YYYY-MM-DD"
placeholder="YYYY-MM-DD"
style="width: 100%;" type="date" value-format="YYYY-MM-DD"
/>
......@@ -199,8 +201,8 @@
:limit="1"/>
</el-form-item>
<el-form-item :label="language==0?'酒店预订单':'Hotel Reservation'" prop="pickUpBo.hotleFile" required>
<image-upload v-model="form.pickUpBo.hotleFile" :button-text="language==0?'上传':'Upload'"
<el-form-item :label="language==0?'酒店预订单':'Hotel Reservation'" prop="downOffBo.hotleFile" required>
<image-upload v-model="form.downOffBo.hotleFile" :button-text="language==0?'上传':'Upload'"
:is-show-tip="false"
:limit="1"/>
</el-form-item>
......@@ -389,11 +391,11 @@ const open = (params) => {
form.value = {
pickUpBo: {
serviceType: 1,
arrivalDate: '2024-09-27'
arrivalDate: ''
},
downOffBo: {
serviceType: 2,
arrivalDate: '2024-09-30'
arrivalDate: ''
},
type: ['1'],
}
......@@ -529,13 +531,11 @@ function disabledDateRZ(date) {
}
function disabledDateDP(date) {
const today = dayjs().format('YYYY-MM-DD')
// if ('2024-07-18' < today) {
// return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs('2024-07-22').valueOf()))
// } else {
// return !((date.getTime() >= dayjs('2024-07-18').valueOf()) && (date.getTime() <= dayjs('2024-07-22').valueOf()))
// }
return !(date.getTime() == dayjs('2024-09-30').valueOf())
let min= dayjs('2025-10-18').valueOf()
let max =dayjs('2025-10-31').valueOf()
if (date.getTime() < min || date.getTime() > max) {
return true
}
}
</script>
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!