Commit 6efe1a3b2009479a6d82de9609c2d2ae6fb67963
1 parent
de222c84
Exists in
master
feat: 出行人新增性别,选家长时提示
Showing
9 changed files
with
52 additions
and
337 deletions
Show diff stats
src/App.vue
src/component/Tabbar.vue
... | ... | @@ -1,102 +0,0 @@ |
1 | -<template> | |
2 | - <div id="tabbar"> | |
3 | - <div class="tab" :class="active=='lecture'?'active':''" @click="handleLecture"> | |
4 | - <img v-if="active=='lecture'" src="../assets/tabbar1/tab1_on.png" alt=""> | |
5 | - <img v-else src="../assets/tabbar1/tab1_off.png" alt=""> | |
6 | - <p>公益讲座</p> | |
7 | - </div> | |
8 | - <div class="center"> | |
9 | - <img class="tip" src="../assets/tabbar1/tab2.png" alt=""> | |
10 | - <wx-open-launch-weapp id="launch-btn" username="gh_c0f904a5ee0c" path="pages/index/index?type=zkedt"> | |
11 | - <script type="text/wxtag-template"> | |
12 | - <style>.mini_btn { width:500px;height:500px;background:transparent;border:0; }</style> | |
13 | - <button class="mini_btn"></button> | |
14 | - </script> | |
15 | - </wx-open-launch-weapp> | |
16 | - </div> | |
17 | - <div class="tab"> | |
18 | - <div class="block"></div> | |
19 | - <p>志愿填报</p> | |
20 | - </div> | |
21 | - <div class="tab" :class="active=='center'?'active':''" @click="handleCenter"> | |
22 | - <img v-if="active=='center'" src="../assets/tabbar1/tab3_on.png" alt=""> | |
23 | - <img v-else src="../assets/tabbar1/tab3_off.png" alt=""> | |
24 | - <p>个人中心</p> | |
25 | - </div> | |
26 | - </div> | |
27 | -</template> | |
28 | -<script> | |
29 | -export default { | |
30 | - name:'Tabbar', | |
31 | - props:{ | |
32 | - active:String | |
33 | - }, | |
34 | - mounted(){ | |
35 | - console.log(this.active) | |
36 | - }, | |
37 | - methods:{ | |
38 | - // 点击讲座 | |
39 | - handleLecture(){ | |
40 | - this.$router.push({name:'Lecture'}) | |
41 | - }, | |
42 | - // 点击个人中心 | |
43 | - handleCenter(){ | |
44 | - this.$router.push({name:'Home'}) | |
45 | - } | |
46 | - } | |
47 | -} | |
48 | -</script> | |
49 | -<style lang="scss"> | |
50 | -#tabbar { | |
51 | - position: fixed; | |
52 | - bottom: 0; | |
53 | - width: 100%; | |
54 | - height: 100px; | |
55 | - background: #fff; | |
56 | - display: flex; | |
57 | - justify-content: space-around; | |
58 | - padding-bottom: 40px; | |
59 | - .tab { | |
60 | - | |
61 | - padding: 18px; | |
62 | - img { | |
63 | - width: 52px; | |
64 | - display: block; | |
65 | - margin: 0 auto; | |
66 | - } | |
67 | - .block{ | |
68 | - width: 52px; | |
69 | - height: 52px; | |
70 | - } | |
71 | - p { | |
72 | - font-size: 20px; | |
73 | - color: #999999; | |
74 | - text-align: center; | |
75 | - } | |
76 | - &.active{ | |
77 | - p{ | |
78 | - color: #5789FF; | |
79 | - } | |
80 | - } | |
81 | - } | |
82 | - .center { | |
83 | - width: 92px; | |
84 | - height: 92px; | |
85 | - padding: 30px; | |
86 | - background: transparent; | |
87 | - position: absolute; | |
88 | - top: -60px; | |
89 | - left: 299px; | |
90 | - overflow: hidden; | |
91 | - z-index: 1; | |
92 | - .tip { | |
93 | - width: 92px; | |
94 | - position: absolute; | |
95 | - top: 50%; | |
96 | - left: 50%; | |
97 | - transform: translate(-50%, -50%); | |
98 | - z-index: -1; | |
99 | - } | |
100 | - } | |
101 | -} | |
102 | -</style> | |
103 | 0 | \ No newline at end of file |
src/component/Tabbar2.vue
... | ... | @@ -1,109 +0,0 @@ |
1 | -<template> | |
2 | - <div id="tabbar"> | |
3 | - <div class="tab" :class="active=='databook'?'active':''" @click="handleDataBook"> | |
4 | - <img v-if="active=='databook'" src="../assets/tabbar2/tab1_on.png" alt=""> | |
5 | - <img v-else src="../assets/tabbar2/tab1_off.png" alt=""> | |
6 | - <p>数据宝典</p> | |
7 | - </div> | |
8 | - <div class="tab" :class="active=='careerplan'?'active':''" @click="handleCareerPlan"> | |
9 | - <img v-if="active=='careerplan'" src="../assets/tabbar2/tab2_on.png" alt=""> | |
10 | - <img v-else src="../assets/tabbar2/tab2_off.png" alt=""> | |
11 | - <p>生涯规划</p> | |
12 | - </div> | |
13 | - <!-- <div class="tab" :class="active=='community'?'active':''" @click="handleCommunity"> | |
14 | - <img v-if="active=='community'" src="../assets/tabbar2/tab3_on.png" alt=""> | |
15 | - <img v-else src="../assets/tabbar2/tab3_off.png" alt=""> | |
16 | - <p>社区</p> | |
17 | - </div> --> | |
18 | - <div class="tab" :class="active=='service'?'active':''" @click="handleService"> | |
19 | - <img v-if="active=='service'" src="../assets/tabbar2/tab3_on.png" alt=""> | |
20 | - <img v-else src="../assets/tabbar2/tab3_off.png" alt=""> | |
21 | - <p>服务活动</p> | |
22 | - </div> | |
23 | - <div class="tab" :class="active=='center'?'active':''" @click="handleCenter"> | |
24 | - <img v-if="active=='center'" src="../assets/tabbar2/tab4_on.png" alt=""> | |
25 | - <img v-else src="../assets/tabbar2/tab4_off.png" alt=""> | |
26 | - <p>个人中心</p> | |
27 | - </div> | |
28 | - </div> | |
29 | -</template> | |
30 | -<script> | |
31 | -export default { | |
32 | - name: 'Tabbar2', | |
33 | - props: { | |
34 | - active: String | |
35 | - }, | |
36 | - methods: { | |
37 | - handleDataBook () { | |
38 | - this.$router.push({ name: 'DataBook' }) | |
39 | - }, | |
40 | - handleCareerPlan () { | |
41 | - this.$router.push({ name: 'CareerPlan' }) | |
42 | - }, | |
43 | - handleCommunity () { | |
44 | - this.$router.push({ name: 'Community' }) | |
45 | - }, | |
46 | - handleService () { | |
47 | - this.$router.push({ name: 'Service' }) | |
48 | - }, | |
49 | - handleCenter(){ | |
50 | - this.$router.push({ name: 'Home' }) | |
51 | - } | |
52 | - } | |
53 | -} | |
54 | -</script> | |
55 | -<style lang="scss" scoped> | |
56 | -#tabbar { | |
57 | - position: fixed; | |
58 | - bottom: 0; | |
59 | - width: 100%; | |
60 | - height: 100px; | |
61 | - background: #fff; | |
62 | - display: flex; | |
63 | - justify-content: space-around; | |
64 | - padding-bottom: 40px; | |
65 | - z-index: 99; | |
66 | - .tab { | |
67 | - padding: 18px; | |
68 | - img { | |
69 | - width: 36px; | |
70 | - padding: 20px; | |
71 | - display: block; | |
72 | - margin: 0 auto; | |
73 | - } | |
74 | - .block { | |
75 | - width: 52px; | |
76 | - height: 52px; | |
77 | - } | |
78 | - p { | |
79 | - font-size: 20px; | |
80 | - color: #999999; | |
81 | - text-align: center; | |
82 | - } | |
83 | - &.active { | |
84 | - p { | |
85 | - color: #5789ff; | |
86 | - } | |
87 | - } | |
88 | - } | |
89 | - .center { | |
90 | - width: 92px; | |
91 | - height: 92px; | |
92 | - padding: 30px; | |
93 | - background: transparent; | |
94 | - position: absolute; | |
95 | - top: -60px; | |
96 | - left: 299px; | |
97 | - overflow: hidden; | |
98 | - z-index: 1; | |
99 | - .tip { | |
100 | - width: 92px; | |
101 | - position: absolute; | |
102 | - top: 50%; | |
103 | - left: 50%; | |
104 | - transform: translate(-50%, -50%); | |
105 | - z-index: -1; | |
106 | - } | |
107 | - } | |
108 | -} | |
109 | -</style> | |
110 | 0 | \ No newline at end of file |
src/component/Tabbar3.vue
... | ... | @@ -1,96 +0,0 @@ |
1 | -<template> | |
2 | - <div id="tabbar"> | |
3 | - <div class="tab" :class="active=='ZZY'?'active':''" @click="handZZY"> | |
4 | - <img v-if="active=='ZZY'" src="../assets/tabbar2/tab2_on.png" alt=""> | |
5 | - <img v-else src="../assets/tabbar2/tab2_off.png" alt=""> | |
6 | - <p>周周营</p> | |
7 | - </div> | |
8 | - <div class="tab" :class="active=='QXY'?'active':''" @click="handleQYX"> | |
9 | - <img v-if="active=='QXY'" src="../assets/tabbar2/tab3_on.png" alt=""> | |
10 | - <img v-else src="../assets/tabbar2/tab3_off.png" alt=""> | |
11 | - <p>趣学院</p> | |
12 | - </div> | |
13 | - <div class="tab" :class="active=='center'?'active':''" @click="handleCenter"> | |
14 | - <img v-if="active=='center'" src="../assets/tabbar2/tab4_on.png" alt=""> | |
15 | - <img v-else src="../assets/tabbar2/tab4_off.png" alt=""> | |
16 | - <p>我的</p> | |
17 | - </div> | |
18 | - </div> | |
19 | -</template> | |
20 | -<script> | |
21 | -export default { | |
22 | - name: 'Tabbar3', | |
23 | - props: { | |
24 | - active: String | |
25 | - }, | |
26 | - methods: { | |
27 | - handZZY () { | |
28 | - let publicName = sessionStorage.getItem('publicName'); | |
29 | - this.$router.push({ name: 'Service' + publicName, query: { showTab: 'ZZY' } }) | |
30 | - }, | |
31 | - handleQYX () { | |
32 | - let publicName = sessionStorage.getItem('publicName'); | |
33 | - this.$router.push({ name: 'Service' + publicName, query: { showTab: 'QXY' } }) | |
34 | - }, | |
35 | - handleCenter () { | |
36 | - let publicName = sessionStorage.getItem('publicName'); | |
37 | - this.$router.push({ name: 'Home'+publicName }) | |
38 | - } | |
39 | - } | |
40 | -} | |
41 | -</script> | |
42 | -<style lang="scss" scoped> | |
43 | -#tabbar { | |
44 | - position: fixed; | |
45 | - bottom: 0; | |
46 | - width: 100%; | |
47 | - height: 100px; | |
48 | - background: #fff; | |
49 | - display: flex; | |
50 | - justify-content: space-around; | |
51 | - padding-bottom: 40px; | |
52 | - z-index: 99; | |
53 | - .tab { | |
54 | - padding: 18px; | |
55 | - img { | |
56 | - width: 36px; | |
57 | - padding: 20px; | |
58 | - display: block; | |
59 | - margin: 0 auto; | |
60 | - } | |
61 | - .block { | |
62 | - width: 52px; | |
63 | - height: 52px; | |
64 | - } | |
65 | - p { | |
66 | - font-size: 20px; | |
67 | - color: #999999; | |
68 | - text-align: center; | |
69 | - } | |
70 | - &.active { | |
71 | - p { | |
72 | - color: #5789ff; | |
73 | - } | |
74 | - } | |
75 | - } | |
76 | - .center { | |
77 | - width: 92px; | |
78 | - height: 92px; | |
79 | - padding: 30px; | |
80 | - background: transparent; | |
81 | - position: absolute; | |
82 | - top: -60px; | |
83 | - left: 299px; | |
84 | - overflow: hidden; | |
85 | - z-index: 1; | |
86 | - .tip { | |
87 | - width: 92px; | |
88 | - position: absolute; | |
89 | - top: 50%; | |
90 | - left: 50%; | |
91 | - transform: translate(-50%, -50%); | |
92 | - z-index: -1; | |
93 | - } | |
94 | - } | |
95 | -} | |
96 | -</style> | |
97 | 0 | \ No newline at end of file |
src/component/Tabbar4.vue
... | ... | @@ -25,16 +25,13 @@ export default { |
25 | 25 | }, |
26 | 26 | methods: { |
27 | 27 | handZZY () { |
28 | - let publicName = sessionStorage.getItem('publicName'); | |
29 | - this.$router.push({ name: 'Service' + publicName, query: { showTab: 'ZZY' } }) | |
28 | + this.$router.push({ name: 'ServiceKQ', query: { showTab: 'ZZY' } }) | |
30 | 29 | }, |
31 | 30 | handleKQ () { |
32 | - let publicName = sessionStorage.getItem('publicName'); | |
33 | - this.$router.push({ name: 'Service' + publicName, query: { showTab: 'KQ' } }) | |
31 | + this.$router.push({ name: 'ServiceKQ', query: { showTab: 'KQ' } }) | |
34 | 32 | }, |
35 | 33 | handleCenter () { |
36 | - let publicName = sessionStorage.getItem('publicName'); | |
37 | - this.$router.push({ name: 'Home'+publicName }) | |
34 | + this.$router.push({ name: 'HomeKQ' }) | |
38 | 35 | } |
39 | 36 | } |
40 | 37 | } | ... | ... |
src/router/index.js
... | ... | @@ -195,7 +195,7 @@ const routes = [{ |
195 | 195 | name: 'SelectContact', |
196 | 196 | component: SelectContact, |
197 | 197 | meta: { |
198 | - title: '选择联系人' | |
198 | + title: '选择出行人' | |
199 | 199 | } |
200 | 200 | }, |
201 | 201 | { |
... | ... | @@ -203,7 +203,7 @@ const routes = [{ |
203 | 203 | name: 'EditContact', |
204 | 204 | component: EditContact, |
205 | 205 | meta: { |
206 | - title: '修改联系人' | |
206 | + title: '修改出行人' | |
207 | 207 | } |
208 | 208 | }, |
209 | 209 | { |
... | ... | @@ -224,7 +224,7 @@ const routes = [{ |
224 | 224 | }, |
225 | 225 | ] |
226 | 226 | const router = new VueRouter({ |
227 | - mode: 'history', | |
227 | + mode: 'hash', | |
228 | 228 | // base: process.env.BASE_URL+'/center', |
229 | 229 | base: process.env.BASE_URL, |
230 | 230 | routes | ... | ... |
src/views/PublicService/ServiceKQ.vue
... | ... | @@ -24,13 +24,13 @@ export default { |
24 | 24 | // sessionStorage.setItem('prePage', 'Service' + this.publicName); |
25 | 25 | // sessionStorage.setItem('unionId', 'oJPmPuLaAx2x2DaRGfCFeYuLWzLU'); |
26 | 26 | const sUserAgent = window.navigator.userAgent.toLowerCase() |
27 | - alert(sUserAgent) | |
27 | + // alert(sUserAgent) | |
28 | 28 | console.log(sUserAgent) |
29 | 29 | const dtdreamweb = sUserAgent.indexOf("dtdreamweb") > -1 |
30 | 30 | const miniprogram = sUserAgent.indexOf("miniprogram") > -1 && sUserAgent.indexOf("alipay") > -1 |
31 | 31 | if (dtdreamweb) { |
32 | 32 | alert('浙里办') |
33 | - // window.location.href = `https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=hswsy`; | |
33 | + window.location.href = `https://puser.zjzwfw.gov.cn/sso/mobile.do?action=oauth&scope=1&servicecode=hswsy`; | |
34 | 34 | } |
35 | 35 | |
36 | 36 | if (miniprogram) { | ... | ... |
src/views/Service/EditContact.vue
... | ... | @@ -4,6 +4,14 @@ |
4 | 4 | <van-cell-group> |
5 | 5 | <van-field v-model="userTypeName" label="身份类型" readonly /> |
6 | 6 | <van-field v-model="travelerName" label="姓名" placeholder="需与证件姓名一致" /> |
7 | + <van-cell title="性别"> | |
8 | + <template #right-icon> | |
9 | + <van-radio-group v-model="gender" direction="horizontal" style="width:67%;"> | |
10 | + <van-radio name="1">男</van-radio> | |
11 | + <van-radio name="2">女</van-radio> | |
12 | + </van-radio-group> | |
13 | + </template> | |
14 | + </van-cell> | |
7 | 15 | <van-field v-model="phone" label="手机号码" maxlength="11" placeholder="请填写手机号码" /> |
8 | 16 | <van-field v-model="travelerIdCard" label="身份证" maxlength="18" placeholder="请填写证件号码" /> |
9 | 17 | </van-cell-group> |
... | ... | @@ -18,9 +26,10 @@ export default { |
18 | 26 | return { |
19 | 27 | id: '', |
20 | 28 | userType: '', |
21 | - userTypeName:'', | |
29 | + userTypeName: '', | |
22 | 30 | travelerName: '', |
23 | 31 | phone: '', |
32 | + gender: '', | |
24 | 33 | travelerIdCard: '', |
25 | 34 | travelerNum: '' |
26 | 35 | } |
... | ... | @@ -45,6 +54,10 @@ export default { |
45 | 54 | methods: { |
46 | 55 | // 确认 |
47 | 56 | addContact () { |
57 | + if (!this.gender) { | |
58 | + this.$toast('请选择性别') | |
59 | + return; | |
60 | + } | |
48 | 61 | if (!this.phone) { |
49 | 62 | this.$toast('请输入手机号') |
50 | 63 | return; |
... | ... | @@ -66,7 +79,8 @@ export default { |
66 | 79 | contactsName: this.travelerName, |
67 | 80 | contactsMobile: this.phone, |
68 | 81 | contactsIdCard: this.travelerIdCard, |
69 | - contactsType: this.userType | |
82 | + contactsType: this.userType, | |
83 | + gender:Number(this.gender) | |
70 | 84 | } |
71 | 85 | this.$toast.loading({ |
72 | 86 | message: '加载中', |
... | ... | @@ -77,7 +91,7 @@ export default { |
77 | 91 | this.$toast.clear() |
78 | 92 | if (res.data.code == 200) { |
79 | 93 | this.$toast.success('完善成功') |
80 | - this.$router.back() | |
94 | + this.$router.back() | |
81 | 95 | } else { |
82 | 96 | this.$toast.fail(res.message) |
83 | 97 | } | ... | ... |
src/views/Service/SelectContact.vue
... | ... | @@ -2,18 +2,19 @@ |
2 | 2 | <div id="selectContact"> |
3 | 3 | <div class="box"> |
4 | 4 | <template v-for="(item,index) in contactList"> |
5 | - <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)" /> | |
7 | - <div class="info"> | |
8 | - <p class="name">{{item.travelerName}}<span v-if="!item.travelerIdCard">需完善</span></p> | |
9 | - <p class="des">{{item.userType==1?'学生':'家长'}}·{{item.travelerMobile}}</p> | |
5 | + <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)" /> | |
7 | + <div class="info"> | |
8 | + <p class="name">{{item.travelerName}}<span v-if="!item.travelerIdCard||!item.gender">需完善</span></p> | |
9 | + <p class="des">{{item.userType==1?'学生':'家长'}}·{{item.travelerMobile}}</p> | |
10 | + </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> | |
10 | 13 | </div> |
11 | - <van-checkbox class="checkbox" v-model="item.checked" shape="square"></van-checkbox> | |
12 | - </div> | |
13 | 14 | </template> |
14 | 15 | <div class="add_btn" @click="showAddChildPopupGroup=true"> |
15 | 16 | <van-icon name="add-o" /> |
16 | - 新增联系人 | |
17 | + 新增出行学生 | |
17 | 18 | </div> |
18 | 19 | </div> |
19 | 20 | <van-button class="btn" type="primary" @click="selectContact">确定</van-button> |
... | ... | @@ -24,18 +25,19 @@ |
24 | 25 | </template> |
25 | 26 | <script> |
26 | 27 | import AddChildPopupGroup from '@/views/PublicHome/component/AddChildPopupGroup' |
28 | +import { Dialog } from 'vant'; | |
27 | 29 | export default { |
28 | 30 | data () { |
29 | 31 | return { |
30 | - limit:'', | |
31 | - hideParent:false, | |
32 | + limit: '', | |
33 | + hideParent: false, | |
32 | 34 | contactList: [], |
33 | 35 | showAddChildPopupGroup: false |
34 | 36 | } |
35 | 37 | }, |
36 | 38 | mounted () { |
37 | 39 | this.limit = this.$route.query.limit; |
38 | - this.hideParent = this.$route.query.hideParent?true:false; | |
40 | + this.hideParent = this.$route.query.hideParent ? true : false; | |
39 | 41 | console.log(this.hideParent) |
40 | 42 | this.getContactList() |
41 | 43 | }, |
... | ... | @@ -58,7 +60,8 @@ export default { |
58 | 60 | travelerNum: userInfo?.centerNo, |
59 | 61 | travelerIdCard: userInfo?.idCard, |
60 | 62 | userType: 2, |
61 | - travelerName: userInfo?.nickName | |
63 | + travelerName: userInfo?.nickName, | |
64 | + gender: userInfo?.gender, | |
62 | 65 | }) |
63 | 66 | this.contactList = contactList |
64 | 67 | } |
... | ... | @@ -87,7 +90,7 @@ export default { |
87 | 90 | let selectedArr = []; |
88 | 91 | for (let i in contactList) { |
89 | 92 | if (contactList[i]?.checked) { |
90 | - if (!contactList[i].travelerIdCard&&!this.hideParent) { | |
93 | + if ((!contactList[i].travelerIdCard||!contactList[i].gender) && !this.hideParent) { | |
91 | 94 | this.$toast('请先完善您选择的联系人信息') |
92 | 95 | return; |
93 | 96 | } else { |
... | ... | @@ -99,7 +102,7 @@ export default { |
99 | 102 | } |
100 | 103 | } |
101 | 104 | } |
102 | - console.log(this.limit,selectedArr.length) | |
105 | + console.log(this.limit, selectedArr.length) | |
103 | 106 | if (this.limit && this.limit != selectedArr.length) { |
104 | 107 | this.$toast(`请选择${this.limit}位联系人`) |
105 | 108 | return; |
... | ... | @@ -107,6 +110,15 @@ export default { |
107 | 110 | // console.log(selectedArr) |
108 | 111 | sessionStorage.setItem('selectedContactArr', JSON.stringify(selectedArr)) |
109 | 112 | this.$router.back() |
113 | + }, | |
114 | + checkboxChange (e) { | |
115 | + if (e == true) { | |
116 | + Dialog.alert({ | |
117 | + title: '温馨提示', | |
118 | + message: '活动参与主体为学生本人,请选择出行学生!未绑定学生,请新增出行学生进行添加。', | |
119 | + confirmButtonColor:'#3385FF' | |
120 | + }) | |
121 | + } | |
110 | 122 | } |
111 | 123 | }, |
112 | 124 | components: { | ... | ... |