默认提交
Showing
34 changed files
with
923 additions
and
25 deletions
... | @@ -344,6 +344,10 @@ textarea { | ... | @@ -344,6 +344,10 @@ textarea { |
344 | margin: 0 auto; | 344 | margin: 0 auto; |
345 | } | 345 | } |
346 | 346 | ||
347 | .focus{ | ||
348 | border: 1px solid $cOrange ; | ||
349 | } | ||
350 | |||
347 | .app__width { | 351 | .app__width { |
348 | width: 750px; | 352 | width: 750px; |
349 | } | 353 | } |
... | @@ -405,4 +409,10 @@ textarea { | ... | @@ -405,4 +409,10 @@ textarea { |
405 | .swiper-pagination-bullet-active { | 409 | .swiper-pagination-bullet-active { |
406 | background: #f05a23 !important; | 410 | background: #f05a23 !important; |
407 | } | 411 | } |
412 | |||
413 | |||
414 | .ipt:focus { | ||
415 | border-color: $cOrange !important; | ||
416 | } | ||
417 | |||
408 | </style> | 418 | </style> | ... | ... |
... | @@ -13,8 +13,7 @@ function Toast(msg) { | ... | @@ -13,8 +13,7 @@ function Toast(msg) { |
13 | // 服务器地址 | 13 | // 服务器地址 |
14 | // let base = process.env.REQUEST_DOMAIN || "http://localhost:9101"; | 14 | // let base = process.env.REQUEST_DOMAIN || "http://localhost:9101"; |
15 | // let base = COM.baseUrl; | 15 | // let base = COM.baseUrl; |
16 | let base = "" | 16 | let base = ""; |
17 | console.log("process.env:", process.env); | ||
18 | const axios = axiosIns.create({ | 17 | const axios = axiosIns.create({ |
19 | baseURL: process.env.VUE_APP_BASE_URL || "http://localhost:9101", | 18 | baseURL: process.env.VUE_APP_BASE_URL || "http://localhost:9101", |
20 | timeout: 5000 | 19 | timeout: 5000 | ... | ... |
src/assets/images/common/icon-notice.png
0 → 100644
278 Bytes
2.1 KB
... | @@ -39,7 +39,7 @@ | ... | @@ -39,7 +39,7 @@ |
39 | </div> | 39 | </div> |
40 | 40 | ||
41 | </div> | 41 | </div> |
42 | <div class="focus"> | 42 | <div class="public"> |
43 | <div class="tit">{{$t('footer.qrcode')}}</div> | 43 | <div class="tit">{{$t('footer.qrcode')}}</div> |
44 | <img class="qrcode" src="@/assets/images/home/qrcode-focus.png" alt=""> | 44 | <img class="qrcode" src="@/assets/images/home/qrcode-focus.png" alt=""> |
45 | </div> | 45 | </div> | ... | ... |
src/components/modal-comp/modal-comp.js
0 → 100644
1 | import api from '@/api/api' | ||
2 | import { | ||
3 | httpGet, | ||
4 | httpPost | ||
5 | } from '@/api/fetch-api.js' | ||
6 | |||
7 | |||
8 | export default { | ||
9 | data() { | ||
10 | return { | ||
11 | key: 'value' | ||
12 | } | ||
13 | }, | ||
14 | components: {}, | ||
15 | methods: { | ||
16 | initData() {} | ||
17 | }, | ||
18 | mounted() {}, | ||
19 | created() { | ||
20 | } | ||
21 | } | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
src/components/modal-comp/modal-comp.scss
0 → 100644
1 | @import '@/styles/_support'; |
src/components/modal-comp/modal-comp.vue
0 → 100644
... | @@ -6,13 +6,13 @@ | ... | @@ -6,13 +6,13 @@ |
6 | </div> | 6 | </div> |
7 | <div class="top-space"></div> | 7 | <div class="top-space"></div> |
8 | <div class="box product"> | 8 | <div class="box product"> |
9 | <div class="product-item" @click="toPage('/custom/service?q=m1')"> | 9 | <div @click="toPage('/custom/service?q=m1')" class="product-item"> |
10 | <div class="icon-wrap"> | 10 | <div class="icon-wrap"> |
11 | <img src="@/assets/images/custom-product/icon-cp-1.png"> | 11 | <img src="@/assets/images/custom-product/icon-cp-1.png"> |
12 | </div> | 12 | </div> |
13 | <div class="t1">{{$t('customProduct.menu1')}}</div> | 13 | <div class="t1">{{$t('customProduct.menu1')}}</div> |
14 | </div> | 14 | </div> |
15 | <div @click="toPage('/payment/type')" class="product-item"> | 15 | <div @click="toPage('/custom/service?q=m2')" class="product-item"> |
16 | <div class="icon-wrap"> | 16 | <div class="icon-wrap"> |
17 | <img src="@/assets/images/custom-product/icon-cp-2.png"> | 17 | <img src="@/assets/images/custom-product/icon-cp-2.png"> |
18 | </div> | 18 | </div> |
... | @@ -38,7 +38,7 @@ | ... | @@ -38,7 +38,7 @@ |
38 | </div> | 38 | </div> |
39 | <div class="t1">{{$t('customProduct.menu5')}}</div> | 39 | <div class="t1">{{$t('customProduct.menu5')}}</div> |
40 | </div> | 40 | </div> |
41 | <div @click="toPage('/custom/service?q=m6')" class="product-item"> | 41 | <div @click="toPage('/custom/service?q=m6')" class="product-item"> |
42 | <div class="icon-wrap"> | 42 | <div class="icon-wrap"> |
43 | <img src="@/assets/images/custom-product/icon-cp-6.png"> | 43 | <img src="@/assets/images/custom-product/icon-cp-6.png"> |
44 | </div> | 44 | </div> | ... | ... |
... | @@ -21,7 +21,7 @@ | ... | @@ -21,7 +21,7 @@ |
21 | position: relative; | 21 | position: relative; |
22 | margin-bottom: 2.333333rem; | 22 | margin-bottom: 2.333333rem; |
23 | 23 | ||
24 | &:last-child{ | 24 | &:last-child { |
25 | margin-bottom: 0; | 25 | margin-bottom: 0; |
26 | } | 26 | } |
27 | 27 | ||
... | @@ -55,6 +55,7 @@ | ... | @@ -55,6 +55,7 @@ |
55 | padding: 0 2.083333rem; | 55 | padding: 0 2.083333rem; |
56 | } | 56 | } |
57 | 57 | ||
58 | |||
58 | .name-ipt { | 59 | .name-ipt { |
59 | width: 13.666667rem; | 60 | width: 13.666667rem; |
60 | } | 61 | } |
... | @@ -84,7 +85,7 @@ | ... | @@ -84,7 +85,7 @@ |
84 | cursor: default; | 85 | cursor: default; |
85 | } | 86 | } |
86 | 87 | ||
87 | .check-icon{ | 88 | .check-icon { |
88 | display: inline-block; | 89 | display: inline-block; |
89 | margin-left: 2.166667rem; | 90 | margin-left: 2.166667rem; |
90 | margin-right: .666667rem; | 91 | margin-right: .666667rem; |
... | @@ -93,6 +94,7 @@ | ... | @@ -93,6 +94,7 @@ |
93 | } | 94 | } |
94 | 95 | ||
95 | } | 96 | } |
97 | |||
96 | .submit-btn { | 98 | .submit-btn { |
97 | width: 13.583333rem; | 99 | width: 13.583333rem; |
98 | height: 4.083333rem; | 100 | height: 4.083333rem; | ... | ... |
... | @@ -22,7 +22,35 @@ | ... | @@ -22,7 +22,35 @@ |
22 | </template> | 22 | </template> |
23 | </div> | 23 | </div> |
24 | <div class="right-panel"> | 24 | <div class="right-panel"> |
25 | <div class="panel" :class="{activity : activity == 'm1'}"> | 25 | <div class="panel" v-if="activity == 'm1'"> |
26 | <contact-us></contact-us> | ||
27 | </div> | ||
28 | <div class="panel" v-if="activity == 'm2'"> | ||
29 | <payment-type></payment-type> | ||
30 | </div> | ||
31 | <div class="panel" v-if="activity == 'm3'"> | ||
32 | <insurance-query></insurance-query> | ||
33 | </div> | ||
34 | <div class="panel" v-if="activity == 'm41'"> | ||
35 | <policy-change-guide></policy-change-guide> | ||
36 | </div> | ||
37 | <div class="panel" v-if="activity == 'm42'"> | ||
38 | <policy-change-contact></policy-change-contact> | ||
39 | </div> | ||
40 | <div class="panel" v-if="activity == 'm43'"> | ||
41 | <policy-change-information></policy-change-information> | ||
42 | </div> | ||
43 | <div class="panel" v-if="activity == 'm5'"></div> | ||
44 | <div class="panel" v-if="activity == 'm6'"> | ||
45 | <reservation></reservation> | ||
46 | </div> | ||
47 | <div class="panel" v-if="activity == 'm7'"> | ||
48 | <complaint-acceptance></complaint-acceptance> | ||
49 | </div> | ||
50 | <div class="panel" v-if="activity == 'm8'"> | ||
51 | <common-form></common-form> | ||
52 | </div> | ||
53 | <!-- <div class="panel" :class="{activity : activity == 'm1'}"> | ||
26 | <contact-us></contact-us> | 54 | <contact-us></contact-us> |
27 | </div> | 55 | </div> |
28 | <div class="panel" :class="{activity : activity == 'm2'}"> | 56 | <div class="panel" :class="{activity : activity == 'm2'}"> |
... | @@ -31,7 +59,6 @@ | ... | @@ -31,7 +59,6 @@ |
31 | <div class="panel" :class="{activity : activity == 'm3'}"> | 59 | <div class="panel" :class="{activity : activity == 'm3'}"> |
32 | <insurance-query></insurance-query> | 60 | <insurance-query></insurance-query> |
33 | </div> | 61 | </div> |
34 | <!-- <div class="panel" :class="{activity : activity == 'm4'}"></div> --> | ||
35 | <div class="panel" :class="{activity : activity == 'm41'}"> | 62 | <div class="panel" :class="{activity : activity == 'm41'}"> |
36 | <policy-change-guide></policy-change-guide> | 63 | <policy-change-guide></policy-change-guide> |
37 | </div> | 64 | </div> |
... | @@ -41,7 +68,6 @@ | ... | @@ -41,7 +68,6 @@ |
41 | <div class="panel" :class="{activity : activity == 'm43'}"> | 68 | <div class="panel" :class="{activity : activity == 'm43'}"> |
42 | <policy-change-information></policy-change-information> | 69 | <policy-change-information></policy-change-information> |
43 | </div> | 70 | </div> |
44 | |||
45 | <div class="panel" :class="{activity : activity == 'm5'}"></div> | 71 | <div class="panel" :class="{activity : activity == 'm5'}"></div> |
46 | <div class="panel" :class="{activity : activity == 'm6'}"> | 72 | <div class="panel" :class="{activity : activity == 'm6'}"> |
47 | <reservation></reservation> | 73 | <reservation></reservation> |
... | @@ -51,7 +77,7 @@ | ... | @@ -51,7 +77,7 @@ |
51 | </div> | 77 | </div> |
52 | <div class="panel" :class="{activity : activity == 'm8'}"> | 78 | <div class="panel" :class="{activity : activity == 'm8'}"> |
53 | <common-form></common-form> | 79 | <common-form></common-form> |
54 | </div> | 80 | </div> --> |
55 | </div> | 81 | </div> |
56 | </div> | 82 | </div> |
57 | </template> | 83 | </template> | ... | ... |
1 | import api from '@/api/api' | ||
2 | import { | ||
3 | httpGet, | ||
4 | httpPost | ||
5 | } from '@/api/fetch-api.js' | ||
6 | |||
7 | export default { | ||
8 | data() { | ||
9 | return { | ||
10 | key: 'value', | ||
11 | values: { | ||
12 | // 返回的token,串连整个流程,后台安全校验使用 | ||
13 | vcodeuuid: "", | ||
14 | token: "", | ||
15 | deviceId: "", | ||
16 | imageBase64: "", | ||
17 | password: "", | ||
18 | passwordRepeat: "" | ||
19 | }, | ||
20 | } | ||
21 | }, | ||
22 | components: {}, | ||
23 | computed: { | ||
24 | locale() { | ||
25 | return this.$i18n.locale || 'tc'; | ||
26 | }, | ||
27 | i18n() { | ||
28 | return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {}; | ||
29 | } | ||
30 | }, | ||
31 | methods: { | ||
32 | initData() {} | ||
33 | }, | ||
34 | mounted() {}, | ||
35 | created() {} | ||
36 | } |
1 | @import '@/styles/_support'; | ||
2 | |||
3 | .content { | ||
4 | position: relative; | ||
5 | padding-bottom: 2.25rem; | ||
6 | } | ||
7 | |||
8 | .top-space { | ||
9 | height: 2.25rem; | ||
10 | } | ||
11 | |||
12 | .box { | ||
13 | position: relative; | ||
14 | } | ||
15 | |||
16 | .ebg { | ||
17 | position: absolute; | ||
18 | bottom: 0; | ||
19 | left: 0; | ||
20 | right: 0; | ||
21 | |||
22 | img { | ||
23 | max-width: 100%; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | .step { | ||
28 | @extend .fcc; | ||
29 | margin-bottom: 3rem; | ||
30 | } | ||
31 | |||
32 | .login { | ||
33 | color: #4c4948; | ||
34 | @extend .bb; | ||
35 | padding: 1.416667rem 6rem 2.25rem; | ||
36 | border-bottom: solid .666667rem #006441; | ||
37 | |||
38 | margin: auto; | ||
39 | max-width: 40.25rem; | ||
40 | // height: 49.25rem; | ||
41 | |||
42 | border-radius: .75rem; | ||
43 | box-shadow: 0 0 1.5rem 0 rgba(255, 87, 0, 0.15); | ||
44 | background-color: #ffffff; | ||
45 | |||
46 | &-tit { | ||
47 | color: #f05a23; | ||
48 | text-align: center; | ||
49 | font-size: 18px; | ||
50 | font-weight: bold; | ||
51 | letter-spacing: .2rem; | ||
52 | text-shadow: 3px 5.2px 9px rgba(236, 100, 41, 0.27); | ||
53 | } | ||
54 | |||
55 | &-tit-space-1 { | ||
56 | height: 2rem; | ||
57 | } | ||
58 | |||
59 | &-nav { | ||
60 | margin: 2.25rem 0 auto; | ||
61 | display: flex; | ||
62 | justify-content: center; | ||
63 | align-items: center; | ||
64 | |||
65 | &-v-line { | ||
66 | width: .2rem; | ||
67 | height: 1.25rem; | ||
68 | background-color: #4c4948; | ||
69 | margin: 0 2.25rem; | ||
70 | } | ||
71 | |||
72 | &-tit { | ||
73 | flex: 1; | ||
74 | font-size: 18px; | ||
75 | font-weight: bold; | ||
76 | color: #4c4948; | ||
77 | } | ||
78 | |||
79 | .active { | ||
80 | color: #f05a23; | ||
81 | text-shadow: 3px 5.2px 9px rgba(236, 100, 41, 0.27); | ||
82 | } | ||
83 | } | ||
84 | |||
85 | &-protocol { | ||
86 | margin: 2.5rem auto 0; | ||
87 | display: flex; | ||
88 | align-items: center; | ||
89 | padding-left: 1rem; | ||
90 | |||
91 | .check { | ||
92 | height: 1rem; | ||
93 | margin-right: .6rem; | ||
94 | } | ||
95 | |||
96 | .protocol { | ||
97 | color: #f05a23; | ||
98 | } | ||
99 | } | ||
100 | |||
101 | &-btn-wrap { | ||
102 | display: flex; | ||
103 | justify-content: space-between; | ||
104 | margin-top: 2rem; | ||
105 | } | ||
106 | |||
107 | &-submit { | ||
108 | @include btc2(13.2rem, 4rem, 16px); | ||
109 | // margin: 2rem 1rem 0; | ||
110 | letter-spacing: 1.6px; | ||
111 | // position: absolute; | ||
112 | // left: 0; | ||
113 | // right: 0; | ||
114 | // margin: 0 auto; | ||
115 | // bottom: 2.25rem; | ||
116 | } | ||
117 | |||
118 | &-func { | ||
119 | margin: 1.5rem auto 0; | ||
120 | display: flex; | ||
121 | justify-content: center; | ||
122 | |||
123 | &-btn { | ||
124 | margin: 0 1.25rem; | ||
125 | text-decoration: underline; | ||
126 | } | ||
127 | } | ||
128 | } | ||
129 | |||
130 | .form { | ||
131 | display: flex; | ||
132 | justify-content: space-between; | ||
133 | flex-wrap: wrap; | ||
134 | |||
135 | .vcode { | ||
136 | background-color: transparent !important; | ||
137 | padding: 0 !important; | ||
138 | overflow: hidden; | ||
139 | |||
140 | img { | ||
141 | width: 100%; | ||
142 | height: 100%; | ||
143 | } | ||
144 | } | ||
145 | |||
146 | input { | ||
147 | font-size: 1.166667rem; | ||
148 | letter-spacing: .1rem; | ||
149 | } | ||
150 | |||
151 | &-item { | ||
152 | position: relative; | ||
153 | margin-bottom: 1.75rem; | ||
154 | |||
155 | .label { | ||
156 | color: $cOrange; | ||
157 | display: flex; | ||
158 | align-items: center; | ||
159 | margin-bottom: 1.25rem; | ||
160 | |||
161 | img { | ||
162 | height: 1rem; | ||
163 | margin-right: 1rem; | ||
164 | } | ||
165 | } | ||
166 | |||
167 | .ipt-wrap { | ||
168 | position: relative; | ||
169 | display: flex; | ||
170 | justify-content: space-between; | ||
171 | |||
172 | // input和下拉 | ||
173 | .ipt { | ||
174 | @extend .bb; | ||
175 | width: 100%; | ||
176 | height: 3.5rem; | ||
177 | border: solid 1px #dcdddd; | ||
178 | background-color: #ffffff; | ||
179 | border-radius: 3.5rem; | ||
180 | padding: 0 1.75rem; | ||
181 | flex: 1; | ||
182 | } | ||
183 | |||
184 | // 长文本 | ||
185 | .textarea { | ||
186 | min-height: 8.75rem; | ||
187 | border-radius: 1rem; | ||
188 | } | ||
189 | |||
190 | .down-arrow { | ||
191 | position: absolute; | ||
192 | top: 1.6rem; | ||
193 | right: 2rem; | ||
194 | background-image: url('~@/assets/images/reservation/re-down-arrow.png'); | ||
195 | width: 1rem; | ||
196 | height: .666667rem; | ||
197 | pointer-events: none; | ||
198 | cursor: default; | ||
199 | } | ||
200 | |||
201 | |||
202 | .verify-btn { | ||
203 | @extend .fcc; | ||
204 | // font-family: Arial; | ||
205 | font-size: 18px; | ||
206 | width: 8.5rem; | ||
207 | border: solid 1px #dcdddd; | ||
208 | background-color: #f2f2f2; | ||
209 | flex: none; | ||
210 | margin-left: 1.5rem; | ||
211 | color: #4c4948; | ||
212 | } | ||
213 | |||
214 | // 框内按钮 | ||
215 | .ipt2 { | ||
216 | display: flex; | ||
217 | justify-content: space-between; | ||
218 | align-items: center; | ||
219 | |||
220 | .ipt-tel { | ||
221 | flex: 1; | ||
222 | padding-left: 1.75rem; | ||
223 | } | ||
224 | |||
225 | .ipt-code { | ||
226 | flex: 1; | ||
227 | padding-right: 1.75rem; | ||
228 | } | ||
229 | |||
230 | .region-tel {} | ||
231 | |||
232 | .veri-btn { | ||
233 | color: #f05a23; | ||
234 | text-decoration: underline; | ||
235 | } | ||
236 | |||
237 | .veri-btn-default { | ||
238 | color: #aaaaaa; | ||
239 | } | ||
240 | } | ||
241 | |||
242 | } | ||
243 | |||
244 | .validator { | ||
245 | color: $cOrange; | ||
246 | margin-top: 0.5rem; | ||
247 | position: absolute; | ||
248 | right: .5rem; | ||
249 | display: flex; | ||
250 | align-items: center; | ||
251 | |||
252 | img { | ||
253 | display: inline-block; | ||
254 | margin-right: 0.4rem; | ||
255 | } | ||
256 | } | ||
257 | } | ||
258 | } | ||
259 | |||
260 | @media (max-width: 950px) { | ||
261 | .box { | ||
262 | width: 96%; | ||
263 | } | ||
264 | |||
265 | .login { | ||
266 | padding: 2rem 1rem 3.5rem; | ||
267 | } | ||
268 | } | ||
269 | |||
270 | .disable { | ||
271 | background-color: #dcdddd !important; | ||
272 | // color: $cFontGray; | ||
273 | color: #4c4948; | ||
274 | } |
1 | |||
2 | <template> | ||
3 | <div class="content"> | ||
4 | <div class="ebg"> | ||
5 | <img src="@/assets/images/common/login-bg.png"> | ||
6 | </div> | ||
7 | <div class="top-space"></div> | ||
8 | <div class="box"> | ||
9 | <div class="login"> | ||
10 | <div class="login-tit">{{$t('register.title2')}}</div> | ||
11 | <div class="login-tit-space-1"></div> | ||
12 | |||
13 | <div class="gird-g form"> | ||
14 | <div class="pure-u-1 form-item"> | ||
15 | <div class="label"> | ||
16 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
17 | </div> | ||
18 | <div class="ipt-wrap"> | ||
19 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> | ||
20 | </div> | ||
21 | <div class="validator"> | ||
22 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
23 | </div> | ||
24 | </div> | ||
25 | |||
26 | <div class="pure-u-1 form-item"> | ||
27 | <div class="label"> | ||
28 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
29 | </div> | ||
30 | <div class="ipt-wrap"> | ||
31 | <div class="down-arrow"></div> | ||
32 | <select class="ipt"> | ||
33 | <template v-if="locale =='zh'"> | ||
34 | <option>身份证</option> | ||
35 | </template> | ||
36 | <template v-else> | ||
37 | <option>身份證</option> | ||
38 | </template> | ||
39 | </select> | ||
40 | </div> | ||
41 | <div class="validator"> | ||
42 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
43 | </div> | ||
44 | </div> | ||
45 | |||
46 | <div class="pure-u-1 form-item"> | ||
47 | <div class="label"> | ||
48 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
49 | </div> | ||
50 | <div class="ipt-wrap"> | ||
51 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> | ||
52 | </div> | ||
53 | <div class="validator"> | ||
54 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
55 | </div> | ||
56 | </div> | ||
57 | <div class="pure-u-1 form-item"> | ||
58 | <div class="label"> | ||
59 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
60 | </div> | ||
61 | <div class="ipt-wrap"> | ||
62 | <div class="down-arrow"></div> | ||
63 | <select class="ipt"> | ||
64 | <template v-if="locale =='zh'"> | ||
65 | <option>身份证</option> | ||
66 | </template> | ||
67 | <template v-else> | ||
68 | <option>身份證</option> | ||
69 | </template> | ||
70 | </select> | ||
71 | </div> | ||
72 | <div class="validator"> | ||
73 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
74 | </div> | ||
75 | </div> | ||
76 | </div> | ||
77 | <div class="login-btn-wrap"> | ||
78 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | ||
79 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | ||
80 | </div> | ||
81 | </div> | ||
82 | |||
83 | </div> | ||
84 | </div> | ||
85 | </template> | ||
86 | |||
87 | <script src="./infomation-improve.js"></script> | ||
88 | <style lang="scss" scoped> | ||
89 | @import "./infomation-improve.scss"; | ||
90 | </style> |
src/pages/password-reset/password-reset.js
0 → 100644
1 | import api from '@/api/api' | ||
2 | import { | ||
3 | httpGet, | ||
4 | httpPost | ||
5 | } from '@/api/fetch-api.js' | ||
6 | |||
7 | export default { | ||
8 | data() { | ||
9 | return { | ||
10 | key: 'value', | ||
11 | type: 4, // 1:输入用户信息 2:找回密码 3:核对信息 4.重置密码 | ||
12 | values: { | ||
13 | // 返回的token,串连整个流程,后台安全校验使用 | ||
14 | vcodeuuid: "", | ||
15 | token: "", | ||
16 | deviceId: "", | ||
17 | imageBase64: "", | ||
18 | password: "", | ||
19 | passwordRepeat: "" | ||
20 | }, | ||
21 | } | ||
22 | }, | ||
23 | components: {}, | ||
24 | computed: { | ||
25 | locale() { | ||
26 | return this.$i18n.locale || 'tc'; | ||
27 | }, | ||
28 | i18n() { | ||
29 | return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {}; | ||
30 | } | ||
31 | }, | ||
32 | methods: { | ||
33 | initData() {} | ||
34 | }, | ||
35 | mounted() {}, | ||
36 | created() {} | ||
37 | } |
src/pages/password-reset/password-reset.scss
0 → 100644
1 | @import '@/styles/_support'; | ||
2 | |||
3 | .content { | ||
4 | position: relative; | ||
5 | padding-bottom: 2.25rem; | ||
6 | } | ||
7 | |||
8 | .top-space { | ||
9 | height: 2.25rem; | ||
10 | } | ||
11 | |||
12 | .box { | ||
13 | position: relative; | ||
14 | } | ||
15 | |||
16 | .ebg { | ||
17 | position: absolute; | ||
18 | bottom: 0; | ||
19 | left: 0; | ||
20 | right: 0; | ||
21 | |||
22 | img { | ||
23 | max-width: 100%; | ||
24 | } | ||
25 | } | ||
26 | |||
27 | .step { | ||
28 | @extend .fcc; | ||
29 | margin-bottom: 3rem; | ||
30 | } | ||
31 | |||
32 | .login { | ||
33 | color: #4c4948; | ||
34 | @extend .bb; | ||
35 | padding: 1.416667rem 5rem 0; | ||
36 | border-bottom: solid .666667rem #006441; | ||
37 | |||
38 | margin: auto; | ||
39 | max-width: 40.25rem; | ||
40 | height: 31rem; | ||
41 | |||
42 | border-radius: .75rem; | ||
43 | box-shadow: 0 0 1.5rem 0 rgba(255, 87, 0, 0.15); | ||
44 | background-color: #ffffff; | ||
45 | |||
46 | &-tit { | ||
47 | color: #f05a23; | ||
48 | text-align: center; | ||
49 | font-size: 18px; | ||
50 | font-weight: bold; | ||
51 | letter-spacing: .2rem; | ||
52 | text-shadow: 3px 5.2px 9px rgba(236, 100, 41, 0.27); | ||
53 | } | ||
54 | |||
55 | &-tit-space-1 { | ||
56 | height: 5.25rem; | ||
57 | } | ||
58 | |||
59 | &-tit-space-4 { | ||
60 | height: 3rem; | ||
61 | } | ||
62 | |||
63 | &-nav { | ||
64 | margin: 2.25rem 0 auto; | ||
65 | display: flex; | ||
66 | justify-content: center; | ||
67 | align-items: center; | ||
68 | |||
69 | &-v-line { | ||
70 | width: .2rem; | ||
71 | height: 1.25rem; | ||
72 | background-color: #4c4948; | ||
73 | margin: 0 2.25rem; | ||
74 | } | ||
75 | |||
76 | &-tit { | ||
77 | flex: 1; | ||
78 | font-size: 18px; | ||
79 | font-weight: bold; | ||
80 | color: #4c4948; | ||
81 | } | ||
82 | |||
83 | .active { | ||
84 | color: #f05a23; | ||
85 | text-shadow: 3px 5.2px 9px rgba(236, 100, 41, 0.27); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | &-protocol { | ||
90 | margin: 2.5rem auto 0; | ||
91 | display: flex; | ||
92 | align-items: center; | ||
93 | padding-left: 1rem; | ||
94 | |||
95 | .check { | ||
96 | height: 1rem; | ||
97 | margin-right: .6rem; | ||
98 | } | ||
99 | |||
100 | .protocol { | ||
101 | color: #f05a23; | ||
102 | } | ||
103 | } | ||
104 | |||
105 | &-submit { | ||
106 | @include btc2(13.5rem, 4rem, 16px); | ||
107 | margin: 4.166667rem auto 0; | ||
108 | letter-spacing: 1.6px; | ||
109 | position: absolute; | ||
110 | left: 0; | ||
111 | right: 0; | ||
112 | margin: 0 auto; | ||
113 | bottom: 2.25rem; | ||
114 | } | ||
115 | |||
116 | &-func { | ||
117 | margin: 1.5rem auto 0; | ||
118 | display: flex; | ||
119 | justify-content: center; | ||
120 | |||
121 | &-btn { | ||
122 | margin: 0 1.25rem; | ||
123 | text-decoration: underline; | ||
124 | } | ||
125 | } | ||
126 | } | ||
127 | |||
128 | .form { | ||
129 | display: flex; | ||
130 | justify-content: space-between; | ||
131 | flex-wrap: wrap; | ||
132 | |||
133 | .vcode { | ||
134 | background-color: transparent !important; | ||
135 | padding: 0 !important; | ||
136 | overflow: hidden; | ||
137 | |||
138 | img { | ||
139 | width: 100%; | ||
140 | height: 100%; | ||
141 | } | ||
142 | } | ||
143 | |||
144 | input { | ||
145 | font-size: 1.166667rem; | ||
146 | letter-spacing: .1rem; | ||
147 | } | ||
148 | |||
149 | &-item { | ||
150 | position: relative; | ||
151 | margin-bottom: 2.25rem; | ||
152 | |||
153 | .label { | ||
154 | font-size: 18px; | ||
155 | font-weight: bold; | ||
156 | color: #f05a23; | ||
157 | display: flex; | ||
158 | align-items: center; | ||
159 | margin-bottom: 1.25rem; | ||
160 | |||
161 | img { | ||
162 | height: 1.5rem; | ||
163 | margin-right: .8rem; | ||
164 | } | ||
165 | } | ||
166 | |||
167 | .ipt-wrap { | ||
168 | position: relative; | ||
169 | display: flex; | ||
170 | justify-content: space-between; | ||
171 | |||
172 | // input和下拉 | ||
173 | .ipt { | ||
174 | @extend .bb; | ||
175 | width: 100%; | ||
176 | height: 3.5rem; | ||
177 | border: solid 1px #dcdddd; | ||
178 | background-color: #ffffff; | ||
179 | border-radius: 3.5rem; | ||
180 | padding: 0 1.75rem; | ||
181 | flex: 1; | ||
182 | } | ||
183 | |||
184 | // 长文本 | ||
185 | .textarea { | ||
186 | min-height: 8.75rem; | ||
187 | border-radius: 1rem; | ||
188 | } | ||
189 | |||
190 | .down-arrow { | ||
191 | position: absolute; | ||
192 | top: 1.6rem; | ||
193 | right: 2rem; | ||
194 | } | ||
195 | |||
196 | |||
197 | .verify-btn { | ||
198 | @extend .fcc; | ||
199 | // font-family: Arial; | ||
200 | font-size: 18px; | ||
201 | width: 8.5rem; | ||
202 | border: solid 1px #dcdddd; | ||
203 | background-color: #f2f2f2; | ||
204 | flex: none; | ||
205 | margin-left: 1.5rem; | ||
206 | color: #4c4948; | ||
207 | } | ||
208 | |||
209 | // 框内按钮 | ||
210 | .ipt2 { | ||
211 | display: flex; | ||
212 | justify-content: space-between; | ||
213 | align-items: center; | ||
214 | |||
215 | .ipt-tel { | ||
216 | flex: 1; | ||
217 | padding-left: 1.75rem; | ||
218 | } | ||
219 | |||
220 | .ipt-code { | ||
221 | flex: 1; | ||
222 | padding-right: 1.75rem; | ||
223 | } | ||
224 | |||
225 | .region-tel {} | ||
226 | |||
227 | .veri-btn { | ||
228 | color: #f05a23; | ||
229 | text-decoration: underline; | ||
230 | } | ||
231 | |||
232 | .veri-btn-default { | ||
233 | color: #aaaaaa; | ||
234 | } | ||
235 | } | ||
236 | |||
237 | } | ||
238 | |||
239 | .validator { | ||
240 | color: $cOrange; | ||
241 | margin-top: 0.5rem; | ||
242 | position: absolute; | ||
243 | right: .5rem; | ||
244 | display: flex; | ||
245 | align-items: center; | ||
246 | |||
247 | img { | ||
248 | display: inline-block; | ||
249 | margin-right: 0.4rem; | ||
250 | } | ||
251 | } | ||
252 | } | ||
253 | } | ||
254 | |||
255 | @media (max-width: 950px) { | ||
256 | .box { | ||
257 | width: 96%; | ||
258 | } | ||
259 | |||
260 | .login { | ||
261 | padding: 2rem 1rem 3.5rem; | ||
262 | } | ||
263 | } | ||
264 | |||
265 | .disable { | ||
266 | background-color: #dcdddd !important; | ||
267 | // color: $cFontGray; | ||
268 | color: #4c4948; | ||
269 | } |
src/pages/password-reset/password-reset.vue
0 → 100644
1 | |||
2 | <template> | ||
3 | <div class="content"> | ||
4 | <div class="ebg"> | ||
5 | <img src="@/assets/images/password-reset/password-reset-bg.png"> | ||
6 | </div> | ||
7 | <div class="top-space"></div> | ||
8 | <div class="box"> | ||
9 | |||
10 | <!-- 输入用户信息 --> | ||
11 | <div v-if="type == 1" class="login"> | ||
12 | <div class="login-tit">{{$t('register.title2')}}</div> | ||
13 | <div class="login-tit-space-1"></div> | ||
14 | <div class="gird-g form"> | ||
15 | <div class="pure-u-1 form-item"> | ||
16 | <div class="label"> | ||
17 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
18 | </div> | ||
19 | <div class="ipt-wrap"> | ||
20 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> | ||
21 | </div> | ||
22 | <div class="validator"> | ||
23 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
24 | </div> | ||
25 | </div> | ||
26 | </div> | ||
27 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | ||
28 | </div> | ||
29 | |||
30 | <!-- 找回密码 --> | ||
31 | <div v-if="type == 2" class="login"> | ||
32 | <div class="login-tit">{{$t('register.title2')}}</div> | ||
33 | <div class="login-tit-space-1"></div> | ||
34 | <div class="gird-g form"> | ||
35 | <div class="pure-u-1 form-item"> | ||
36 | <div class="label"> | ||
37 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
38 | </div> | ||
39 | <div class="ipt-wrap"> | ||
40 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> | ||
41 | </div> | ||
42 | <div class="validator"> | ||
43 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
44 | </div> | ||
45 | </div> | ||
46 | </div> | ||
47 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | ||
48 | </div> | ||
49 | |||
50 | <!-- 核对信息 --> | ||
51 | <div v-if="type == 3" class="login"> | ||
52 | <div class="login-tit">{{$t('register.title2')}}</div> | ||
53 | <div class="login-tit-space-1"></div> | ||
54 | <div class="gird-g form"> | ||
55 | <div class="pure-u-1 form-item"> | ||
56 | <div class="label"> | ||
57 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
58 | </div> | ||
59 | <div class="ipt-wrap"> | ||
60 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt disable" type="password" v-model="values.password"> | ||
61 | </div> | ||
62 | </div> | ||
63 | </div> | ||
64 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | ||
65 | </div> | ||
66 | |||
67 | <!-- 重置密码 --> | ||
68 | <div v-if="type == 4" class="login"> | ||
69 | <div class="login-tit">{{$t('register.title2')}}</div> | ||
70 | <div class="login-tit-space-4"></div> | ||
71 | <div class="gird-g form"> | ||
72 | <div class="pure-u-1 form-item"> | ||
73 | <div class="label"> | ||
74 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | ||
75 | </div> | ||
76 | <div class="ipt-wrap"> | ||
77 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> | ||
78 | </div> | ||
79 | <div class="validator"> | ||
80 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
81 | </div> | ||
82 | </div> | ||
83 | <div class="pure-u-1 form-item"> | ||
84 | <div class="label"> | ||
85 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPasswordSure')}} | ||
86 | </div> | ||
87 | <div class="ipt-wrap"> | ||
88 | <input :placeholder="$t('register.newPasswordSurePlaceholder')" class="ipt" type="password" v-model="values.passwordRepeat"> | ||
89 | </div> | ||
90 | <div class="validator"> | ||
91 | <img src="@/assets/images/common/icon-notice.png" alt=""> 验证提示 | ||
92 | </div> | ||
93 | </div> | ||
94 | </div> | ||
95 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | ||
96 | </div> | ||
97 | </div> | ||
98 | </div> | ||
99 | </template> | ||
100 | |||
101 | <script src="./password-reset.js"></script> | ||
102 | <style lang="scss" scoped> | ||
103 | @import "./password-reset.scss"; | ||
104 | </style> |
... | @@ -11,7 +11,7 @@ export default { | ... | @@ -11,7 +11,7 @@ export default { |
11 | data() { | 11 | data() { |
12 | return { | 12 | return { |
13 | key: 'value', | 13 | key: 'value', |
14 | type: 1, // 1:手机验证 2:输入密码 | 14 | type: 2, // 1:手机验证 2:输入密码 |
15 | mobileNoType: "hk",// 选择的手机好类型 | 15 | mobileNoType: "hk",// 选择的手机好类型 |
16 | mobileTip: {}, | 16 | mobileTip: {}, |
17 | mobileOptions: [], | 17 | mobileOptions: [], | ... | ... |
... | @@ -10,6 +10,7 @@ | ... | @@ -10,6 +10,7 @@ |
10 | <img v-if="type == 2" src="@/assets/images/register/register-step-2.png"> | 10 | <img v-if="type == 2" src="@/assets/images/register/register-step-2.png"> |
11 | </div> | 11 | </div> |
12 | <div class="box"> | 12 | <div class="box"> |
13 | <!-- 手机验证 --> | ||
13 | <div v-if="type == 1" class="login"> | 14 | <div v-if="type == 1" class="login"> |
14 | <div class="login-tit">{{$t('register.title')}}</div> | 15 | <div class="login-tit">{{$t('register.title')}}</div> |
15 | <div class="gird-g form"> | 16 | <div class="gird-g form"> |
... | @@ -42,21 +43,21 @@ | ... | @@ -42,21 +43,21 @@ |
42 | <div class="ipt-wrap"> | 43 | <div class="ipt-wrap"> |
43 | <div class="ipt ipt2"> | 44 | <div class="ipt ipt2"> |
44 | <input :placeholder="$t('register.verifyCodePlaceholder')" class="ipt-code" type="text" v-model="registerForm.opt"> | 45 | <input :placeholder="$t('register.verifyCodePlaceholder')" class="ipt-code" type="text" v-model="registerForm.opt"> |
45 | <div v-if="times.remain == 0" class="veri-btn pointer" @click="handlerStdSendOTP" >{{$t('register.verifyCodeGet')}}</div> | 46 | <div v-if="times.remain == 0" class="veri-btn pointer" @click="handlerStdSendOTP">{{$t('register.verifyCodeGet')}}</div> |
46 | <div v-else class="veri-btn-default">{{times.tip}}</div> | 47 | <div v-else class="veri-btn-default">{{times.tip}}</div> |
47 | </div> | 48 | </div> |
48 | </div> | 49 | </div> |
49 | </div> | 50 | </div> |
50 | </div> | 51 | </div> |
51 | 52 | ||
52 | <div class="login-protocol pointer" @click="registerCheck.agreeProtocol = !registerCheck.agreeProtocol" > | 53 | <div class="login-protocol pointer" @click="registerCheck.agreeProtocol = !registerCheck.agreeProtocol"> |
53 | <img v-if="!registerCheck.agreeProtocol" class="check" src="@/assets/images/login/un-check.png"> | 54 | <img v-if="!registerCheck.agreeProtocol" class="check" src="@/assets/images/login/un-check.png"> |
54 | <img v-if="registerCheck.agreeProtocol" class="check" src="@/assets/images/login/check.png"> | 55 | <img v-if="registerCheck.agreeProtocol" class="check" src="@/assets/images/login/check.png"> {{$t('login.agree')}} |
55 | {{$t('login.agree')}} | ||
56 | <span @click="onProtocolHandler()" class="protocol pointer">{{$t('login.protocol')}}</span> | 56 | <span @click="onProtocolHandler()" class="protocol pointer">{{$t('login.protocol')}}</span> |
57 | </div> | 57 | </div> |
58 | <div @click="onSubmitHandler()" class="login-submit pointer">{{$t('register.register')}}</div> | 58 | <div @click="onSubmitHandler()" class="login-submit pointer">{{$t('register.register')}}</div> |
59 | </div> | 59 | </div> |
60 | <!-- 输入密码 --> | ||
60 | <div v-if="type == 2" class="login"> | 61 | <div v-if="type == 2" class="login"> |
61 | <div class="login-tit">{{$t('register.title2')}}</div> | 62 | <div class="login-tit">{{$t('register.title2')}}</div> |
62 | <div class="gird-g form"> | 63 | <div class="gird-g form"> |
... | @@ -65,7 +66,7 @@ | ... | @@ -65,7 +66,7 @@ |
65 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} | 66 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPassword')}} |
66 | </div> | 67 | </div> |
67 | <div class="ipt-wrap"> | 68 | <div class="ipt-wrap"> |
68 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> | 69 | <input :placeholder="$t('register.newPasswordPlaceholder')" class="ipt" type="password" v-model="values.password"> |
69 | </div> | 70 | </div> |
70 | </div> | 71 | </div> |
71 | <div class="pure-u-1 form-item"> | 72 | <div class="pure-u-1 form-item"> |
... | @@ -73,12 +74,13 @@ | ... | @@ -73,12 +74,13 @@ |
73 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPasswordSure')}} | 74 | <img src="@/assets/images/register/icon-register-lock.png"> {{$t('register.newPasswordSure')}} |
74 | </div> | 75 | </div> |
75 | <div class="ipt-wrap"> | 76 | <div class="ipt-wrap"> |
76 | <input :placeholder="$t('register.newPasswordSurePlaceholder')" class="ipt" type="password" v-model="values.passwordRepeat"> | 77 | <input :placeholder="$t('register.newPasswordSurePlaceholder')" class="ipt" type="password" v-model="values.passwordRepeat"> |
77 | </div> | 78 | </div> |
78 | </div> | 79 | </div> |
79 | </div> | 80 | </div> |
80 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> | 81 | <div @click="onRegisterHandler()" class="login-submit pointer">{{$t('register.sure')}}</div> |
81 | </div> | 82 | </div> |
83 | <!-- 输入密码 --> | ||
82 | </div> | 84 | </div> |
83 | </div> | 85 | </div> |
84 | </template> | 86 | </template> | ... | ... |
... | @@ -39,6 +39,22 @@ const routes = [ | ... | @@ -39,6 +39,22 @@ const routes = [ |
39 | } | 39 | } |
40 | }, | 40 | }, |
41 | { | 41 | { |
42 | path: '/password/reset', | ||
43 | name: 'passwordReset', | ||
44 | component: () => import('./pages/password-reset/password-reset.vue'), | ||
45 | meta: { | ||
46 | title: '' | ||
47 | } | ||
48 | }, | ||
49 | { | ||
50 | path: '/infomation/improve', | ||
51 | name: 'infomationImprove', | ||
52 | component: () => import('./pages/infomation-improve/infomation-improve.vue'), | ||
53 | meta: { | ||
54 | title: '' | ||
55 | } | ||
56 | }, | ||
57 | { | ||
42 | path: '/profile', | 58 | path: '/profile', |
43 | name: 'profile', | 59 | name: 'profile', |
44 | component: () => import('./pages/profile/profile.vue'), | 60 | component: () => import('./pages/profile/profile.vue'), | ... | ... |
-
Please register or sign in to post a comment