预定查询
Showing
12 changed files
with
496 additions
and
605 deletions
| ... | @@ -185,4 +185,40 @@ export function queryTicket(qy) { | ... | @@ -185,4 +185,40 @@ export function queryTicket(qy) { |
| 185 | params: qy | 185 | params: qy |
| 186 | }) | 186 | }) |
| 187 | } | 187 | } |
| 188 | 188 | // 酒店 | |
| 189 | export function orderRoomList(qy) { | ||
| 190 | return request({ | ||
| 191 | url: `/ota/orderRoom/getReservationRecordList`, | ||
| 192 | method: 'get', | ||
| 193 | params: qy | ||
| 194 | }) | ||
| 195 | } | ||
| 196 | // 接送 | ||
| 197 | export function orderCarList(qy) { | ||
| 198 | return request({ | ||
| 199 | url: `/ota/orderCar/getReservationRecordList`, | ||
| 200 | method: 'get', | ||
| 201 | params: qy | ||
| 202 | }) | ||
| 203 | } | ||
| 204 | export function orderMealList(qy) { | ||
| 205 | return request({ | ||
| 206 | url: `/ota/orderMeal/getReservationRecordList`, | ||
| 207 | method: 'get', | ||
| 208 | params: qy | ||
| 209 | }) | ||
| 210 | } | ||
| 211 | export function orderScenicList(qy) { | ||
| 212 | return request({ | ||
| 213 | url: `/ota/orderScenic/getReservationRecordList`, | ||
| 214 | method: 'get', | ||
| 215 | params: qy | ||
| 216 | }) | ||
| 217 | } | ||
| 218 | export function orderTicketList(qy) { | ||
| 219 | return request({ | ||
| 220 | url: `/ota/orderTicket/getReservationRecordList`, | ||
| 221 | method: 'get', | ||
| 222 | params: qy | ||
| 223 | }) | ||
| 224 | } | ... | ... |
| ... | @@ -75,7 +75,7 @@ onMounted(() => { | ... | @@ -75,7 +75,7 @@ onMounted(() => { |
| 75 | function getList() { | 75 | function getList() { |
| 76 | query.value.activityId = route.params.cptId | 76 | query.value.activityId = route.params.cptId |
| 77 | getActivityRestaurantList(query.value).then(res => { | 77 | getActivityRestaurantList(query.value).then(res => { |
| 78 | list.value = res.rows | 78 | list.value = res.rows.filter(item => item.viewStatus == '1'); |
| 79 | }) | 79 | }) |
| 80 | } | 80 | } |
| 81 | 81 | ... | ... |
| ... | @@ -75,7 +75,7 @@ onMounted(()=>{ | ... | @@ -75,7 +75,7 @@ onMounted(()=>{ |
| 75 | function getList() { | 75 | function getList() { |
| 76 | loading.value = true | 76 | loading.value = true |
| 77 | booking.getMakeUpList(query.value).then(res=>{ | 77 | booking.getMakeUpList(query.value).then(res=>{ |
| 78 | list.value = res.rows | 78 | list.value = res.rows.filter(item => item.viewStatus == 1) |
| 79 | loading.value = false | 79 | loading.value = false |
| 80 | }).catch(e=>{ | 80 | }).catch(e=>{ |
| 81 | loading.value = false | 81 | loading.value = false | ... | ... |
| ... | @@ -75,7 +75,7 @@ onMounted(()=>{ | ... | @@ -75,7 +75,7 @@ onMounted(()=>{ |
| 75 | function getList() { | 75 | function getList() { |
| 76 | loading.value = true | 76 | loading.value = true |
| 77 | booking.getShootList(query.value).then(res=>{ | 77 | booking.getShootList(query.value).then(res=>{ |
| 78 | list.value = res.rows | 78 | list.value = res.rows.filter(item => item.viewStatus == 1) |
| 79 | loading.value = false | 79 | loading.value = false |
| 80 | }).catch(e=>{ | 80 | }).catch(e=>{ |
| 81 | loading.value = false | 81 | loading.value = false | ... | ... |
| ... | @@ -159,17 +159,20 @@ | ... | @@ -159,17 +159,20 @@ |
| 159 | </div> | 159 | </div> |
| 160 | </div> | 160 | </div> |
| 161 | <div class="select_item_box"> | 161 | <div class="select_item_box"> |
| 162 | <div class="select_item"> | 162 | <div class="select_item-tag"> |
| 163 | <div | 163 | <div |
| 164 | v-for="it in tickList[selectForm.sessionType]" | 164 | v-for="it in tickList[selectForm.sessionType]" |
| 165 | :key="it.id" | 165 | :key="it.id" |
| 166 | :class="[ | 166 | |
| 167 | it.id == selectForm.latstId ? 'tagActive' : 'tag', | 167 | |
| 168 | it.isView==0?'forbid':'' | ||
| 169 | ]" | ||
| 170 | @click="selectTick(it)" | 168 | @click="selectTick(it)" |
| 171 | > | 169 | > |
| 172 | {{ it.name }} | 170 | <span v-if="it.viewStatus === '1'" :class="[ |
| 171 | it.id == selectForm.latstId ? 'tagActive' : 'tag', | ||
| 172 | it.isView==0?'forbid':'' | ||
| 173 | ]" > | ||
| 174 | {{ it.name}} | ||
| 175 | </span> | ||
| 173 | </div> | 176 | </div> |
| 174 | <div class="father"> | 177 | <div class="father"> |
| 175 | <el-image | 178 | <el-image |
| ... | @@ -665,6 +668,65 @@ getmatchData() | ... | @@ -665,6 +668,65 @@ getmatchData() |
| 665 | cursor: no-drop; | 668 | cursor: no-drop; |
| 666 | } | 669 | } |
| 667 | } | 670 | } |
| 671 | .select_item-tag{ | ||
| 672 | display: flex; | ||
| 673 | flex-wrap: wrap; | ||
| 674 | // gap: 10px; | ||
| 675 | user-select: none; | ||
| 676 | |||
| 677 | .tag_t { | ||
| 678 | padding: 1px 15px; | ||
| 679 | font-weight: 400; | ||
| 680 | font-size: 14px; | ||
| 681 | color: #493ceb; | ||
| 682 | border-radius: 6px; | ||
| 683 | border: 1px solid #453dea; | ||
| 684 | margin-left: 5px; | ||
| 685 | } | ||
| 686 | |||
| 687 | .tag { | ||
| 688 | display: flex; | ||
| 689 | padding: 12px 18px; | ||
| 690 | background: #eeeeee; | ||
| 691 | border-radius: 4px; | ||
| 692 | border: 1px solid #29343c; | ||
| 693 | font-size: 14px; | ||
| 694 | color: #4a4a4a; | ||
| 695 | margin-right: 10px; | ||
| 696 | margin-bottom: 10px; | ||
| 697 | cursor: pointer; | ||
| 698 | } | ||
| 699 | |||
| 700 | .tagActive { | ||
| 701 | display: flex; | ||
| 702 | padding: 12px 18px; | ||
| 703 | background: #fff; | ||
| 704 | border-radius: 4px; | ||
| 705 | border: 1px solid #493ceb; | ||
| 706 | font-size: 14px; | ||
| 707 | color: #493ceb; | ||
| 708 | margin-right: 10px; | ||
| 709 | margin-bottom: 10px; | ||
| 710 | cursor: pointer; | ||
| 711 | } | ||
| 712 | |||
| 713 | .tao { | ||
| 714 | border: 1px solid #493ceb; | ||
| 715 | font-size: 14px; | ||
| 716 | color: #493ceb; | ||
| 717 | margin-left: 10px; | ||
| 718 | } | ||
| 719 | |||
| 720 | .tagDisabled { | ||
| 721 | padding: 12px 18px; | ||
| 722 | background: #878787; | ||
| 723 | border-radius: 4px; | ||
| 724 | border: 1px solid #29343c; | ||
| 725 | font-size: 14px; | ||
| 726 | color: #4a4a4a; | ||
| 727 | cursor: no-drop; | ||
| 728 | } | ||
| 729 | } | ||
| 668 | } | 730 | } |
| 669 | 731 | ||
| 670 | .btn { | 732 | .btn { |
| ... | @@ -871,4 +933,11 @@ getmatchData() | ... | @@ -871,4 +933,11 @@ getmatchData() |
| 871 | } | 933 | } |
| 872 | } | 934 | } |
| 873 | } | 935 | } |
| 936 | .view-status-mark { | ||
| 937 | color: #493ceb; /* 与票档主题色一致 */ | ||
| 938 | font-size: 12px; /* 小于票型名称字号,避免突兀 */ | ||
| 939 | margin-left: 4px; /* 与名称保持间距 */ | ||
| 940 | font-weight: 500; | ||
| 941 | |||
| 942 | } | ||
| 874 | </style> | 943 | </style> | ... | ... |
| ... | @@ -100,7 +100,7 @@ onMounted(() => { | ... | @@ -100,7 +100,7 @@ onMounted(() => { |
| 100 | function getList() { | 100 | function getList() { |
| 101 | loading.value = true | 101 | loading.value = true |
| 102 | booking.getScenicList(query.value).then(res => { | 102 | booking.getScenicList(query.value).then(res => { |
| 103 | list.value = res.rows | 103 | list.value = res.rows.filter(item => item.viewStatus == '1'); |
| 104 | loading.value = false | 104 | loading.value = false |
| 105 | console.log(list.value) | 105 | console.log(list.value) |
| 106 | }).catch(e => { | 106 | }).catch(e => { | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog | 2 | <el-dialog v-model="show" :close-on-click-modal="false" :title="language === 0 ? '预订查询' : 'Reservation Inquiry'" |
| 3 | v-model="show" | 3 | align-center append-to-body center class="booking-inquiry-dialog" close-icon="CircleClose" destroy-on-close> |
| 4 | :close-on-click-modal="false" | 4 | <!-- 查询区域 --> |
| 5 | :title="language==0?'日程查询':'Schedule inquiry'" | 5 | <div class="search-container"> |
| 6 | align-center | 6 | <el-input v-model="query" :placeholder="language === 0 ? '输入邮箱号查询' : 'Enter email to Query'" clearable |
| 7 | append-to-body | 7 | @blur="handleSearch" @empty="handleSearch" @enter="handleSearch" class="search-input" /> |
| 8 | center | 8 | <el-button class="btn-lineG" style="color: #fff" @click="handleSearch">{{ |
| 9 | class="pcloginpop" | ||
| 10 | close-icon="CircleClose" | ||
| 11 | destroy-on-close | ||
| 12 | style="min-width:350px;max-width: 500px" | ||
| 13 | > | ||
| 14 | <div v-loading="loading" style="min-height: 500px;height: 50vh;"> | ||
| 15 | |||
| 16 | <div v-if="!type||type==''"> | ||
| 17 | <div class="rItem" @click="type='0'">{{ language == 0 ? '按项目查询' : 'Query by project' }}</div> | ||
| 18 | <div class="rItem" @click="type='1'">{{ language == 0 ? '按团队查询' : 'Query by team' }}</div> | ||
| 19 | <div class="rItem" @click="type='2'">{{ language == 0 ? '按姓名查询' : 'Query by name' }}</div> | ||
| 20 | </div> | ||
| 21 | |||
| 22 | <div v-if="type=='0'"> | ||
| 23 | <div class="flex mt30"> | ||
| 24 | <el-input | ||
| 25 | v-model="query" | ||
| 26 | :placeholder="language==0?'输入项目/ 项目编号查询':'Enter project name or code to Query'" clearable | ||
| 27 | @blur="search" @empty="search" @enter="search" | ||
| 28 | /> | ||
| 29 | <el-button class="btn-lineG" style="color: #fff" @click="search">{{ | ||
| 30 | language == 0 ? '查询' : 'Search' | 9 | language == 0 ? '查询' : 'Search' |
| 31 | }} | 10 | }} |
| 32 | </el-button> | 11 | </el-button> |
| 33 | </div> | 12 | </div> |
| 34 | 13 | ||
| 35 | <div v-if="list.length>0" class="mt30 rollY"> | 14 | <!-- 标签页 --> |
| 36 | <el-timeline> | 15 | <el-tabs v-model="activeName" class="tabs-container" @tab-click="handleTabClick"> |
| 37 | <el-timeline-item | 16 | <el-tab-pane :label="language === 0 ? '酒店' : 'Hotel'" name="1"></el-tab-pane> |
| 38 | v-for="(form, index) in list" | 17 | <el-tab-pane :label="language === 0 ? '化妆' : 'Makeup'" name="2"></el-tab-pane> |
| 39 | :key="index" :timestamp="form.date + ' ' + form.timeStr" | 18 | <el-tab-pane :label="language === 0 ? '接送' : 'Transfer'" name="3"></el-tab-pane> |
| 40 | placement="top" | 19 | <el-tab-pane :label="language === 0 ? '旅游' : 'Tour'" name="4"></el-tab-pane> |
| 41 | > | 20 | <el-tab-pane :label="language === 0 ? '票务' : 'Tickets'" name="5"></el-tab-pane> |
| 42 | <div class="text-primary"> | 21 | </el-tabs> |
| 43 | <span v-if="language==1&&form.projectNameEn">{{ form.projectNameEn }}</span> | ||
| 44 | <span v-else-if="form.projectName">{{ form.projectName }}</span> | ||
| 45 | <span class="fr">{{ form.changCi }} <i | ||
| 46 | v-if="form.changCi" | ||
| 47 | >/ </i> {{ language == 0 ? form.lun : form.lunEn }} </span> | ||
| 48 | </div> | ||
| 49 | <div>{{ form.danceType }}</div> | ||
| 50 | <div>{{ form.address }}</div> | ||
| 51 | </el-timeline-item> | ||
| 52 | </el-timeline> | ||
| 53 | </div> | ||
| 54 | <div v-else> | ||
| 55 | <el-empty /> | ||
| 56 | </div> | ||
| 57 | </div> | ||
| 58 | <div class="searchBox"> | ||
| 59 | <div v-if="type=='1'"> | ||
| 60 | <div class="flex mt20"> | ||
| 61 | <el-input | ||
| 62 | v-model="query2" | ||
| 63 | :placeholder="language==0?'请输入代表队名称至少两字符':'Enter the representing team name,At least two characters'" | ||
| 64 | clearable | ||
| 65 | @blur="searchTeam" @empty="searchTeam" @enter="searchTeam" | ||
| 66 | /> | ||
| 67 | <el-button class="btn-lineG" style="color: #fff" @click="searchTeam"> | ||
| 68 | {{ language == 0 ? '查询' : 'Search' }} | ||
| 69 | </el-button> | ||
| 70 | </div> | ||
| 71 | <span class="tip">*{{ language == 0 ? '模糊查询' : 'Fuzzy query' }}</span> | ||
| 72 | <div v-if="showGroupList" class="text-danger text-center"> | ||
| 73 | {{ language == 0 ? '找到多个团体' : 'Found multiple teams' }} | ||
| 74 | </div> | ||
| 75 | <div v-if="showGroupList" class="groupList rollY"> | ||
| 76 | <ul> | ||
| 77 | <li v-for="(item, index) in groupList" :key="index" @click="showDetail(item)">{{ item }} | ||
| 78 | <el-icon class="fr"> | ||
| 79 | <ArrowRight /> | ||
| 80 | </el-icon> | ||
| 81 | </li> | ||
| 82 | </ul> | ||
| 83 | </div> | ||
| 84 | <div v-if="teamlist.length>0" class="temell mt20 rollY"> | ||
| 85 | <el-collapse accordion> | ||
| 86 | <el-collapse-item v-for="(team,index) in teamlist" :key="index" :name="index" :title="team[0].title"> | ||
| 87 | <el-timeline> | ||
| 88 | <el-timeline-item v-for="(form, index) in team" :key="index" placement="top"> | ||
| 89 | |||
| 90 | <div class="text-primary" style="position: relative;top:-15px"> | ||
| 91 | {{ form.date + ' ' + form.timeStr + ' / ' + form.address }} | ||
| 92 | <span v-if="form.lunEn"> / {{ form.lunEn }}</span> | ||
| 93 | <span v-else-if="form.lun"> / {{ form.lun }}</span> | ||
| 94 | <span v-if="form.changCi "> / {{ language == 0 ? '场次' : 'Session' }}:{{ form.changCi }}</span> | ||
| 95 | </div> | ||
| 96 | <div v-if="form.projectNameEn" class="tname">{{ form.projectNameEn }}</div> | ||
| 97 | <div v-if="form.projectName" class="tname">{{ form.projectName }}</div> | ||
| 98 | <div>{{ form.danceType }}</div> | ||
| 99 | </el-timeline-item> | ||
| 100 | </el-timeline> | ||
| 101 | </el-collapse-item> | ||
| 102 | </el-collapse> | ||
| 103 | </div> | ||
| 104 | </div> | ||
| 105 | 22 | ||
| 106 | <div v-if="type=='2'"> | 23 | <!-- 加载状态 --> |
| 107 | <div class="flex mt30"> | 24 | <div v-if="loading" class="loading-container"> |
| 108 | <el-input | 25 | <el-loading :text="language === 0 ? '查询中...' : 'Searching...'" /> |
| 109 | v-model="query3" | ||
| 110 | :placeholder="language==0?'输入选手姓名查询':'Enter the name of the player to Query'" clearable | ||
| 111 | @blur="personalSearch" @empty="personalSearch" @enter="personalSearch" | ||
| 112 | /> | ||
| 113 | <el-button class="btn-lineG" style="color: #fff" @click="personalSearch">{{ | ||
| 114 | language == 0 ? '查询' : 'Search' | ||
| 115 | }} | ||
| 116 | </el-button> | ||
| 117 | </div> | ||
| 118 | <div v-if="list.length>0" class="temell mt20 rollY"> | ||
| 119 | <el-timeline> | ||
| 120 | <el-timeline-item v-for="(team,j) in list" :key="j" placement="top"> | ||
| 121 | <div v-for="(form, index) in team" v-show="index==0" :key="index"> | ||
| 122 | <div class="text-primary" style="position: relative;top:-15px"> | ||
| 123 | {{ form.date + ' ' + form.timeStr + ' / ' + form.address }} | ||
| 124 | <span v-if="form.lunEn"> / {{ form.lunEn }}</span> | ||
| 125 | <span v-else-if="form.lun"> / {{ form.lun }}</span> | ||
| 126 | <span v-if="form.changCi "> / {{ language == 0 ? '场次' : 'Session' }}:{{ form.changCi }}</span> | ||
| 127 | </div> | ||
| 128 | <div v-if="form.projectNameEn" class="tname">{{ form.projectNameEn }}</div> | ||
| 129 | <div v-if="form.projectName" class="tname">{{ form.projectName }}</div> | ||
| 130 | <div>{{ form.danceType }}</div> | ||
| 131 | </div> | ||
| 132 | <div v-for="(form, index) in team" v-show="index>0" :key="index" style="margin: 8px 0 0"> | ||
| 133 | {{ form.date + ' ' + form.timeStr + ' / ' + form.address }} | ||
| 134 | <span v-if="form.lunEn"> / {{ form.lunEn }}</span> | ||
| 135 | <span v-else-if="form.lun"> / {{ form.lun }}</span> | ||
| 136 | <span v-if="form.changCi "> / {{ language == 0 ? '场次' : 'Session' }}:{{ form.changCi }}</span> | ||
| 137 | </div> | ||
| 138 | </el-timeline-item> | ||
| 139 | </el-timeline> | ||
| 140 | </div> | ||
| 141 | </div> | ||
| 142 | </div> | 26 | </div> |
| 27 | |||
| 28 | <!-- 结果列表 --> | ||
| 29 | <div v-else class="results-container"> | ||
| 30 | <!-- 酒店 --> | ||
| 31 | <el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '1'"> | ||
| 32 | <p><span class="label">{{ language === 0 ? '酒店名称:' : 'Hotel Name:' }}</span>{{ item.hotelName }}</p> | ||
| 33 | <p><span class="label">{{ language === 0 ? '酒店联系人:' : 'Contact Person:' }}</span>{{ item.contact || '-' }} | ||
| 34 | </p> | ||
| 35 | <p><span class="label">{{ language === 0 ? '预定日期:' : 'Booking Date:' }}</span>{{ item.handleDate }}</p> | ||
| 36 | <p><span class="label">{{ language === 0 ? '预定数量:' : 'Quantity:' }}</span>{{ item.roomNum }}</p> | ||
| 37 | <p><span class="label">{{ language === 0 ? '入住人:' : 'Guest:' }}</span>{{ item.rzUsers }}</p> | ||
| 38 | </el-card> | ||
| 39 | |||
| 40 | <!-- 化妆 --> | ||
| 41 | <el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '2'"> | ||
| 42 | <p><span class="label">{{ language === 0 ? '商家名称:' : 'Merchant:' }}</span>{{ item.name }}</p> | ||
| 43 | <p><span class="label">{{ language === 0 ? '套餐名称:' : 'Package:' }}</span>{{ item.meal?.packageName || '-' }}</p> | ||
| 44 | <p><span class="label">{{ language === 0 ? '工作室联系人:' : 'Studio Contact:' }}</span>{{ item.contacts }}</p> | ||
| 45 | <p><span class="label">{{ language === 0 ? '预定数量:' : 'Quantity:' }}</span>{{ item.num }}</p> | ||
| 46 | <p><span class="label">{{ language === 0 ? '预定时间:' : 'Booking Time:' }}</span>{{ item.payDate }}</p> | ||
| 47 | </el-card> | ||
| 48 | |||
| 49 | <!-- 接送 --> | ||
| 50 | <el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '3'"> | ||
| 51 | <p><span class="label">{{ language === 0 ? '出发地:' : 'From:' }}</span>{{ item.resName.split('——')[0] || '-' }} | ||
| 52 | </p> | ||
| 53 | <p><span class="label">{{ language === 0 ? '终点地:' : 'To:' }}</span>{{ item.resName.split('——')[1] || '-' }}</p> | ||
| 54 | <p><span class="label">{{ language === 0 ? '用车日期:' : 'Date:' }}</span>{{ item.revTime }}</p> | ||
| 55 | <p><span class="label">{{ language === 0 ? '乘坐人:' : 'Passengers:' }}</span><span v-html="item.person"></span> | ||
| 56 | </p> | ||
| 57 | </el-card> | ||
| 58 | |||
| 59 | <!-- 旅游 --> | ||
| 60 | <el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '4'"> | ||
| 61 | <p><span class="label">{{ language === 0 ? '景点名称:' : 'Attraction:' }}</span>{{ item.name }}</p> | ||
| 62 | <p><span class="label">{{ language === 0 ? '景区联系人:' : 'Contact:' }}</span>{{ item.contact }}</p> | ||
| 63 | <p><span class="label">{{ language === 0 ? '预约日期:' : 'Booking Date:' }}</span>{{ item.dcStart }}</p> | ||
| 64 | <p><span class="label">{{ language === 0 ? '预约人:' : 'Booker:' }}</span>{{ item.contacts }}</p> | ||
| 65 | <p><span class="label">{{ language === 0 ? '集合地点:' : 'Meeting Point:' }}</span>{{ item.address || '-' }} | ||
| 66 | </p> | ||
| 67 | <p><span class="label">{{ language === 0 ? '集合时间:' : 'Meeting Time:' }}</span>{{ item.startTime || '-' }}</p> | ||
| 68 | </el-card> | ||
| 69 | |||
| 70 | <!-- 票务 --> | ||
| 71 | <el-card v-for="(item, index) in list" :key="index" class="result-card" v-if="activeName === '5'"> | ||
| 72 | <p><span class="label">{{ language === 0 ? '票型:' : 'Ticket Type:' }}</span>{{ item.ticketTypeStr }}</p> | ||
| 73 | <p><span class="label">{{ language === 0 ? '预定日期:' : 'Booking Date:' }}</span>{{ item.ticketTimeName }}</p> | ||
| 74 | <p><span class="label">{{ language === 0 ? '场次:' : 'Session:' }}</span>{{ item.sessionTypeName }}</p> | ||
| 75 | <p><span class="label">{{ language === 0 ? '场馆:' : 'Venue:' }}</span>{{ item.stadiumName }}</p> | ||
| 76 | <p><span class="label">{{ language === 0 ? '区域:' : 'Area:' }}</span>{{ item.ticketName || '-' }}</p> | ||
| 77 | <p><span class="label">{{ language === 0 ? '观影人:' : 'Attendees:' }}</span><span v-html="item.customers"></span> | ||
| 78 | </p> | ||
| 79 | </el-card> | ||
| 80 | |||
| 81 | <!-- 无结果 --> | ||
| 82 | <div v-if="list.length === 0" class="empty-container"> | ||
| 83 | <el-empty :description="language === 0 ? '暂无相关预定记录' : 'No records found'" /> | ||
| 143 | </div> | 84 | </div> |
| 144 | <div v-if="list.length>0||showGroupList.length>0||teamlist.length>0||groupList.length>0" class="text-center"> | ||
| 145 | {{ | ||
| 146 | language == 0 ? '下滑查看更多' : 'Scroll down to view more' | ||
| 147 | }} | ||
| 148 | </div> | 85 | </div> |
| 149 | </el-dialog> | 86 | </el-dialog> |
| 150 | </template> | 87 | </template> |
| 151 | 88 | ||
| 152 | <script setup> | 89 | <script setup> |
| 153 | import { ref } from 'vue' | 90 | import { ref } from 'vue' |
| 154 | import { ElMessage } from 'element-plus' | 91 | import { ElMessage, ElLoading } from 'element-plus' |
| 155 | import { | 92 | import { |
| 156 | getquerySchedule2Pre, | 93 | orderRoomList,//酒店 |
| 157 | getqySchedule, | 94 | orderMealList,//化妆 |
| 158 | getqySchedule2, | 95 | orderCarList,//接送 |
| 159 | getTeamBackNumber, | 96 | orderScenicList,//旅游 |
| 160 | getTeamBackNumberPre, queryScheduleSingle | 97 | orderTicketList,//票务 |
| 161 | } from '@/apiPc/common' | 98 | } from '@/apiPc/common' |
| 162 | import { useStorage } from '@vueuse/core/index' | 99 | import { useStorage } from '@vueuse/core/index' |
| 163 | 100 | ||
| 101 | // 状态管理 | ||
| 164 | const language = useStorage('language', 0) | 102 | const language = useStorage('language', 0) |
| 165 | const show = ref(false) | 103 | const show = ref(false) |
| 166 | // const form = ref({}) | ||
| 167 | const list = ref([]) | 104 | const list = ref([]) |
| 168 | const loading = ref(false) | 105 | const loading = ref(false) |
| 169 | const groupList = ref([]) | ||
| 170 | const teamlist = ref([]) | ||
| 171 | const query = ref('') | 106 | const query = ref('') |
| 172 | const query2 = ref('') | ||
| 173 | const query3 = ref('') | ||
| 174 | const type = ref('') | ||
| 175 | const showGroupList = ref(false) | ||
| 176 | const cptId = ref() | 107 | const cptId = ref() |
| 108 | const activeName = ref('1') | ||
| 177 | 109 | ||
| 178 | const search = () => { | 110 | // 处理tab切换 |
| 179 | if (!query.value) { | 111 | const handleTabClick = (val) => { |
| 180 | ElMessage.warning(language.value == 0 ? '请输入搜索关键词' : 'Enter project name or code to Query') | 112 | activeName.value = val.paneName |
| 181 | return | 113 | if (query.value) { |
| 182 | } | 114 | handleSearch() |
| 183 | getqySchedule({ projectName: query.value, cptId: cptId.value }).then(res => { | ||
| 184 | if (!res.data || res.data.length == 0) { | ||
| 185 | list.value = [] | ||
| 186 | // 提示 '未找到结果,请重新查询' | ||
| 187 | ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result') | ||
| 188 | return | ||
| 189 | } | 115 | } |
| 190 | list.value = res.data | ||
| 191 | }).catch(e => { | ||
| 192 | loading.value = false | ||
| 193 | }) | ||
| 194 | } | 116 | } |
| 195 | const searchTeam = () => { | 117 | |
| 196 | teamlist.value = [] | 118 | // 处理搜索 |
| 197 | if (!query2.value || query2.value.length < 2) { | 119 | const handleSearch = () => { |
| 198 | ElMessage.warning(language.value == 0 ? '请输入代表队名称至少两字符' : 'Enter the representing team name,At least two characters') | 120 | // 验证输入 |
| 121 | if (!query.value) { | ||
| 122 | ElMessage.warning(language.value === 0 ? '请输入邮箱号' : 'Enter email to Query') | ||
| 199 | return | 123 | return |
| 200 | } | 124 | } |
| 125 | |||
| 126 | // 显示加载状态 | ||
| 201 | loading.value = true | 127 | loading.value = true |
| 202 | getquerySchedule2Pre({ groupName: query2.value, cptId: cptId.value }).then(res => { | 128 | list.value = [] |
| 203 | loading.value = false | 129 | |
| 204 | if (!res.data || res.data.length == 0) { | 130 | // 根据当前tab调用不同接口 |
| 205 | groupList.value = [] | 131 | const params = { createBy: query.value } |
| 206 | // 提示 '未找到结果,请重新查询' | 132 | let requestPromise; |
| 207 | ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result') | 133 | switch (activeName.value) { |
| 208 | return | 134 | case '1': |
| 209 | } | 135 | requestPromise = orderRoomList(params) |
| 210 | groupList.value = res.data | 136 | break |
| 211 | if (groupList.value.length == 1) { | 137 | case '2': |
| 212 | showDetail(groupList.value[0]) | 138 | requestPromise = orderMealList(params) |
| 213 | } | 139 | break |
| 214 | if (groupList.value.length > 1) { | 140 | case '3': |
| 215 | showGroupList.value = true | 141 | requestPromise = orderCarList(params) |
| 216 | } | 142 | break |
| 217 | }).catch(e => { | 143 | case '4': |
| 218 | loading.value = false | 144 | requestPromise = orderScenicList(params) |
| 219 | }) | 145 | break |
| 220 | } | 146 | case '5': |
| 221 | const personalSearch = () => { | 147 | requestPromise = orderTicketList(params) |
| 222 | if (!query3.value) { | 148 | break |
| 223 | ElMessage.warning(language.value == 0 ? '请输入搜索关键词' : 'Enter project name or code to Query') | 149 | default: |
| 224 | return | 150 | requestPromise = Promise.reject(new Error('Invalid tab')) |
| 225 | } | 151 | } |
| 226 | loading.value = true | 152 | |
| 227 | queryScheduleSingle({ query: query3.value, cptId: cptId.value }).then(res => { | 153 | // 处理请求结果 |
| 154 | requestPromise.then(res => { | ||
| 228 | loading.value = false | 155 | loading.value = false |
| 229 | if (!res.data || res.data.length == 0) { | 156 | if (!res.rows || res.rows.length === 0) { |
| 230 | list.value = [] | 157 | list.value = [] |
| 231 | // 提示 '未找到结果,请重新查询' | 158 | ElMessage.info(language.value === 0 ? '未找到结果,请重新查询' : 'No results found') |
| 232 | ElMessage.warning(language.value == 0 ? '未找到结果,请重新查询' : 'No result') | ||
| 233 | return | 159 | return |
| 234 | } | 160 | } |
| 235 | list.value = res.data | 161 | list.value = res.rows |
| 162 | }).catch(e => { | ||
| 163 | loading.value = false | ||
| 164 | ElMessage.error(language.value === 0 ? '查询失败,请稍后重试' : 'Query failed, please try again later') | ||
| 165 | console.error('查询错误:', e) | ||
| 236 | }) | 166 | }) |
| 237 | } | 167 | } |
| 168 | |||
| 169 | // 打开对话框 | ||
| 238 | const open = (param) => { | 170 | const open = (param) => { |
| 239 | console.log(param) | 171 | cptId.value = param?.cptId |
| 240 | cptId.value = param.cptId | ||
| 241 | show.value = true | 172 | show.value = true |
| 242 | list.value = [] | 173 | list.value = [] |
| 243 | teamlist.value = [] | ||
| 244 | groupList.value = [] | ||
| 245 | query.value = '' | 174 | query.value = '' |
| 246 | type.value = '' | 175 | activeName.value = '1' |
| 247 | loading.value = false | 176 | loading.value = false |
| 248 | } | 177 | } |
| 178 | |||
| 179 | // 暴露方法 | ||
| 249 | defineExpose({ | 180 | defineExpose({ |
| 250 | open | 181 | open |
| 251 | }) | 182 | }) |
| 252 | |||
| 253 | function showDetail(name) { | ||
| 254 | query2.value = name | ||
| 255 | showGroupList.value = false | ||
| 256 | loading.value = true | ||
| 257 | getqySchedule2({ groupName: name, cptId: cptId.value }).then(res => { | ||
| 258 | loading.value = false | ||
| 259 | teamlist.value = res.data | ||
| 260 | }).catch(e => { | ||
| 261 | loading.value = false | ||
| 262 | }) | ||
| 263 | } | ||
| 264 | </script> | 183 | </script> |
| 265 | 184 | ||
| 266 | <style lang="scss" scoped> | 185 | <style lang="scss" scoped> |
| 267 | .tname { | 186 | .booking-inquiry-dialog { |
| 268 | font-size: 14px; | 187 | min-width: 300px; |
| 269 | font-weight: bold; | 188 | max-width: 500px; |
| 270 | position: relative; | 189 | padding: 15px; |
| 271 | top: -8px | ||
| 272 | } | ||
| 273 | 190 | ||
| 274 | .tip { | 191 | // 适配移动端 |
| 275 | font-size: 12px; | 192 | @media (max-width: 768px) { |
| 276 | margin: 4px 0 0; | 193 | width: 90% !important; |
| 277 | display: inline-block; | 194 | max-width: none; |
| 195 | } | ||
| 278 | } | 196 | } |
| 279 | 197 | ||
| 280 | .rItem { | 198 | .search-container { |
| 281 | max-height: 130px; | 199 | display: flex; |
| 282 | cursor: pointer; | 200 | gap: 10px; |
| 283 | border: 1px solid #e1e1e1; | 201 | margin-bottom: 20px; |
| 284 | border-radius: 4px; | 202 | width: 100%; |
| 285 | max-width: 350px; | 203 | |
| 286 | text-align: center; | 204 | .search-input { |
| 287 | line-height: 130px; | 205 | flex: 1; |
| 288 | padding: 1px; | 206 | } |
| 289 | font-size: 30px; | 207 | |
| 290 | color: #fff; | 208 | .search-btn { |
| 291 | margin: 20px auto; | 209 | background-color: #409eff; |
| 292 | background: linear-gradient(90deg, #8623FC, #453DEA); | 210 | color: white; |
| 293 | 211 | ||
| 294 | &:hover { | 212 | &:hover { |
| 295 | background: linear-gradient(90deg, #453DEA, #8623FC); | 213 | background-color: #66b1ff; |
| 296 | box-shadow: 0 4px 10px #453DEA; | 214 | } |
| 297 | border: none; | ||
| 298 | } | 215 | } |
| 299 | } | 216 | } |
| 300 | 217 | ||
| 301 | .nowteamItem { | 218 | .tabs-container { |
| 219 | margin-bottom: 20px; | ||
| 302 | width: 100%; | 220 | width: 100%; |
| 303 | border: 1px solid #c8c5ff; | ||
| 304 | margin-top: 20px; | ||
| 305 | position: relative; | ||
| 306 | border-radius: 4px; | ||
| 307 | padding: 0 0 20px; | ||
| 308 | background: #FFFFFF; | ||
| 309 | box-sizing: border-box; | ||
| 310 | |||
| 311 | .info { | ||
| 312 | .nowName { | ||
| 313 | font-family: "DIN Alternate"; | ||
| 314 | font-size: 60px; | ||
| 315 | font-weight: bold; | ||
| 316 | overflow: hidden; | ||
| 317 | display: block; | ||
| 318 | margin: 10px; | ||
| 319 | } | ||
| 320 | 221 | ||
| 321 | label { | 222 | ::v-deep .el-tabs__nav { |
| 322 | text-align: right; | 223 | flex-wrap: wrap; |
| 323 | font-size: 14px; | ||
| 324 | padding-left: 7% | ||
| 325 | } | 224 | } |
| 326 | 225 | ||
| 327 | div { | 226 | ::v-deep .el-tabs__item { |
| 328 | font-size: 14px; | 227 | margin-bottom: 5px; |
| 329 | color: #333; | ||
| 330 | margin: 6px 0 0; | ||
| 331 | } | ||
| 332 | } | 228 | } |
| 333 | } | 229 | } |
| 334 | 230 | ||
| 335 | .temell { | 231 | .loading-container { |
| 336 | .nowteamItem { | 232 | display: flex; |
| 337 | padding: 10px; | 233 | justify-content: center; |
| 338 | margin: 0 0 10px; | 234 | align-items: center; |
| 235 | padding: 40px 0; | ||
| 236 | } | ||
| 339 | 237 | ||
| 340 | .nowName { | 238 | .results-container { |
| 341 | font-size: 15px; | 239 | max-height: 500px; |
| 342 | font-weight: bold; | 240 | overflow-y: auto; |
| 343 | margin-right: 10px | 241 | padding-right: 5px; |
| 344 | } | ||
| 345 | 242 | ||
| 346 | .text-bold { | 243 | // 滚动条美化 |
| 347 | font-weight: bold; | 244 | &::-webkit-scrollbar { |
| 245 | width: 6px; | ||
| 348 | } | 246 | } |
| 349 | 247 | ||
| 350 | .fontsize14 { | 248 | &::-webkit-scrollbar-thumb { |
| 351 | font-size: 14px; | 249 | background-color: #ddd; |
| 352 | } | 250 | border-radius: 3px; |
| 353 | } | 251 | } |
| 354 | } | 252 | } |
| 355 | 253 | ||
| 356 | .groupList { | 254 | .result-card { |
| 357 | max-height: 70vh; | 255 | margin-bottom: 15px; |
| 358 | overflow: auto; | 256 | border-radius: 6px; |
| 359 | border: 1px solid #e1e1e1; | 257 | overflow: hidden; |
| 360 | margin-top: 10px; | ||
| 361 | 258 | ||
| 362 | li { | 259 | ::v-deep .el-card__body { |
| 363 | padding: 10px; | 260 | padding: 15px; |
| 364 | border-bottom: 1px solid #e1e1e1; | ||
| 365 | cursor: pointer; | ||
| 366 | } | 261 | } |
| 367 | } | ||
| 368 | 262 | ||
| 369 | .searchBox { | 263 | p { |
| 370 | height: 50vh; | 264 | margin: 0 0 8px 0; |
| 371 | //overflow-y: auto; | 265 | line-height: 1.5; |
| 266 | font-size: 14px; | ||
| 267 | |||
| 268 | .label { | ||
| 269 | color: #666; | ||
| 270 | font-weight: 500; | ||
| 271 | } | ||
| 272 | } | ||
| 273 | |||
| 274 | p:last-child { | ||
| 275 | margin-bottom: 0; | ||
| 276 | } | ||
| 372 | } | 277 | } |
| 373 | 278 | ||
| 374 | .rollY { | 279 | .empty-container { |
| 375 | height: 45vh; | 280 | padding: 40px 0; |
| 376 | overflow-y: auto; | 281 | text-align: center; |
| 377 | } | 282 | } |
| 378 | </style> | 283 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="banner"> | 3 | <div class="banner"> |
| 4 | <el-carousel | 4 | <el-carousel :autoplay="false" :interval="2000" arrow="hover" class="forPc" height="450px" |
| 5 | :autoplay="false" :interval="2000" arrow="hover" class="forPc" | 5 | @change="carouselChange"> |
| 6 | height="450px" | ||
| 7 | @change="carouselChange" | ||
| 8 | > | ||
| 9 | <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;"> | 6 | <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;"> |
| 10 | <div class="bannerItem"> | 7 | <div class="bannerItem"> |
| 11 | <div class="h100" @click.stop="goMatch(n)"> | 8 | <div class="h100" @click.stop="goMatch(n)"> |
| 12 | <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> | 9 | <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> |
| 13 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> | 10 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> |
| 14 | <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> | 11 | <div class="box forPc" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> |
| 15 | <div v-if="n.time>0" class="banner-count" @click="goMatch(n)"> | 12 | <div v-if="n.time > 0" class="banner-count" @click="goMatch(n)"> |
| 16 | 距离开始还有 | 13 | 距离开始还有 |
| 17 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> | 14 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> |
| 18 | <template #default="timeData"> | 15 | <template #default="timeData"> |
| ... | @@ -34,30 +31,21 @@ | ... | @@ -34,30 +31,21 @@ |
| 34 | </template> | 31 | </template> |
| 35 | </van-count-down> | 32 | </van-count-down> |
| 36 | </div> | 33 | </div> |
| 37 | <div v-if="n.timeEnd<0"> | 34 | <div v-if="n.timeEnd < 0"> |
| 38 | 35 | ||
| 39 | <div class="banner-count bb" @click="goMatch(n)"> | 36 | <div class="banner-count bb" @click="goMatch(n)"> |
| 40 | 报名已结束 | 37 | 报名已结束 |
| 41 | </div> | 38 | </div> |
| 42 | </div> | 39 | </div> |
| 43 | <div v-if="n.time<=0 && n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)"> | 40 | <div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)"> |
| 44 | 开始报名 | 41 | 开始报名 |
| 45 | </div> | 42 | </div> |
| 46 | 43 | ||
| 47 | <div | 44 | <div |
| 48 | style="position: absolute;bottom:22%;right:5%;z-index: 999;display: flex;width: 580px;justify-content: space-around" | 45 | style="position: absolute;bottom:22%;right:5%;z-index: 999;display: flex;width: 580px;justify-content: space-around"> |
| 49 | > | 46 | <a class=" btn2" style="z-index: 999999" @click.stop="liveQrcodeShowBtn">赛事直播 |
| 50 | <a | ||
| 51 | class=" btn2" | ||
| 52 | style="z-index: 999999" | ||
| 53 | @click.stop="liveQrcodeShowBtn" | ||
| 54 | >赛事直播 | ||
| 55 | </a> | 47 | </a> |
| 56 | <a | 48 | <a class=" btn2" @click.stop="popMaster">公益课 |
| 57 | |||
| 58 | class=" btn2" | ||
| 59 | @click.stop="popMaster" | ||
| 60 | >公益课 | ||
| 61 | </a> | 49 | </a> |
| 62 | </div> | 50 | </div> |
| 63 | 51 | ||
| ... | @@ -73,7 +61,7 @@ | ... | @@ -73,7 +61,7 @@ |
| 73 | <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> | 61 | <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> |
| 74 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> | 62 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> |
| 75 | <div style="position: absolute;left: 0;right: 0;top: 100px;margin: auto;"> | 63 | <div style="position: absolute;left: 0;right: 0;top: 100px;margin: auto;"> |
| 76 | <div v-if="n.time>0" class="banner-count" @click="goMatch(n)"> | 64 | <div v-if="n.time > 0" class="banner-count" @click="goMatch(n)"> |
| 77 | 距离开始还有 | 65 | 距离开始还有 |
| 78 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> | 66 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> |
| 79 | <template #default="timeData"> | 67 | <template #default="timeData"> |
| ... | @@ -95,31 +83,22 @@ | ... | @@ -95,31 +83,22 @@ |
| 95 | </template> | 83 | </template> |
| 96 | </van-count-down> | 84 | </van-count-down> |
| 97 | </div> | 85 | </div> |
| 98 | <div v-if="n.timeEnd<0"> | 86 | <div v-if="n.timeEnd < 0"> |
| 99 | 87 | ||
| 100 | <div class="banner-count bb" @click="goMatch(n)"> | 88 | <div class="banner-count bb" @click="goMatch(n)"> |
| 101 | 报名已结束 | 89 | 报名已结束 |
| 102 | </div> | 90 | </div> |
| 103 | </div> | 91 | </div> |
| 104 | <div v-if="n.time<=0 && n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)"> | 92 | <div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)"> |
| 105 | 开始报名 | 93 | 开始报名 |
| 106 | </div> | 94 | </div> |
| 107 | 95 | ||
| 108 | </div> | 96 | </div> |
| 109 | <div | 97 | <div |
| 110 | style="position: absolute;bottom:20px;z-index: 999;display: flex;width: 380px;justify-content: space-around" | 98 | style="position: absolute;bottom:20px;z-index: 999;display: flex;width: 380px;justify-content: space-around"> |
| 111 | > | 99 | <a class=" btn2-phone" style="z-index: 999999" @click.stop="liveQrcodeShowBtn">赛事直播 |
| 112 | <a | ||
| 113 | class=" btn2-phone" | ||
| 114 | style="z-index: 999999" | ||
| 115 | @click.stop="liveQrcodeShowBtn" | ||
| 116 | >赛事直播 | ||
| 117 | </a> | 100 | </a> |
| 118 | <a | 101 | <a class=" btn2-phone" @click.stop="popMaster">公益课 |
| 119 | |||
| 120 | class=" btn2-phone" | ||
| 121 | @click.stop="popMaster" | ||
| 122 | >公益课 | ||
| 123 | </a> | 102 | </a> |
| 124 | </div> | 103 | </div> |
| 125 | </div> | 104 | </div> |
| ... | @@ -140,16 +119,10 @@ | ... | @@ -140,16 +119,10 @@ |
| 140 | <download /> | 119 | <download /> |
| 141 | </el-icon> | 120 | </el-icon> |
| 142 | </a> | 121 | </a> |
| 143 | <a | 122 | <a class="zn-btn ml10 btn-q" @click="reserveSearch">预订查询</a> |
| 144 | class="zn-btn ml20 btn-q" | 123 | |
| 145 | @click="reserveSearch" | 124 | <a v-show="matchData?.id" class="zn-btn ml10 btn-q mt20" @click="backNumberSearch">背号查询</a> |
| 146 | >预定查询</a> | 125 | <a v-show="matchData?.id" class="zn-btn ml10 btn-q" @click="schSearch">日程查询</a> |
| 147 | <br/> | ||
| 148 | <a | ||
| 149 | v-show="matchData?.id" class="zn-btn btn-q mt20" | ||
| 150 | @click="backNumberSearch" | ||
| 151 | >背号查询</a> | ||
| 152 | <a v-show="matchData?.id" class="zn-btn ml20 btn-q" @click="schSearch">日程查询</a> | ||
| 153 | </div> | 126 | </div> |
| 154 | </el-col> | 127 | </el-col> |
| 155 | <el-col :lg="14" :sm="24"> | 128 | <el-col :lg="14" :sm="24"> |
| ... | @@ -168,7 +141,7 @@ | ... | @@ -168,7 +141,7 @@ |
| 168 | <a class="more" href="#/saiC">MORE</a> | 141 | <a class="more" href="#/saiC">MORE</a> |
| 169 | </div> | 142 | </div> |
| 170 | <!--赛事日历--> | 143 | <!--赛事日历--> |
| 171 | <el-card :body-style="{'padding':'20px 20px'}"> | 144 | <el-card :body-style="{ 'padding': '20px 20px' }"> |
| 172 | <home-calendar /> | 145 | <home-calendar /> |
| 173 | </el-card> | 146 | </el-card> |
| 174 | </el-col> | 147 | </el-col> |
| ... | @@ -178,14 +151,14 @@ | ... | @@ -178,14 +151,14 @@ |
| 178 | <a class="more" href="#/saiC">MORE</a> | 151 | <a class="more" href="#/saiC">MORE</a> |
| 179 | </div> | 152 | </div> |
| 180 | <!--历史排名--> | 153 | <!--历史排名--> |
| 181 | <el-card :body-style="{'padding':'10px 20px 18px'}"> | 154 | <el-card :body-style="{ 'padding': '10px 20px 18px' }"> |
| 182 | <el-table :data="rank" height="495" stripe @row-click="handleRowClick"> | 155 | <el-table :data="rank" height="495" stripe @row-click="handleRowClick"> |
| 183 | <el-table-column align="center" label="名次" prop="index" width="50" /> | 156 | <el-table-column align="center" label="名次" prop="index" width="50" /> |
| 184 | 157 | ||
| 185 | <el-table-column label="国家" prop="name"> | 158 | <el-table-column label="国家" prop="name"> |
| 186 | <template #default="scope"> | 159 | <template #default="scope"> |
| 187 | <div> | 160 | <div> |
| 188 | <span v-if="scope.row.code!='tw'" :class="`flag-icon flag-icon-${scope.row.code}`" /> | 161 | <span v-if="scope.row.code != 'tw'" :class="`flag-icon flag-icon-${scope.row.code}`" /> |
| 189 | <span v-else class="flag-icon"> | 162 | <span v-else class="flag-icon"> |
| 190 | <img :src="hkImage" alt="" class="hkimg"> | 163 | <img :src="hkImage" alt="" class="hkimg"> |
| 191 | </span> | 164 | </span> |
| ... | @@ -247,11 +220,7 @@ | ... | @@ -247,11 +220,7 @@ |
| 247 | <a class="more" @click="goNews">MORE</a> | 220 | <a class="more" @click="goNews">MORE</a> |
| 248 | </div> | 221 | </div> |
| 249 | <el-row :gutter="20"> | 222 | <el-row :gutter="20"> |
| 250 | <el-col | 223 | <el-col v-for="(n, index) in newest2" :key="n.id" :lg="8" :sm="8" :xs="24"> |
| 251 | v-for="(n,index) in newest2" | ||
| 252 | :key="n.id" :lg="8" :sm="8" | ||
| 253 | :xs="24" | ||
| 254 | > | ||
| 255 | <div class="activeItem" @click="goDetail(n)"> | 224 | <div class="activeItem" @click="goDetail(n)"> |
| 256 | <div class="imgbox"> | 225 | <div class="imgbox"> |
| 257 | <img :src="fillImgUrl_webSite(n.picUrl)"> | 226 | <img :src="fillImgUrl_webSite(n.picUrl)"> |
| ... | @@ -281,7 +250,7 @@ | ... | @@ -281,7 +250,7 @@ |
| 281 | <el-row :gutter="20"> | 250 | <el-row :gutter="20"> |
| 282 | <el-col :lg="8"> | 251 | <el-col :lg="8"> |
| 283 | <a class="liveImgbox" target="_blank" @click="golive(livelist[0])"> | 252 | <a class="liveImgbox" target="_blank" @click="golive(livelist[0])"> |
| 284 | <div v-if="time>0" class="livetimecount"> | 253 | <div v-if="time > 0" class="livetimecount"> |
| 285 | <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> | 254 | <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> |
| 286 | <template #default="timeData"> | 255 | <template #default="timeData"> |
| 287 | <div class="block">{{ timeData.days }} | 256 | <div class="block">{{ timeData.days }} |
| ... | @@ -299,13 +268,13 @@ | ... | @@ -299,13 +268,13 @@ |
| 299 | </template> | 268 | </template> |
| 300 | </van-count-down> | 269 | </van-count-down> |
| 301 | </div> | 270 | </div> |
| 302 | <i v-else-if="etime>0&&time<=0" class="ii">直播中</i> | 271 | <i v-else-if="etime > 0 && time <= 0" class="ii">直播中</i> |
| 303 | <!-- <i class="livetimecount" v-if="etime<=0">直播已结束</i>--> | 272 | <!-- <i class="livetimecount" v-if="etime<=0">直播已结束</i>--> |
| 304 | <div class="imgBox"> | 273 | <div class="imgBox"> |
| 305 | <img v-if="time>0" src="/img/111.jpg"> | 274 | <img v-if="time > 0" src="/img/111.jpg"> |
| 306 | <img v-else :src="fillImgUrl_webSite(livelist[0]?.picUrl)"> | 275 | <img v-else :src="fillImgUrl_webSite(livelist[0]?.picUrl)"> |
| 307 | </div> | 276 | </div> |
| 308 | <h3 v-if="time>0" class="esp"> | 277 | <h3 v-if="time > 0" class="esp"> |
| 309 | 2025WDSF亚洲体育舞蹈节 | 278 | 2025WDSF亚洲体育舞蹈节 |
| 310 | </h3> | 279 | </h3> |
| 311 | <h3 v-else class="esp"> | 280 | <h3 v-else class="esp"> |
| ... | @@ -315,12 +284,9 @@ | ... | @@ -315,12 +284,9 @@ |
| 315 | </el-col> | 284 | </el-col> |
| 316 | <el-col :lg="16"> | 285 | <el-col :lg="16"> |
| 317 | <div class="swiperPic"> | 286 | <div class="swiperPic"> |
| 318 | <swiper | 287 | <swiper :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic" |
| 319 | :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic" | 288 | :slides-per-view="3" :space-between="20" class="swiper-wrapper"> |
| 320 | :slides-per-view="3" | 289 | <swiper-slide v-for="(n, i) in picList" :key="i"> |
| 321 | :space-between="20" class="swiper-wrapper" | ||
| 322 | > | ||
| 323 | <swiper-slide v-for="(n,i) in picList" :key="i"> | ||
| 324 | <div class="picbox" @click="goDetail(n)"> | 290 | <div class="picbox" @click="goDetail(n)"> |
| 325 | <img :src="fillImgUrl_webSite(n.picUrl)"> | 291 | <img :src="fillImgUrl_webSite(n.picUrl)"> |
| 326 | </div> | 292 | </div> |
| ... | @@ -332,11 +298,12 @@ | ... | @@ -332,11 +298,12 @@ |
| 332 | </el-col> | 298 | </el-col> |
| 333 | </el-row> | 299 | </el-row> |
| 334 | <el-row class="news-l-r"> | 300 | <el-row class="news-l-r"> |
| 335 | <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8"> | 301 | <el-col v-for="(n, index) in livelist" v-show="index > 0" :lg="8"> |
| 336 | <div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)"> | 302 | <div class="item" style="padding: 0;margin: 20px 0 0" @click="goDetail(n)"> |
| 337 | <div class="imgbox"> | 303 | <div class="imgbox"> |
| 338 | <i class="playIcon" /> | 304 | <i class="playIcon" /> |
| 339 | <img :src="fillImgUrl_webSite(n.picUrl)"></div> | 305 | <img :src="fillImgUrl_webSite(n.picUrl)"> |
| 306 | </div> | ||
| 340 | <div class="info"> | 307 | <div class="info"> |
| 341 | <div class="text-primary small-size"> | 308 | <div class="text-primary small-size"> |
| 342 | <span v-if="n.subName">{{ n.subName + ' | ' }}</span> | 309 | <span v-if="n.subName">{{ n.subName + ' | ' }}</span> |
| ... | @@ -358,10 +325,7 @@ | ... | @@ -358,10 +325,7 @@ |
| 358 | <h3 class="leftboderTT">评委介绍</h3> | 325 | <h3 class="leftboderTT">评委介绍</h3> |
| 359 | </div> | 326 | </div> |
| 360 | <el-row :gutter="20"> | 327 | <el-row :gutter="20"> |
| 361 | <el-col | 328 | <el-col v-for="n in personList" :key="n.name" :lg="4" :md="8" :sm="12" :xl="4" :xs="12"> |
| 362 | v-for="n in personList" :key="n.name" :lg="4" :md="8" :sm="12" | ||
| 363 | :xl="4" :xs="12" | ||
| 364 | > | ||
| 365 | <div class="teacher" @click="goLeaderInfo"> | 329 | <div class="teacher" @click="goLeaderInfo"> |
| 366 | <div class="imgbox"><img :src="n.src"></div> | 330 | <div class="imgbox"><img :src="n.src"></div> |
| 367 | <h3 class="esp">{{ n.name }}</h3> | 331 | <h3 class="esp">{{ n.name }}</h3> |
| ... | @@ -387,8 +351,7 @@ | ... | @@ -387,8 +351,7 @@ |
| 387 | </div> | 351 | </div> |
| 388 | <div class="mt30 text-center"> | 352 | <div class="mt30 text-center"> |
| 389 | <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img | 353 | <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img |
| 390 | src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px" | 354 | src="@/assets/v1/more.png" style="filter: brightness(2);height: 8px"></a> |
| 391 | ></a> | ||
| 392 | </div> | 355 | </div> |
| 393 | 356 | ||
| 394 | </div> | 357 | </div> |
| ... | @@ -437,36 +400,22 @@ | ... | @@ -437,36 +400,22 @@ |
| 437 | <img src="@/assets/logo/Invitation_c.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'"> | 400 | <img src="@/assets/logo/Invitation_c.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'"> |
| 438 | <!-- && maList.invitationSw == '1' --> | 401 | <!-- && maList.invitationSw == '1' --> |
| 439 | <div v-if="clubImage && matchData.visaSw == '1'" style="padding-left: 7px;"> | 402 | <div v-if="clubImage && matchData.visaSw == '1'" style="padding-left: 7px;"> |
| 440 | <el-image | 403 | <el-image :preview-src-list="[clubImage]" :src="clubImage" fit="cover" preview-teleported |
| 441 | :preview-src-list="[clubImage]" | 404 | style="width: 120px" /> |
| 442 | :src="clubImage" | ||
| 443 | fit="cover" | ||
| 444 | preview-teleported | ||
| 445 | style="width: 120px" | ||
| 446 | /> | ||
| 447 | </div> | 405 | </div> |
| 448 | 406 | ||
| 449 | </div> | 407 | </div> |
| 450 | 408 | ||
| 451 | <!-- 群聊--> | 409 | <!-- 群聊--> |
| 452 | <div v-if="matchData.chatQrcode" class="fixed_gg_l club"> | 410 | <div v-if="matchData.chatQrcode" class="fixed_gg_l club"> |
| 453 | <el-image | 411 | <el-image :preview-src-list="[fillImgUrl(matchData.chatQrcode)]" :src="fillImgUrl(matchData.chatQrcode)" |
| 454 | :preview-src-list="[ fillImgUrl(matchData.chatQrcode) ]" | 412 | fit="cover" preview-teleported style="width: 120px;height: 120px" /> |
| 455 | :src="fillImgUrl(matchData.chatQrcode)" | ||
| 456 | fit="cover" | ||
| 457 | preview-teleported | ||
| 458 | style="width: 120px;height: 120px" | ||
| 459 | /> | ||
| 460 | </div> | 413 | </div> |
| 461 | 414 | ||
| 462 | <affix-invitation ref="dialogInvitationRef" /> | 415 | <affix-invitation ref="dialogInvitationRef" /> |
| 463 | <el-dialog v-model="liveQrcodeShow" :title="language==0?'赛事直播' :'Live QR Code'" width="350px"> | 416 | <el-dialog v-model="liveQrcodeShow" :title="language == 0 ? '赛事直播' : 'Live QR Code'" width="350px"> |
| 464 | <div v-if="matchData.liveQrcode" style="display: flex;justify-content: space-between"> | 417 | <div v-if="matchData.liveQrcode" style="display: flex;justify-content: space-between"> |
| 465 | <el-image | 418 | <el-image :src="fillImgUrl(matchData.liveQrcode)" fit="cover" style="width: 350px;" /> |
| 466 | :src="fillImgUrl(matchData.liveQrcode)" | ||
| 467 | fit="cover" | ||
| 468 | style="width: 350px;" | ||
| 469 | /> | ||
| 470 | </div> | 419 | </div> |
| 471 | 420 | ||
| 472 | </el-dialog> | 421 | </el-dialog> |
| ... | @@ -505,7 +454,7 @@ const navigationPic = ref({ | ... | @@ -505,7 +454,7 @@ const navigationPic = ref({ |
| 505 | }) | 454 | }) |
| 506 | const router = useRouter() | 455 | const router = useRouter() |
| 507 | const { proxy } = getCurrentInstance() | 456 | const { proxy } = getCurrentInstance() |
| 508 | const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch','reserveSearch']) | 457 | const emit = defineEmits(['pop', 'pickup', 'backNumber', 'schSearch', 'reserveSearch']) |
| 509 | const time = ref(0) | 458 | const time = ref(0) |
| 510 | const etime = ref(0) | 459 | const etime = ref(0) |
| 511 | const personList = ref([ | 460 | const personList = ref([ |
| ... | @@ -584,7 +533,7 @@ const init = () => { | ... | @@ -584,7 +533,7 @@ const init = () => { |
| 584 | }) | 533 | }) |
| 585 | match.getMaList({ topFlag: 1 }).then((res) => { | 534 | match.getMaList({ topFlag: 1 }).then((res) => { |
| 586 | maList.value = res.rows | 535 | maList.value = res.rows |
| 587 | console.log(333,maList.value) | 536 | console.log(333, maList.value) |
| 588 | for (const n of maList.value) { | 537 | for (const n of maList.value) { |
| 589 | const today = dayjs().format('YYYY-MM-DD HH:mm:ss') | 538 | const today = dayjs().format('YYYY-MM-DD HH:mm:ss') |
| 590 | if (n.signBeginTime) { | 539 | if (n.signBeginTime) { |
| ... | @@ -665,11 +614,11 @@ const goGuide = () => { | ... | @@ -665,11 +614,11 @@ const goGuide = () => { |
| 665 | }) | 614 | }) |
| 666 | } | 615 | } |
| 667 | const liveQrcodeShowBtn = () => { | 616 | const liveQrcodeShowBtn = () => { |
| 668 | if(!matchData.value.liveQrcode){ | 617 | if (!matchData.value.liveQrcode) { |
| 669 | ElMessage.warning('当前赛事暂无直播') | 618 | ElMessage.warning('当前赛事暂无直播') |
| 670 | return | 619 | return |
| 671 | }else{ | 620 | } else { |
| 672 | liveQrcodeShow.value=true | 621 | liveQrcodeShow.value = true |
| 673 | } | 622 | } |
| 674 | } | 623 | } |
| 675 | const popMaster = () => { | 624 | const popMaster = () => { |
| ... | @@ -715,7 +664,6 @@ function applyInvitation() { | ... | @@ -715,7 +664,6 @@ function applyInvitation() { |
| 715 | </script> | 664 | </script> |
| 716 | 665 | ||
| 717 | <style lang="scss" scoped> | 666 | <style lang="scss" scoped> |
| 718 | |||
| 719 | .zn-bg { | 667 | .zn-bg { |
| 720 | background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC); | 668 | background: linear-gradient(90deg, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #8623FC, #453DEA, #8623FC); |
| 721 | border-radius: 15px; | 669 | border-radius: 15px; |
| ... | @@ -1028,8 +976,7 @@ function applyInvitation() { | ... | @@ -1028,8 +976,7 @@ function applyInvitation() { |
| 1028 | background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); | 976 | background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); |
| 1029 | } | 977 | } |
| 1030 | 978 | ||
| 1031 | .btn-lineG { | 979 | .btn-lineG {} |
| 1032 | } | ||
| 1033 | } | 980 | } |
| 1034 | 981 | ||
| 1035 | .mapBox { | 982 | .mapBox { |
| ... | @@ -1146,6 +1093,7 @@ function applyInvitation() { | ... | @@ -1146,6 +1093,7 @@ function applyInvitation() { |
| 1146 | .box { | 1093 | .box { |
| 1147 | width: 94% | 1094 | width: 94% |
| 1148 | } | 1095 | } |
| 1096 | |||
| 1149 | .calendarList { | 1097 | .calendarList { |
| 1150 | padding: 0; | 1098 | padding: 0; |
| 1151 | 1099 | ||
| ... | @@ -1155,12 +1103,15 @@ function applyInvitation() { | ... | @@ -1155,12 +1103,15 @@ function applyInvitation() { |
| 1155 | } | 1103 | } |
| 1156 | } | 1104 | } |
| 1157 | } | 1105 | } |
| 1106 | |||
| 1158 | .aboutBox { | 1107 | .aboutBox { |
| 1159 | padding: 20px 30px; | 1108 | padding: 20px 30px; |
| 1160 | } | 1109 | } |
| 1110 | |||
| 1161 | .indexTitle { | 1111 | .indexTitle { |
| 1162 | margin: 30px 0 20px | 1112 | margin: 30px 0 20px |
| 1163 | } | 1113 | } |
| 1114 | |||
| 1164 | .teacher { | 1115 | .teacher { |
| 1165 | height: 320px; | 1116 | height: 320px; |
| 1166 | margin: 0 0 20px; | 1117 | margin: 0 0 20px; |
| ... | @@ -1169,9 +1120,11 @@ function applyInvitation() { | ... | @@ -1169,9 +1120,11 @@ function applyInvitation() { |
| 1169 | height: 260px | 1120 | height: 260px |
| 1170 | } | 1121 | } |
| 1171 | } | 1122 | } |
| 1123 | |||
| 1172 | .activeItem { | 1124 | .activeItem { |
| 1173 | margin: 0 0 20px; | 1125 | margin: 0 0 20px; |
| 1174 | } | 1126 | } |
| 1127 | |||
| 1175 | .mapBox { | 1128 | .mapBox { |
| 1176 | div { | 1129 | div { |
| 1177 | padding-left: 40px; | 1130 | padding-left: 40px; |
| ... | @@ -1192,9 +1145,11 @@ function applyInvitation() { | ... | @@ -1192,9 +1145,11 @@ function applyInvitation() { |
| 1192 | word-break: break-all; | 1145 | word-break: break-all; |
| 1193 | } | 1146 | } |
| 1194 | } | 1147 | } |
| 1148 | |||
| 1195 | .fixed_gg { | 1149 | .fixed_gg { |
| 1196 | display: none; | 1150 | display: none; |
| 1197 | } | 1151 | } |
| 1152 | |||
| 1198 | .bannerItem .banner-count { | 1153 | .bannerItem .banner-count { |
| 1199 | flex-direction: column; | 1154 | flex-direction: column; |
| 1200 | transform: scale(0.5); | 1155 | transform: scale(0.5); |
| ... | @@ -1256,6 +1211,7 @@ function applyInvitation() { | ... | @@ -1256,6 +1211,7 @@ function applyInvitation() { |
| 1256 | .forPc { | 1211 | .forPc { |
| 1257 | display: none !important; | 1212 | display: none !important; |
| 1258 | } | 1213 | } |
| 1214 | |||
| 1259 | .logobox { | 1215 | .logobox { |
| 1260 | height: 60px; | 1216 | height: 60px; |
| 1261 | } | 1217 | } |
| ... | @@ -1338,6 +1294,7 @@ function applyInvitation() { | ... | @@ -1338,6 +1294,7 @@ function applyInvitation() { |
| 1338 | color: #fff; | 1294 | color: #fff; |
| 1339 | border-radius: 20px; | 1295 | border-radius: 20px; |
| 1340 | } | 1296 | } |
| 1297 | |||
| 1341 | .btn2-phone { | 1298 | .btn2-phone { |
| 1342 | cursor: pointer; | 1299 | cursor: pointer; |
| 1343 | padding: 10px 20px; | 1300 | padding: 10px 20px; |
| ... | @@ -1375,5 +1332,4 @@ function applyInvitation() { | ... | @@ -1375,5 +1332,4 @@ function applyInvitation() { |
| 1375 | } | 1332 | } |
| 1376 | } | 1333 | } |
| 1377 | } | 1334 | } |
| 1378 | |||
| 1379 | </style> | 1335 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="banner"> | 3 | <div class="banner"> |
| 4 | <el-carousel | 4 | <el-carousel :autoplay="false" :interval="2000" arrow="hover" class="forPc" height="450px" |
| 5 | :autoplay="false" :interval="2000" arrow="hover" class="forPc" | 5 | @change="carouselChange"> |
| 6 | height="450px" | ||
| 7 | @change="carouselChange" | ||
| 8 | > | ||
| 9 | <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;"> | 6 | <el-carousel-item v-for="n in maList" :key="n.id" style="height: 450px;"> |
| 10 | <div class="bannerItem"> | 7 | <div class="bannerItem"> |
| 11 | <div class="h100" @click.stop="goMatch(n)"> | 8 | <div class="h100" @click.stop="goMatch(n)"> |
| ... | @@ -13,7 +10,7 @@ | ... | @@ -13,7 +10,7 @@ |
| 13 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> | 10 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> |
| 14 | <div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> | 11 | <div class="box" style="position: absolute;top: 0;left: 0;right: 0;margin: auto;"> |
| 15 | 12 | ||
| 16 | <div v-if="n.time>0" class="banner-count"> | 13 | <div v-if="n.time > 0" class="banner-count"> |
| 17 | Countdown | 14 | Countdown |
| 18 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> | 15 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> |
| 19 | <template #default="timeData"> | 16 | <template #default="timeData"> |
| ... | @@ -35,29 +32,22 @@ | ... | @@ -35,29 +32,22 @@ |
| 35 | </template> | 32 | </template> |
| 36 | </van-count-down> | 33 | </van-count-down> |
| 37 | </div> | 34 | </div> |
| 38 | <div v-if="n.timeEnd<0"> | 35 | <div v-if="n.timeEnd < 0"> |
| 39 | <div class="banner-count bb" @click="goMatch(n)"> | 36 | <div class="banner-count bb" @click="goMatch(n)"> |
| 40 | Registration has ended | 37 | Registration has ended |
| 41 | </div> | 38 | </div> |
| 42 | </div> | 39 | </div> |
| 43 | <div v-if="n.time<=0&&n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)"> | 40 | <div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)"> |
| 44 | REGISTER NOW | 41 | REGISTER NOW |
| 45 | </div> | 42 | </div> |
| 46 | 43 | ||
| 47 | <div | 44 | <div |
| 48 | style="position: absolute;bottom:22%;right:5%;z-index: 999;display: flex;width: 580px;justify-content: space-around" | 45 | style="position: absolute;bottom:22%;right:5%;z-index: 999;display: flex;width: 580px;justify-content: space-around"> |
| 49 | > | 46 | <a class=" btn2" style="z-index: 999999" @click.stop="liveQrcodeShowBtn"> |
| 50 | <a | ||
| 51 | class=" btn2" | ||
| 52 | style="z-index: 999999" @click.stop="liveQrcodeShowBtn" | ||
| 53 | > | ||
| 54 | <!-- 赛事直播--> | 47 | <!-- 赛事直播--> |
| 55 | Live Qrcode | 48 | Live Qrcode |
| 56 | </a> | 49 | </a> |
| 57 | <a | 50 | <a class=" btn2" @click.stop="popMaster">Junior &Youth Camp REGISTER |
| 58 | class=" btn2" | ||
| 59 | @click.stop="popMaster" | ||
| 60 | >Junior &Youth Camp REGISTER | ||
| 61 | </a> | 51 | </a> |
| 62 | </div> | 52 | </div> |
| 63 | </div> | 53 | </div> |
| ... | @@ -72,7 +62,7 @@ | ... | @@ -72,7 +62,7 @@ |
| 72 | <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> | 62 | <img v-if="n.bgImgUrl" :src="fillImgUrl(n.bgImgUrl)" class="bannerImg"> |
| 73 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> | 63 | <img v-else class="bannerImg" src="@/assets/dance/banner.png"> |
| 74 | <div style="position: absolute;left: 0;right: 0;top: 100px;margin: auto;"> | 64 | <div style="position: absolute;left: 0;right: 0;top: 100px;margin: auto;"> |
| 75 | <div v-if="n.time>0" class="banner-count"> | 65 | <div v-if="n.time > 0" class="banner-count"> |
| 76 | Countdown | 66 | Countdown |
| 77 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> | 67 | <van-count-down :time="n.time" format="DD 天 HH 时 mm 分 ss 秒"> |
| 78 | <template #default="timeData"> | 68 | <template #default="timeData"> |
| ... | @@ -94,31 +84,24 @@ | ... | @@ -94,31 +84,24 @@ |
| 94 | </template> | 84 | </template> |
| 95 | </van-count-down> | 85 | </van-count-down> |
| 96 | </div> | 86 | </div> |
| 97 | <div v-if="n.timeEnd<0"> | 87 | <div v-if="n.timeEnd < 0"> |
| 98 | 88 | ||
| 99 | <div class="banner-count bb" @click="goMatch(n)"> | 89 | <div class="banner-count bb" @click="goMatch(n)"> |
| 100 | Registration has ended | 90 | Registration has ended |
| 101 | </div> | 91 | </div> |
| 102 | </div> | 92 | </div> |
| 103 | <div v-if="n.time<=0&&n.timeEnd>=0" class="banner-count bb" @click="goMatch(n)"> | 93 | <div v-if="n.time <= 0 && n.timeEnd >= 0" class="banner-count bb" @click="goMatch(n)"> |
| 104 | REGISTER NOW | 94 | REGISTER NOW |
| 105 | </div> | 95 | </div> |
| 106 | 96 | ||
| 107 | </div> | 97 | </div> |
| 108 | <div | 98 | <div |
| 109 | style="position: absolute;bottom:20px;z-index: 999;display: flex;width: 380px;justify-content: space-around" | 99 | style="position: absolute;bottom:20px;z-index: 999;display: flex;width: 380px;justify-content: space-around"> |
| 110 | > | ||
| 111 | 100 | ||
| 112 | <a | 101 | <a class=" btn2-phone" style="z-index: 999999" @click.stop="liveQrcodeShowBtn"> |
| 113 | class=" btn2-phone" | ||
| 114 | style="z-index: 999999" @click.stop="liveQrcodeShowBtn" | ||
| 115 | > | ||
| 116 | Live Qrcode | 102 | Live Qrcode |
| 117 | </a> | 103 | </a> |
| 118 | <a | 104 | <a class=" btn2-phone" @click.stop="popMaster">Junior &Youth Camp REGISTER |
| 119 | class=" btn2-phone" | ||
| 120 | @click.stop="popMaster" | ||
| 121 | >Junior &Youth Camp REGISTER | ||
| 122 | </a> | 105 | </a> |
| 123 | </div> | 106 | </div> |
| 124 | </div> | 107 | </div> |
| ... | @@ -141,7 +124,7 @@ | ... | @@ -141,7 +124,7 @@ |
| 141 | <download /> | 124 | <download /> |
| 142 | </el-icon> | 125 | </el-icon> |
| 143 | </a> | 126 | </a> |
| 144 | <a class="zn-btn ml20 btn-q" @click="popMaster">Booking Inquiry</a> | 127 | <a class="zn-btn ml20 btn-q" @click="reserveSearch">Reservation Inquiry</a> |
| 145 | <!-- <a | 128 | <!-- <a |
| 146 | v-if="matchData.isCourseView==1" class="zn-btn ml20 btn-q forPc" | 129 | v-if="matchData.isCourseView==1" class="zn-btn ml20 btn-q forPc" |
| 147 | style="font-size: 15px;margin-right: 20px" @click="popMaster" | 130 | style="font-size: 15px;margin-right: 20px" @click="popMaster" |
| ... | @@ -177,7 +160,7 @@ | ... | @@ -177,7 +160,7 @@ |
| 177 | <a class="more" @click="gosaiC">MORE</a> | 160 | <a class="more" @click="gosaiC">MORE</a> |
| 178 | </div> | 161 | </div> |
| 179 | <!--赛事日历--> | 162 | <!--赛事日历--> |
| 180 | <el-card :body-style="{'padding':'20px 20px'}"> | 163 | <el-card :body-style="{ 'padding': '20px 20px' }"> |
| 181 | <home-calendar /> | 164 | <home-calendar /> |
| 182 | </el-card> | 165 | </el-card> |
| 183 | </el-col> | 166 | </el-col> |
| ... | @@ -187,7 +170,7 @@ | ... | @@ -187,7 +170,7 @@ |
| 187 | <!-- <a class="more" href="#/saiC">MORE</a>--> | 170 | <!-- <a class="more" href="#/saiC">MORE</a>--> |
| 188 | </div> | 171 | </div> |
| 189 | <!--历史排名--> | 172 | <!--历史排名--> |
| 190 | <el-card :body-style="{'padding':'10px 20px 18px'}"> | 173 | <el-card :body-style="{ 'padding': '10px 20px 18px' }"> |
| 191 | <el-table :data="rank" height="490" stripe @row-click="handleRowClick"> | 174 | <el-table :data="rank" height="490" stripe @row-click="handleRowClick"> |
| 192 | <el-table-column align="center" label="RANK" prop="index" width="80"> | 175 | <el-table-column align="center" label="RANK" prop="index" width="80"> |
| 193 | <!-- <template #default="scope">--> | 176 | <!-- <template #default="scope">--> |
| ... | @@ -201,7 +184,7 @@ | ... | @@ -201,7 +184,7 @@ |
| 201 | <template #default="scope"> | 184 | <template #default="scope"> |
| 202 | <div> | 185 | <div> |
| 203 | <!-- <span :class="`flag-icon flag-icon-${scope.row.code}`" />--> | 186 | <!-- <span :class="`flag-icon flag-icon-${scope.row.code}`" />--> |
| 204 | <span v-if="scope.row.code!='tw'" :class="`flag-icon flag-icon-${scope.row.code}`" /> | 187 | <span v-if="scope.row.code != 'tw'" :class="`flag-icon flag-icon-${scope.row.code}`" /> |
| 205 | <span v-else class="flag-icon"> | 188 | <span v-else class="flag-icon"> |
| 206 | <img :src="hkImage" alt="" class="hkimg"> | 189 | <img :src="hkImage" alt="" class="hkimg"> |
| 207 | </span> | 190 | </span> |
| ... | @@ -256,11 +239,7 @@ | ... | @@ -256,11 +239,7 @@ |
| 256 | <a class="more" @click="goNews">MORE</a> | 239 | <a class="more" @click="goNews">MORE</a> |
| 257 | </div> | 240 | </div> |
| 258 | <el-row :gutter="20"> | 241 | <el-row :gutter="20"> |
| 259 | <el-col | 242 | <el-col v-for="(n, index) in newest2" :key="n.id" :lg="8" :sm="8" :xs="24"> |
| 260 | v-for="(n,index) in newest2" | ||
| 261 | :key="n.id" :lg="8" :sm="8" | ||
| 262 | :xs="24" | ||
| 263 | > | ||
| 264 | <div class="activeItem" @click="goNewsDetail(n)"> | 243 | <div class="activeItem" @click="goNewsDetail(n)"> |
| 265 | <div class="imgbox"> | 244 | <div class="imgbox"> |
| 266 | <img :src="fillImgUrl_webSite(n.picUrl)"> | 245 | <img :src="fillImgUrl_webSite(n.picUrl)"> |
| ... | @@ -291,7 +270,7 @@ | ... | @@ -291,7 +270,7 @@ |
| 291 | <el-row :gutter="20"> | 270 | <el-row :gutter="20"> |
| 292 | <el-col :lg="8"> | 271 | <el-col :lg="8"> |
| 293 | <a class="liveImgbox" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" target="_blank"> | 272 | <a class="liveImgbox" href="https://wx.vzan.com/live/page/1151815649?v=1720589464698" target="_blank"> |
| 294 | <div v-if="time>0" class="livetimecount"> | 273 | <div v-if="time > 0" class="livetimecount"> |
| 295 | <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> | 274 | <van-count-down :time="time" format="DD 天 HH 时 mm 分 ss 秒"> |
| 296 | <template #default="timeData"> | 275 | <template #default="timeData"> |
| 297 | <div class="block">{{ timeData.days }} | 276 | <div class="block">{{ timeData.days }} |
| ... | @@ -320,12 +299,9 @@ | ... | @@ -320,12 +299,9 @@ |
| 320 | <el-col :lg="16"> | 299 | <el-col :lg="16"> |
| 321 | 300 | ||
| 322 | <div class="swiperPic forPx"> | 301 | <div class="swiperPic forPx"> |
| 323 | <swiper | 302 | <swiper :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic" |
| 324 | :autoplay="true" :loop="true" :modules="modules" :navigation="navigationPic" | 303 | :slides-per-view="3" :space-between="20" class="swiper-wrapper"> |
| 325 | :slides-per-view="3" | 304 | <swiper-slide v-for="(n, i) in picList" :key="i"> |
| 326 | :space-between="20" class="swiper-wrapper" | ||
| 327 | > | ||
| 328 | <swiper-slide v-for="(n,i) in picList" :key="i"> | ||
| 329 | <div class="picbox" @click="goNewsDetail(n)"> | 305 | <div class="picbox" @click="goNewsDetail(n)"> |
| 330 | <img :src="fillImgUrl_webSite(n.picUrl)"> | 306 | <img :src="fillImgUrl_webSite(n.picUrl)"> |
| 331 | </div> | 307 | </div> |
| ... | @@ -338,11 +314,12 @@ | ... | @@ -338,11 +314,12 @@ |
| 338 | </el-col> | 314 | </el-col> |
| 339 | </el-row> | 315 | </el-row> |
| 340 | <el-row class="news-l-r"> | 316 | <el-row class="news-l-r"> |
| 341 | <el-col v-for="(n,index) in livelist" v-show="index>0" :lg="8"> | 317 | <el-col v-for="(n, index) in livelist" v-show="index > 0" :lg="8"> |
| 342 | <div class="item" style="padding: 0;margin: 20px 0 0" @click="goNewsDetail(n)"> | 318 | <div class="item" style="padding: 0;margin: 20px 0 0" @click="goNewsDetail(n)"> |
| 343 | <div class="imgbox"> | 319 | <div class="imgbox"> |
| 344 | <i class="playIcon" /> | 320 | <i class="playIcon" /> |
| 345 | <img :src="fillImgUrl_webSite(n.picUrl)"></div> | 321 | <img :src="fillImgUrl_webSite(n.picUrl)"> |
| 322 | </div> | ||
| 346 | <div class="info"> | 323 | <div class="info"> |
| 347 | <div class="text-primary small-size"> | 324 | <div class="text-primary small-size"> |
| 348 | <span v-if="n.subName">{{ n.subName + ' | ' }}</span> | 325 | <span v-if="n.subName">{{ n.subName + ' | ' }}</span> |
| ... | @@ -364,10 +341,7 @@ | ... | @@ -364,10 +341,7 @@ |
| 364 | <h3 class="leftboderTT">INTRODUCTION OF ADJUDICATORS</h3> | 341 | <h3 class="leftboderTT">INTRODUCTION OF ADJUDICATORS</h3> |
| 365 | </div> | 342 | </div> |
| 366 | <el-row :gutter="20"> | 343 | <el-row :gutter="20"> |
| 367 | <el-col | 344 | <el-col v-for="n in personList" :key="n.name" :lg="4" :sm="8" :xl="4" :xs="12"> |
| 368 | v-for="n in personList" :key="n.name" :lg="4" :sm="8" :xl="4" | ||
| 369 | :xs="12" | ||
| 370 | > | ||
| 371 | <div class="teacher"> | 345 | <div class="teacher"> |
| 372 | <div class="imgbox"><img :src="n.src"></div> | 346 | <div class="imgbox"><img :src="n.src"></div> |
| 373 | <h3 class="esp">{{ n.name }}</h3> | 347 | <h3 class="esp">{{ n.name }}</h3> |
| ... | @@ -440,36 +414,21 @@ | ... | @@ -440,36 +414,21 @@ |
| 440 | <img src="@/assets/logo/Invitation_e.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'"> | 414 | <img src="@/assets/logo/Invitation_e.png" @click="applyInvitation" v-if="matchData.invitationSw == '1'"> |
| 441 | <div style="padding-left: 7px;"> | 415 | <div style="padding-left: 7px;"> |
| 442 | 416 | ||
| 443 | <el-image | 417 | <el-image v-if="clubImage && matchData.visaSw == '1'" :preview-src-list="[clubImage]" :src="clubImage" |
| 444 | v-if="clubImage && matchData.visaSw == '1'" | 418 | fit="cover" preview-teleported style="width: 124px" /> |
| 445 | :preview-src-list="[clubImage]" | ||
| 446 | :src="clubImage" | ||
| 447 | fit="cover" | ||
| 448 | preview-teleported | ||
| 449 | style="width: 124px" | ||
| 450 | /> | ||
| 451 | </div> | 419 | </div> |
| 452 | </div> | 420 | </div> |
| 453 | <!-- 群聊--> | 421 | <!-- 群聊--> |
| 454 | <div v-if="matchData.chatQrcode" class="fixed_gg_l club"> | 422 | <div v-if="matchData.chatQrcode" class="fixed_gg_l club"> |
| 455 | <el-image | 423 | <el-image :preview-src-list="[fillImgUrl(matchData.chatQrcode)]" :src="fillImgUrl(matchData.chatQrcode)" |
| 456 | :preview-src-list="[ fillImgUrl(matchData.chatQrcode)]" | 424 | fit="cover" preview-teleported style="width: 120px;height: 120px" /> |
| 457 | :src="fillImgUrl(matchData.chatQrcode)" | ||
| 458 | fit="cover" | ||
| 459 | preview-teleported | ||
| 460 | style="width: 120px;height: 120px" | ||
| 461 | /> | ||
| 462 | </div> | 425 | </div> |
| 463 | <affix-invitation ref="dialogInvitationRef" /> | 426 | <affix-invitation ref="dialogInvitationRef" /> |
| 464 | 427 | ||
| 465 | <el-dialog v-model="liveQrcodeShow" :title="language==0?'赛事直播' :'Live QR Code'" width="350px"> | 428 | <el-dialog v-model="liveQrcodeShow" :title="language == 0 ? '赛事直播' : 'Live QR Code'" width="350px"> |
| 466 | <div style="display: flex;justify-content: space-between"> | 429 | <div style="display: flex;justify-content: space-between"> |
| 467 | <el-image | 430 | <el-image v-if="matchData.liveQrcode" :src="fillImgUrl(matchData.liveQrcode)" fit="cover" |
| 468 | v-if="matchData.liveQrcode" | 431 | style="max-width: 350px;" /> |
| 469 | :src="fillImgUrl(matchData.liveQrcode)" | ||
| 470 | fit="cover" | ||
| 471 | style="max-width: 350px;" | ||
| 472 | /> | ||
| 473 | </div> | 432 | </div> |
| 474 | 433 | ||
| 475 | </el-dialog> | 434 | </el-dialog> |
| ... | @@ -505,7 +464,7 @@ const navigationPic = ref({ | ... | @@ -505,7 +464,7 @@ const navigationPic = ref({ |
| 505 | }) | 464 | }) |
| 506 | const router = useRouter() | 465 | const router = useRouter() |
| 507 | const { proxy } = getCurrentInstance() | 466 | const { proxy } = getCurrentInstance() |
| 508 | const emit = defineEmits(['pop', 'backNumber', 'schSearch']) | 467 | const emit = defineEmits(['pop', 'backNumber', 'schSearch', 'reserveSearch']) |
| 509 | const time = ref(0) | 468 | const time = ref(0) |
| 510 | const etime = ref(0) | 469 | const etime = ref(0) |
| 511 | const liveQrcodeShow = ref(false) | 470 | const liveQrcodeShow = ref(false) |
| ... | @@ -540,6 +499,12 @@ const matchData = ref({}) | ... | @@ -540,6 +499,12 @@ const matchData = ref({}) |
| 540 | onMounted(() => { | 499 | onMounted(() => { |
| 541 | init() | 500 | init() |
| 542 | }) | 501 | }) |
| 502 | const reserveSearch = () => { | ||
| 503 | var params = { | ||
| 504 | cptId: matchData.value.id | ||
| 505 | } | ||
| 506 | emit('reserveSearch', params); // 向父组件发射事件+参数 | ||
| 507 | }; | ||
| 543 | 508 | ||
| 544 | function handleRowClick(row) { | 509 | function handleRowClick(row) { |
| 545 | console.log(row) | 510 | console.log(row) |
| ... | @@ -659,11 +624,11 @@ const goGuide = () => { | ... | @@ -659,11 +624,11 @@ const goGuide = () => { |
| 659 | }) | 624 | }) |
| 660 | } | 625 | } |
| 661 | const liveQrcodeShowBtn = () => { | 626 | const liveQrcodeShowBtn = () => { |
| 662 | if(!matchData.value.liveQrcode){ | 627 | if (!matchData.value.liveQrcode) { |
| 663 | ElMessage.warning('There is currently no live broadcast of the event') | 628 | ElMessage.warning('There is currently no live broadcast of the event') |
| 664 | return | 629 | return |
| 665 | }else{ | 630 | } else { |
| 666 | liveQrcodeShow.value=true | 631 | liveQrcodeShow.value = true |
| 667 | } | 632 | } |
| 668 | } | 633 | } |
| 669 | 634 | ||
| ... | @@ -1169,8 +1134,7 @@ function applyInvitation() { | ... | @@ -1169,8 +1134,7 @@ function applyInvitation() { |
| 1169 | background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); | 1134 | background: linear-gradient(0deg, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0)); |
| 1170 | } | 1135 | } |
| 1171 | 1136 | ||
| 1172 | .btn-lineG { | 1137 | .btn-lineG {} |
| 1173 | } | ||
| 1174 | } | 1138 | } |
| 1175 | 1139 | ||
| 1176 | .mapBox { | 1140 | .mapBox { |
| ... | @@ -1276,6 +1240,7 @@ function applyInvitation() { | ... | @@ -1276,6 +1240,7 @@ function applyInvitation() { |
| 1276 | .box { | 1240 | .box { |
| 1277 | width: 94% | 1241 | width: 94% |
| 1278 | } | 1242 | } |
| 1243 | |||
| 1279 | .calendarList { | 1244 | .calendarList { |
| 1280 | padding: 0; | 1245 | padding: 0; |
| 1281 | 1246 | ||
| ... | @@ -1285,12 +1250,15 @@ function applyInvitation() { | ... | @@ -1285,12 +1250,15 @@ function applyInvitation() { |
| 1285 | } | 1250 | } |
| 1286 | } | 1251 | } |
| 1287 | } | 1252 | } |
| 1253 | |||
| 1288 | .aboutBox { | 1254 | .aboutBox { |
| 1289 | padding: 20px 30px; | 1255 | padding: 20px 30px; |
| 1290 | } | 1256 | } |
| 1257 | |||
| 1291 | .indexTitle { | 1258 | .indexTitle { |
| 1292 | margin: 30px 0 20px | 1259 | margin: 30px 0 20px |
| 1293 | } | 1260 | } |
| 1261 | |||
| 1294 | .teacher { | 1262 | .teacher { |
| 1295 | height: 320px; | 1263 | height: 320px; |
| 1296 | margin: 0 0 20px; | 1264 | margin: 0 0 20px; |
| ... | @@ -1299,9 +1267,11 @@ function applyInvitation() { | ... | @@ -1299,9 +1267,11 @@ function applyInvitation() { |
| 1299 | height: 260px | 1267 | height: 260px |
| 1300 | } | 1268 | } |
| 1301 | } | 1269 | } |
| 1270 | |||
| 1302 | .activeItem { | 1271 | .activeItem { |
| 1303 | margin: 0 0 20px; | 1272 | margin: 0 0 20px; |
| 1304 | } | 1273 | } |
| 1274 | |||
| 1305 | .mapBox { | 1275 | .mapBox { |
| 1306 | div { | 1276 | div { |
| 1307 | padding-left: 40px; | 1277 | padding-left: 40px; |
| ... | @@ -1322,9 +1292,11 @@ function applyInvitation() { | ... | @@ -1322,9 +1292,11 @@ function applyInvitation() { |
| 1322 | word-break: break-all; | 1292 | word-break: break-all; |
| 1323 | } | 1293 | } |
| 1324 | } | 1294 | } |
| 1295 | |||
| 1325 | .fixed_gg { | 1296 | .fixed_gg { |
| 1326 | display: none; | 1297 | display: none; |
| 1327 | } | 1298 | } |
| 1299 | |||
| 1328 | .bannerItem .banner-count { | 1300 | .bannerItem .banner-count { |
| 1329 | flex-direction: column; | 1301 | flex-direction: column; |
| 1330 | transform: scale(0.5); | 1302 | transform: scale(0.5); |
| ... | @@ -1336,6 +1308,7 @@ function applyInvitation() { | ... | @@ -1336,6 +1308,7 @@ function applyInvitation() { |
| 1336 | margin: 30px 0 0; | 1308 | margin: 30px 0 0; |
| 1337 | } | 1309 | } |
| 1338 | } | 1310 | } |
| 1311 | |||
| 1339 | .bgbg { | 1312 | .bgbg { |
| 1340 | text-align: center; | 1313 | text-align: center; |
| 1341 | 1314 | ||
| ... | @@ -1426,6 +1399,7 @@ function applyInvitation() { | ... | @@ -1426,6 +1399,7 @@ function applyInvitation() { |
| 1426 | .forPc { | 1399 | .forPc { |
| 1427 | display: none !important; | 1400 | display: none !important; |
| 1428 | } | 1401 | } |
| 1402 | |||
| 1429 | .zn-Box .bgbg { | 1403 | .zn-Box .bgbg { |
| 1430 | padding: 10px 0 0; | 1404 | padding: 10px 0 0; |
| 1431 | 1405 | ||
| ... | @@ -1437,6 +1411,7 @@ function applyInvitation() { | ... | @@ -1437,6 +1411,7 @@ function applyInvitation() { |
| 1437 | margin-top: 10px | 1411 | margin-top: 10px |
| 1438 | } | 1412 | } |
| 1439 | } | 1413 | } |
| 1414 | |||
| 1440 | .logobox { | 1415 | .logobox { |
| 1441 | height: 60px; | 1416 | height: 60px; |
| 1442 | } | 1417 | } |
| ... | @@ -1500,5 +1475,4 @@ function applyInvitation() { | ... | @@ -1500,5 +1475,4 @@ function applyInvitation() { |
| 1500 | } | 1475 | } |
| 1501 | } | 1476 | } |
| 1502 | } | 1477 | } |
| 1503 | |||
| 1504 | </style> | 1478 | </style> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog | 2 | <el-dialog v-model="show" :append-to-body="true" :close-on-click-modal="false" :show-close="showClose" :title="title" |
| 3 | v-model="show" | 3 | center class="pcloginpop" close-icon="CircleClose" destroy-on-close style="max-width: 450px;min-width: 350px" |
| 4 | :append-to-body="true" | 4 | @close="close"> |
| 5 | :close-on-click-modal="false" | ||
| 6 | :show-close="showClose" | ||
| 7 | :title="title" | ||
| 8 | center | ||
| 9 | class="pcloginpop" | ||
| 10 | close-icon="CircleClose" | ||
| 11 | destroy-on-close | ||
| 12 | style="max-width: 450px;min-width: 350px" | ||
| 13 | @close="close" | ||
| 14 | > | ||
| 15 | <div class="pd10" /> | 5 | <div class="pd10" /> |
| 16 | <el-form | 6 | <el-form v-if="loginStatus == 0" ref="loginRef" :model="loginForm" :rules="language == 0 ? loginRules : loginRules_en" |
| 17 | v-if="loginStatus==0" ref="loginRef" :model="loginForm" | 7 | class="login-form"> |
| 18 | :rules="language==0?loginRules:loginRules_en" class="login-form" | ||
| 19 | > | ||
| 20 | <el-form-item prop="username"> | 8 | <el-form-item prop="username"> |
| 21 | 9 | ||
| 22 | <el-input | 10 | <el-input v-model.trim="loginForm.username" :placeholder="language == 0 ? '账号(注册时使用的邮箱)' : 'Account (e-mail)'" |
| 23 | v-model.trim="loginForm.username" | 11 | auto-complete="off" size="large" /> |
| 24 | :placeholder="language==0?'账号(注册时使用的邮箱)':'Account (e-mail)'" | ||
| 25 | auto-complete="off" | ||
| 26 | size="large" | ||
| 27 | /> | ||
| 28 | </el-form-item> | 12 | </el-form-item> |
| 29 | <el-form-item prop="password"> | 13 | <el-form-item prop="password"> |
| 30 | <el-input | 14 | <el-input v-model.trim="loginForm.password" :placeholder="language == 0 ? '密码' : 'Password'" auto-complete="off" |
| 31 | v-model.trim="loginForm.password" | 15 | show-password size="large" type="password" @keyup.enter="handleLogin" /> |
| 32 | :placeholder="language==0?'密码':'Password'" | ||
| 33 | auto-complete="off" show-password | ||
| 34 | size="large" | ||
| 35 | type="password" | ||
| 36 | @keyup.enter="handleLogin" | ||
| 37 | /> | ||
| 38 | </el-form-item> | 16 | </el-form-item> |
| 39 | <el-form-item v-if="captchaEnabled" prop="code"> | 17 | <el-form-item v-if="captchaEnabled" prop="code"> |
| 40 | <el-input | 18 | <el-input v-model.trim="loginForm.code" :placeholder="language == 0 ? '验证码' : 'Code'" auto-complete="off" size="large" |
| 41 | v-model.trim="loginForm.code" | 19 | @keyup.enter="handleLogin"> |
| 42 | :placeholder="language==0?'验证码':'Code'" | ||
| 43 | auto-complete="off" | ||
| 44 | size="large" | ||
| 45 | @keyup.enter="handleLogin" | ||
| 46 | > | ||
| 47 | <template #append> | 20 | <template #append> |
| 48 | <div class="login-code"> | 21 | <div class="login-code"> |
| 49 | <img :src="codeUrl" class="login-code-img" @click="getCode"> | 22 | <img :src="codeUrl" class="login-code-img" @click="getCode"> |
| ... | @@ -54,14 +27,8 @@ | ... | @@ -54,14 +27,8 @@ |
| 54 | </el-form-item> | 27 | </el-form-item> |
| 55 | 28 | ||
| 56 | <el-form-item style="width:100%;"> | 29 | <el-form-item style="width:100%;"> |
| 57 | <el-button | 30 | <el-button :loading="loading" class="loginBtn" size="large" style="width:100%;" type="primary" |
| 58 | :loading="loading" | 31 | @click.prevent="handleLogin"> |
| 59 | class="loginBtn" | ||
| 60 | size="large" | ||
| 61 | style="width:100%;" | ||
| 62 | type="primary" | ||
| 63 | @click.prevent="handleLogin" | ||
| 64 | > | ||
| 65 | <span v-if="!loading">{{ language == 0 ? '登 录' : 'Login' }}</span> | 32 | <span v-if="!loading">{{ language == 0 ? '登 录' : 'Login' }}</span> |
| 66 | <span v-else>{{ language == 0 ? '登 录 中...' : 'Logging in' }}</span> | 33 | <span v-else>{{ language == 0 ? '登 录 中...' : 'Logging in' }}</span> |
| 67 | </el-button> | 34 | </el-button> |
| ... | @@ -69,15 +36,12 @@ | ... | @@ -69,15 +36,12 @@ |
| 69 | <el-form-item> | 36 | <el-form-item> |
| 70 | <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>--> | 37 | <!-- <span style="color: #999;font-size: 12px;">*默认密码是会员号+证件号后四位+)*%</span>--> |
| 71 | <div style="display: flex;justify-content: space-between;width: 100%;"> | 38 | <div style="display: flex;justify-content: space-between;width: 100%;"> |
| 72 | <a | 39 | <a class="text-primary" @click="showChangePassword">{{ language == 0 ? '忘记密码' : 'Forgot password' }}?</a> |
| 73 | class="text-primary" | ||
| 74 | @click="showChangePassword" | ||
| 75 | >{{ language == 0 ? '忘记密码' : 'Forgot password' }}?</a> | ||
| 76 | <a class="text-primary" @click="showRegister">{{ language == 0 ? '账号注册' : 'Register' }}></a> | 40 | <a class="text-primary" @click="showRegister">{{ language == 0 ? '账号注册' : 'Register' }}></a> |
| 77 | </div> | 41 | </div> |
| 78 | </el-form-item> | 42 | </el-form-item> |
| 79 | <el-form-item> | 43 | <el-form-item> |
| 80 | <div v-if="language==0" class="agreeLine"> | 44 | <div v-if="language == 0" class="agreeLine"> |
| 81 | 登录或注册即代表同意 | 45 | 登录或注册即代表同意 |
| 82 | <a target="_blank" @click="goAgreement">《用户协议》</a>和 | 46 | <a target="_blank" @click="goAgreement">《用户协议》</a>和 |
| 83 | <a target="_blank" @click="goPolicy">《隐私政策》</a> | 47 | <a target="_blank" @click="goPolicy">《隐私政策》</a> |
| ... | @@ -90,7 +54,7 @@ | ... | @@ -90,7 +54,7 @@ |
| 90 | </el-form-item> | 54 | </el-form-item> |
| 91 | </el-form> | 55 | </el-form> |
| 92 | 56 | ||
| 93 | <div v-if="loginStatus==1"> | 57 | <div v-if="loginStatus == 1"> |
| 94 | <a class="poLeft" @click="close()"> | 58 | <a class="poLeft" @click="close()"> |
| 95 | <el-icon> | 59 | <el-icon> |
| 96 | <ArrowLeftBold /> | 60 | <ArrowLeftBold /> |
| ... | @@ -103,36 +67,25 @@ | ... | @@ -103,36 +67,25 @@ |
| 103 | <h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3> | 67 | <h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3> |
| 104 | </div> | 68 | </div> |
| 105 | </div> | 69 | </div> |
| 106 | <div v-if="loginStatus==2"> | 70 | <div v-if="loginStatus == 2"> |
| 107 | <a class="poLeft" @click="close()"> | 71 | <a class="poLeft" @click="close()"> |
| 108 | <el-icon> | 72 | <el-icon> |
| 109 | <ArrowLeftBold /> | 73 | <ArrowLeftBold /> |
| 110 | </el-icon> | 74 | </el-icon> |
| 111 | </a> | 75 | </a> |
| 112 | <el-form | 76 | <el-form ref="changePasswordRef" :model="changePasswordForm" |
| 113 | ref="changePasswordRef" :model="changePasswordForm" | 77 | :rules="language == 0 ? changePasswordRules : changePasswordRules_en" class="login-form"> |
| 114 | :rules="language==0?changePasswordRules:changePasswordRules_en" class="login-form" | ||
| 115 | > | ||
| 116 | <el-form-item prop="username"> | 78 | <el-form-item prop="username"> |
| 117 | 79 | ||
| 118 | <el-input | 80 | <el-input v-model.trim="changePasswordForm.username" :placeholder="language == 0 ? '注册时使用的邮箱' : 'E-mail'" |
| 119 | v-model.trim="changePasswordForm.username" | 81 | auto-complete="off" size="large" @change="changePasswordFormUsername" /> |
| 120 | :placeholder="language==0?'注册时使用的邮箱':'E-mail'" | ||
| 121 | auto-complete="off" size="large" | ||
| 122 | @change="changePasswordFormUsername" | ||
| 123 | /> | ||
| 124 | </el-form-item> | 82 | </el-form-item> |
| 125 | <el-form-item> | 83 | <el-form-item> |
| 126 | <el-input | 84 | <el-input v-model.trim="changePasswordForm.code" :placeholder="language == 0 ? '验证码' : 'Code'" auto-complete="off" |
| 127 | v-model.trim="changePasswordForm.code" | 85 | size="large" @keyup.enter="handleLogin"> |
| 128 | :placeholder="language==0?'验证码':'Code'" | ||
| 129 | auto-complete="off" | ||
| 130 | size="large" | ||
| 131 | @keyup.enter="handleLogin" | ||
| 132 | > | ||
| 133 | <template #append> | 86 | <template #append> |
| 134 | <el-button plain style="width: 110px;" type="primary" @click="sendsmsMsg"> | 87 | <el-button plain style="width: 110px;" type="primary" @click="sendsmsMsg"> |
| 135 | <van-count-down v-if="counting" :time="60000" format="ss" @finish="counting=false"> | 88 | <van-count-down v-if="counting" :time="60000" format="ss" @finish="counting = false"> |
| 136 | <template #default="timeData"> | 89 | <template #default="timeData"> |
| 137 | <span class="text-primary">{{ timeData.seconds }}{{ language == 0 ? '秒' : 's' }}</span> | 90 | <span class="text-primary">{{ timeData.seconds }}{{ language == 0 ? '秒' : 's' }}</span> |
| 138 | </template> | 91 | </template> |
| ... | @@ -147,42 +100,24 @@ | ... | @@ -147,42 +100,24 @@ |
| 147 | </template> | 100 | </template> |
| 148 | </el-input> | 101 | </el-input> |
| 149 | <!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">--> | 102 | <!-- <div class="vcodeBox" :style="isShow?'height:240px':'height:0'">--> |
| 150 | <Vcode | 103 | <Vcode :fail-text="failVcode" :show="isShow" :slider-text="sliderText" :success-text="successVcode" |
| 151 | :fail-text="failVcode" :show="isShow" :slider-text="sliderText" :success-text="successVcode" | 104 | :z-index="9999" @success="codeSuccess" /> |
| 152 | :z-index="9999" @success="codeSuccess" | ||
| 153 | /> | ||
| 154 | <!-- </div>--> | 105 | <!-- </div>--> |
| 155 | </el-form-item> | 106 | </el-form-item> |
| 156 | 107 | ||
| 157 | <el-form-item prop="password"> | 108 | <el-form-item prop="password"> |
| 158 | <el-input | 109 | <el-input v-model.trim="changePasswordForm.password" :placeholder="language == 0 ? '新密码' : 'New password'" |
| 159 | v-model.trim="changePasswordForm.password" | 110 | auto-complete="off" show-password size="large" type="password" @keyup.enter="handleLogin" /> |
| 160 | :placeholder="language==0?'新密码':'New password'" | ||
| 161 | auto-complete="off" show-password | ||
| 162 | size="large" | ||
| 163 | type="password" | ||
| 164 | @keyup.enter="handleLogin" | ||
| 165 | /> | ||
| 166 | </el-form-item> | 111 | </el-form-item> |
| 167 | <el-form-item prop="confirmPassword"> | 112 | <el-form-item prop="confirmPassword"> |
| 168 | <el-input | 113 | <el-input v-model.trim="changePasswordForm.confirmPassword" |
| 169 | v-model.trim="changePasswordForm.confirmPassword" | 114 | :placeholder="language == 0 ? '确认密码' : 'Confirm password'" auto-complete="off" show-password size="large" |
| 170 | :placeholder="language==0?'确认密码':'Confirm password'" | 115 | type="password" /> |
| 171 | auto-complete="off" show-password | ||
| 172 | size="large" | ||
| 173 | type="password" | ||
| 174 | /> | ||
| 175 | </el-form-item> | 116 | </el-form-item> |
| 176 | <el-form-item style="width:100%;"> | 117 | <el-form-item style="width:100%;"> |
| 177 | <el-button | 118 | <el-button :loading="loading" class="loginBtn" size="large" style="width:100%;" type="primary" |
| 178 | :loading="loading" | 119 | @click.prevent="handleChangePassword"> |
| 179 | class="loginBtn" | 120 | <span v-if="language == 0">确定</span> |
| 180 | size="large" | ||
| 181 | style="width:100%;" | ||
| 182 | type="primary" | ||
| 183 | @click.prevent="handleChangePassword" | ||
| 184 | > | ||
| 185 | <span v-if="language==0">确定</span> | ||
| 186 | <span v-else>Submit</span> | 121 | <span v-else>Submit</span> |
| 187 | </el-button> | 122 | </el-button> |
| 188 | </el-form-item> | 123 | </el-form-item> |
| ... | @@ -624,7 +559,8 @@ const goPolicy = () => { | ... | @@ -624,7 +559,8 @@ const goPolicy = () => { |
| 624 | flex: 1 1 auto; | 559 | flex: 1 1 auto; |
| 625 | } | 560 | } |
| 626 | 561 | ||
| 627 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { | 562 | .el-input-group__append button.el-button, |
| 563 | .el-input-group__append button.el-button:hover { | ||
| 628 | color: var(--el-color-primary); | 564 | color: var(--el-color-primary); |
| 629 | background: #efefff; | 565 | background: #efefff; |
| 630 | border: var(--el-color-primary) solid 1px; | 566 | border: var(--el-color-primary) solid 1px; | ... | ... |
| ... | @@ -86,12 +86,12 @@ | ... | @@ -86,12 +86,12 @@ |
| 86 | application of visa invitation letter and purchasing insurance etc.</span> | 86 | application of visa invitation letter and purchasing insurance etc.</span> |
| 87 | </div> | 87 | </div> |
| 88 | </el-form-item> | 88 | </el-form-item> |
| 89 | <el-form-item :label="language==0?'证件号':'Passport number'" required> | ||
| 90 | <el-input v-model="wdsfData.passportNumber" /> | ||
| 91 | </el-form-item> | ||
| 92 | <el-form-item :label="language==0?'姓名':'Name'" required> | 89 | <el-form-item :label="language==0?'姓名':'Name'" required> |
| 93 | <el-input v-model.trim="wdsfData.certName" /> | 90 | <el-input v-model.trim="wdsfData.certName" /> |
| 94 | </el-form-item> | 91 | </el-form-item> |
| 92 | <el-form-item :label="language==0?'证件号':'Passport number'" required> | ||
| 93 | <el-input v-model="wdsfData.passportNumber" /> | ||
| 94 | </el-form-item> | ||
| 95 | <el-form-item :label="language==0?'性别':'Gender'" required> | 95 | <el-form-item :label="language==0?'性别':'Gender'" required> |
| 96 | <el-radio-group v-model="wdsfData.sex"> | 96 | <el-radio-group v-model="wdsfData.sex"> |
| 97 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | 97 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| ... | @@ -105,6 +105,9 @@ | ... | @@ -105,6 +105,9 @@ |
| 105 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" | 105 | style="width: 100%;" type="date" value-format="YYYY-MM-DD" |
| 106 | /> | 106 | /> |
| 107 | </el-form-item> | 107 | </el-form-item> |
| 108 | <el-form-item :label="language==0?'联系方式':'Contact Information'" required> | ||
| 109 | <el-input v-model.trim="wdsfData.phone" /> | ||
| 110 | </el-form-item> | ||
| 108 | 111 | ||
| 109 | <div class="h30" /> | 112 | <div class="h30" /> |
| 110 | 113 | ||
| ... | @@ -372,6 +375,10 @@ function bigNext() { | ... | @@ -372,6 +375,10 @@ function bigNext() { |
| 372 | ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name') | 375 | ElMessage.warning(language.value == 0 ? '请输入姓名' : 'Please enter your name') |
| 373 | return | 376 | return |
| 374 | } | 377 | } |
| 378 | if (!wdsfData.value.phone) { | ||
| 379 | ElMessage.warning(language.value == 0 ? '请输入联系方式' : 'Please enter your phone') | ||
| 380 | return | ||
| 381 | } | ||
| 375 | if (user && user.utype == '3') { | 382 | if (user && user.utype == '3') { |
| 376 | const obj = { | 383 | const obj = { |
| 377 | card: form.value.card, | 384 | card: form.value.card, |
| ... | @@ -381,6 +388,7 @@ function bigNext() { | ... | @@ -381,6 +388,7 @@ function bigNext() { |
| 381 | birth: wdsfData.value.birthday, | 388 | birth: wdsfData.value.birthday, |
| 382 | certName: wdsfData.value.certName, | 389 | certName: wdsfData.value.certName, |
| 383 | passportNumber: wdsfData.value.passportNumber, | 390 | passportNumber: wdsfData.value.passportNumber, |
| 391 | phone:wdsfData.value.phone, | ||
| 384 | ocrFlag: '1' | 392 | ocrFlag: '1' |
| 385 | } | 393 | } |
| 386 | if (Array.isArray(wdsfData.value.passportUrl)) { | 394 | if (Array.isArray(wdsfData.value.passportUrl)) { |
| ... | @@ -424,6 +432,7 @@ function next() { | ... | @@ -424,6 +432,7 @@ function next() { |
| 424 | certName: wdsfData.value.certName, | 432 | certName: wdsfData.value.certName, |
| 425 | birth: wdsfData.value.birthday, | 433 | birth: wdsfData.value.birthday, |
| 426 | passportNumber: wdsfData.value.passportNumber, | 434 | passportNumber: wdsfData.value.passportNumber, |
| 435 | phone:wdsfData.value.phone, | ||
| 427 | ocrFlag: '1' | 436 | ocrFlag: '1' |
| 428 | } | 437 | } |
| 429 | if (Array.isArray(wdsfData.value.passportUrl)) { | 438 | if (Array.isArray(wdsfData.value.passportUrl)) { |
| ... | @@ -449,6 +458,7 @@ function next() { | ... | @@ -449,6 +458,7 @@ function next() { |
| 449 | // personId: wdsfData.value.personId, | 458 | // personId: wdsfData.value.personId, |
| 450 | username: wdsfData.value.email, | 459 | username: wdsfData.value.email, |
| 451 | password: form.value.password, | 460 | password: form.value.password, |
| 461 | phone:wdsfData.value.phone, | ||
| 452 | ocrFlag: '1' | 462 | ocrFlag: '1' |
| 453 | } | 463 | } |
| 454 | if (Array.isArray(wdsfData.value.passportUrl)) { | 464 | if (Array.isArray(wdsfData.value.passportUrl)) { | ... | ... |
| ... | @@ -64,35 +64,40 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -64,35 +64,40 @@ 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.22:8081', |
| 68 | target: 'https://wdsfwuxicenter.com/stage-api', | 68 | // target: 'https://wdsfwuxicenter.com/stage-api', |
| 69 | // target: 'https://jijin.wtwuxicenter.com/stage-api', | ||
| 69 | changeOrigin: true, | 70 | changeOrigin: true, |
| 70 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') | 71 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-train/, '') |
| 71 | }, | 72 | }, |
| 72 | '/dev-api/ztx-match': { | 73 | '/dev-api/ztx-match': { |
| 73 | // target: 'http://192.168.1.118:8081', | 74 | target: 'http://192.168.1.22:8081', |
| 74 | target: 'https://wdsfwuxicenter.com/stage-api', | 75 | // target: 'https://jijin.wtwuxicenter.com/stage-api', |
| 76 | // target: 'https://wdsfwuxicenter.com/stage-api', | ||
| 75 | // target: 'https://wdsfwuxicenter.com/stage-api/', | 77 | // target: 'https://wdsfwuxicenter.com/stage-api/', |
| 76 | changeOrigin: true, | 78 | changeOrigin: true, |
| 77 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') | 79 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-match/, '') |
| 78 | }, | 80 | }, |
| 79 | '/dev-api/ztx-webSite': { | 81 | '/dev-api/ztx-webSite': { |
| 80 | // target: 'http://192.168.1.118:8081', | 82 | target: 'http://192.168.1.22:8081', |
| 81 | target: 'https://wdsfwuxicenter.com/stage-api', | 83 | // target: 'https://wdsfwuxicenter.com/stage-api', |
| 84 | // target: 'https://jijin.wtwuxicenter.com/stage-api', | ||
| 82 | changeOrigin: true, | 85 | changeOrigin: true, |
| 83 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') | 86 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') |
| 84 | }, | 87 | }, |
| 85 | '/dev-api': { | 88 | '/dev-api': { |
| 86 | // target: 'http://192.168.1.213:8081/', | 89 | target: 'http://192.168.1.22:8081', |
| 87 | // target: 'http://192.168.1.169:8081', | 90 | // target: 'http://192.168.1.169:8081', |
| 88 | // target: 'https://jijin.wtwuxicenter.com/stage-api', | 91 | // target: 'https://jijin.wtwuxicenter.com/stage-api', |
| 89 | target: 'https://wdsfwuxicenter.com/stage-api/', | 92 | // target: 'https://wdsfwuxicenter.com/stage-api/', |
| 93 | // target: 'https://jijin.wtwuxicenter.com/stage-api', | ||
| 90 | changeOrigin: true, | 94 | changeOrigin: true, |
| 91 | rewrite: (p) => p.replace(/^\/dev-api/, '') | 95 | rewrite: (p) => p.replace(/^\/dev-api/, '') |
| 92 | }, | 96 | }, |
| 93 | '/ticket': { | 97 | '/ticket': { |
| 94 | // target: 'http://192.168.1.242:8081/', | 98 | // target: 'https://jijin.wtwuxicenter.com/stage-api', |
| 95 | target: 'https://wdsfwuxicenter.com/h5/', | 99 | target: 'http://192.168.1.22:8081', |
| 100 | // target: 'https://wdsfwuxicenter.com/h5/', | ||
| 96 | // target: 'https://ticketh5.wdsfwuxicenter.com/h5/', | 101 | // target: 'https://ticketh5.wdsfwuxicenter.com/h5/', |
| 97 | changeOrigin: true, | 102 | changeOrigin: true, |
| 98 | rewrite: (p) => p.replace(/^\/ticket/, '') | 103 | rewrite: (p) => p.replace(/^\/ticket/, '') | ... | ... |
-
Please register or sign in to post a comment