Commit 9e82c2672cf1623f654f0f47f3eb6c548308261d
1 parent
36ed0d31
Exists in
master
feat: 个人中心更新
Showing
17 changed files
with
1559 additions
and
200 deletions
Show diff stats
src/App.vue
| 1 | <template> | 1 | <template> |
| 2 | <div id="app" :class="isElder?'elder':''"> | 2 | <div id="app" :class="isElder?'elder':''"> |
| 3 | - <keep-alive> | ||
| 4 | - <router-view v-if="this.$route.meta.keepAlive" @setElder="setElder" /> | ||
| 5 | - </keep-alive> | ||
| 6 | 3 | ||
| 7 | - <router-view v-if="!this.$route.meta.keepAlive" @setElder="setElder" /> | 4 | + <router-view @setElder="setElder" /> |
| 8 | </div> | 5 | </div> |
| 9 | </template> | 6 | </template> |
| 10 | <script> | 7 | <script> |
2.46 KB
46.3 KB
src/router/index.js
| @@ -28,6 +28,10 @@ import payneed from '@/views/Service/payneed.vue' //购买须知 | @@ -28,6 +28,10 @@ import payneed from '@/views/Service/payneed.vue' //购买须知 | ||
| 28 | import protocol from '@/views/Service/protocol.vue' //用户协议 | 28 | import protocol from '@/views/Service/protocol.vue' //用户协议 |
| 29 | 29 | ||
| 30 | 30 | ||
| 31 | +import schoolFollow from '@/views/Travel/schoolFollow.vue' //已关注学校列表 | ||
| 32 | +import schoolAttestation from '@/views/Travel/schoolAttestation.vue' //已认证学校列表 | ||
| 33 | +import classAttestation from '@/views/Travel/classAttestation.vue' //已集团权限年级班级列表 | ||
| 34 | + | ||
| 31 | Vue.use(VueRouter) | 35 | Vue.use(VueRouter) |
| 32 | const [routerPush, routerReplace] = [VueRouter.prototype.push, VueRouter.prototype.replace]; | 36 | const [routerPush, routerReplace] = [VueRouter.prototype.push, VueRouter.prototype.replace]; |
| 33 | VueRouter.prototype.push = function push(to) { | 37 | VueRouter.prototype.push = function push(to) { |
| @@ -212,6 +216,31 @@ const routes = [{ | @@ -212,6 +216,31 @@ const routes = [{ | ||
| 212 | title: '用户协议' | 216 | title: '用户协议' |
| 213 | } | 217 | } |
| 214 | }, | 218 | }, |
| 219 | + { | ||
| 220 | + path: '/schoolFollow', | ||
| 221 | + name: 'schoolFollow', | ||
| 222 | + component: schoolFollow, | ||
| 223 | + meta: { | ||
| 224 | + title: '关注学校' | ||
| 225 | + } | ||
| 226 | + }, | ||
| 227 | + { | ||
| 228 | + path: '/schoolAttestation', | ||
| 229 | + name: 'schoolAttestation', | ||
| 230 | + component: schoolAttestation, | ||
| 231 | + meta: { | ||
| 232 | + title: '已认证学校' | ||
| 233 | + } | ||
| 234 | + }, | ||
| 235 | + { | ||
| 236 | + path: '/classAttestation', | ||
| 237 | + name: 'classAttestation', | ||
| 238 | + component: classAttestation, | ||
| 239 | + meta: { | ||
| 240 | + title: '集团认领' | ||
| 241 | + } | ||
| 242 | + }, | ||
| 243 | + | ||
| 215 | ] | 244 | ] |
| 216 | const router = new VueRouter({ | 245 | const router = new VueRouter({ |
| 217 | mode: 'hash', | 246 | mode: 'hash', |
src/store/index.js
| @@ -4,12 +4,15 @@ import Vuex from 'vuex' | @@ -4,12 +4,15 @@ import Vuex from 'vuex' | ||
| 4 | Vue.use(Vuex) | 4 | Vue.use(Vuex) |
| 5 | 5 | ||
| 6 | export default new Vuex.Store({ | 6 | export default new Vuex.Store({ |
| 7 | - state: { | ||
| 8 | - }, | ||
| 9 | - mutations: { | ||
| 10 | - }, | ||
| 11 | - actions: { | ||
| 12 | - }, | ||
| 13 | - modules: { | ||
| 14 | - } | ||
| 15 | -}) | 7 | + state: { |
| 8 | + schoolName: [] | ||
| 9 | + | ||
| 10 | + }, | ||
| 11 | + mutations: { | ||
| 12 | + changeSchool(state, params) { | ||
| 13 | + state.schoolName = params | ||
| 14 | + } | ||
| 15 | + }, | ||
| 16 | + actions: {}, | ||
| 17 | + modules: {} | ||
| 18 | +}) | ||
| 16 | \ No newline at end of file | 19 | \ No newline at end of file |
src/views/Home/Home.vue
| @@ -5,7 +5,10 @@ | @@ -5,7 +5,10 @@ | ||
| 5 | <div> | 5 | <div> |
| 6 | <img class="head" :src="headImgUrl?headImgUrl:defaultHead" alt=""> | 6 | <img class="head" :src="headImgUrl?headImgUrl:defaultHead" alt=""> |
| 7 | <div class="right"> | 7 | <div class="right"> |
| 8 | - <p class="name">{{userInfo.nickName}}</p> | 8 | + <!-- <p class="name">{{nicknameUser}}</p> --> |
| 9 | + <div class="name"><span>{{nicknameUser}}</span> | ||
| 10 | + <div class="school" v-show="schoolNamesChoose" @click="changeSchool">{{schoolNamesChoose}}<img src="@/assets/Travel/change.png" /></div> | ||
| 11 | + </div> | ||
| 9 | <p class="phone">{{userInfo.phone}}</p> | 12 | <p class="phone">{{userInfo.phone}}</p> |
| 10 | </div> | 13 | </div> |
| 11 | </div> | 14 | </div> |
| @@ -19,6 +22,11 @@ | @@ -19,6 +22,11 @@ | ||
| 19 | <van-icon class="icon" name="orders-o" /> | 22 | <van-icon class="icon" name="orders-o" /> |
| 20 | <span>集团权限</span> | 23 | <span>集团权限</span> |
| 21 | </div> | 24 | </div> |
| 25 | + <!-- <div class="pic"> | ||
| 26 | + <img src="@/assets/home/bg2.png"/> | ||
| 27 | + <span>已认证</span> | ||
| 28 | + <van-icon name="arrow" /> | ||
| 29 | + </div> --> | ||
| 22 | <van-icon name="arrow" /> | 30 | <van-icon name="arrow" /> |
| 23 | </div> | 31 | </div> |
| 24 | <div class="item" @click="handleMyCard"> | 32 | <div class="item" @click="handleMyCard"> |
| @@ -55,7 +63,6 @@ import HomeChildList from '@/views/Home/component/HomeChildList' | @@ -55,7 +63,6 @@ import HomeChildList from '@/views/Home/component/HomeChildList' | ||
| 55 | import HomeOrder from '@/views/Home/component/HomeOrder' | 63 | import HomeOrder from '@/views/Home/component/HomeOrder' |
| 56 | import HomeScan from '@/views/Home/component/HomeScan' | 64 | import HomeScan from '@/views/Home/component/HomeScan' |
| 57 | import Tabbar4 from '@/component/Tabbar4' | 65 | import Tabbar4 from '@/component/Tabbar4' |
| 58 | -import { Dialog } from 'vant' | ||
| 59 | export default { | 66 | export default { |
| 60 | data () { | 67 | data () { |
| 61 | return { | 68 | return { |
| @@ -75,8 +82,10 @@ export default { | @@ -75,8 +82,10 @@ export default { | ||
| 75 | headImgUrl: '', | 82 | headImgUrl: '', |
| 76 | defaultHead: require('@/assets/head.png'), | 83 | defaultHead: require('@/assets/head.png'), |
| 77 | isShow: false, | 84 | isShow: false, |
| 85 | + isElder: false, | ||
| 78 | showChildList: false, | 86 | showChildList: false, |
| 79 | - isElder: false | 87 | + showSchool: false, |
| 88 | + schoolNamesChoose: '' | ||
| 80 | } | 89 | } |
| 81 | }, | 90 | }, |
| 82 | 91 | ||
| @@ -85,10 +94,17 @@ export default { | @@ -85,10 +94,17 @@ export default { | ||
| 85 | if (isElder) { | 94 | if (isElder) { |
| 86 | this.isElder = true | 95 | this.isElder = true |
| 87 | } | 96 | } |
| 97 | + this.schoolNamesChoose = localStorage.getItem('schoolNamesChoose') ? localStorage.getItem('schoolNamesChoose') : '' | ||
| 88 | this.centerNo = localStorage.getItem('centerNo'); | 98 | this.centerNo = localStorage.getItem('centerNo'); |
| 89 | this.getUserInfo() | 99 | this.getUserInfo() |
| 100 | + this.againRZ() | ||
| 90 | 101 | ||
| 91 | }, | 102 | }, |
| 103 | + computed: { | ||
| 104 | + schoolNames () { | ||
| 105 | + return this.$store.state.schoolName | ||
| 106 | + } | ||
| 107 | + }, | ||
| 92 | methods: { | 108 | methods: { |
| 93 | // 研学码 | 109 | // 研学码 |
| 94 | handleYanxue () { | 110 | handleYanxue () { |
| @@ -114,7 +130,7 @@ export default { | @@ -114,7 +130,7 @@ export default { | ||
| 114 | // 点击长辈版 | 130 | // 点击长辈版 |
| 115 | handelElder () { | 131 | handelElder () { |
| 116 | if (this.isElder) { | 132 | if (this.isElder) { |
| 117 | - Dialog.confirm({ | 133 | + this.$dialog.confirm({ |
| 118 | title: '长辈版', | 134 | title: '长辈版', |
| 119 | message: '超大字号,看的更清楚,长辈版,专为长辈设计', | 135 | message: '超大字号,看的更清楚,长辈版,专为长辈设计', |
| 120 | confirmButtonColor: '#ee0a24', | 136 | confirmButtonColor: '#ee0a24', |
| @@ -130,7 +146,7 @@ export default { | @@ -130,7 +146,7 @@ export default { | ||
| 130 | // on cancel | 146 | // on cancel |
| 131 | }); | 147 | }); |
| 132 | } else { | 148 | } else { |
| 133 | - Dialog.confirm({ | 149 | + this.$dialog.confirm({ |
| 134 | title: '长辈版', | 150 | title: '长辈版', |
| 135 | message: '超大字号,看的更清楚,长辈版,专为长辈设计', | 151 | message: '超大字号,看的更清楚,长辈版,专为长辈设计', |
| 136 | confirmButtonColor: '#3385FF', | 152 | confirmButtonColor: '#3385FF', |
| @@ -164,9 +180,20 @@ export default { | @@ -164,9 +180,20 @@ export default { | ||
| 164 | onSuccess: res => { | 180 | onSuccess: res => { |
| 165 | console.log('getUserInfo', res) | 181 | console.log('getUserInfo', res) |
| 166 | if (res.data.code == 200) { | 182 | if (res.data.code == 200) { |
| 167 | - let userInfo = res.data.data.userInfo | ||
| 168 | - this.userInfo = userInfo | 183 | + let userInfo = res.data.data.userInfo; |
| 184 | + this.userInfo = userInfo; | ||
| 169 | localStorage.setItem('userInfo', JSON.stringify(userInfo)) | 185 | localStorage.setItem('userInfo', JSON.stringify(userInfo)) |
| 186 | + if (userInfo.schoolNames || userInfo.schoolNames == [] || userInfo.schoolNames == 'null') { | ||
| 187 | + localStorage.setItem('schoolNames', JSON.stringify(userInfo.schoolNames)) | ||
| 188 | + this.$store.commit('changeSchool', userInfo.schoolNames) | ||
| 189 | + if (!localStorage.getItem('schoolNamesChoose')) { | ||
| 190 | + localStorage.setItem('schoolNamesChoose', userInfo.schoolNames[0]) | ||
| 191 | + this.schoolNamesChoose = userInfo.schoolNames[0] | ||
| 192 | + } | ||
| 193 | + } else { | ||
| 194 | + localStorage.setItem('schoolNames', []) | ||
| 195 | + this.$store.commit('changeSchool', []) | ||
| 196 | + } | ||
| 170 | } | 197 | } |
| 171 | this.showChildList = true | 198 | this.showChildList = true |
| 172 | 199 | ||
| @@ -185,6 +212,27 @@ export default { | @@ -185,6 +212,27 @@ export default { | ||
| 185 | }, | 212 | }, |
| 186 | complete () { | 213 | complete () { |
| 187 | this.getUserInfo() | 214 | this.getUserInfo() |
| 215 | + }, | ||
| 216 | + //切换学校 | ||
| 217 | + changeSchool () { | ||
| 218 | + this.$router.push({ name: 'schoolFollow' }) | ||
| 219 | + }, | ||
| 220 | + //集团回调关闭页面 | ||
| 221 | + closeJT () { | ||
| 222 | + this.showSchool = false | ||
| 223 | + }, | ||
| 224 | + //查看是否有集团认证 | ||
| 225 | + getRZ () { | ||
| 226 | + // this.showSchool = true | ||
| 227 | + this.$router.push({ name: 'schoolAttestation' }) | ||
| 228 | + }, | ||
| 229 | + //回跳重新认证 | ||
| 230 | + againRZ () { | ||
| 231 | + let backRZ = localStorage.getItem('backRZ') | ||
| 232 | + if (backRZ == 'true') { | ||
| 233 | + this.showSchool = true | ||
| 234 | + localStorage.setItem('backRZ', false) | ||
| 235 | + } | ||
| 188 | } | 236 | } |
| 189 | }, | 237 | }, |
| 190 | components: { | 238 | components: { |
| @@ -209,7 +257,6 @@ export default { | @@ -209,7 +257,6 @@ export default { | ||
| 209 | background-position: center; | 257 | background-position: center; |
| 210 | .top { | 258 | .top { |
| 211 | display: flex; | 259 | display: flex; |
| 212 | - flex-wrap: wrap; | ||
| 213 | align-items: center; | 260 | align-items: center; |
| 214 | justify-content: space-between; | 261 | justify-content: space-between; |
| 215 | padding: 40px 28px; | 262 | padding: 40px 28px; |
| @@ -225,14 +272,31 @@ export default { | @@ -225,14 +272,31 @@ export default { | ||
| 225 | .right { | 272 | .right { |
| 226 | height: 96px; | 273 | height: 96px; |
| 227 | margin-left: 24px; | 274 | margin-left: 24px; |
| 228 | - display: flex; | ||
| 229 | - align-content: space-around; | ||
| 230 | - flex-wrap: wrap; | ||
| 231 | color: #fff; | 275 | color: #fff; |
| 232 | .name { | 276 | .name { |
| 233 | - font-size: 34px; | 277 | + font-size: 33px; |
| 234 | font-weight: bold; | 278 | font-weight: bold; |
| 235 | width: 100%; | 279 | width: 100%; |
| 280 | + margin-bottom: 15px; | ||
| 281 | + display: flex; | ||
| 282 | + .school { | ||
| 283 | + max-width: 400px; | ||
| 284 | + border-radius: 30px; | ||
| 285 | + font-size: 26px; | ||
| 286 | + font-weight: normal; | ||
| 287 | + margin-left: 20px; | ||
| 288 | + padding: 0 20px; | ||
| 289 | + box-sizing: border-box; | ||
| 290 | + background-color: #d82b2b; | ||
| 291 | + display: flex; | ||
| 292 | + align-items: center; | ||
| 293 | + | ||
| 294 | + img { | ||
| 295 | + width: 30px; | ||
| 296 | + height: 30px; | ||
| 297 | + margin-left: 5px; | ||
| 298 | + } | ||
| 299 | + } | ||
| 236 | } | 300 | } |
| 237 | .phone { | 301 | .phone { |
| 238 | font-size: 26px; | 302 | font-size: 26px; |
| @@ -266,6 +330,21 @@ export default { | @@ -266,6 +330,21 @@ export default { | ||
| 266 | font-size: 30px; | 330 | font-size: 30px; |
| 267 | } | 331 | } |
| 268 | } | 332 | } |
| 333 | + .pic { | ||
| 334 | + display: flex; | ||
| 335 | + align-items: center; | ||
| 336 | + margin-right: 5px; | ||
| 337 | + | ||
| 338 | + span { | ||
| 339 | + font-size: 27px; | ||
| 340 | + color: #333333; | ||
| 341 | + } | ||
| 342 | + img { | ||
| 343 | + width: 30px; | ||
| 344 | + height: 30px; | ||
| 345 | + margin-right: 5px; | ||
| 346 | + } | ||
| 347 | + } | ||
| 269 | } | 348 | } |
| 270 | } | 349 | } |
| 271 | } | 350 | } |
src/views/Home/component/AddChildPopupGroup.vue
| 1 | <template> | 1 | <template> |
| 2 | <div> | 2 | <div> |
| 3 | - <div class="addchild_group" v-if="step==1"> | 3 | + <div class="addchild_group" v-if="step==2"> |
| 4 | <img class="bg" src="@/assets/home/bg2.png" alt=""> | 4 | <img class="bg" src="@/assets/home/bg2.png" alt=""> |
| 5 | - <p class="title">添加学生</p> | ||
| 6 | - <p class="des">完善相关信息可帮助获得最佳使用体验 </p> | 5 | + <p class="title">激活认证</p> |
| 6 | + <p class="des">完善认证信息可帮助获得最佳使用体验</p> | ||
| 7 | <div class="phone_content"> | 7 | <div class="phone_content"> |
| 8 | <div class="item"> | 8 | <div class="item"> |
| 9 | <p class="phone_title">手机号</p> | 9 | <p class="phone_title">手机号</p> |
| @@ -16,44 +16,31 @@ | @@ -16,44 +16,31 @@ | ||
| 16 | <p class="phone_title">验证码</p> | 16 | <p class="phone_title">验证码</p> |
| 17 | <input class="code" type="text" v-model="code" placeholder="请输入验证码"> | 17 | <input class="code" type="text" v-model="code" placeholder="请输入验证码"> |
| 18 | </div> | 18 | </div> |
| 19 | - <button class="submit" @click="checkPhoneAndCode">下一步(1/2)</button> | ||
| 20 | - </div> | ||
| 21 | - </div> | ||
| 22 | - <div class="addchild_group" v-if="step==2"> | ||
| 23 | - <img class="bg" src="@/assets/home/bg2.png" alt=""> | ||
| 24 | - <p class="title">已查询到{{claimChildList.length}}位学生信息</p> | ||
| 25 | - <p class="des">请仔细确认学生信息后再认领</p> | ||
| 26 | - <div class="child_content"> | ||
| 27 | - <div class="child_box"> | ||
| 28 | - <div class="child_item" v-for="(item,index) in claimChildList" :key="index"> | ||
| 29 | - <p><span>姓名</span>{{item.travelerName}}</p> | ||
| 30 | - <p><span>阶段</span>{{item.travelerType==1?'小学':item.travelerType==2?'初中':'高中'}}</p> | ||
| 31 | - <p><span>所在地区</span>{{item.province+item.city+item.area}}</p> | ||
| 32 | - <p><span>学校</span>{{item.schoolName}}</p> | ||
| 33 | - <p><span>入学年份</span>{{item.enrollYear}}</p> | ||
| 34 | - <van-checkbox class="checkbox" v-model="item.checked" shape="square"></van-checkbox> | ||
| 35 | - </div> | ||
| 36 | - </div> | ||
| 37 | - <button class="submit" @click="claimChild">认领</button> | 19 | + <button class="submit" @click="checkPhoneAndCode">完成</button> |
| 38 | </div> | 20 | </div> |
| 39 | </div> | 21 | </div> |
| 40 | - <div class="addchild_group" v-if="step==3"> | 22 | + <div class="addchild_group" v-if="step==1"> |
| 41 | <img class="bg" src="@/assets/home/bg2.png" alt=""> | 23 | <img class="bg" src="@/assets/home/bg2.png" alt=""> |
| 42 | <p class="title">添加学生信息</p> | 24 | <p class="title">添加学生信息</p> |
| 43 | - <p class="des">如验证号码非学校预留号码,请按步骤自行添加完善学生信息。</p> | 25 | + <p class="des">完善相关信息可帮助获得最佳使用体验</p> |
| 44 | <div class="content"> | 26 | <div class="content"> |
| 45 | <div class="name">学生信息</div> | 27 | <div class="name">学生信息</div> |
| 46 | - <div class="item"> | 28 | + <div class="item" style="width:48%;display:inline-flex;margin-right:4%;"> |
| 47 | <input type="text" placeholder="请输入学生姓名" v-model="studentName"> | 29 | <input type="text" placeholder="请输入学生姓名" v-model="studentName"> |
| 48 | </div> | 30 | </div> |
| 31 | + <div class="item" @click="handleYear" style="width:48%;display:inline-flex;"> | ||
| 32 | + <p :class="!year||yearDisable?'nodata':''">{{year?year:'入学年份'}}</p> | ||
| 33 | + <img src="@/assets/more.png" alt=""> | ||
| 34 | + </div> | ||
| 49 | <div class="item" @click="showUserTypeSelect=true" style="width:48%;display:inline-flex;margin-right:4%;"> | 35 | <div class="item" @click="showUserTypeSelect=true" style="width:48%;display:inline-flex;margin-right:4%;"> |
| 50 | <p :class="!userType?'nodata':''">{{userType?userType:'当前阶段'}}</p> | 36 | <p :class="!userType?'nodata':''">{{userType?userType:'当前阶段'}}</p> |
| 51 | <img src="@/assets/more.png" alt=""> | 37 | <img src="@/assets/more.png" alt=""> |
| 52 | </div> | 38 | </div> |
| 53 | - <div class="item" @click="handleYear" style="width:48%;display:inline-flex;"> | ||
| 54 | - <p :class="!year||yearDisable?'nodata':''">{{year?year:'入学年份'}}</p> | 39 | + <div class="item" @click="showUserClassSelect=true" style="width:48%;display:inline-flex;"> |
| 40 | + <p :class="!classType?'nodata':''">{{classType?classType:'班级'}}</p> | ||
| 55 | <img src="@/assets/more.png" alt=""> | 41 | <img src="@/assets/more.png" alt=""> |
| 56 | </div> | 42 | </div> |
| 43 | + | ||
| 57 | <div class="item" @click="showAreaSelect=true"> | 44 | <div class="item" @click="showAreaSelect=true"> |
| 58 | <p :class="!area?'nodata':''">{{area?area:'请选择地区'}}</p> | 45 | <p :class="!area?'nodata':''">{{area?area:'请选择地区'}}</p> |
| 59 | <img src="@/assets/more.png" alt=""> | 46 | <img src="@/assets/more.png" alt=""> |
| @@ -74,6 +61,9 @@ | @@ -74,6 +61,9 @@ | ||
| 74 | <van-popup v-model="showAreaSelect" round position="bottom" get-container="body" :safe-area-inset-bottom="true"> | 61 | <van-popup v-model="showAreaSelect" round position="bottom" get-container="body" :safe-area-inset-bottom="true"> |
| 75 | <van-area title="地区" :area-list="areaList" @cancel="showAreaSelect = false" @confirm="selectAreaOver" /> | 62 | <van-area title="地区" :area-list="areaList" @cancel="showAreaSelect = false" @confirm="selectAreaOver" /> |
| 76 | </van-popup> | 63 | </van-popup> |
| 64 | + <van-popup v-model="showUserClassSelect" round position="bottom" get-container="body" :safe-area-inset-bottom="true"> | ||
| 65 | + <van-picker title="班级" show-toolbar :columns="classTypeArr" value-key="label" @cancel="showUserClassSelect = false" @confirm="selectClassTypeOver" /> | ||
| 66 | + </van-popup> | ||
| 77 | 67 | ||
| 78 | <van-popup v-model="chooseSchoolisShow" round get-container="body" :safe-area-inset-bottom="true"> | 68 | <van-popup v-model="chooseSchoolisShow" round get-container="body" :safe-area-inset-bottom="true"> |
| 79 | <div v-if="chooseSchoolisShow"> | 69 | <div v-if="chooseSchoolisShow"> |
| @@ -89,17 +79,15 @@ import chooseSchool from '@/views/Service/component/chooseSchool' | @@ -89,17 +79,15 @@ import chooseSchool from '@/views/Service/component/chooseSchool' | ||
| 89 | var codeInterval; | 79 | var codeInterval; |
| 90 | export default { | 80 | export default { |
| 91 | components: { chooseSchool }, | 81 | components: { chooseSchool }, |
| 82 | + props: ['step', 'travelerNum'], | ||
| 92 | data () { | 83 | data () { |
| 93 | return { | 84 | return { |
| 94 | - step: 1, | ||
| 95 | phone: '', | 85 | phone: '', |
| 96 | codeText: '获取验证码',//获取验证码按钮文字 | 86 | codeText: '获取验证码',//获取验证码按钮文字 |
| 97 | code: '',//验证码 | 87 | code: '',//验证码 |
| 98 | studentName: '', | 88 | studentName: '', |
| 99 | showDialog: true, | 89 | showDialog: true, |
| 100 | 90 | ||
| 101 | - claimChildList: [], | ||
| 102 | - | ||
| 103 | year: '',//入学年份 | 91 | year: '',//入学年份 |
| 104 | yearDisable: false, | 92 | yearDisable: false, |
| 105 | showYearSelect: false, | 93 | showYearSelect: false, |
| @@ -108,16 +96,176 @@ export default { | @@ -108,16 +96,176 @@ export default { | ||
| 108 | userType: '', | 96 | userType: '', |
| 109 | userTypeVal: '',//所处阶段1-小学 2-初中 3-高中 | 97 | userTypeVal: '',//所处阶段1-小学 2-初中 3-高中 |
| 110 | showUserTypeSelect: false, | 98 | showUserTypeSelect: false, |
| 111 | - userTypeArr: [{ | ||
| 112 | - label: '小学', | ||
| 113 | - value: 1 | 99 | + userTypeArr: [ |
| 100 | + { | ||
| 101 | + label: '幼儿园', | ||
| 102 | + value: 0 | ||
| 103 | + }, { | ||
| 104 | + label: '小学', | ||
| 105 | + value: 1 | ||
| 106 | + }, { | ||
| 107 | + label: '初中', | ||
| 108 | + value: 2 | ||
| 109 | + }, { | ||
| 110 | + label: '高中', | ||
| 111 | + value: 3 | ||
| 112 | + }], | ||
| 113 | + | ||
| 114 | + classType: '', | ||
| 115 | + classTypeVal: '',//班级 | ||
| 116 | + showUserClassSelect: false, | ||
| 117 | + classTypeArr: [{ | ||
| 118 | + label: '1班', | ||
| 119 | + value: '1班' | ||
| 120 | + }, { | ||
| 121 | + label: '2班', | ||
| 122 | + value: '2班' | ||
| 123 | + }, { | ||
| 124 | + label: '3班', | ||
| 125 | + value: '3班' | ||
| 126 | + }, { | ||
| 127 | + label: '4班', | ||
| 128 | + value: '4班' | ||
| 129 | + }, { | ||
| 130 | + label: '5班', | ||
| 131 | + value: '5班' | ||
| 132 | + }, { | ||
| 133 | + label: '6班', | ||
| 134 | + value: '6班' | ||
| 135 | + }, { | ||
| 136 | + label: '7班', | ||
| 137 | + value: '7班' | ||
| 138 | + }, { | ||
| 139 | + label: '8班', | ||
| 140 | + value: '8班' | ||
| 141 | + }, { | ||
| 142 | + label: '9班', | ||
| 143 | + value: '9班' | ||
| 144 | + }, { | ||
| 145 | + label: '10班', | ||
| 146 | + value: '10班' | ||
| 147 | + }, { | ||
| 148 | + label: '11班', | ||
| 149 | + value: '11班' | ||
| 150 | + }, { | ||
| 151 | + label: '12班', | ||
| 152 | + value: '12班' | ||
| 153 | + }, { | ||
| 154 | + label: '13班', | ||
| 155 | + value: '13班' | ||
| 156 | + }, { | ||
| 157 | + label: '14班', | ||
| 158 | + value: '14班' | ||
| 159 | + }, { | ||
| 160 | + label: '15班', | ||
| 161 | + value: '15班' | ||
| 162 | + }, { | ||
| 163 | + label: '16班', | ||
| 164 | + value: '16班' | ||
| 165 | + }, { | ||
| 166 | + label: '17班', | ||
| 167 | + value: '17班' | ||
| 168 | + }, { | ||
| 169 | + label: '18班', | ||
| 170 | + value: '18班' | ||
| 171 | + }, { | ||
| 172 | + label: '19班', | ||
| 173 | + value: '19班' | ||
| 174 | + }, { | ||
| 175 | + label: '20班', | ||
| 176 | + value: '20班' | ||
| 177 | + }, { | ||
| 178 | + label: '21班', | ||
| 179 | + value: '21班' | ||
| 180 | + }, { | ||
| 181 | + label: '22班', | ||
| 182 | + value: '22班' | ||
| 183 | + }, { | ||
| 184 | + label: '23班', | ||
| 185 | + value: '23班' | ||
| 186 | + }, { | ||
| 187 | + label: '24班', | ||
| 188 | + value: '24班' | ||
| 189 | + }, { | ||
| 190 | + label: '25班', | ||
| 191 | + value: '25班' | ||
| 192 | + }, { | ||
| 193 | + label: '26班', | ||
| 194 | + value: '26班' | ||
| 195 | + }, { | ||
| 196 | + label: '27班', | ||
| 197 | + value: '27班' | ||
| 198 | + }, { | ||
| 199 | + label: '28班', | ||
| 200 | + value: '28班' | ||
| 201 | + }, { | ||
| 202 | + label: '29班', | ||
| 203 | + value: '29班' | ||
| 204 | + }, { | ||
| 205 | + label: '30班', | ||
| 206 | + value: '30班' | ||
| 207 | + }, { | ||
| 208 | + label: '31班', | ||
| 209 | + value: '31班' | ||
| 210 | + }, { | ||
| 211 | + label: '32班', | ||
| 212 | + value: '32班' | ||
| 213 | + }, { | ||
| 214 | + label: '33班', | ||
| 215 | + value: '33班' | ||
| 216 | + }, { | ||
| 217 | + label: '34班', | ||
| 218 | + value: '34班' | ||
| 219 | + }, { | ||
| 220 | + label: '35班', | ||
| 221 | + value: '35班' | ||
| 222 | + }, { | ||
| 223 | + label: '36班', | ||
| 224 | + value: '36班' | ||
| 225 | + }, { | ||
| 226 | + label: '37班', | ||
| 227 | + value: '37班' | ||
| 114 | }, { | 228 | }, { |
| 115 | - label: '初中', | ||
| 116 | - value: 2 | 229 | + label: '38班', |
| 230 | + value: '38班' | ||
| 117 | }, { | 231 | }, { |
| 118 | - label: '高中', | ||
| 119 | - value: 3 | ||
| 120 | - }], | 232 | + label: '39班', |
| 233 | + value: '39班' | ||
| 234 | + }, { | ||
| 235 | + label: '40班', | ||
| 236 | + value: '40班' | ||
| 237 | + }, { | ||
| 238 | + label: '41班', | ||
| 239 | + value: '41班' | ||
| 240 | + }, { | ||
| 241 | + label: '42班', | ||
| 242 | + value: '42班' | ||
| 243 | + }, { | ||
| 244 | + label: '43班', | ||
| 245 | + value: '43班' | ||
| 246 | + }, { | ||
| 247 | + label: '44班', | ||
| 248 | + value: '44班' | ||
| 249 | + }, { | ||
| 250 | + label: '45班', | ||
| 251 | + value: '45班' | ||
| 252 | + }, { | ||
| 253 | + label: '46班', | ||
| 254 | + value: '46班' | ||
| 255 | + }, { | ||
| 256 | + label: '47班', | ||
| 257 | + value: '47班' | ||
| 258 | + }, { | ||
| 259 | + label: '48班', | ||
| 260 | + value: '48班' | ||
| 261 | + }, { | ||
| 262 | + label: '49班', | ||
| 263 | + value: '49班' | ||
| 264 | + }, { | ||
| 265 | + label: '50班', | ||
| 266 | + value: '50班' | ||
| 267 | + } | ||
| 268 | + ], | ||
| 121 | 269 | ||
| 122 | area: '', | 270 | area: '', |
| 123 | areaCode: '', | 271 | areaCode: '', |
| @@ -169,20 +317,20 @@ export default { | @@ -169,20 +317,20 @@ export default { | ||
| 169 | }, | 317 | }, |
| 170 | onSuccess: res => { | 318 | onSuccess: res => { |
| 171 | this.$toast.clear() | 319 | this.$toast.clear() |
| 172 | - if (res.success) { | ||
| 173 | - let i = 60; | ||
| 174 | - codeInterval = setInterval(() => { | ||
| 175 | - if (i == 0) { | ||
| 176 | - this.codeText = `获取验证码`; | ||
| 177 | - clearInterval(codeInterval); | ||
| 178 | - return; | ||
| 179 | - } | ||
| 180 | - this.codeText = `重试(${i})`; | ||
| 181 | - i-- | ||
| 182 | - }, 1000) | ||
| 183 | - } else { | ||
| 184 | - this.$toast.fail(res.message) | ||
| 185 | - } | 320 | + if (res.success) { |
| 321 | + let i = 60; | ||
| 322 | + codeInterval = setInterval(() => { | ||
| 323 | + if (i == 0) { | ||
| 324 | + this.codeText = `获取验证码`; | ||
| 325 | + clearInterval(codeInterval); | ||
| 326 | + return; | ||
| 327 | + } | ||
| 328 | + this.codeText = `重试(${i})`; | ||
| 329 | + i-- | ||
| 330 | + }, 1000) | ||
| 331 | + } else { | ||
| 332 | + this.$toast.fail(res.message) | ||
| 333 | + } | ||
| 186 | }, | 334 | }, |
| 187 | onFail: err => { | 335 | onFail: err => { |
| 188 | console.log('err', err) | 336 | console.log('err', err) |
| @@ -209,7 +357,7 @@ export default { | @@ -209,7 +357,7 @@ export default { | ||
| 209 | forbidClick: true | 357 | forbidClick: true |
| 210 | }) | 358 | }) |
| 211 | this.mgop({ | 359 | this.mgop({ |
| 212 | - api: 'mgop.sz.hswsy.checkPhoneAndCode', // 必须 | 360 | + api: 'mgop.sz.hswsy.checkPhone', // 必须 |
| 213 | host: 'https://mapi.zjzwfw.gov.cn/', | 361 | host: 'https://mapi.zjzwfw.gov.cn/', |
| 214 | dataType: 'JSON', | 362 | dataType: 'JSON', |
| 215 | type: 'POST', | 363 | type: 'POST', |
| @@ -220,69 +368,12 @@ export default { | @@ -220,69 +368,12 @@ export default { | ||
| 220 | data: { | 368 | data: { |
| 221 | "code": this.code, | 369 | "code": this.code, |
| 222 | "phone": this.phone, | 370 | "phone": this.phone, |
| 223 | - "unionId": localStorage.getItem('centerNo') | ||
| 224 | - }, | ||
| 225 | - onSuccess: res => { | ||
| 226 | - this.$toast.clear() | ||
| 227 | - if (res.data.code == 200) { | ||
| 228 | - if (res.data.data.length == 0) { | ||
| 229 | - // 白名单无用户 | ||
| 230 | - this.step = 3; | ||
| 231 | - } else { | ||
| 232 | - // 白名单有用户 | ||
| 233 | - let claimChildList = res.data.data | ||
| 234 | - for (let i in claimChildList) { | ||
| 235 | - claimChildList[i].checked = false | ||
| 236 | - } | ||
| 237 | - this.claimChildList = claimChildList | ||
| 238 | - this.step = 2; | ||
| 239 | - } | ||
| 240 | - } else { | ||
| 241 | - this.$toast.fail(res.data?.message) | ||
| 242 | - } | ||
| 243 | - }, | ||
| 244 | - onFail: err => { | ||
| 245 | - console.log('err', err) | ||
| 246 | - } | ||
| 247 | - }); | ||
| 248 | - }, | ||
| 249 | - | ||
| 250 | - | ||
| 251 | - // 认领孩子 | ||
| 252 | - claimChild () { | ||
| 253 | - const claimChildList = this.claimChildList; | ||
| 254 | - let claimChildId = '' | ||
| 255 | - for (let i in claimChildList) { | ||
| 256 | - if (claimChildList[i].checked) { | ||
| 257 | - if (claimChildId == '') { | ||
| 258 | - claimChildId = claimChildList[i].travelerNum | ||
| 259 | - } else { | ||
| 260 | - claimChildId = claimChildId + ',' + claimChildList[i].travelerNum | ||
| 261 | - } | ||
| 262 | - } | ||
| 263 | - } | ||
| 264 | - this.$toast.loading({ | ||
| 265 | - message: '加载中...', | ||
| 266 | - duration: 0, | ||
| 267 | - forbidClick: true | ||
| 268 | - }) | ||
| 269 | - this.mgop({ | ||
| 270 | - api: 'mgop.sz.hswsy.claimChildren', // 必须 | ||
| 271 | - host: 'https://mapi.zjzwfw.gov.cn/', | ||
| 272 | - dataType: 'JSON', | ||
| 273 | - type: 'POST', | ||
| 274 | - appKey: 'fuxgnukl+2001895516+edccpx', // 必须 | ||
| 275 | - headers: { | ||
| 276 | - // 'isTestUrl': '1' | ||
| 277 | - }, | ||
| 278 | - data: { | ||
| 279 | - "loginMobile": this.phone, | ||
| 280 | - "subUserNums": claimChildId | 371 | + "travelerNum": this.travelerNum |
| 281 | }, | 372 | }, |
| 282 | onSuccess: res => { | 373 | onSuccess: res => { |
| 283 | this.$toast.clear() | 374 | this.$toast.clear() |
| 284 | if (res.data.code == 200) { | 375 | if (res.data.code == 200) { |
| 285 | - this.$toast.success('认领成功') | 376 | + this.$toast.success('认证成功') |
| 286 | this.$emit('complete') | 377 | this.$emit('complete') |
| 287 | } else { | 378 | } else { |
| 288 | this.$toast.fail(res.data?.message) | 379 | this.$toast.fail(res.data?.message) |
| @@ -294,7 +385,6 @@ export default { | @@ -294,7 +385,6 @@ export default { | ||
| 294 | }); | 385 | }); |
| 295 | }, | 386 | }, |
| 296 | 387 | ||
| 297 | - | ||
| 298 | // 初始化入学年份选项 | 388 | // 初始化入学年份选项 |
| 299 | initYearArr () { | 389 | initYearArr () { |
| 300 | // 页面创建时执行 | 390 | // 页面创建时执行 |
| @@ -324,6 +414,12 @@ export default { | @@ -324,6 +414,12 @@ export default { | ||
| 324 | this.userTypeVal = value.value; | 414 | this.userTypeVal = value.value; |
| 325 | this.showUserTypeSelect = false; | 415 | this.showUserTypeSelect = false; |
| 326 | }, | 416 | }, |
| 417 | + //班级选择 | ||
| 418 | + selectClassTypeOver (value) { | ||
| 419 | + this.classType = value.label; | ||
| 420 | + this.classTypeVal = value.value; | ||
| 421 | + this.showUserClassSelect = false; | ||
| 422 | + }, | ||
| 327 | // 获取地区列表 | 423 | // 获取地区列表 |
| 328 | GetSysAreaList () { | 424 | GetSysAreaList () { |
| 329 | this.mgop({ | 425 | this.mgop({ |
| @@ -389,6 +485,9 @@ export default { | @@ -389,6 +485,9 @@ export default { | ||
| 389 | else if (!this.userType) { | 485 | else if (!this.userType) { |
| 390 | this.$toast('请选择阶段'); | 486 | this.$toast('请选择阶段'); |
| 391 | } | 487 | } |
| 488 | + else if (!this.classType) { | ||
| 489 | + this.$toast('请选择班级'); | ||
| 490 | + } | ||
| 392 | else if (!this.year) { | 491 | else if (!this.year) { |
| 393 | this.$toast('请选择入学年份'); | 492 | this.$toast('请选择入学年份'); |
| 394 | } | 493 | } |
| @@ -400,7 +499,7 @@ export default { | @@ -400,7 +499,7 @@ export default { | ||
| 400 | } else { | 499 | } else { |
| 401 | let postData = { | 500 | let postData = { |
| 402 | contactsName: this.studentName, | 501 | contactsName: this.studentName, |
| 403 | - contactsMobile: this.phone, | 502 | + contactsMobile: this.userInfo?.phone, |
| 404 | contactsType: 1, | 503 | contactsType: 1, |
| 405 | province: this.area.split(',')[0],//省份 | 504 | province: this.area.split(',')[0],//省份 |
| 406 | city: this.area.split(',')[1],//城市 | 505 | city: this.area.split(',')[1],//城市 |
| @@ -408,7 +507,8 @@ export default { | @@ -408,7 +507,8 @@ export default { | ||
| 408 | schoolName: this.school,//学校名称 | 507 | schoolName: this.school,//学校名称 |
| 409 | enrollYear: this.year,//入学年份 | 508 | enrollYear: this.year,//入学年份 |
| 410 | travelerType: this.userTypeVal,//1-小学 2-初中 3-高中 | 509 | travelerType: this.userTypeVal,//1-小学 2-初中 3-高中 |
| 411 | - loginMobile: this.userInfo?.phone | 510 | + loginMobile: this.userInfo?.phone, |
| 511 | + className: this.classType //班级 | ||
| 412 | } | 512 | } |
| 413 | this.$toast.loading({ | 513 | this.$toast.loading({ |
| 414 | message: '加载中', | 514 | message: '加载中', |
src/views/Home/component/HomeChildList.vue
| @@ -3,9 +3,9 @@ | @@ -3,9 +3,9 @@ | ||
| 3 | <div class="stu_info" v-for="(item,index) in childList" :key="index" @click="handleStudentDetail(index)"> | 3 | <div class="stu_info" v-for="(item,index) in childList" :key="index" @click="handleStudentDetail(index)"> |
| 4 | <div class="title"> | 4 | <div class="title"> |
| 5 | <p>学生信息</p> | 5 | <p>学生信息</p> |
| 6 | - <!-- <button @click="handleYanxue(index)">出示研学码</button> --> | 6 | + <button v-if="item.whiteFlag!=1||item.isBing!=1" @click.stop="Certification(index)">激活认证</button> |
| 7 | </div> | 7 | </div> |
| 8 | - <img v-if="item.whiteFlag" class="img_auth" src="@/assets/home/auth.png" alt=""> | 8 | + <img v-if="item.whiteFlag==1&&item.isBing==1" class="img_auth" src="@/assets/home/auth.png" alt=""> |
| 9 | <div class="item"> | 9 | <div class="item"> |
| 10 | <van-icon name="manager" /><span>{{item.travelerName}}</span> | 10 | <van-icon name="manager" /><span>{{item.travelerName}}</span> |
| 11 | </div> | 11 | </div> |
| @@ -21,7 +21,7 @@ | @@ -21,7 +21,7 @@ | ||
| 21 | 添加学生信息 | 21 | 添加学生信息 |
| 22 | </div> | 22 | </div> |
| 23 | <van-popup style="background: transparent;" get-container="body" v-model="showAddChildPopupGroup"> | 23 | <van-popup style="background: transparent;" get-container="body" v-model="showAddChildPopupGroup"> |
| 24 | - <AddChildPopupGroup @complete="complete"></AddChildPopupGroup> | 24 | + <AddChildPopupGroup @complete="complete" :step="step" :travelerNum="travelerNum"></AddChildPopupGroup> |
| 25 | </van-popup> | 25 | </van-popup> |
| 26 | </div> | 26 | </div> |
| 27 | </template> | 27 | </template> |
| @@ -39,17 +39,20 @@ export default { | @@ -39,17 +39,20 @@ export default { | ||
| 39 | return { | 39 | return { |
| 40 | showAddChildPopupGroup: false,//新增孩子弹出框 | 40 | showAddChildPopupGroup: false,//新增孩子弹出框 |
| 41 | childList: [],//孩子列表 | 41 | childList: [],//孩子列表 |
| 42 | + step: 1, | ||
| 43 | + travelerNum: '' | ||
| 42 | } | 44 | } |
| 43 | }, | 45 | }, |
| 44 | mounted () { | 46 | mounted () { |
| 45 | this.getChildList() | 47 | this.getChildList() |
| 46 | }, | 48 | }, |
| 47 | methods: { | 49 | methods: { |
| 48 | - // 研学码 | ||
| 49 | - // handleYanxue (index) { | ||
| 50 | - // localStorage.setItem('bindYanxueCodeChildInfo',JSON.stringify(this.childList[index])) | ||
| 51 | - // this.$router.push({ name: 'YanxueCode' }) | ||
| 52 | - // }, | 50 | + // 激活认证 |
| 51 | + Certification (index) { | ||
| 52 | + this.step = 2 | ||
| 53 | + this.travelerNum = this.childList[index].travelerNum | ||
| 54 | + this.showAddChildPopupGroup = true | ||
| 55 | + }, | ||
| 53 | // 进入学生详情页 | 56 | // 进入学生详情页 |
| 54 | handleStudentDetail (index) { | 57 | handleStudentDetail (index) { |
| 55 | localStorage.setItem('StudentDetialInfo', JSON.stringify(this.childList[index])) | 58 | localStorage.setItem('StudentDetialInfo', JSON.stringify(this.childList[index])) |
| @@ -78,7 +81,18 @@ export default { | @@ -78,7 +81,18 @@ export default { | ||
| 78 | console.log('getUserInfo', res) | 81 | console.log('getUserInfo', res) |
| 79 | this.$toast.clear() | 82 | this.$toast.clear() |
| 80 | if (res.data.code == 200) { | 83 | if (res.data.code == 200) { |
| 81 | - this.childList = res.data.data.userInfo.subUsers | 84 | + const userInfo = res.data.data.userInfo |
| 85 | + this.childList = userInfo.subUsers | ||
| 86 | + if (userInfo.schoolNames || userInfo.schoolNames == [] || userInfo.schoolNames == 'null') { | ||
| 87 | + localStorage.setItem('schoolNames', JSON.stringify(userInfo.schoolNames)) | ||
| 88 | + this.$store.commit('changeSchool', userInfo.schoolNames) | ||
| 89 | + if (localStorage.getItem('schoolNamesChoose')) { | ||
| 90 | + localStorage.setItem('schoolNamesChoose', userInfo.schoolNames[0]) | ||
| 91 | + } | ||
| 92 | + } else { | ||
| 93 | + localStorage.setItem('schoolNames', []) | ||
| 94 | + this.$store.commit('changeSchool', []) | ||
| 95 | + } | ||
| 82 | } | 96 | } |
| 83 | }, | 97 | }, |
| 84 | onFail: err => { | 98 | onFail: err => { |
| @@ -86,8 +100,9 @@ export default { | @@ -86,8 +100,9 @@ export default { | ||
| 86 | } | 100 | } |
| 87 | }); | 101 | }); |
| 88 | }, | 102 | }, |
| 89 | - addStudent(){ | ||
| 90 | - this.showAddChildPopupGroup=true | 103 | + addStudent () { |
| 104 | + this.step = 1 | ||
| 105 | + this.showAddChildPopupGroup = true | ||
| 91 | }, | 106 | }, |
| 92 | complete () { | 107 | complete () { |
| 93 | this.showAddChildPopupGroup = false; | 108 | this.showAddChildPopupGroup = false; |
| @@ -201,12 +216,12 @@ export default { | @@ -201,12 +216,12 @@ export default { | ||
| 201 | </style> | 216 | </style> |
| 202 | <style lang="scss"> | 217 | <style lang="scss"> |
| 203 | .elder { | 218 | .elder { |
| 204 | - .home_child_list .stu_info{ | 219 | + .home_child_list .stu_info { |
| 205 | height: auto; | 220 | height: auto; |
| 206 | - .title p{ | 221 | + .title p { |
| 207 | font-size: 40px; | 222 | font-size: 40px; |
| 208 | } | 223 | } |
| 209 | - .item{ | 224 | + .item { |
| 210 | font-size: 38px; | 225 | font-size: 38px; |
| 211 | } | 226 | } |
| 212 | } | 227 | } |
src/views/Service/AbroadDetail.vue
| @@ -95,13 +95,13 @@ | @@ -95,13 +95,13 @@ | ||
| 95 | <img class="notime" v-if="packageArr.length==0" src="@/assets/service/notime.png" alt=""> | 95 | <img class="notime" v-if="packageArr.length==0" src="@/assets/service/notime.png" alt=""> |
| 96 | 96 | ||
| 97 | <van-tabs class="tabs top_border" v-model="active" swipeable :ellipsis="false" color="#4092FF" scrollspy sticky> | 97 | <van-tabs class="tabs top_border" v-model="active" swipeable :ellipsis="false" color="#4092FF" scrollspy sticky> |
| 98 | - <van-tab title="商品详情"> | 98 | + <van-tab title="产品详情"> |
| 99 | <div class="tag_item" v-if="detailData.productFeatures"> | 99 | <div class="tag_item" v-if="detailData.productFeatures"> |
| 100 | - <p class="tag_title">商品特色</p> | 100 | + <p class="tag_title">产品特色</p> |
| 101 | <p class="tag_text" v-html="detailData.productFeatures"></p> | 101 | <p class="tag_text" v-html="detailData.productFeatures"></p> |
| 102 | </div> | 102 | </div> |
| 103 | <div class="tag_item" v-if="detailData.productDescription"> | 103 | <div class="tag_item" v-if="detailData.productDescription"> |
| 104 | - <p class="tag_title">商品描述</p> | 104 | + <p class="tag_title">产品描述</p> |
| 105 | <div class="content_box"> | 105 | <div class="content_box"> |
| 106 | <div class="content_all" :class="isOpen ? 'open' : ''"> | 106 | <div class="content_all" :class="isOpen ? 'open' : ''"> |
| 107 | <p v-html="detailData.productDescription"></p> | 107 | <p v-html="detailData.productDescription"></p> |
| @@ -347,7 +347,7 @@ export default { | @@ -347,7 +347,7 @@ export default { | ||
| 347 | } else { | 347 | } else { |
| 348 | let message = res.data.message; | 348 | let message = res.data.message; |
| 349 | if (!message) { | 349 | if (!message) { |
| 350 | - message = '商品不存在' | 350 | + message = '产品不存在' |
| 351 | } | 351 | } |
| 352 | this.$toast.fail(message) | 352 | this.$toast.fail(message) |
| 353 | } | 353 | } |
src/views/Service/EditContact.vue
| @@ -31,25 +31,35 @@ export default { | @@ -31,25 +31,35 @@ export default { | ||
| 31 | phone: '', | 31 | phone: '', |
| 32 | gender: '', | 32 | gender: '', |
| 33 | travelerIdCard: '', | 33 | travelerIdCard: '', |
| 34 | - travelerNum: '' | 34 | + travelerNum: '', |
| 35 | + isAdd: false,//是否为新增家长(新增学生不在此页面) | ||
| 35 | } | 36 | } |
| 36 | }, | 37 | }, |
| 37 | mounted () { | 38 | mounted () { |
| 38 | let editContact = JSON.parse(localStorage.getItem('editContact')) | 39 | let editContact = JSON.parse(localStorage.getItem('editContact')) |
| 39 | - | ||
| 40 | - this.userType = editContact?.userType | ||
| 41 | - this.userTypeName = editContact?.userType == 1 ? '学生' : '家长' | ||
| 42 | - if (editContact?.travelerIdCard) { | ||
| 43 | - this.travelerIdCard = editContact?.travelerIdCard | ||
| 44 | - } | ||
| 45 | - if (editContact?.travelerMobile) { | ||
| 46 | - this.phone = editContact?.travelerMobile | ||
| 47 | - } | ||
| 48 | - if (editContact?.travelerName) { | ||
| 49 | - this.travelerName = editContact?.travelerName | 40 | + if (this.$route.query.add) { |
| 41 | + console.log('新增家长') | ||
| 42 | + this.userType = 2; | ||
| 43 | + this.userTypeName = '家长' | ||
| 44 | + this.isAdd = true; | ||
| 45 | + } else { | ||
| 46 | + this.userType = editContact?.userType | ||
| 47 | + this.userTypeName = editContact?.userType == 1 ? '学生' : '家长' | ||
| 48 | + if (editContact?.travelerIdCard) { | ||
| 49 | + this.travelerIdCard = editContact?.travelerIdCard | ||
| 50 | + } | ||
| 51 | + if (editContact?.travelerMobile) { | ||
| 52 | + this.phone = editContact?.travelerMobile | ||
| 53 | + } | ||
| 54 | + if (editContact?.travelerName) { | ||
| 55 | + this.travelerName = editContact?.travelerName | ||
| 56 | + } | ||
| 57 | + if (editContact?.gender) { | ||
| 58 | + this.gender = String(editContact?.gender) | ||
| 59 | + } | ||
| 60 | + this.userType = editContact?.userType | ||
| 61 | + this.travelerNum = editContact?.travelerNum | ||
| 50 | } | 62 | } |
| 51 | - this.userType = editContact?.userType | ||
| 52 | - this.travelerNum = editContact?.travelerNum | ||
| 53 | }, | 63 | }, |
| 54 | methods: { | 64 | methods: { |
| 55 | // 确认 | 65 | // 确认 |
| @@ -77,13 +87,15 @@ export default { | @@ -77,13 +87,15 @@ export default { | ||
| 77 | let userInfo = localStorage.getItem('userInfo') | 87 | let userInfo = localStorage.getItem('userInfo') |
| 78 | userInfo = userInfo ? JSON.parse(userInfo) : userInfo; | 88 | userInfo = userInfo ? JSON.parse(userInfo) : userInfo; |
| 79 | let postData = { | 89 | let postData = { |
| 80 | - userNum: this.travelerNum, | ||
| 81 | contactsName: this.travelerName, | 90 | contactsName: this.travelerName, |
| 82 | contactsMobile: this.phone, | 91 | contactsMobile: this.phone, |
| 83 | contactsIdCard: this.travelerIdCard, | 92 | contactsIdCard: this.travelerIdCard, |
| 84 | contactsType: this.userType, | 93 | contactsType: this.userType, |
| 85 | gender: Number(this.gender), | 94 | gender: Number(this.gender), |
| 86 | loginMobile: userInfo?.phone | 95 | loginMobile: userInfo?.phone |
| 96 | + }; | ||
| 97 | + if (!this.isAdd) {//新增学生或家长 | ||
| 98 | + postData.userNum = this.travelerNum; | ||
| 87 | } | 99 | } |
| 88 | this.$toast.loading({ | 100 | this.$toast.loading({ |
| 89 | message: '加载中', | 101 | message: '加载中', |
src/views/Service/SelectContact.vue
| 1 | <template> | 1 | <template> |
| 2 | <div id="selectContact"> | 2 | <div id="selectContact"> |
| 3 | + <div class="control"> | ||
| 4 | + <div class="add_btn" @click="showAddChildPopupGroup=true"> | ||
| 5 | + <van-icon name="add-o" /> | ||
| 6 | + 新增学生 | ||
| 7 | + </div> | ||
| 8 | + <div class="add_btn" @click="addContact"> | ||
| 9 | + <van-icon name="add-o" /> | ||
| 10 | + 新增家长 | ||
| 11 | + </div> | ||
| 12 | + </div> | ||
| 3 | <div class="box"> | 13 | <div class="box"> |
| 4 | <template v-for="(item,index) in contactList"> | 14 | <template v-for="(item,index) in contactList"> |
| 5 | <div class="contact_item" v-if="!hideParent&&item.userType!=1||item.userType==1" :key="index"> | 15 | <div class="contact_item" v-if="!hideParent&&item.userType!=1||item.userType==1" :key="index"> |
| 6 | - <van-icon class="edit" name="edit" @click="editContact(index)" /> | 16 | + <van-checkbox class="checkbox" v-model="item.checked" shape="square"></van-checkbox> |
| 7 | <div class="info"> | 17 | <div class="info"> |
| 8 | <p class="name">{{item.travelerName}}<span v-if="!item.travelerIdCard||!item.gender">需完善</span></p> | 18 | <p class="name">{{item.travelerName}}<span v-if="!item.travelerIdCard||!item.gender">需完善</span></p> |
| 9 | <p class="des">{{item.userType==1?'学生':'家长'}}·{{item.travelerMobile}}</p> | 19 | <p class="des">{{item.userType==1?'学生':'家长'}}·{{item.travelerMobile}}</p> |
| 10 | </div> | 20 | </div> |
| 11 | - <van-checkbox v-if="item.userType==1" class="checkbox" v-model="item.checked" shape="square"></van-checkbox> | ||
| 12 | - <van-checkbox v-else class="checkbox" v-model="item.checked" @change="checkboxChange" shape="square"></van-checkbox> | 21 | + <van-icon class="edit" name="edit" @click="editContact(index)" /> |
| 13 | </div> | 22 | </div> |
| 14 | </template> | 23 | </template> |
| 15 | - <div class="add_btn" @click="showAddChildPopupGroup=true"> | ||
| 16 | - <van-icon name="add-o" /> | ||
| 17 | - 新增出行学生 | ||
| 18 | - </div> | 24 | + |
| 19 | </div> | 25 | </div> |
| 20 | <van-button class="btn" type="primary" @click="selectContact">确定</van-button> | 26 | <van-button class="btn" type="primary" @click="selectContact">确定</van-button> |
| 21 | <van-popup style="background: transparent;" get-container="body" v-model="showAddChildPopupGroup"> | 27 | <van-popup style="background: transparent;" get-container="body" v-model="showAddChildPopupGroup"> |
| 22 | - <AddChildPopupGroup @complete="complete"></AddChildPopupGroup> | 28 | + <AddChildPopupGroup @complete="complete" step='1'></AddChildPopupGroup> |
| 23 | </van-popup> | 29 | </van-popup> |
| 24 | </div> | 30 | </div> |
| 25 | </template> | 31 | </template> |
| 26 | <script> | 32 | <script> |
| 27 | import AddChildPopupGroup from '@/views/Home/component/AddChildPopupGroup' | 33 | import AddChildPopupGroup from '@/views/Home/component/AddChildPopupGroup' |
| 28 | -import { Dialog } from 'vant'; | ||
| 29 | export default { | 34 | export default { |
| 30 | data () { | 35 | data () { |
| 31 | return { | 36 | return { |
| @@ -92,11 +97,16 @@ export default { | @@ -92,11 +97,16 @@ export default { | ||
| 92 | userType: contactItem.userType, | 97 | userType: contactItem.userType, |
| 93 | travelerIdCard: contactItem.travelerIdCard, | 98 | travelerIdCard: contactItem.travelerIdCard, |
| 94 | travelerNum: contactItem.travelerNum, | 99 | travelerNum: contactItem.travelerNum, |
| 95 | - travelerName: contactItem.travelerName | 100 | + travelerName: contactItem.travelerName, |
| 101 | + gender: contactItem.gender, | ||
| 96 | } | 102 | } |
| 97 | localStorage.setItem('editContact', JSON.stringify(editContact)) | 103 | localStorage.setItem('editContact', JSON.stringify(editContact)) |
| 98 | this.$router.push({ name: 'EditContact' }) | 104 | this.$router.push({ name: 'EditContact' }) |
| 99 | }, | 105 | }, |
| 106 | + // 添加家长 | ||
| 107 | + addContact () { | ||
| 108 | + this.$router.push({ name: 'EditContact', query: { add: 1 } }) | ||
| 109 | + }, | ||
| 100 | complete () { | 110 | complete () { |
| 101 | this.showAddChildPopupGroup = false; | 111 | this.showAddChildPopupGroup = false; |
| 102 | this.getContactList() | 112 | this.getContactList() |
| @@ -114,28 +124,36 @@ export default { | @@ -114,28 +124,36 @@ export default { | ||
| 114 | selectedArr.push({ | 124 | selectedArr.push({ |
| 115 | travelerName: contactList[i].travelerName, | 125 | travelerName: contactList[i].travelerName, |
| 116 | travelerMobile: contactList[i].travelerMobile, | 126 | travelerMobile: contactList[i].travelerMobile, |
| 117 | - travelerNum: contactList[i].travelerNum | 127 | + travelerNum: contactList[i].travelerNum, |
| 128 | + userType: contactList[i].userType, | ||
| 118 | }) | 129 | }) |
| 119 | } | 130 | } |
| 120 | } | 131 | } |
| 121 | } | 132 | } |
| 122 | console.log(this.limit, selectedArr.length) | 133 | console.log(this.limit, selectedArr.length) |
| 134 | + // 判断出行人数是否符合 | ||
| 123 | if (this.limit && this.limit != selectedArr.length) { | 135 | if (this.limit && this.limit != selectedArr.length) { |
| 124 | this.$toast(`请选择${this.limit}位出行人`) | 136 | this.$toast(`请选择${this.limit}位出行人`) |
| 125 | return; | 137 | return; |
| 126 | } | 138 | } |
| 127 | - // console.log(selectedArr) | ||
| 128 | - localStorage.setItem('selectedContactArr', JSON.stringify(selectedArr)) | ||
| 129 | - this.$router.back() | ||
| 130 | - }, | ||
| 131 | - checkboxChange (e) { | ||
| 132 | - if (e == true) { | ||
| 133 | - Dialog.alert({ | 139 | + // 判断是否选择学生 |
| 140 | + let hasStudent = false; | ||
| 141 | + for (let i in selectedArr) { | ||
| 142 | + if (selectedArr[i].userType == 1) { | ||
| 143 | + hasStudent = true | ||
| 144 | + } | ||
| 145 | + } | ||
| 146 | + if (!hasStudent) { | ||
| 147 | + this.$dialog.alert({ | ||
| 134 | title: '温馨提示', | 148 | title: '温馨提示', |
| 135 | message: '活动参与主体为学生本人,请选择出行学生!未绑定学生,请新增出行学生进行添加。', | 149 | message: '活动参与主体为学生本人,请选择出行学生!未绑定学生,请新增出行学生进行添加。', |
| 136 | confirmButtonColor: '#3385FF' | 150 | confirmButtonColor: '#3385FF' |
| 137 | }) | 151 | }) |
| 152 | + return; | ||
| 138 | } | 153 | } |
| 154 | + // console.log(selectedArr) | ||
| 155 | + localStorage.setItem('selectedContactArr', JSON.stringify(selectedArr)) | ||
| 156 | + this.$router.back() | ||
| 139 | } | 157 | } |
| 140 | }, | 158 | }, |
| 141 | components: { | 159 | components: { |
| @@ -150,26 +168,38 @@ export default { | @@ -150,26 +168,38 @@ export default { | ||
| 150 | box-sizing: border-box; | 168 | box-sizing: border-box; |
| 151 | padding: 16px 0; | 169 | padding: 16px 0; |
| 152 | background: #f6f7fa; | 170 | background: #f6f7fa; |
| 153 | - .box { | 171 | + .control { |
| 154 | width: 702px; | 172 | width: 702px; |
| 155 | margin: 0 auto; | 173 | margin: 0 auto; |
| 156 | padding: 0 24px; | 174 | padding: 0 24px; |
| 157 | - padding-bottom: 200px; | ||
| 158 | box-sizing: border-box; | 175 | box-sizing: border-box; |
| 159 | background: #fff; | 176 | background: #fff; |
| 160 | border-radius: 16px; | 177 | border-radius: 16px; |
| 178 | + margin-bottom: 24px; | ||
| 161 | .add_btn { | 179 | .add_btn { |
| 180 | + display: inline-block; | ||
| 181 | + width: 50%; | ||
| 162 | line-height: 104px; | 182 | line-height: 104px; |
| 163 | font-size: 28px; | 183 | font-size: 28px; |
| 164 | color: #4092ff; | 184 | color: #4092ff; |
| 165 | text-align: center; | 185 | text-align: center; |
| 166 | } | 186 | } |
| 187 | + } | ||
| 188 | + .box { | ||
| 189 | + width: 702px; | ||
| 190 | + margin: 0 auto; | ||
| 191 | + padding: 0 24px; | ||
| 192 | + padding-bottom: 200px; | ||
| 193 | + box-sizing: border-box; | ||
| 194 | + background: #fff; | ||
| 195 | + border-radius: 16px; | ||
| 196 | + | ||
| 167 | .contact_item { | 197 | .contact_item { |
| 168 | display: flex; | 198 | display: flex; |
| 169 | align-items: center; | 199 | align-items: center; |
| 170 | justify-content: space-between; | 200 | justify-content: space-between; |
| 171 | .edit { | 201 | .edit { |
| 172 | - padding: 20px 20px 20px 0; | 202 | + padding: 20px 0px 20px 20px; |
| 173 | font-size: 40px; | 203 | font-size: 40px; |
| 174 | color: #4092ff; | 204 | color: #4092ff; |
| 175 | } | 205 | } |
| @@ -196,7 +226,7 @@ export default { | @@ -196,7 +226,7 @@ export default { | ||
| 196 | } | 226 | } |
| 197 | } | 227 | } |
| 198 | .checkbox { | 228 | .checkbox { |
| 199 | - padding: 20px 0 20px 20px; | 229 | + padding: 20px 20px 20px 0px; |
| 200 | } | 230 | } |
| 201 | } | 231 | } |
| 202 | } | 232 | } |
| @@ -229,10 +259,9 @@ export default { | @@ -229,10 +259,9 @@ export default { | ||
| 229 | font-size: 40px; | 259 | font-size: 40px; |
| 230 | } | 260 | } |
| 231 | } | 261 | } |
| 232 | - .btn{ | 262 | + .btn { |
| 233 | font-size: 40px; | 263 | font-size: 40px; |
| 234 | } | 264 | } |
| 235 | - | ||
| 236 | } | 265 | } |
| 237 | } | 266 | } |
| 238 | </style> | 267 | </style> |
| 239 | \ No newline at end of file | 268 | \ No newline at end of file |
src/views/Service/ServiceBaseKQ.vue
| @@ -112,7 +112,6 @@ export default { | @@ -112,7 +112,6 @@ export default { | ||
| 112 | mounted () { | 112 | mounted () { |
| 113 | console.log('base mounted') | 113 | console.log('base mounted') |
| 114 | this.initService() | 114 | this.initService() |
| 115 | - | ||
| 116 | }, | 115 | }, |
| 117 | activated () { | 116 | activated () { |
| 118 | console.log('base activated') | 117 | console.log('base activated') |
| @@ -133,7 +132,6 @@ export default { | @@ -133,7 +132,6 @@ export default { | ||
| 133 | }else if(list=='riverList'){ | 132 | }else if(list=='riverList'){ |
| 134 | this.getRiverList() | 133 | this.getRiverList() |
| 135 | } | 134 | } |
| 136 | - | ||
| 137 | }, | 135 | }, |
| 138 | initService () { | 136 | initService () { |
| 139 | this.getUniList() | 137 | this.getUniList() |
| @@ -415,7 +413,6 @@ export default { | @@ -415,7 +413,6 @@ export default { | ||
| 415 | }, | 413 | }, |
| 416 | handleRedLink () { | 414 | handleRedLink () { |
| 417 | location.href = 'https://720yun.com/t/89vkzwd7pfw?scene_id=80780201' | 415 | location.href = 'https://720yun.com/t/89vkzwd7pfw?scene_id=80780201' |
| 418 | - | ||
| 419 | } | 416 | } |
| 420 | }, | 417 | }, |
| 421 | components: { | 418 | components: { |
| @@ -0,0 +1,124 @@ | @@ -0,0 +1,124 @@ | ||
| 1 | +/* 集团认领 年级班级*/ | ||
| 2 | +<template> | ||
| 3 | + <div> | ||
| 4 | + <div class="fontBox">已认领</div> | ||
| 5 | + <div class="card"> | ||
| 6 | + <div class="cardItem" v-for="(v,i) in schoolList" :key="i"> | ||
| 7 | + <div>2021级01班</div> | ||
| 8 | + <div class="cardItem_grey" @click="switchSchool">取消认领</div> | ||
| 9 | + </div> | ||
| 10 | + </div> | ||
| 11 | + <div class="fontBox">未认领</div> | ||
| 12 | + <div class="treeCard"> | ||
| 13 | + <van-collapse v-model="activeNames" v-for="(v,i) in treeList" :key='i'> | ||
| 14 | + <van-collapse-item title="标题1" :name="i">内容</van-collapse-item> | ||
| 15 | + </van-collapse> | ||
| 16 | + </div> | ||
| 17 | + | ||
| 18 | + <van-popup style="background: transparent;" get-container="body" v-model="showSchool"> | ||
| 19 | + <!-- <school-add></school-add> --> | ||
| 20 | + <group-penson></group-penson> | ||
| 21 | + </van-popup> | ||
| 22 | + </div> | ||
| 23 | +</template> | ||
| 24 | + | ||
| 25 | +<script> | ||
| 26 | +import schoolAdd from '@/views/Travel/component/schoolAdd' | ||
| 27 | +import groupPenson from '@/views/Travel/component/groupPenson' | ||
| 28 | +export default { | ||
| 29 | + components: { schoolAdd , groupPenson}, | ||
| 30 | + data() { | ||
| 31 | + return { | ||
| 32 | + schoolList: [ | ||
| 33 | + {}, | ||
| 34 | + {}, | ||
| 35 | + {}, | ||
| 36 | + ], | ||
| 37 | + showSchool: false, | ||
| 38 | + // | ||
| 39 | + treeList: [ | ||
| 40 | + { | ||
| 41 | + children: [ | ||
| 42 | + {}, | ||
| 43 | + {}, | ||
| 44 | + ] | ||
| 45 | + }, | ||
| 46 | + {}, | ||
| 47 | + {}, | ||
| 48 | + ], | ||
| 49 | + isShow: false, | ||
| 50 | + activeNames: ['1'], | ||
| 51 | + } | ||
| 52 | + }, | ||
| 53 | + methods: { | ||
| 54 | + //切换学校 | ||
| 55 | + switchSchool() { | ||
| 56 | + // this.showSchool = true | ||
| 57 | + }, | ||
| 58 | + // | ||
| 59 | + childrenClick() { | ||
| 60 | + if(this.isShow) {this.isShow = false} | ||
| 61 | + else { | ||
| 62 | + this.isShow = true | ||
| 63 | + } | ||
| 64 | + }, | ||
| 65 | + // | ||
| 66 | + getClass() { | ||
| 67 | + let phone = '18267566730' | ||
| 68 | + let dataList = '绍兴市鲁迅小学' | ||
| 69 | + // this.yxAxios.post(`${this.proxyUrl}/prod/user/info/claimSchool?loginMobile=${phone}&schoolNames=${dataList}`).then((res) => { | ||
| 70 | + // this.$toast.clear() | ||
| 71 | + // console.log(res.data) | ||
| 72 | + // if (res.data.code == 200) { | ||
| 73 | + // this.$toast.success('认证成功') | ||
| 74 | + // this.$emit('closeJT') | ||
| 75 | + // } else { | ||
| 76 | + // this.$toast.fail(res.data?.message) | ||
| 77 | + // } | ||
| 78 | + // }) | ||
| 79 | + } | ||
| 80 | + } | ||
| 81 | +} | ||
| 82 | +</script> | ||
| 83 | + | ||
| 84 | +<style lang="scss" scoped> | ||
| 85 | +.fontBox { | ||
| 86 | + width: 100vw; | ||
| 87 | + height: 8vw; | ||
| 88 | + display: flex; | ||
| 89 | + align-items: center; | ||
| 90 | + padding: 0 4vw; | ||
| 91 | + box-sizing: border-box; | ||
| 92 | + background-color: #F5F6FA; | ||
| 93 | + font-size: 3.7vw; | ||
| 94 | + font-weight: bold; | ||
| 95 | + color: #0F1826; | ||
| 96 | +} | ||
| 97 | +.card { | ||
| 98 | + padding: 7vw 5vw 0; | ||
| 99 | + box-sizing: border-box; | ||
| 100 | + | ||
| 101 | + .cardItem { | ||
| 102 | + display: flex; | ||
| 103 | + justify-content: space-between; | ||
| 104 | + margin-bottom: 9vw; | ||
| 105 | + font-size: 3.8vw; | ||
| 106 | + | ||
| 107 | + .cardItem_blue { | ||
| 108 | + color:#4092FF | ||
| 109 | + } | ||
| 110 | + .cardItem_grey { | ||
| 111 | + color:#999999 | ||
| 112 | + } | ||
| 113 | + } | ||
| 114 | + | ||
| 115 | + .treeIem { | ||
| 116 | + margin-bottom: 9vw; | ||
| 117 | + font-size: 3.8vw; | ||
| 118 | + } | ||
| 119 | +} | ||
| 120 | +.treeCard { | ||
| 121 | + padding: 2vw 1vw 0; | ||
| 122 | + box-sizing: border-box; | ||
| 123 | +} | ||
| 124 | +</style> | ||
| 0 | \ No newline at end of file | 125 | \ No newline at end of file |
| @@ -0,0 +1,476 @@ | @@ -0,0 +1,476 @@ | ||
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <div class="addchild_group" v-if="step==1"> | ||
| 4 | + <img class="bg" src="@/assets/home/bg2.png" alt=""> | ||
| 5 | + <p class="title">集团管理人员认证</p> | ||
| 6 | + <p class="des">认证完成后可发起集团定制研学活动</p> | ||
| 7 | + <div class="phone_content"> | ||
| 8 | + <div class="item"> | ||
| 9 | + <p class="phone_title">手机号</p> | ||
| 10 | + <div class="flex"> | ||
| 11 | + <input class="code phone" type="tel" maxlength="11" v-model="phone" placeholder="请输入您的手机号"> | ||
| 12 | + <span class="getcode" @click="getCode">{{codeText}}</span> | ||
| 13 | + </div> | ||
| 14 | + </div> | ||
| 15 | + <div class="item"> | ||
| 16 | + <p class="phone_title">验证码</p> | ||
| 17 | + <input class="code" type="text" v-model="code" placeholder="请输入验证码"> | ||
| 18 | + </div> | ||
| 19 | + <button class="submit" @click="checkPhoneAndCode">下一步(1/2)</button> | ||
| 20 | + </div> | ||
| 21 | + </div> | ||
| 22 | + | ||
| 23 | + <div class="addchild_group" v-if="step==2"> | ||
| 24 | + <img class="bg" src="@/assets/home/bg2.png" alt=""> | ||
| 25 | + <p class="title">已查询到相关信息</p> | ||
| 26 | + <p class="des">请仔细确认个人信息后再认领</p> | ||
| 27 | + <div class="child_content"> | ||
| 28 | + <div class="school_box"> | ||
| 29 | + <div class="box" v-for="(v,i) in schoolList" :key="i"> | ||
| 30 | + <div class="box_list"> | ||
| 31 | + <div class="box_name" style="margin:0 0 20px"> | ||
| 32 | + <div class="greyFont">学校:</div> | ||
| 33 | + <div>{{v.schoolName}}</div> | ||
| 34 | + </div> | ||
| 35 | + <!-- <div class="box_name" style="margin:12px 0 40px"> | ||
| 36 | + <div class="greyFont">所在地区:</div> | ||
| 37 | + <div>浙江绍兴 越城区</div> | ||
| 38 | + </div> --> | ||
| 39 | + </div> | ||
| 40 | + <div class="box_check"> | ||
| 41 | + <van-checkbox v-model="v.isAuth" shape="square"></van-checkbox> | ||
| 42 | + </div> | ||
| 43 | + </div> | ||
| 44 | + </div> | ||
| 45 | + <button class="submit" @click="claimChild">完成</button> | ||
| 46 | + </div> | ||
| 47 | + </div> | ||
| 48 | + | ||
| 49 | + <div class="addchild_group" v-if="step==3"> | ||
| 50 | + <img class="bg" src="@/assets/home/bg2.png" alt=""> | ||
| 51 | + <p class="title">暂无相关信息</p> | ||
| 52 | + <p class="des">请确认预留手机号码是否正确</p> | ||
| 53 | + <div class="content"> | ||
| 54 | + <div class="pic"> | ||
| 55 | + <img style="width:100%;height:100%" src="@/assets/Travel/noSchool.png" alt=""> | ||
| 56 | + </div> | ||
| 57 | + <button class="submit" style="margin-top:50px" @click="handleClose">完成</button> | ||
| 58 | + </div> | ||
| 59 | + </div> | ||
| 60 | + | ||
| 61 | + </div> | ||
| 62 | +</template> | ||
| 63 | + | ||
| 64 | +<script> | ||
| 65 | + | ||
| 66 | +import chooseSchool from '@/views/Service/component/chooseSchool' | ||
| 67 | +var codeInterval; | ||
| 68 | +export default { | ||
| 69 | + components: { chooseSchool }, | ||
| 70 | + data () { | ||
| 71 | + return { | ||
| 72 | + step: 1, | ||
| 73 | + publicName: '', | ||
| 74 | + phone: '', | ||
| 75 | + codeText: '获取验证码',//获取验证码按钮文字 | ||
| 76 | + code: '',//验证码 | ||
| 77 | + studentName: '', | ||
| 78 | + showDialog: true, | ||
| 79 | + | ||
| 80 | + claimChildList: [], | ||
| 81 | + | ||
| 82 | + appId: '', | ||
| 83 | + chooseSchoolisShow: false, | ||
| 84 | + | ||
| 85 | + checked: '', | ||
| 86 | + schoolList: [ | ||
| 87 | + | ||
| 88 | + ] | ||
| 89 | + } | ||
| 90 | + }, | ||
| 91 | + | ||
| 92 | + mounted () { | ||
| 93 | + let publicName = localStorage.getItem('publicName') | ||
| 94 | + this.publicName = publicName | ||
| 95 | + let userInfo = localStorage.getItem('userInfo') | ||
| 96 | + this.userInfo = JSON.parse(userInfo); | ||
| 97 | + }, | ||
| 98 | + methods: { | ||
| 99 | + // 获取验证码 | ||
| 100 | + getCode () { | ||
| 101 | + if (this.codeText != '获取验证码') return; | ||
| 102 | + if (!this.phone) { | ||
| 103 | + this.$toast('请输入手机号') | ||
| 104 | + return; | ||
| 105 | + } | ||
| 106 | + if (!this.checkPhone(this.phone)) { | ||
| 107 | + this.$toast('请输入正确的手机号') | ||
| 108 | + return; | ||
| 109 | + } | ||
| 110 | + this.$toast.loading({ | ||
| 111 | + message: '加载中', | ||
| 112 | + duration: 0, | ||
| 113 | + forbidClick: true | ||
| 114 | + }) | ||
| 115 | + this.http.getMsg({ | ||
| 116 | + phone: this.phone | ||
| 117 | + }).then((res) => { | ||
| 118 | + this.$toast.clear() | ||
| 119 | + if (res.success) { | ||
| 120 | + let i = 60; | ||
| 121 | + codeInterval = setInterval(() => { | ||
| 122 | + if (i == 0) { | ||
| 123 | + this.codeText = `获取验证码`; | ||
| 124 | + clearInterval(codeInterval); | ||
| 125 | + return; | ||
| 126 | + } | ||
| 127 | + this.codeText = `重试(${i})`; | ||
| 128 | + i-- | ||
| 129 | + }, 1000) | ||
| 130 | + } else { | ||
| 131 | + this.$toast.fail(res.message) | ||
| 132 | + } | ||
| 133 | + }) | ||
| 134 | + }, | ||
| 135 | + // 获取手机号白名单信息 | ||
| 136 | + checkPhoneAndCode () { | ||
| 137 | + if (!this.phone) { | ||
| 138 | + this.$toast('请输入手机号') | ||
| 139 | + return; | ||
| 140 | + } | ||
| 141 | + if (!this.checkPhone(this.phone)) { | ||
| 142 | + this.$toast('请输入正确的手机号') | ||
| 143 | + return; | ||
| 144 | + } | ||
| 145 | + if (!this.code) { | ||
| 146 | + this.$toast('请输入验证码') | ||
| 147 | + return; | ||
| 148 | + } | ||
| 149 | + this.$toast.loading({ | ||
| 150 | + message: '加载中', | ||
| 151 | + duration: 0, | ||
| 152 | + forbidClick: true | ||
| 153 | + }) | ||
| 154 | + const userInfo = JSON.parse(localStorage.getItem('userInfo')) | ||
| 155 | + | ||
| 156 | + // this.yxAxios.post(`${this.proxyUrl}/prod/user/info/checkPhoneAndCode`, { | ||
| 157 | + // "code": this.code, | ||
| 158 | + // "phone": this.phone, | ||
| 159 | + // "unionId": userInfo.unionId, | ||
| 160 | + // 'requestFlag': 2 | ||
| 161 | + // }).then((res) => { | ||
| 162 | + // this.$toast.clear() | ||
| 163 | + // if (res.data.code == 200) { | ||
| 164 | + // if (res.data.data.length == 0) { | ||
| 165 | + // // 白名单无用户 | ||
| 166 | + // this.step = 3; | ||
| 167 | + // } else { | ||
| 168 | + // // 白名单有用户 | ||
| 169 | + // this.schoolList = res.data.data | ||
| 170 | + // this.step = 2; | ||
| 171 | + // } | ||
| 172 | + // } else { | ||
| 173 | + // this.$toast.fail(res.data?.message) | ||
| 174 | + // } | ||
| 175 | + // }) | ||
| 176 | + }, | ||
| 177 | + | ||
| 178 | + // 完成 | ||
| 179 | + claimChild () { | ||
| 180 | + const schoolList = this.schoolList | ||
| 181 | + let dataList = '' | ||
| 182 | + schoolList.forEach(item => { | ||
| 183 | + if(item.isAuth) { | ||
| 184 | + dataList = dataList + item.schoolName + ',' | ||
| 185 | + } | ||
| 186 | + }) | ||
| 187 | + if(dataList) { | ||
| 188 | + dataList = dataList.substring(0 , dataList.length-1); | ||
| 189 | + } | ||
| 190 | + console.log(dataList ) | ||
| 191 | + this.$toast.loading({ | ||
| 192 | + message: '加载中...', | ||
| 193 | + duration: 0, | ||
| 194 | + forbidClick: true | ||
| 195 | + }) | ||
| 196 | + // this.yxAxios.post(`${this.proxyUrl}/prod/user/info/claimSchool?loginMobile=${this.phone}&schoolNames=${dataList}`).then((res) => { | ||
| 197 | + // this.$toast.clear() | ||
| 198 | + // console.log(res.data) | ||
| 199 | + // if (res.data.code == 200) { | ||
| 200 | + // this.$toast.success('认证成功') | ||
| 201 | + // this.$emit('closeJT') | ||
| 202 | + // } else { | ||
| 203 | + // this.$toast.fail(res.data?.message) | ||
| 204 | + // } | ||
| 205 | + // }) | ||
| 206 | + }, | ||
| 207 | + | ||
| 208 | + handleClose () { | ||
| 209 | + this.$emit('closeJT') | ||
| 210 | + }, | ||
| 211 | + checkPhone (phone) { | ||
| 212 | + if ((/^1[3456789]\d{9}$/.test(phone))) { | ||
| 213 | + return true | ||
| 214 | + } else { | ||
| 215 | + return false | ||
| 216 | + } | ||
| 217 | + }, | ||
| 218 | + }, | ||
| 219 | + destroyed () { | ||
| 220 | + clearInterval(codeInterval); | ||
| 221 | + }, | ||
| 222 | +} | ||
| 223 | +</script> | ||
| 224 | +<style lang="scss" scoped> | ||
| 225 | +.addchild_group { | ||
| 226 | + width: 638px; | ||
| 227 | + height: 836px; | ||
| 228 | + background: #ffffff; | ||
| 229 | + border-radius: 24px; | ||
| 230 | + position: relative; | ||
| 231 | + .bg { | ||
| 232 | + width: 100%; | ||
| 233 | + position: absolute; | ||
| 234 | + top: 0; | ||
| 235 | + left: 0; | ||
| 236 | + } | ||
| 237 | + .title { | ||
| 238 | + position: relative; | ||
| 239 | + width: 100%; | ||
| 240 | + padding-top: 70px; | ||
| 241 | + padding-bottom: 8px; | ||
| 242 | + text-align: center; | ||
| 243 | + font-size: 34px; | ||
| 244 | + font-weight: bold; | ||
| 245 | + color: #0857ff; | ||
| 246 | + } | ||
| 247 | + .des { | ||
| 248 | + position: relative; | ||
| 249 | + width: 100%; | ||
| 250 | + box-sizing: border-box; | ||
| 251 | + padding: 0 15%; | ||
| 252 | + text-align: center; | ||
| 253 | + font-size: 24px; | ||
| 254 | + color: #6596ff; | ||
| 255 | + } | ||
| 256 | + .content { | ||
| 257 | + width: 100%; | ||
| 258 | + box-sizing: border-box; | ||
| 259 | + padding: 0 40px; | ||
| 260 | + position: absolute; | ||
| 261 | + top: 236px; | ||
| 262 | + left: 0; | ||
| 263 | + .name { | ||
| 264 | + width: 558px; | ||
| 265 | + height: 50px; | ||
| 266 | + font-size: 28px; | ||
| 267 | + color: #000; | ||
| 268 | + padding-left: 20px; | ||
| 269 | + box-sizing: border-box; | ||
| 270 | + } | ||
| 271 | + .item { | ||
| 272 | + width: 558px; | ||
| 273 | + height: 72px; | ||
| 274 | + border-radius: 36px; | ||
| 275 | + background: #f7f7f7; | ||
| 276 | + box-sizing: border-box; | ||
| 277 | + font-size: 28px; | ||
| 278 | + padding: 0 32px; | ||
| 279 | + display: flex; | ||
| 280 | + justify-content: space-between; | ||
| 281 | + align-items: center; | ||
| 282 | + margin-bottom: 28px; | ||
| 283 | + p { | ||
| 284 | + color: #333333; | ||
| 285 | + &.nodata { | ||
| 286 | + color: #999999; | ||
| 287 | + } | ||
| 288 | + } | ||
| 289 | + img { | ||
| 290 | + width: 40px; | ||
| 291 | + } | ||
| 292 | + input { | ||
| 293 | + width: 100%; | ||
| 294 | + background: transparent; | ||
| 295 | + border: 0; | ||
| 296 | + color: #333333; | ||
| 297 | + padding: 0; | ||
| 298 | + &::-webkit-input-placeholder { | ||
| 299 | + color: #999999; | ||
| 300 | + } | ||
| 301 | + } | ||
| 302 | + .btn { | ||
| 303 | + width: 240px; | ||
| 304 | + height: 55px; | ||
| 305 | + float: right; | ||
| 306 | + font-size: 28px; | ||
| 307 | + background: linear-gradient(135deg, #cdf8cf 0%, #8af36f 100%); | ||
| 308 | + box-shadow: 0px 4px 8px 0px rgba(189, 189, 189, 0.5), | ||
| 309 | + 0px 8px 12px 0px rgba(89, 199, 171, 0.5); | ||
| 310 | + border-radius: 34px; | ||
| 311 | + border: transparent; | ||
| 312 | + color: #333333; | ||
| 313 | + } | ||
| 314 | + } | ||
| 315 | + .school_select { | ||
| 316 | + font-size: 28px; | ||
| 317 | + padding: 0 32px; | ||
| 318 | + margin-bottom: 28px; | ||
| 319 | + } | ||
| 320 | + .submit { | ||
| 321 | + width: 294px; | ||
| 322 | + height: 72px; | ||
| 323 | + border: 0; | ||
| 324 | + background: linear-gradient(135deg, #99c2ff 0%, #1f59ff 100%); | ||
| 325 | + box-shadow: 0px 4px 8px 0px rgba(189, 189, 189, 0.5), | ||
| 326 | + 0px 8px 12px 0px rgba(87, 137, 255, 0.5); | ||
| 327 | + border-radius: 34px; | ||
| 328 | + font-size: 34px; | ||
| 329 | + color: #ffffff; | ||
| 330 | + margin: 0 auto; | ||
| 331 | + display: block; | ||
| 332 | + } | ||
| 333 | + .pic { | ||
| 334 | + width: 350px; | ||
| 335 | + height: 350px; | ||
| 336 | + margin: auto | ||
| 337 | + } | ||
| 338 | + } | ||
| 339 | + .child_content { | ||
| 340 | + position: relative; | ||
| 341 | + margin-top: 40px; | ||
| 342 | + .child_box { | ||
| 343 | + height: 500px; | ||
| 344 | + overflow: auto; | ||
| 345 | + padding-left: 100px; | ||
| 346 | + .child_item { | ||
| 347 | + position: relative; | ||
| 348 | + margin-bottom: 50px; | ||
| 349 | + p { | ||
| 350 | + font-size: 28px; | ||
| 351 | + padding: 8px 0; | ||
| 352 | + span { | ||
| 353 | + display: inline-block; | ||
| 354 | + width: 140px; | ||
| 355 | + margin-right: 28px; | ||
| 356 | + color: #999; | ||
| 357 | + } | ||
| 358 | + } | ||
| 359 | + .checkbox { | ||
| 360 | + position: absolute; | ||
| 361 | + top: 115px; | ||
| 362 | + right: 20px; | ||
| 363 | + } | ||
| 364 | + } | ||
| 365 | + } | ||
| 366 | + .school_box { | ||
| 367 | + width: 100%; | ||
| 368 | + height: 500px; | ||
| 369 | + overflow: auto; | ||
| 370 | + font-size: 3.7vw; | ||
| 371 | + padding: 20px 60px 20px 90px ; | ||
| 372 | + box-sizing: border-box; | ||
| 373 | + | ||
| 374 | + .box { | ||
| 375 | + display: flex; | ||
| 376 | + justify-content: space-between; | ||
| 377 | + | ||
| 378 | + .box_list { | ||
| 379 | + .box_name { | ||
| 380 | + display: flex; | ||
| 381 | + | ||
| 382 | + .greyFont { | ||
| 383 | + // width: 160px; | ||
| 384 | + width: 110px; | ||
| 385 | + color: #999999; | ||
| 386 | + } | ||
| 387 | + } | ||
| 388 | + } | ||
| 389 | + .box_check { | ||
| 390 | + | ||
| 391 | + } | ||
| 392 | + } | ||
| 393 | + } | ||
| 394 | + .submit { | ||
| 395 | + width: 438px; | ||
| 396 | + height: 78px; | ||
| 397 | + background: #3385ff; | ||
| 398 | + border-radius: 37px; | ||
| 399 | + border-radius: 39px; | ||
| 400 | + border: 0; | ||
| 401 | + font-size: 34px; | ||
| 402 | + color: #ffffff; | ||
| 403 | + margin: 0 auto; | ||
| 404 | + display: block; | ||
| 405 | + } | ||
| 406 | + } | ||
| 407 | + .phone_content { | ||
| 408 | + width: 100%; | ||
| 409 | + position: absolute; | ||
| 410 | + top: 180px; | ||
| 411 | + left: 0; | ||
| 412 | + box-sizing: border-box; | ||
| 413 | + padding: 40px; | ||
| 414 | + .item { | ||
| 415 | + border-bottom: 1px solid #e2e2e2; | ||
| 416 | + margin-bottom: 30px; | ||
| 417 | + } | ||
| 418 | + .phone_title { | ||
| 419 | + font-size: 34px; | ||
| 420 | + font-weight: bold; | ||
| 421 | + margin-bottom: 28px; | ||
| 422 | + } | ||
| 423 | + .flex { | ||
| 424 | + display: flex; | ||
| 425 | + align-items: center; | ||
| 426 | + justify-content: space-between; | ||
| 427 | + margin-bottom: 22px; | ||
| 428 | + } | ||
| 429 | + .code { | ||
| 430 | + border: 0; | ||
| 431 | + background: transparent; | ||
| 432 | + font-size: 28px; | ||
| 433 | + margin-bottom: 32px; | ||
| 434 | + width: 100%; | ||
| 435 | + } | ||
| 436 | + .phone { | ||
| 437 | + width: 50%; | ||
| 438 | + margin: 0; | ||
| 439 | + } | ||
| 440 | + .getcode { | ||
| 441 | + color: #5789ff; | ||
| 442 | + font-size: 28px; | ||
| 443 | + padding: 10px; | ||
| 444 | + } | ||
| 445 | + .submit { | ||
| 446 | + width: 438px; | ||
| 447 | + height: 78px; | ||
| 448 | + background: #3385ff; | ||
| 449 | + border-radius: 37px; | ||
| 450 | + border-radius: 39px; | ||
| 451 | + border: 0; | ||
| 452 | + font-size: 34px; | ||
| 453 | + color: #ffffff; | ||
| 454 | + margin: 0 auto; | ||
| 455 | + margin-top: 120px; | ||
| 456 | + display: block; | ||
| 457 | + } | ||
| 458 | + } | ||
| 459 | +} | ||
| 460 | + ::v-deep .van-search { | ||
| 461 | + background: transparent; | ||
| 462 | + padding: 0; | ||
| 463 | + width: 100%; | ||
| 464 | +} | ||
| 465 | + ::v-deep .van-search__content { | ||
| 466 | + padding: 0; | ||
| 467 | +} | ||
| 468 | +.schoolBoxF { | ||
| 469 | + width: 100vw; | ||
| 470 | + height: 100vh; | ||
| 471 | + position: absolute; | ||
| 472 | + top: 0; | ||
| 473 | + left: 0; | ||
| 474 | + background-color: #fff; | ||
| 475 | +} | ||
| 476 | +</style> |
| @@ -0,0 +1,351 @@ | @@ -0,0 +1,351 @@ | ||
| 1 | +<template> | ||
| 2 | + <div> | ||
| 3 | + <div class="addchild_group" v-if="step==1"> | ||
| 4 | + <img class="bg" src="@/assets/home/bg2.png" alt=""> | ||
| 5 | + <p class="title">选择学校</p> | ||
| 6 | + <p class="des">请选择你关注的学校</p> | ||
| 7 | + <div class="content"> | ||
| 8 | + <!-- <div class="name">选择学校</div> --> | ||
| 9 | + <div class="item"> | ||
| 10 | + <input type="text" placeholder="请选择学校" readonly v-model="school"> | ||
| 11 | + <button type="info" class="btn" @click="chooseSchool">选择学校</button> | ||
| 12 | + </div> | ||
| 13 | + <button class="submit" @click="submit">确定</button> | ||
| 14 | + </div> | ||
| 15 | + </div> | ||
| 16 | + | ||
| 17 | + <van-popup v-model="chooseSchoolisShow" round get-container="body" :safe-area-inset-bottom="true"> | ||
| 18 | + <div v-if="chooseSchoolisShow"> | ||
| 19 | + <chooseSchool v-model="chooseSchoolisShow" @schoolData='schoolData'></chooseSchool> | ||
| 20 | + </div> | ||
| 21 | + </van-popup> | ||
| 22 | + </div> | ||
| 23 | +</template> | ||
| 24 | + | ||
| 25 | +<script> | ||
| 26 | + | ||
| 27 | +import chooseSchool from '@/views/Service/component/chooseSchool' | ||
| 28 | +export default { | ||
| 29 | + components: { chooseSchool }, | ||
| 30 | + data () { | ||
| 31 | + return { | ||
| 32 | + step: 1, | ||
| 33 | + phone: '', | ||
| 34 | + codeText: '获取验证码',//获取验证码按钮文字 | ||
| 35 | + code: '',//验证码 | ||
| 36 | + studentName: '', | ||
| 37 | + userInfo: {}, | ||
| 38 | + | ||
| 39 | + searchSchool: '', | ||
| 40 | + school: '', | ||
| 41 | + schoolId: '', | ||
| 42 | + | ||
| 43 | + chooseSchoolisShow: false | ||
| 44 | + } | ||
| 45 | + }, | ||
| 46 | + | ||
| 47 | + mounted () { | ||
| 48 | + let userInfo = localStorage.getItem('userInfo') | ||
| 49 | + this.userInfo = JSON.parse(userInfo); | ||
| 50 | + }, | ||
| 51 | + methods: { | ||
| 52 | + submit () { | ||
| 53 | + if (!this.school) { | ||
| 54 | + this.$toast('请选择学校'); | ||
| 55 | + } else { | ||
| 56 | + let postData = { | ||
| 57 | + userNum: this.userInfo.centerNo, | ||
| 58 | + contactsName: this.userInfo.nickName, | ||
| 59 | + contactsMobile: this.userInfo.phone, | ||
| 60 | + loginMobile: this.userInfo.phone, | ||
| 61 | + schoolName: this.school, | ||
| 62 | + contactsType: this.userInfo.userType, | ||
| 63 | + } | ||
| 64 | + this.$toast.loading({ | ||
| 65 | + message: '加载中', | ||
| 66 | + duration: 0, | ||
| 67 | + forbidClick: true | ||
| 68 | + }) | ||
| 69 | + console.log(postData) | ||
| 70 | + this.yxAxios.post(`${this.proxyUrl}/prod/user/info/addContacts`, postData).then((res) => { | ||
| 71 | + this.$toast.clear() | ||
| 72 | + if (res.data.code == 200) { | ||
| 73 | + this.$toast.success('关注成功') | ||
| 74 | + this.$emit('closeAdd') | ||
| 75 | + this.getUserInfoXST() | ||
| 76 | + } else { | ||
| 77 | + this.$toast.fail(res.message) | ||
| 78 | + } | ||
| 79 | + }) | ||
| 80 | + } | ||
| 81 | + }, | ||
| 82 | + //选择学校 | ||
| 83 | + chooseSchool () { | ||
| 84 | + // this.$router.push({name: 'chooseSchool'}) | ||
| 85 | + this.chooseSchoolisShow = true | ||
| 86 | + }, | ||
| 87 | + schoolData (val) { | ||
| 88 | + this.school = val.text; | ||
| 89 | + this.schoolId = val.id; | ||
| 90 | + }, | ||
| 91 | + // 获取用户信息 | ||
| 92 | + getUserInfoXST () { | ||
| 93 | + this.$toast.loading({ | ||
| 94 | + message: '加载中...', | ||
| 95 | + duration: 0, | ||
| 96 | + forbidClick: true | ||
| 97 | + }) | ||
| 98 | + let appid = '' | ||
| 99 | + let publicName = localStorage.getItem('publicName') | ||
| 100 | + if( publicName == 'XST'){ | ||
| 101 | + appid = 'wx1c630c8773c482f1' | ||
| 102 | + }else if (publicName == 'SXYX') { | ||
| 103 | + appId = 'wx1305e88d2bc74073' | ||
| 104 | + } else if (publicName == 'XST') { | ||
| 105 | + appId = 'wx1c630c8773c482f1' | ||
| 106 | + } else if (publicName == 'KQ') { | ||
| 107 | + appId = 'wx1305e88d2bc74073' | ||
| 108 | + } | ||
| 109 | + | ||
| 110 | + this.yxAxios.get(`${this.proxyUrl}/prod/api/wx/${appid}/getUserInfo?unionId=${localStorage.getItem('unionId')}`).then((res) => { | ||
| 111 | + this.$toast.clear() | ||
| 112 | + if (res.data.code == 200) { | ||
| 113 | + localStorage.setItem('userInfo', JSON.stringify(res.data.data)) | ||
| 114 | + | ||
| 115 | + if(res.data.data.schoolNames || res.data.data.schoolNames == [] || res.data.data.schoolNames == 'null') { | ||
| 116 | + localStorage.setItem('schoolNames',JSON.stringify(res.data.data.schoolNames)) | ||
| 117 | + this.$store.commit('changeSchool', res.data.data.schoolNames) | ||
| 118 | + if(!localStorage.getItem('schoolNamesChoose')) { | ||
| 119 | + localStorage.setItem('schoolNamesChoose',res.data.data.schoolNames[0]) | ||
| 120 | + } | ||
| 121 | + }else { | ||
| 122 | + localStorage.setItem('schoolNames',[]) | ||
| 123 | + this.$store.commit('changeSchool', []) | ||
| 124 | + } | ||
| 125 | + } | ||
| 126 | + }) | ||
| 127 | + }, | ||
| 128 | + }, | ||
| 129 | +} | ||
| 130 | +</script> | ||
| 131 | +<style lang="scss" scoped> | ||
| 132 | +.addchild_group { | ||
| 133 | + width: 638px; | ||
| 134 | + // height: 836px; | ||
| 135 | + height: 496px; | ||
| 136 | + background: #ffffff; | ||
| 137 | + border-radius: 24px; | ||
| 138 | + position: relative; | ||
| 139 | + .bg { | ||
| 140 | + width: 100%; | ||
| 141 | + position: absolute; | ||
| 142 | + top: 0; | ||
| 143 | + left: 0; | ||
| 144 | + } | ||
| 145 | + .title { | ||
| 146 | + position: relative; | ||
| 147 | + width: 100%; | ||
| 148 | + padding-top: 70px; | ||
| 149 | + padding-bottom: 8px; | ||
| 150 | + text-align: center; | ||
| 151 | + font-size: 34px; | ||
| 152 | + font-weight: bold; | ||
| 153 | + color: #0857ff; | ||
| 154 | + } | ||
| 155 | + .des { | ||
| 156 | + position: relative; | ||
| 157 | + width: 100%; | ||
| 158 | + box-sizing: border-box; | ||
| 159 | + padding: 0 15%; | ||
| 160 | + text-align: center; | ||
| 161 | + font-size: 24px; | ||
| 162 | + color: #6596ff; | ||
| 163 | + } | ||
| 164 | + .content { | ||
| 165 | + width: 100%; | ||
| 166 | + box-sizing: border-box; | ||
| 167 | + padding: 0 40px; | ||
| 168 | + position: absolute; | ||
| 169 | + top: 236px; | ||
| 170 | + left: 0; | ||
| 171 | + .name { | ||
| 172 | + width: 558px; | ||
| 173 | + height: 50px; | ||
| 174 | + font-size: 28px; | ||
| 175 | + color: #000; | ||
| 176 | + padding-left: 20px; | ||
| 177 | + box-sizing: border-box; | ||
| 178 | + } | ||
| 179 | + .item { | ||
| 180 | + width: 558px; | ||
| 181 | + height: 72px; | ||
| 182 | + border-radius: 36px; | ||
| 183 | + background: #f7f7f7; | ||
| 184 | + box-sizing: border-box; | ||
| 185 | + font-size: 28px; | ||
| 186 | + padding: 0 32px; | ||
| 187 | + display: flex; | ||
| 188 | + justify-content: space-between; | ||
| 189 | + align-items: center; | ||
| 190 | + margin-bottom: 28px; | ||
| 191 | + p { | ||
| 192 | + color: #333333; | ||
| 193 | + &.nodata { | ||
| 194 | + color: #999999; | ||
| 195 | + } | ||
| 196 | + } | ||
| 197 | + img { | ||
| 198 | + width: 40px; | ||
| 199 | + } | ||
| 200 | + input { | ||
| 201 | + width: 100%; | ||
| 202 | + background: transparent; | ||
| 203 | + border: 0; | ||
| 204 | + color: #333333; | ||
| 205 | + padding: 0; | ||
| 206 | + &::-webkit-input-placeholder { | ||
| 207 | + color: #999999; | ||
| 208 | + } | ||
| 209 | + } | ||
| 210 | + .btn { | ||
| 211 | + width: 240px; | ||
| 212 | + height: 55px; | ||
| 213 | + float: right; | ||
| 214 | + font-size: 28px; | ||
| 215 | + background: linear-gradient(135deg, #cdf8cf 0%, #8af36f 100%); | ||
| 216 | + box-shadow: 0px 4px 8px 0px rgba(189, 189, 189, 0.5), | ||
| 217 | + 0px 8px 12px 0px rgba(89, 199, 171, 0.5); | ||
| 218 | + border-radius: 34px; | ||
| 219 | + border: transparent; | ||
| 220 | + color: #333333; | ||
| 221 | + } | ||
| 222 | + } | ||
| 223 | + .school_select { | ||
| 224 | + font-size: 28px; | ||
| 225 | + padding: 0 32px; | ||
| 226 | + margin-bottom: 28px; | ||
| 227 | + } | ||
| 228 | + .submit { | ||
| 229 | + width: 294px; | ||
| 230 | + height: 72px; | ||
| 231 | + border: 0; | ||
| 232 | + background: linear-gradient(135deg, #99c2ff 0%, #1f59ff 100%); | ||
| 233 | + box-shadow: 0px 4px 8px 0px rgba(189, 189, 189, 0.5), | ||
| 234 | + 0px 8px 12px 0px rgba(87, 137, 255, 0.5); | ||
| 235 | + border-radius: 34px; | ||
| 236 | + font-size: 34px; | ||
| 237 | + color: #ffffff; | ||
| 238 | + margin: 55px auto 0; | ||
| 239 | + display: block; | ||
| 240 | + } | ||
| 241 | + } | ||
| 242 | + .child_content { | ||
| 243 | + position: relative; | ||
| 244 | + margin-top: 40px; | ||
| 245 | + .child_box { | ||
| 246 | + height: 500px; | ||
| 247 | + overflow: auto; | ||
| 248 | + padding-left: 100px; | ||
| 249 | + .child_item { | ||
| 250 | + position: relative; | ||
| 251 | + margin-bottom: 50px; | ||
| 252 | + p { | ||
| 253 | + font-size: 28px; | ||
| 254 | + padding: 8px 0; | ||
| 255 | + span { | ||
| 256 | + display: inline-block; | ||
| 257 | + width: 140px; | ||
| 258 | + margin-right: 28px; | ||
| 259 | + color: #999; | ||
| 260 | + } | ||
| 261 | + } | ||
| 262 | + .checkbox { | ||
| 263 | + position: absolute; | ||
| 264 | + top: 115px; | ||
| 265 | + right: 20px; | ||
| 266 | + } | ||
| 267 | + } | ||
| 268 | + } | ||
| 269 | + .submit { | ||
| 270 | + width: 438px; | ||
| 271 | + height: 78px; | ||
| 272 | + background: #3385ff; | ||
| 273 | + border-radius: 37px; | ||
| 274 | + border-radius: 39px; | ||
| 275 | + border: 0; | ||
| 276 | + font-size: 34px; | ||
| 277 | + color: #ffffff; | ||
| 278 | + margin: 0 auto; | ||
| 279 | + display: block; | ||
| 280 | + } | ||
| 281 | + } | ||
| 282 | + .phone_content { | ||
| 283 | + width: 100%; | ||
| 284 | + position: absolute; | ||
| 285 | + top: 180px; | ||
| 286 | + left: 0; | ||
| 287 | + box-sizing: border-box; | ||
| 288 | + padding: 40px; | ||
| 289 | + .item { | ||
| 290 | + border-bottom: 1px solid #e2e2e2; | ||
| 291 | + margin-bottom: 30px; | ||
| 292 | + } | ||
| 293 | + .phone_title { | ||
| 294 | + font-size: 34px; | ||
| 295 | + font-weight: bold; | ||
| 296 | + margin-bottom: 28px; | ||
| 297 | + } | ||
| 298 | + .flex { | ||
| 299 | + display: flex; | ||
| 300 | + align-items: center; | ||
| 301 | + justify-content: space-between; | ||
| 302 | + margin-bottom: 22px; | ||
| 303 | + } | ||
| 304 | + .code { | ||
| 305 | + border: 0; | ||
| 306 | + background: transparent; | ||
| 307 | + font-size: 28px; | ||
| 308 | + margin-bottom: 32px; | ||
| 309 | + width: 100%; | ||
| 310 | + } | ||
| 311 | + .phone { | ||
| 312 | + width: 50%; | ||
| 313 | + margin: 0; | ||
| 314 | + } | ||
| 315 | + .getcode { | ||
| 316 | + color: #5789ff; | ||
| 317 | + font-size: 28px; | ||
| 318 | + padding: 10px; | ||
| 319 | + } | ||
| 320 | + .submit { | ||
| 321 | + width: 438px; | ||
| 322 | + height: 78px; | ||
| 323 | + background: #3385ff; | ||
| 324 | + border-radius: 37px; | ||
| 325 | + border-radius: 39px; | ||
| 326 | + border: 0; | ||
| 327 | + font-size: 34px; | ||
| 328 | + color: #ffffff; | ||
| 329 | + margin: 0 auto; | ||
| 330 | + margin-top: 120px; | ||
| 331 | + display: block; | ||
| 332 | + } | ||
| 333 | + } | ||
| 334 | +} | ||
| 335 | + ::v-deep .van-search { | ||
| 336 | + background: transparent; | ||
| 337 | + padding: 0; | ||
| 338 | + width: 100%; | ||
| 339 | +} | ||
| 340 | + ::v-deep .van-search__content { | ||
| 341 | + padding: 0; | ||
| 342 | +} | ||
| 343 | +.schoolBoxF { | ||
| 344 | + width: 100vw; | ||
| 345 | + height: 100vh; | ||
| 346 | + position: absolute; | ||
| 347 | + top: 0; | ||
| 348 | + left: 0; | ||
| 349 | + background-color: #fff; | ||
| 350 | +} | ||
| 351 | +</style> |
| @@ -0,0 +1,74 @@ | @@ -0,0 +1,74 @@ | ||
| 1 | +/* 认证学校*/ | ||
| 2 | +<template> | ||
| 3 | + <div> | ||
| 4 | + <div class="fontBox"></div> | ||
| 5 | + <div class="card"> | ||
| 6 | + <div class="cardItem" v-for="(v,i) in schoolList" :key="i"> | ||
| 7 | + <div @click="switchClass">{{v.schoolName}}</div> | ||
| 8 | + <div class="cardItem_blue" @click="switchSchool">重新认证</div> | ||
| 9 | + </div> | ||
| 10 | + </div> | ||
| 11 | + | ||
| 12 | + <!-- <van-popup style="background: transparent;" get-container="body" v-model="showSchool"> | ||
| 13 | + <group-penson></group-penson> | ||
| 14 | + </van-popup> --> | ||
| 15 | + </div> | ||
| 16 | +</template> | ||
| 17 | + | ||
| 18 | +<script> | ||
| 19 | +import schoolAdd from '@/views/Travel/component/schoolAdd' | ||
| 20 | +import groupPenson from '@/views/Travel/component/groupPenson' | ||
| 21 | +export default { | ||
| 22 | + components: { schoolAdd , groupPenson}, | ||
| 23 | + data() { | ||
| 24 | + return { | ||
| 25 | + schoolList: [ | ||
| 26 | + {isAuth: true, schoolName: "绍兴市鲁迅小学"}, | ||
| 27 | + // {isAuth: false, schoolName: "测试学校"}, | ||
| 28 | + {isAuth: true, schoolName: "柯桥学校"}, | ||
| 29 | + ], | ||
| 30 | + showSchool: false | ||
| 31 | + } | ||
| 32 | + }, | ||
| 33 | + methods: { | ||
| 34 | + //切换学校 | ||
| 35 | + switchSchool() { | ||
| 36 | + localStorage.setItem('backRZ',true) | ||
| 37 | + this.$router.push({name: localStorage.getItem('prePage') }) | ||
| 38 | + }, | ||
| 39 | + //选择班级 | ||
| 40 | + switchClass() { | ||
| 41 | + this.$router.push({name: 'classAttestation'}) | ||
| 42 | + } | ||
| 43 | + } | ||
| 44 | +} | ||
| 45 | +</script> | ||
| 46 | + | ||
| 47 | +<style lang="scss" scoped> | ||
| 48 | +.fontBox { | ||
| 49 | + width: 100vw; | ||
| 50 | + height: 3vw; | ||
| 51 | + display: flex; | ||
| 52 | + align-items: center; | ||
| 53 | + padding: 0 4vw; | ||
| 54 | + box-sizing: border-box; | ||
| 55 | + background-color: #F5F6FA; | ||
| 56 | + font-size: 3.5vw; | ||
| 57 | + color: #999999; | ||
| 58 | +} | ||
| 59 | +.card { | ||
| 60 | + padding: 7vw 5vw 0; | ||
| 61 | + box-sizing: border-box; | ||
| 62 | + | ||
| 63 | + .cardItem { | ||
| 64 | + display: flex; | ||
| 65 | + justify-content: space-between; | ||
| 66 | + margin-bottom: 10vw; | ||
| 67 | + font-size: 3.8vw; | ||
| 68 | + | ||
| 69 | + .cardItem_blue { | ||
| 70 | + color:#3074FF | ||
| 71 | + } | ||
| 72 | + } | ||
| 73 | +} | ||
| 74 | +</style> | ||
| 0 | \ No newline at end of file | 75 | \ No newline at end of file |
| @@ -0,0 +1,73 @@ | @@ -0,0 +1,73 @@ | ||
| 1 | +/* 关注学校*/ | ||
| 2 | +<template> | ||
| 3 | + <div> | ||
| 4 | + <div class="fontBox">请选择关注学校</div> | ||
| 5 | + <div class="card"> | ||
| 6 | + <div class="cardItem" v-for="(v,i) in schoolList" :key="i"> | ||
| 7 | + <div>{{v}}</div> | ||
| 8 | + <div class="cardItem_blue" @click="switchSchool(v)">切换</div> | ||
| 9 | + </div> | ||
| 10 | + </div> | ||
| 11 | + | ||
| 12 | + <van-popup style="background: transparent;" get-container="body" v-model="showSchool"> | ||
| 13 | + <!-- <school-add></school-add> --> | ||
| 14 | + <group-penson></group-penson> | ||
| 15 | + </van-popup> | ||
| 16 | + </div> | ||
| 17 | +</template> | ||
| 18 | + | ||
| 19 | +<script> | ||
| 20 | +import schoolAdd from '@/views/Travel/component/schoolAdd' | ||
| 21 | +import groupPenson from '@/views/Travel/component/groupPenson' | ||
| 22 | +export default { | ||
| 23 | + components: { schoolAdd , groupPenson}, | ||
| 24 | + data() { | ||
| 25 | + return { | ||
| 26 | + schoolList: [], | ||
| 27 | + showSchool: false | ||
| 28 | + } | ||
| 29 | + }, | ||
| 30 | + mounted() { | ||
| 31 | + this.getList() | ||
| 32 | + }, | ||
| 33 | + methods: { | ||
| 34 | + //切换学校 | ||
| 35 | + switchSchool(v) { | ||
| 36 | + localStorage.setItem('schoolNamesChoose',v) | ||
| 37 | + this.$router.push({name : localStorage.getItem('prePage')}) | ||
| 38 | + }, | ||
| 39 | + getList() { | ||
| 40 | + this.schoolList = JSON.parse(localStorage.getItem('schoolNames')) | ||
| 41 | + } | ||
| 42 | + } | ||
| 43 | +} | ||
| 44 | +</script> | ||
| 45 | + | ||
| 46 | +<style lang="scss" scoped> | ||
| 47 | +.fontBox { | ||
| 48 | + width: 100vw; | ||
| 49 | + height: 8vw; | ||
| 50 | + display: flex; | ||
| 51 | + align-items: center; | ||
| 52 | + padding: 0 4vw; | ||
| 53 | + box-sizing: border-box; | ||
| 54 | + background-color: #F5F6FA; | ||
| 55 | + font-size: 3.5vw; | ||
| 56 | + color: #999999; | ||
| 57 | +} | ||
| 58 | +.card { | ||
| 59 | + padding: 7vw 5vw 0; | ||
| 60 | + box-sizing: border-box; | ||
| 61 | + | ||
| 62 | + .cardItem { | ||
| 63 | + display: flex; | ||
| 64 | + justify-content: space-between; | ||
| 65 | + margin-bottom: 10vw; | ||
| 66 | + font-size: 3.8vw; | ||
| 67 | + | ||
| 68 | + .cardItem_blue { | ||
| 69 | + color:#3074FF | ||
| 70 | + } | ||
| 71 | + } | ||
| 72 | +} | ||
| 73 | +</style> | ||
| 0 | \ No newline at end of file | 74 | \ No newline at end of file |