9d44b18e by 杨炀

Merge branch 'dev' of https://code.itechtop.cn/yangyang/dance-pc into dev

# Conflicts:
#	vite.config.js
2 parents bafb8f2d 2c5c2b59
...@@ -174,9 +174,11 @@ import { useRouter, useRoute } from 'vue-router' ...@@ -174,9 +174,11 @@ import { useRouter, useRoute } from 'vue-router'
174 import { useStorage } from '@vueuse/core/index' 174 import { useStorage } from '@vueuse/core/index'
175 import useUserStore from '@/store/modules/user' 175 import useUserStore from '@/store/modules/user'
176 import { getVehicleByCheckIn } from '@/apiPc/booking' 176 import { getVehicleByCheckIn } from '@/apiPc/booking'
177 import { computed } from 'vue'
177 178
179 const useStore = useUserStore()
180 const user = computed(() => useUserStore().user)
178 const { proxy } = getCurrentInstance() 181 const { proxy } = getCurrentInstance()
179 const user = useUserStore().user
180 const router = useRouter() 182 const router = useRouter()
181 const route = useRoute() 183 const route = useRoute()
182 const language = useStorage('language', 0) 184 const language = useStorage('language', 0)
...@@ -245,6 +247,11 @@ async function changeSelectOut() { ...@@ -245,6 +247,11 @@ async function changeSelectOut() {
245 } 247 }
246 248
247 async function handleSubmit(v) { 249 async function handleSubmit(v) {
250 if (!user.value) {
251 useStore.setVisitor()
252 return
253 }
254
248 let checkOut = {} 255 let checkOut = {}
249 let obj = {} 256 let obj = {}
250 if (v == 0) { 257 if (v == 0) {
...@@ -275,7 +282,7 @@ async function handleSubmit(v) { ...@@ -275,7 +282,7 @@ async function handleSubmit(v) {
275 } 282 }
276 const res = await booking.checkOrderPay('1') 283 const res = await booking.checkOrderPay('1')
277 if (!res.data) { 284 if (!res.data) {
278 await proxy.$modal.confirm(language == 0 ? '您有未支付的订单,请前往支付!' : 'You have unpaid orders, please proceed to payment!') 285 await proxy.$modal.confirm(language.value == 0 ? '您有未支付的订单,请前往支付!' : 'You have unpaid orders, please proceed to payment!')
279 await router.push({ 286 await router.push({
280 path: '/center/myReservation' 287 path: '/center/myReservation'
281 }) 288 })
...@@ -292,7 +299,7 @@ async function handleSubmit(v) { ...@@ -292,7 +299,7 @@ async function handleSubmit(v) {
292 299
293 300
294 function goOrder(item, car) { 301 function goOrder(item, car) {
295 if (!user) { 302 if (!user.value) {
296 useUserStore().setReLogin() 303 useUserStore().setReLogin()
297 return 304 return
298 } 305 }
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <div class="box"> 3 <div class="box">
4
5 <el-card :body-style="{ padding: '0px' }" class="mt20"> 4 <el-card :body-style="{ padding: '0px' }" class="mt20">
6 <div slot="header"> 5 <div slot="header">
7 <div class="bg-lineg"> 6 <div class="bg-lineg">
8 <div class="pl-back" @click="goBack"> 7 <div class="pl-back" @click="goBack">
9 <el-icon> 8 <el-icon>
10 <ArrowLeftBold/> 9 <ArrowLeftBold />
11 </el-icon> 10 </el-icon>
12 返回 11 返回
13 </div> 12 </div>
...@@ -78,8 +77,10 @@ ...@@ -78,8 +77,10 @@
78 {{ paymentType != 3 ? '开票信息' : 'Invoice information' }} 77 {{ paymentType != 3 ? '开票信息' : 'Invoice information' }}
79 </div> 78 </div>
80 <div class="border-rr mt20 pd20"> 79 <div class="border-rr mt20 pd20">
81 <el-form ref="formRef" :label-width="paymentType != 3 ?'100':'150'" :model="form" :rules="rules" 80 <el-form
82 class="mw500"> 81 ref="formRef" :label-width="paymentType != 3 ?'100':'150'" :model="form" :rules="rules"
82 class="mw500"
83 >
83 <el-form-item :label="language==0 ?'开票金额':'Amount'"> 84 <el-form-item :label="language==0 ?'开票金额':'Amount'">
84 <span class="bigprice">{{ paymentType != 3 ? '¥' : '€' }}{{ totalMoney }}</span> 85 <span class="bigprice">{{ paymentType != 3 ? '¥' : '€' }}{{ totalMoney }}</span>
85 </el-form-item> 86 </el-form-item>
...@@ -96,41 +97,45 @@ ...@@ -96,41 +97,45 @@
96 <el-radio value="1">{{ language == 0 ? '个人非企业' : 'Individual' }}</el-radio> 97 <el-radio value="1">{{ language == 0 ? '个人非企业' : 'Individual' }}</el-radio>
97 </el-radio-group> 98 </el-radio-group>
98 </el-form-item> 99 </el-form-item>
99 <el-form-item v-if="form.invoiceType=='0'" :label="language==0 ?`发票抬头`:'Invoice Title'" 100 <el-form-item
101 v-if="form.invoiceType=='0'" :label="language==0 ?`发票抬头`:'Invoice Title'"
100 prop="invoiceTitle" 102 prop="invoiceTitle"
101 required> 103 required
102 <el-input v-model="form.invoiceTitle"/> 104 >
105 <el-input v-model="form.invoiceTitle" />
103 </el-form-item> 106 </el-form-item>
104 <el-form-item v-if="form.invoiceType=='0'" :label="language==0 ?`税号`:'Duty Paragraph'" 107 <el-form-item
108 v-if="form.invoiceType=='0'" :label="language==0 ?`税号`:'Duty Paragraph'"
105 prop="invoiceTfn" 109 prop="invoiceTfn"
106 required> 110 required
107 <el-input v-model="form.invoiceTfn"/> 111 >
112 <el-input v-model="form.invoiceTfn" />
108 </el-form-item> 113 </el-form-item>
109 <el-form-item v-if="form.invoiceForm=='1'" :label="`邮箱`" prop="invoiceEmail" required> 114 <el-form-item v-if="form.invoiceForm=='1'" :label="`邮箱`" prop="invoiceEmail" required>
110 <el-input v-model="form.invoiceEmail"/> 115 <el-input v-model="form.invoiceEmail" />
111 </el-form-item> 116 </el-form-item>
112 <el-form-item label="备注" prop="remarks"> 117 <el-form-item label="备注" prop="remarks">
113 <el-input v-model="form.remarks" type="textarea"/> 118 <el-input v-model="form.remarks" type="textarea" />
114 </el-form-item> 119 </el-form-item>
115 <div v-if="form.invoiceForm=='3'&&form.invoiceType=='0'"> 120 <div v-if="form.invoiceForm=='3'&&form.invoiceType=='0'">
116 <el-form-item :label="`地址`" prop="invoiceAddress" required> 121 <el-form-item :label="`地址`" prop="invoiceAddress" required>
117 <el-input v-model="form.invoiceAddress"/> 122 <el-input v-model="form.invoiceAddress" />
118 </el-form-item> 123 </el-form-item>
119 <el-form-item :label="`电话`" prop="invoicePhone" required> 124 <el-form-item :label="`电话`" prop="invoicePhone" required>
120 <el-input v-model="form.invoicePhone"/> 125 <el-input v-model="form.invoicePhone" />
121 </el-form-item> 126 </el-form-item>
122 <el-form-item :label="`开户行`" prop="invoiceBank" required> 127 <el-form-item :label="`开户行`" prop="invoiceBank" required>
123 <el-input v-model="form.invoiceBank"/> 128 <el-input v-model="form.invoiceBank" />
124 </el-form-item> 129 </el-form-item>
125 <el-form-item :label="`账户`" prop="invoiceAccount" required> 130 <el-form-item :label="`账户`" prop="invoiceAccount" required>
126 <el-input v-model="form.invoiceAccount"/> 131 <el-input v-model="form.invoiceAccount" />
127 </el-form-item> 132 </el-form-item>
128 </div> 133 </div>
129 </el-form> 134 </el-form>
130 135
131 <div v-if="remark" class="tip"> 136 <div v-if="remark" class="tip">
132 <label>{{ paymentType != 3 ? '开票须知' : 'Invoice Notice' }}:</label> 137 <label>{{ paymentType != 3 ? '开票须知' : 'Invoice Notice' }}:</label>
133 <div v-html="remark"/> 138 <div v-html="remark" />
134 </div> 139 </div>
135 </div> 140 </div>
136 </el-col> 141 </el-col>
...@@ -144,33 +149,33 @@ ...@@ -144,33 +149,33 @@
144 </el-col> 149 </el-col>
145 </el-row> 150 </el-row>
146 </el-card> 151 </el-card>
147 <div style="height: 60px;"></div> 152 <div style="height: 60px;" />
148 153
149 </div> 154 </div>
150 </div> 155 </div>
151 <address-list-dialog ref="dialogAddressListRef" @submit="getAddress"/> 156 <address-list-dialog ref="dialogAddressListRef" @submit="getAddress" />
152 <!-- 开票须知 --> 157 <!-- 开票须知 -->
153 </template> 158 </template>
154 159
155 <script setup> 160 <script setup>
156 import {useRouter, useRoute} from "vue-router"; 161 import { useRouter, useRoute } from 'vue-router'
157 import {ref, onMounted} from "vue"; 162 import { ref, onMounted } from 'vue'
158 import {useStorage} from "@vueuse/core/index"; 163 import { useStorage } from '@vueuse/core/index'
159 import AddressListDialog from "@/viewsPc/booking/component/addressList" 164 import AddressListDialog from '@/viewsPc/booking/component/addressList'
160 import dayjs from 'dayjs' 165 import dayjs from 'dayjs'
161 import {ElMessage, ElMessageBox} from "element-plus"; 166 import { ElMessage, ElMessageBox } from 'element-plus'
162 import useUserStore from "@/store/modules/user"; 167 import useUserStore from '@/store/modules/user'
163 import {getCurrentInstance} from "@vue/runtime-core"; 168 import { getCurrentInstance } from '@vue/runtime-core'
164 import { 169 import {
165 addressList, 170 addressList,
166 editInvoice, 171 editInvoice,
167 getInvoiceDetail, 172 getInvoiceDetail,
168 getBaseInfoByActiveId, 173 getBaseInfoByActiveId,
169 getTicketOrderInfo, 174 getTicketOrderInfo,
170 getTicketInfoByActivityId, submitInvoice, 175 getTicketInfoByActivityId, submitInvoice
171 } from "@/apiPc/booking"; 176 } from '@/apiPc/booking'
172 177
173 const {proxy} = getCurrentInstance() 178 const { proxy } = getCurrentInstance()
174 const user = useUserStore().user 179 const user = useUserStore().user
175 const language = useStorage('language', 0) 180 const language = useStorage('language', 0)
176 const router = useRouter() 181 const router = useRouter()
...@@ -188,32 +193,32 @@ const totalMoney = ref(0) ...@@ -188,32 +193,32 @@ const totalMoney = ref(0)
188 const remark = ref('') 193 const remark = ref('')
189 const rules = ref({ 194 const rules = ref({
190 invoiceType: [ 195 invoiceType: [
191 {required: true, message: language.value == 0 ? '请选择发票类型' : 'Please select invoice type', trigger: 'change'} 196 { required: true, message: language.value == 0 ? '请选择发票类型' : 'Please select invoice type', trigger: 'change' }
192 ], 197 ],
193 invoiceEmail: [ 198 invoiceEmail: [
194 {required: true, message: language.value == 0 ? '请输入邮箱' : 'Please enter email', trigger: 'blur'} 199 { required: true, message: language.value == 0 ? '请输入邮箱' : 'Please enter email', trigger: 'blur' }
195 ], 200 ],
196 invoiceForm: [ 201 invoiceForm: [
197 {required: true, message: language.value == 0 ? '请选择发票形式' : 'Please select invoice form', trigger: 'change'} 202 { required: true, message: language.value == 0 ? '请选择发票形式' : 'Please select invoice form', trigger: 'change' }
198 ], 203 ],
199 invoiceTitle: [ 204 invoiceTitle: [
200 {required: true, message: language.value == 0 ? '请输入发票抬头' : 'Please enter invoice title', trigger: 'blur'} 205 { required: true, message: language.value == 0 ? '请输入发票抬头' : 'Please enter invoice title', trigger: 'blur' }
201 ], 206 ],
202 invoiceTfn: [ 207 invoiceTfn: [
203 {required: true, message: language.value == 0 ? '请输入税号' : 'Please enter TFN', trigger: 'blur'} 208 { required: true, message: language.value == 0 ? '请输入税号' : 'Please enter TFN', trigger: 'blur' }
204 ], 209 ],
205 invoiceAddress: [ 210 invoiceAddress: [
206 {required: true, message: language.value == 0 ? '请输入地址' : 'Please enter address', trigger: 'blur'} 211 { required: true, message: language.value == 0 ? '请输入地址' : 'Please enter address', trigger: 'blur' }
207 ], 212 ],
208 invoicePhone: [ 213 invoicePhone: [
209 {required: true, message: language.value == 0 ? '请输入电话' : 'Please enter phone', trigger: 'blur'} 214 { required: true, message: language.value == 0 ? '请输入电话' : 'Please enter phone', trigger: 'blur' }
210 ], 215 ],
211 invoiceBank: [ 216 invoiceBank: [
212 {required: true, message: language.value == 0 ? '请输入开户行' : 'Please enter bank', trigger: 'blur'} 217 { required: true, message: language.value == 0 ? '请输入开户行' : 'Please enter bank', trigger: 'blur' }
213 ], 218 ],
214 invoiceAccount: [ 219 invoiceAccount: [
215 {required: true, message: language.value == 0 ? '请输入账户' : 'Please enter account', trigger: 'blur'} 220 { required: true, message: language.value == 0 ? '请输入账户' : 'Please enter account', trigger: 'blur' }
216 ], 221 ]
217 }) 222 })
218 const isEdit = ref(false) 223 const isEdit = ref(false)
219 const ticketForm = ref({}) 224 const ticketForm = ref({})
...@@ -233,20 +238,20 @@ onMounted(() => { ...@@ -233,20 +238,20 @@ onMounted(() => {
233 isEdit.value = true 238 isEdit.value = true
234 getList() 239 getList()
235 } 240 }
236 // 获取票务订单信息 241 // 获取票务订单信息
237 getTickInfo() 242 getTickInfo()
238 }) 243 })
239 244
240 // 票务订单详情 245 // 票务订单详情
241 async function getTickInfo() { 246 async function getTickInfo() {
242 const res = await getTicketOrderInfo({orderId: route.query.orderId}) 247 const res = await getTicketOrderInfo({ orderId: route.query.orderId })
243 ticketForm.value = res.data 248 ticketForm.value = res.data
244 try { 249 try {
245 ticketForm.value.extJson = JSON.parse(ticketForm.value.extJson) 250 ticketForm.value.extJson = JSON.parse(ticketForm.value.extJson)
246 ticketForm.value.extJson.ticketDate = JSON.parse(ticketForm.value.extJson.ticketDate) 251 ticketForm.value.extJson.ticketDate = JSON.parse(ticketForm.value.extJson.ticketDate)
247 ticketForm.value.extJson.ticketType = JSON.parse(ticketForm.value.extJson.ticketType) 252 ticketForm.value.extJson.ticketType = JSON.parse(ticketForm.value.extJson.ticketType)
248 cptId = ticketForm.value.extJson.ticketDate.activityId 253 cptId = ticketForm.value.extJson.ticketDate.activityId
249 totalMoney.val = ticketForm.value.extJson.total 254 totalMoney.value.val = ticketForm.value.extJson.total
250 message.value = JSON.parse(ticketForm.value.extJson.message) 255 message.value = JSON.parse(ticketForm.value.extJson.message)
251 console.log(message.value) 256 console.log(message.value)
252 paymentType.value = ticketForm.value.paymentType 257 paymentType.value = ticketForm.value.paymentType
...@@ -261,14 +266,14 @@ async function getTickInfo() { ...@@ -261,14 +266,14 @@ async function getTickInfo() {
261 } 266 }
262 267
263 async function getDetail(activeId) { 268 async function getDetail(activeId) {
264 const res = await getTicketInfoByActivityId({activityId: activeId}) 269 const res = await getTicketInfoByActivityId({ activityId: activeId })
265 matchForm.value = res.data 270 matchForm.value = res.data
266 console.log(matchForm.value) 271 console.log(matchForm.value)
267 } 272 }
268 273
269 function getList() { 274 function getList() {
270 getInvoiceDetail(invoiceId.value).then(res => { 275 getInvoiceDetail(invoiceId.value).then(res => {
271 form.value = res.data; 276 form.value = res.data
272 totalMoney.value = form.value.total 277 totalMoney.value = form.value.total
273 }) 278 })
274 } 279 }
...@@ -313,14 +318,14 @@ function submit() { ...@@ -313,14 +318,14 @@ function submit() {
313 318
314 function update() { 319 function update() {
315 editInvoice(form.value).then(res => { 320 editInvoice(form.value).then(res => {
316 //返回列表 321 // 返回列表
317 backList() 322 backList()
318 }) 323 })
319 } 324 }
320 325
321 function add() { 326 function add() {
322 submitInvoice(form.value).then(res => { 327 submitInvoice(form.value).then(res => {
323 //返回列表 328 // 返回列表
324 backList() 329 backList()
325 }) 330 })
326 } 331 }
......
...@@ -13,20 +13,6 @@ ...@@ -13,20 +13,6 @@
13 <div class="address">{{ TickForm.address }}</div> 13 <div class="address">{{ TickForm.address }}</div>
14 </div> 14 </div>
15 15
16 <div class="info">
17 <div class="name">{{ TickForm2.ticketTypeName }}</div>
18 <div class="address">
19 {{ TickForm2.stadiumName }}
20 <span v-if="TickForm2.sessionType=='1000'">{{ language == 0 ? '日间场' : 'Day' }}</span>
21 <span v-else>{{ language == 0 ? '夜间场' : 'Night' }}</span>
22 {{ TickForm2.ticketName }}
23 </div>
24
25 <div v-if="TickForm2.ticketType=='0'" class="address">{{
26 language == 0 ? '剩余数量' : 'Remaining Quantity'
27 }}{{ leftCount }}
28 </div>
29 </div>
30 16
31 <div class="ticket_info mb20"> 17 <div class="ticket_info mb20">
32 <div class="tit_box"> 18 <div class="tit_box">
...@@ -153,9 +139,25 @@ ...@@ -153,9 +139,25 @@
153 </div> 139 </div>
154 </div> 140 </div>
155 </div> 141 </div>
156 <!-- 场馆布局图--> 142 <div class="rightBox">
143 <div class="info">
144 <div class="name">{{ TickForm2.ticketTypeName }}</div>
145 <div class="address">
146 {{ TickForm2.stadiumName }} |
147 <span v-if="TickForm2.sessionType=='1000'">{{ language == 0 ? '日间场' : 'Day' }}</span>
148 <span v-else>{{ language == 0 ? '夜间场' : 'Night' }}</span>
149 | {{ TickForm2.ticketName }}
150 </div>
151
152 <div v-if="TickForm2.ticketType=='0'" class="address">{{
153 language == 0 ? '剩余数量' : 'Remaining Quantity'
154 }}: {{ leftCount }}
155 </div>
156 </div>
157 </div>
157 158
158 <div style="margin-top: 95px"> 159 <!-- 场馆布局图-->
160 <div style="margin-top: 30px">
159 <el-image 161 <el-image
160 :preview-src-list="[fillImgUrl(tickImg)]" 162 :preview-src-list="[fillImgUrl(tickImg)]"
161 :src="fillImgUrl(tickImg)" 163 :src="fillImgUrl(tickImg)"
...@@ -709,4 +711,15 @@ div { ...@@ -709,4 +711,15 @@ div {
709 width: 100%; 711 width: 100%;
710 } 712 }
711 } 713 }
714
715 .rightBox {
716 .info {
717 background: rgba(69, 61, 234, 0.04);
718 border-radius: 8px;
719 border: 1px solid #d3d1f6;
720 padding: 20px 0 28px 33px;
721 margin-bottom: 20px;
722 margin-top: 30px;
723 }
724 }
712 </style> 725 </style>
......
1 <template> 1 <template>
2 <div> 2 <div>
3 <!-- top --> 3 <!-- top -->
4 <div class="container top father"> 4 <div class="container top ">
5 <img :src="fillImgUrl(matchForm.ticketImg)" alt="" class="cover_img"> 5 <img :src="fillImgUrl(matchForm.ticketImg)" alt="" class="cover_img">
6 <div class="info"> 6 <div class="info">
7 <div class="title">{{ matchForm.name }}</div> 7 <div class="title">{{ matchForm.name }}</div>
...@@ -176,7 +176,18 @@ ...@@ -176,7 +176,18 @@
176 > 176 >
177 {{ it.name }} 177 {{ it.name }}
178 </div> 178 </div>
179 <div class="father">
180 <el-image
181 v-if="currTick?.images"
182 :src="fillImgUrl(currTick?.images) "
183 class="son"
184 fit="cover"
185 preview-teleported
186 style="width:190px;height: 135px"
187 />
188 </div>
179 </div> 189 </div>
190
180 </div> 191 </div>
181 192
182 193
...@@ -222,15 +233,7 @@ ...@@ -222,15 +233,7 @@
222 </div> 233 </div>
223 234
224 </div> 235 </div>
225 <el-image 236
226 v-if="currTick?.images"
227 :preview-src-list="[fillImgUrl(currTick?.images)]"
228 :src="fillImgUrl(currTick?.images) "
229 class="son"
230 fit="cover"
231 preview-teleported
232 style="width:200px"
233 />
234 </div> 237 </div>
235 </div> 238 </div>
236 239
...@@ -245,10 +248,14 @@ ...@@ -245,10 +248,14 @@
245 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" /> 248 <div v-show="active==1" class="rich_content" v-html="matchForm.ticketDes" />
246 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" /> 249 <div v-show="active==2" class="rich_content" v-html="matchForm.ticketNotice" />
247 250
248 <el-dialog v-model="show" title="" width="1000px"> 251 <el-dialog v-model="show" align-center title="" width="1000px">
249 <div> 252 <div style="padding: 20px">
250 <img :src="fillImgUrl(showUrl)" alt="" style="width: 100%"> 253 <img :src="fillImgUrl(showUrl)" alt="" style="width: 100%">
251 </div> 254 </div>
255 <br>
256 <div style="text-align: center;">
257 <el-button size="large" type="primary" @click="show=false">{{ language == 0 ? '关 闭' : 'close' }}</el-button>
258 </div>
252 </el-dialog> 259 </el-dialog>
253 </div> 260 </div>
254 </div> 261 </div>
...@@ -401,6 +408,9 @@ function selectTick(v) { ...@@ -401,6 +408,9 @@ function selectTick(v) {
401 selectForm.value.latstId = v.id 408 selectForm.value.latstId = v.id
402 selectForm.value.price = v.price 409 selectForm.value.price = v.price
403 selectForm.value.priceEn = v.priceEn 410 selectForm.value.priceEn = v.priceEn
411 // console.log(v)
412 showUrl.value = v.images
413 show.value = true
404 } 414 }
405 415
406 function toSelectSeat() { 416 function toSelectSeat() {
...@@ -778,8 +788,8 @@ getmatchData() ...@@ -778,8 +788,8 @@ getmatchData()
778 788
779 .son { 789 .son {
780 position: absolute; 790 position: absolute;
781 bottom: 30px; 791 top: 0;
782 right: 50px; 792 left: 50px;
783 } 793 }
784 794
785 .remarks { 795 .remarks {
......
...@@ -133,7 +133,7 @@ ...@@ -133,7 +133,7 @@
133 </div> 133 </div>
134 <div class="text-right"> 134 <div class="text-right">
135 <el-button 135 <el-button
136 v-if="(b.orderType == 0||b.orderType == 5)&&b.viewStatus!=0" class="mb10" plain round 136 v-if="(b.orderType == 0||b.orderType == 5||b.orderType==1)&&b.viewStatus!=0" class="mb10" plain round
137 size="small" type="success" 137 size="small" type="success"
138 @click="Rebook(b)" 138 @click="Rebook(b)"
139 > 139 >
...@@ -234,6 +234,12 @@ function goDetail(b) { ...@@ -234,6 +234,12 @@ function goDetail(b) {
234 234
235 function Rebook(row) { 235 function Rebook(row) {
236 console.log(row) 236 console.log(row)
237 if (row.orderType == 1) {
238 return router.push({
239 path: `/booking/car/${row.activeId}`
240 })
241 }
242
237 if (row.orderType == 0) { 243 if (row.orderType == 0) {
238 router.push({ 244 router.push({
239 name: 'hotelDetail', 245 name: 'hotelDetail',
......
...@@ -296,7 +296,7 @@ const data = reactive({ ...@@ -296,7 +296,7 @@ const data = reactive({
296 projectQuery: {}, tableType: 1, 296 projectQuery: {}, tableType: 1,
297 currProjectId: '', 297 currProjectId: '',
298 openTour: false, 298 openTour: false,
299 isNational: false, 299 isNational: false, // 是否为国际赛
300 languageSource: '', singlePersonEntryLimit: '', doublePersonEntryLimit: '' 300 languageSource: '', singlePersonEntryLimit: '', doublePersonEntryLimit: ''
301 }) 301 })
302 const { 302 const {
...@@ -349,15 +349,16 @@ function getAthletesList() { ...@@ -349,15 +349,16 @@ function getAthletesList() {
349 match.getGroupPersonList({ label: '0' }, groupId.value).then(res => { 349 match.getGroupPersonList({ label: '0' }, groupId.value).then(res => {
350 athletesList.value = res.rows 350 athletesList.value = res.rows
351 351
352 if (!isNational.value) {
353 for (const ath of athletesList.value) { 352 for (const ath of athletesList.value) {
354 if (isNational.value && !ath.phone) { 353 if (!isNational.value) {
355 ath.disabled = true
356 } else {
357 ath.disabled = false 354 ath.disabled = false
355 ath.ocrFlag = 1
358 } 356 }
359 } 357 // if (isNational.value && !ath.phone) {
360 console.log(athletesList.value) 358 // ath.disabled = true
359 // } else {
360 // ath.disabled = false
361 // }
361 } 362 }
362 }) 363 })
363 } 364 }
...@@ -525,6 +526,7 @@ function chooseSportman() { ...@@ -525,6 +526,7 @@ function chooseSportman() {
525 } 526 }
526 527
527 function handelOption(id) { 528 function handelOption(id) {
529 if (isNational.value) {
528 const flag = choosedchoosed.value.some(v => v == id) 530 const flag = choosedchoosed.value.some(v => v == id)
529 if (flag) { 531 if (flag) {
530 const ocr = athletesList.value.find(v => v.id === id) || {} 532 const ocr = athletesList.value.find(v => v.id === id) || {}
...@@ -536,7 +538,7 @@ function handelOption(id) { ...@@ -536,7 +538,7 @@ function handelOption(id) {
536 : 'You can complete athletes details through [Athlete Manage') 538 : 'You can complete athletes details through [Athlete Manage')
537 } 539 }
538 } 540 }
539 541 }
540 getProjectList() 542 getProjectList()
541 } 543 }
542 544
......
1 <template> 1 <template>
2 <el-dialog 2 <el-dialog
3 v-model="show" :title="title" width="800px" append-to-body close-icon="CircleClose" center 3 v-model="show" :close-on-click-modal="false" :title="title" append-to-body center
4 :close-on-click-modal="false" class="pcloginpop" 4 class="pcloginpop"
5 destroy-on-close 5 close-icon="CircleClose" destroy-on-close
6 width="800px"
6 > 7 >
7 <!-- 随性人员--> 8
8 <div class="pd10"></div> 9 <!-- 随性人员-->
9 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="160px" inline> 10 <div class="pd10" />
11 <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" inline label-width="160px">
10 <el-row :gutter="30"> 12 <el-row :gutter="30">
11 <el-col :lg="24"> 13 <el-col :lg="24">
12 14
13 <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required> 15 <el-form-item :label="language==0?'姓氏':'surname'" prop="xing" required>
14 <el-input v-model="form.xing"/> 16 <el-input v-model="form.xing" />
15 </el-form-item> 17 </el-form-item>
16 <el-form-item :label="language==0?'名':'name'" prop="ming" required> 18 <el-form-item :label="language==0?'名':'name'" prop="ming" required>
17 <el-input v-model="form.ming"/> 19 <el-input v-model="form.ming" />
18 </el-form-item> 20 </el-form-item>
19 <!-- <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>--> 21 <!-- <el-form-item :label="language==0?'证件类型':'ID type'" prop="idcType" required>-->
20 <!-- <el-select v-model="form.idcType" style="width: 100%;">--> 22 <!-- <el-select v-model="form.idcType" style="width: 100%;">-->
...@@ -27,16 +29,16 @@ ...@@ -27,16 +29,16 @@
27 <!-- </el-select>--> 29 <!-- </el-select>-->
28 <!-- </el-form-item>--> 30 <!-- </el-form-item>-->
29 <el-form-item :label="language==0?'护照号':'PassPort Number'" prop="idcCode" required> 31 <el-form-item :label="language==0?'护照号':'PassPort Number'" prop="idcCode" required>
30 <el-input v-model="form.idcCode"/> 32 <el-input v-model="form.idcCode" />
31 </el-form-item> 33 </el-form-item>
32 <el-form-item :label="language==0?'护照文件':'Passport File'" required> 34 <el-form-item :label="language==0?'护照文件':'Passport File'" required>
33 <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> 35 <file-upload v-model="form.passportUrl" :button-text="'Upload'" :is-show-tip="false" :limit="1" />
34 </el-form-item> 36 </el-form-item>
35 <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required> 37 <el-form-item :label="language==0?'出生日期':'Date of Birth'" prop="birth" required>
36 <el-date-picker 38 <el-date-picker
37 v-model="form.birth" 39 v-model="form.birth"
38 style="width: 100%;" 40 format="YYYY-MM-DD"
39 type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" 41 style="width: 100%;" type="date" value-format="YYYY-MM-DD"
40 /> 42 />
41 </el-form-item> 43 </el-form-item>
42 <el-form-item :label="language==0?'性别':'sex'" prop="sex"> 44 <el-form-item :label="language==0?'性别':'sex'" prop="sex">
...@@ -48,7 +50,7 @@ ...@@ -48,7 +50,7 @@
48 50
49 <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr"> 51 <el-form-item :label="language==0?'主要会员角色':'roles'" prop="labelArr">
50 <el-select v-model="form.labelArr" multiple> 52 <el-select v-model="form.labelArr" multiple>
51 <el-option v-for="l in labels" :key="l.value" :value="l.value" :label="language==0?l.label:l.enlabel"/> 53 <el-option v-for="l in labels" :key="l.value" :label="language==0?l.label:l.enlabel" :value="l.value" />
52 </el-select> 54 </el-select>
53 </el-form-item> 55 </el-form-item>
54 56
...@@ -58,7 +60,7 @@ ...@@ -58,7 +60,7 @@
58 </el-form> 60 </el-form>
59 <template #footer> 61 <template #footer>
60 <div class="dialog-footer text-center"> 62 <div class="dialog-footer text-center">
61 <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ 63 <el-button class="btn-lineG w200px" round type="primary" @click="submitForm">{{
62 language == 0 ? '确定' : 'Save' 64 language == 0 ? '确定' : 'Save'
63 }} 65 }}
64 </el-button> 66 </el-button>
...@@ -68,16 +70,16 @@ ...@@ -68,16 +70,16 @@
68 </template> 70 </template>
69 71
70 <script setup> 72 <script setup>
71 import {reactive, ref, toRefs, watch} from 'vue' 73 import { reactive, ref, toRefs, watch } from 'vue'
72 import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' 74 import { getCurrentInstance, nextTick, onMounted } from '@vue/runtime-core'
73 import * as match from '@/apiPc/match' 75 import * as match from '@/apiPc/match'
74 import {ElMessage} from 'element-plus' 76 import { ElMessage } from 'element-plus'
75 import {nationList} from '@/assets/js/data' 77 import { nationList } from '@/assets/js/data'
76 import _ from 'lodash' 78 import _ from 'lodash'
77 import cache from "@/plugins/cache"; 79 import cache from '@/plugins/cache'
78 import {useStorage} from "@vueuse/core/index"; 80 import { useStorage } from '@vueuse/core/index'
79 81
80 const language= useStorage('language',0) 82 const language = useStorage('language', 0)
81 const certificates = ref([ 83 const certificates = ref([
82 { 84 {
83 value: '0', 85 value: '0',
...@@ -92,42 +94,42 @@ const certificates = ref([ ...@@ -92,42 +94,42 @@ const certificates = ref([
92 label: language.value == 0 ? '其他' : 'Other' 94 label: language.value == 0 ? '其他' : 'Other'
93 } 95 }
94 ]) 96 ])
95 const {proxy} = getCurrentInstance() 97 const { proxy } = getCurrentInstance()
96 const emit = defineEmits(['submitForm']) 98 const emit = defineEmits(['submitForm'])
97 const data = reactive({ 99 const data = reactive({
98 form: { 100 form: {
99 idcType: '1', 101 idcType: '1',
100 sex:'0' 102 sex: '0'
101 }, 103 },
102 rules: { 104 rules: {
103 xing: [{required: true, message: '必填', trigger: 'blur'}], 105 xing: [{ required: true, message: '必填', trigger: 'blur' }],
104 ming: [{required: true, message: '必填', trigger: 'blur'}], 106 ming: [{ required: true, message: '必填', trigger: 'blur' }],
105 idcCode: [{required: true, message: '必填', trigger: 'blur'}], 107 idcCode: [{ required: true, message: '必填', trigger: 'blur' }],
106 birth: [{required: true, message: '必填', trigger: 'change'}], 108 birth: [{ required: true, message: '必填', trigger: 'change' }],
107 sex: [{required: true, message: '必填', trigger: 'change'}], 109 sex: [{ required: true, message: '必填', trigger: 'change' }],
108 labelArr: [{required: true, message: '必填', trigger: 'blur'}] 110 labelArr: [{ required: true, message: '必填', trigger: 'blur' }]
109 }, 111 },
110 rules_cn: { 112 rules_cn: {
111 xing: [{required: true, message: 'required', trigger: 'blur'}], 113 xing: [{ required: true, message: 'required', trigger: 'blur' }],
112 ming: [{required: true, message: 'required', trigger: 'blur'}], 114 ming: [{ required: true, message: 'required', trigger: 'blur' }],
113 idcCode: [{required: true, message: 'required', trigger: 'blur'}], 115 idcCode: [{ required: true, message: 'required', trigger: 'blur' }],
114 birth: [{required: true, message: 'required', trigger: 'change'}], 116 birth: [{ required: true, message: 'required', trigger: 'change' }],
115 address: [{required: true, message: 'required', trigger: 'blur'}], 117 address: [{ required: true, message: 'required', trigger: 'blur' }],
116 sex: [{required: true, message: 'required', trigger: 'change'}], 118 sex: [{ required: true, message: 'required', trigger: 'change' }],
117 labelArr: [{required: true, message: 'required', trigger: 'blur'}] 119 labelArr: [{ required: true, message: 'required', trigger: 'blur' }]
118 }, 120 },
119 show: false, 121 show: false,
120 labels: [ 122 labels: [
121 // {value: '0', label: '运动员', enlabel: 'Athletes'}, 123 // {value: '0', label: '运动员', enlabel: 'Athletes'},
122 {value: '1', label: '教练', enlabel: 'Coach'}, 124 { value: '1', label: '教练', enlabel: 'Coach' },
123 {value: '2', label: '领队', enlabel: 'Head of team'}, 125 { value: '2', label: '领队', enlabel: 'Head of team' },
124 {value: '4', label: '队医', enlabel: 'Team doctor'}, 126 { value: '4', label: '队医', enlabel: 'Team doctor' },
125 {value: '5', label: '翻译', enlabel: 'Interpreter'}, 127 { value: '5', label: '翻译', enlabel: 'Interpreter' },
126 {value: '6', label: '官员', enlabel: 'Official'}, 128 { value: '6', label: '官员', enlabel: 'Official' },
127 {value: '3', label: '其他', enlabel: 'Other'} 129 { value: '3', label: '其他', enlabel: 'Other' }
128 ], 130 ],
129 title: 'Add accompanying personnel', 131 title: 'Add accompanying personnel',
130 cptId:'' 132 cptId: ''
131 }) 133 })
132 const { 134 const {
133 form, 135 form,
...@@ -157,7 +159,7 @@ const open = (params) => { ...@@ -157,7 +159,7 @@ const open = (params) => {
157 }) 159 })
158 } 160 }
159 } 161 }
160 defineExpose({open}) 162 defineExpose({ open })
161 watch(show, (value) => { 163 watch(show, (value) => {
162 if (!value) { 164 if (!value) {
163 form.value = {} 165 form.value = {}
...@@ -172,7 +174,7 @@ function submitForm() { ...@@ -172,7 +174,7 @@ function submitForm() {
172 ElMessage.warning('Please upload your passport file') 174 ElMessage.warning('Please upload your passport file')
173 return 175 return
174 } 176 }
175 if(Array.isArray(form.value.passportUrl)){ 177 if (Array.isArray(form.value.passportUrl)) {
176 form.value.passportUrl = form.value.passportUrl[0].url 178 form.value.passportUrl = form.value.passportUrl[0].url
177 } 179 }
178 proxy.$refs['dialogRef'].validate((valid) => { 180 proxy.$refs['dialogRef'].validate((valid) => {
......
...@@ -420,6 +420,7 @@ function submitForm() { ...@@ -420,6 +420,7 @@ function submitForm() {
420 } 420 }
421 421
422 function saveGroupMember() { 422 function saveGroupMember() {
423 form.value.personId = null
423 match.savePersonForMyGroup(form.value).then(res => { 424 match.savePersonForMyGroup(form.value).then(res => {
424 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 425 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
425 show.value = false 426 show.value = false
......
...@@ -493,6 +493,7 @@ function submitForm() { ...@@ -493,6 +493,7 @@ function submitForm() {
493 // 团队 493 // 团队
494 form.value.groupId = groupId.value 494 form.value.groupId = groupId.value
495 form.value.ocrFlag = '1' 495 form.value.ocrFlag = '1'
496 form.value.personId = null
496 match.savePersonForMyGroup(form.value).then(res => { 497 match.savePersonForMyGroup(form.value).then(res => {
497 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 498 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
498 show.value = false 499 show.value = false
......
...@@ -375,6 +375,7 @@ function submitForm() { ...@@ -375,6 +375,7 @@ function submitForm() {
375 if (groupId.value != 0) { 375 if (groupId.value != 0) {
376 // 团队 376 // 团队
377 form.value.groupId = groupId.value 377 form.value.groupId = groupId.value
378 form.value.personId = null
378 match.savePersonForMyGroup(form.value).then(res => { 379 match.savePersonForMyGroup(form.value).then(res => {
379 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 380 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
380 show.value = false 381 show.value = false
......
...@@ -346,6 +346,7 @@ function addPersonal() { ...@@ -346,6 +346,7 @@ function addPersonal() {
346 346
347 function addGroupMember() { 347 function addGroupMember() {
348 form.value.groupId = groupId 348 form.value.groupId = groupId
349 form.value.personId = null
349 match.savePersonForMyGroup(form.value).then(res => { 350 match.savePersonForMyGroup(form.value).then(res => {
350 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful') 351 ElMessage.success(language.value == 0 ? '保存成功' : 'Save successful')
351 show.value = false 352 show.value = false
......
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
97 <el-table-column :label="language==0?'操作':'Actions'" align="center" fixed="right" width="180"> 97 <el-table-column :label="language==0?'操作':'Actions'" align="center" fixed="right" width="180">
98 <template #default="scope"> 98 <template #default="scope">
99 <el-button 99 <el-button
100 v-if="(!isNational&&(!scope.row.phone))||scope.row.ocrFlag=='0'" link type="danger" 100 v-if="isNational&&scope.row.ocrFlag=='0'" link type="danger"
101 @click="editPerson(scope.row)" 101 @click="editPerson(scope.row)"
102 > 102 >
103 {{ language == 0 ? '完善信息' : 'Complete' }} 103 {{ language == 0 ? '完善信息' : 'Complete' }}
...@@ -159,7 +159,7 @@ const data = reactive({ ...@@ -159,7 +159,7 @@ const data = reactive({
159 title: '选择运动员', 159 title: '选择运动员',
160 noPhotoCanSign: 0, 160 noPhotoCanSign: 0,
161 total: 0, 161 total: 0,
162 isNational: false 162 isNational: false// 是否国际赛
163 }) 163 })
164 const { query, tableData, show, title, loading, noPhotoCanSign, total, isNational } = toRefs(data) 164 const { query, tableData, show, title, loading, noPhotoCanSign, total, isNational } = toRefs(data)
165 const certificates = ref([ 165 const certificates = ref([
......
...@@ -889,8 +889,8 @@ async function handelGeRenNext() { ...@@ -889,8 +889,8 @@ async function handelGeRenNext() {
889 if (res.data == 2) { 889 if (res.data == 2) {
890 await proxy.$modal.confirm( 890 await proxy.$modal.confirm(
891 language.value == 0 891 language.value == 0
892 ? '运动员的WDSF会员号已变更,是否更新?' 892 ? '动员的wdsf信息已发生变更,是否更新?'
893 : 'The athlete`s WDSF membership number has been changed. Should it be updated?' 893 : 'The athlete`s WDSF details have changed. Update now?'
894 ) 894 )
895 // 删除 895 // 删除
896 await match.preCheckForPerson({ type: '2' }) 896 await match.preCheckForPerson({ type: '2' })
...@@ -933,8 +933,8 @@ async function handelPreCheckForGroup(fn) { ...@@ -933,8 +933,8 @@ async function handelPreCheckForGroup(fn) {
933 if (res.data == 2) { 933 if (res.data == 2) {
934 await proxy.$modal.confirm( 934 await proxy.$modal.confirm(
935 language.value == 0 935 language.value == 0
936 ? '运动员的WDSF会员号已变更,是否更新?' 936 ? '动员的wdsf信息已发生变更,是否更新?'
937 : 'The athlete`s WDSF membership number has been changed. Should it be updated?') 937 : 'The athlete`s WDSF details have changed. Update now?')
938 await match.preCheckForGroup(groupId.value, '2') 938 await match.preCheckForGroup(groupId.value, '2')
939 // const flag = await getCheckOcr({ type: '2', groupId: groupId.value }) 939 // const flag = await getCheckOcr({ type: '2', groupId: groupId.value })
940 // if (flag) await fn() 940 // if (flag) await fn()
......
...@@ -79,7 +79,9 @@ ...@@ -79,7 +79,9 @@
79 @response="ocrSuccess" 79 @response="ocrSuccess"
80 /> 80 />
81 <div class="tip"> 81 <div class="tip">
82 <span v-if="language==0">请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span> 82 <span
83 v-if="language==0"
84 >请上传有效身份证件扫描件,用于核实身份信息、申请签证邀请函及购买保险等</span>
83 <span v-else>Please upload a scanned copy of your valid passport for verification of identity information, 85 <span v-else>Please upload a scanned copy of your valid passport for verification of identity information,
84 application of visa invitation letter and purchasing insurance etc.</span> 86 application of visa invitation letter and purchasing insurance etc.</span>
85 </div> 87 </div>
......
...@@ -64,23 +64,26 @@ export default defineConfig(({ mode, command }) => { ...@@ -64,23 +64,26 @@ export default defineConfig(({ mode, command }) => {
64 proxy: { 64 proxy: {
65 // https://cn.vitejs.dev/config/#server-proxy 65 // https://cn.vitejs.dev/config/#server-proxy
66 '/dev-api/ztx-train': { 66 '/dev-api/ztx-train': {
67 target: 'http://192.168.1.118:1896/stage-api', 67 // target: 'http://192.168.1.118:1896/stage-api',
68 // target: 'https://jijin.wtwuxicenter.com/stage-api', 68 target: 'https://jijin.wtwuxicenter.com/stage-api',
69 changeOrigin: true, 69 changeOrigin: true,
70 rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') 70 rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '')
71 }, 71 },
72 '/dev-api/ztx-match': { 72 '/dev-api/ztx-match': {
73 target: 'http://192.168.1.118:8081', 73 // target: 'http://192.168.1.118:8081',
74 target: 'https://jijin.wtwuxicenter.com/stage-api',
74 // target: 'https://wdsfwuxicenter.com/stage-api/', 75 // target: 'https://wdsfwuxicenter.com/stage-api/',
75 changeOrigin: true, 76 changeOrigin: true,
76 rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') 77 rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '')
77 }, 78 },
78 '/dev-api/ztx-webSite': { 79 '/dev-api/ztx-webSite': {
79 target: 'http://192.168.1.118:8081', 80 // target: 'http://192.168.1.118:8081',
81 target: 'https://jijin.wtwuxicenter.com/stage-api',
80 changeOrigin: true, 82 changeOrigin: true,
81 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') 83 rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '')
82 }, 84 },
83 '/dev-api': { 85 '/dev-api': {
86 // target: 'http://192.168.1.118:8081/',
84 // target: 'http://192.168.1.118:8081', 87 // target: 'http://192.168.1.118:8081',
85 target: 'https://jijin.wtwuxicenter.com/stage-api', 88 target: 'https://jijin.wtwuxicenter.com/stage-api',
86 // target: 'https://wdsfwuxicenter.com/stage-api/', 89 // target: 'https://wdsfwuxicenter.com/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!