no message
Showing
16 changed files
with
171 additions
and
36 deletions
src/assets/img/tag01@2x.png
0 → 100644
2.01 KB
src/assets/img/tag01_dwn@2x.png
0 → 100644
1.74 KB
src/assets/img/tag02@2x.png
0 → 100644
920 Bytes
src/assets/img/tag02_dwn@2x.png
0 → 100644
837 Bytes
src/assets/img/tag03@2x.png
0 → 100644
1.46 KB
src/assets/img/tag03_dwn@2x.png
0 → 100644
1.29 KB
| ... | @@ -1341,8 +1341,10 @@ img{display: block;} | ... | @@ -1341,8 +1341,10 @@ img{display: block;} |
| 1341 | font-size: 16px; | 1341 | font-size: 16px; |
| 1342 | color: var(--el-color-primary); | 1342 | color: var(--el-color-primary); |
| 1343 | } | 1343 | } |
| 1344 | .mb30{margin-bottom: 30px} | ||
| 1344 | .blackBtn{background: #000;} | 1345 | .blackBtn{background: #000;} |
| 1345 | 1346 | ||
| 1347 | .btn-black{background: #000;border-radius: 23px;padding: 6px 40px;color: #FFFFFF;font-size: 18px;} | ||
| 1346 | .btn-lineG{background: linear-gradient(90deg, #1B69F8, #0540EC); | 1348 | .btn-lineG{background: linear-gradient(90deg, #1B69F8, #0540EC); |
| 1347 | border-radius: 23px;padding: 6px 40px; | 1349 | border-radius: 23px;padding: 6px 40px; |
| 1348 | color: #FFFFFF; | 1350 | color: #FFFFFF; | ... | ... |
| ... | @@ -64,7 +64,7 @@ | ... | @@ -64,7 +64,7 @@ |
| 64 | <!-- <a target="_blank" href="https://wdsfwuxicenter.com/stage-api/fs/file/操作指引.zip">--> | 64 | <!-- <a target="_blank" href="https://wdsfwuxicenter.com/stage-api/fs/file/操作指引.zip">--> |
| 65 | <a> | 65 | <a> |
| 66 | <img class="kf" src="@/assets/logo/btn02.png"/> | 66 | <img class="kf" src="@/assets/logo/btn02.png"/> |
| 67 | <div class="text-center mt10">指南下载</div> | 67 | <div class="text-center mt10">参赛指南</div> |
| 68 | </a> | 68 | </a> |
| 69 | </div> | 69 | </div> |
| 70 | </div> | 70 | </div> | ... | ... |
| ... | @@ -267,6 +267,19 @@ export const constantRoutes = [ | ... | @@ -267,6 +267,19 @@ export const constantRoutes = [ |
| 267 | ] | 267 | ] |
| 268 | }, | 268 | }, |
| 269 | { | 269 | { |
| 270 | path: 'serverSearch', | ||
| 271 | component: Empty, | ||
| 272 | redirect: '/serverSearch', | ||
| 273 | children: [ | ||
| 274 | { | ||
| 275 | path: '', | ||
| 276 | component: () => import('@/viewsPc/booking/serverSearch'), | ||
| 277 | name: 'serverSearch', | ||
| 278 | meta: {title: '预约搜索'} | ||
| 279 | } | ||
| 280 | ] | ||
| 281 | }, | ||
| 282 | { | ||
| 270 | path: 'competition', | 283 | path: 'competition', |
| 271 | component: Empty, | 284 | component: Empty, |
| 272 | redirect: '/competition/index', | 285 | redirect: '/competition/index', | ... | ... |
src/viewsPc/booking/serverSearch.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box"> | ||
| 4 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> | ||
| 5 | <div class="lineHead"> | ||
| 6 | <h3>{{ language==0?'服务查询': 'Service Search' }}</h3> | ||
| 7 | </div> | ||
| 8 | <div class="pd20"> | ||
| 9 | <div class="topsearch"> | ||
| 10 | <el-input v-if="activeTab==0" placeholder="请输入护照号搜索"/> | ||
| 11 | <el-input v-else placeholder="请输入姓名搜索"/> | ||
| 12 | <el-button class="btn-lineG" type="primary" @click="search"> | ||
| 13 | <el-icon class="mr20"> | ||
| 14 | <Search/> | ||
| 15 | </el-icon> | ||
| 16 | {{ language==0?'搜索': 'Search' }} | ||
| 17 | </el-button> | ||
| 18 | </div> | ||
| 19 | |||
| 20 | <div class="stab"> | ||
| 21 | <div :class="activeTab==0?'active':''" @click="activeTab=0"> | ||
| 22 | <img v-show="activeTab!=0" src="@/assets/img/tag01@2x.png"/> | ||
| 23 | <img v-show="activeTab==0" src="@/assets/img/tag01_dwn@2x.png"/> | ||
| 24 | {{language==0?'签证服务':''}} | ||
| 25 | </div> | ||
| 26 | <div :class="activeTab==1?'active':''" @click="activeTab=1"> | ||
| 27 | <img v-show="activeTab!=1" src="@/assets/img/tag02@2x.png"/> | ||
| 28 | <img v-show="activeTab==1" src="@/assets/img/tag02_dwn@2x.png"/> | ||
| 29 | {{language==0?'酒店预定':''}} | ||
| 30 | </div> | ||
| 31 | <div :class="activeTab==2?'active':''" @click="activeTab=2"> | ||
| 32 | <img v-show="activeTab!=2" src="@/assets/img/tag03@2x.png"/> | ||
| 33 | <img v-show="activeTab==2" src="@/assets/img/tag03_dwn@2x.png"/> | ||
| 34 | {{language==0?'接送服务':''}} | ||
| 35 | </div> | ||
| 36 | </div> | ||
| 37 | <div> | ||
| 38 | <div v-for="item in list"></div> | ||
| 39 | |||
| 40 | </div> | ||
| 41 | |||
| 42 | <el-empty v-if="list.length==0"/> | ||
| 43 | </div> | ||
| 44 | </el-card> | ||
| 45 | </div> | ||
| 46 | </div> | ||
| 47 | </template> | ||
| 48 | |||
| 49 | <script setup> | ||
| 50 | import {ref, computed, onMounted} from 'vue' | ||
| 51 | import {queryTicket} from "@/apiPc/common"; | ||
| 52 | import {ElMessage} from "element-plus"; | ||
| 53 | import {useStorage} from "@vueuse/core/index"; | ||
| 54 | |||
| 55 | const language = useStorage('language', 0) | ||
| 56 | const activeTab = ref(0) | ||
| 57 | const form = ref({}) | ||
| 58 | const list = ref([]) | ||
| 59 | const query = ref({ | ||
| 60 | status: 1 | ||
| 61 | }) | ||
| 62 | const loading = ref(false) | ||
| 63 | |||
| 64 | function search() { | ||
| 65 | if (!query.value.idCard) { | ||
| 66 | ElMessage.warning('请输入证件号') | ||
| 67 | return | ||
| 68 | } | ||
| 69 | loading.value = true | ||
| 70 | queryTicket(query.value).then(res => { | ||
| 71 | list.value = res.data | ||
| 72 | for (let bill of list.value) { | ||
| 73 | // p.idCard = p.idCard.substring(0,4)+'****'+p.idCard.substring(8,p.idCard.length) | ||
| 74 | const pattern = new RegExp(query.value.idCard, 'gi') | ||
| 75 | bill.idCard = bill.idCard.replace(pattern, `<span class="highlight">$&</span>`) | ||
| 76 | |||
| 77 | } | ||
| 78 | loading.value = false | ||
| 79 | }) | ||
| 80 | } | ||
| 81 | </script> | ||
| 82 | |||
| 83 | <style scoped lang="scss"> | ||
| 84 | .highlight { | ||
| 85 | background: yellow; | ||
| 86 | } | ||
| 87 | .topsearch{display: flex;gap:10px; | ||
| 88 | .el-input {--el-input-bg-color: #F5F7F9;height: 50px; | ||
| 89 | --el-input-border-radius: 10px;} | ||
| 90 | .btn-lineG{border-radius: 10px;height: 50px;width: 130px;font-size: 20px;} | ||
| 91 | } | ||
| 92 | .stab{display: flex;gap: 20px;margin: 20px 0 0 ; | ||
| 93 | div{font-weight: 400;padding: 10px 0;display: flex;align-items: center; | ||
| 94 | font-size: 18px;cursor: pointer; | ||
| 95 | color: #4C5359; | ||
| 96 | img{height: 30px;} | ||
| 97 | } | ||
| 98 | .active{color: #030303;border-bottom: 2px solid #030303;} | ||
| 99 | } | ||
| 100 | </style> |
| 1 | <template> | 1 | <template> |
| 2 | <div class="itemBox" v-if="language === 0"> | 2 | <div class="itemBox" v-if="language === 0"> |
| 3 | <el-row :gutter="0" justify="space-around"> | 3 | <el-row :gutter="20"> |
| 4 | <el-col :sm="12" :lg="4" :xs="12"> | 4 | <el-col :sm="12" :lg="6" :xs="12"> |
| 5 | <div class="item" @click="building"><img src="@/assets/dance/btn01.png">签证服务</div> | 5 | <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn01.png">签证服务</div> |
| 6 | </el-col> | 6 | </el-col> |
| 7 | <el-col :sm="12" :lg="4" :xs="12"> | 7 | <el-col :sm="12" :lg="6" :xs="12"> |
| 8 | <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">酒店预订</div> | 8 | <div class="item" @click="popRemark(1)"><img src="@/assets/dance/btn02.png">酒店预订</div> |
| 9 | </el-col> | 9 | </el-col> |
| 10 | <el-col :sm="12" :lg="4" :xs="12"> | 10 | <el-col :sm="12" :lg="6" :xs="12"> |
| 11 | <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">接送服务</div> | 11 | <div class="item" @click="popRemark(2)"><img src="@/assets/dance/btn03.png">接送服务</div> |
| 12 | </el-col> | 12 | </el-col> |
| 13 | <el-col :sm="12" :lg="4" :xs="12"> | 13 | <el-col :sm="12" :lg="6" :xs="12"> |
| 14 | <div class="item" @click="goAbout"><img src="@/assets/dance/btn04.png">场馆介绍</div> | 14 | <div class="item" @click="goAbout"><img src="@/assets/dance/btn04.png">场馆介绍</div> |
| 15 | </el-col> | 15 | </el-col> |
| 16 | <el-col :sm="12" :lg="4" :xs="12"> | 16 | <!-- <el-col :sm="12" :lg="4" :xs="12">--> |
| 17 | <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">赛事直播</div> | 17 | <!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">赛事直播</div>--> |
| 18 | </el-col> | 18 | <!-- </el-col>--> |
| 19 | </el-row> | 19 | </el-row> |
| 20 | </div> | 20 | </div> |
| 21 | <div class="itemBox_en" v-else> | 21 | <div class="itemBox_en" v-else> |
| ... | @@ -32,13 +32,13 @@ | ... | @@ -32,13 +32,13 @@ |
| 32 | <el-col :sm="12" :lg="4" :xs="12"> | 32 | <el-col :sm="12" :lg="4" :xs="12"> |
| 33 | <div class="item" @click="goAbout"><img src="@/assets/dance/btn04.png">Venue Introduction</div> | 33 | <div class="item" @click="goAbout"><img src="@/assets/dance/btn04.png">Venue Introduction</div> |
| 34 | </el-col> | 34 | </el-col> |
| 35 | <el-col :sm="12" :lg="4" :xs="12"> | 35 | <!-- <el-col :sm="12" :lg="4" :xs="12">--> |
| 36 | <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">live streaming</div> | 36 | <!-- <div class="item" @click="liveClick"><img src="@/assets/dance/btn05.png">live streaming</div>--> |
| 37 | </el-col> | 37 | <!-- </el-col>--> |
| 38 | </el-row> | 38 | </el-row> |
| 39 | </div> | 39 | </div> |
| 40 | <order-remark ref="orderRemarkRef" @submit="goBooking"/> | 40 | <order-remark ref="orderRemarkRef" @submit="goBooking"/> |
| 41 | 41 | <affix-invitation ref="dialogInvitationRef"/> | |
| 42 | </template> | 42 | </template> |
| 43 | 43 | ||
| 44 | <script setup> | 44 | <script setup> |
| ... | @@ -46,6 +46,7 @@ import {useRouter} from "vue-router"; | ... | @@ -46,6 +46,7 @@ import {useRouter} from "vue-router"; |
| 46 | 46 | ||
| 47 | const router = useRouter() | 47 | const router = useRouter() |
| 48 | import OrderRemark from '@/viewsPc/components/orderRemark' | 48 | import OrderRemark from '@/viewsPc/components/orderRemark' |
| 49 | import AffixInvitation from '@/viewsPc/match/components/affix-invitation' | ||
| 49 | 50 | ||
| 50 | const {proxy} = getCurrentInstance() | 51 | const {proxy} = getCurrentInstance() |
| 51 | import {useStorage} from "@vueuse/core/index"; | 52 | import {useStorage} from "@vueuse/core/index"; |
| ... | @@ -112,12 +113,24 @@ function building() { | ... | @@ -112,12 +113,24 @@ function building() { |
| 112 | ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') | 113 | ElMessage.warning(language.value == 0 ? '感谢您对本次比赛的关注,该服务暂无可预订信息,敬请期待。' : 'Thank you for your attention to this competition. The service is currently unavailable for booking. Please stay tuned.') |
| 113 | return | 114 | return |
| 114 | } | 115 | } |
| 115 | 116 | function applyInvitation() { | |
| 117 | var obj = { | ||
| 118 | title: language.value == 0 ? '邀请函申请' : 'Visa Invitation Letter ', | ||
| 119 | cptId: matchId.value, | ||
| 120 | } | ||
| 121 | proxy.$refs['dialogInvitationRef'].open(obj) | ||
| 122 | } | ||
| 116 | function popRemark(type) { | 123 | function popRemark(type) { |
| 117 | if (!form.value) { | 124 | if (!form.value) { |
| 118 | building() | 125 | building() |
| 119 | return | 126 | return |
| 120 | } | 127 | } |
| 128 | if(type == '1'){ | ||
| 129 | // 签证 | ||
| 130 | applyInvitation() | ||
| 131 | return | ||
| 132 | } | ||
| 133 | |||
| 121 | if ((form.value.isJdView == 0 && type == '1') | 134 | if ((form.value.isJdView == 0 && type == '1') |
| 122 | || (form.value.isCarView == 0 && type == '2') | 135 | || (form.value.isCarView == 0 && type == '2') |
| 123 | || (form.value.isFoodView == 0 && type == '3') | 136 | || (form.value.isFoodView == 0 && type == '3') |
| ... | @@ -173,8 +186,8 @@ function goBooking(n) { | ... | @@ -173,8 +186,8 @@ function goBooking(n) { |
| 173 | 186 | ||
| 174 | <style scoped lang="scss"> | 187 | <style scoped lang="scss"> |
| 175 | .itemBox,.itemBox_en { | 188 | .itemBox,.itemBox_en { |
| 176 | padding: 20px 0;background: #fff;box-shadow: 0 0 46px 0 rgba(1,16,64,0.08); | 189 | padding: 20px;background: #fff;box-shadow: 0 0 46px 0 rgba(1,16,64,0.08); |
| 177 | border-radius: 20px;margin-bottom: 22px; | 190 | border-radius: 20px; |
| 178 | } | 191 | } |
| 179 | 192 | ||
| 180 | 193 | ... | ... |
| ... | @@ -21,7 +21,7 @@ | ... | @@ -21,7 +21,7 @@ |
| 21 | </div> | 21 | </div> |
| 22 | </el-col> | 22 | </el-col> |
| 23 | <el-col :sm="24" :lg="14"> | 23 | <el-col :sm="24" :lg="14"> |
| 24 | <el-button round class="searchfw"> | 24 | <el-button round class="searchfw" @click="goSearch"> |
| 25 | <el-icon class="mr20"> | 25 | <el-icon class="mr20"> |
| 26 | <Search/> | 26 | <Search/> |
| 27 | </el-icon> | 27 | </el-icon> |
| ... | @@ -38,6 +38,7 @@ import useUserStore from '@/store/modules/user' | ... | @@ -38,6 +38,7 @@ import useUserStore from '@/store/modules/user' |
| 38 | import WeatherIcon from '@/viewsPc/components/weatherIcon' | 38 | import WeatherIcon from '@/viewsPc/components/weatherIcon' |
| 39 | import {getWeather} from "@/apiPc/webSite" | 39 | import {getWeather} from "@/apiPc/webSite" |
| 40 | import dayjs from "dayjs" | 40 | import dayjs from "dayjs" |
| 41 | import router from "@/routerPc/en"; | ||
| 41 | const language = useUserStore().language | 42 | const language = useUserStore().language |
| 42 | const weatherObj = ref({ | 43 | const weatherObj = ref({ |
| 43 | forecast:[] | 44 | forecast:[] |
| ... | @@ -55,6 +56,10 @@ function init(){ | ... | @@ -55,6 +56,10 @@ function init(){ |
| 55 | useUserStore().setWeather(weatherObj.value) | 56 | useUserStore().setWeather(weatherObj.value) |
| 56 | }) | 57 | }) |
| 57 | } | 58 | } |
| 59 | |||
| 60 | function goSearch() { | ||
| 61 | router.push({path: '/serverSearch'}) | ||
| 62 | } | ||
| 58 | </script> | 63 | </script> |
| 59 | 64 | ||
| 60 | <style scoped lang="scss"> | 65 | <style scoped lang="scss"> | ... | ... |
| ... | @@ -90,12 +90,14 @@ | ... | @@ -90,12 +90,14 @@ |
| 90 | </el-carousel> | 90 | </el-carousel> |
| 91 | </div> | 91 | </div> |
| 92 | 92 | ||
| 93 | <div class="mb30"> | ||
| 94 | <home-weather-bar/> | ||
| 95 | </div> | ||
| 96 | |||
| 93 | <div class="box"> | 97 | <div class="box"> |
| 94 | <HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name"/> | 98 | <HomeQuick :match-id="matchData?.id" :cpt-name="matchData?.name"/> |
| 95 | </div> | 99 | </div> |
| 96 | 100 | ||
| 97 | <home-weather-bar/> | ||
| 98 | |||
| 99 | <div id="part0" class="box part"> | 101 | <div id="part0" class="box part"> |
| 100 | <el-row :gutter="20"> | 102 | <el-row :gutter="20"> |
| 101 | <el-col :sm="24" :lg="12"> | 103 | <el-col :sm="24" :lg="12"> |
| ... | @@ -248,7 +250,7 @@ | ... | @@ -248,7 +250,7 @@ |
| 248 | <div v-html="aboutUsContent"></div> | 250 | <div v-html="aboutUsContent"></div> |
| 249 | </div> | 251 | </div> |
| 250 | <div class="mt30 text-center"> | 252 | <div class="mt30 text-center"> |
| 251 | <a class="btn-lineG" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img | 253 | <a class="btn-black" href="#/about/wuDao" style="display: inline-flex;align-items: center;">了解更多<img |
| 252 | style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a> | 254 | style="filter: brightness(2);height: 8px" src="@/assets/v1/more.png"/></a> |
| 253 | </div> | 255 | </div> |
| 254 | 256 | ... | ... |
| ... | @@ -169,6 +169,8 @@ | ... | @@ -169,6 +169,8 @@ |
| 169 | </el-form-item> | 169 | </el-form-item> |
| 170 | </el-form> | 170 | </el-form> |
| 171 | </div> | 171 | </div> |
| 172 | |||
| 173 | |||
| 172 | </el-dialog> | 174 | </el-dialog> |
| 173 | </template> | 175 | </template> |
| 174 | 176 | ||
| ... | @@ -187,7 +189,8 @@ import {ElMessage, ElMessageBox} from 'element-plus' | ... | @@ -187,7 +189,8 @@ import {ElMessage, ElMessageBox} from 'element-plus' |
| 187 | import cache from "@/plugins/cache"; | 189 | import cache from "@/plugins/cache"; |
| 188 | import {useStorage} from "@vueuse/core/index"; | 190 | import {useStorage} from "@vueuse/core/index"; |
| 189 | import {getCaptchaSms, getCaptchaSms2} from "@/apiPc/match"; | 191 | import {getCaptchaSms, getCaptchaSms2} from "@/apiPc/match"; |
| 190 | 192 | const user = useUserStore().user | |
| 193 | const useStore = useUserStore | ||
| 191 | const emit = defineEmits(['submitForm']) | 194 | const emit = defineEmits(['submitForm']) |
| 192 | const userStore = useUserStore() | 195 | const userStore = useUserStore() |
| 193 | const router = useRouter() | 196 | const router = useRouter() |
| ... | @@ -307,11 +310,9 @@ function showChangePassword() { | ... | @@ -307,11 +310,9 @@ function showChangePassword() { |
| 307 | } | 310 | } |
| 308 | 311 | ||
| 309 | function showRegister() { | 312 | function showRegister() { |
| 310 | loginStatus.value = 1 | 313 | if(!user){ |
| 311 | if (language.value == 0) { | 314 | useStore().setVisitor() |
| 312 | title.value = '账号注册' | 315 | return |
| 313 | } else { | ||
| 314 | title.value = 'REGISTER' | ||
| 315 | } | 316 | } |
| 316 | } | 317 | } |
| 317 | 318 | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <el-dialog v-model="show" :title="language==0?'快捷注册':'Quick Login'" close-icon="CircleClose" | 2 | <el-dialog v-model="show" :title="language==0?'注册':'Login'" close-icon="CircleClose" |
| 3 | width="480" :append-to-body="true" destroy-on-close @close="close"> | 3 | width="480" :append-to-body="true" destroy-on-close @close="close" center> |
| 4 | <div> | 4 | <div> |
| 5 | <el-form class="d-form" size="large" :label-width="language==0?80:150" :label-position="language==0?'right':'top'" style="max-width: 500px;margin: auto"> | 5 | <el-form class="d-form" size="large" :label-width="language==0?80:150" :label-position="language==0?'right':'top'" style="max-width: 500px;margin: auto"> |
| 6 | <el-form-item :label="language==0?'邮箱':'E-mail'" required> | 6 | <el-form-item :label="language==0?'邮箱':'E-mail'" required> |
| ... | @@ -46,9 +46,8 @@ | ... | @@ -46,9 +46,8 @@ |
| 46 | </div> | 46 | </div> |
| 47 | <template #footer> | 47 | <template #footer> |
| 48 | <div class="dialog-footer text-center"> | 48 | <div class="dialog-footer text-center"> |
| 49 | <el-button type="primary" class="btn-lineG w200px" round @click="register">{{language==0?'登录':'Confirm'}}</el-button> | 49 | <a class="btn-black w200px" @click="register">{{language==0?'登录':'Confirm'}}</a> |
| 50 | <div class="text-primary underline mt20 pointer" @click="goLogin">{{language==0?'已有账号去登录':'Already have an account? Login'}}</div> | 50 | <div class="text-primary underline mt20 pointer" @click="goLogin">{{language==0?'已有账号去登录':'Already have an account? Login'}}</div> |
| 51 | |||
| 52 | </div> | 51 | </div> |
| 53 | </template> | 52 | </template> |
| 54 | </el-dialog> | 53 | </el-dialog> | ... | ... |
| ... | @@ -3,15 +3,15 @@ | ... | @@ -3,15 +3,15 @@ |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <el-card class="mt30 mb60" > | 4 | <el-card class="mt30 mb60" > |
| 5 | <div v-if="language==0"> | 5 | <div v-if="language==0"> |
| 6 | <h3 class="text-center">体育舞蹈系统用户注册隐私政策</h3> | 6 | <h3 class="text-center">系统用户注册隐私政策</h3> |
| 7 | <h4>一、前言</h4> | 7 | <h4>一、前言</h4> |
| 8 | 我们非常重视您的隐私,并致力于保护您的个人信息。本隐私政策旨在向您说明我们在您注册和使用体育舞蹈系统时,如何收集、使用、存储和保护您的个人信息。请您在注册前仔细阅读本隐私政策,确保您充分理解并同意我们的隐私保护措施。 | 8 | 我们非常重视您的隐私,并致力于保护您的个人信息。本隐私政策旨在向您说明我们在您注册和使用本系统时,如何收集、使用、存储和保护您的个人信息。请您在注册前仔细阅读本隐私政策,确保您充分理解并同意我们的隐私保护措施。 |
| 9 | <h4>二、个人信息的收集</h4> | 9 | <h4>二、个人信息的收集</h4> |
| 10 | 注册信息:在您注册体育舞蹈系统账户时,我们会收集您的姓名、性别、出生日期、电子邮箱、手机号码等基本信息。<br/> | 10 | 注册信息:在您注册本系统账户时,我们会收集您的姓名、性别、出生日期、电子邮箱、手机号码等基本信息。<br/> |
| 11 | 使用信息:在您使用系统服务时,我们会自动收集并记录您的使用信息,包括但不限于访问日期和时间、使用时长、浏览记录等。<br/> | 11 | 使用信息:在您使用系统服务时,我们会自动收集并记录您的使用信息,包括但不限于访问日期和时间、使用时长、浏览记录等。<br/> |
| 12 | 位置信息:根据您的授权,我们可能会收集您的地理位置信息,以便为您提供更准确的服务。<br/> | 12 | 位置信息:根据您的授权,我们可能会收集您的地理位置信息,以便为您提供更准确的服务。<br/> |
| 13 | <h4>三、个人信息的使用</h4> | 13 | <h4>三、个人信息的使用</h4> |
| 14 | 提供服务:我们会使用您的个人信息为您提供体育舞蹈系统服务,包括但不限于在线课程、社区交流、活动报名等。<br/> | 14 | 提供服务:我们会使用您的个人信息为您提供本系统服务,包括但不限于在线课程、社区交流、活动报名等。<br/> |
| 15 | 优化服务:我们会根据您的使用信息和反馈,不断优化和改进我们的服务,提升用户体验。<br/> | 15 | 优化服务:我们会根据您的使用信息和反馈,不断优化和改进我们的服务,提升用户体验。<br/> |
| 16 | 推荐内容:我们会根据您的兴趣和偏好,为您推荐相关课程和活动。<br/> | 16 | 推荐内容:我们会根据您的兴趣和偏好,为您推荐相关课程和活动。<br/> |
| 17 | <h4>四、个人信息的存储与保护</h4> | 17 | <h4>四、个人信息的存储与保护</h4> |
| ... | @@ -26,7 +26,7 @@ | ... | @@ -26,7 +26,7 @@ |
| 26 | 投诉与举报:如果您认为我们在处理您的个人信息方面存在不当行为,您可以向相关部门进行投诉或举报。<br/> | 26 | 投诉与举报:如果您认为我们在处理您的个人信息方面存在不当行为,您可以向相关部门进行投诉或举报。<br/> |
| 27 | <h4>七、其他</h4> | 27 | <h4>七、其他</h4> |
| 28 | 政策更新:我们可能会根据需要对本隐私政策进行更新。更新后的政策将通过系统通知或其他适当方式通知您。请您定期查看本隐私政策,以确保您了解并同意我们的隐私保护措施。<br/> | 28 | 政策更新:我们可能会根据需要对本隐私政策进行更新。更新后的政策将通过系统通知或其他适当方式通知您。请您定期查看本隐私政策,以确保您了解并同意我们的隐私保护措施。<br/> |
| 29 | 适用范围:本隐私政策适用于体育舞蹈系统及其相关服务。对于其他第三方服务或网站,我们建议您查阅其相关的隐私政策。<br/> | 29 | 适用范围:本隐私政策适用于本系统及其相关服务。对于其他第三方服务或网站,我们建议您查阅其相关的隐私政策。<br/> |
| 30 | <h4>八、联系方式</h4> | 30 | <h4>八、联系方式</h4> |
| 31 | 如果您对本隐私政策有任何疑问或建议,请通过以下方式与我们联系:<br/> | 31 | 如果您对本隐私政策有任何疑问或建议,请通过以下方式与我们联系:<br/> |
| 32 | <p>电子邮箱:[497118883@qq.com]</p> | 32 | <p>电子邮箱:[497118883@qq.com]</p> | ... | ... |
-
Please register or sign in to post a comment