8dd3fd27 by 华明祺

no message

1 parent 117eb0be
...@@ -171,7 +171,7 @@ export function queryTicket(qy) { ...@@ -171,7 +171,7 @@ export function queryTicket(qy) {
171 } 171 }
172 export function getHomeInviteQuery(params) { 172 export function getHomeInviteQuery(params) {
173 return request({ 173 return request({
174 url: `/league/person/getHomeInviteQuery`, 174 url: `/league/visa/getHomeSearchVisaList`,
175 method: 'get', 175 method: 'get',
176 params: params 176 params: params
177 }) 177 })
...@@ -185,7 +185,7 @@ export function getHomeCarQuery(params) { ...@@ -185,7 +185,7 @@ export function getHomeCarQuery(params) {
185 } 185 }
186 export function getHomeRoomQuery(params) { 186 export function getHomeRoomQuery(params) {
187 return request({ 187 return request({
188 url: `/league/person/getHomeRoomQuery`, 188 url: `/ota/norder/getHomeRoomQuery`,
189 method: 'get', 189 method: 'get',
190 params: params 190 params: params
191 }) 191 })
......
...@@ -832,6 +832,14 @@ export function aircraft(params) { ...@@ -832,6 +832,14 @@ export function aircraft(params) {
832 }) 832 })
833 } 833 }
834 834
835 export function getHomePickQuery(params) {
836 return request({
837 url: `/league/pickup/getHomePickQuery`,
838 method: 'get',
839 params
840 })
841 }
842
835 // 关于我们 843 // 关于我们
836 export function getAboutUs(params) { 844 export function getAboutUs(params) {
837 return request({ 845 return request({
......
...@@ -3,46 +3,51 @@ ...@@ -3,46 +3,51 @@
3 <div class="box"> 3 <div class="box">
4 <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> 4 <el-card class="mt20 mb20" :body-style="{'padding':'0'}">
5 <div class="lineHead"> 5 <div class="lineHead">
6 <h3>{{ language==0?'服务查询': 'Service Search' }}</h3> 6 <h3>{{ language == 0 ? '服务查询' : 'Service Search' }}</h3>
7 </div> 7 </div>
8 <div class="pd20"> 8 <div class="pd20">
9 <div class="topsearch"> 9 <div class="topsearch">
10 <el-input v-if="activeTab==0" :placeholder="language==0?'请输入护照号搜索':'Please enter passport number to search'" 10 <el-input :placeholder="language==0?'请输入手机号或邮箱搜索':'Please enter phone or email to search'"
11 v-model="query.passportNo"/> 11 v-model="query.remarks" @keyup.enter="search"/>
12 <el-input v-else :placeholder="language==0?'请输入姓名搜索':'Please enter name to search'"
13 v-model="query.contacts"/>
14 <el-button class="btn-lineG" type="primary" @click="search"> 12 <el-button class="btn-lineG" type="primary" @click="search">
15 <el-icon class="mr20"> 13 <el-icon class="mr20">
16 <Search/> 14 <Search/>
17 </el-icon> 15 </el-icon>
18 {{ language==0?'搜索': 'Search' }} 16 {{ language == 0 ? '搜索' : 'Search' }}
19 </el-button> 17 </el-button>
20 </div> 18 </div>
21 19
22 <div class="stab"> 20 <div class="stab">
23 <div :class="activeTab==0?'active':''" @click="changeActiveTab(0)"> 21 <div :class="activeTab==0?'active':''" @click="changeActiveTab('0')">
24 <img v-show="activeTab!=0" src="@/assets/img/tag01@2x.png"/> 22 <img v-show="activeTab!=0" src="@/assets/img/tag01@2x.png"/>
25 <img v-show="activeTab==0" src="@/assets/img/tag01_dwn@2x.png"/> 23 <img v-show="activeTab==0" src="@/assets/img/tag01_dwn@2x.png"/>
26 {{language==0?'签证服务':'Visa Services'}} 24 {{ language == 0 ? '签证服务' : 'Visa Services' }}
27 </div> 25 </div>
28 <div :class="activeTab==1?'active':''" @click="changeActiveTab(1)"> 26 <div :class="activeTab==1?'active':''" @click="changeActiveTab('1')">
29 <img v-show="activeTab!=1" src="@/assets/img/tag02@2x.png"/> 27 <img v-show="activeTab!=1" src="@/assets/img/tag02@2x.png"/>
30 <img v-show="activeTab==1" src="@/assets/img/tag02_dwn@2x.png"/> 28 <img v-show="activeTab==1" src="@/assets/img/tag02_dwn@2x.png"/>
31 {{language==0?'酒店预定':'Hotel Reservation'}} 29 {{ language == 0 ? '酒店预定' : 'Hotel Reservation' }}
32 </div> 30 </div>
33 <div :class="activeTab==2?'active':''" @click="changeActiveTab(2)"> 31 <div :class="activeTab==2?'active':''" @click="changeActiveTab('2')">
34 <img v-show="activeTab!=2" src="@/assets/img/tag03@2x.png"/> 32 <img v-show="activeTab!=2" src="@/assets/img/tag03@2x.png"/>
35 <img v-show="activeTab==2" src="@/assets/img/tag03_dwn@2x.png"/> 33 <img v-show="activeTab==2" src="@/assets/img/tag03_dwn@2x.png"/>
36 {{language==0?'接送服务':'Pick-up Service'}} 34 {{ language == 0 ? '接送服务' : 'Pick-up Service' }}
37 </div> 35 </div>
38 </div> 36 </div>
39 <div> 37 <div>
40 <div v-for="item in list"> 38 <div v-if="activeTab==0">
41 {{item}} 39 <el-empty v-if="list1.length==0"/>
40 <visa-info v-else :list="list1"></visa-info>
41 </div>
42 <div v-if="activeTab==1">
43 <el-empty v-if="list2.length==0"/>
44 <reservation-info v-else :list="list2" min></reservation-info>
45 </div>
46 <div v-if="activeTab==2">
47 <el-empty v-if="list3.length==0"/>
48 <pickup-info v-else :list="list3"></pickup-info>
42 </div> 49 </div>
43 </div> 50 </div>
44
45 <el-empty v-if="list.length==0"/>
46 </div> 51 </div>
47 </el-card> 52 </el-card>
48 </div> 53 </div>
...@@ -50,65 +55,89 @@ ...@@ -50,65 +55,89 @@
50 </template> 55 </template>
51 56
52 <script setup> 57 <script setup>
53 import {ref, computed, onMounted} from 'vue' 58 import {ref, onMounted} from 'vue'
54 import {getHomeCarQuery, getHomeInviteQuery, getHomeRoomQuery} from "@/apiPc/common"; 59 import { getHomeInviteQuery, getHomeRoomQuery} from "@/apiPc/common";
55 import {ElMessage} from "element-plus"; 60 import {ElMessage} from "element-plus";
56 import {useStorage} from "@vueuse/core/index"; 61 import {useStorage} from "@vueuse/core/index";
62 import VisaInfo from "/src/viewsPc/center/info/visaInfo.vue";
63 import ReservationInfo from "/@/viewsPc/center/info/reservationInfo.vue";
64 import {useRouteQuery} from '@vueuse/router'
65 import PickupInfo from "/@/viewsPc/center/info/pickupInfo.vue";
66 import { getHomePickQuery} from "/@/apiPc/match";
57 67
58 const language = useStorage('language', 0) 68 const language = useStorage('language', 0)
59 const activeTab = ref(0) 69 const activeTab = useRouteQuery('n', 0)
70 const searchVal = useRouteQuery('s')
60 const form = ref({}) 71 const form = ref({})
61 const list = ref([]) 72 const list1 = ref([])
73 const list2 = ref([])
74 const list3 = ref([])
62 const query = ref({ 75 const query = ref({
63 status: 1 76 status: 1,
77 remarks: ''
64 }) 78 })
65 const loading = ref(false) 79 const loading = ref(false)
80
66 function changeActiveTab(n) { 81 function changeActiveTab(n) {
67 activeTab.value = n 82 activeTab.value = n
68 query.value.passportNo = '' 83 if (query.value.remarks) {
69 query.value.contacts = '' 84 search()
85 }
70 } 86 }
87
88 onMounted(() => {
89 if (searchVal.value) {
90 query.value.remarks = searchVal.value
91 search()
92 }
93 })
94
95
71 function search() { 96 function search() {
72 if (!query.value.passportNo && activeTab.value == 0) { 97 if (!query.value.remarks) {
73 ElMessage.warning(language.value==0?'请输入护照号搜索':'Please enter keyword to search') 98 ElMessage.warning(language.value == 0 ? '请输入手机号或邮箱搜索' : 'Please enter phone or email to search')
74 return 99 return
75 } 100 }
76 if (!query.value.contacts && activeTab.value != 0) { 101
77 ElMessage.warning(language.value==0?'请输入关键字搜索':'Please enter keyword to search') 102 if (activeTab.value == 0) {
78 return 103 delete query.value.status
104 }else{
105 query.value.status = 1
79 } 106 }
107
108 searchVal.value = query.value.remarks
80 loading.value = true 109 loading.value = true
81 if(activeTab.value == 0){ 110 if (activeTab.value == 0) {
82 // 签证服务 111 // 签证服务
83 getHomeInviteQuery(query.value).then(res=>{ 112 getHomeInviteQuery(query.value).then(res => {
84 if (!res.data||res.data.length==0) { 113 if (!res.data || res.data.length == 0) {
85 list.value = [] 114 list1.value = []
86 ElMessage.warning(language.value==0?'未找到结果,请重新查询':'No result') 115 ElMessage.warning(language.value == 0 ? '未查到预定信息' : 'No reservation information found.')
87 return 116 return
88 } 117 }
89 list.value = res.data 118 list1.value = res.data
90 }) 119 })
91 } 120 }
92 if(activeTab.value == 1){ 121 if (activeTab.value == 1) {
93 // 酒店预定 122 // 酒店预定
94 getHomeRoomQuery(query.value).then(res=>{ 123 getHomeRoomQuery(query.value).then(res => {
95 if (!res.data||res.data.length==0) { 124 if (!res.data || res.data.length == 0) {
96 list.value = [] 125 list2.value = []
97 ElMessage.warning(language.value==0?'未找到结果,请重新查询':'No result') 126 ElMessage.warning(language.value == 0 ? '未查到预定信息' : 'No reservation information found.')
98 return 127 return
99 } 128 }
100 list.value = res.data 129 list2.value = res.data
101 }) 130 })
102 } 131 }
103 if(activeTab.value == 2){ 132 if (activeTab.value == 2) {
104 // 接送服务 133 // 接送服务
105 getHomeCarQuery(query.value).then(res=>{ 134 getHomePickQuery(query.value).then(res => {
106 if (!res.data||res.data.length==0) { 135 if (!res.data || res.data.length == 0) {
107 list.value = [] 136 list3.value = []
108 ElMessage.warning(language.value==0?'未找到结果,请重新查询':'No result') 137 ElMessage.warning(language.value == 0 ? '未查到预定信息' : 'No reservation information found.')
109 return 138 return
110 } 139 }
111 list.value = res.data 140 list3.value = res.data
112 }) 141 })
113 } 142 }
114 } 143 }
...@@ -118,17 +147,47 @@ function search() { ...@@ -118,17 +147,47 @@ function search() {
118 .highlight { 147 .highlight {
119 background: yellow; 148 background: yellow;
120 } 149 }
121 .topsearch{display: flex;gap:10px; 150
122 .el-input {--el-input-bg-color: #F5F7F9;height: 50px; 151 .topsearch {
123 --el-input-border-radius: 10px;} 152 display: flex;
124 .btn-lineG{border-radius: 10px;height: 50px;width: 130px;font-size: 20px;} 153 gap: 10px;
154
155 .el-input {
156 --el-input-bg-color: #F5F7F9;
157 height: 50px;
158 --el-input-border-radius: 10px;
159 }
160
161 .btn-lineG {
162 border-radius: 10px;
163 height: 50px;
164 width: 130px;
165 font-size: 20px;
166 }
125 } 167 }
126 .stab{display: flex;gap: 20px;margin: 20px 0 0 ; 168
127 div{font-weight: 400;padding: 10px 0;display: flex;align-items: center; 169 .stab {
128 font-size: 18px;cursor: pointer; 170 display: flex;
171 gap: 20px;
172 margin: 20px 0 0;
173
174 div {
175 font-weight: 400;
176 padding: 10px 0;
177 display: flex;
178 align-items: center;
179 font-size: 18px;
180 cursor: pointer;
129 color: #4C5359; 181 color: #4C5359;
130 img{height: 30px;} 182
183 img {
184 height: 30px;
185 }
186 }
187
188 .active {
189 color: #030303;
190 border-bottom: 2px solid #030303;
131 } 191 }
132 .active{color: #030303;border-bottom: 2px solid #030303;}
133 } 192 }
134 </style> 193 </style>
......
...@@ -141,8 +141,9 @@ onMounted(() => { ...@@ -141,8 +141,9 @@ onMounted(() => {
141 currMenu = _.find((language.value == 0? menus3.value: menus3En.value), (m) => { 141 currMenu = _.find((language.value == 0? menus3.value: menus3En.value), (m) => {
142 return m.routeName === route.name 142 return m.routeName === route.name
143 }) 143 })
144 if(currMenu) {
144 currMenu.isActive = true 145 currMenu.isActive = true
145 146 }
146 }) 147 })
147 148
148 const toInfo = (item, list) => { 149 const toInfo = (item, list) => {
......
1 <template>
2 <div class="pd20">
3 <div v-for="b in list" class="item">
4 <div class="title">
5 <label class="orangeTag"> {{ language == 0 ? '接送服务' : 'Station Transfer' }} </label>
6 <span>{{ language == 0 ? '编号:' : 'No.' }} {{ b.id }}</span>
7 </div>
8
9 <div class="status-po">
10 <span v-if="b.serviceType == '2'" class="bg-gary">{{ 'Drop-off' }}</span>
11 <span v-if="b.serviceType == '1'" class="bg-blue">{{ 'Pick-up' }}</span>
12 </div>
13
14 <el-row align="middle" class="pd20 mt10" justify="space-between">
15 <el-col>
16 <el-descriptions>
17 <el-descriptions-item :label="language == 0 ? '联系人:' : 'Contact Person:'">
18 {{ b.name }}
19 </el-descriptions-item>
20 <el-descriptions-item :label="language == 0 ? '联系电话:' : 'Phone Number:'">
21 {{ b.phone }}
22 </el-descriptions-item>
23 <el-descriptions-item :label="language == 0 ? '预计抵达时间:' : 'Estimated Arrival Time:'">
24 {{ b.arrivalDate }} {{b.arrivaTime}}
25 </el-descriptions-item>
26 <el-descriptions-item :label="language == 0 ? '航班/车次:' : 'Flight/Train Number:'">
27 {{ b.flight }}
28 </el-descriptions-item>
29 <el-descriptions-item :label="language == 0 ? '机场/火车站:' : 'Airport/Train Station:'">
30 {{ b.stationName }}
31 </el-descriptions-item>
32 <el-descriptions-item :label="language == 0 ? '航站楼:' : 'Terminal:'">
33 {{ b.terminal }}
34 </el-descriptions-item>
35 <el-descriptions-item :label="language == 0 ? '接机/站人数:' : 'Number of Passengers:'">
36 {{ b.counts }}
37 </el-descriptions-item>
38 <el-descriptions-item :label="language == 0 ? '送达酒店:' : 'Destination Hotel:'">
39 {{ b.hotle }}
40 </el-descriptions-item>
41 </el-descriptions>
42 </el-col>
43 </el-row>
44
45 <!-- <el-row align="middle" class="pd20 mt10" justify="space-between">-->
46 <!-- <el-col >-->
47 <!-- <div>-->
48 <!-- <p>{{language == 0 ? '联系人:' : 'Contact Person:'}} {{ b.name }}</p>-->
49 <!-- <p>{{language == 0 ? '联系电话:' : 'Phone Number:'}} {{ b.phone }}</p>-->
50 <!-- </div>-->
51 <!-- </el-col>-->
52 <!-- </el-row>-->
53 </div>
54
55 <affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
56 </div>
57 </template>
58
59 <script setup>
60 import {getUplaodFile} from "/src/apiPc/match";
61 import {fillImgUrl} from "/src/utils/ruoyi";
62 import AffixInvitationView from "/src/viewsPc/match/components/affix-invitation-view.vue";
63 import {ref} from "vue";
64 import {useStorage} from "@vueuse/core";
65
66 const language = useStorage('language', 0)
67 const affixInvitationRef = ref(null)
68
69 defineProps({
70 list: {
71 type: Array,
72 default: () => []
73 },
74 min: {
75 type: Boolean,
76 default: false
77 },
78 })
79
80 function goDetail(b) {
81 affixInvitationRef.value.open(b)
82 }
83
84 function handleDownload(b) {
85 getUplaodFile({id: b.id}).then(res => {
86 window.open(fillImgUrl(res.msg), '_blank')
87 })
88 }
89 </script>
90
91 <style scoped lang="scss">
92 .bigMoney {
93 font-size: 24px;
94 font-family: "DIN Alternate";
95 }
96
97 .name {
98 font-size: 18px;
99 margin: 0;
100 }
101
102 .status-po {
103 position: absolute;
104 right: 0;
105 top: 0;
106 font-size: 12px;
107 color: #FFFFFF;
108
109 span {
110 border-radius: 0px 10px 0px 10px;
111 padding: 4px 10px;
112 }
113
114 .bg-danger {
115 background: #E60012;
116 }
117
118 .bg-warning {
119 background: #e89f39;
120 }
121
122 .bg-pink {
123 background: #F740A6;
124 }
125
126 .bg-primary {
127 background: var(--el-color-primary)
128 }
129
130 .bg-blue {
131 background: #00a0e9
132 }
133 }
134
135 .indexTitle {
136 margin: 20px 0 12px;
137 overflow: visible;
138 padding: 0 20px 15px;
139 border-bottom: 1px solid #e5e5e5;
140
141 .fr {
142 margin: -8px 0 0
143 }
144
145 h3 {
146 display: inline-block;
147 font-size: 16px;
148 color: var(--el-color-primary);
149 }
150 }
151
152 .item {
153 .name {
154 font-size: 18px;
155 color: #000000;
156 margin: 0 0 10px;
157 }
158
159 p {
160 margin: 8px 0 0;
161 color: #707070;
162 font-size: 14px;
163 }
164
165 margin: 0 0 20px;
166 border: 1px solid #E5E5E5;
167 border-radius: 10px;
168 position: relative;
169
170 .bbody {
171 padding: 0 15px 20px;
172 }
173
174 .title {
175 background: #F7F7F7;
176 border-bottom: 1px solid #E5E5E5;
177
178 span {
179 font-size: 14px;
180 color: #4C5359;
181 }
182 }
183
184 .title label {
185 border-radius: 5px 0 5px 0;
186 font-size: 12px;
187 color: #fff;
188 padding: 4px 10px;
189 margin-right: 10px;
190 }
191
192 .blueTag {
193 background-color: #1EC886;
194 }
195
196 .purpleTag {
197 background-color: #717bef;
198 }
199
200 .orangeTag {
201 background-color: #ff8124;
202 }
203 }
204
205 .billFoot {
206 .price {
207 width: 100%;
208 justify-content: space-between;
209 }
210 }
211
212 .billFoot .tip {
213 font-size: 24px;
214 color: #999;
215 font-weight: 500;
216 margin: 0 20px;
217 }
218
219 .status {
220 position: absolute;
221 right: 10px;
222 bottom: 60px;
223 white-space: nowrap;
224
225 .warning {
226 color: #ff8124;
227 }
228
229 .danger {
230 color: #da2a2a;
231 }
232
233 .gary {
234 color: #666;
235 }
236
237 .success {
238 color: #1EC886;
239 }
240 }
241 </style>
1 <template>
2 <div class="pd20">
3 <div v-for="b in list" class="item">
4 <div class="title">
5 <label v-if="b.orderType == 0" class="blueTag"> {{ language == 0 ? '酒店' : 'HOTEL' }} </label>
6 <label v-if="b.orderType == 1" class="purpleTag"> {{ language == 0 ? '车辆' : 'TRANSPORTATION' }} </label>
7 <label v-if="b.orderType == 2" class="orangeTag"> {{ language == 0 ? '餐饮' : 'DINING' }} </label>
8 <label v-if="b.orderType == 3" class="orangeTag"> {{ language == 0 ? '化妆' : 'MakeUp' }} </label>
9 <label v-if="b.orderType == 4" class="orangeTag"> {{ language == 0 ? '拍摄' : 'Shooting ' }} </label>
10 <label v-if="b.orderType == 5" class="orangeTag"> {{ language == 0 ? '票务' : 'TICKETING ' }} </label>
11
12 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
13 </div>
14
15 <div class="status-po">
16 <span v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'" class="bg-warning">
17 {{ language == 0 ? '待支付' : 'Unpaid' }}
18 </span>
19 <span v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')" class="bg-warning">{{
20 language == 0 ? '已取消' : 'Canceled'
21 }}</span>
22 <span v-if="b.status == '1'" class="bg-blue">{{ language == 0 ? '支付成功' : 'successful' }}</span>
23 <span v-if="b.status == '2'" class="bg-warning">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
24 <span v-if="b.status == '3'||b.status == '4'" class="bg-danger">{{
25 language == 0 ? '已退订' : 'Refunded'
26 }}</span>
27 <span v-if="b.status == '7'" class="bg-danger">{{
28 language == 0 ? '退款审核中' : 'Refund in review'
29 }}</span>
30 <span v-if="b.status == '-1'" class="bg-blue">{{
31 language == 0 ? '已核销' : 'Completed'
32 }}</span>
33 </div>
34
35 <el-row align="middle" class="pd20 mt10" justify="space-between">
36 <el-col :lg="9" :md="12" :sm="12" :xs="24">
37 <div v-if="b.orderType == 0">
38 <h3 class="name">{{ b.name }}</h3>
39 <p v-if="language==0">{{ b.messageObj?.roomStayDate }}</p>
40 <p v-else>{{ b.messageObj?.roomStayDate.replace('共', ' total ').replace('晚', ' days') }}</p>
41 <p>{{ b.messageObj?.roomInfo }}</p>
42
43 </div>
44 <div v-if="b.orderType == 1">
45 <h3 class="name">{{ b.name }}</h3>
46 <div v-for="(car,index) in b.messageObj.carsList" :key="index">
47 <p v-if="car.num>0">{{ car.typeName }}{{ car.name }}{{ car.num }} {{
48 language == 0 ? '辆' : 'Cars'
49 }}</p>
50 </div>
51 <!-- <p>{{b.messageObj}}</p>-->
52 <!-- <p>{{b.extJsonObj}}</p>-->
53 </div>
54 <div v-if="b.orderType == 2">
55 <h3 class="name">{{ b.name }}</h3>
56 <div v-for="(n,index) in b.messageObj.foodsList" :key="index">
57 <p v-if="n.num > 0">
58 {{ n.name }}({{ n.categoryName }}) * <span>{{ n.num }} {{ language == 0 ? '份' : 'pcs' }}</span>
59 </p>
60 </div>
61 <p>{{ language == 0 ? '配送日期' : 'Delivery Date' }}{{ b.extJsonObj.dcEnd }} ~
62 {{ b.extJsonObj.dcEnd }}</p>
63
64 </div>
65 <div v-if="b.orderType==3 ||b.orderType == 4">
66 <h3 class="name">{{ b.name }}</h3>
67 <p>
68 {{
69 dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]
70 }}
71 </p>
72 </div>
73
74 <div v-if="b.orderType==5">
75 <h3 class="name">{{ b.name }}</h3>
76 <p>
77 <!-- {{-->
78 <!-- dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]-->
79 <!-- }}-->
80 {{ b.extJsonObj.ticketDate.name }}
81 </p>
82 </div>
83 </el-col>
84 <el-col :lg="6" :md="12" :sm="12" :xs="24">
85 <div v-if="b.orderType == 0">
86 <p>{{ b.messageObj?.roomName }}</p>
87 <p>{{ b.messageObj?.roomInfo }}</p>
88 </div>
89 <div v-if="b.orderType == 1">
90 </div>
91 <div v-if="b.orderType == 2">
92 </div>
93 <div v-if="b.orderType == 3||b.orderType == 4">
94 <p>{{ b.extJsonObj.packageName }}</p>
95 </div>
96 <div v-if="b.orderType == 5">
97 <p>{{ b.extJsonObj.packageName }}</p>
98 </div>
99 </el-col>
100 <el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
101 <span class="text-warning"> {{ language == 0 ? '¥' : '$' }}
102 <span class="bigMoney">{{ language == 0 ? b.total : b.totalEn }}</span>
103 </span>
104 </el-col>
105 <el-col :lg="6" :md="16" :sm="16" :xs="16">
106 <div class="text-right mb20 text-danger" v-if="b.paymentType!='4'&&b.paymentType!='5'">
107 <el-countdown
108 v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
109 :value="b.countdown"
110 format="mm:ss"
111 value-style="color:#E60012;font-size:16px;"
112 @finish="finish(b)"/>
113 </div>
114
115 <div class="text-right">
116 <el-button v-if="(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0 &&!min" class="mb10" plain round
117 size="small" type="success"
118 @click="Rebook(b)">
119 {{ language == 0 ? '再次预订' : 'Rebook' }}
120 </el-button>
121 <el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
122 {{ language == 0 ? '详情' : 'Detail' }}
123 </el-button>
124 <el-button v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0') &&!min" class="mb10"
125 plain round size="small" type="primary" @click="goDetail(b)">
126 <span v-if="b.paymentType=='4'||b.paymentType=='5'">{{language == 0 ? '上传凭证' : 'Upload Receipt'}}</span>
127 <span v-else>{{ language == 0 ? '支付' : 'Pay' }}</span>
128 </el-button>
129 <el-button v-if="b.viewStatus==0 &&!min" class="mb10" plain round size="small" type="warning"
130 @click="cancel(b)">
131 {{ language == 0 ? '取消订单' : 'Cancel Order' }}
132 </el-button>
133 <el-button v-if="b.viewStatus==5 && !min" class="mb10" plain round size="small" @click="unsubscribe(b)">
134 {{ language == 0 ? '退订' : 'Unsubscribe' }}
135 </el-button>
136
137 </div>
138 </el-col>
139 </el-row>
140 </div>
141 </div>
142 </template>
143
144 <script setup>
145 import dayjs from "dayjs";
146 import {useStorage} from "@vueuse/core";
147 import {cancelOrder, cancelOrder2} from "/@/apiPc/booking";
148 import {ElMessage} from "element-plus";
149 import {getCurrentInstance} from "@vue/runtime-core";
150
151 defineProps({
152 list: {
153 type: Array,
154 default: () => []
155 },
156 min: {
157 type: Boolean,
158 default: false
159 },
160 })
161
162 const {proxy} = getCurrentInstance()
163
164 const language = useStorage('language', 0)
165 const router = useRouter()
166
167 function finish(bill) {
168 bill.status = '2'
169 // getList()
170 }
171
172 function Rebook(row) {
173 console.log(row)
174 if (row.orderType == 0) {
175 router.push({
176 name: 'hotelDetail',
177 params: {
178 cptId: row.activeId,
179 hotelId: row.hotelId
180 },
181 query: {
182 id: row.extId
183 }
184 })
185 } else {
186 router.push({
187 name: 'ticket',
188 params: {
189 activeId: row.activeId,
190 }
191 })
192 }
193 }
194
195 function goDetail(b) {
196 router.push({
197 name: 'bookingPay',
198 query: {
199 orderId: b.id,
200 orderType: b.orderType
201 }
202 })
203 }
204
205 const cancel = (row) => {
206 //取消订单
207 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => {
208 return cancelOrder2(row.id).then(res => {
209 getList()
210 ElMessage({
211 message: language.value == 0 ? '操作成功' : 'Successful operation!',
212 type: 'success'
213 })
214 })
215 })
216 }
217
218 const unsubscribe = (row) => {
219 proxy.$modal.confirm(language.value == 0 ? `确定退款吗 ?` : 'Are you sure to refund?').then(() => {
220 return cancelOrder(row.id).then(res => {
221 getList()
222 ElMessage({
223 message: language.value == 0 ? '已提交退款,请等待审核!' : 'Refund has been submitted, please wait for review!',
224 type: 'success'
225 })
226 })
227 })
228 }
229
230 </script>
231
232 <style lang="scss" scoped>
233 .bigMoney {
234 font-size: 24px;
235 font-family: "DIN Alternate";
236 }
237
238 .name {
239 font-size: 18px;
240 margin: 0;
241 }
242
243 .status-po {
244 position: absolute;
245 right: 0;
246 top: 0;
247 font-size: 12px;
248 color: #FFFFFF;
249
250 span {
251 border-radius: 0px 10px 0px 10px;
252 padding: 4px 10px;
253 }
254
255 .bg-danger {
256 background: #E60012;
257 }
258
259 .bg-warning {
260 background: #e89f39;
261 }
262
263 .bg-pink {
264 background: #F740A6;
265 }
266
267 .bg-primary {
268 background: var(--el-color-primary)
269 }
270
271 .bg-blue {
272 background: #00a0e9
273 }
274 }
275
276 .indexTitle {
277 margin: 20px 0 12px;
278 overflow: visible;
279 padding: 0 20px 15px;
280 border-bottom: 1px solid #e5e5e5;
281
282 .fr {
283 margin: -8px 0 0
284 }
285
286 h3 {
287 display: inline-block;
288 font-size: 16px;
289 color: var(--el-color-primary);
290 }
291 }
292
293 .item {
294 .name {
295 font-size: 18px;
296 color: #000000;
297 margin: 0 0 10px;
298 }
299
300 p {
301 margin: 8px 0 0;
302 color: #707070;
303 font-size: 14px;
304 }
305
306 margin: 0 0 20px;
307 border: 1px solid #E5E5E5;
308 border-radius: 10px;
309 position: relative;
310
311 .bbody {
312 padding: 0 15px 20px;
313 }
314
315 .title {
316 background: #F7F7F7;
317 border-bottom: 1px solid #E5E5E5;
318
319 span {
320 font-size: 14px;
321 color: #4C5359;
322 }
323 }
324
325 .title label {
326 border-radius: 5px 0 5px 0;
327 font-size: 12px;
328 color: #fff;
329 padding: 4px 10px;
330 margin-right: 10px;
331 }
332
333 .blueTag {
334 background-color: #1EC886;
335 }
336
337 .purpleTag {
338 background-color: #717bef;
339 }
340
341 .orangeTag {
342 background-color: #ff8124;
343 }
344 }
345
346 .billFoot {
347 .price {
348 width: 100%;
349 justify-content: space-between;
350 }
351 }
352
353 .billFoot .tip {
354 font-size: 24px;
355 color: #999;
356 font-weight: 500;
357 margin: 0 20px;
358 }
359
360 .status {
361 position: absolute;
362 right: 10px;
363 bottom: 60px;
364 white-space: nowrap;
365
366 .warning {
367 color: #ff8124;
368 }
369
370 .danger {
371 color: #da2a2a;
372 }
373
374 .gary {
375 color: #666;
376 }
377
378 .success {
379 color: #1EC886;
380 }
381 }
382
383 </style>
1 <template>
2 <div class="pd20">
3 <div v-for="b in list" class="item">
4 <div class="title">
5 <label class="orangeTag"> {{ b.applicatTypeName }} </label>
6 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
7 </div>
8
9 <div class="status-po">
10 <span v-if="b.status == '0'" class="bg-gary">{{ 'Under Review' }}</span>
11 <span v-if="b.status == '1'" class="bg-blue">{{ 'Approved' }}</span>
12 <span v-if="b.status == '2'" class="bg-danger">{{ 'Rejected' }}</span>
13 </div>
14
15 <el-row align="middle" class="pd20 mt10" justify="space-between">
16 <el-col :lg="9" :md="12" :sm="12" :xs="24">
17 <div>
18 <h3 class="name">{{ b.fullName }}</h3>
19 <p>{{ b.email }}</p>
20 <p>{{ b.createTime }}</p>
21 </div>
22 </el-col>
23 <el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
24 <span class="text-warning"> {{ b.invitationTypeName }} </span>
25 </el-col>
26 <el-col :lg="6" :md="16" :sm="16" :xs="16">
27 <div class="text-right">
28 <el-button class="mb10" :disabled="b.emailFlag!='1'" plain round size="small" type="primary"
29 @click="handleDownload(b)">
30 {{ language == 0 ? '下载邀请函' : 'Download Invitation' }}
31 </el-button>
32 <el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
33 {{ language == 0 ? '详情' : 'Detail' }}
34 </el-button>
35 </div>
36 </el-col>
37 </el-row>
38 </div>
39
40 <affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
41 </div>
42 </template>
43
44 <script setup >
45 import {getUplaodFile} from "/src/apiPc/match";
46 import {fillImgUrl} from "/src/utils/ruoyi";
47 import AffixInvitationView from "/src/viewsPc/match/components/affix-invitation-view.vue";
48 import {ref} from "vue";
49 import {useStorage} from "@vueuse/core";
50
51 const language = useStorage('language', 0)
52 const affixInvitationRef = ref(null)
53
54 defineProps({
55 list: {
56 type: Array,
57 default: () => []
58 },
59 min: {
60 type: Boolean,
61 default: false
62 },
63 })
64
65 function goDetail(b) {
66 affixInvitationRef.value.open(b)
67 }
68
69 function handleDownload(b) {
70 getUplaodFile({id: b.id}).then(res => {
71 window.open(fillImgUrl(res.msg), '_blank')
72 })
73 }
74 </script>
75
76 <style scoped lang="scss">
77 .bigMoney {
78 font-size: 24px;
79 font-family: "DIN Alternate";
80 }
81
82 .name {
83 font-size: 18px;
84 margin: 0;
85 }
86
87 .status-po {
88 position: absolute;
89 right: 0;
90 top: 0;
91 font-size: 12px;
92 color: #FFFFFF;
93
94 span {
95 border-radius: 0px 10px 0px 10px;
96 padding: 4px 10px;
97 }
98
99 .bg-danger {
100 background: #E60012;
101 }
102
103 .bg-warning {
104 background: #e89f39;
105 }
106
107 .bg-pink {
108 background: #F740A6;
109 }
110
111 .bg-primary {
112 background: var(--el-color-primary)
113 }
114
115 .bg-blue {
116 background: #00a0e9
117 }
118 }
119
120 .indexTitle {
121 margin: 20px 0 12px;
122 overflow: visible;
123 padding: 0 20px 15px;
124 border-bottom: 1px solid #e5e5e5;
125
126 .fr {
127 margin: -8px 0 0
128 }
129
130 h3 {
131 display: inline-block;
132 font-size: 16px;
133 color: var(--el-color-primary);
134 }
135 }
136
137 .item {
138 .name {
139 font-size: 18px;
140 color: #000000;
141 margin: 0 0 10px;
142 }
143
144 p {
145 margin: 8px 0 0;
146 color: #707070;
147 font-size: 14px;
148 }
149
150 margin: 0 0 20px;
151 border: 1px solid #E5E5E5;
152 border-radius: 10px;
153 position: relative;
154
155 .bbody {
156 padding: 0 15px 20px;
157 }
158
159 .title {
160 background: #F7F7F7;
161 border-bottom: 1px solid #E5E5E5;
162
163 span {
164 font-size: 14px;
165 color: #4C5359;
166 }
167 }
168
169 .title label {
170 border-radius: 5px 0 5px 0;
171 font-size: 12px;
172 color: #fff;
173 padding: 4px 10px;
174 margin-right: 10px;
175 }
176
177 .blueTag {
178 background-color: #1EC886;
179 }
180
181 .purpleTag {
182 background-color: #717bef;
183 }
184
185 .orangeTag {
186 background-color: #ff8124;
187 }
188 }
189
190 .billFoot {
191 .price {
192 width: 100%;
193 justify-content: space-between;
194 }
195 }
196
197 .billFoot .tip {
198 font-size: 24px;
199 color: #999;
200 font-weight: 500;
201 margin: 0 20px;
202 }
203
204 .status {
205 position: absolute;
206 right: 10px;
207 bottom: 60px;
208 white-space: nowrap;
209
210 .warning {
211 color: #ff8124;
212 }
213
214 .danger {
215 color: #da2a2a;
216 }
217
218 .gary {
219 color: #666;
220 }
221
222 .success {
223 color: #1EC886;
224 }
225 }
226 </style>
...@@ -9,150 +9,9 @@ ...@@ -9,150 +9,9 @@
9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>--> 9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>-->
10 </div> 10 </div>
11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/> 11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
12 12 <reservation-info v-else :list="list"></reservation-info>
13 <div class="pd20">
14 <div v-for="b in list" class="item">
15 <div class="title">
16 <label v-if="b.orderType == 0" class="blueTag"> {{ language == 0 ? '酒店' : 'HOTEL' }} </label>
17 <label v-if="b.orderType == 1" class="purpleTag"> {{ language == 0 ? '车辆' : 'TRANSPORTATION' }} </label>
18 <label v-if="b.orderType == 2" class="orangeTag"> {{ language == 0 ? '餐饮' : 'DINING' }} </label>
19 <label v-if="b.orderType == 3" class="orangeTag"> {{ language == 0 ? '化妆' : 'MakeUp' }} </label>
20 <label v-if="b.orderType == 4" class="orangeTag"> {{ language == 0 ? '拍摄' : 'Shooting ' }} </label>
21 <label v-if="b.orderType == 5" class="orangeTag"> {{ language == 0 ? '票务' : 'TICKETING ' }} </label>
22
23 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
24 </div>
25
26 <div class="status-po">
27 <span v-if="b.status == '0'&&b.surplus!='0,0'&&b.surplus!='0'" class="bg-warning">
28 {{ language == 0 ? '待支付' : 'Unpaid' }}
29 </span>
30 <span v-if="b.status == '0'&&(b.surplus=='0,0'||b.surplus=='0')" class="bg-warning">{{
31 language == 0 ? '已取消' : 'Canceled'
32 }}</span>
33 <span v-if="b.status == '1'" class="bg-blue">{{ language == 0 ? '支付成功' : 'successful' }}</span>
34 <span v-if="b.status == '2'" class="bg-warning">{{ language == 0 ? '已取消' : 'Canceled' }}</span>
35 <span v-if="b.status == '3'||b.status == '4'" class="bg-danger">{{
36 language == 0 ? '已退订' : 'Refunded'
37 }}</span>
38 <span v-if="b.status == '7'" class="bg-danger">{{
39 language == 0 ? '退款审核中' : 'Refund in review'
40 }}</span>
41 <span v-if="b.status == '-1'" class="bg-blue">{{
42 language == 0 ? '已核销' : 'Completed'
43 }}</span>
44 </div>
45
46 <el-row align="middle" class="pd20 mt10" justify="space-between">
47 <el-col :lg="9" :md="12" :sm="12" :xs="24">
48 <div v-if="b.orderType == 0">
49 <h3 class="name">{{ b.name }}</h3>
50 <p v-if="language==0">{{ b.messageObj?.roomStayDate }}</p>
51 <p v-else>{{ b.messageObj?.roomStayDate.replace('共', ' total ').replace('晚', ' days') }}</p>
52 <p>{{ b.messageObj?.roomInfo }}</p>
53
54 </div>
55 <div v-if="b.orderType == 1">
56 <h3 class="name">{{ b.name }}</h3>
57 <div v-for="(car,index) in b.messageObj.carsList" :key="index">
58 <p v-if="car.num>0">{{ car.typeName }}{{ car.name }}{{ car.num }} {{
59 language == 0 ? '辆' : 'Cars'
60 }}</p>
61 </div>
62 <!-- <p>{{b.messageObj}}</p>-->
63 <!-- <p>{{b.extJsonObj}}</p>-->
64 </div>
65 <div v-if="b.orderType == 2">
66 <h3 class="name">{{ b.name }}</h3>
67 <div v-for="(n,index) in b.messageObj.foodsList" :key="index">
68 <p v-if="n.num > 0">
69 {{ n.name }}({{ n.categoryName }}) * <span>{{ n.num }} {{ language == 0 ? '份' : 'pcs' }}</span>
70 </p>
71 </div>
72 <p>{{ language == 0 ? '配送日期' : 'Delivery Date' }}{{ b.extJsonObj.dcEnd }} ~
73 {{ b.extJsonObj.dcEnd }}</p>
74
75 </div>
76 <div v-if="b.orderType==3 ||b.orderType == 4">
77 <h3 class="name">{{ b.name }}</h3>
78 <p>
79 {{
80 dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]
81 }}
82 </p>
83 </div>
84
85 <div v-if="b.orderType==5">
86 <h3 class="name">{{ b.name }}</h3>
87 <p>
88 <!-- {{-->
89 <!-- dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[0] + '-' + dayjs(b.deliveryTime).format('YYYY-MM-DD') + ' ' + b.extJsonObj.timePeriod?.split('-')[1]-->
90 <!-- }}-->
91 {{ b.extJsonObj.ticketDate.name }}
92 </p>
93 </div>
94 </el-col>
95 <el-col :lg="6" :md="12" :sm="12" :xs="24">
96 <div v-if="b.orderType == 0">
97 <p>{{ b.messageObj?.roomName }}</p>
98 <p>{{ b.messageObj?.roomInfo }}</p>
99 </div>
100 <div v-if="b.orderType == 1">
101 </div>
102 <div v-if="b.orderType == 2">
103 </div>
104 <div v-if="b.orderType == 3||b.orderType == 4">
105 <p>{{ b.extJsonObj.packageName }}</p>
106 </div>
107 <div v-if="b.orderType == 5">
108 <p>{{ b.extJsonObj.packageName }}</p>
109 </div>
110 </el-col>
111 <el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
112 <span class="text-warning"> {{ language == 0 ? '¥' : '$' }}
113 <span class="bigMoney">{{ language == 0 ? b.total : b.totalEn }}</span>
114 </span>
115 </el-col>
116 <el-col :lg="6" :md="16" :sm="16" :xs="16">
117 <div class="text-right mb20 text-danger" v-if="b.paymentType!='4'&&b.paymentType!='5'">
118 <el-countdown
119 v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')"
120 :value="b.countdown"
121 format="mm:ss"
122 value-style="color:#E60012;font-size:16px;"
123 @finish="finish(b)"/>
124 </div>
125
126 <div class="text-right">
127 <el-button v-if="(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0" class="mb10" plain round
128 size="small" type="success"
129 @click="Rebook(b)">
130 {{ language == 0 ? '再次预订' : 'Rebook' }}
131 </el-button>
132 <el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
133 {{ language == 0 ? '详情' : 'Detail' }}
134 </el-button>
135 <el-button v-if="b.status == '0'&&(b.surplus!='0,0'&&b.surplus!='0')" class="mb10"
136 plain round size="small" type="primary" @click="goDetail(b)">
137 <span v-if="b.paymentType=='4'||b.paymentType=='5'">{{language == 0 ? '上传凭证' : 'Upload Receipt'}}</span>
138 <span v-else>{{ language == 0 ? '支付' : 'Pay' }}</span>
139 </el-button>
140 <el-button v-if="b.viewStatus==0" class="mb10" plain round size="small" type="warning"
141 @click="cancel(b)">
142 {{ language == 0 ? '取消订单' : 'Cancel Order' }}
143 </el-button>
144 <el-button v-if="b.viewStatus==5" class="mb10" plain round size="small" type="" @click="unsubscribe(b)">
145 {{ language == 0 ? '退订' : 'Unsubscribe' }}
146 </el-button>
147
148 </div>
149 </el-col>
150 </el-row>
151 </div>
152 </div>
153 </el-card> 13 </el-card>
154 <div class="pd20"></div> 14 <div class="pd20"></div>
155
156 </div> 15 </div>
157 </template> 16 </template>
158 17
...@@ -161,10 +20,8 @@ import {onMounted, getCurrentInstance} from "@vue/runtime-core"; ...@@ -161,10 +20,8 @@ import {onMounted, getCurrentInstance} from "@vue/runtime-core";
161 import {useStorage} from "@vueuse/core/index"; 20 import {useStorage} from "@vueuse/core/index";
162 import {newbilllist} from "@/apiPc/common"; 21 import {newbilllist} from "@/apiPc/common";
163 import useUserStore from "@/store/modules/user"; 22 import useUserStore from "@/store/modules/user";
164 import dayjs from 'dayjs'
165 import {cancelOrder2, cancelOrder} from "/@/apiPc/booking";
166 23
167 import {ElMessage} from "element-plus"; 24 import ReservationInfo from "/@/viewsPc/center/info/reservationInfo.vue";
168 25
169 const router = useRouter() 26 const router = useRouter()
170 const language = useStorage('language', 0) 27 const language = useStorage('language', 0)
...@@ -176,10 +33,6 @@ onMounted(() => { ...@@ -176,10 +33,6 @@ onMounted(() => {
176 getList() 33 getList()
177 }) 34 })
178 35
179 function finish(bill) {
180 bill.status = '2'
181 // getList()
182 }
183 36
184 function getList() { 37 function getList() {
185 newbilllist({createById: user.userId}).then(res => { 38 newbilllist({createById: user.userId}).then(res => {
...@@ -202,65 +55,6 @@ function getList() { ...@@ -202,65 +55,6 @@ function getList() {
202 }) 55 })
203 } 56 }
204 57
205 function goDetail(b) {
206 router.push({
207 name: 'bookingPay',
208 query: {
209 orderId: b.id,
210 orderType: b.orderType
211 }
212 })
213 }
214
215 function Rebook(row) {
216 console.log(row)
217 if (row.orderType == 0) {
218 router.push({
219 name: 'hotelDetail',
220 params: {
221 cptId: row.activeId,
222 hotelId: row.hotelId
223 },
224 query: {
225 id: row.extId
226 }
227 })
228 } else {
229 router.push({
230 name: 'ticket',
231 params: {
232 activeId: row.activeId,
233 }
234 })
235 }
236 }
237
238 const cancel = (row) => {
239 //取消订单
240 proxy.$modal.confirm(language.value == 0 ? '确定取消订单吗 ?' : `Are you sure to cancel the order?`).then(() => {
241 return cancelOrder2(row.id).then(res => {
242 getList()
243 ElMessage({
244 message: language.value == 0 ? '操作成功' : 'Successful operation!',
245 type: 'success'
246 })
247 })
248 })
249 }
250
251 const unsubscribe = (row) => {
252 proxy.$modal.confirm(language.value == 0 ? `确定退款吗 ?` : 'Are you sure to refund?').then(() => {
253 return cancelOrder(row.id).then(res => {
254 getList()
255 ElMessage({
256 message: language.value == 0 ? '已提交退款,请等待审核!' : 'Refund has been submitted, please wait for review!',
257 type: 'success'
258 })
259 })
260 })
261 }
262
263
264 function toInvoice() { 58 function toInvoice() {
265 router.push({ 59 router.push({
266 name: 'invoice' 60 name: 'invoice'
......
...@@ -9,64 +9,21 @@ ...@@ -9,64 +9,21 @@
9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>--> 9 <!-- <el-button class="fr" type="primary" plain @click="toInvoice">{{ language==0?'我的发票':'My Invoice' }}</el-button>-->
10 </div> 10 </div>
11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/> 11 <el-empty v-if="list?.length == 0" :image="`/img/order_no.png`" :image-size="228"/>
12 12 <visa-info v-else :list="list"></visa-info>
13 <div class="pd20">
14 <div v-for="b in list" class="item">
15 <div class="title">
16 <label class="orangeTag"> {{ b.applicatTypeName }} </label>
17 <span>{{ language == 0 ? '订单编号:' : 'No.' }} {{ b.id }}</span>
18 </div>
19
20 <div class="status-po">
21 <span v-if="b.status == '0'" class="bg-gary">{{ 'Under Review' }}</span>
22 <span v-if="b.status == '1'" class="bg-blue">{{ 'Approved' }}</span>
23 <span v-if="b.status == '2'" class="bg-danger">{{ 'Rejected' }}</span>
24 </div>
25
26 <el-row align="middle" class="pd20 mt10" justify="space-between">
27 <el-col :lg="9" :md="12" :sm="12" :xs="24">
28 <div>
29 <h3 class="name">{{ b.fullName }}</h3>
30 <p>{{ b.email }}</p>
31 <p>{{ b.createTime }}</p>
32 </div>
33 </el-col>
34 <el-col :lg="3" :md="6" :sm="6" :xs="6" class="text-center">
35 <span class="text-warning"> {{ b.invitationTypeName }} </span>
36 </el-col>
37 <el-col :lg="6" :md="16" :sm="16" :xs="16">
38 <div class="text-right">
39 <el-button class="mb10" :disabled="b.emailFlag!='1'" plain round size="small" type="primary"
40 @click="handleDownload(b)">
41 {{ language == 0 ? '下载邀请函' : 'Download Invitation' }}
42 </el-button>
43 <el-button class="mb10" plain round size="small" type="primary" @click="goDetail(b)">
44 {{ language == 0 ? '详情' : 'Detail' }}
45 </el-button>
46 </div>
47 </el-col>
48 </el-row>
49 </div>
50 </div>
51 </el-card> 13 </el-card>
52 <affix-invitation-view ref="affixInvitationRef"></affix-invitation-view>
53 </div> 14 </div>
54 </template> 15 </template>
55 16
56 <script setup> 17 <script setup>
57 import {onMounted, getCurrentInstance} from "@vue/runtime-core"; 18 import {onMounted, getCurrentInstance} from "@vue/runtime-core";
58 import {useStorage} from "@vueuse/core/index"; 19 import {useStorage} from "@vueuse/core/index";
59 // import {newbilllist} from "@/apiPc/common";
60 import useUserStore from "@/store/modules/user"; 20 import useUserStore from "@/store/modules/user";
61 // import dayjs from 'dayjs'
62 import {cancelOrder2, cancelOrder} from "/@/apiPc/booking"; 21 import {cancelOrder2, cancelOrder} from "/@/apiPc/booking";
63
64 import {ElMessage} from "element-plus"; 22 import {ElMessage} from "element-plus";
65 import {downInvite, getUplaodFile, getVisaInfo} from "/@/apiPc/match"; 23 import {getVisaInfo} from "/@/apiPc/match";
66 import AffixInvitationView from "/@/viewsPc/match/components/affix-invitation-view.vue";
67 import {ref} from "vue"; 24 import {ref} from "vue";
68 import {useRouter} from "vue-router"; 25 import {useRouter} from "vue-router";
69 import {fillImgUrl} from "/@/utils/ruoyi"; 26 import VisaInfo from "/src/viewsPc/center/info/visaInfo.vue";
70 27
71 const router = useRouter() 28 const router = useRouter()
72 const language = useStorage('language', 0) 29 const language = useStorage('language', 0)
...@@ -74,8 +31,6 @@ const list = ref([]) ...@@ -74,8 +31,6 @@ const list = ref([])
74 const user = useUserStore().user 31 const user = useUserStore().user
75 const {proxy} = getCurrentInstance() 32 const {proxy} = getCurrentInstance()
76 33
77 const affixInvitationRef = ref(null)
78
79 onMounted(() => { 34 onMounted(() => {
80 getList() 35 getList()
81 }) 36 })
...@@ -91,23 +46,6 @@ function getList() { ...@@ -91,23 +46,6 @@ function getList() {
91 }) 46 })
92 } 47 }
93 48
94 function goDetail(b) {
95 affixInvitationRef.value.open(b)
96 // router.push({
97 // name: 'bookingPay',
98 // query: {
99 // orderId: b.id,
100 // orderType: b.orderType
101 // }
102 // })
103 }
104
105 function handleDownload(b) {
106 getUplaodFile({id: b.id}).then(res => {
107 window.open(fillImgUrl(res.msg), '_blank')
108 })
109 }
110
111 function Rebook(row) { 49 function Rebook(row) {
112 console.log(row) 50 console.log(row)
113 if (row.orderType == 0) { 51 if (row.orderType == 0) {
......
...@@ -66,8 +66,9 @@ ...@@ -66,8 +66,9 @@
66 required> 66 required>
67 <div style="padding: 1px"> 67 <div style="padding: 1px">
68 <el-date-picker 68 <el-date-picker
69 v-model="form.pickUpBo.arrivalDate" :disabled-date="disabledDateRZ" 69 v-model="form.pickUpBo.arrivalDate" :disabled-date="disabledDateDP"
70 default-value="'2024-09-27'" format="YYYY-MM-DD" 70 default-value="2025-10-18"
71 format="YYYY-MM-DD"
71 placeholder="YYYY-MM-DD" 72 placeholder="YYYY-MM-DD"
72 style="width: 100%;" type="date" value-format="YYYY-MM-DD" 73 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
73 /> 74 />
...@@ -127,8 +128,8 @@ ...@@ -127,8 +128,8 @@
127 <!-- </el-checkbox-group>--> 128 <!-- </el-checkbox-group>-->
128 <!-- </el-form-item>--> 129 <!-- </el-form-item>-->
129 130
130 <el-form-item :label="language==0?'队伍俱乐部':'Team/Club Name'" prop="pickUpBo.standing" required> 131 <el-form-item :label="language==0?'队伍俱乐部':'Team/Club Name'" prop="downOffBo.standing" required>
131 <el-input v-model="form.pickUpBo.standing"/> 132 <el-input v-model="form.downOffBo.standing"/>
132 </el-form-item> 133 </el-form-item>
133 134
134 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="downOffBo.nationalitys" required> 135 <el-form-item :label="language==0?'国家/地区':'Country/Region'" prop="downOffBo.nationalitys" required>
...@@ -162,7 +163,8 @@ ...@@ -162,7 +163,8 @@
162 <div style="padding: 1px"> 163 <div style="padding: 1px">
163 <el-date-picker 164 <el-date-picker
164 v-model="form.downOffBo.arrivalDate" :disabled-date="disabledDateDP" 165 v-model="form.downOffBo.arrivalDate" :disabled-date="disabledDateDP"
165 default-value="'2024-09-30'" format="YYYY-MM-DD" 166 default-value="2025-10-31"
167 format="YYYY-MM-DD"
166 placeholder="YYYY-MM-DD" 168 placeholder="YYYY-MM-DD"
167 style="width: 100%;" type="date" value-format="YYYY-MM-DD" 169 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
168 /> 170 />
...@@ -199,8 +201,8 @@ ...@@ -199,8 +201,8 @@
199 :limit="1"/> 201 :limit="1"/>
200 </el-form-item> 202 </el-form-item>
201 203
202 <el-form-item :label="language==0?'酒店预订单':'Hotel Reservation'" prop="pickUpBo.hotleFile" required> 204 <el-form-item :label="language==0?'酒店预订单':'Hotel Reservation'" prop="downOffBo.hotleFile" required>
203 <image-upload v-model="form.pickUpBo.hotleFile" :button-text="language==0?'上传':'Upload'" 205 <image-upload v-model="form.downOffBo.hotleFile" :button-text="language==0?'上传':'Upload'"
204 :is-show-tip="false" 206 :is-show-tip="false"
205 :limit="1"/> 207 :limit="1"/>
206 </el-form-item> 208 </el-form-item>
...@@ -389,11 +391,11 @@ const open = (params) => { ...@@ -389,11 +391,11 @@ const open = (params) => {
389 form.value = { 391 form.value = {
390 pickUpBo: { 392 pickUpBo: {
391 serviceType: 1, 393 serviceType: 1,
392 arrivalDate: '2024-09-27' 394 arrivalDate: ''
393 }, 395 },
394 downOffBo: { 396 downOffBo: {
395 serviceType: 2, 397 serviceType: 2,
396 arrivalDate: '2024-09-30' 398 arrivalDate: ''
397 }, 399 },
398 type: ['1'], 400 type: ['1'],
399 } 401 }
...@@ -529,13 +531,11 @@ function disabledDateRZ(date) { ...@@ -529,13 +531,11 @@ function disabledDateRZ(date) {
529 } 531 }
530 532
531 function disabledDateDP(date) { 533 function disabledDateDP(date) {
532 const today = dayjs().format('YYYY-MM-DD') 534 let min= dayjs('2025-10-18').valueOf()
533 // if ('2024-07-18' < today) { 535 let max =dayjs('2025-10-31').valueOf()
534 // return !((date.getTime() >= dayjs(today).valueOf()) && (date.getTime() <= dayjs('2024-07-22').valueOf())) 536 if (date.getTime() < min || date.getTime() > max) {
535 // } else { 537 return true
536 // return !((date.getTime() >= dayjs('2024-07-18').valueOf()) && (date.getTime() <= dayjs('2024-07-22').valueOf())) 538 }
537 // }
538 return !(date.getTime() == dayjs('2024-09-30').valueOf())
539 } 539 }
540 </script> 540 </script>
541 541
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!