no message
Showing
44 changed files
with
647 additions
and
2059 deletions
| ... | @@ -604,12 +604,12 @@ export const cjList = [ | ... | @@ -604,12 +604,12 @@ export const cjList = [ |
| 604 | {RANK:'103-104',COUPLE:'Lai Juncheng - Hu Yaqing',COUNTRY:'CHN',START:'233',BASE:'8',POINTS:'21'}, | 604 | {RANK:'103-104',COUPLE:'Lai Juncheng - Hu Yaqing',COUNTRY:'CHN',START:'233',BASE:'8',POINTS:'21'}, |
| 605 | {RANK:'105-106',COUPLE:'Hoh Leonard - Mu Linda',COUNTRY:'MAS',START:'183',BASE:'8',POINTS:'21'}, | 605 | {RANK:'105-106',COUPLE:'Hoh Leonard - Mu Linda',COUNTRY:'MAS',START:'183',BASE:'8',POINTS:'21'}, |
| 606 | {RANK:'105-106',COUPLE:'Shi Minghang - Yao Qianwen',COUNTRY:'CHN',START:'239',BASE:'8',POINTS:'21'}, | 606 | {RANK:'105-106',COUPLE:'Shi Minghang - Yao Qianwen',COUNTRY:'CHN',START:'239',BASE:'8',POINTS:'21'}, |
| 607 | {RANK:'107-108',COUPLE:'Huang Cuihao - Hu Yidan',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, | 607 | {RANK:'107-108',COUPLE:'Huang Cuihao - Hu Yidan',COUNTRY:'CHN',START:'141',BASE:'8',POINTS:'21'}, |
| 608 | {RANK:'107-108',COUPLE:'Luo Yi - Li Jingyi',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, | 608 | {RANK:'107-108',COUPLE:'Luo Yi - Li Jingyi',COUNTRY:'CHN',START:'169',BASE:'8',POINTS:'21'}, |
| 609 | {RANK:'109-112',COUPLE:'Liang Jizu - Shao Xingjun',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, | 609 | {RANK:'109-112',COUPLE:'Liang Jizu - Shao Xingjun',COUNTRY:'CHN',START:'162',BASE:'8',POINTS:'21'}, |
| 610 | {RANK:'109-112',COUPLE:'Xie Cuntan - Feng Ruolin',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, | 610 | {RANK:'109-112',COUPLE:'Xie Cuntan - Feng Ruolin',COUNTRY:'CHN',START:'211',BASE:'8',POINTS:'21'}, |
| 611 | {RANK:'109-112',COUPLE:'Wong Lap Yin - Cheung Kit Ni',COUNTRY:'HKG',START:'',BASE:'8',POINTS:'21'}, | 611 | {RANK:'109-112',COUPLE:'Wong Lap Yin - Cheung Kit Ni',COUNTRY:'HKG',START:'218',BASE:'8',POINTS:'21'}, |
| 612 | {RANK:'109-112',COUPLE:'Zhao Yibo - Lu Yan',COUNTRY:'CHN',START:'',BASE:'8',POINTS:'21'}, | 612 | {RANK:'109-112',COUPLE:'Zhao Yibo - Lu Yan',COUNTRY:'CHN',START:'236',BASE:'8',POINTS:'21'}, |
| 613 | {RANK:'113-124',COUPLE:'Feng Long - Lu Shimeng',COUNTRY:'CHN',START:'125',BASE:'8',POINTS:'21'}, | 613 | {RANK:'113-124',COUPLE:'Feng Long - Lu Shimeng',COUNTRY:'CHN',START:'125',BASE:'8',POINTS:'21'}, |
| 614 | {RANK:'113-124',COUPLE:'Han Minghao - Su Lyuran',COUNTRY:'CHN',START:'139',BASE:'8',POINTS:'21'}, | 614 | {RANK:'113-124',COUPLE:'Han Minghao - Su Lyuran',COUNTRY:'CHN',START:'139',BASE:'8',POINTS:'21'}, |
| 615 | {RANK:'113-124',COUPLE:'Tuyo Wen Hao - Tuyo Xing Yao',COUNTRY:'MAS',START:'140',BASE:'8',POINTS:'21'}, | 615 | {RANK:'113-124',COUPLE:'Tuyo Wen Hao - Tuyo Xing Yao',COUNTRY:'MAS',START:'140',BASE:'8',POINTS:'21'}, | ... | ... |
| ... | @@ -37,9 +37,9 @@ | ... | @@ -37,9 +37,9 @@ |
| 37 | <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item> | 37 | <el-menu-item index="/guide">{{ language==0?'参赛指南':'GUIDELINE' }}</el-menu-item> |
| 38 | <!-- <el-sub-menu index="/about">--> | 38 | <!-- <el-sub-menu index="/about">--> |
| 39 | <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> | 39 | <!-- <template #title>{{ language==0?'关于我们':'CONTACT & MORE' }}</template>--> |
| 40 | <!-- <el-menu-item index="/about/wuDao">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> | 40 | <!-- <el-menu-item index="/about/wuDaoEn">{{ language==0?'舞蹈节':'About Us' }}</el-menu-item>--> |
| 41 | <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> | 41 | <!-- <el-menu-item index="/about/regulations" v-if="language==1">Rules & Regulations</el-menu-item>--> |
| 42 | <!-- <el-menu-item index="/about/culture">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> | 42 | <!-- <el-menu-item index="/about/cultureEn">{{ language==0?'地方文化':'Culture' }}</el-menu-item>--> |
| 43 | <!-- </el-sub-menu>--> | 43 | <!-- </el-sub-menu>--> |
| 44 | </el-menu> | 44 | </el-menu> |
| 45 | </div> | 45 | </div> |
| ... | @@ -119,9 +119,9 @@ | ... | @@ -119,9 +119,9 @@ |
| 119 | <el-menu-item index="/guide">GUIDELINE</el-menu-item> | 119 | <el-menu-item index="/guide">GUIDELINE</el-menu-item> |
| 120 | <el-sub-menu index="/about"> | 120 | <el-sub-menu index="/about"> |
| 121 | <template #title>CONTACT & MORE</template> | 121 | <template #title>CONTACT & MORE</template> |
| 122 | <el-menu-item index="/about/wuDao">About Us</el-menu-item> | 122 | <el-menu-item index="/about/wuDaoEn">About Us</el-menu-item> |
| 123 | <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item> | 123 | <el-menu-item index="/about/regulations">Rules & Regulations</el-menu-item> |
| 124 | <el-menu-item index="/about/culture">Culture</el-menu-item> | 124 | <el-menu-item index="/about/cultureEn">Culture</el-menu-item> |
| 125 | </el-sub-menu> | 125 | </el-sub-menu> |
| 126 | </el-menu> | 126 | </el-menu> |
| 127 | </el-drawer> | 127 | </el-drawer> | ... | ... |
| ... | @@ -98,7 +98,7 @@ app.component('Draggable', draggable) | ... | @@ -98,7 +98,7 @@ app.component('Draggable', draggable) |
| 98 | app.component('WePay', wePay) | 98 | app.component('WePay', wePay) |
| 99 | 99 | ||
| 100 | if (language.value == 0) { | 100 | if (language.value == 0) { |
| 101 | app.use(routerCn) | 101 | app.use(routerEn) |
| 102 | app.use(ElementPlus, { | 102 | app.use(ElementPlus, { |
| 103 | locale: localeCn, | 103 | locale: localeCn, |
| 104 | size: Cookies.get('size') || 'default' | 104 | size: Cookies.get('size') || 'default' | ... | ... |
| ... | @@ -70,7 +70,7 @@ export const constantRoutes = [ | ... | @@ -70,7 +70,7 @@ export const constantRoutes = [ |
| 70 | children: [ | 70 | children: [ |
| 71 | { | 71 | { |
| 72 | path: '', | 72 | path: '', |
| 73 | component: () => import('@/viewsPc/index_en'), | 73 | component: () => import('@/viewsPc/home'), |
| 74 | name: 'home' | 74 | name: 'home' |
| 75 | }, | 75 | }, |
| 76 | { | 76 | { |
| ... | @@ -90,14 +90,32 @@ export const constantRoutes = [ | ... | @@ -90,14 +90,32 @@ export const constantRoutes = [ |
| 90 | children: [ | 90 | children: [ |
| 91 | { | 91 | { |
| 92 | path: 'wudao', | 92 | path: 'wudao', |
| 93 | component: () => import('@/viewsPc/about/wudao_en'), | 93 | component: () => import('@/viewsPc/about/wudao'), |
| 94 | name: 'dangNews', | 94 | name: 'dangNews', |
| 95 | meta: { title: 'about us' } | 95 | meta: { title: '舞蹈节' } |
| 96 | }, | 96 | }, |
| 97 | { | 97 | { |
| 98 | path: 'culture', | 98 | path: 'culture', |
| 99 | component: () => import('@/viewsPc/about/culture_en'), | 99 | component: () => import('@/viewsPc/about/culture'), |
| 100 | name: 'culture', | 100 | name: 'culture', |
| 101 | meta: { title: '地方文化' } | ||
| 102 | }, | ||
| 103 | { | ||
| 104 | path: 'leaderInfo/:id', | ||
| 105 | component: () => import('@/viewsPc/about/leaderInfo'), | ||
| 106 | name: 'leaderInfo', | ||
| 107 | meta: { title: '评委详情' } | ||
| 108 | }, | ||
| 109 | { | ||
| 110 | path: 'wudaoEn', | ||
| 111 | component: () => import('@/viewsPc/about/wudao_en'), | ||
| 112 | name: 'dangNewsEn', | ||
| 113 | meta: { title: 'about us' } | ||
| 114 | }, | ||
| 115 | { | ||
| 116 | path: 'cultureEn', | ||
| 117 | component: () => import('@/viewsPc/about/culture_en'), | ||
| 118 | name: 'cultureEn', | ||
| 101 | meta: { title: 'culture' } | 119 | meta: { title: 'culture' } |
| 102 | }, | 120 | }, |
| 103 | { | 121 | { |
| ... | @@ -115,7 +133,7 @@ export const constantRoutes = [ | ... | @@ -115,7 +133,7 @@ export const constantRoutes = [ |
| 115 | children: [ | 133 | children: [ |
| 116 | { | 134 | { |
| 117 | path: 'index', | 135 | path: 'index', |
| 118 | component: () => import('@/viewsPc/notice/index_en'), | 136 | component: () => import('@/viewsPc/notice/index'), |
| 119 | name: 'notice', | 137 | name: 'notice', |
| 120 | meta: { title: 'NOTICEBOARD' } | 138 | meta: { title: 'NOTICEBOARD' } |
| 121 | }, | 139 | }, |
| ... | @@ -152,13 +170,13 @@ export const constantRoutes = [ | ... | @@ -152,13 +170,13 @@ export const constantRoutes = [ |
| 152 | children: [ | 170 | children: [ |
| 153 | { | 171 | { |
| 154 | path: 'index', | 172 | path: 'index', |
| 155 | component: () => import('@/viewsPc/news/index_en'), | 173 | component: () => import('@/viewsPc/news/index'), |
| 156 | name: 'news', | 174 | name: 'news', |
| 157 | meta: { title: 'NEWS' } | 175 | meta: { title: 'NEWS' } |
| 158 | }, | 176 | }, |
| 159 | { | 177 | { |
| 160 | path: 'list/:id', | 178 | path: 'list/:id', |
| 161 | component: () => import('@/viewsPc/news/list_en'), | 179 | component: () => import('@/viewsPc/news/list'), |
| 162 | name: 'newsList', | 180 | name: 'newsList', |
| 163 | meta: { title: '新闻列表' } | 181 | meta: { title: '新闻列表' } |
| 164 | }, | 182 | }, |
| ... | @@ -197,7 +215,7 @@ export const constantRoutes = [ | ... | @@ -197,7 +215,7 @@ export const constantRoutes = [ |
| 197 | children: [ | 215 | children: [ |
| 198 | { | 216 | { |
| 199 | path: 'index', | 217 | path: 'index', |
| 200 | component: () => import('@/viewsPc/meta/index_en'), | 218 | component: () => import('@/viewsPc/meta/index'), |
| 201 | name: 'meta', | 219 | name: 'meta', |
| 202 | meta: { title: 'MEDIA' } | 220 | meta: { title: 'MEDIA' } |
| 203 | } | 221 | } |
| ... | @@ -223,7 +241,7 @@ export const constantRoutes = [ | ... | @@ -223,7 +241,7 @@ export const constantRoutes = [ |
| 223 | children: [ | 241 | children: [ |
| 224 | { | 242 | { |
| 225 | path: 'index', | 243 | path: 'index', |
| 226 | component: () => import('@/viewsPc/guide/index_en'), | 244 | component: () => import('@/viewsPc/guide/index'), |
| 227 | name: 'guide', | 245 | name: 'guide', |
| 228 | meta: { title: 'GUIDELINE' } | 246 | meta: { title: 'GUIDELINE' } |
| 229 | } | 247 | } |
| ... | @@ -293,31 +311,6 @@ export const constantRoutes = [ | ... | @@ -293,31 +311,6 @@ export const constantRoutes = [ |
| 293 | ] | 311 | ] |
| 294 | }, | 312 | }, |
| 295 | { | 313 | { |
| 296 | path: 'train', | ||
| 297 | component: Empty, | ||
| 298 | redirect: '/train/list', | ||
| 299 | children: [ | ||
| 300 | { | ||
| 301 | path: 'list', | ||
| 302 | component: () => import('@/viewsPc/train/index'), | ||
| 303 | name: 'trainList', | ||
| 304 | meta: { title: '培训' } | ||
| 305 | }, | ||
| 306 | { | ||
| 307 | path: 'detail/:id', | ||
| 308 | component: () => import('@/viewsPc/train/detail'), | ||
| 309 | name: 'trainDetail', | ||
| 310 | meta: { title: '培训详情' } | ||
| 311 | }, | ||
| 312 | { | ||
| 313 | path: 'signUp/:id', | ||
| 314 | component: () => import('@/viewsPc/train/signUp'), | ||
| 315 | name: 'trainSignUp', | ||
| 316 | meta: { title: '培训报名' } | ||
| 317 | } | ||
| 318 | ] | ||
| 319 | }, | ||
| 320 | { | ||
| 321 | path: 'register', | 314 | path: 'register', |
| 322 | component: Empty, | 315 | component: Empty, |
| 323 | redirect: '/register', | 316 | redirect: '/register', |
| ... | @@ -472,6 +465,12 @@ export const constantRoutes = [ | ... | @@ -472,6 +465,12 @@ export const constantRoutes = [ |
| 472 | meta: { title: '团队报名' } | 465 | meta: { title: '团队报名' } |
| 473 | }, | 466 | }, |
| 474 | { | 467 | { |
| 468 | path: 'list/:id/teamSignCn', | ||
| 469 | component: () => import('@/viewsPc/match/teamSign_bak'), | ||
| 470 | name: 'teamSignCn', | ||
| 471 | meta: { title: '团队报名-国内赛' } | ||
| 472 | }, | ||
| 473 | { | ||
| 475 | path: 'list/:id/chooseCoach', | 474 | path: 'list/:id/chooseCoach', |
| 476 | component: () => import('@/viewsPc/match/chooseCoach'), | 475 | component: () => import('@/viewsPc/match/chooseCoach'), |
| 477 | name: 'chooseCoach', | 476 | name: 'chooseCoach', | ... | ... |
| ... | @@ -11,7 +11,7 @@ | ... | @@ -11,7 +11,7 @@ |
| 11 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" /> | 11 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" /> |
| 12 | </el-select> | 12 | </el-select> |
| 13 | </el-form-item> | 13 | </el-form-item> |
| 14 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" required prop="address"> | 14 | <el-form-item :label="language==0?'详细地址':'Detailed Address'"> |
| 15 | <el-cascader v-if="form.countryId == 240" | 15 | <el-cascader v-if="form.countryId == 240" |
| 16 | v-model="form.regionId" | 16 | v-model="form.regionId" |
| 17 | style="width: 100%;" | 17 | style="width: 100%;" |
| ... | @@ -23,13 +23,13 @@ | ... | @@ -23,13 +23,13 @@ |
| 23 | <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name"> | 23 | <el-form-item :label="language==0?'机构名称':'Team Name'" required prop="name"> |
| 24 | <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/> | 24 | <el-input type="text" v-model="form.name" :placeholder="language==0?'请输入内容':''"/> |
| 25 | </el-form-item> | 25 | </el-form-item> |
| 26 | <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag"> | 26 | <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" prop="majorFlag"> |
| 27 | <el-select v-model="form.majorFlag"> | 27 | <el-select v-model="form.majorFlag"> |
| 28 | <el-option :label="language==0?'专业':'Professional'" value="1" /> | 28 | <el-option :label="language==0?'专业':'Professional'" value="1" /> |
| 29 | <el-option :label="language==0?'业余':'Amateur'" value="0" /> | 29 | <el-option :label="language==0?'业余':'Amateur'" value="0" /> |
| 30 | </el-select> | 30 | </el-select> |
| 31 | </el-form-item> | 31 | </el-form-item> |
| 32 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required> | 32 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> |
| 33 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> | 33 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> |
| 34 | <el-option :label="language==0?'普通院校':'School'" value="0" /> | 34 | <el-option :label="language==0?'普通院校':'School'" value="0" /> |
| 35 | <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> | 35 | <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> |
| ... | @@ -47,7 +47,7 @@ | ... | @@ -47,7 +47,7 @@ |
| 47 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> | 47 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> |
| 48 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> | 48 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> |
| 49 | </el-form-item> | 49 | </el-form-item> |
| 50 | <el-form-item prop="imgUrl" required :label="language==0?'机构Logo':'Group Logo'"> | 50 | <el-form-item prop="imgUrl" :label="language==0?'机构Logo':'Group Logo'"> |
| 51 | <ImageUpload2 | 51 | <ImageUpload2 |
| 52 | v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1" | 52 | v-model="form.imgUrl" :crop-height="200" :crop-width="200" :limit="1" |
| 53 | :is-show-tip="false" | 53 | :is-show-tip="false" |
| ... | @@ -88,12 +88,12 @@ const userName = ref('') | ... | @@ -88,12 +88,12 @@ const userName = ref('') |
| 88 | const registerRules = ref( | 88 | const registerRules = ref( |
| 89 | { | 89 | { |
| 90 | countryId: [{ required: true, trigger: 'blur', message: '请选择所属国家' },], | 90 | countryId: [{ required: true, trigger: 'blur', message: '请选择所属国家' },], |
| 91 | address: [{ required: true, trigger: 'blur', message: '请输入地址' },], | 91 | // address: [{ required: true, trigger: 'blur', message: '请输入地址' },], |
| 92 | name: [{ required: true, trigger: 'blur', message: '请输入' },], | 92 | name: [{ required: true, trigger: 'blur', message: '请输入' },], |
| 93 | contactPerson: [{ required: true, trigger: 'blur', message: '请输入' },], | 93 | contactPerson: [{ required: true, trigger: 'blur', message: '请输入' },], |
| 94 | contactTelno: [{ required: true, trigger: 'blur', message: '请输入' },], | 94 | contactTelno: [{ required: true, trigger: 'blur', message: '请输入' },], |
| 95 | contactEmail: [{ required: true, trigger: 'blur', message: '请输入' },], | 95 | contactEmail: [{ required: true, trigger: 'blur', message: '请输入' },], |
| 96 | imgUrl: [{ required: true, trigger: 'blur', message: '请上传' },], | 96 | // imgUrl: [{ required: true, trigger: 'blur', message: '请上传' },], |
| 97 | }) | 97 | }) |
| 98 | onMounted(() => { | 98 | onMounted(() => { |
| 99 | getRegionsList() | 99 | getRegionsList() | ... | ... |
| ... | @@ -2,7 +2,7 @@ | ... | @@ -2,7 +2,7 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <div class=" mt30"></div> | 4 | <div class=" mt30"></div> |
| 5 | <div class="flexBody"> | 5 | <div class="flexBody" v-if="language==0"> |
| 6 | <el-tabs v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab"> | 6 | <el-tabs v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab"> |
| 7 | <el-tab-pane v-for="(tab,index) in list" :label="tab.name" :name="index"> | 7 | <el-tab-pane v-for="(tab,index) in list" :label="tab.name" :name="index"> |
| 8 | <template #label> | 8 | <template #label> |
| ... | @@ -100,7 +100,109 @@ | ... | @@ -100,7 +100,109 @@ |
| 100 | </div> | 100 | </div> |
| 101 | </div> | 101 | </div> |
| 102 | </div> | 102 | </div> |
| 103 | <div class="flexBody" v-else> | ||
| 104 | <el-tabs v-model="activeName" tab-position="left" @tab-change="changeTab" @tab-click="clickTab"> | ||
| 105 | <el-tab-pane v-for="(tab,index) in list_en" :label="tab.name" :name="index"> | ||
| 106 | <template #label> | ||
| 107 | <span class="custom-tabs-label"> | ||
| 108 | <span class="tabFont">{{ tab.name }}</span> | ||
| 109 | </span> | ||
| 110 | </template> | ||
| 111 | </el-tab-pane> | ||
| 112 | </el-tabs> | ||
| 113 | <div class="infoPart"> | ||
| 114 | <h3 class="leftboderTT">{{ nowTab.name }}</h3> | ||
| 115 | <div class="content" v-if="activeName==0"> | ||
| 116 | <div> | ||
| 117 | The Taihu International Expo Center Block B covers a total area of 30,000m²and an interior area of 20,000m². It is equipped with top lighting, stage, sound and a full set of broadcasting equipment, and can accommodate 5,000 spectators. It is the premier multi-purpose cultural and sports venue in China, also a landmark for Wuxi. | ||
| 118 | <br/> | ||
| 119 | Location: No. 88, Qingshu Road, Economic and Development District, Wuxi<br/> | ||
| 120 | Business District: Within 10 kilometers, there are nearly 10 large commercial complexes, including the Mixc and Coastal City etc.<br/> | ||
| 121 | <img src="@/assets/zhinan/1.png"/> | ||
| 122 | <img src="@/assets/zhinan/2.png"/> | ||
| 123 | </div> | ||
| 124 | <h4 class="leftboderTT">Flow Chart In The Venue<span>(Functional Area and Flow Chart)</span></h4> | ||
| 125 | <img src="@/assets/zhinan/3.png"/> | ||
| 126 | <div>Sports teams enter the venue through security check at the main gate on the first floor, take escalators to the second floor, and arrive the competition area. Technical officers take vehicles arranged by the organizing committee directly from the northern ramp of the venue to the entrance of Venue B5 on the second floor platform and enter the venue.</div> | ||
| 127 | <div>The second floor is divided into five areas according to different functions. All personnel may arrive at different areas according to their access permissions. Red is the VIP area, blue is the office area, yellow is the spectator area, purple is the competition area and pink is the public area.</div> | ||
| 128 | </div> | ||
| 103 | 129 | ||
| 130 | <div class="content" v-if="activeName==1"> | ||
| 131 | <div>The Registration Center is located in the hotel lobby from 10:00-22:00 on July 19-22, also serves as the info desk.</div> | ||
| 132 | <div>For information about emergency notices, catering services, and transportation services will be announced on the notice board. If you have any questions or need services, please contact the Registration Center.</div> | ||
| 133 | </div> | ||
| 134 | <div class="content" v-if="activeName==2"> | ||
| 135 | <h4>1 Use and Storage of Licenses</h4> | ||
| 136 | <p>Licenses shall be properly kept and shall not be intentionally damaged. Licenses shall be used only by the holders, which shall not be transferred to others, used for unauthorized purposes, or altered.</p> | ||
| 137 | <p>For access to relevant activity and competition venue, license holders shall wear licenses in a conspicuous position against the chest.</p> | ||
| 138 | <p>License holders shall be subject to the inspection and management of on-site security personnel.</p> | ||
| 139 | <h4>2 Temporary Access Pass Application</h4> | ||
| 140 | <p> | ||
| 141 | If you lose your license and urgently need to enter the venue, you can apply to the competition department and go to the venue operation center to get a temporary access pass. | ||
| 142 | </p> | ||
| 143 | <h4>3 Type of License and Access Permissions</h4> | ||
| 144 | <p>The following colors and numbers will be used to indicate the different areas:</p> | ||
| 145 | <img src="@/assets/zhinan/5.jpg"/> | ||
| 146 | </div> | ||
| 147 | <div class="content" v-if="activeName==3"> | ||
| 148 | <el-empty description="no data"></el-empty> | ||
| 149 | </div> | ||
| 150 | <div class="content" v-if="activeName==4"> | ||
| 151 | <h4>1.Arrivals and Departures</h4> | ||
| 152 | <p>All technical officials and sports teams will be picked up by the organizing committee, | ||
| 153 | and the arrival stations should be Wuxi Sunan Shuofang International Airport, Shanghai Pudong International Airport, and Shanghai Hongqiao International Airport.</p> | ||
| 154 | <p>(1) Registration of Technical Officials and Sports Teams</p> | ||
| 155 | <p>Registration Time: July 19-22, 10: 00-22: 00</p> | ||
| 156 | <p>Registration (hotel) Location: HUALUXE Wuxi Taihu Hotel</p> | ||
| 157 | <p>(2) Registration Materials</p> | ||
| 158 | <p>Technical delegates, technical officials and relevant personnel shall provide round-trip traffic invoices for reimbursement. | ||
| 159 | All technical officials are required to provide the Organizing Committee with the following materials:</p> | ||
| 160 | <p>1. Paper boarding card (round-trip ticket)</p> | ||
| 161 | <p>2. Itinerary of the round-trip ticket (with the amount) or receipt of payment (with the amount)</p> | ||
| 162 | <p>3. Receipt for visa application (with amount)</p> | ||
| 163 | <h4>2.Catering Service</h4> | ||
| 164 | |||
| 165 | <img src="@/assets/zhinan/12.png"/> | ||
| 166 | <h5>Notes: Time subject to changes, once adjusted, it will be announced on the notice board of the Registration Center.</h5> | ||
| 167 | <img src="@/assets/zhinan/13.png"/> | ||
| 168 | |||
| 169 | <h4>3.Transportation Service</h4> | ||
| 170 | <p> | ||
| 171 | Vehicles shuttle the technical officers and sports teams between the hotel and the competition venue as per the Departure Timetable. For details of the Departure Timetable, | ||
| 172 | please refer to the notice board of the Registration Center. | ||
| 173 | </p> | ||
| 174 | <p>Pick-up and drop-off vehicles: mainly used for participants to make registration and departure. | ||
| 175 | </p> | ||
| 176 | <h4 style="text-indent: 2em">Tips:</h4> | ||
| 177 | <p>1. Read the Departure Timetable carefully and schedule your travel in advance.</p> | ||
| 178 | <p>2. Always sit securely to ensure your safety during the travel.</p> | ||
| 179 | <p>3. Each head of team and coach shall count the number of people at each travel to ensure nobody is left.</p> | ||
| 180 | <p>4. When getting off the vehicles, make sure to bring all belongings with you.</p> | ||
| 181 | <p>5. If you miss the vehicle or need to make an unplanned travel, please contact the info desk in time.</p> | ||
| 182 | </div> | ||
| 183 | <div class="content" v-if="activeName==5"> | ||
| 184 | <h4>1. Service Time</h4> | ||
| 185 | <p>July 20-23, 2023</p> | ||
| 186 | <h4>2. Medical Stations</h4> | ||
| 187 | <p>The venue has one medical room, one medical station in the competition area, and two ambulances.</p> | ||
| 188 | <h4>3. On-site Medical Service</h4> | ||
| 189 | <p>Venue B4 has one medical room and equipped with one surgeon, one nurse, and one English-speaking volunteer.</p> | ||
| 190 | <p> | ||
| 191 | Venue B6 has one medical station in the competition area, equipped with one orthopedic surgeon, one emergency doctor, | ||
| 192 | one nurse, two first aiders, one English-speaking volunteer, and one staff. Both medical stations are fully equipped with medicines needed for on-site medical emergencies.</p> | ||
| 193 | <p>One ambulance and one emergency transfer vehicle are waiting at the entrance of G14, and all of them are equipped with first aid equipment such as defibrilla- tors and oxygen cylinders.</p> | ||
| 194 | </div> | ||
| 195 | <div class="content" v-if="activeName==6"><el-empty description="no data"></el-empty></div> | ||
| 196 | <div class="content" v-if="activeName==7"><el-empty description="no data"></el-empty></div> | ||
| 197 | <div class="content" v-if="activeName==8"> | ||
| 198 | <label>Download:</label> | ||
| 199 | <a target="_blank" class="text-primary" > | ||
| 200 | <el-icon style="position: relative;top: 2px"><download/></el-icon> | ||
| 201 | WDSF ASIAN DANCESPORT FESTIVAL ENTRY GUIDE 0714 | ||
| 202 | </a> | ||
| 203 | </div> | ||
| 204 | </div> | ||
| 205 | </div> | ||
| 104 | </div> | 206 | </div> |
| 105 | </div> | 207 | </div> |
| 106 | </template> | 208 | </template> |
| ... | @@ -108,6 +210,8 @@ | ... | @@ -108,6 +210,8 @@ |
| 108 | import { onMounted, ref } from 'vue' | 210 | import { onMounted, ref } from 'vue' |
| 109 | import { getNewsListById, getRuleKind } from '@/apiPc/webSite' | 211 | import { getNewsListById, getRuleKind } from '@/apiPc/webSite' |
| 110 | import { useRouter } from 'vue-router' | 212 | import { useRouter } from 'vue-router' |
| 213 | import {useStorage} from "@vueuse/core"; | ||
| 214 | const language = useStorage('language', 0) | ||
| 111 | const router = useRouter() | 215 | const router = useRouter() |
| 112 | const activeName = ref(0) | 216 | const activeName = ref(0) |
| 113 | const showVipFee = ref(false) | 217 | const showVipFee = ref(false) |
| ... | @@ -122,6 +226,17 @@ const list = ref([ | ... | @@ -122,6 +226,17 @@ const list = ref([ |
| 122 | {name:'VISA 签证 '}, | 226 | {name:'VISA 签证 '}, |
| 123 | {name:'指南手册下载'} | 227 | {name:'指南手册下载'} |
| 124 | ]) | 228 | ]) |
| 229 | const list_en = ref([ | ||
| 230 | {name:'Introduction of the Competition Venue'}, | ||
| 231 | {name:' Registration Center '}, | ||
| 232 | {name:'License Management '}, | ||
| 233 | {name:'Map Guidance '}, | ||
| 234 | {name:'Service for Technical Officers and Sports Teams '}, | ||
| 235 | {name:'Medical Services '}, | ||
| 236 | {name:'Surrounding Traffic Map '}, | ||
| 237 | {name:'VISA '}, | ||
| 238 | {name:'The Manual'} | ||
| 239 | ]) | ||
| 125 | const newsList = ref([]) | 240 | const newsList = ref([]) |
| 126 | const nowTab = ref({ | 241 | const nowTab = ref({ |
| 127 | tag: '' | 242 | tag: '' |
| ... | @@ -138,13 +253,22 @@ const getKindList = () => { | ... | @@ -138,13 +253,22 @@ const getKindList = () => { |
| 138 | changeTab(0) | 253 | changeTab(0) |
| 139 | } | 254 | } |
| 140 | const changeTab = (n) => { | 255 | const changeTab = (n) => { |
| 256 | if(language.value==0){ | ||
| 141 | nowTab.value = list.value[n] | 257 | nowTab.value = list.value[n] |
| 258 | } else { | ||
| 259 | nowTab.value = list_en.value[n] | ||
| 260 | } | ||
| 142 | if (nowTab.value.tag == 'fee') { | 261 | if (nowTab.value.tag == 'fee') { |
| 143 | showVipFee.value = true | 262 | showVipFee.value = true |
| 144 | } else { | 263 | } else { |
| 145 | showVipFee.value = false | 264 | showVipFee.value = false |
| 265 | if(language.value==0){ | ||
| 146 | query.value.sortId = list.value[n].sortId | 266 | query.value.sortId = list.value[n].sortId |
| 147 | query.value.code = list.value[n].code | 267 | query.value.code = list.value[n].code |
| 268 | } else { | ||
| 269 | query.value.sortId = list_en.value[n].sortId | ||
| 270 | query.value.code = list_en.value[n].code | ||
| 271 | } | ||
| 148 | getList() | 272 | getList() |
| 149 | } | 273 | } |
| 150 | } | 274 | } | ... | ... |
src/viewsPc/guide/index_en.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
src/viewsPc/home.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <index-Ch v-if="language ==0"/> | ||
| 4 | <index-En v-else/> | ||
| 5 | </div> | ||
| 6 | |||
| 7 | </template> | ||
| 8 | |||
| 9 | <script setup> | ||
| 10 | import IndexCh from '/src/viewsPc/index' | ||
| 11 | import IndexEn from '/src/viewsPc/index_en' | ||
| 12 | import {useStorage} from "@vueuse/core/index"; | ||
| 13 | |||
| 14 | const language = useStorage('language', 0) | ||
| 15 | </script> | ||
| 16 | |||
| 17 | <style scoped lang="scss"> | ||
| 18 | |||
| 19 | </style> |
| ... | @@ -417,7 +417,6 @@ import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/web | ... | @@ -417,7 +417,6 @@ import {getHomePage, getNewsListById, getNewsList, getWeather} from '@/apiPc/web |
| 417 | import {useRouter} from 'vue-router' | 417 | import {useRouter} from 'vue-router' |
| 418 | import {rankList} from '@/assets/js/data' | 418 | import {rankList} from '@/assets/js/data' |
| 419 | import _ from 'lodash' | 419 | import _ from 'lodash' |
| 420 | import {getHotActivity} from '@/apiPc/common' | ||
| 421 | import {Swiper, SwiperSlide} from 'swiper/vue' | 420 | import {Swiper, SwiperSlide} from 'swiper/vue' |
| 422 | import {Autoplay, Navigation} from 'swiper' | 421 | import {Autoplay, Navigation} from 'swiper' |
| 423 | import 'swiper/css' | 422 | import 'swiper/css' | ... | ... |
| ... | @@ -375,7 +375,6 @@ | ... | @@ -375,7 +375,6 @@ |
| 375 | style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; | 375 | style="--el-dialog-padding-primary:0;--el-dialog-border-radius:15px; |
| 376 | --el-dialog-bg-color:transparent;overflow: hidden;"> | 376 | --el-dialog-bg-color:transparent;overflow: hidden;"> |
| 377 | <div class="bg-lineg pd20"> | 377 | <div class="bg-lineg pd20"> |
| 378 | <!-- <iframe width="500" scrolling="no" height="270" frameborder="0" allowtransparency="true" src="https://i.tianqi.com?c=code&id=95&color=%23FFFFFF&icon=4&py=binhuqu&site=15"></iframe>--> | ||
| 379 | <div class="weatherbox"> | 378 | <div class="weatherbox"> |
| 380 | <div class="today"> | 379 | <div class="today"> |
| 381 | <div> | 380 | <div> | ... | ... |
| ... | @@ -84,7 +84,7 @@ | ... | @@ -84,7 +84,7 @@ |
| 84 | <div class="rItem r1" @click="goRegister(1)"> | 84 | <div class="rItem r1" @click="goRegister(1)"> |
| 85 | <h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3> | 85 | <h3>{{ language == 0 ? '机构用户' : 'Organization' }}</h3> |
| 86 | </div> | 86 | </div> |
| 87 | <div class="rItem r2" @click="goRegister(0)" :style="language==0?'filter:grayscale(1)':''"> | 87 | <div class="rItem r2" @click="goRegister(0)"> |
| 88 | <h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3> | 88 | <h3>{{ language == 0 ? '个人用户' : 'Individual' }}</h3> |
| 89 | </div> | 89 | </div> |
| 90 | </div> | 90 | </div> |
| ... | @@ -306,10 +306,6 @@ function showRegister() { | ... | @@ -306,10 +306,6 @@ function showRegister() { |
| 306 | 306 | ||
| 307 | function goRegister(n) { | 307 | function goRegister(n) { |
| 308 | if (n == 0) { | 308 | if (n == 0) { |
| 309 | if (language.value == 0) { | ||
| 310 | // ElMessage.warning('暂不开放国内注册!') | ||
| 311 | return | ||
| 312 | } | ||
| 313 | show.value = false | 309 | show.value = false |
| 314 | router.push({ | 310 | router.push({ |
| 315 | path: `/register/0` | 311 | path: `/register/0` | ... | ... |
| ... | @@ -8,7 +8,10 @@ | ... | @@ -8,7 +8,10 @@ |
| 8 | </el-card> | 8 | </el-card> |
| 9 | 9 | ||
| 10 | <el-card class="mt20"> | 10 | <el-card class="mt20"> |
| 11 | <h3 class="text-center text-danger">如果没有随行人员,点击【下一步】跳过此步骤</h3> | 11 | <h3 class="text-center text-danger" v-if="language==0">如果没有随行人员,点击【下一步】跳过此步骤</h3> |
| 12 | <h3 class="text-center text-danger" v-else> | ||
| 13 | Do you want to add casual personnel? | ||
| 14 | </h3> | ||
| 12 | </el-card> | 15 | </el-card> |
| 13 | 16 | ||
| 14 | <el-row class="mt20" :gutter="20"> | 17 | <el-row class="mt20" :gutter="20"> |
| ... | @@ -211,14 +214,15 @@ const data = reactive({ | ... | @@ -211,14 +214,15 @@ const data = reactive({ |
| 211 | hasChooseObj: {}, | 214 | hasChooseObj: {}, |
| 212 | groupId: '0', | 215 | groupId: '0', |
| 213 | signType: '', | 216 | signType: '', |
| 214 | activeStep: 1 | 217 | activeStep: 1, |
| 218 | isNational:false | ||
| 215 | }) | 219 | }) |
| 216 | const {loading, | 220 | const {loading, |
| 217 | form,personAllList, | 221 | form,personAllList, |
| 218 | rules, | 222 | rules, |
| 219 | signType, | 223 | signType, |
| 220 | groupId, | 224 | groupId, |
| 221 | hasChooseObj,activeStep | 225 | hasChooseObj,activeStep,isNational |
| 222 | } = toRefs(data) | 226 | } = toRefs(data) |
| 223 | let matchId = '' | 227 | let matchId = '' |
| 224 | const user = useUserStore().user | 228 | const user = useUserStore().user |
| ... | @@ -227,6 +231,7 @@ onMounted(() => { | ... | @@ -227,6 +231,7 @@ onMounted(() => { |
| 227 | matchId = route.query.matchId | 231 | matchId = route.query.matchId |
| 228 | groupId.value = group.id | 232 | groupId.value = group.id |
| 229 | signType.value = route.query.signType || '' | 233 | signType.value = route.query.signType || '' |
| 234 | isNational.value = route.query.isNational | ||
| 230 | if(!user){ | 235 | if(!user){ |
| 231 | router.push({name: 'home'}) | 236 | router.push({name: 'home'}) |
| 232 | return | 237 | return |
| ... | @@ -301,11 +306,6 @@ function geren() { | ... | @@ -301,11 +306,6 @@ function geren() { |
| 301 | }) | 306 | }) |
| 302 | } | 307 | } |
| 303 | 308 | ||
| 304 | function chooseDone() { | ||
| 305 | // 返回团队报名 | ||
| 306 | router.go(-1) | ||
| 307 | } | ||
| 308 | |||
| 309 | function goNext() { | 309 | function goNext() { |
| 310 | console.log(form.value) | 310 | console.log(form.value) |
| 311 | // if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) { | 311 | // if ((form.value.coachs.length < 1) && (form.value.leader.length < 1)) { |
| ... | @@ -334,7 +334,8 @@ function goNext() { | ... | @@ -334,7 +334,8 @@ function goNext() { |
| 334 | router.push({ | 334 | router.push({ |
| 335 | name: 'chooseProject', | 335 | name: 'chooseProject', |
| 336 | query: { | 336 | query: { |
| 337 | matchId: matchId | 337 | matchId: matchId, |
| 338 | isNational:isNational.value | ||
| 338 | } | 339 | } |
| 339 | }) | 340 | }) |
| 340 | }) | 341 | }) |
| ... | @@ -347,7 +348,8 @@ function goNext() { | ... | @@ -347,7 +348,8 @@ function goNext() { |
| 347 | query: { | 348 | query: { |
| 348 | matchId: matchId, | 349 | matchId: matchId, |
| 349 | groupId: groupId.value, | 350 | groupId: groupId.value, |
| 350 | signType: signType.value | 351 | signType: signType.value, |
| 352 | isNational:isNational.value | ||
| 351 | } | 353 | } |
| 352 | }) | 354 | }) |
| 353 | }) | 355 | }) |
| ... | @@ -361,7 +363,8 @@ function goPrev() { | ... | @@ -361,7 +363,8 @@ function goPrev() { |
| 361 | name: `teamSign`, | 363 | name: `teamSign`, |
| 362 | query: { | 364 | query: { |
| 363 | matchId: matchId, | 365 | matchId: matchId, |
| 364 | groupId: groupId.value | 366 | groupId: groupId.value, |
| 367 | isNational:isNational.value | ||
| 365 | } | 368 | } |
| 366 | }) | 369 | }) |
| 367 | } | 370 | } |
| ... | @@ -430,7 +433,7 @@ function addCoach(n) { | ... | @@ -430,7 +433,7 @@ function addCoach(n) { |
| 430 | .chooseForm{ | 433 | .chooseForm{ |
| 431 | :deep(.el-form-item__content){background: rgba(245, 247, 249, 0.38); | 434 | :deep(.el-form-item__content){background: rgba(245, 247, 249, 0.38); |
| 432 | padding: 20px 40px 10px;} | 435 | padding: 20px 40px 10px;} |
| 433 | .el-checkbox{height: auto;} | 436 | .el-checkbox{height: auto;text-align: center;} |
| 434 | :deep(.el-checkbox__input){position: absolute;right: 0;top: 0;} | 437 | :deep(.el-checkbox__input){position: absolute;right: 0;top: 0;} |
| 435 | .name{text-align: center;} | 438 | .name{text-align: center;} |
| 436 | } | 439 | } | ... | ... |
| ... | @@ -13,7 +13,9 @@ | ... | @@ -13,7 +13,9 @@ |
| 13 | <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3> | 13 | <h3 class="panel-title" v-if="language==0">选择参赛运动员清单</h3> |
| 14 | <h3 class="panel-title" v-else>Select list of participating athletes</h3> | 14 | <h3 class="panel-title" v-else>Select list of participating athletes</h3> |
| 15 | <!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>--> | 15 | <!-- <a class="fr" @click="emptyChoosed">{{ language == 0 ? '清空' : 'Empty' }}</a>--> |
| 16 | <el-button type="primary" plain class="fr" @click="chooseSportman">{{ language == 0 ? '选手管理' : 'Player Management' }}</el-button> | 16 | <el-button type="primary" plain class="fr" @click="chooseSportman"> |
| 17 | {{ language == 0 ? '选手管理' : 'Player Management' }} | ||
| 18 | </el-button> | ||
| 17 | </div> | 19 | </div> |
| 18 | <div class="panel-body" style="padding: 10px"> | 20 | <div class="panel-body" style="padding: 10px"> |
| 19 | <div style="margin: 0 4px 10px;display: flex"> | 21 | <div style="margin: 0 4px 10px;display: flex"> |
| ... | @@ -24,18 +26,17 @@ | ... | @@ -24,18 +26,17 @@ |
| 24 | {{ c.xing }}{{ c.ming }} | 26 | {{ c.xing }}{{ c.ming }} |
| 25 | <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> | 27 | <img v-if="c.sex=='0'" src="@/assets/img/female.png"/> |
| 26 | <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> | 28 | <img v-if="c.sex=='1'" src="@/assets/img/male.png"/> |
| 27 | <!-- ({{ c.sexStr }})--> | 29 | <!-- -{{ c.age }}--> |
| 28 | -{{ c.age }} | ||
| 29 | </div> | 30 | </div> |
| 30 | </el-option> | 31 | </el-option> |
| 31 | <!-- <template #tag>--> | 32 | <!-- <template #tag>--> |
| 32 | <!-- <el-tag v-for="v in choosed2List" :key="v.value" type="primary">--> | 33 | <!-- <el-tag v-for="v in choosed2List" :key="v.value" type="primary">--> |
| 33 | <!-- {{ v.xing + v.ming }}--> | 34 | <!-- {{ v.xing + v.ming }}--> |
| 34 | <!-- </el-tag>--> | 35 | <!-- </el-tag>--> |
| 35 | <!-- </template>--> | 36 | <!-- </template>--> |
| 36 | </el-select> | 37 | </el-select> |
| 37 | <el-button type="primary" @click="emptychoosedchoosed"> | 38 | <el-button type="primary" @click="emptychoosedchoosed"> |
| 38 | {{language == 0 ? '重选' : 'Re-select' }} | 39 | {{ language == 0 ? '重选' : 'Re-select' }} |
| 39 | </el-button> | 40 | </el-button> |
| 40 | </div> | 41 | </div> |
| 41 | <!-- <div class="noPicChooseForm" id="chooseArr">--> | 42 | <!-- <div class="noPicChooseForm" id="chooseArr">--> |
| ... | @@ -131,7 +132,7 @@ | ... | @@ -131,7 +132,7 @@ |
| 131 | </div> | 132 | </div> |
| 132 | 133 | ||
| 133 | <dialogAddCoach ref="dialogAddCoachRef"/> | 134 | <dialogAddCoach ref="dialogAddCoachRef"/> |
| 134 | <!-- <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>--> | 135 | <!-- <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @transfer="getChoosed" @submitForm="getSignInfoList"/>--> |
| 135 | <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList"/> | 136 | <dialogAllSportsmanList ref="dialogAllSportsmanListRef" @submitForm="getAthletesList"/> |
| 136 | <dialogImport ref="dialogImportProps" @submitForm="getMySignInfo"/> | 137 | <dialogImport ref="dialogImportProps" @submitForm="getMySignInfo"/> |
| 137 | <el-dialog v-model="showResult" :close-on-click-modal="false" :show-close="false"> | 138 | <el-dialog v-model="showResult" :close-on-click-modal="false" :show-close="false"> |
| ... | @@ -213,7 +214,8 @@ const data = reactive({ | ... | @@ -213,7 +214,8 @@ const data = reactive({ |
| 213 | choosed2Listbak: [], | 214 | choosed2Listbak: [], |
| 214 | projectQuery: {}, tableType: 1, | 215 | projectQuery: {}, tableType: 1, |
| 215 | currProjectId: '', | 216 | currProjectId: '', |
| 216 | openTour: false | 217 | openTour: false, |
| 218 | isNational: false | ||
| 217 | }) | 219 | }) |
| 218 | const { | 220 | const { |
| 219 | activeTeam, | 221 | activeTeam, |
| ... | @@ -241,7 +243,7 @@ const { | ... | @@ -241,7 +243,7 @@ const { |
| 241 | tableType, | 243 | tableType, |
| 242 | zuQuery, | 244 | zuQuery, |
| 243 | openTour, currProjectId, | 245 | openTour, currProjectId, |
| 244 | tourCurrent | 246 | tourCurrent, isNational |
| 245 | } = toRefs(data) | 247 | } = toRefs(data) |
| 246 | const nextButtonProps = ref({}) | 248 | const nextButtonProps = ref({}) |
| 247 | const matchId = ref(route.query.matchId) | 249 | const matchId = ref(route.query.matchId) |
| ... | @@ -272,6 +274,11 @@ function getMatch(id) { | ... | @@ -272,6 +274,11 @@ function getMatch(id) { |
| 272 | noPhotoCanSign.value = res.data.noPhotoCanSign | 274 | noPhotoCanSign.value = res.data.noPhotoCanSign |
| 273 | coachOrLeaderFlag.value = res.data.coachOrLeaderFlag | 275 | coachOrLeaderFlag.value = res.data.coachOrLeaderFlag |
| 274 | extraform.value = JSON.parse(res.data.participantsInfo) | 276 | extraform.value = JSON.parse(res.data.participantsInfo) |
| 277 | if (res.data.languageSource == '100') { | ||
| 278 | isNational.value = false | ||
| 279 | } else { | ||
| 280 | isNational.value = true | ||
| 281 | } | ||
| 275 | }) | 282 | }) |
| 276 | } | 283 | } |
| 277 | 284 | ||
| ... | @@ -363,7 +370,8 @@ function chooseSportman() { | ... | @@ -363,7 +370,8 @@ function chooseSportman() { |
| 363 | signType: signType.value, | 370 | signType: signType.value, |
| 364 | noPhotoCanSign: noPhotoCanSign.value, | 371 | noPhotoCanSign: noPhotoCanSign.value, |
| 365 | coachOrLeaderFlag: coachOrLeaderFlag.value, | 372 | coachOrLeaderFlag: coachOrLeaderFlag.value, |
| 366 | choosedList: choosedList.value | 373 | choosedList: choosedList.value, |
| 374 | isNational: isNational.value | ||
| 367 | } | 375 | } |
| 368 | proxy.$refs['dialogAllSportsmanListRef'].open(params) | 376 | proxy.$refs['dialogAllSportsmanListRef'].open(params) |
| 369 | } | 377 | } |
| ... | @@ -556,15 +564,15 @@ function changeProject(e) { | ... | @@ -556,15 +564,15 @@ function changeProject(e) { |
| 556 | }) | 564 | }) |
| 557 | //循环choosed2List 检查是否存在WDSF号 | 565 | //循环choosed2List 检查是否存在WDSF号 |
| 558 | let n = 0 | 566 | let n = 0 |
| 559 | for(var cc of choosed2List.value){ | 567 | for (var cc of choosed2List.value) { |
| 560 | if(!cc.wdsfMin){ | 568 | if (!cc.wdsfMin) { |
| 561 | n++ | 569 | n++ |
| 562 | } | 570 | } |
| 563 | } | 571 | } |
| 564 | //obj需要wdsf 且 currProjectId非空 | 572 | //obj需要wdsf 且 currProjectId非空 |
| 565 | if (obj.checkMemberFlag == '1'&&currProjectId.value != ''&& n>0) { | 573 | if (obj.checkMemberFlag == '1' && currProjectId.value != '' && n > 0) { |
| 566 | const params = { | 574 | const params = { |
| 567 | title: language.value == 0 ? '验证WDSF' :'Verify WDSF', | 575 | title: language.value == 0 ? '验证WDSF' : 'Verify WDSF', |
| 568 | groupId: groupId.value, | 576 | groupId: groupId.value, |
| 569 | matchId: matchId.value, | 577 | matchId: matchId.value, |
| 570 | list: choosed2List.value | 578 | list: choosed2List.value | ... | ... |
| ... | @@ -4,7 +4,7 @@ | ... | @@ -4,7 +4,7 @@ |
| 4 | :close-on-click-modal="false" class="pcloginpop" | 4 | :close-on-click-modal="false" class="pcloginpop" |
| 5 | destroy-on-close | 5 | destroy-on-close |
| 6 | > | 6 | > |
| 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> | 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="150px" inline> |
| 8 | <el-row :gutter="30" class="mt30"> | 8 | <el-row :gutter="30" class="mt30"> |
| 9 | <el-col :lg="12" class="touxiang"> | 9 | <el-col :lg="12" class="touxiang"> |
| 10 | 10 | ||
| ... | @@ -37,10 +37,10 @@ | ... | @@ -37,10 +37,10 @@ |
| 37 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> | 37 | <el-form-item :label="language==0?'证件号码':'ID NO'" prop="idcCode" required> |
| 38 | <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/> | 38 | <el-input v-model="form.idcCode" @blur="checkCode" :disabled="editgay"/> |
| 39 | </el-form-item> | 39 | </el-form-item> |
| 40 | <el-form-item label="上传证件照" required :required="form.idcType!='0'"> | 40 | <el-form-item :label="language==0?'有效证件':'Valid Certificates Scanning Copy'" required :required="form.idcType!='0'"> |
| 41 | <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" /> | 41 | <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" /> |
| 42 | </el-form-item> | 42 | </el-form-item> |
| 43 | <el-form-item :label="language==0?'性别':'sex'" prop="sex"> | 43 | <el-form-item :label="language==0?'性别':'Gender'" prop="sex"> |
| 44 | <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'"> | 44 | <el-radio-group v-model="form.sex" :disabled="form.idcType=='0'"> |
| 45 | <el-radio value="0">{{ language==0?'女':'female' }}</el-radio> | 45 | <el-radio value="0">{{ language==0?'女':'female' }}</el-radio> |
| 46 | <el-radio value="1">{{ language==0?'男':'male' }}</el-radio> | 46 | <el-radio value="1">{{ language==0?'男':'male' }}</el-radio> | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -4,6 +4,7 @@ | ... | @@ -4,6 +4,7 @@ |
| 4 | :close-on-click-modal="false" class="pcloginpop" | 4 | :close-on-click-modal="false" class="pcloginpop" |
| 5 | destroy-on-close | 5 | destroy-on-close |
| 6 | > | 6 | > |
| 7 | <!-- 国际赛事--> | ||
| 7 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> | 8 | <el-form ref="dialogRef" :model="form" :rules="language==0?rules:rules_cn" label-width="120px" inline> |
| 8 | <el-row :gutter="30" class="mt30"> | 9 | <el-row :gutter="30" class="mt30"> |
| 9 | <el-col :lg="12" class="touxiang"> | 10 | <el-col :lg="12" class="touxiang"> |
| ... | @@ -460,5 +461,10 @@ function cancel() { | ... | @@ -460,5 +461,10 @@ function cancel() { |
| 460 | } | 461 | } |
| 461 | } | 462 | } |
| 462 | } | 463 | } |
| 463 | 464 | .el-input-group__append button.el-button, .el-input-group__append button.el-button:hover { | |
| 465 | color: var(--el-color-primary); | ||
| 466 | background: #efefff; | ||
| 467 | border: var(--el-color-primary) solid 1px; | ||
| 468 | border-radius: 0; | ||
| 469 | } | ||
| 464 | </style> | 470 | </style> | ... | ... |
| ... | @@ -4,14 +4,14 @@ | ... | @@ -4,14 +4,14 @@ |
| 4 | :close-on-click-modal="false" class="pcloginpop" @close="cancel" | 4 | :close-on-click-modal="false" class="pcloginpop" @close="cancel" |
| 5 | destroy-on-close | 5 | destroy-on-close |
| 6 | > | 6 | > |
| 7 | <!-- wdsf 个人/舞伴--> | 7 | <!-- wdsf 个人/舞伴/国际赛运动员--> |
| 8 | <div class="pd10"></div> | 8 | <div class="pd10"></div> |
| 9 | <el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline> | 9 | <el-form ref="dialogRef" :model="form" :label-width="language==0?120:180" inline> |
| 10 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id"> | 10 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" v-if="form.id&&form.id!='0'"> |
| 11 | {{ form.wdsfMin }} | 11 | {{ form.wdsfMin }} |
| 12 | </el-form-item> | 12 | </el-form-item> |
| 13 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required v-else> | 13 | <el-form-item :label="language==0?'WDSF卡号':'WDSF ID'" required v-else> |
| 14 | <el-input type="text" v-model="card" @change="resetCode" > | 14 | <el-input type="text" v-model="card" @change="resetCode"> |
| 15 | <template #append> | 15 | <template #append> |
| 16 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> | 16 | <el-button type="primary" plain style="width: 110px" @click="checkCard"> |
| 17 | <el-icon v-if="isCodeTrue" size="16" color="#67C23A"> | 17 | <el-icon v-if="isCodeTrue" size="16" color="#67C23A"> |
| ... | @@ -29,22 +29,22 @@ | ... | @@ -29,22 +29,22 @@ |
| 29 | <span v-else>(Obtain automatically according to the WDSF number)</span> | 29 | <span v-else>(Obtain automatically according to the WDSF number)</span> |
| 30 | </div> | 30 | </div> |
| 31 | <div class="h20"></div> | 31 | <div class="h20"></div> |
| 32 | <el-form-item :label="language==0?'名':'name'"> | 32 | <el-form-item :label="language==0?'名':'Name'"> |
| 33 | <el-input v-model="form.ming" disabled/> | 33 | <el-input v-model="form.ming" disabled/> |
| 34 | </el-form-item> | 34 | </el-form-item> |
| 35 | <el-form-item :label="language==0?'姓氏':'surname'"> | 35 | <el-form-item :label="language==0?'姓氏':'Surname'"> |
| 36 | <el-input v-model="form.xing" disabled/> | 36 | <el-input v-model="form.xing" disabled/> |
| 37 | </el-form-item> | 37 | </el-form-item> |
| 38 | <el-form-item label="Representing"> | 38 | <el-form-item :label="language==0?'代表':'Representing'"> |
| 39 | <el-input v-model="form.representing" disabled/> | 39 | <el-input v-model="form.representing" disabled/> |
| 40 | </el-form-item> | 40 | </el-form-item> |
| 41 | <el-form-item label="Age group"> | 41 | <el-form-item :label="language==1?'Age group':'年龄组'"> |
| 42 | <el-input v-model="form.ageGroup" disabled/> | 42 | <el-input v-model="form.ageGroup" disabled/> |
| 43 | </el-form-item> | 43 | </el-form-item> |
| 44 | <el-form-item label="Division"> | 44 | <el-form-item :label="language==0?'舞种':'Division'"> |
| 45 | <el-input v-model="form.division" disabled/> | 45 | <el-input v-model="form.division" disabled/> |
| 46 | </el-form-item> | 46 | </el-form-item> |
| 47 | <el-form-item label="Status"> | 47 | <el-form-item :label="language==0?'状态':'Status'"> |
| 48 | <el-input v-model="form.wdsfStatus" disabled/> | 48 | <el-input v-model="form.wdsfStatus" disabled/> |
| 49 | </el-form-item> | 49 | </el-form-item> |
| 50 | <div class="h30"></div> | 50 | <div class="h30"></div> |
| ... | @@ -52,36 +52,44 @@ | ... | @@ -52,36 +52,44 @@ |
| 52 | {{ language == 0 ? '补充信息' : 'Supplementary Information' }} | 52 | {{ language == 0 ? '补充信息' : 'Supplementary Information' }} |
| 53 | </div> | 53 | </div> |
| 54 | <div class="h20"></div> | 54 | <div class="h20"></div> |
| 55 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'" required> | 55 | <el-form-item prop="picUrl" :label="language==0?'个人照片':'photo'"> |
| 56 | <ImageUpload2 | 56 | <ImageUpload2 |
| 57 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" | 57 | v-model="form.picUrl" :crop-height="280" :crop-width="200" class="threeFour" :limit="1" |
| 58 | :is-show-tip="false" | 58 | :is-show-tip="false" |
| 59 | /> | 59 | /> |
| 60 | </el-form-item> | 60 | </el-form-item> |
| 61 | <el-form-item :label="language==0?'性别':'Sex'" required> | 61 | <el-form-item :label="language==0?'性别':'Gender'" required> |
| 62 | <el-radio-group v-model="form.sex"> | 62 | <el-radio-group v-model="form.sex"> |
| 63 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> | 63 | <el-radio value="0">{{ language == 0 ? '女' : 'female' }}</el-radio> |
| 64 | <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> | 64 | <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> |
| 65 | </el-radio-group> | 65 | </el-radio-group> |
| 66 | </el-form-item> | 66 | </el-form-item> |
| 67 | 67 | ||
| 68 | <el-form-item :label="language==0?'出生日期':'Birthday'" required> | 68 | <el-form-item :label="language==0?'出生日期':'Birthday'"> |
| 69 | <el-date-picker | 69 | <el-date-picker |
| 70 | v-model="form.birth" | 70 | v-model="form.birth" |
| 71 | style="width: 100%;" | 71 | style="width: 100%;" |
| 72 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" | 72 | type="date" format="YYYY-MM-DD" value-format="YYYY-MM-DD" |
| 73 | /> | 73 | /> |
| 74 | </el-form-item> | 74 | </el-form-item> |
| 75 | <el-form-item label="Passport number" required> | 75 | <el-form-item :label="language==0?'有效证件':'Valid Certificates Scanning Copy'" required> |
| 76 | <el-input v-model="form.passportNumber"/> | 76 | <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" |
| 77 | :button-text="language==0?'上传':'Upload'"/> | ||
| 78 | <div class="tip"> | ||
| 79 | <span v-if="language==0">请上传护照副本,用于认证 </span> | ||
| 80 | <span v-else>Please upload a passport copy for authentication</span> | ||
| 81 | </div> | ||
| 82 | |||
| 77 | </el-form-item> | 83 | </el-form-item> |
| 78 | <el-form-item label="Passport File" required> | 84 | <el-form-item :label="language==0?'证件号':'Passport number'"> |
| 79 | <file-upload v-model="form.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> | 85 | <el-input v-model="form.passportNumber"/> |
| 80 | </el-form-item> | 86 | </el-form-item> |
| 87 | |||
| 81 | </el-form> | 88 | </el-form> |
| 82 | <template #footer> | 89 | <template #footer> |
| 83 | <div class="dialog-footer text-center"> | 90 | <div class="dialog-footer text-center"> |
| 84 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm">{{ | 91 | <el-button type="primary" class="btn-lineG w200px" round @click="submitForm"> |
| 92 | {{ | ||
| 85 | language == 0 ? '确定' : 'Save' | 93 | language == 0 ? '确定' : 'Save' |
| 86 | }} | 94 | }} |
| 87 | </el-button> | 95 | </el-button> |
| ... | @@ -99,7 +107,8 @@ import _ from 'lodash' | ... | @@ -99,7 +107,8 @@ import _ from 'lodash' |
| 99 | import Vcode from "vue3-puzzle-vcode" | 107 | import Vcode from "vue3-puzzle-vcode" |
| 100 | import {checkWdsf} from "@/apiPc/match"; | 108 | import {checkWdsf} from "@/apiPc/match"; |
| 101 | import {useStorage} from "@vueuse/core/index"; | 109 | import {useStorage} from "@vueuse/core/index"; |
| 102 | const language= useStorage('language',0) | 110 | |
| 111 | const language = useStorage('language', 0) | ||
| 103 | const certificates = ref([ | 112 | const certificates = ref([ |
| 104 | { | 113 | { |
| 105 | value: '0', | 114 | value: '0', |
| ... | @@ -119,9 +128,9 @@ const emit = defineEmits(['submitForm']) | ... | @@ -119,9 +128,9 @@ const emit = defineEmits(['submitForm']) |
| 119 | const data = reactive({ | 128 | const data = reactive({ |
| 120 | form: { | 129 | form: { |
| 121 | // countryId: 240 | 130 | // countryId: 240 |
| 122 | sex:'0' | 131 | sex: '0' |
| 123 | }, | 132 | }, |
| 124 | card:'', | 133 | card: '', |
| 125 | show: false, | 134 | show: false, |
| 126 | showVcode: false, | 135 | showVcode: false, |
| 127 | labels: [ | 136 | labels: [ |
| ... | @@ -136,47 +145,57 @@ const data = reactive({ | ... | @@ -136,47 +145,57 @@ const data = reactive({ |
| 136 | title: '添加选手信息', | 145 | title: '添加选手信息', |
| 137 | isMe: false, | 146 | isMe: false, |
| 138 | isCodeTrue: false, | 147 | isCodeTrue: false, |
| 139 | cptId:'' | 148 | cptId: '' |
| 140 | }) | 149 | }) |
| 141 | const {form, show,showVcode, title, labels, uType, isMe,isCodeTrue,card,cptId} = toRefs(data) | 150 | const {form, show, showVcode, title, labels, uType, isMe, isCodeTrue, card, cptId} = toRefs(data) |
| 142 | 151 | ||
| 143 | let editgay = false | 152 | let editgay = false |
| 153 | let groupId = '0' | ||
| 144 | const open = (params) => { | 154 | const open = (params) => { |
| 145 | console.log(params) | 155 | console.log(params) |
| 146 | show.value = true | 156 | show.value = true |
| 147 | title.value = params.title | 157 | title.value = params.title |
| 148 | isMe.value = params.isMe | 158 | isMe.value = params.isMe || false |
| 149 | cptId.value = params.cptId | 159 | cptId.value = params.cptId |
| 160 | groupId = params.groupId | ||
| 161 | form.value.id = params.id | ||
| 150 | if (language.value == 0) { | 162 | if (language.value == 0) { |
| 151 | form.value.countryId = 240 | 163 | form.value.countryId = 240 |
| 152 | } | 164 | } |
| 153 | if (isMe.value) { | 165 | if (isMe.value) { |
| 154 | //个人 | 166 | //个人 |
| 155 | match.getMyPersonInfo().then(res => { | 167 | getMyInfo() |
| 156 | form.value = res.data | ||
| 157 | form.value.id = res.data.id | ||
| 158 | if (form.value.label) { | ||
| 159 | // {0:0,1:1,2:3} | ||
| 160 | form.value.labelArr = form.value.label.split(',') | ||
| 161 | } else { | ||
| 162 | form.value.labelArr = ['0'] | ||
| 163 | } | ||
| 164 | }) | ||
| 165 | } else { | 168 | } else { |
| 166 | if (params.id == 0) { | 169 | if (params.id == 0) { |
| 167 | //新增 | 170 | //新增 |
| 168 | editgay = false | 171 | editgay = false |
| 169 | } else {// 编辑舞伴 | 172 | } else {// 编辑舞伴 |
| 170 | editgay = true | 173 | editgay = true |
| 174 | if(params.form){ | ||
| 171 | form.value = params.form | 175 | form.value = params.form |
| 176 | }else { | ||
| 177 | getFormById(params.id) | ||
| 178 | } | ||
| 172 | } | 179 | } |
| 173 | } | 180 | } |
| 174 | } | 181 | } |
| 175 | defineExpose({open}) | 182 | defineExpose({open}) |
| 183 | function getMyInfo() { | ||
| 184 | match.getMyPersonInfo().then(res => { | ||
| 185 | form.value = res.data | ||
| 186 | }) | ||
| 187 | } | ||
| 188 | function getFormById(id) { | ||
| 189 | match.getPersonInfoById(id).then(res => { | ||
| 190 | form.value = res.data | ||
| 191 | }) | ||
| 192 | } | ||
| 176 | watch(show, (value) => { | 193 | watch(show, (value) => { |
| 177 | if (!value) { | 194 | if (!value) { |
| 195 | card.value = '' | ||
| 196 | isCodeTrue.value = false | ||
| 178 | form.value = { | 197 | form.value = { |
| 179 | sex:'0' | 198 | sex: '0' |
| 180 | } | 199 | } |
| 181 | } | 200 | } |
| 182 | nextTick(() => { | 201 | nextTick(() => { |
| ... | @@ -185,26 +204,23 @@ watch(show, (value) => { | ... | @@ -185,26 +204,23 @@ watch(show, (value) => { |
| 185 | }) | 204 | }) |
| 186 | 205 | ||
| 187 | function submitForm() { | 206 | function submitForm() { |
| 188 | if (!form.value.passportNumber) { | 207 | // if (!form.value.passportNumber) { |
| 189 | ElMessage.warning('Please fill in your passport number') | 208 | // ElMessage.warning('Please fill in your passport number') |
| 190 | return | 209 | // return |
| 191 | } | 210 | // } |
| 192 | if (!form.value.picUrl) { | 211 | // if (!form.value.picUrl) { |
| 193 | ElMessage.warning('Please upload your photo') | 212 | // ElMessage.warning('Please upload your photo') |
| 194 | return | 213 | // return |
| 195 | } | 214 | // } |
| 196 | if (!form.value.passportUrl) { | 215 | if (!form.value.passportUrl) { |
| 197 | ElMessage.warning('Please upload your passport file') | 216 | ElMessage.warning('Please upload your passport file') |
| 198 | return | 217 | return |
| 199 | } | 218 | } |
| 200 | if (editgay) { | 219 | if (editgay) { |
| 201 | // id不是0 | 220 | // id不是0 |
| 202 | |||
| 203 | form.value.cptId = cptId.value | 221 | form.value.cptId = cptId.value |
| 204 | if(Array.isArray(form.value.passportUrl)){ | 222 | if (Array.isArray(form.value.passportUrl)) { |
| 205 | form.value.passportUrl = form.value.passportUrl[0].url | 223 | form.value.passportUrl = form.value.passportUrl[0].url |
| 206 | } else { | ||
| 207 | form.value.passportUrl = form.value.passportUrl | ||
| 208 | } | 224 | } |
| 209 | match.editPersonInfo(form.value).then(res => { | 225 | match.editPersonInfo(form.value).then(res => { |
| 210 | ElMessage.success('保存成功') | 226 | ElMessage.success('保存成功') |
| ... | @@ -212,11 +228,11 @@ function submitForm() { | ... | @@ -212,11 +228,11 @@ function submitForm() { |
| 212 | emit('submitForm') | 228 | emit('submitForm') |
| 213 | }) | 229 | }) |
| 214 | } else { | 230 | } else { |
| 215 | if (!form.value.birth) { | 231 | // if (!form.value.birth) { |
| 216 | ElMessage.warning('Please fill in your birthday') | 232 | // ElMessage.warning('Please fill in your birthday') |
| 217 | return | 233 | // return |
| 218 | } | 234 | // } |
| 219 | if(Array.isArray(form.value.passportUrl)){ | 235 | if (Array.isArray(form.value.passportUrl)) { |
| 220 | form.value.passportUrl = form.value.passportUrl[0].url | 236 | form.value.passportUrl = form.value.passportUrl[0].url |
| 221 | } | 237 | } |
| 222 | if (isMe.value) { | 238 | if (isMe.value) { |
| ... | @@ -233,16 +249,24 @@ function submitForm() { | ... | @@ -233,16 +249,24 @@ function submitForm() { |
| 233 | form.value.wdsfMin = form.value.min | 249 | form.value.wdsfMin = form.value.min |
| 234 | form.value.idcCode = form.value.passportNumber | 250 | form.value.idcCode = form.value.passportNumber |
| 235 | form.value.idcType = '1' | 251 | form.value.idcType = '1' |
| 236 | if(Array.isArray(form.value.passportUrl)){ | 252 | if (Array.isArray(form.value.passportUrl)) { |
| 237 | form.value.passportUrl = form.value.passportUrl[0].url | 253 | form.value.passportUrl = form.value.passportUrl[0].url |
| 238 | } else { | ||
| 239 | form.value.passportUrl = form.value.passportUrl | ||
| 240 | } | 254 | } |
| 255 | if(groupId=='0'){ | ||
| 241 | match.savePersonForMyPerson(form.value).then(res => { | 256 | match.savePersonForMyPerson(form.value).then(res => { |
| 242 | ElMessage.success('保存成功') | 257 | ElMessage.success('保存成功') |
| 243 | show.value = false | 258 | show.value = false |
| 244 | emit('submitForm', res.data) | 259 | emit('submitForm', res.data) |
| 245 | }) | 260 | }) |
| 261 | } else { | ||
| 262 | form.value.groupId = groupId | ||
| 263 | match.savePersonForMyGroup(form.value).then(res => { | ||
| 264 | ElMessage.success(language.value == 0 ?'保存成功':'Save successful') | ||
| 265 | show.value = false | ||
| 266 | emit('submitForm') | ||
| 267 | }) | ||
| 268 | } | ||
| 269 | |||
| 246 | } | 270 | } |
| 247 | } | 271 | } |
| 248 | } | 272 | } |
| ... | @@ -251,11 +275,13 @@ function cancel() { | ... | @@ -251,11 +275,13 @@ function cancel() { |
| 251 | show.value = false | 275 | show.value = false |
| 252 | showVcode.value = false | 276 | showVcode.value = false |
| 253 | } | 277 | } |
| 278 | |||
| 254 | function resetCode() { | 279 | function resetCode() { |
| 255 | isCodeTrue.value = false | 280 | isCodeTrue.value = false |
| 256 | } | 281 | } |
| 282 | |||
| 257 | function checkCard() { | 283 | function checkCard() { |
| 258 | if(isCodeTrue.value){ | 284 | if (isCodeTrue.value) { |
| 259 | return | 285 | return |
| 260 | } | 286 | } |
| 261 | if (!card.value) { | 287 | if (!card.value) { |
| ... | @@ -268,6 +294,7 @@ function checkCard() { | ... | @@ -268,6 +294,7 @@ function checkCard() { |
| 268 | } | 294 | } |
| 269 | showVcode.value = true | 295 | showVcode.value = true |
| 270 | } | 296 | } |
| 297 | |||
| 271 | function codeSuccess(msg) { | 298 | function codeSuccess(msg) { |
| 272 | console.log('验证通过' + msg); | 299 | console.log('验证通过' + msg); |
| 273 | showVcode.value = false | 300 | showVcode.value = false | ... | ... |
| ... | @@ -4,7 +4,7 @@ | ... | @@ -4,7 +4,7 @@ |
| 4 | <el-button type="primary" @click="addMember"> | 4 | <el-button type="primary" @click="addMember"> |
| 5 | {{ language == 0 ? '添加选手' : 'Add Player' }} | 5 | {{ language == 0 ? '添加选手' : 'Add Player' }} |
| 6 | </el-button> | 6 | </el-button> |
| 7 | <el-button type="primary" plain @click="importSportman" v-if="language == 0"> | 7 | <el-button type="primary" plain @click="importSportman" v-if="isNational"> |
| 8 | {{language == 0 ? '导入选手' : 'Import Player'}} | 8 | {{language == 0 ? '导入选手' : 'Import Player'}} |
| 9 | </el-button> | 9 | </el-button> |
| 10 | </div> | 10 | </div> |
| ... | @@ -39,13 +39,18 @@ | ... | @@ -39,13 +39,18 @@ |
| 39 | @selection-change="handleSelectionChange"> | 39 | @selection-change="handleSelectionChange"> |
| 40 | <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>--> | 40 | <!-- <el-table-column type="selection" :label="language==0?'选择':'Selection'" :selectable="selectable"/>--> |
| 41 | <el-table-column type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/> | 41 | <el-table-column type="index" :label="language==0?'序号':'Index'" width="60" :selectable="selectable"/> |
| 42 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> | 42 | <el-table-column v-show="isNational" :label="language==0?'WDSF 会员号':'MIN'" prop="wdsfMin" width="100"/> |
| 43 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> | 43 | <el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/> |
| 44 | <el-table-column :label="language==0?'所属国家/地区':'Country'" prop="countryName" min-width="100"/> | 44 | <el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/> |
| 45 | <el-table-column v-show="isNational" :label="language==0?'代表':'Representing'" prop="representing" min-width="120"/> | ||
| 46 | <el-table-column :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="100"/> | ||
| 45 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> | 47 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> |
| 48 | <el-table-column v-show="isNational" :label="language==0?'年龄组':'Age group'" prop="ageGroup" min-width="100"/> | ||
| 49 | <el-table-column v-show="isNational" :label="language==0?'舞种':'Division'" prop="division" min-width="100"/> | ||
| 50 | |||
| 46 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> | 51 | <el-table-column :label="language==0?'年龄':'Age'" prop="age"/> |
| 47 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> | 52 | <el-table-column :label="language==0?'出生日期':'Birth'" prop="birth" width="110"/> |
| 48 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr"/> | 53 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" width="120"/> |
| 49 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> | 54 | <el-table-column :label="language==0?'证件号码':'ID NO.'" prop="idcCode" width="200"/> |
| 50 | <!-- <el-table-column label="会员角色" width="200">--> | 55 | <!-- <el-table-column label="会员角色" width="200">--> |
| 51 | <!-- <template #default="scope">--> | 56 | <!-- <template #default="scope">--> |
| ... | @@ -87,8 +92,8 @@ | ... | @@ -87,8 +92,8 @@ |
| 87 | <!-- </template>--> | 92 | <!-- </template>--> |
| 88 | </el-dialog> | 93 | </el-dialog> |
| 89 | 94 | ||
| 90 | <addCoach ref="dialogAddCoach" @submitForm="getList"/> | 95 | <add-coach ref="dialogAddCoach" @submitForm="getList"/> |
| 91 | <addMan_en ref="dialogSportman_En" @submitForm="getList"/> | 96 | <add-wdsf ref="dialogAddWdsf" @submitForm="getList"/> |
| 92 | <Import ref="dialogImportProps" @submitForm="getList"/> | 97 | <Import ref="dialogImportProps" @submitForm="getList"/> |
| 93 | </template> | 98 | </template> |
| 94 | 99 | ||
| ... | @@ -97,7 +102,7 @@ import {reactive, ref, toRefs, watch} from 'vue' | ... | @@ -97,7 +102,7 @@ import {reactive, ref, toRefs, watch} from 'vue' |
| 97 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' | 102 | import {getCurrentInstance, nextTick, onMounted} from '@vue/runtime-core' |
| 98 | import * as match from '@/apiPc/match' | 103 | import * as match from '@/apiPc/match' |
| 99 | import AddCoach from '../components/addCoach' | 104 | import AddCoach from '../components/addCoach' |
| 100 | import AddMan_en from '../components/addSportman_en' | 105 | import AddWdsf from '../components/addWdsf' |
| 101 | import Import from '../components/import' | 106 | import Import from '../components/import' |
| 102 | import {useStorage} from "@vueuse/core/index"; | 107 | import {useStorage} from "@vueuse/core/index"; |
| 103 | const language= useStorage('language',0) | 108 | const language= useStorage('language',0) |
| ... | @@ -115,9 +120,10 @@ const data = reactive({ | ... | @@ -115,9 +120,10 @@ const data = reactive({ |
| 115 | loading: false, | 120 | loading: false, |
| 116 | title: '选择运动员', | 121 | title: '选择运动员', |
| 117 | noPhotoCanSign: 0, | 122 | noPhotoCanSign: 0, |
| 118 | total: 0 | 123 | total: 0, |
| 124 | isNational:false | ||
| 119 | }) | 125 | }) |
| 120 | const {query, tableData, show, title, loading, noPhotoCanSign,total} = toRefs(data) | 126 | const {query, tableData, show, title, loading, noPhotoCanSign,total,isNational} = toRefs(data) |
| 121 | const certificates = ref([ | 127 | const certificates = ref([ |
| 122 | { | 128 | { |
| 123 | value: '0', | 129 | value: '0', |
| ... | @@ -142,6 +148,7 @@ const open = (params) => { | ... | @@ -142,6 +148,7 @@ const open = (params) => { |
| 142 | groupId = params.groupId | 148 | groupId = params.groupId |
| 143 | noPhotoCanSign.value = params.noPhotoCanSign | 149 | noPhotoCanSign.value = params.noPhotoCanSign |
| 144 | show.value = true | 150 | show.value = true |
| 151 | isNational.value = params.isNational | ||
| 145 | choosedList = params.choosedList | 152 | choosedList = params.choosedList |
| 146 | for (const p of choosedList) { | 153 | for (const p of choosedList) { |
| 147 | choosedIds.push(p.id) | 154 | choosedIds.push(p.id) |
| ... | @@ -192,29 +199,32 @@ function cancel() { | ... | @@ -192,29 +199,32 @@ function cancel() { |
| 192 | } | 199 | } |
| 193 | 200 | ||
| 194 | function editPerson(row) { | 201 | function editPerson(row) { |
| 202 | console.log(isNational.value) | ||
| 195 | const params = { | 203 | const params = { |
| 196 | id: row.id, | 204 | id: row.id, |
| 197 | title: language.value == 0 ?'编辑人员':'Edit Person', | 205 | title: language.value == 0 ?'编辑人员':'Edit Person', |
| 198 | groupId: groupId | 206 | groupId: groupId, |
| 207 | label: '0' | ||
| 199 | } | 208 | } |
| 200 | if (language.value == 0 ){ | 209 | if (isNational.value){ |
| 201 | proxy.$refs['dialogAddCoach'].open(params) | 210 | proxy.$refs['dialogAddWdsf'].open(params) |
| 202 | } else { | 211 | } else { |
| 203 | proxy.$refs['dialogSportman_En'].open(params) | 212 | proxy.$refs['dialogAddCoach'].open(params) |
| 204 | } | 213 | } |
| 205 | } | 214 | } |
| 206 | 215 | ||
| 207 | function addMember() { | 216 | function addMember() { |
| 217 | console.log(isNational.value) | ||
| 208 | const params = { | 218 | const params = { |
| 209 | title: language.value == 0 ?'添加人员':'Add', | 219 | title: language.value == 0 ?'添加人员':'Add', |
| 210 | id: 0, | 220 | id: 0, |
| 211 | groupId: groupId, | 221 | groupId: groupId, |
| 212 | label: '0' | 222 | label: '0' |
| 213 | } | 223 | } |
| 214 | if (language.value == 0 ){ | 224 | if (isNational.value){ |
| 215 | proxy.$refs['dialogAddCoach'].open(params) | 225 | proxy.$refs['dialogAddWdsf'].open(params) |
| 216 | } else { | 226 | } else { |
| 217 | proxy.$refs['dialogSportman_En'].open(params) | 227 | proxy.$refs['dialogAddCoach'].open(params) |
| 218 | } | 228 | } |
| 219 | } | 229 | } |
| 220 | 230 | ... | ... |
| ... | @@ -29,6 +29,7 @@ | ... | @@ -29,6 +29,7 @@ |
| 29 | <td> | 29 | <td> |
| 30 | <div>{{ p.birthPeriod }}</div> | 30 | <div>{{ p.birthPeriod }}</div> |
| 31 | <div>{{p.birthPeriodSecond}}</div> | 31 | <div>{{p.birthPeriodSecond}}</div> |
| 32 | <!-- <div>{{ p.birthAgeGroup }};{{p.birthAgeSecondGroup}}</div>--> | ||
| 32 | </td> | 33 | </td> |
| 33 | <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td> | 34 | <td>{{ language==0?'¥':'€' }}{{ p.serviceFee }}</td> |
| 34 | </tr> | 35 | </tr> | ... | ... |
| 1 | <template> | 1 | <template> |
| 2 | <!-- 人员表格--> | 2 | <!-- 人员表格--> |
| 3 | <el-table :data="tableData" class="mt20"> | 3 | <el-table :data="tableData" class="mt20"> |
| 4 | <el-table-column type="index" :label="language==0?'序号':'index'" width="80" align="center"/> | 4 | <el-table-column type="index" :label="language==0?'序号':'Index'" width="80" align="center"/> |
| 5 | <el-table-column :label="language==0?'姓氏':'Last Name'" prop="xing" min-width="100"/> | 5 | <el-table-column :label="language==0?'姓氏':'Surname'" prop="xing" min-width="100"/> |
| 6 | <el-table-column :label="language==0?'名':'First Name'" prop="ming" min-width="100"/> | 6 | <el-table-column :label="language==0?'名':'Name'" prop="ming" min-width="100"/> |
| 7 | <el-table-column :label="language==0?'所属国家/地区':'Country'" prop="countryName" min-width="100"/> | 7 | <el-table-column :label="language==0?'所属国家/地区':'Nationality'" prop="countryName" min-width="100"/> |
| 8 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> | 8 | <el-table-column :label="language==0?'性别':'Gender'" prop="sexStr"/> |
| 9 | <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>--> | 9 | <!-- <el-table-column :label="language==0?'年龄':'Age'" prop="age"/>--> |
| 10 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/> | 10 | <el-table-column :label="language==0?'证件类型':'ID Type'" prop="idcTypeStr" :min-width="language==0?'80':'160'"/> |
| ... | @@ -25,10 +25,9 @@ | ... | @@ -25,10 +25,9 @@ |
| 25 | </div> | 25 | </div> |
| 26 | </template> | 26 | </template> |
| 27 | </el-table-column> | 27 | </el-table-column> |
| 28 | <el-table-column :label="language==0?'WDSF会员号':'WDSF code'" prop="wdsfMin" width="110"/> | 28 | <el-table-column :label="language==0?'WDSF会员号':'WDSF MIN'" prop="wdsfMin" width="110"/> |
| 29 | <!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>--> | 29 | <!-- <el-table-column :label="language==0?'详细地址':'Detailed Address'" prop="address" min-width="140"/>--> |
| 30 | <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" | 30 | <el-table-column :label="language==0?'操作':'Actions'" fixed="right" width="160" header-align="center" align="center"> |
| 31 | align="center"> | ||
| 32 | <template #default="scope"> | 31 | <template #default="scope"> |
| 33 | <a class="text-primary pd10" @click="editCoach(scope.row)"> | 32 | <a class="text-primary pd10" @click="editCoach(scope.row)"> |
| 34 | {{language==0?'编辑':'Edit'}} | 33 | {{language==0?'编辑':'Edit'}} | ... | ... |
| ... | @@ -4,9 +4,9 @@ | ... | @@ -4,9 +4,9 @@ |
| 4 | <el-row :gutter="15"> | 4 | <el-row :gutter="15"> |
| 5 | <el-col :lg="7" :md="24" :xl="6"> | 5 | <el-col :lg="7" :md="24" :xl="6"> |
| 6 | <div class="popo"> | 6 | <div class="popo"> |
| 7 | <el-tag v-if="n.signType==0">个人</el-tag> | 7 | <el-tag v-if="n.signType==0">{{ language==0?'个人':'Individual' }}</el-tag> |
| 8 | <el-tag v-if="n.signType==1">团体</el-tag> | 8 | <el-tag v-if="n.signType==1">{{ language==0?'团体':'Team' }}</el-tag> |
| 9 | <el-tag v-if="n.signType==2">个人+团体</el-tag> | 9 | <el-tag v-if="n.signType==2">{{ language==0?'个人/团体':'Individual/Team' }}</el-tag> |
| 10 | </div> | 10 | </div> |
| 11 | <img class="mauto mw100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)"> | 11 | <img class="mauto mw100 coverLimitHeight" :src="fillImgUrl(n.coverUrl)"> |
| 12 | </el-col> | 12 | </el-col> |
| ... | @@ -44,8 +44,12 @@ | ... | @@ -44,8 +44,12 @@ |
| 44 | <div class="text-center mt30"> | 44 | <div class="text-center mt30"> |
| 45 | <a class="btn-lineG mb20 mauto" style="display: block;" v-if="n.time>0"> | 45 | <a class="btn-lineG mb20 mauto" style="display: block;" v-if="n.time>0"> |
| 46 | <span v-if="n.time>0 && n.startSign<=0"> {{ language==0?'我要报名':'Register' }}</span> | 46 | <span v-if="n.time>0 && n.startSign<=0"> {{ language==0?'我要报名':'Register' }}</span> |
| 47 | |||
| 47 | <span v-if="n.startSign>0"> {{ language==0?'报名未开始':'Not started yet' }}</span> | 48 | <span v-if="n.startSign>0"> {{ language==0?'报名未开始':'Not started yet' }}</span> |
| 48 | </a> | 49 | </a> |
| 50 | <div v-else style="opacity: 0.5;" class="btn-lineG mb20 mauto text-center"> | ||
| 51 | {{ language == 0 ? '报名已结束' : 'Registration has ended' }} | ||
| 52 | </div> | ||
| 49 | </div> | 53 | </div> |
| 50 | </el-col> | 54 | </el-col> |
| 51 | </el-row> | 55 | </el-row> |
| ... | @@ -88,7 +92,6 @@ function goDetail(id) { | ... | @@ -88,7 +92,6 @@ function goDetail(id) { |
| 88 | <style scoped lang="scss"> | 92 | <style scoped lang="scss"> |
| 89 | .pv20{padding: 0 20px;} | 93 | .pv20{padding: 0 20px;} |
| 90 | .mt60{margin-top: 60px} | 94 | .mt60{margin-top: 60px} |
| 91 | .popo{position: absolute;left: 0;} | ||
| 92 | .matchItem { | 95 | .matchItem { |
| 93 | cursor: pointer;padding: 0 0 20px; | 96 | cursor: pointer;padding: 0 0 20px; |
| 94 | background: #FFFFFF;border-bottom: 1px solid #e5e5e5; | 97 | background: #FFFFFF;border-bottom: 1px solid #e5e5e5; |
| ... | @@ -102,7 +105,6 @@ function goDetail(id) { | ... | @@ -102,7 +105,6 @@ function goDetail(id) { |
| 102 | position: absolute; | 105 | position: absolute; |
| 103 | left: 20px; | 106 | left: 20px; |
| 104 | top: 30px; | 107 | top: 30px; |
| 105 | |||
| 106 | img { | 108 | img { |
| 107 | background: #fff; | 109 | background: #fff; |
| 108 | } | 110 | } | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -23,35 +23,43 @@ | ... | @@ -23,35 +23,43 @@ |
| 23 | </el-form-item> | 23 | </el-form-item> |
| 24 | </el-col> | 24 | </el-col> |
| 25 | <el-col :lg="10"> | 25 | <el-col :lg="10"> |
| 26 | <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations"> | 26 | <el-form-item :label="language==0?'代表国家/地区':'Representing'" required> |
| 27 | <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/> | 27 | <el-select filterable v-model="form.countryId" @change="changeCountryId"> |
| 28 | <!-- <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>--> | ||
| 29 | <el-option v-for="item in countryList" :key="item.id" :label="item.noc||item.enName" :value="item.id"/> | ||
| 30 | </el-select> | ||
| 28 | </el-form-item> | 31 | </el-form-item> |
| 29 | <el-form-item :label="language==0?'团体名称':'Institution Name'" prop="name"> | 32 | <!-- <el-form-item :label="language==0?'参赛队名称':'Name of participating team'" required prop="abreviations">--> |
| 33 | <!-- <el-input type="text" v-model="form.abreviations" :placeholder="language==0?'请输入内容':''"/>--> | ||
| 34 | <!-- </el-form-item>--> | ||
| 35 | <el-form-item v-if="!isNational" :label="language==0?'团体名称':'Team Name'" prop="name" required> | ||
| 36 | <!-- <div>--> | ||
| 37 | <!-- <span v-if="language==0">{{form.country.name}}代表队</span>--> | ||
| 38 | <!-- <span v-else>{{form.country.enName}} Delegation</span>--> | ||
| 39 | <!-- </div>--> | ||
| 30 | <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> | 40 | <el-input v-model="form.name" :placeholder="language==0?'请输入团体名称':''" /> |
| 31 | </el-form-item> | 41 | </el-form-item> |
| 32 | <el-form-item :label="language==0?'所属国家/地区':'Country'" required> | 42 | <el-form-item :label="language==0?'联系人姓名':'Contact Person'" required prop="contactPerson"> |
| 33 | <el-select filterable v-model="form.countryId"> | ||
| 34 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id" /> | ||
| 35 | </el-select> | ||
| 36 | </el-form-item> | ||
| 37 | <el-form-item :label="language==0?'负责人姓名':'Contact Person'" prop="contactPerson"> | ||
| 38 | <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" /> | 43 | <el-input v-model="form.contactPerson" :placeholder="language==0?'请输入联系人':''" /> |
| 39 | </el-form-item> | 44 | </el-form-item> |
| 40 | <el-form-item :label="language==0?'邮箱':'Email'" required prop="contactEmail"> | 45 | <el-form-item :label="language==0?'联系人邮箱':'Email'" required prop="contactEmail"> |
| 41 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> | 46 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> |
| 42 | </el-form-item> | 47 | </el-form-item> |
| 48 | <el-form-item :label="language==0?'联系人电话':'Contact Phone'" required prop="contactTelno"> | ||
| 49 | <el-input v-model="form.contactTelno" type="phone" :placeholder="language==0?'请输入内容':''"/> | ||
| 50 | </el-form-item> | ||
| 43 | <!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">--> | 51 | <!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">--> |
| 44 | <!-- <el-select v-model="form.majorFlag">--> | 52 | <!-- <el-select v-model="form.majorFlag">--> |
| 45 | <!-- <el-option :label="language==0?'专业':'Professional'" value="1" />--> | 53 | <!-- <el-option :label="language==0?'专业':'Professional'" value="1" />--> |
| 46 | <!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />--> | 54 | <!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />--> |
| 47 | <!-- </el-select>--> | 55 | <!-- </el-select>--> |
| 48 | <!-- </el-form-item>--> | 56 | <!-- </el-form-item>--> |
| 49 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type"> | 57 | <!-- <el-form-item :label="language==0?'团体类型':'Group type'" prop="type">--> |
| 50 | <el-select :disabled="language==1" v-model="form.type" :placeholder="typeOptions[language].selectPlaceholder" style="width: 100%;"> | 58 | <!-- <el-select :disabled="language==1" v-model="form.type" :placeholder="typeOptions[language].selectPlaceholder" style="width: 100%;">--> |
| 51 | <el-option v-for="(o,index) in typeOptions[language].options" :label="o.text" | 59 | <!-- <el-option v-for="(o,index) in typeOptions[language].options" :label="o.text"--> |
| 52 | :key="index" :value="o.value" /> | 60 | <!-- :key="index" :value="o.value" />--> |
| 53 | </el-select> | 61 | <!-- </el-select>--> |
| 54 | </el-form-item> | 62 | <!-- </el-form-item>--> |
| 55 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" prop="address"> | 63 | <el-form-item :label="language==0?'详细地址':'Detailed Address'" prop="address"> |
| 56 | <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入详细地址':''"/> | 64 | <el-input type="textarea" v-model="form.address" class="mt10" :placeholder="language==0?'请输入详细地址':''"/> |
| 57 | </el-form-item> | 65 | </el-form-item> |
| ... | @@ -108,11 +116,13 @@ import _ from 'lodash' | ... | @@ -108,11 +116,13 @@ import _ from 'lodash' |
| 108 | import {useStorage} from "@vueuse/core/index"; | 116 | import {useStorage} from "@vueuse/core/index"; |
| 109 | 117 | ||
| 110 | const data = reactive({ | 118 | const data = reactive({ |
| 111 | isRanks: false, | 119 | isNational: false, |
| 112 | matchData:{ | 120 | matchData:{ |
| 113 | enBo:{} | 121 | enBo:{} |
| 114 | }, | 122 | }, |
| 115 | form: {}, | 123 | form: { |
| 124 | country:{} | ||
| 125 | }, | ||
| 116 | typeOptions: { | 126 | typeOptions: { |
| 117 | 0: { | 127 | 0: { |
| 118 | selectPlaceholder: '请选择团体类型', | 128 | selectPlaceholder: '请选择团体类型', |
| ... | @@ -144,28 +154,30 @@ const data = reactive({ | ... | @@ -144,28 +154,30 @@ const data = reactive({ |
| 144 | rankList: [], | 154 | rankList: [], |
| 145 | accept: '.doc, .pdf, .docx, .zip', | 155 | accept: '.doc, .pdf, .docx, .zip', |
| 146 | rules: { | 156 | rules: { |
| 147 | imgUrl: { required: true, message: '请上传', trigger: 'blur' }, | 157 | // imgUrl: { required: true, message: '请上传', trigger: 'blur' }, |
| 148 | name: { required: true, message: '请填写', trigger: 'blur' }, | 158 | // name: { required: true, message: '请填写', trigger: 'blur' }, |
| 149 | type: { required: true, message: '请选择', trigger: 'change' }, | 159 | // type: { required: true, message: '请选择', trigger: 'change' }, |
| 150 | contactPerson: { required: true, message: '请填写内容', trigger: 'blur' }, | 160 | contactPerson: { required: true, message: '请填写内容', trigger: 'blur' }, |
| 161 | contactTelno: { required: true, message: '请填写内容', trigger: 'blur' }, | ||
| 151 | contactEmail: { required: true, message: '请填写内容', trigger: 'blur' }, | 162 | contactEmail: { required: true, message: '请填写内容', trigger: 'blur' }, |
| 152 | abreviations: { required: true, message: '请填写内容', trigger: 'blur' }, | 163 | // abreviations: { required: true, message: '请填写内容', trigger: 'blur' }, |
| 153 | address: { required: true, message: '请填写内容', trigger: 'blur' } | 164 | // address: { required: true, message: '请填写内容', trigger: 'blur' } |
| 154 | }, | 165 | }, |
| 155 | rules_en: { | 166 | rules_en: { |
| 156 | imgUrl: { required: true, message: 'required', trigger: 'blur' }, | 167 | // imgUrl: { required: true, message: 'required', trigger: 'blur' }, |
| 157 | name: { required: true, message: 'required', trigger: 'blur' }, | 168 | // name: { required: true, message: 'required', trigger: 'blur' }, |
| 158 | type: { required: true, message: 'required', trigger: 'change' }, | 169 | // type: { required: true, message: 'required', trigger: 'change' }, |
| 159 | contactPerson: { required: true, message: 'required', trigger: 'blur' }, | 170 | contactPerson: { required: true, message: 'required', trigger: 'blur' }, |
| 171 | contactTelno: { required: true, message: 'required', trigger: 'blur' }, | ||
| 160 | contactEmail: { required: true, message: 'required', trigger: 'blur' }, | 172 | contactEmail: { required: true, message: 'required', trigger: 'blur' }, |
| 161 | abreviations: { required: true, message: 'required', trigger: 'blur' }, | 173 | // abreviations: { required: true, message: 'required', trigger: 'blur' }, |
| 162 | // address: { required: true, message: 'required', trigger: 'blur' } | 174 | // address: { required: true, message: 'required', trigger: 'blur' } |
| 163 | }, | 175 | }, |
| 164 | coachOrLeaderFlag: '', | 176 | coachOrLeaderFlag: '', |
| 165 | matchInfo:{} | 177 | matchInfo:{} |
| 166 | }) | 178 | }) |
| 167 | const { | 179 | const { |
| 168 | isRanks,matchData, | 180 | isNational,matchData, |
| 169 | rankList, | 181 | rankList, |
| 170 | form, | 182 | form, |
| 171 | groupId, | 183 | groupId, |
| ... | @@ -183,6 +195,7 @@ onMounted(() => { | ... | @@ -183,6 +195,7 @@ onMounted(() => { |
| 183 | // 获取团体信息 | 195 | // 获取团体信息 |
| 184 | getGroupInfo() | 196 | getGroupInfo() |
| 185 | signType.value = route.query.signType | 197 | signType.value = route.query.signType |
| 198 | isNational.value = route.query.isNational | ||
| 186 | 199 | ||
| 187 | getRegionsList() | 200 | getRegionsList() |
| 188 | getCountryList() | 201 | getCountryList() |
| ... | @@ -230,11 +243,19 @@ function getCountryList() { | ... | @@ -230,11 +243,19 @@ function getCountryList() { |
| 230 | countryList.value = res.data | 243 | countryList.value = res.data |
| 231 | }) | 244 | }) |
| 232 | } | 245 | } |
| 246 | function changeCountryId(e) { | ||
| 247 | console.log(e) | ||
| 248 | for (var c of countryList.value){ | ||
| 249 | if (c.id == e) { | ||
| 250 | form.value.country = c | ||
| 251 | } | ||
| 252 | } | ||
| 253 | } | ||
| 233 | function getGroupInfo() { | 254 | function getGroupInfo() { |
| 234 | match.getGroupInfo().then(res => { | 255 | match.getGroupInfo().then(res => { |
| 235 | form.value = res.data | 256 | form.value = res.data |
| 236 | if(language.value == 1){ | 257 | if(form.value.countryId){ |
| 237 | form.value.type = '4' | 258 | changeCountryId(form.value.countryId) |
| 238 | } | 259 | } |
| 239 | }).catch(err => { | 260 | }).catch(err => { |
| 240 | router.push({name: 'home'}) | 261 | router.push({name: 'home'}) |
| ... | @@ -242,12 +263,6 @@ function getGroupInfo() { | ... | @@ -242,12 +263,6 @@ function getGroupInfo() { |
| 242 | }) | 263 | }) |
| 243 | } | 264 | } |
| 244 | 265 | ||
| 245 | function getTeamList() { | ||
| 246 | return match.getMyTeamList(cptId.value, groupId.value).then(response => { | ||
| 247 | rankList.value = response.data | ||
| 248 | }) | ||
| 249 | } | ||
| 250 | |||
| 251 | function goPrev() { | 266 | function goPrev() { |
| 252 | router.go(-1) | 267 | router.go(-1) |
| 253 | } | 268 | } |
| ... | @@ -306,7 +321,7 @@ function goNext() { | ... | @@ -306,7 +321,7 @@ function goNext() { |
| 306 | query: { | 321 | query: { |
| 307 | matchId: cptId.value, | 322 | matchId: cptId.value, |
| 308 | groupId: groupId.value, | 323 | groupId: groupId.value, |
| 309 | signType: signType.value | 324 | isNational: isNational.value |
| 310 | } | 325 | } |
| 311 | }) | 326 | }) |
| 312 | } | 327 | } | ... | ... |
| ... | @@ -2,8 +2,8 @@ | ... | @@ -2,8 +2,8 @@ |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <div class="indexTitle"> | 4 | <div class="indexTitle"> |
| 5 | <h3 class="leftboderTT">赛事视频</h3> | 5 | <h3 class="leftboderTT">{{ language==0?'赛事视频':'Event Video' }}</h3> |
| 6 | <a class="more" @click="goList(query1.sortId,'赛事视频')">MORE</a> | 6 | <a class="more" @click="goList(query1.sortId,language==0?'赛事视频':'Event Videos')">MORE</a> |
| 7 | </div> | 7 | </div> |
| 8 | 8 | ||
| 9 | <el-row :gutter="20"> | 9 | <el-row :gutter="20"> |
| ... | @@ -44,8 +44,8 @@ | ... | @@ -44,8 +44,8 @@ |
| 44 | 44 | ||
| 45 | 45 | ||
| 46 | <div class="indexTitle"> | 46 | <div class="indexTitle"> |
| 47 | <h3 class="leftboderTT">精彩图片</h3> | 47 | <h3 class="leftboderTT">{{ language==0?'精彩图片':'Exciting Photos' }}</h3> |
| 48 | <a class="more" @click="goList(query2.sortId,'精彩图片')">MORE</a> | 48 | <a class="more" @click="goList(query2.sortId,language==0?'精彩图片':'Exciting Photos')">MORE</a> |
| 49 | </div> | 49 | </div> |
| 50 | <el-row class="mb20" :gutter="20"> | 50 | <el-row class="mb20" :gutter="20"> |
| 51 | <el-col :lg="9"> | 51 | <el-col :lg="9"> |
| ... | @@ -71,6 +71,8 @@ | ... | @@ -71,6 +71,8 @@ |
| 71 | 71 | ||
| 72 | <div class="mb60" /> | 72 | <div class="mb60" /> |
| 73 | </div> | 73 | </div> |
| 74 | |||
| 75 | |||
| 74 | </div> | 76 | </div> |
| 75 | </template> | 77 | </template> |
| 76 | <script setup> | 78 | <script setup> |
| ... | @@ -78,7 +80,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' | ... | @@ -78,7 +80,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' |
| 78 | import { onMounted, ref } from 'vue' | 80 | import { onMounted, ref } from 'vue' |
| 79 | import { getNewsListById } from '@/apiPc/webSite' | 81 | import { getNewsListById } from '@/apiPc/webSite' |
| 80 | import { useRouter } from 'vue-router' | 82 | import { useRouter } from 'vue-router' |
| 81 | 83 | import {useStorage} from "@vueuse/core/index"; | |
| 84 | const language = useStorage('language', 0) | ||
| 82 | const router = useRouter() | 85 | const router = useRouter() |
| 83 | const activeName = ref(0) | 86 | const activeName = ref(0) |
| 84 | const total = ref(0) | 87 | const total = ref(0) |
| ... | @@ -102,11 +105,17 @@ onMounted(() => { | ... | @@ -102,11 +105,17 @@ onMounted(() => { |
| 102 | }) | 105 | }) |
| 103 | 106 | ||
| 104 | const getList = (obj) => { | 107 | const getList = (obj) => { |
| 108 | if(language.value==1){ | ||
| 109 | obj.sortId = '10000008' | ||
| 110 | } | ||
| 105 | getNewsListById(obj).then(res => { | 111 | getNewsListById(obj).then(res => { |
| 106 | newsList.value = res.rows | 112 | newsList.value = res.rows |
| 107 | }) | 113 | }) |
| 108 | } | 114 | } |
| 109 | const getList2 = (obj) => { | 115 | const getList2 = (obj) => { |
| 116 | if(language.value==1){ | ||
| 117 | obj.sortId = '10000009' | ||
| 118 | } | ||
| 110 | getNewsListById(obj).then(res => { | 119 | getNewsListById(obj).then(res => { |
| 111 | newsList2.value = res.rows | 120 | newsList2.value = res.rows |
| 112 | }) | 121 | }) | ... | ... |
src/viewsPc/meta/index_en.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box"> | ||
| 4 | <div class="indexTitle"> | ||
| 5 | <h3 class="leftboderTT">Event Video</h3> | ||
| 6 | <a class="more" @click="goList(query1.sortId,'Event Videos')">MORE</a> | ||
| 7 | </div> | ||
| 8 | |||
| 9 | <el-row :gutter="20"> | ||
| 10 | <el-col :lg="12" :sm="24" :md="12"> | ||
| 11 | <div class="liveImgbox" @click="goDetail(newsList[0])"> | ||
| 12 | <i class="ii">Live Broadcast</i> | ||
| 13 | <img :src="fillImgUrl_webSite(newsList[0]?.picUrl)"> | ||
| 14 | <h3 class="esp">{{ newsList[0]?.name }} | ||
| 15 | </h3> | ||
| 16 | </div> | ||
| 17 | </el-col> | ||
| 18 | <el-col :lg="12" :sm="24"> | ||
| 19 | <el-row :gutter="20"> | ||
| 20 | <el-col :md="12" :lg="12"> | ||
| 21 | <div class="videoImgbox" @click="goDetail(newsList[1])"> | ||
| 22 | <img :src="fillImgUrl_webSite(newsList[1]?.picUrl)"> | ||
| 23 | </div> | ||
| 24 | </el-col> | ||
| 25 | <el-col :md="12" :lg="12"> | ||
| 26 | <div class="videoImgbox" @click="goDetail(newsList[2])"> | ||
| 27 | <img :src="fillImgUrl_webSite(newsList[2]?.picUrl)"> | ||
| 28 | </div> | ||
| 29 | </el-col> | ||
| 30 | <el-col :md="12" :lg="12" class="mt20"> | ||
| 31 | <div class="videoImgbox" @click="goDetail(newsList[3])"> | ||
| 32 | <img :src="fillImgUrl_webSite(newsList[3]?.picUrl)"> | ||
| 33 | </div> | ||
| 34 | </el-col> | ||
| 35 | <el-col :md="12" :lg="12" class="mt20"> | ||
| 36 | <div class="videoImgbox" @click="goDetail(newsList[4])"> | ||
| 37 | <img :src="fillImgUrl_webSite(newsList[4]?.picUrl)"> | ||
| 38 | </div> | ||
| 39 | </el-col> | ||
| 40 | </el-row> | ||
| 41 | </el-col> | ||
| 42 | |||
| 43 | </el-row> | ||
| 44 | |||
| 45 | |||
| 46 | <div class="indexTitle"> | ||
| 47 | <h3 class="leftboderTT">Exciting Photos</h3> | ||
| 48 | <a class="more" @click="goList(query2.sortId,'Exciting Photos')">MORE</a> | ||
| 49 | </div> | ||
| 50 | <el-row class="mb20" :gutter="20"> | ||
| 51 | <el-col :lg="9"> | ||
| 52 | <div class="picbox" @click="goDetail(newsList2[0])"><img :src="fillImgUrl_webSite(newsList2[0]?.picUrl)"/></div> | ||
| 53 | </el-col> | ||
| 54 | <el-col :lg="15"> | ||
| 55 | <el-row :gutter="20" style="height: 100%"> | ||
| 56 | <el-col :lg="16"> | ||
| 57 | <div class="picbox" @click="goDetail(newsList2[1])"><img :src="fillImgUrl_webSite(newsList2[1]?.picUrl)"/></div> | ||
| 58 | </el-col> | ||
| 59 | <el-col :lg="8"> | ||
| 60 | <div class="picbox" @click="goDetail(newsList2[2])" style="height: calc(50% - 10px)"><img :src="fillImgUrl_webSite(newsList2[2]?.picUrl)"/></div> | ||
| 61 | <div class="picbox" @click="goDetail(newsList2[3])" style="height: calc(50% - 10px);margin-top: 20px"><img :src="fillImgUrl_webSite(newsList2[3]?.picUrl)"/></div> | ||
| 62 | </el-col> | ||
| 63 | </el-row> | ||
| 64 | <el-row :gutter="20" class="mt20"> | ||
| 65 | <el-col :lg="8" v-for="(n,index) in newsList2" :key="index" v-show="index>3"> | ||
| 66 | <div class="picbox" @click="goDetail(n)"><img :src="fillImgUrl_webSite(n.picUrl)"/></div> | ||
| 67 | </el-col> | ||
| 68 | </el-row> | ||
| 69 | </el-col> | ||
| 70 | </el-row> | ||
| 71 | |||
| 72 | <div class="mb60" /> | ||
| 73 | </div> | ||
| 74 | </div> | ||
| 75 | </template> | ||
| 76 | <script setup> | ||
| 77 | import { ArrowRight, Search } from '@element-plus/icons-vue' | ||
| 78 | import { onMounted, ref } from 'vue' | ||
| 79 | import { getNewsListById } from '@/apiPc/webSite' | ||
| 80 | import { useRouter } from 'vue-router' | ||
| 81 | |||
| 82 | const router = useRouter() | ||
| 83 | const activeName = ref(0) | ||
| 84 | const total = ref(0) | ||
| 85 | const list = ref([]) | ||
| 86 | const newsList = ref([]) | ||
| 87 | const newsList2 = ref([]) | ||
| 88 | const query1 = ref({ | ||
| 89 | pageSize: 5, | ||
| 90 | pageNum: 1, | ||
| 91 | sortId: '10000008' | ||
| 92 | }) | ||
| 93 | const query2 = ref({ | ||
| 94 | pageSize: 7, | ||
| 95 | pageNum: 1, | ||
| 96 | sortId: '10000009' | ||
| 97 | }) | ||
| 98 | |||
| 99 | onMounted(() => { | ||
| 100 | getList(query1.value) | ||
| 101 | getList2(query2.value) | ||
| 102 | }) | ||
| 103 | |||
| 104 | const getList = (obj) => { | ||
| 105 | getNewsListById(obj).then(res => { | ||
| 106 | newsList.value = res.rows | ||
| 107 | }) | ||
| 108 | } | ||
| 109 | const getList2 = (obj) => { | ||
| 110 | getNewsListById(obj).then(res => { | ||
| 111 | newsList2.value = res.rows | ||
| 112 | }) | ||
| 113 | } | ||
| 114 | |||
| 115 | const goList = (sortId, name) => { | ||
| 116 | router.push({ | ||
| 117 | path: `/news/list/${sortId}`, | ||
| 118 | query: { | ||
| 119 | kindName: name | ||
| 120 | } | ||
| 121 | }) | ||
| 122 | } | ||
| 123 | const goDetail = (n) => { | ||
| 124 | if (n.isOut == '1') { | ||
| 125 | window.open(n.jumpUrl) | ||
| 126 | } else { | ||
| 127 | window.open(router.resolve({ | ||
| 128 | path: `/news/detail/${n.noteId}` | ||
| 129 | }).href) | ||
| 130 | } | ||
| 131 | } | ||
| 132 | </script> | ||
| 133 | <style lang="scss" scoped> | ||
| 134 | .leftboderTT{ | ||
| 135 | font-size: 20px;} | ||
| 136 | @media (max-width: 800px) { | ||
| 137 | [class*=el-col-]{display: block;margin: 0 0 20px} | ||
| 138 | } | ||
| 139 | </style> |
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | <div class="box"> | 3 | <div class="box" v-if="language == 0"> |
| 4 | <div class="indexTitle"> | 4 | <div class="indexTitle"> |
| 5 | <h3 class="leftboderTT">要闻</h3> | 5 | <h3 class="leftboderTT">要闻</h3> |
| 6 | <a class="more" @click="goList(query1.sortId,'要闻')">MORE</a> | 6 | <a class="more" @click="goList(query1.sortId,'要闻')">MORE</a> |
| ... | @@ -107,6 +107,113 @@ | ... | @@ -107,6 +107,113 @@ |
| 107 | 107 | ||
| 108 | <div class="mb60" /> | 108 | <div class="mb60" /> |
| 109 | </div> | 109 | </div> |
| 110 | <div class="box" v-if="language == 1"> | ||
| 111 | <div class="indexTitle"> | ||
| 112 | <h3 class="leftboderTT">Games News</h3> | ||
| 113 | <a class="more" @click="goList(query1.sortId,'Games News')">MORE</a> | ||
| 114 | </div> | ||
| 115 | <el-card> | ||
| 116 | <el-row class="topNews" :gutter="20"> | ||
| 117 | <el-col :lg="12" :sm="24" :md="12"> | ||
| 118 | <el-carousel indicator-position="none" height="330"> | ||
| 119 | <el-carousel-item v-for="(n,index) in newsList" :key="index"> | ||
| 120 | <div class="imgbox carouselImg" @click="goDetail(n)"> | ||
| 121 | <div class="date"> | ||
| 122 | <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> | ||
| 123 | <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> | ||
| 124 | </div> | ||
| 125 | <img :src="fillImgUrl_webSite(n.picUrl)"> | ||
| 126 | <h3 class="esp">{{ n.name }} | ||
| 127 | </h3> | ||
| 128 | </div> | ||
| 129 | </el-carousel-item> | ||
| 130 | </el-carousel> | ||
| 131 | </el-col> | ||
| 132 | <el-col :lg="12" :sm="24" :md="12"> | ||
| 133 | <div class="newsCommon"> | ||
| 134 | <div | ||
| 135 | v-for="(n,index) in newsList" v-show="index<4" :key="index" class="item" | ||
| 136 | @click="goDetail(n)" | ||
| 137 | > | ||
| 138 | <h3 class="esp"> | ||
| 139 | <span v-if="n.publishType"> | ||
| 140 | <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span> | ||
| 141 | </span>{{ n.name }} | ||
| 142 | </h3> | ||
| 143 | <p class="esp">{{ n.subName }}</p> | ||
| 144 | </div> | ||
| 145 | </div> | ||
| 146 | </el-col> | ||
| 147 | </el-row> | ||
| 148 | </el-card> | ||
| 149 | |||
| 150 | <div class="indexTitle"> | ||
| 151 | <h3 class="leftboderTT">Official Release</h3> | ||
| 152 | <a class="more" @click="goList(query2.sortId,'Official Release')">MORE</a> | ||
| 153 | </div> | ||
| 154 | <el-row class="newsflex mb20"> | ||
| 155 | <el-col | ||
| 156 | v-for="(n,index) in newsList2" v-show="index<4" :lg="12" :xs="24" :sm="12" | ||
| 157 | @click="goDetail(n)" | ||
| 158 | > | ||
| 159 | <div class="item"> | ||
| 160 | <div v-if="n.picUrl" class="imgbox"> | ||
| 161 | <img :src="fillImgUrl_webSite(n.picUrl)"> | ||
| 162 | </div> | ||
| 163 | <div class="info"> | ||
| 164 | <span class="date">{{ n.belongTime }}</span> | ||
| 165 | <h3 class="esp_2"> | ||
| 166 | {{ n.name }} | ||
| 167 | </h3> | ||
| 168 | <p class="esp_2">{{ n.subName }}</p> | ||
| 169 | </div> | ||
| 170 | </div> | ||
| 171 | </el-col> | ||
| 172 | </el-row> | ||
| 173 | |||
| 174 | <!-- <div class="indexTitle">--> | ||
| 175 | <!-- <h3 class="leftboderTT">官方发布</h3>--> | ||
| 176 | <!-- <a class="more" @click="goList(query3.sortId,'官方发布')">MORE</a>--> | ||
| 177 | <!-- </div>--> | ||
| 178 | <!-- <el-row :gutter="20">--> | ||
| 179 | <!-- <el-col--> | ||
| 180 | <!-- v-for="(n,index) in newsList3"--> | ||
| 181 | <!-- v-show="index<3" :key="n.id" :xs="12" :sm="8"--> | ||
| 182 | <!-- :lg="8"--> | ||
| 183 | <!-- >--> | ||
| 184 | <!-- <div class="activeItem">--> | ||
| 185 | <!-- <div class="info">--> | ||
| 186 | <!-- <div class="date">--> | ||
| 187 | <!-- 2023-12-12--> | ||
| 188 | <!-- </div>--> | ||
| 189 | <!-- <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>--> | ||
| 190 | <!-- <p class="esp_2" />--> | ||
| 191 | <!-- <a>查看详情</a>--> | ||
| 192 | <!-- </div>--> | ||
| 193 | <!-- </div>--> | ||
| 194 | <!-- </el-col>--> | ||
| 195 | <!-- </el-row>--> | ||
| 196 | |||
| 197 | <!-- <div class="indexTitle">--> | ||
| 198 | <!-- <h3 class="leftboderTT">专题报道</h3>--> | ||
| 199 | <!-- <a class="more" @click="goList(query4.sortId,'专题报道')">MORE</a>--> | ||
| 200 | <!-- </div>--> | ||
| 201 | <!-- <el-row :gutter="30" class="newsimgcover">--> | ||
| 202 | <!-- <el-col v-for="(n,index) in newsList4" v-show="index<3" :lg="8" @click="goDetail(n)">--> | ||
| 203 | <!-- <div class="item shadow">--> | ||
| 204 | <!-- <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div>--> | ||
| 205 | <!-- <h3 class="esp">--> | ||
| 206 | <!-- <span v-if="n.publishType">--> | ||
| 207 | <!-- <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>--> | ||
| 208 | <!-- </span>--> | ||
| 209 | <!-- {{ n.name }}</h3>--> | ||
| 210 | <!-- </div>--> | ||
| 211 | <!-- </el-col>--> | ||
| 212 | <!-- </el-row>--> | ||
| 213 | |||
| 214 | <div class="mb60" /> | ||
| 215 | </div> | ||
| 216 | |||
| 110 | </div> | 217 | </div> |
| 111 | </template> | 218 | </template> |
| 112 | <script setup> | 219 | <script setup> |
| ... | @@ -114,7 +221,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' | ... | @@ -114,7 +221,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' |
| 114 | import { onMounted, ref } from 'vue' | 221 | import { onMounted, ref } from 'vue' |
| 115 | import { getNewsListById } from '@/apiPc/webSite' | 222 | import { getNewsListById } from '@/apiPc/webSite' |
| 116 | import { useRouter } from 'vue-router' | 223 | import { useRouter } from 'vue-router' |
| 117 | 224 | import {useStorage} from "@vueuse/core/index"; | |
| 225 | const language = useStorage('language', 0) | ||
| 118 | const router = useRouter() | 226 | const router = useRouter() |
| 119 | const activeName = ref(0) | 227 | const activeName = ref(0) |
| 120 | const total = ref(0) | 228 | const total = ref(0) |
| ... | @@ -126,22 +234,22 @@ const newsList4 = ref([]) | ... | @@ -126,22 +234,22 @@ const newsList4 = ref([]) |
| 126 | const query1 = ref({ | 234 | const query1 = ref({ |
| 127 | pageSize: 5, | 235 | pageSize: 5, |
| 128 | pageNum: 1, | 236 | pageNum: 1, |
| 129 | sortId:'10000001' | 237 | sortId: language.value == 0 ?'10000001':'10000004' |
| 130 | }) | 238 | }) |
| 131 | const query2 = ref({ | 239 | const query2 = ref({ |
| 132 | pageSize: 4, | 240 | pageSize: 4, |
| 133 | pageNum: 1, | 241 | pageNum: 1, |
| 134 | sortId:'10000002' | 242 | sortId:language.value == 0 ?'10000002':'10000005' |
| 135 | }) | 243 | }) |
| 136 | const query3 = ref({ | 244 | const query3 = ref({ |
| 137 | pageSize: 6, | 245 | pageSize: 6, |
| 138 | pageNum: 1, | 246 | pageNum: 1, |
| 139 | sortId:'10000000' | 247 | sortId:language.value == 0 ?'10000000':'10000000' |
| 140 | }) | 248 | }) |
| 141 | const query4 = ref({ | 249 | const query4 = ref({ |
| 142 | pageSize: 3, | 250 | pageSize: 3, |
| 143 | pageNum: 1, | 251 | pageNum: 1, |
| 144 | sortId:'10000003' | 252 | sortId:language.value == 0 ?'10000003':'10000003' |
| 145 | }) | 253 | }) |
| 146 | 254 | ||
| 147 | onMounted(() => { | 255 | onMounted(() => { | ... | ... |
src/viewsPc/news/index_en.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box"> | ||
| 4 | <div class="indexTitle"> | ||
| 5 | <h3 class="leftboderTT">Games News</h3> | ||
| 6 | <a class="more" @click="goList(query1.sortId,'Games News')">MORE</a> | ||
| 7 | </div> | ||
| 8 | <el-card> | ||
| 9 | <el-row class="topNews" :gutter="20"> | ||
| 10 | <el-col :lg="12" :sm="24" :md="12"> | ||
| 11 | <el-carousel indicator-position="none" height="330"> | ||
| 12 | <el-carousel-item v-for="(n,index) in newsList" :key="index"> | ||
| 13 | <div class="imgbox carouselImg" @click="goDetail(n)"> | ||
| 14 | <div class="date"> | ||
| 15 | <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> | ||
| 16 | <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> | ||
| 17 | </div> | ||
| 18 | <img :src="fillImgUrl_webSite(n.picUrl)"> | ||
| 19 | <h3 class="esp">{{ n.name }} | ||
| 20 | </h3> | ||
| 21 | </div> | ||
| 22 | </el-carousel-item> | ||
| 23 | </el-carousel> | ||
| 24 | </el-col> | ||
| 25 | <el-col :lg="12" :sm="24" :md="12"> | ||
| 26 | <div class="newsCommon"> | ||
| 27 | <div | ||
| 28 | v-for="(n,index) in newsList" v-show="index<4" :key="index" class="item" | ||
| 29 | @click="goDetail(n)" | ||
| 30 | > | ||
| 31 | <h3 class="esp"> | ||
| 32 | <span v-if="n.publishType"> | ||
| 33 | <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span> | ||
| 34 | </span>{{ n.name }} | ||
| 35 | </h3> | ||
| 36 | <p class="esp">{{ n.subName }}</p> | ||
| 37 | </div> | ||
| 38 | </div> | ||
| 39 | </el-col> | ||
| 40 | </el-row> | ||
| 41 | </el-card> | ||
| 42 | |||
| 43 | <div class="indexTitle"> | ||
| 44 | <h3 class="leftboderTT">Official Release</h3> | ||
| 45 | <a class="more" @click="goList(query2.sortId,'Official Release')">MORE</a> | ||
| 46 | </div> | ||
| 47 | <el-row class="newsflex mb20"> | ||
| 48 | <el-col | ||
| 49 | v-for="(n,index) in newsList2" v-show="index<4" :lg="12" :xs="24" :sm="12" | ||
| 50 | @click="goDetail(n)" | ||
| 51 | > | ||
| 52 | <div class="item"> | ||
| 53 | <div v-if="n.picUrl" class="imgbox"> | ||
| 54 | <img :src="fillImgUrl_webSite(n.picUrl)"> | ||
| 55 | </div> | ||
| 56 | <div class="info"> | ||
| 57 | <span class="date">{{ n.belongTime }}</span> | ||
| 58 | <h3 class="esp_2"> | ||
| 59 | {{ n.name }} | ||
| 60 | </h3> | ||
| 61 | <p class="esp_2">{{ n.subName }}</p> | ||
| 62 | </div> | ||
| 63 | </div> | ||
| 64 | </el-col> | ||
| 65 | </el-row> | ||
| 66 | |||
| 67 | <!-- <div class="indexTitle">--> | ||
| 68 | <!-- <h3 class="leftboderTT">官方发布</h3>--> | ||
| 69 | <!-- <a class="more" @click="goList(query3.sortId,'官方发布')">MORE</a>--> | ||
| 70 | <!-- </div>--> | ||
| 71 | <!-- <el-row :gutter="20">--> | ||
| 72 | <!-- <el-col--> | ||
| 73 | <!-- v-for="(n,index) in newsList3"--> | ||
| 74 | <!-- v-show="index<3" :key="n.id" :xs="12" :sm="8"--> | ||
| 75 | <!-- :lg="8"--> | ||
| 76 | <!-- >--> | ||
| 77 | <!-- <div class="activeItem">--> | ||
| 78 | <!-- <div class="info">--> | ||
| 79 | <!-- <div class="date">--> | ||
| 80 | <!-- 2023-12-12--> | ||
| 81 | <!-- </div>--> | ||
| 82 | <!-- <h3 class="esp_2" style="height: 50px">{{ n.name }}</h3>--> | ||
| 83 | <!-- <p class="esp_2" />--> | ||
| 84 | <!-- <a>查看详情</a>--> | ||
| 85 | <!-- </div>--> | ||
| 86 | <!-- </div>--> | ||
| 87 | <!-- </el-col>--> | ||
| 88 | <!-- </el-row>--> | ||
| 89 | |||
| 90 | <!-- <div class="indexTitle">--> | ||
| 91 | <!-- <h3 class="leftboderTT">专题报道</h3>--> | ||
| 92 | <!-- <a class="more" @click="goList(query4.sortId,'专题报道')">MORE</a>--> | ||
| 93 | <!-- </div>--> | ||
| 94 | <!-- <el-row :gutter="30" class="newsimgcover">--> | ||
| 95 | <!-- <el-col v-for="(n,index) in newsList4" v-show="index<3" :lg="8" @click="goDetail(n)">--> | ||
| 96 | <!-- <div class="item shadow">--> | ||
| 97 | <!-- <div class="imgbox"><img :src="fillImgUrl_webSite(n.picUrl)"></div>--> | ||
| 98 | <!-- <h3 class="esp">--> | ||
| 99 | <!-- <span v-if="n.publishType">--> | ||
| 100 | <!-- <span v-for="(t,index) in n.publishType.split(',')" :key="index" class="jstype">{{ t }}</span>--> | ||
| 101 | <!-- </span>--> | ||
| 102 | <!-- {{ n.name }}</h3>--> | ||
| 103 | <!-- </div>--> | ||
| 104 | <!-- </el-col>--> | ||
| 105 | <!-- </el-row>--> | ||
| 106 | |||
| 107 | <div class="mb60" /> | ||
| 108 | </div> | ||
| 109 | </div> | ||
| 110 | </template> | ||
| 111 | <script setup> | ||
| 112 | import { ArrowRight, Search } from '@element-plus/icons-vue' | ||
| 113 | import { onMounted, ref } from 'vue' | ||
| 114 | import { getNewsListById } from '@/apiPc/webSite' | ||
| 115 | import { useRouter } from 'vue-router' | ||
| 116 | |||
| 117 | const router = useRouter() | ||
| 118 | const activeName = ref(0) | ||
| 119 | const total = ref(0) | ||
| 120 | const list = ref([]) | ||
| 121 | const newsList = ref([]) | ||
| 122 | const newsList2 = ref([]) | ||
| 123 | const newsList3 = ref([]) | ||
| 124 | const newsList4 = ref([]) | ||
| 125 | const query1 = ref({ | ||
| 126 | pageSize: 5, | ||
| 127 | pageNum: 1, | ||
| 128 | sortId:'10000004' | ||
| 129 | }) | ||
| 130 | const query2 = ref({ | ||
| 131 | pageSize: 4, | ||
| 132 | pageNum: 1, | ||
| 133 | sortId:'10000005' | ||
| 134 | }) | ||
| 135 | const query3 = ref({ | ||
| 136 | pageSize: 6, | ||
| 137 | pageNum: 1, | ||
| 138 | sortId:'10000000' | ||
| 139 | }) | ||
| 140 | const query4 = ref({ | ||
| 141 | pageSize: 3, | ||
| 142 | pageNum: 1, | ||
| 143 | sortId:'10000003' | ||
| 144 | }) | ||
| 145 | |||
| 146 | onMounted(() => { | ||
| 147 | getList(query1.value) | ||
| 148 | getList2(query2.value) | ||
| 149 | // getList3(query3.value) | ||
| 150 | // getList4(query4.value) | ||
| 151 | }) | ||
| 152 | |||
| 153 | const getList = (obj) => { | ||
| 154 | getNewsListById(obj).then(res => { | ||
| 155 | newsList.value = res.rows | ||
| 156 | }) | ||
| 157 | } | ||
| 158 | const getList2 = (obj) => { | ||
| 159 | getNewsListById(obj).then(res => { | ||
| 160 | newsList2.value = res.rows | ||
| 161 | }) | ||
| 162 | } | ||
| 163 | const getList3 = (obj) => { | ||
| 164 | getNewsListById(obj).then(res => { | ||
| 165 | newsList3.value = res.rows | ||
| 166 | }) | ||
| 167 | } | ||
| 168 | const getList4 = (obj) => { | ||
| 169 | getNewsListById(obj).then(res => { | ||
| 170 | newsList4.value = res.rows | ||
| 171 | }) | ||
| 172 | } | ||
| 173 | |||
| 174 | const goList = (sortId,name) => { | ||
| 175 | router.push({ | ||
| 176 | path: `/news/list/${sortId}`, | ||
| 177 | query:{ | ||
| 178 | kindName:name | ||
| 179 | } | ||
| 180 | }) | ||
| 181 | } | ||
| 182 | const goDetail = (n) => { | ||
| 183 | if (n.isOut == '1') { | ||
| 184 | window.open(n.jumpUrl) | ||
| 185 | } else { | ||
| 186 | window.open(router.resolve({ | ||
| 187 | path: `/news/detail/${n.noteId}` | ||
| 188 | }).href) | ||
| 189 | } | ||
| 190 | } | ||
| 191 | </script> | ||
| 192 | <style lang="scss" scoped> | ||
| 193 | .leftboderTT{ | ||
| 194 | font-size: 20px;} | ||
| 195 | .flexBody { | ||
| 196 | display: flex; | ||
| 197 | align-items: center; | ||
| 198 | |||
| 199 | .el-form-item { | ||
| 200 | margin-bottom: 0 | ||
| 201 | } | ||
| 202 | } | ||
| 203 | |||
| 204 | .infoPart { | ||
| 205 | padding: 20px; | ||
| 206 | flex: 1; | ||
| 207 | |||
| 208 | & > h3 { | ||
| 209 | font-size: 24px; | ||
| 210 | color: var(--el-color-primary); | ||
| 211 | } | ||
| 212 | } | ||
| 213 | |||
| 214 | .firstItem { | ||
| 215 | background: #FAFAFA; | ||
| 216 | } | ||
| 217 | |||
| 218 | .searchPark { | ||
| 219 | background: #F6F6F6; | ||
| 220 | } | ||
| 221 | |||
| 222 | .newsBlock { | ||
| 223 | .item { | ||
| 224 | display: flex; | ||
| 225 | position: relative; | ||
| 226 | width: 100%; | ||
| 227 | cursor: pointer; | ||
| 228 | border-bottom: 1px dashed #EEEEEE; | ||
| 229 | padding: 30px 0; | ||
| 230 | |||
| 231 | .date { | ||
| 232 | width: 60px; | ||
| 233 | height: 60px; | ||
| 234 | text-align: center; | ||
| 235 | background: #FAFAFA; | ||
| 236 | margin: 0 10px; | ||
| 237 | |||
| 238 | .day { | ||
| 239 | color: var(--el-color-primary); | ||
| 240 | transform: scaleX(0.7); | ||
| 241 | font-weight: bold; | ||
| 242 | font-size: 24px; | ||
| 243 | } | ||
| 244 | |||
| 245 | p { | ||
| 246 | font-size: 14px; | ||
| 247 | margin: 0; | ||
| 248 | transform: scaleX(0.7); | ||
| 249 | font-weight: bold; | ||
| 250 | color: #7B7F83; | ||
| 251 | } | ||
| 252 | } | ||
| 253 | |||
| 254 | .imgbox {width: 280px;margin-right: 10px; height: 157.5px;overflow: hidden; | ||
| 255 | flex: 0 0 auto; | ||
| 256 | img{width: 100%;height: 100%;object-fit: cover;object-position: top;} | ||
| 257 | } | ||
| 258 | |||
| 259 | .item-body { | ||
| 260 | flex: 1 1 auto; | ||
| 261 | |||
| 262 | label { | ||
| 263 | background: linear-gradient(-90deg, #FCD258 0%, #D3AA5A 0%, #E4C889 99%); | ||
| 264 | border-radius: 12px 12px 12px 0px; | ||
| 265 | padding: 2px 10px; | ||
| 266 | color: #FFFFFF; | ||
| 267 | margin: 10px 10px 0; | ||
| 268 | display: inline-block; | ||
| 269 | font-size: 14px; | ||
| 270 | } | ||
| 271 | |||
| 272 | h3 { | ||
| 273 | padding: 0 10px; | ||
| 274 | white-space: nowrap; | ||
| 275 | overflow: hidden; | ||
| 276 | text-overflow: ellipsis; | ||
| 277 | font-size: 18px; | ||
| 278 | color: #000000; | ||
| 279 | margin: 0 | ||
| 280 | } | ||
| 281 | |||
| 282 | p { | ||
| 283 | padding: 0 10px; | ||
| 284 | text-align: justify; | ||
| 285 | line-height: 24px; | ||
| 286 | height: 48px; | ||
| 287 | display: -webkit-box; | ||
| 288 | -webkit-box-orient: vertical; | ||
| 289 | -webkit-line-clamp: 2; | ||
| 290 | overflow: hidden; | ||
| 291 | text-overflow: ellipsis; | ||
| 292 | color: #7B7F83; | ||
| 293 | font-size: 14px; | ||
| 294 | } | ||
| 295 | } | ||
| 296 | |||
| 297 | .go { | ||
| 298 | background: url("@/assets/v1/about/more.png") no-repeat center; | ||
| 299 | background-size: contain; | ||
| 300 | width: 22px; | ||
| 301 | height: 8px; | ||
| 302 | display: block; | ||
| 303 | filter: grayscale(1); | ||
| 304 | margin: 0 10px; | ||
| 305 | } | ||
| 306 | } | ||
| 307 | |||
| 308 | .item:hover { | ||
| 309 | background: #F8F4FF; | ||
| 310 | |||
| 311 | .date { | ||
| 312 | background: var(--el-color-primary); | ||
| 313 | |||
| 314 | .day { | ||
| 315 | color: #fff; | ||
| 316 | } | ||
| 317 | |||
| 318 | p { | ||
| 319 | color: #fff; | ||
| 320 | } | ||
| 321 | } | ||
| 322 | |||
| 323 | .item-body { | ||
| 324 | h3 { | ||
| 325 | color: var(--el-color-primary); | ||
| 326 | } | ||
| 327 | } | ||
| 328 | |||
| 329 | a { | ||
| 330 | filter: none | ||
| 331 | } | ||
| 332 | } | ||
| 333 | } | ||
| 334 | .topBanner {height:500px; | ||
| 335 | :deep(.el-carousel__container) { | ||
| 336 | height: 100%; | ||
| 337 | } | ||
| 338 | } | ||
| 339 | .forWei { | ||
| 340 | display: none; | ||
| 341 | } | ||
| 342 | |||
| 343 | @media (max-width: 800px) { | ||
| 344 | .infoPart{padding: 0;} | ||
| 345 | .topBannerbox { | ||
| 346 | background: #fff; | ||
| 347 | padding: 1px; | ||
| 348 | |||
| 349 | .el-carousel { | ||
| 350 | --el-carousel-indicator-height: 4px; | ||
| 351 | --el-carousel-indicator-width: 4px; | ||
| 352 | } | ||
| 353 | } | ||
| 354 | .topBanner { | ||
| 355 | height: 160px; | ||
| 356 | border-radius: 6px; | ||
| 357 | margin: 10px; | ||
| 358 | h3{text-align: left;font-size: 15px;padding: 30px 15px 20px; | ||
| 359 | } | ||
| 360 | :deep(.el-carousel__indicators--horizontal){left: auto;right: 0; | ||
| 361 | bottom: 12px; | ||
| 362 | } | ||
| 363 | :deep(.el-carousel__button){border-radius: 5px;} | ||
| 364 | :deep(.el-carousel__indicator.is-active button){width: 12px;} | ||
| 365 | |||
| 366 | h3 { | ||
| 367 | font-size: 14px; | ||
| 368 | } | ||
| 369 | } | ||
| 370 | } | ||
| 371 | </style> |
| ... | @@ -3,7 +3,7 @@ | ... | @@ -3,7 +3,7 @@ |
| 3 | <div class="box"> | 3 | <div class="box"> |
| 4 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> | 4 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> |
| 5 | <div class="lineHead"> | 5 | <div class="lineHead"> |
| 6 | <h3>全部{{ kindName }}</h3> | 6 | <h3>{{ language==0?'全部':'All' }} {{ kindName }}</h3> |
| 7 | </div> | 7 | </div> |
| 8 | <div class="infoPart"> | 8 | <div class="infoPart"> |
| 9 | <div class="newsBlock"> | 9 | <div class="newsBlock"> |
| ... | @@ -18,12 +18,12 @@ | ... | @@ -18,12 +18,12 @@ |
| 18 | <div class="item-body"> | 18 | <div class="item-body"> |
| 19 | <h3 v-html="n.name" /> | 19 | <h3 v-html="n.name" /> |
| 20 | <p v-html="n.subName"/> | 20 | <p v-html="n.subName"/> |
| 21 | <a class="go">查看详情 | 21 | <a class="go">{{ language==0?'查看详情':'Detail' }} |
| 22 | <el-icon class="rotate90_180"><sort-down/></el-icon> | 22 | <el-icon class="rotate90_180"><sort-down/></el-icon> |
| 23 | </a> | 23 | </a> |
| 24 | </div> | 24 | </div> |
| 25 | </div> | 25 | </div> |
| 26 | <el-empty v-if="newsList.length == 0" description="暂无数据" /> | 26 | <el-empty v-if="newsList.length == 0" /> |
| 27 | 27 | ||
| 28 | <div v-if="total>9" class="pc-page-box"> | 28 | <div v-if="total>9" class="pc-page-box"> |
| 29 | <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />--> | 29 | <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />--> |
| ... | @@ -44,7 +44,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' | ... | @@ -44,7 +44,8 @@ import { ArrowRight, Search } from '@element-plus/icons-vue' |
| 44 | import { onMounted, ref } from 'vue' | 44 | import { onMounted, ref } from 'vue' |
| 45 | import { getNewsListById } from '@/apiPc/webSite' | 45 | import { getNewsListById } from '@/apiPc/webSite' |
| 46 | import { useRoute, useRouter } from 'vue-router' | 46 | import { useRoute, useRouter } from 'vue-router' |
| 47 | // import Pagination from '@/components/Pagination' | 47 | import {useStorage} from "@vueuse/core/index"; |
| 48 | const language = useStorage('language', 0) | ||
| 48 | const route = useRoute() | 49 | const route = useRoute() |
| 49 | const router = useRouter() | 50 | const router = useRouter() |
| 50 | const kindName = ref('') | 51 | const kindName = ref('') | ... | ... |
src/viewsPc/news/list_en.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box"> | ||
| 4 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> | ||
| 5 | <div class="lineHead"> | ||
| 6 | <h3>All {{ kindName }}</h3> | ||
| 7 | </div> | ||
| 8 | <div class="infoPart"> | ||
| 9 | <div class="newsBlock"> | ||
| 10 | <div v-for="(n,i) in newsList" :key="i" class="item" @click="goDetail(n)"> | ||
| 11 | <div class="date"> | ||
| 12 | <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> | ||
| 13 | <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> | ||
| 14 | </div> | ||
| 15 | <div v-if="n.picUrl" class="imgbox"> | ||
| 16 | <img :src="fillImgUrl_webSite(n.picUrl)"> | ||
| 17 | </div> | ||
| 18 | <div class="item-body"> | ||
| 19 | <h3 v-html="n.name" /> | ||
| 20 | <p v-html="n.subName" /> | ||
| 21 | <a class="go">Detail | ||
| 22 | <el-icon class="rotate90_180"><sort-down/></el-icon> | ||
| 23 | </a> | ||
| 24 | </div> | ||
| 25 | </div> | ||
| 26 | <el-empty v-if="newsList.length == 0" description="no data" /> | ||
| 27 | |||
| 28 | <div v-if="total>9" class="pc-page-box"> | ||
| 29 | <!-- <el-pagination @current-change="getList" layout="prev, pager, next" :total="total" />--> | ||
| 30 | <PaginationPc | ||
| 31 | v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" | ||
| 32 | @pagination="getList" | ||
| 33 | /> | ||
| 34 | </div> | ||
| 35 | </div> | ||
| 36 | </div> | ||
| 37 | </el-card> | ||
| 38 | |||
| 39 | </div> | ||
| 40 | </div> | ||
| 41 | </template> | ||
| 42 | <script setup> | ||
| 43 | import { ArrowRight, Search } from '@element-plus/icons-vue' | ||
| 44 | import { onMounted, ref } from 'vue' | ||
| 45 | import { getNewsListById } from '@/apiPc/webSite' | ||
| 46 | import { useRoute, useRouter } from 'vue-router' | ||
| 47 | // import Pagination from '@/components/Pagination' | ||
| 48 | const route = useRoute() | ||
| 49 | const router = useRouter() | ||
| 50 | const kindName = ref('') | ||
| 51 | const total = ref(0) | ||
| 52 | const list = ref([]) | ||
| 53 | const newsList = ref([]) | ||
| 54 | const query = ref({ | ||
| 55 | pageSize: 10, | ||
| 56 | pageNum: 1 | ||
| 57 | }) | ||
| 58 | onMounted(() => { | ||
| 59 | console.log(route) | ||
| 60 | query.value.sortId = route.params.id | ||
| 61 | kindName.value = route.query.kindName | ||
| 62 | getList() | ||
| 63 | }) | ||
| 64 | |||
| 65 | const getList = () => { | ||
| 66 | console.log(query.value) | ||
| 67 | getNewsListById(query.value).then(res => { | ||
| 68 | newsList.value = res.rows | ||
| 69 | total.value = res.total | ||
| 70 | }) | ||
| 71 | } | ||
| 72 | |||
| 73 | const goDetail = (n) => { | ||
| 74 | if (n.isOut == '1') { | ||
| 75 | window.open(n.jumpUrl) | ||
| 76 | } else { | ||
| 77 | window.open(router.resolve({ | ||
| 78 | path: `/news/detail/${n.noteId}` | ||
| 79 | }).href) | ||
| 80 | |||
| 81 | // router.push({ | ||
| 82 | // path: `/news/detail/${n.noteId}` | ||
| 83 | // }) | ||
| 84 | } | ||
| 85 | } | ||
| 86 | </script> | ||
| 87 | <style lang="scss" scoped> | ||
| 88 | .flexBody { | ||
| 89 | display: flex; | ||
| 90 | align-items: center; | ||
| 91 | |||
| 92 | .el-form-item { | ||
| 93 | margin-bottom: 0 | ||
| 94 | } | ||
| 95 | } | ||
| 96 | |||
| 97 | .infoPart { | ||
| 98 | padding: 20px; | ||
| 99 | flex: 1; | ||
| 100 | |||
| 101 | & > h3 { | ||
| 102 | font-size: 24px; | ||
| 103 | color: var(--el-color-primary); | ||
| 104 | } | ||
| 105 | } | ||
| 106 | |||
| 107 | .firstItem { | ||
| 108 | background: #FAFAFA; | ||
| 109 | } | ||
| 110 | |||
| 111 | .searchPark { | ||
| 112 | background: #F6F6F6; | ||
| 113 | } | ||
| 114 | |||
| 115 | |||
| 116 | .topBanner {height:500px; | ||
| 117 | :deep(.el-carousel__container) { | ||
| 118 | height: 100%; | ||
| 119 | } | ||
| 120 | } | ||
| 121 | .forWei { | ||
| 122 | display: none; | ||
| 123 | } | ||
| 124 | |||
| 125 | @media (max-width: 800px) { | ||
| 126 | |||
| 127 | //.infoPart{padding: 0;} | ||
| 128 | .topBannerbox { | ||
| 129 | background: #fff; | ||
| 130 | padding: 1px; | ||
| 131 | |||
| 132 | .el-carousel { | ||
| 133 | --el-carousel-indicator-height: 4px; | ||
| 134 | --el-carousel-indicator-width: 4px; | ||
| 135 | } | ||
| 136 | } | ||
| 137 | .topBanner { | ||
| 138 | height: 160px; | ||
| 139 | border-radius: 6px; | ||
| 140 | margin: 10px; | ||
| 141 | h3{text-align: left;font-size: 15px;padding: 30px 15px 20px; | ||
| 142 | } | ||
| 143 | :deep(.el-carousel__indicators--horizontal){left: auto;right: 0; | ||
| 144 | bottom: 12px; | ||
| 145 | } | ||
| 146 | :deep(.el-carousel__button){border-radius: 5px;} | ||
| 147 | :deep(.el-carousel__indicator.is-active button){width: 12px;} | ||
| 148 | |||
| 149 | h3 { | ||
| 150 | font-size: 14px; | ||
| 151 | } | ||
| 152 | } | ||
| 153 | .newsBlock{ | ||
| 154 | .item{flex-direction: column;margin: 0 0 40px;padding: 0; | ||
| 155 | .date{position: absolute;top: 20px} | ||
| 156 | } | ||
| 157 | .imgbox{width: 100%;height: auto;margin: 0 0 20px} | ||
| 158 | } | ||
| 159 | } | ||
| 160 | </style> |
| ... | @@ -4,7 +4,8 @@ | ... | @@ -4,7 +4,8 @@ |
| 4 | 4 | ||
| 5 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> | 5 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> |
| 6 | <div class="lineHead"> | 6 | <div class="lineHead"> |
| 7 | <h3>全部通知公告</h3> | 7 | <h3 v-if="language==0">全部通知公告</h3> |
| 8 | <h3 v-else> NOTICE </h3> | ||
| 8 | </div> | 9 | </div> |
| 9 | <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">--> | 10 | <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">--> |
| 10 | <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />--> | 11 | <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />--> |
| ... | @@ -17,9 +18,9 @@ | ... | @@ -17,9 +18,9 @@ |
| 17 | <p>{{ n.belongTime }}</p> | 18 | <p>{{ n.belongTime }}</p> |
| 18 | </div> | 19 | </div> |
| 19 | <div class="item-body"> | 20 | <div class="item-body"> |
| 20 | <h3 class="esp_2"><span class="istop">置顶</span>{{n.name}}</h3> | 21 | <h3 class="esp_2"><span class="istop">{{ language==0?'置顶':'TOP' }}</span>{{n.name}}</h3> |
| 21 | </div> | 22 | </div> |
| 22 | <a class="go">查看详情 ⇀</a> | 23 | <a class="go">{{ language==0?'查看详情':'DETAIL' }} ⇀</a> |
| 23 | </div> | 24 | </div> |
| 24 | </el-col> | 25 | </el-col> |
| 25 | <!-- <el-col :lg="8" :xs="24" class="forPc">--> | 26 | <!-- <el-col :lg="8" :xs="24" class="forPc">--> |
| ... | @@ -72,7 +73,7 @@ | ... | @@ -72,7 +73,7 @@ |
| 72 | <div v-if="total>8" class="pc-page-box"> | 73 | <div v-if="total>8" class="pc-page-box"> |
| 73 | <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" /> | 74 | <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" /> |
| 74 | </div> | 75 | </div> |
| 75 | <el-empty v-if="newsList.length == 0" description="暂无数据" /> | 76 | <el-empty v-if="newsList.length == 0" /> |
| 76 | </div> | 77 | </div> |
| 77 | </el-card> | 78 | </el-card> |
| 78 | 79 | ||
| ... | @@ -81,9 +82,11 @@ | ... | @@ -81,9 +82,11 @@ |
| 81 | </template> | 82 | </template> |
| 82 | <script setup> | 83 | <script setup> |
| 83 | import { ArrowRight, Search } from '@element-plus/icons-vue' | 84 | import { ArrowRight, Search } from '@element-plus/icons-vue' |
| 85 | const language = useStorage('language', 0) | ||
| 84 | import { onMounted, ref } from 'vue' | 86 | import { onMounted, ref } from 'vue' |
| 85 | import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite' | 87 | import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite' |
| 86 | import { useRouter } from 'vue-router' | 88 | import { useRouter } from 'vue-router' |
| 89 | import {useStorage} from "@vueuse/core/index"; | ||
| 87 | const router = useRouter() | 90 | const router = useRouter() |
| 88 | const activeName = ref(0) | 91 | const activeName = ref(0) |
| 89 | const list = ref([]) | 92 | const list = ref([]) |
| ... | @@ -100,6 +103,9 @@ onMounted(() => { | ... | @@ -100,6 +103,9 @@ onMounted(() => { |
| 100 | }) | 103 | }) |
| 101 | 104 | ||
| 102 | const getList = () => { | 105 | const getList = () => { |
| 106 | if(language.value==1){ | ||
| 107 | query.value.sortId=20000001 | ||
| 108 | } | ||
| 103 | getNewsListById(query.value).then(res => { | 109 | getNewsListById(query.value).then(res => { |
| 104 | newsList.value = res.rows | 110 | newsList.value = res.rows |
| 105 | total.value = res.total | 111 | total.value = res.total | ... | ... |
src/viewsPc/notice/index_en.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box"> | ||
| 4 | |||
| 5 | <el-card class="mt20 mb20" :body-style="{'padding':'0'}"> | ||
| 6 | <div class="lineHead"> | ||
| 7 | <h3> NOTICE </h3> | ||
| 8 | </div> | ||
| 9 | <!-- <el-tabs v-model="activeName" @tab-change="changeTab" @tab-click="clickTab">--> | ||
| 10 | <!-- <el-tab-pane v-for="(tab,index) in list" :key="index" :label="tab.name" :name="index" />--> | ||
| 11 | <!-- </el-tabs>--> | ||
| 12 | <div class="pd20"> | ||
| 13 | <el-row class="mb20"> | ||
| 14 | <el-col :lg="24" :xs="24"> | ||
| 15 | <div v-for="(n,index) in newsList?.slice(0,1)" v-show="index<1" :key="index" class="firstItem" @click="goDetail(n)"> | ||
| 16 | <div class="date"> | ||
| 17 | <p>{{ n.belongTime }}</p> | ||
| 18 | </div> | ||
| 19 | <div class="item-body"> | ||
| 20 | <h3 class="esp_2"><span class="istop">TOP</span>{{n.name}}</h3> | ||
| 21 | </div> | ||
| 22 | <a class="go">DETAIL ⇀</a> | ||
| 23 | </div> | ||
| 24 | </el-col> | ||
| 25 | <!-- <el-col :lg="8" :xs="24" class="forPc">--> | ||
| 26 | <!-- <div class="searchPark">--> | ||
| 27 | <!-- <h3>通知搜索</h3>--> | ||
| 28 | <!-- <el-form>--> | ||
| 29 | <!-- <el-form-item>--> | ||
| 30 | <!-- <div class="flexformItem">--> | ||
| 31 | <!-- <el-date-picker--> | ||
| 32 | <!-- v-model="query.year"--> | ||
| 33 | <!-- class="mr10"--> | ||
| 34 | <!-- type="year" value-format="YYYY"--> | ||
| 35 | <!-- placeholder="选择年份" @change="getList"--> | ||
| 36 | <!-- />--> | ||
| 37 | <!-- <el-date-picker--> | ||
| 38 | <!-- v-model="query.month"--> | ||
| 39 | <!-- format="MM" value-format="MM"--> | ||
| 40 | <!-- type="month"--> | ||
| 41 | <!-- placeholder="选择月份" @change="getList"--> | ||
| 42 | <!-- />--> | ||
| 43 | <!-- </div>--> | ||
| 44 | |||
| 45 | <!-- </el-form-item>--> | ||
| 46 | <!-- <el-form-item>--> | ||
| 47 | <!-- <el-input--> | ||
| 48 | <!-- v-model="query.name"--> | ||
| 49 | <!-- placeholder="输入关键字"--> | ||
| 50 | <!-- :suffix-icon="Search" @change="getList"--> | ||
| 51 | <!-- />--> | ||
| 52 | <!-- </el-form-item>--> | ||
| 53 | <!-- </el-form>--> | ||
| 54 | <!-- </div>--> | ||
| 55 | <!-- </el-col>--> | ||
| 56 | </el-row> | ||
| 57 | |||
| 58 | <div class="newsLine"> | ||
| 59 | |||
| 60 | |||
| 61 | <div v-for="(n,index) in newsList" v-show="index>0" :key="index" class="item" @click=" goDetail(n)"> | ||
| 62 | <div class="date"> | ||
| 63 | <div class="day">{{ n.belongTime?.substring(8, 10) }}</div> | ||
| 64 | <p>{{ n.belongTime?.substring(0, 7).replace(/-/g, '/') }}</p> | ||
| 65 | </div> | ||
| 66 | <div class="item-body"> | ||
| 67 | <h3 v-html="n.name" /> | ||
| 68 | </div> | ||
| 69 | <a class="go" /> | ||
| 70 | </div> | ||
| 71 | </div> | ||
| 72 | <div v-if="total>8" class="pc-page-box"> | ||
| 73 | <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" /> | ||
| 74 | </div> | ||
| 75 | <el-empty v-if="newsList.length == 0" description="暂无数据" /> | ||
| 76 | </div> | ||
| 77 | </el-card> | ||
| 78 | |||
| 79 | </div> | ||
| 80 | </div> | ||
| 81 | </template> | ||
| 82 | <script setup> | ||
| 83 | import { ArrowRight, Search } from '@element-plus/icons-vue' | ||
| 84 | import { onMounted, ref } from 'vue' | ||
| 85 | import { getNewsListById, getNoticeSorts } from '@/apiPc/webSite' | ||
| 86 | import { useRouter } from 'vue-router' | ||
| 87 | const router = useRouter() | ||
| 88 | const activeName = ref(0) | ||
| 89 | const list = ref([]) | ||
| 90 | const newsList = ref([]) | ||
| 91 | const nowTab = ref({}) | ||
| 92 | const total = ref(0) | ||
| 93 | const query = ref({ | ||
| 94 | pageSize: 10, | ||
| 95 | pageNum: 1, | ||
| 96 | sortId:20000001 | ||
| 97 | }) | ||
| 98 | onMounted(() => { | ||
| 99 | getList() | ||
| 100 | }) | ||
| 101 | |||
| 102 | const getList = () => { | ||
| 103 | getNewsListById(query.value).then(res => { | ||
| 104 | newsList.value = res.rows | ||
| 105 | total.value = res.total | ||
| 106 | if (query.value.name) { | ||
| 107 | const pattern = new RegExp(query.value.name, 'gi') | ||
| 108 | for (var n of newsList.value) { | ||
| 109 | n.name = n.name.replace(pattern, `<span class="highlight">$&</span>`) | ||
| 110 | n.subName = n.name.replace(pattern, `<span class="highlight">$&</span>`) | ||
| 111 | } | ||
| 112 | } | ||
| 113 | }) | ||
| 114 | } | ||
| 115 | const clickTab = (pane, ev) => { | ||
| 116 | console.log(pane, ev) | ||
| 117 | } | ||
| 118 | const goDetail = (n) => { | ||
| 119 | if (n.isOut == '1') { | ||
| 120 | window.open(n.jumpUrl) | ||
| 121 | } else { | ||
| 122 | router.push({ | ||
| 123 | path: `/news/detail/${n.noteId}` | ||
| 124 | }) | ||
| 125 | } | ||
| 126 | } | ||
| 127 | |||
| 128 | </script> | ||
| 129 | <style lang="scss" scoped> | ||
| 130 | |||
| 131 | .infoPart{padding: 20px; flex: 1; | ||
| 132 | &>h3{ | ||
| 133 | font-size: 24px; | ||
| 134 | color: var(--el-color-primary);} | ||
| 135 | } | ||
| 136 | .firstItem{cursor: pointer; | ||
| 137 | background: #F8F4FF;height: 100%;padding: 10px 20px; | ||
| 138 | .date{font-weight: bold;transform: scaleX(0.7);transform-origin: left; | ||
| 139 | font-size: 18px; | ||
| 140 | color: var(--el-color-primary);} | ||
| 141 | h3{margin: 10px 0; | ||
| 142 | font-size: 22px;} | ||
| 143 | .go{color: var(--el-color-primary); | ||
| 144 | font-size: 14px;padding: 0 0 5px;} | ||
| 145 | } | ||
| 146 | |||
| 147 | |||
| 148 | .newsLine{ | ||
| 149 | .item{display: flex;position: relative;width: 100%;height: 90px; | ||
| 150 | align-items: center;cursor: pointer;border-bottom: 1px dashed #EEEEEE; | ||
| 151 | .date{width: 60px;height: 60px;text-align: center;background: #FAFAFA;margin: 0 10px; | ||
| 152 | .day{color: var(--el-color-primary);transform: scaleX(0.7);font-weight: bold;font-size: 24px;} | ||
| 153 | p{font-size: 14px;margin: 0;transform: scaleX(0.7);font-weight: bold;color: #7B7F83;} | ||
| 154 | } | ||
| 155 | .item-body{width: 60%; | ||
| 156 | h3{padding: 0 10px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;font-size: 18px;color: #000000;} | ||
| 157 | } | ||
| 158 | .go{background: url("@/assets/v1/about/go.png") no-repeat center;background-size: contain; | ||
| 159 | position: absolute;width: 30px;height: 30px;right: 10px; | ||
| 160 | filter:grayscale(1); | ||
| 161 | } | ||
| 162 | } | ||
| 163 | .item:hover{background: #F8F4FF; | ||
| 164 | .date{ | ||
| 165 | background: var(--el-color-primary); | ||
| 166 | .day{color: #fff;} | ||
| 167 | p{color: #fff;} | ||
| 168 | } | ||
| 169 | .item-body{ | ||
| 170 | h3{color: var(--el-color-primary);} | ||
| 171 | } | ||
| 172 | } | ||
| 173 | } | ||
| 174 | |||
| 175 | @media (max-width: 500px) { | ||
| 176 | .box{width: 100%} | ||
| 177 | .forWei { | ||
| 178 | display: block; | ||
| 179 | } | ||
| 180 | .forPc{display: none} | ||
| 181 | :deep(.el-tabs__nav-scroll){overflow: auto;} | ||
| 182 | :deep(.el-card__body){padding: 10px;} | ||
| 183 | .flexBody{display: block;background: transparent;} | ||
| 184 | .infoPart{background: #fff;padding: 10px;margin:0 15px} | ||
| 185 | .firstItem{padding: 10px 20px; | ||
| 186 | .date{ | ||
| 187 | font-size: 14px;} | ||
| 188 | h3{margin: 10px 0; | ||
| 189 | font-size: 14px;} | ||
| 190 | .go{font-size: 12px;} | ||
| 191 | } | ||
| 192 | .newsLine{ | ||
| 193 | .item{height: 50px; | ||
| 194 | .date{height: 34px;width: 44px;margin: 0; | ||
| 195 | .day{font-size: 16px;} | ||
| 196 | p{font-size: 12px;} | ||
| 197 | } | ||
| 198 | .item-body{width: 80%; | ||
| 199 | h3{font-size: 14px;} | ||
| 200 | } | ||
| 201 | } | ||
| 202 | .go{display: none;} | ||
| 203 | |||
| 204 | } | ||
| 205 | } | ||
| 206 | </style> |
| ... | @@ -39,10 +39,10 @@ | ... | @@ -39,10 +39,10 @@ |
| 39 | <el-form-item :label="language==1?'Age group':'年龄组'"> | 39 | <el-form-item :label="language==1?'Age group':'年龄组'"> |
| 40 | <el-input v-model="wdsfData.ageGroup" disabled/> | 40 | <el-input v-model="wdsfData.ageGroup" disabled/> |
| 41 | </el-form-item> | 41 | </el-form-item> |
| 42 | <el-form-item :label="language==1?'舞种':'Division'"> | 42 | <el-form-item :label="language==0?'舞种':'Division'"> |
| 43 | <el-input v-model="wdsfData.division" disabled/> | 43 | <el-input v-model="wdsfData.division" disabled/> |
| 44 | </el-form-item> | 44 | </el-form-item> |
| 45 | <el-form-item :label="language==1?'状态':'Status'"> | 45 | <el-form-item :label="language==0?'状态':'Status'"> |
| 46 | <el-input v-model="wdsfData.status" disabled/> | 46 | <el-input v-model="wdsfData.status" disabled/> |
| 47 | </el-form-item> | 47 | </el-form-item> |
| 48 | <div class="h30"></div> | 48 | <div class="h30"></div> |
| ... | @@ -63,15 +63,18 @@ | ... | @@ -63,15 +63,18 @@ |
| 63 | <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> | 63 | <el-radio value="1">{{ language == 0 ? '男' : 'male' }}</el-radio> |
| 64 | </el-radio-group> | 64 | </el-radio-group> |
| 65 | </el-form-item> | 65 | </el-form-item> |
| 66 | <el-form-item :label="language==0?'证件号':'Passport number'" required> | 66 | <el-form-item :label="language==0?'有效证件':'Valid Certificates Scanning Copy'" required> |
| 67 | <el-input v-model="wdsfData.passportNumber"/> | 67 | <file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false" |
| 68 | </el-form-item> | 68 | :button-text="language==0?'上传':'Upload'"/> |
| 69 | <el-form-item :label="language==0?'有效证件':'Passport File'" required> | ||
| 70 | <file-upload v-model="wdsfData.passportUrl" :limit="1" :is-show-tip="false" :button-text="'Upload'"/> | ||
| 71 | <div class="tip"> | 69 | <div class="tip"> |
| 72 | <span>用途</span> | 70 | <span v-if="language==0">请上传护照副本,用于认证 </span> |
| 71 | <span v-else>Please upload a passport copy for authentication</span> | ||
| 73 | </div> | 72 | </div> |
| 74 | </el-form-item> | 73 | </el-form-item> |
| 74 | <el-form-item :label="language==0?'证件号':'Passport number'" required> | ||
| 75 | <el-input v-model="wdsfData.passportNumber"/> | ||
| 76 | </el-form-item> | ||
| 77 | |||
| 75 | <el-form-item :label="language==0?'出生日期':'Birthday'"> | 78 | <el-form-item :label="language==0?'出生日期':'Birthday'"> |
| 76 | <el-date-picker | 79 | <el-date-picker |
| 77 | v-model="wdsfData.birthday" | 80 | v-model="wdsfData.birthday" |
| ... | @@ -218,9 +221,9 @@ function sendsmsMsg() { | ... | @@ -218,9 +221,9 @@ function sendsmsMsg() { |
| 218 | function checkCard() { | 221 | function checkCard() { |
| 219 | if (!form.value.card) { | 222 | if (!form.value.card) { |
| 220 | if (language.value == 0) { | 223 | if (language.value == 0) { |
| 221 | ElMessage.warning('请填写WDSF卡号') | 224 | ElMessage.warning('WDSF会员号错误') |
| 222 | } else { | 225 | } else { |
| 223 | ElMessage.warning('Please fill in your WDSF code') | 226 | ElMessage.warning('WDSF MIN is Error') |
| 224 | } | 227 | } |
| 225 | return | 228 | return |
| 226 | } | 229 | } |
| ... | @@ -252,9 +255,9 @@ function codeSuccess(msg) { | ... | @@ -252,9 +255,9 @@ function codeSuccess(msg) { |
| 252 | if (wdsfData.value.wdsfFlag == '0') { | 255 | if (wdsfData.value.wdsfFlag == '0') { |
| 253 | isCodeTrue.value = 0 | 256 | isCodeTrue.value = 0 |
| 254 | if (language.value == 0) { | 257 | if (language.value == 0) { |
| 255 | ElMessage.warning('WDSF卡号错误') | 258 | ElMessage.warning('WDSF会员号错误') |
| 256 | } else { | 259 | } else { |
| 257 | ElMessage.warning('WDSF ID is Error') | 260 | ElMessage.warning('WDSF MIN is Error') |
| 258 | } | 261 | } |
| 259 | } | 262 | } |
| 260 | }).catch(err => { | 263 | }).catch(err => { |
| ... | @@ -289,16 +292,12 @@ function goBack() { | ... | @@ -289,16 +292,12 @@ function goBack() { |
| 289 | } | 292 | } |
| 290 | 293 | ||
| 291 | function next() { | 294 | function next() { |
| 292 | // if (!wdsfData.value.birthday) { | ||
| 293 | // ElMessage.warning('Please fill in your birthday') | ||
| 294 | // return | ||
| 295 | // } | ||
| 296 | if (!wdsfData.value.passportNumber) { | 295 | if (!wdsfData.value.passportNumber) { |
| 297 | ElMessage.warning('Please fill in your passport number') | 296 | ElMessage.warning(language.value == 0 ?'请填写护照号':'Please fill in your passport number') |
| 298 | return | 297 | return |
| 299 | } | 298 | } |
| 300 | if (!wdsfData.value.passportUrl) { | 299 | if (!wdsfData.value.passportUrl) { |
| 301 | ElMessage.warning('Please upload your passport file') | 300 | ElMessage.warning(language.value == 0 ? '请上传护照文件' :'Please upload your passport file') |
| 302 | return | 301 | return |
| 303 | } | 302 | } |
| 304 | if (wdsfData.value.personFlag == '0') { | 303 | if (wdsfData.value.personFlag == '0') { | ... | ... |
| ... | @@ -112,10 +112,9 @@ function verifyCode() { | ... | @@ -112,10 +112,9 @@ function verifyCode() { |
| 112 | function codeSuccess(msg) { | 112 | function codeSuccess(msg) { |
| 113 | console.log('验证通过' + msg); | 113 | console.log('验证通过' + msg); |
| 114 | isShow.value = false | 114 | isShow.value = false |
| 115 | isCodeTrue.value = true | ||
| 116 | counting.value = true | ||
| 117 | getCaptchaSms({account: form.value.account}).then(res => { | 115 | getCaptchaSms({account: form.value.account}).then(res => { |
| 118 | 116 | counting.value = true | |
| 117 | isCodeTrue.value = true | ||
| 119 | }) | 118 | }) |
| 120 | } | 119 | } |
| 121 | 120 | ||
| ... | @@ -144,6 +143,11 @@ const next = () => { | ... | @@ -144,6 +143,11 @@ const next = () => { |
| 144 | return | 143 | return |
| 145 | } | 144 | } |
| 146 | if (!isCodeTrue.value) { | 145 | if (!isCodeTrue.value) { |
| 146 | if (language.value == 0) { | ||
| 147 | ElMessage.warning('请发送验证码') | ||
| 148 | } else { | ||
| 149 | ElMessage.warning('Please send the verification code') | ||
| 150 | } | ||
| 147 | return | 151 | return |
| 148 | } | 152 | } |
| 149 | checkRegisterCode(form.value).then(res => { | 153 | checkRegisterCode(form.value).then(res => { | ... | ... |
| ... | @@ -25,12 +25,16 @@ | ... | @@ -25,12 +25,16 @@ |
| 25 | <el-form class="d-form" size="large" :model="form" ref="registerRef" | 25 | <el-form class="d-form" size="large" :model="form" ref="registerRef" |
| 26 | :rules="registerRules" label-width="120" :label-position="language==0?'left':'top'" | 26 | :rules="registerRules" label-width="120" :label-position="language==0?'left':'top'" |
| 27 | style="max-width: 500px;margin: auto"> | 27 | style="max-width: 500px;margin: auto"> |
| 28 | <el-form-item :label="language==0?'所属国家/地区':'Country'" required> | 28 | <el-form-item label="是否国家队" v-if="language==0"> |
| 29 | |||
| 30 | </el-form-item> | ||
| 31 | <el-form-item :label="language==0?'代表国家/地区':'Representing'" required prop="countryId"> | ||
| 29 | <el-select filterable v-model="form.countryId"> | 32 | <el-select filterable v-model="form.countryId"> |
| 30 | <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/> | 33 | <!-- <el-option v-for="item in countryList" :key="item.id" :label="language==0?item.name:item.enName" :value="item.id"/>--> |
| 34 | <el-option v-for="item in countryList" :key="item.id" :label="item.eoc||item.enName" :value="item.id"/> | ||
| 31 | </el-select> | 35 | </el-select> |
| 32 | </el-form-item> | 36 | </el-form-item> |
| 33 | <el-form-item :label="language==0?'详细地址':'Address'" required prop="address"> | 37 | <el-form-item :label="language==0?'详细地址':'Address'" prop="address"> |
| 34 | <el-cascader v-if="form.countryId == 240" | 38 | <el-cascader v-if="form.countryId == 240" |
| 35 | v-model="regionArr" | 39 | v-model="regionArr" |
| 36 | style="width: 100%;" | 40 | style="width: 100%;" |
| ... | @@ -39,24 +43,24 @@ | ... | @@ -39,24 +43,24 @@ |
| 39 | /> | 43 | /> |
| 40 | <el-input type="textarea" v-model="form.address" class="mt10"/> | 44 | <el-input type="textarea" v-model="form.address" class="mt10"/> |
| 41 | </el-form-item> | 45 | </el-form-item> |
| 42 | <el-form-item :label="language==0?'机构名称':'Institution Name'" required prop="teamName"> | 46 | <!-- <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required>--> |
| 47 | <!-- <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;">--> | ||
| 48 | <!-- <el-option :label="language==0?'普通院校':'School'" value="0" />--> | ||
| 49 | <!-- <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" />--> | ||
| 50 | <!-- <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" />--> | ||
| 51 | <!-- <el-option :label="language==0?'地方协会':'Local Association'" value="3" />--> | ||
| 52 | <!-- <el-option :label="language==0?'国家协会':'National Association'" value="4" />--> | ||
| 53 | <!-- </el-select>--> | ||
| 54 | <!-- </el-form-item>--> | ||
| 55 | <el-form-item :label="language==0?'团体名称':'Team Name'" required prop="teamName"> | ||
| 43 | <el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/> | 56 | <el-input type="text" v-model="form.teamName" :placeholder="language==0?'请输入内容':''"/> |
| 44 | </el-form-item> | 57 | </el-form-item> |
| 45 | <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag"> | 58 | <!-- <el-form-item :label="language==0?'专业/业余':'Professional/Amateur'" required prop="majorFlag">--> |
| 46 | <el-select v-model="form.majorFlag"> | 59 | <!-- <el-select v-model="form.majorFlag">--> |
| 47 | <el-option :label="language==0?'专业':'Professional'" value="1" /> | 60 | <!-- <el-option :label="language==0?'专业':'Professional'" value="1" />--> |
| 48 | <el-option :label="language==0?'业余':'Amateur'" value="0" /> | 61 | <!-- <el-option :label="language==0?'业余':'Amateur'" value="0" />--> |
| 49 | </el-select> | 62 | <!-- </el-select>--> |
| 50 | </el-form-item> | 63 | <!-- </el-form-item>--> |
| 51 | <el-form-item :label="language==0?'团体类型':'Group type'" prop="type" required> | ||
| 52 | <el-select v-model="form.type" :placeholder="language==0?'请选择团体类型':''" style="width: 100%;"> | ||
| 53 | <el-option :label="language==0?'普通院校':'School'" value="0" /> | ||
| 54 | <el-option :label="language==0?'专业舞蹈学校':'Professional dance school'" value="1" /> | ||
| 55 | <el-option :label="language==0?'培训机构/俱乐部':'Company/Club'" value="2" /> | ||
| 56 | <el-option :label="language==0?'地方协会':'Local Association'" value="3" /> | ||
| 57 | <el-option :label="language==0?'国家协会':'National Association'" value="4" /> | ||
| 58 | </el-select> | ||
| 59 | </el-form-item> | ||
| 60 | <el-form-item :label="language==0?'联系人姓名':'Contact Name'" required prop="contactName"> | 64 | <el-form-item :label="language==0?'联系人姓名':'Contact Name'" required prop="contactName"> |
| 61 | <el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/> | 65 | <el-input type="text" v-model="form.contactName" :placeholder="language==0?'请输入内容':''"/> |
| 62 | </el-form-item> | 66 | </el-form-item> |
| ... | @@ -66,7 +70,7 @@ | ... | @@ -66,7 +70,7 @@ |
| 66 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> | 70 | <el-form-item :label="language==0?'联系人邮箱':'Contact Email'" required prop="contactEmail"> |
| 67 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> | 71 | <el-input v-model="form.contactEmail" type="email" :placeholder="language==0?'请输入内容':''"/> |
| 68 | </el-form-item> | 72 | </el-form-item> |
| 69 | <el-form-item prop="photo" required :label="language==0?'机构LOGO':'Organizational photos'"> | 73 | <el-form-item prop="photo" :label="language==0?'机构LOGO':'Organizational photos'"> |
| 70 | <ImageUpload2 | 74 | <ImageUpload2 |
| 71 | v-model="form.photo" :crop-height="200" :crop-width="200" :limit="1" | 75 | v-model="form.photo" :crop-height="200" :crop-width="200" :limit="1" |
| 72 | :is-show-tip="false" | 76 | :is-show-tip="false" |
| ... | @@ -137,14 +141,14 @@ const registerRules = ref( | ... | @@ -137,14 +141,14 @@ const registerRules = ref( |
| 137 | {required: true, trigger: 'blur', message: '请输入您的密码'}, | 141 | {required: true, trigger: 'blur', message: '请输入您的密码'}, |
| 138 | {min: 6, max: 16, message: '用户密码长度必须介于 6 和 16 之间', trigger: 'blur'} | 142 | {min: 6, max: 16, message: '用户密码长度必须介于 6 和 16 之间', trigger: 'blur'} |
| 139 | ], | 143 | ], |
| 140 | confirmPassword: [{required: true, trigger: 'blur', message: '请再次输入您的密码'},], | 144 | confirmPassword: [{required: true, trigger: 'blur'},], |
| 141 | countryId: [{required: true, trigger: 'blur', message: '请选择所属国家/地区'},], | 145 | countryId: [{required: true, trigger: 'blur'},], |
| 142 | address: [{required: true, trigger: 'blur', message: '请输入地址'},], | 146 | // address: [{required: true, trigger: 'blur', message: '请输入地址'},], |
| 143 | teamName: [{required: true, trigger: 'blur', message: '请输入'},], | 147 | teamName: [{required: true, trigger: 'blur'},], |
| 144 | contactName: [{required: true, trigger: 'blur', message: '请输入'},], | 148 | contactName: [{required: true, trigger: 'blur'},], |
| 145 | contactTel: [{required: true, trigger: 'blur', message: '请输入'},], | 149 | contactTel: [{required: true, trigger: 'blur'},], |
| 146 | contactEmail: [{required: true, trigger: 'blur', message: '请输入'},], | 150 | contactEmail: [{required: true, trigger: 'blur'},], |
| 147 | photo: [{required: true, trigger: 'blur', message: '请上传'},], | 151 | // photo: [{required: true, trigger: 'blur', message: '请上传'},], |
| 148 | }) | 152 | }) |
| 149 | const vconfirmPassword = () => { | 153 | const vconfirmPassword = () => { |
| 150 | if (form.value.password !== form.value.confirmPassword) { | 154 | if (form.value.password !== form.value.confirmPassword) { |
| ... | @@ -178,11 +182,19 @@ const goStep3 = () => { | ... | @@ -178,11 +182,19 @@ const goStep3 = () => { |
| 178 | ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance') | 182 | ElMessage.warning(language.value == 0?'请勾选接受':'Please check the acceptance') |
| 179 | return | 183 | return |
| 180 | } | 184 | } |
| 181 | 185 | if (!form.value.password) { | |
| 186 | ElMessage.warning(language.value == 0?'请输入密码':'Please enter password') | ||
| 187 | return | ||
| 188 | } | ||
| 189 | if (!form.value.password) { | ||
| 190 | ElMessage.warning(language.value == 0?'请输入密码':'Please enter password') | ||
| 191 | return | ||
| 192 | } | ||
| 182 | loading.value = true | 193 | loading.value = true |
| 183 | delete form.value.confirmPassword | 194 | delete form.value.confirmPassword |
| 184 | form.value.regionId = regionArr.value.pop() | 195 | form.value.regionId = regionArr.value.pop() |
| 185 | form.value.username= props.accont | 196 | form.value.username= props.accont |
| 197 | console.log('pass') | ||
| 186 | match.pcRegisterTeam(form.value).then(res => { | 198 | match.pcRegisterTeam(form.value).then(res => { |
| 187 | setToken(res.data.token) | 199 | setToken(res.data.token) |
| 188 | loading.value = false | 200 | loading.value = false |
| ... | @@ -200,6 +212,9 @@ const showAgreeMent = () => { | ... | @@ -200,6 +212,9 @@ const showAgreeMent = () => { |
| 200 | } | 212 | } |
| 201 | onMounted(() => { | 213 | onMounted(() => { |
| 202 | console.log(props) | 214 | console.log(props) |
| 215 | if(props.accont.indexOf('@')>-1){ | ||
| 216 | form.value.contactEmail=props.accont | ||
| 217 | } | ||
| 203 | }) | 218 | }) |
| 204 | </script> | 219 | </script> |
| 205 | 220 | ... | ... |
| ... | @@ -41,19 +41,19 @@ | ... | @@ -41,19 +41,19 @@ |
| 41 | <table class="table table-striped"> | 41 | <table class="table table-striped"> |
| 42 | <thead> | 42 | <thead> |
| 43 | <tr class="bg-lineg"> | 43 | <tr class="bg-lineg"> |
| 44 | <td>{{ language==0?'名次':'RANK' }}</td> | 44 | <td class="text-center">{{ language==0?'名次':'RANK' }}</td> |
| 45 | <td>{{ language==0?'组合':'COUPLE' }}</td> | 45 | <td class="text-center">{{ language==0?'组合':'COUPLE' }}</td> |
| 46 | <td width="100">{{ language==0?'国家':'COUNTRY' }}</td> | 46 | <td class="text-center w15">{{ language==0?'国家':'COUNTRY' }}</td> |
| 47 | <td width="120" class="text-center">START #</td> | 47 | <td class="text-center w15">START #</td> |
| 48 | <td width="120" class="text-center" v-if="index>0">BASE</td> | 48 | <td class="text-center w15" v-if="index>0">BASE</td> |
| 49 | <td width="120" class="text-center" v-if="index>0">POINTS</td> | 49 | <td class="text-center w15" v-if="index>0">POINTS</td> |
| 50 | </tr> | 50 | </tr> |
| 51 | </thead> | 51 | </thead> |
| 52 | <tbody> | 52 | <tbody> |
| 53 | <tr v-for="(l,kndex) in m.rows"> | 53 | <tr v-for="(l,kndex) in m.rows"> |
| 54 | <td>{{ l.RANK }}</td> | 54 | <td class="text-center">{{ l.RANK }}</td> |
| 55 | <td>{{ l.COUPLE}}</td> | 55 | <td class="text-center">{{ l.COUPLE}}</td> |
| 56 | <td>{{ l.COUNTRY }}</td> | 56 | <td class="text-center">{{ l.COUNTRY }}</td> |
| 57 | <td class="text-primary text-center">{{ l.START }}</td> | 57 | <td class="text-primary text-center">{{ l.START }}</td> |
| 58 | <td class="text-center" v-if="index>0">{{l.BASE}}</td> | 58 | <td class="text-center" v-if="index>0">{{l.BASE}}</td> |
| 59 | <td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td> | 59 | <td v-if="index>0" class="text-primary text-center">{{ l.POINTS }}</td> |
| ... | @@ -176,5 +176,5 @@ h3{background: #F5F0FF;margin: 0;padding: 10px 0; | ... | @@ -176,5 +176,5 @@ h3{background: #F5F0FF;margin: 0;padding: 10px 0; |
| 176 | } | 176 | } |
| 177 | } | 177 | } |
| 178 | } | 178 | } |
| 179 | 179 | .w15{width: 15%;} | |
| 180 | </style> | 180 | </style> | ... | ... |
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="panel-box"> | ||
| 4 | <h4 class="tran-h4">报名须知</h4> | ||
| 5 | <div class="pd20"> | ||
| 6 | <el-form-item label="附件下载:"> | ||
| 7 | <el-link :href="fillImgUrl_train(activity.signNoticeAttachment?.url)" target="_blank" type="primary">《报名须知》</el-link> | ||
| 8 | </el-form-item> | ||
| 9 | <el-form-item> | ||
| 10 | <el-checkbox v-model="checked" label="我确认已经仔细阅读报名须知" /> | ||
| 11 | </el-form-item> | ||
| 12 | </div> | ||
| 13 | |||
| 14 | </div> | ||
| 15 | <div class="panel-footer text-center"> | ||
| 16 | <el-button :disabled="!checked" type="primary" round @click="next">阅读并同意</el-button> | ||
| 17 | </div> | ||
| 18 | </div> | ||
| 19 | </template> | ||
| 20 | |||
| 21 | <script setup> | ||
| 22 | import { ref } from 'vue' | ||
| 23 | |||
| 24 | const emit = defineEmits(['next']) | ||
| 25 | |||
| 26 | defineProps({ | ||
| 27 | activity: { | ||
| 28 | type: Object, | ||
| 29 | default: () => {} | ||
| 30 | } | ||
| 31 | }) | ||
| 32 | const checked = ref(false) | ||
| 33 | |||
| 34 | function next() { | ||
| 35 | if (checked.value) { | ||
| 36 | emit('next') | ||
| 37 | } | ||
| 38 | } | ||
| 39 | |||
| 40 | </script> | ||
| 41 | |||
| 42 | <style scoped lang="scss"> | ||
| 43 | .panel-box{ | ||
| 44 | border:1px solid #F5766A; | ||
| 45 | } | ||
| 46 | </style> |
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="panel-box"> | ||
| 4 | <h3 class="train-h3">个人信息</h3> | ||
| 5 | <div class="panel-body"> | ||
| 6 | <el-form | ||
| 7 | ref="ruleFormRef" | ||
| 8 | label-width="100" | ||
| 9 | class="signForm" | ||
| 10 | :model="form" | ||
| 11 | style="width: 100%;" | ||
| 12 | > | ||
| 13 | <el-row> | ||
| 14 | <el-col :span="8" :offset="2"> | ||
| 15 | <el-form-item label=" " prop="photo" required> | ||
| 16 | <image-upload | ||
| 17 | v-model="form.photo" | ||
| 18 | disabled | ||
| 19 | class="threeFour" | ||
| 20 | :limit="1" | ||
| 21 | /> | ||
| 22 | </el-form-item> | ||
| 23 | </el-col> | ||
| 24 | <el-col :span="10"> | ||
| 25 | <el-form-item label="会员编号" prop="perCode" required> | ||
| 26 | <el-input | ||
| 27 | v-model="form.perCode" | ||
| 28 | readonly | ||
| 29 | placeholder="请输入会员编号" | ||
| 30 | /> | ||
| 31 | </el-form-item> | ||
| 32 | <el-form-item label="有效期" prop="validityDate" required> | ||
| 33 | <el-input | ||
| 34 | v-model="form.validityDate" | ||
| 35 | readonly | ||
| 36 | placeholder="请输入有效期" | ||
| 37 | /> | ||
| 38 | </el-form-item> | ||
| 39 | <el-form-item label="姓名" prop="name" required> | ||
| 40 | <el-input v-model="form.name" placeholder="请输入姓名" readonly /> | ||
| 41 | </el-form-item> | ||
| 42 | <el-form-item label="性别" prop="sex" required> | ||
| 43 | <el-radio-group v-model="form.sex" disabled> | ||
| 44 | <el-radio value="0" size="large">男</el-radio> | ||
| 45 | <el-radio value="1" size="large">女</el-radio> | ||
| 46 | </el-radio-group> | ||
| 47 | </el-form-item> | ||
| 48 | <el-form-item label="证件类型" prop="idcType" required> | ||
| 49 | <el-select | ||
| 50 | v-model="form.idcType" | ||
| 51 | disabled | ||
| 52 | style="width: 100%;" | ||
| 53 | placeholder="请选择证件类型" | ||
| 54 | > | ||
| 55 | <el-option | ||
| 56 | v-for="item in certificates" | ||
| 57 | :key="item.value" | ||
| 58 | :label="item.label" | ||
| 59 | :value="item.value" | ||
| 60 | /> | ||
| 61 | </el-select> | ||
| 62 | </el-form-item> | ||
| 63 | <el-form-item label="证件号码" prop="idcCode" required> | ||
| 64 | <el-input | ||
| 65 | v-model="form.idcCode" | ||
| 66 | readonly | ||
| 67 | placeholder="请输入证件号码" | ||
| 68 | /> | ||
| 69 | </el-form-item> | ||
| 70 | <el-form-item label="出生日期" prop="birth" required> | ||
| 71 | <el-date-picker | ||
| 72 | v-model="form.birth" | ||
| 73 | readonly | ||
| 74 | type="date" | ||
| 75 | format="YYYY-MM-DD" | ||
| 76 | value-format="YYYY-MM-DD" | ||
| 77 | placeholder="请选择出生日期" | ||
| 78 | style="width: 100%;" | ||
| 79 | /> | ||
| 80 | </el-form-item> | ||
| 81 | <el-form-item label="联系方式" prop="phone" required> | ||
| 82 | <el-input v-model="form.phone" placeholder="请输入联系方式" readonly /> | ||
| 83 | </el-form-item> | ||
| 84 | <el-form-item label="所在地区" prop="cityName" required> | ||
| 85 | <el-input v-model="form.cityName" placeholder="请输入所在地区" readonly /> | ||
| 86 | </el-form-item> | ||
| 87 | <el-form-item label="详细地址" prop="address" required> | ||
| 88 | <el-input v-model="form.address" placeholder="请输入详细地址" readonly /> | ||
| 89 | </el-form-item> | ||
| 90 | </el-col> | ||
| 91 | </el-row> | ||
| 92 | </el-form> | ||
| 93 | </div> | ||
| 94 | |||
| 95 | </div> | ||
| 96 | <div class="panel-footer text-center"> | ||
| 97 | <el-button class="back" type="" round @click="prev">上一步</el-button> | ||
| 98 | <el-button type="primary" round @click="next">下一步</el-button> | ||
| 99 | </div> | ||
| 100 | </div> | ||
| 101 | </template> | ||
| 102 | |||
| 103 | <script setup> | ||
| 104 | import { computed, ref } from 'vue' | ||
| 105 | |||
| 106 | |||
| 107 | const emit = defineEmits(['prev', 'next']) | ||
| 108 | |||
| 109 | const props = defineProps({ | ||
| 110 | personal: { | ||
| 111 | type: Object, | ||
| 112 | default: () => {} | ||
| 113 | } | ||
| 114 | }) | ||
| 115 | const form = computed(() => props.personal) | ||
| 116 | const certificates = ref([ | ||
| 117 | { | ||
| 118 | value: '0', | ||
| 119 | label: '居民身份证' | ||
| 120 | }, | ||
| 121 | { | ||
| 122 | value: '1', | ||
| 123 | label: '护照' | ||
| 124 | }, | ||
| 125 | { | ||
| 126 | value: '2', | ||
| 127 | label: '其他' | ||
| 128 | } | ||
| 129 | ]) | ||
| 130 | |||
| 131 | function prev() { | ||
| 132 | emit('prev') | ||
| 133 | } | ||
| 134 | |||
| 135 | function next() { | ||
| 136 | emit('next') | ||
| 137 | } | ||
| 138 | |||
| 139 | </script> | ||
| 140 | |||
| 141 | <style scope lang="scss"> | ||
| 142 | .panel-box{ | ||
| 143 | border:1px solid #F5766A; | ||
| 144 | padding:10px 20px; | ||
| 145 | } | ||
| 146 | .train-h3{ | ||
| 147 | font-size: 16px; | ||
| 148 | font-weight: 600; | ||
| 149 | color: var(--el-color-primary); | ||
| 150 | padding-left: 20px; | ||
| 151 | border-left: 3px solid var(--el-color-primary) ; | ||
| 152 | } | ||
| 153 | .back{ | ||
| 154 | border:1px solid var(--el-color-primary) ; | ||
| 155 | color:var(--el-color-primary) | ||
| 156 | } | ||
| 157 | |||
| 158 | .app-container { | ||
| 159 | padding: 0; | ||
| 160 | background: #f5f7f9; | ||
| 161 | } | ||
| 162 | |||
| 163 | .panel-footer .el-button--success { | ||
| 164 | background: linear-gradient(270deg, #39dba7, #38ef7d); | ||
| 165 | border: none; | ||
| 166 | padding: 0 40px; | ||
| 167 | font-size: 16px; | ||
| 168 | } | ||
| 169 | |||
| 170 | .signForm { | ||
| 171 | .el-form-item__label { | ||
| 172 | color: #4c5359; | ||
| 173 | } | ||
| 174 | } | ||
| 175 | |||
| 176 | .tip { | ||
| 177 | font-size: 13px; | ||
| 178 | color: #999; | ||
| 179 | margin: 10px 0; | ||
| 180 | |||
| 181 | i { | ||
| 182 | color: red; | ||
| 183 | margin: 0 4px 0 0; | ||
| 184 | } | ||
| 185 | } | ||
| 186 | |||
| 187 | .threeFour { | ||
| 188 | width: 100%; | ||
| 189 | } | ||
| 190 | |||
| 191 | :deep(.el-upload--picture-card) { | ||
| 192 | width: 120px; | ||
| 193 | height: 160px; | ||
| 194 | } | ||
| 195 | |||
| 196 | :deep(.el-upload-list--picture-card .el-upload-list__item) { | ||
| 197 | width: 120px; | ||
| 198 | height: 160px; | ||
| 199 | } | ||
| 200 | |||
| 201 | .red { | ||
| 202 | color: #f56c6c; | ||
| 203 | } | ||
| 204 | </style> |
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="panel-box"> | ||
| 4 | <h3 class="train-h3">培训信息</h3> | ||
| 5 | <div class="panel-body"> | ||
| 6 | <el-form | ||
| 7 | ref="formRef" | ||
| 8 | label-width="120px" | ||
| 9 | class="signForm" | ||
| 10 | :model="form" | ||
| 11 | :rules="rules" | ||
| 12 | style="width: 100%;" | ||
| 13 | > | ||
| 14 | <el-row :gutter="20"> | ||
| 15 | <el-col :span="12"> | ||
| 16 | <el-form-item label="所在单位名称" prop="unitName"> | ||
| 17 | <el-input v-model="form.unitName" placeholder="请输入所在单位名称" /> | ||
| 18 | </el-form-item> | ||
| 19 | </el-col> | ||
| 20 | <el-col :span="12"> | ||
| 21 | <el-form-item label="现任职务" prop="unitRole"> | ||
| 22 | <el-input v-model="form.unitRole" placeholder="请输入现任职务" /> | ||
| 23 | </el-form-item> | ||
| 24 | </el-col> | ||
| 25 | <el-col v-if="activity.invoiceFlag=='1'" :span="12"> | ||
| 26 | <el-form-item label="是否需要发票" prop="invoiceFlag" required> | ||
| 27 | <el-radio-group v-model="form.invoiceFlag"> | ||
| 28 | <el-radio value="1" size="large">是</el-radio> | ||
| 29 | <el-radio value="0" size="large">否</el-radio> | ||
| 30 | </el-radio-group> | ||
| 31 | </el-form-item> | ||
| 32 | </el-col> | ||
| 33 | <el-col v-if="activity.invoiceFlag=='1'" :span="12"> | ||
| 34 | <el-form-item v-if="form.invoiceFlag=='1'" label="发票形式" prop="invoiceType" required> | ||
| 35 | <el-radio-group v-model="form.invoiceType"> | ||
| 36 | <el-radio v-if="activity.invoiceType.indexOf('0')>-1" value="0" size="large">电子票</el-radio> | ||
| 37 | <el-radio v-if="activity.invoiceType.indexOf('1')>-1" value="1" size="large">纸质专票</el-radio> | ||
| 38 | <el-radio v-if="activity.invoiceType.indexOf('2')>-1" value="2" size="large">纸质普票</el-radio> | ||
| 39 | </el-radio-group> | ||
| 40 | </el-form-item> | ||
| 41 | </el-col> | ||
| 42 | <el-col> | ||
| 43 | <el-form-item v-if="activity.invoiceFlag=='1'" label="开票信息" prop="invoiceInfo"> | ||
| 44 | <el-input v-model="form.invoiceInfo" placeholder="请输入开票信息" /> | ||
| 45 | </el-form-item> | ||
| 46 | </el-col> | ||
| 47 | <el-col v-for="c in customInfo" :key="c.id" :span="12"> | ||
| 48 | <el-form-item :label="c.name"> | ||
| 49 | <el-input v-if="c.type=='1'" v-model="form.customInfoObj[c.id]" :placeholder="`请输入${c.name}`" /> | ||
| 50 | <image-upload v-if="c.type=='2'" v-model="form.customInfoObj[c.id]" :limit="1" /> | ||
| 51 | <file-upload v-if="c.type=='3'" v-model="form.customInfoObj[c.id]" :limit="1" /> | ||
| 52 | <el-select v-if="c.type=='4'" v-model="form.customInfoObj[c.id]"> | ||
| 53 | <el-option v-for="o in c.options" :key="o.id" :label="o.name" :value="o.id" /> | ||
| 54 | </el-select> | ||
| 55 | </el-form-item> | ||
| 56 | </el-col> | ||
| 57 | </el-row> | ||
| 58 | </el-form> | ||
| 59 | </div> | ||
| 60 | </div> | ||
| 61 | <div class="panel-footer text-center"> | ||
| 62 | <el-button class="back" type="" round @click="prev">上一步</el-button> | ||
| 63 | <el-button type="primary" round @click="next">下一步</el-button> | ||
| 64 | </div> | ||
| 65 | </div> | ||
| 66 | </template> | ||
| 67 | |||
| 68 | <script setup> | ||
| 69 | import { reactive, watch, computed } from 'vue' | ||
| 70 | import { getCurrentInstance, onMounted } from '@vue/runtime-core' | ||
| 71 | import * as train from '@/apiPc/train' | ||
| 72 | import { toRefs } from '@vueuse/shared' | ||
| 73 | import { useRoute } from 'vue-router' | ||
| 74 | import _ from 'lodash' | ||
| 75 | import ImageUpload from '@/components/ImageUpload' | ||
| 76 | import FileUpload from '@/components/FileUpload' | ||
| 77 | |||
| 78 | const emit = defineEmits(['prev', 'next']) | ||
| 79 | const { proxy } = getCurrentInstance() | ||
| 80 | const route = useRoute() | ||
| 81 | |||
| 82 | const props = defineProps({ | ||
| 83 | activity: { | ||
| 84 | type: Object, | ||
| 85 | default: () => {} | ||
| 86 | } | ||
| 87 | }) | ||
| 88 | |||
| 89 | const customInfo = computed(() => { | ||
| 90 | if (props.activity.customInfo) { | ||
| 91 | return JSON.parse(props.activity.customInfo).info | ||
| 92 | } else { | ||
| 93 | return [] | ||
| 94 | } | ||
| 95 | }) | ||
| 96 | |||
| 97 | const data = reactive({ | ||
| 98 | form: { | ||
| 99 | invoiceFlag: '1', | ||
| 100 | customInfoObj: {} | ||
| 101 | }, | ||
| 102 | rules: { | ||
| 103 | unitName: { required: true, message: '所在单位名称不能为空', trigger: 'blur' }, | ||
| 104 | unitRole: { required: true, message: '现任职务不能为空', trigger: 'blur' }, | ||
| 105 | invoiceInfo: { required: true, message: '开票信息不能为空', trigger: 'blur' }, | ||
| 106 | invoiceType: { required: true, message: '发票类型不能为空', trigger: 'change' } | ||
| 107 | } | ||
| 108 | }) | ||
| 109 | const { form, rules } = toRefs(data) | ||
| 110 | |||
| 111 | watch(() => props.activity.invoiceFlag, (val) => { | ||
| 112 | if (val == '1') { | ||
| 113 | if (!form.value.invoiceType) { | ||
| 114 | form.value.invoiceType = _.orderBy(props.activity.invoiceType.split(','))[0] | ||
| 115 | } | ||
| 116 | } | ||
| 117 | }, { immediate: true }) | ||
| 118 | |||
| 119 | onMounted(() => { | ||
| 120 | train.getTrainPersonalInfo(route.params.id).then((res) => { | ||
| 121 | if (res.data) { | ||
| 122 | form.value = res.data | ||
| 123 | if (res.data.customInfo) { | ||
| 124 | form.value.customInfoObj = JSON.parse(res.data.customInfo) | ||
| 125 | } else { | ||
| 126 | form.value.customInfoObj = {} | ||
| 127 | } | ||
| 128 | } | ||
| 129 | }) | ||
| 130 | }) | ||
| 131 | |||
| 132 | function prev() { | ||
| 133 | emit('prev') | ||
| 134 | } | ||
| 135 | |||
| 136 | function next() { | ||
| 137 | proxy.$refs['formRef'].validate((valid) => { | ||
| 138 | if (valid) { | ||
| 139 | form.value.activityId = route.params.id | ||
| 140 | form.value.customInfo = JSON.stringify(form.value.customInfoObj) | ||
| 141 | train.savePersonalInfo(form.value).then(() => { | ||
| 142 | proxy.$modal.msgSuccess('保存成功') | ||
| 143 | emit('next') | ||
| 144 | }) | ||
| 145 | } | ||
| 146 | }) | ||
| 147 | } | ||
| 148 | |||
| 149 | </script> | ||
| 150 | |||
| 151 | <style scope lang="scss"> | ||
| 152 | .panel-box{ | ||
| 153 | border:1px solid #F5766A; | ||
| 154 | padding:10px 20px; | ||
| 155 | } | ||
| 156 | .train-h3{ | ||
| 157 | font-size: 16px; | ||
| 158 | font-weight: 600; | ||
| 159 | color: var(--el-color-primary); | ||
| 160 | padding-left: 20px; | ||
| 161 | border-left: 3px solid var(--el-color-primary) ; | ||
| 162 | } | ||
| 163 | .back{ | ||
| 164 | border:1px solid var(--el-color-primary) ; | ||
| 165 | color:var(--el-color-primary) | ||
| 166 | } | ||
| 167 | |||
| 168 | .app-container { | ||
| 169 | padding: 0; | ||
| 170 | background: #f5f7f9; | ||
| 171 | } | ||
| 172 | |||
| 173 | .panel-footer .el-button--success { | ||
| 174 | background: linear-gradient(270deg, #39dba7, #38ef7d); | ||
| 175 | border: none; | ||
| 176 | padding: 0 40px; | ||
| 177 | font-size: 16px; | ||
| 178 | } | ||
| 179 | |||
| 180 | .signForm { | ||
| 181 | .el-form-item__label { | ||
| 182 | color: #4c5359; | ||
| 183 | } | ||
| 184 | } | ||
| 185 | |||
| 186 | .tip { | ||
| 187 | font-size: 13px; | ||
| 188 | color: #999; | ||
| 189 | margin: 10px 0; | ||
| 190 | |||
| 191 | i { | ||
| 192 | color: red; | ||
| 193 | margin: 0 4px 0 0; | ||
| 194 | } | ||
| 195 | } | ||
| 196 | |||
| 197 | .threeFour { | ||
| 198 | width: 100%; | ||
| 199 | } | ||
| 200 | |||
| 201 | :deep(.el-upload--picture-card) { | ||
| 202 | width: 120px; | ||
| 203 | height: 160px; | ||
| 204 | } | ||
| 205 | |||
| 206 | :deep(.el-upload-list--picture-card .el-upload-list__item) { | ||
| 207 | width: 120px; | ||
| 208 | height: 160px; | ||
| 209 | } | ||
| 210 | |||
| 211 | .red { | ||
| 212 | color: #f56c6c; | ||
| 213 | } | ||
| 214 | |||
| 215 | .el-form-item{align-items: center;} | ||
| 216 | </style> |
This diff is collapsed.
Click to expand it.
src/viewsPc/train/detail.vue
deleted
100644 → 0
This diff is collapsed.
Click to expand it.
src/viewsPc/train/index.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div> | ||
| 3 | <div class="box"> | ||
| 4 | <el-breadcrumb class="mt20 forPc mb20" :separator-icon="ArrowRight"> | ||
| 5 | <el-breadcrumb-item :to="{ path: '/' }"> | ||
| 6 | <el-icon> | ||
| 7 | <HomeFilled /> | ||
| 8 | </el-icon> | ||
| 9 | 首页 | ||
| 10 | </el-breadcrumb-item> | ||
| 11 | <el-breadcrumb-item :to="{ path: '/competition' }">竞赛</el-breadcrumb-item> | ||
| 12 | <el-breadcrumb-item>竞赛日程</el-breadcrumb-item> | ||
| 13 | </el-breadcrumb> | ||
| 14 | <div class="kind"> | ||
| 15 | <ul> | ||
| 16 | <li> | ||
| 17 | <label>状态:</label> | ||
| 18 | <el-radio-group v-model="query.flag" @change="searchList"> | ||
| 19 | <el-radio-button value="">全部</el-radio-button> | ||
| 20 | <el-radio-button value="1">未开始</el-radio-button> | ||
| 21 | <el-radio-button value="2">进行中</el-radio-button> | ||
| 22 | <el-radio-button value="3">已结束</el-radio-button> | ||
| 23 | </el-radio-group> | ||
| 24 | </li> | ||
| 25 | <li> | ||
| 26 | <label>省份:</label> | ||
| 27 | <el-radio-group v-model="query.projectId" @change="searchList"> | ||
| 28 | <el-radio-button value="">全部</el-radio-button> | ||
| 29 | <el-radio-button v-for="p in projectList" :key="p.provinceId" :value="p.provinceId">{{ p.provinceName }}</el-radio-button> | ||
| 30 | </el-radio-group> | ||
| 31 | </li> | ||
| 32 | <li> | ||
| 33 | <label>时间:</label> | ||
| 34 | <el-radio-group v-model="query.yearMonth" @change="searchList"> | ||
| 35 | <el-radio-button value="">全部</el-radio-button> | ||
| 36 | <el-radio-button v-for="m in monthList" :key="m" :value="m" /> | ||
| 37 | </el-radio-group> | ||
| 38 | </li> | ||
| 39 | </ul> | ||
| 40 | </div> | ||
| 41 | </div> | ||
| 42 | |||
| 43 | <div class="box"> | ||
| 44 | <div class="listTitle"> | ||
| 45 | <h3><label>培训列表</label></h3> | ||
| 46 | <div class="search"> | ||
| 47 | <el-input | ||
| 48 | v-model.trim="query.trainName" | ||
| 49 | placeholder="请输入培训名称查询" | ||
| 50 | class="input-with-select" @keydown.enter="searchList" | ||
| 51 | > | ||
| 52 | <template #append> | ||
| 53 | <el-button type="success" round @click="searchList">查询</el-button> | ||
| 54 | </template> | ||
| 55 | </el-input> | ||
| 56 | </div> | ||
| 57 | </div> | ||
| 58 | |||
| 59 | <el-row :gutter="30" class="pt-20"> | ||
| 60 | <el-col v-for="n in list" :key="n" :lg="6" :md="8" :sm="12" class="content"> | ||
| 61 | <train-card :data="n" @click="goDetail(n.id)"> | ||
| 62 | <!-- <template #image>--> | ||
| 63 | <!-- <el-button @click="goDetail(n.id)">详情</el-button>--> | ||
| 64 | <!-- </template>--> | ||
| 65 | <div class="trrbtn"> | ||
| 66 | <a v-if="n.signStatus=='0'" disabled class="roundLabel gold-btn">未开始</a> | ||
| 67 | <a v-if="n.signStatus=='1'" class="roundLabel red-btn" round>去报名</a> | ||
| 68 | <a v-if="n.signStatus=='2'" class="roundLabel gray-btn" round disabled>已结束</a> | ||
| 69 | </div> | ||
| 70 | </train-card> | ||
| 71 | </el-col> | ||
| 72 | </el-row> | ||
| 73 | <div v-if="total > query.pageSize" class="pc-page-box"> | ||
| 74 | <PaginationPc v-model:page="query.pageNum" v-model:limit="query.pageSize" :total="total" @pagination="getList" /> | ||
| 75 | </div> | ||
| 76 | <el-empty v-if="list.length == 0" description="暂无数据" /> | ||
| 77 | </div> | ||
| 78 | </div> | ||
| 79 | </template> | ||
| 80 | |||
| 81 | <script setup> | ||
| 82 | import { ref, onMounted } from 'vue' | ||
| 83 | import { useRouter } from 'vue-router' | ||
| 84 | import * as train from '@/apiPc/train' | ||
| 85 | import TrainCard from '@/viewsPc/components/trainCard' | ||
| 86 | import { ArrowRight } from '@element-plus/icons-vue' | ||
| 87 | |||
| 88 | const router = useRouter() | ||
| 89 | const list = ref([]) | ||
| 90 | const projectList = ref([]) | ||
| 91 | const monthList = ref([]) | ||
| 92 | const total = ref(0) | ||
| 93 | const query = ref({ | ||
| 94 | projectId: '', | ||
| 95 | flag: '', | ||
| 96 | yearMonth: '', | ||
| 97 | trainName: '', | ||
| 98 | pageSize: 12, | ||
| 99 | pageNum: 1 | ||
| 100 | }) | ||
| 101 | |||
| 102 | onMounted(() => { | ||
| 103 | getProvinceList() | ||
| 104 | getMonthList() | ||
| 105 | getList() | ||
| 106 | }) | ||
| 107 | |||
| 108 | // 获取省 | ||
| 109 | async function getProvinceList() { | ||
| 110 | const res = await train.getProvinceNames() | ||
| 111 | projectList.value = res.data | ||
| 112 | } | ||
| 113 | |||
| 114 | function getMonthList() { | ||
| 115 | const data = new Date() | ||
| 116 | // 获取年 | ||
| 117 | let year = data.getFullYear() | ||
| 118 | // 获取月 | ||
| 119 | let mon = data.getMonth() - 5 | ||
| 120 | const arr = [] | ||
| 121 | |||
| 122 | if (mon < 1) { | ||
| 123 | year = year - 1 | ||
| 124 | mon = 12 + mon | ||
| 125 | } | ||
| 126 | for (let i = 0; i < 12; i++) { | ||
| 127 | if (mon <= 0) { | ||
| 128 | year = year + 1 | ||
| 129 | mon = mon - 12 | ||
| 130 | } | ||
| 131 | if (mon > 12) { | ||
| 132 | mon = 1 | ||
| 133 | year = year + 1 | ||
| 134 | } | ||
| 135 | if (mon < 10) { | ||
| 136 | mon = '0' + mon | ||
| 137 | } | ||
| 138 | arr.push(year + '-' + mon) | ||
| 139 | mon = mon * 1 + 1 | ||
| 140 | } | ||
| 141 | monthList.value = arr | ||
| 142 | } | ||
| 143 | |||
| 144 | async function getList() { | ||
| 145 | const res = await train.getTrains(query.value) | ||
| 146 | list.value = res.rows | ||
| 147 | total.value = res.total | ||
| 148 | } | ||
| 149 | |||
| 150 | function searchList() { | ||
| 151 | query.value.pageNum = 1 | ||
| 152 | getList() | ||
| 153 | } | ||
| 154 | |||
| 155 | |||
| 156 | function goDetail(id) { | ||
| 157 | const routeLocation = router.resolve({ | ||
| 158 | name: 'trainDetail', | ||
| 159 | params: { | ||
| 160 | id: id | ||
| 161 | } | ||
| 162 | }) | ||
| 163 | window.open(routeLocation.href, '_blank') | ||
| 164 | } | ||
| 165 | </script> | ||
| 166 | |||
| 167 | <style lang="scss" scoped> | ||
| 168 | .el-pagination { | ||
| 169 | justify-content: center; | ||
| 170 | --el-pagination-bg-color: none; | ||
| 171 | } | ||
| 172 | |||
| 173 | .kind { | ||
| 174 | background: #fff; | ||
| 175 | border-radius: 2px; | ||
| 176 | box-shadow: 0px 0px 46px 0px rgba(1,16,64,0.08); | ||
| 177 | margin:30px 0; | ||
| 178 | |||
| 179 | ul { | ||
| 180 | list-style: none; | ||
| 181 | padding: 30px 20px 10px; | ||
| 182 | |||
| 183 | li { | ||
| 184 | margin: 0 0 20px; | ||
| 185 | display: flex;border-bottom: 1px solid #E5E5E5;padding: 0 0 20px; | ||
| 186 | align-items: baseline; | ||
| 187 | &>label{flex: 0 0 auto;padding:0 20px; | ||
| 188 | border-left:3px solid var(--el-color-primary); position: relative; | ||
| 189 | top: 6px;} | ||
| 190 | } | ||
| 191 | li:last-child{border: none;margin: 0;} | ||
| 192 | } | ||
| 193 | } | ||
| 194 | |||
| 195 | .pagination-container { | ||
| 196 | height: 56px; | ||
| 197 | } | ||
| 198 | .listTitle { | ||
| 199 | display: flex; | ||
| 200 | justify-content: space-between; | ||
| 201 | align-items: center; | ||
| 202 | } | ||
| 203 | |||
| 204 | .cared1 { | ||
| 205 | background: darkgreen; | ||
| 206 | } | ||
| 207 | .cared2 { | ||
| 208 | background: gray; | ||
| 209 | } | ||
| 210 | .coach{ | ||
| 211 | width: 58px; | ||
| 212 | height: 24px; | ||
| 213 | font-size: 14px; | ||
| 214 | font-weight: 400; | ||
| 215 | background: #FF8135; | ||
| 216 | color: #FFFFFF; | ||
| 217 | border-radius: 2px; | ||
| 218 | text-align: center; | ||
| 219 | line-height: 24px; | ||
| 220 | } | ||
| 221 | .judge{ | ||
| 222 | width: 58px; | ||
| 223 | height: 24px; | ||
| 224 | font-size: 14px; | ||
| 225 | font-weight: 400; | ||
| 226 | color: #FFFFFF; | ||
| 227 | background: #00A1E6; | ||
| 228 | border-radius: 2px; | ||
| 229 | text-align: center; | ||
| 230 | line-height: 24px; | ||
| 231 | } | ||
| 232 | .jinDuan{ | ||
| 233 | width: 58px; | ||
| 234 | height: 24px; | ||
| 235 | font-size: 14px; | ||
| 236 | font-weight: 400; | ||
| 237 | color: #FFFFFF; | ||
| 238 | background: #D3AA5A ; | ||
| 239 | border-radius: 2px; | ||
| 240 | text-align: center; | ||
| 241 | line-height: 24px; | ||
| 242 | } | ||
| 243 | .jinJi{ | ||
| 244 | width: 58px; | ||
| 245 | height: 24px; | ||
| 246 | font-size: 14px; | ||
| 247 | font-weight: 400; | ||
| 248 | color: #FFFFFF; | ||
| 249 | background: #2FBAB6; | ||
| 250 | border-radius: 2px; | ||
| 251 | text-align: center; | ||
| 252 | line-height: 24px; | ||
| 253 | } | ||
| 254 | </style> |
src/viewsPc/train/signUp.vue
deleted
100644 → 0
| 1 | <template> | ||
| 2 | <div class="app-container"> | ||
| 3 | <div class="box ph-30"> | ||
| 4 | <div class="panel"> | ||
| 5 | <div class="panel-head" style="width: 100%;"> | ||
| 6 | <el-steps :active="active" align-center style="width: 100%;"> | ||
| 7 | <el-step title="报名须知" /> | ||
| 8 | <el-step title="个人信息完善" /> | ||
| 9 | <el-step title="培训信息完善" /> | ||
| 10 | <el-step title="培训考试选择" /> | ||
| 11 | </el-steps> | ||
| 12 | </div> | ||
| 13 | <br> | ||
| 14 | <component | ||
| 15 | :is="StepInfo" :activity="activity" :personal="personal" :exam-list="examList" :train-list="trainList" | ||
| 16 | @prev="prev" @next="next" @publish="publish" | ||
| 17 | /> | ||
| 18 | </div> | ||
| 19 | </div> | ||
| 20 | </div> | ||
| 21 | </template> | ||
| 22 | |||
| 23 | <script setup> | ||
| 24 | import { defineAsyncComponent, reactive, ref, watch } from 'vue' | ||
| 25 | import { onMounted } from '@vue/runtime-core' | ||
| 26 | import * as train from '@/apiPc/train' | ||
| 27 | import { toRefs } from '@vueuse/shared' | ||
| 28 | import { useRouter, useRoute } from 'vue-router' | ||
| 29 | import useUserStore from '@/store/modules/user' | ||
| 30 | |||
| 31 | const route = useRoute() | ||
| 32 | const router = useRouter() | ||
| 33 | const userStore = useUserStore() | ||
| 34 | |||
| 35 | const active = ref(-1) | ||
| 36 | const modules = import.meta.glob('./components/*.vue') | ||
| 37 | |||
| 38 | let StepInfo | ||
| 39 | |||
| 40 | const data = reactive({ | ||
| 41 | activity: {}, | ||
| 42 | examList: [], | ||
| 43 | trainList: [], | ||
| 44 | personal: {} | ||
| 45 | }) | ||
| 46 | const { activity, examList, trainList, personal } = toRefs(data) | ||
| 47 | |||
| 48 | onMounted(() => { | ||
| 49 | if (!userStore.checkAndLogin()) { | ||
| 50 | return | ||
| 51 | } | ||
| 52 | |||
| 53 | if (!route.params.id) { | ||
| 54 | return | ||
| 55 | } | ||
| 56 | |||
| 57 | const step = route.query.step || '1' | ||
| 58 | active.value = (parseInt(step) - 1) || 0 | ||
| 59 | |||
| 60 | train.getTrainDetails(route.params.id).then((res) => { | ||
| 61 | activity.value = res.data.activity | ||
| 62 | examList.value = res.data.examVoList | ||
| 63 | trainList.value = res.data.subjectTrainList | ||
| 64 | |||
| 65 | if (activity.value.signNoticeAttachment) { | ||
| 66 | activity.value.signNoticeAttachment = JSON.parse(activity.value.signNoticeAttachment)[0] | ||
| 67 | } | ||
| 68 | }) | ||
| 69 | |||
| 70 | train.getPersonalInfo().then((res) => { | ||
| 71 | personal.value = res.data | ||
| 72 | }) | ||
| 73 | }) | ||
| 74 | |||
| 75 | watch(active, (val) => { | ||
| 76 | if (val !== -1) { | ||
| 77 | StepInfo = defineAsyncComponent(modules[`./components/step${val + 1}.vue`]) | ||
| 78 | } | ||
| 79 | }) | ||
| 80 | |||
| 81 | function next() { | ||
| 82 | active.value++ | ||
| 83 | router.push({ | ||
| 84 | query: { step: active.value + 1 } | ||
| 85 | }) | ||
| 86 | } | ||
| 87 | |||
| 88 | function prev() { | ||
| 89 | active.value-- | ||
| 90 | router.push({ | ||
| 91 | query: { step: active.value + 1 } | ||
| 92 | }) | ||
| 93 | } | ||
| 94 | |||
| 95 | function publish() { | ||
| 96 | router.replace({ | ||
| 97 | name: 'trainList' | ||
| 98 | }) | ||
| 99 | } | ||
| 100 | </script> | ||
| 101 | |||
| 102 | <style scoped lang="scss"> | ||
| 103 | .app-container { | ||
| 104 | padding: 0; | ||
| 105 | background: #f5f7f9; | ||
| 106 | } | ||
| 107 | |||
| 108 | .panel{ | ||
| 109 | padding: 20px 100px; | ||
| 110 | } | ||
| 111 | .panel-box{ | ||
| 112 | border:1px solid #F5766A; | ||
| 113 | padding:10px 20px; | ||
| 114 | } | ||
| 115 | |||
| 116 | .panel-footer .el-button--success { | ||
| 117 | background: linear-gradient(270deg, #39dba7, #38ef7d); | ||
| 118 | border: none; | ||
| 119 | padding: 0 40px; | ||
| 120 | font-size: 16px; | ||
| 121 | } | ||
| 122 | |||
| 123 | .signForm { | ||
| 124 | .el-form-item__label { | ||
| 125 | color: #4c5359; | ||
| 126 | } | ||
| 127 | } | ||
| 128 | |||
| 129 | .tip { | ||
| 130 | font-size: 13px; | ||
| 131 | color: #999; | ||
| 132 | margin: 10px 0; | ||
| 133 | |||
| 134 | i { | ||
| 135 | color: red; | ||
| 136 | margin: 0 4px 0 0; | ||
| 137 | } | ||
| 138 | } | ||
| 139 | |||
| 140 | .threeFour { | ||
| 141 | width: 100%; | ||
| 142 | } | ||
| 143 | |||
| 144 | :deep(.el-upload--picture-card) { | ||
| 145 | width: 120px; | ||
| 146 | height: 160px; | ||
| 147 | } | ||
| 148 | |||
| 149 | :deep(.el-upload-list--picture-card .el-upload-list__item) { | ||
| 150 | width: 120px; | ||
| 151 | height: 160px; | ||
| 152 | } | ||
| 153 | |||
| 154 | .red { | ||
| 155 | color: #f56c6c; | ||
| 156 | } | ||
| 157 | |||
| 158 | .train-h3{ | ||
| 159 | font-size: 16px; | ||
| 160 | font-weight: 600; | ||
| 161 | color: var(--el-color-primary); | ||
| 162 | padding-left: 20px; | ||
| 163 | border-left: 3px solid var(--el-color-primary) ; | ||
| 164 | } | ||
| 165 | |||
| 166 | |||
| 167 | </style> |
| ... | @@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { | ... | @@ -82,8 +82,8 @@ export default defineConfig(({ mode, command }) => { |
| 82 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') | 82 | rewrite: (p) => p.replace(/^\/dev-api\/ztx-webSite/, '') |
| 83 | }, | 83 | }, |
| 84 | '/dev-api': { | 84 | '/dev-api': { |
| 85 | // target: 'http://192.168.1.131:8081/', | 85 | target: 'http://192.168.1.131:8081/', |
| 86 | target: 'https://dance.itechtop.cn/stage-api', | 86 | // target: 'https://dance.itechtop.cn/stage-api', |
| 87 | changeOrigin: true, | 87 | changeOrigin: true, |
| 88 | rewrite: (p) => p.replace(/^\/dev-api/, '') | 88 | rewrite: (p) => p.replace(/^\/dev-api/, '') |
| 89 | } | 89 | } | ... | ... |
-
Please register or sign in to post a comment