默认提交
Showing
11 changed files
with
492 additions
and
62 deletions
| ... | @@ -16,6 +16,7 @@ | ... | @@ -16,6 +16,7 @@ |
| 16 | "amfe-flexible": "^2.2.1", | 16 | "amfe-flexible": "^2.2.1", |
| 17 | "axios": "^0.19.0", | 17 | "axios": "^0.19.0", |
| 18 | "axios-mock-adapter": "^1.16.0", | 18 | "axios-mock-adapter": "^1.16.0", |
| 19 | "calculatorjs": "^1.1.2", | ||
| 19 | "co": "^4.6.0", | 20 | "co": "^4.6.0", |
| 20 | "core-js": "^2.6.5", | 21 | "core-js": "^2.6.5", |
| 21 | "crypto-js": "^3.1.9-1", | 22 | "crypto-js": "^3.1.9-1", | ... | ... |
src/assets/images/index/index-num-bg.png
0 → 100644
268 Bytes
src/assets/images/index/index-thumb.png
0 → 100644
1.3 KB
src/components/slider-comp/slider-comp.js
0 → 100644
| 1 | export default { | ||
| 2 | props: ["min", "max", "value"], | ||
| 3 | data() { | ||
| 4 | return { | ||
| 5 | slider: null, //滚动条DOM元素 | ||
| 6 | thunk: null, //拖拽DOM元素 | ||
| 7 | per: this.value || 0 //当前值 | ||
| 8 | }; | ||
| 9 | }, | ||
| 10 | methods: { | ||
| 11 | initData() { | ||
| 12 | this.slider = this.$refs.slider; | ||
| 13 | this.thunk = this.$refs.trunk; | ||
| 14 | var _this = this; | ||
| 15 | // console.log("object"); | ||
| 16 | this.thunk.onmousedown = function (e) { | ||
| 17 | var width = parseInt(_this.width); | ||
| 18 | var disX = e.clientX; | ||
| 19 | document.onmousemove = function (e) { | ||
| 20 | // value, left, width | ||
| 21 | // 当value变化的时候,会通过计算属性修改left,width | ||
| 22 | |||
| 23 | // 拖拽的时候获取的新width | ||
| 24 | var newWidth = e.clientX - disX + width; | ||
| 25 | // 拖拽的时候得到新的百分比 | ||
| 26 | var scale = newWidth / _this.slider.offsetWidth; | ||
| 27 | _this.per = Math.ceil((_this.max - _this.min) * scale + _this.min); | ||
| 28 | _this.per = Math.max(_this.per, _this.min); | ||
| 29 | _this.per = Math.min(_this.per, _this.max); | ||
| 30 | _this.$emit("input", _this.per); | ||
| 31 | }; | ||
| 32 | document.onmouseup = function () { | ||
| 33 | document.onmousemove = document.onmouseup = null; | ||
| 34 | }; | ||
| 35 | return false; | ||
| 36 | }; | ||
| 37 | } | ||
| 38 | }, | ||
| 39 | //渲染到页面的时候 | ||
| 40 | mounted() { | ||
| 41 | this.initData(); | ||
| 42 | window.addEventListener('resize', ()=>{ | ||
| 43 | this.initData(); | ||
| 44 | }, false); | ||
| 45 | }, | ||
| 46 | |||
| 47 | computed: { | ||
| 48 | // 设置一个百分比,提供计算slider进度宽度和trunk的left值 | ||
| 49 | // 对应公式为 当前值-最小值/最大值-最小值 = slider进度width / slider总width | ||
| 50 | // trunk left = slider进度width + trunk宽度/2 | ||
| 51 | scale() { | ||
| 52 | return (this.per - this.min) / (this.max - this.min); | ||
| 53 | }, | ||
| 54 | width() { | ||
| 55 | if (this.slider) { | ||
| 56 | return this.slider.offsetWidth * this.scale + "px"; | ||
| 57 | } else { | ||
| 58 | return 0 + "px"; | ||
| 59 | } | ||
| 60 | }, | ||
| 61 | left() { | ||
| 62 | if (this.slider) { | ||
| 63 | return ( | ||
| 64 | this.slider.offsetWidth * this.scale - | ||
| 65 | this.thunk.offsetWidth / 2 + | ||
| 66 | "px" | ||
| 67 | ); | ||
| 68 | } else { | ||
| 69 | return 0 + "px"; | ||
| 70 | } | ||
| 71 | } | ||
| 72 | } | ||
| 73 | }; |
src/components/slider-comp/slider-comp.scss
0 → 100644
| 1 | @import "@/styles/_support.scss"; | ||
| 2 | |||
| 3 | .slider { | ||
| 4 | position: relative; | ||
| 5 | // margin: 20px 0; | ||
| 6 | width: 100%; | ||
| 7 | height: 17px; | ||
| 8 | border-radius: 8.5px; | ||
| 9 | @include linear-bg-rev; | ||
| 10 | } | ||
| 11 | .slider .process { | ||
| 12 | position: absolute; | ||
| 13 | left: 0; | ||
| 14 | top: 0; | ||
| 15 | width: 100%; | ||
| 16 | height: 17px; | ||
| 17 | border-radius: 8.5px; | ||
| 18 | } | ||
| 19 | .slider .thunk { | ||
| 20 | position: absolute; | ||
| 21 | bottom: -4px; | ||
| 22 | left: -12px; | ||
| 23 | } | ||
| 24 | .slider .block { | ||
| 25 | background-image: url("~@/assets/images/index/index-thumb.png"); | ||
| 26 | @extend .bis; | ||
| 27 | width: 27px; | ||
| 28 | height: 26px; | ||
| 29 | margin: 1px auto 0; | ||
| 30 | cursor: pointer; | ||
| 31 | transition: 0.2s all; | ||
| 32 | } | ||
| 33 | .slider .tips { | ||
| 34 | // position: absolute; | ||
| 35 | // left: -7px; | ||
| 36 | // bottom: 30px; | ||
| 37 | // min-width: 15px; | ||
| 38 | // text-align: center; | ||
| 39 | // padding: 4px 8px; | ||
| 40 | // background: #000; | ||
| 41 | // border-radius: 5px; | ||
| 42 | // height: 24px; | ||
| 43 | // color: #fff; | ||
| 44 | background-image: url("~@/assets/images/index/index-num-bg.png"); | ||
| 45 | @extend .bis; | ||
| 46 | width: 40px; | ||
| 47 | height: 30px; | ||
| 48 | font-size: $fontSize-M2; | ||
| 49 | color: #ffffff; | ||
| 50 | text-align: center; | ||
| 51 | padding-top: 2px; | ||
| 52 | } | ||
| 53 | .slider .tips i { | ||
| 54 | position: absolute; | ||
| 55 | margin-left: -5px; | ||
| 56 | left: 50%; | ||
| 57 | bottom: -9px; | ||
| 58 | font-size: 16px; | ||
| 59 | color: #000; | ||
| 60 | } | ||
| 61 | .slider .block:hover { | ||
| 62 | // transform: scale(1.1); | ||
| 63 | opacity: 0.9; | ||
| 64 | } |
src/components/slider-comp/slider-comp.vue
0 → 100644
| 1 | <template> | ||
| 2 | <div class="slider" ref="slider"> | ||
| 3 | <div class="process" :style="{width}"></div> | ||
| 4 | <div class="thunk" ref="trunk" :style="{left}"> | ||
| 5 | <div class="tips"> | ||
| 6 | <span>{{per}}</span> | ||
| 7 | <!-- <span>300</span> --> | ||
| 8 | </div> | ||
| 9 | <div class="block"></div> | ||
| 10 | |||
| 11 | </div> | ||
| 12 | </div> | ||
| 13 | </template> | ||
| 14 | |||
| 15 | <script src="./slider-comp.js"></script> | ||
| 16 | <style lang="scss" scoped> | ||
| 17 | @import "./slider-comp.scss"; | ||
| 18 | </style> |
| ... | @@ -9,6 +9,8 @@ import { | ... | @@ -9,6 +9,8 @@ import { |
| 9 | } from "@/api/fetch-api.js"; | 9 | } from "@/api/fetch-api.js"; |
| 10 | 10 | ||
| 11 | import DatePicker from "@/components/date-picker/date-picker.vue"; | 11 | import DatePicker from "@/components/date-picker/date-picker.vue"; |
| 12 | import Slider from "@/components/slider-comp/slider-comp.vue"; | ||
| 13 | |||
| 12 | import { | 14 | import { |
| 13 | ddMMyyyy2yyyyMMdd | 15 | ddMMyyyy2yyyyMMdd |
| 14 | } from "@utils/utils.js"; | 16 | } from "@utils/utils.js"; |
| ... | @@ -16,6 +18,8 @@ import { | ... | @@ -16,6 +18,8 @@ import { |
| 16 | contactMethodCheck | 18 | contactMethodCheck |
| 17 | } from "@utils/utils.js"; | 19 | } from "@utils/utils.js"; |
| 18 | 20 | ||
| 21 | // import calc from 'calculatorjs'; | ||
| 22 | |||
| 19 | export default { | 23 | export default { |
| 20 | data() { | 24 | data() { |
| 21 | return { | 25 | return { |
| ... | @@ -73,10 +77,69 @@ export default { | ... | @@ -73,10 +77,69 @@ export default { |
| 73 | e5: "", // 理想聯絡時間 | 77 | e5: "", // 理想聯絡時間 |
| 74 | e6: "", // 查詢事項 | 78 | e6: "", // 查詢事項 |
| 75 | }, | 79 | }, |
| 80 | |||
| 81 | sliderMin: 1, // 投保滑动最小值 | ||
| 82 | sliderMax: 300, // 投保滑动最大值 | ||
| 83 | sliderPer: 1, // 保费数值 | ||
| 84 | |||
| 85 | // 繳費期列表 | ||
| 86 | paymentPeriodList: [{ | ||
| 87 | v: 3, | ||
| 88 | n: "3年", | ||
| 89 | p: 333.330000 | ||
| 90 | }, | ||
| 91 | { | ||
| 92 | v: 5, | ||
| 93 | n: "5年", | ||
| 94 | p: 200.000000 | ||
| 95 | }, | ||
| 96 | { | ||
| 97 | v: 8, | ||
| 98 | n: "8年", | ||
| 99 | p: 125.000000 | ||
| 100 | }, | ||
| 101 | { | ||
| 102 | v: 10, | ||
| 103 | n: "10年", | ||
| 104 | p: 100.000000 | ||
| 105 | } | ||
| 106 | ], | ||
| 107 | // 缴费选项列表 | ||
| 108 | paymentOptionList: [{ | ||
| 109 | v: 1, | ||
| 110 | m: 12, | ||
| 111 | n: "每年", | ||
| 112 | p: 1 | ||
| 113 | }, | ||
| 114 | { | ||
| 115 | v: 2, | ||
| 116 | m: 6, | ||
| 117 | n: "每半年", | ||
| 118 | p: 0.5064 | ||
| 119 | }, | ||
| 120 | { | ||
| 121 | v: 4, | ||
| 122 | m: 6, | ||
| 123 | n: "每季度", | ||
| 124 | p: 0.2548 | ||
| 125 | }, | ||
| 126 | { | ||
| 127 | v: 12, | ||
| 128 | m: 1, | ||
| 129 | n: "每月", | ||
| 130 | p: 0.0853 | ||
| 131 | } | ||
| 132 | ], | ||
| 133 | |||
| 134 | // 当前选择保费期 | ||
| 135 | curPaymentPeriod: {}, | ||
| 136 | // 当前缴费选项 | ||
| 137 | curPaymentOption: {} | ||
| 76 | }; | 138 | }; |
| 77 | }, | 139 | }, |
| 78 | components: { | 140 | components: { |
| 79 | DatePicker | 141 | DatePicker, |
| 142 | Slider | ||
| 80 | }, | 143 | }, |
| 81 | computed: { | 144 | computed: { |
| 82 | locale() { | 145 | locale() { |
| ... | @@ -99,7 +162,6 @@ export default { | ... | @@ -99,7 +162,6 @@ export default { |
| 99 | console.log("result:", result); | 162 | console.log("result:", result); |
| 100 | return result; | 163 | return result; |
| 101 | }, | 164 | }, |
| 102 | |||
| 103 | submitBtnDisabled() { | 165 | submitBtnDisabled() { |
| 104 | // let b1 = !this.selectedPolicies || this.selectedPolicies.length == 0; | 166 | // let b1 = !this.selectedPolicies || this.selectedPolicies.length == 0; |
| 105 | // let b2 = !this.data.address && !this.data.email && !this.data.mobile; | 167 | // let b2 = !this.data.address && !this.data.email && !this.data.mobile; |
| ... | @@ -157,28 +219,26 @@ export default { | ... | @@ -157,28 +219,26 @@ export default { |
| 157 | }; | 219 | }; |
| 158 | return result; | 220 | return result; |
| 159 | }, | 221 | }, |
| 222 | |||
| 223 | /** | ||
| 224 | * | ||
| 225 | * 保费=保额/1000 * 费率因子 * 缴别系数 | ||
| 226 | * 以50万港币为例,缴费期10年,季缴,计算如下: | ||
| 227 | * 500,000 / 1000 * 100 * 0.2548 = 12740 | ||
| 228 | */ | ||
| 229 | sumAssured() { | ||
| 230 | let { | ||
| 231 | curPaymentPeriod, | ||
| 232 | curPaymentOption, | ||
| 233 | sliderPer | ||
| 234 | } = this; | ||
| 235 | let bet = 10000; //单位 万元 | ||
| 236 | let result = bet * sliderPer / 1000 * curPaymentPeriod.p * curPaymentOption.p * curPaymentOption.v; | ||
| 237 | result = result.toFixed(2); | ||
| 238 | return result; | ||
| 239 | } | ||
| 160 | }, | 240 | }, |
| 161 | methods: { | 241 | methods: { |
| 162 | // fetchBanner() { | ||
| 163 | // return new Promise((resolve, reject) => { | ||
| 164 | // httpPost({ | ||
| 165 | // url: api.banner | ||
| 166 | // }).then(res => { | ||
| 167 | // resolve(res); | ||
| 168 | // }); | ||
| 169 | // }); | ||
| 170 | // }, | ||
| 171 | // refreshBanner() { | ||
| 172 | // let key = this.locale; | ||
| 173 | // if (key == "zh") { | ||
| 174 | // key = "cn"; | ||
| 175 | // } | ||
| 176 | // let bannerList = []; | ||
| 177 | // this.bannerCandidateList.forEach(element => { | ||
| 178 | // bannerList.push(element[key]); | ||
| 179 | // }); | ||
| 180 | // this.$set(this, "bannerList", bannerList); | ||
| 181 | // }, | ||
| 182 | btnNavigateTo(type, link, d) { | 242 | btnNavigateTo(type, link, d) { |
| 183 | switch (type) { | 243 | switch (type) { |
| 184 | case "none": | 244 | case "none": |
| ... | @@ -207,6 +267,14 @@ export default { | ... | @@ -207,6 +267,14 @@ export default { |
| 207 | break; | 267 | break; |
| 208 | } | 268 | } |
| 209 | }, | 269 | }, |
| 270 | // 选择繳費期 | ||
| 271 | onSelectPaymentPeriodHandler(item) { | ||
| 272 | this.curPaymentPeriod = item; | ||
| 273 | }, | ||
| 274 | // 选择缴费选项 | ||
| 275 | onSelectPaymentOptionHandler(item) { | ||
| 276 | this.curPaymentOption = item; | ||
| 277 | }, | ||
| 210 | // 选择标签 | 278 | // 选择标签 |
| 211 | onTabHandler(item) { | 279 | onTabHandler(item) { |
| 212 | this.curTab = item; | 280 | this.curTab = item; |
| ... | @@ -264,7 +332,6 @@ export default { | ... | @@ -264,7 +332,6 @@ export default { |
| 264 | query: {} | 332 | query: {} |
| 265 | }); | 333 | }); |
| 266 | } | 334 | } |
| 267 | |||
| 268 | }, | 335 | }, |
| 269 | /** | 336 | /** |
| 270 | * 验证表单 | 337 | * 验证表单 |
| ... | @@ -359,11 +426,11 @@ export default { | ... | @@ -359,11 +426,11 @@ export default { |
| 359 | }); | 426 | }); |
| 360 | }) | 427 | }) |
| 361 | }, | 428 | }, |
| 429 | |||
| 362 | initData() { | 430 | initData() { |
| 363 | // this.fetchBanner().then(res => { | 431 | |
| 364 | // this.bannerCandidateList = res; | 432 | this.curPaymentPeriod = this.paymentPeriodList[0]; |
| 365 | // this.refreshBanner(); | 433 | this.curPaymentOption = this.paymentOptionList[0]; |
| 366 | // }); | ||
| 367 | 434 | ||
| 368 | // 可以埋数据在 localStorage | 435 | // 可以埋数据在 localStorage |
| 369 | httpPost({ | 436 | httpPost({ |
| ... | @@ -398,7 +465,7 @@ export default { | ... | @@ -398,7 +465,7 @@ export default { |
| 398 | element.index = idx; | 465 | element.index = idx; |
| 399 | element.describeList = element.describe.split("\n"); | 466 | element.describeList = element.describe.split("\n"); |
| 400 | }); | 467 | }); |
| 401 | this.curTab = this.dataList[0]; | 468 | this.curTab = this.dataList[1]; |
| 402 | this.bannerList = this.dataList; | 469 | this.bannerList = this.dataList; |
| 403 | console.log("this.dataList:", this.dataList); | 470 | console.log("this.dataList:", this.dataList); |
| 404 | }) | 471 | }) |
| ... | @@ -410,7 +477,6 @@ export default { | ... | @@ -410,7 +477,6 @@ export default { |
| 410 | this.initData(); | 477 | this.initData(); |
| 411 | }, | 478 | }, |
| 412 | created() { | 479 | created() { |
| 413 | |||
| 414 | this.$root.eventBus.$on("langChange", () => { | 480 | this.$root.eventBus.$on("langChange", () => { |
| 415 | try { | 481 | try { |
| 416 | // this.refreshBanner(); | 482 | // this.refreshBanner(); | ... | ... |
| 1 | @import "@/styles/_support.scss"; | 1 | @import "@/styles/_support.scss"; |
| 2 | 2 | ||
| 3 | .page { | 3 | .page { |
| 4 | font-size: 22px; | 4 | font-size: $fontSize-M2; |
| 5 | } | 5 | } |
| 6 | 6 | ||
| 7 | .top-space { | 7 | .top-space { |
| ... | @@ -297,11 +297,10 @@ | ... | @@ -297,11 +297,10 @@ |
| 297 | } | 297 | } |
| 298 | 298 | ||
| 299 | &-cont { | 299 | &-cont { |
| 300 | min-height: 380px; | 300 | min-height: 384px; |
| 301 | margin: 0 auto 0; | 301 | margin: 0 auto 0; |
| 302 | position: relative; | 302 | position: relative; |
| 303 | display: flex; | 303 | display: flex; |
| 304 | font-size: 22px; | ||
| 305 | 304 | ||
| 306 | .panel { | 305 | .panel { |
| 307 | // position: relative; | 306 | // position: relative; |
| ... | @@ -310,7 +309,7 @@ | ... | @@ -310,7 +309,7 @@ |
| 310 | 309 | ||
| 311 | .panel-left { | 310 | .panel-left { |
| 312 | @include linear-bg; | 311 | @include linear-bg; |
| 313 | // position: relative; | 312 | font-size: 22px; |
| 314 | @extend .fcc; | 313 | @extend .fcc; |
| 315 | .desc { | 314 | .desc { |
| 316 | @extend .bb; | 315 | @extend .bb; |
| ... | @@ -327,12 +326,16 @@ | ... | @@ -327,12 +326,16 @@ |
| 327 | 326 | ||
| 328 | .panel-right { | 327 | .panel-right { |
| 329 | background-color: #ffffff; | 328 | background-color: #ffffff; |
| 330 | @extend .fcc; | 329 | // @extend .fcc; |
| 331 | 330 | ||
| 331 | .plugin { | ||
| 332 | width: 100%; | ||
| 333 | height: 100%; | ||
| 334 | } | ||
| 332 | .func { | 335 | .func { |
| 333 | } | 336 | } |
| 334 | 337 | ||
| 335 | // 性别和年龄选择 | 338 | // 产品好医时交互插件 性别和年龄选择 |
| 336 | .func1 { | 339 | .func1 { |
| 337 | &-item { | 340 | &-item { |
| 338 | display: flex; | 341 | display: flex; |
| ... | @@ -373,7 +376,156 @@ | ... | @@ -373,7 +376,156 @@ |
| 373 | } | 376 | } |
| 374 | } | 377 | } |
| 375 | 378 | ||
| 376 | // 平安福保费计算 | 379 | // 平安福 保费计算 插件 |
| 380 | .func2 { | ||
| 381 | @extend .bb; | ||
| 382 | padding: 12px 32px; | ||
| 383 | |||
| 384 | &-tit { | ||
| 385 | font-size: 22px; | ||
| 386 | font-weight: bold; | ||
| 387 | text-align: center; | ||
| 388 | color: $cOrange2; | ||
| 389 | } | ||
| 390 | |||
| 391 | &-tit2 { | ||
| 392 | margin-top: 2px; | ||
| 393 | font-size: $fontSize-M2; | ||
| 394 | text-align: center; | ||
| 395 | color: $cFontGray2; | ||
| 396 | } | ||
| 397 | |||
| 398 | // 滑动条 | ||
| 399 | .slider { | ||
| 400 | position: relative; | ||
| 401 | max-width: 100%; | ||
| 402 | margin: 38px auto 0; | ||
| 403 | } | ||
| 404 | |||
| 405 | // 滑动条 | ||
| 406 | // .slider { | ||
| 407 | // position: relative; | ||
| 408 | // max-width: 100%; | ||
| 409 | // margin: 0 auto; | ||
| 410 | |||
| 411 | // &-bar { | ||
| 412 | // position: relative; | ||
| 413 | // @include linear-bg-rev; | ||
| 414 | // height: 17px; | ||
| 415 | // border-radius: 8.5px; | ||
| 416 | // width: 100%; | ||
| 417 | // margin-top: 36px; | ||
| 418 | |||
| 419 | // &-thumb { | ||
| 420 | // position: absolute; | ||
| 421 | // bottom: -4px; | ||
| 422 | // left: -12px; | ||
| 423 | |||
| 424 | // .num { | ||
| 425 | // background-image: url("~@/assets/images/index/index-num-bg.png"); | ||
| 426 | // @extend .bis; | ||
| 427 | // width: 40px; | ||
| 428 | // height: 30px; | ||
| 429 | // font-size: $fontSize-M2; | ||
| 430 | // color: #ffffff; | ||
| 431 | // text-align: center; | ||
| 432 | // padding-top: 2px; | ||
| 433 | // } | ||
| 434 | |||
| 435 | // .circle { | ||
| 436 | // background-image: url("~@/assets/images/index/index-thumb.png"); | ||
| 437 | // @extend .bis; | ||
| 438 | // width: 27px; | ||
| 439 | // height: 26px; | ||
| 440 | // margin: 1px auto 0; | ||
| 441 | // cursor: pointer; | ||
| 442 | // } | ||
| 443 | // } | ||
| 444 | // } | ||
| 445 | // } | ||
| 446 | |||
| 447 | .form { | ||
| 448 | margin-top: 14px; | ||
| 449 | |||
| 450 | &-item { | ||
| 451 | @extend .bb; | ||
| 452 | display: flex; | ||
| 453 | |||
| 454 | .label { | ||
| 455 | @extend .bb; | ||
| 456 | width: 110px; | ||
| 457 | font-size: 22px; | ||
| 458 | padding-right: 10px; | ||
| 459 | } | ||
| 460 | |||
| 461 | .val { | ||
| 462 | display: flex; | ||
| 463 | justify-content: space-between; | ||
| 464 | flex-wrap: wrap; | ||
| 465 | flex: 1; | ||
| 466 | |||
| 467 | .item { | ||
| 468 | @extend .fcc; | ||
| 469 | @include border-tans; | ||
| 470 | border-radius: 10px; | ||
| 471 | width: 76px; | ||
| 472 | height: 35px; | ||
| 473 | text-align: center; | ||
| 474 | margin-right: 12px; | ||
| 475 | margin-bottom: 14px; | ||
| 476 | cursor: pointer; | ||
| 477 | |||
| 478 | &:last-child { | ||
| 479 | margin-right: 0; | ||
| 480 | } | ||
| 481 | } | ||
| 482 | |||
| 483 | .item-act { | ||
| 484 | @include linear-bg-rev; | ||
| 485 | border: none; | ||
| 486 | color: #ffffff; | ||
| 487 | } | ||
| 488 | } | ||
| 489 | |||
| 490 | .val2 { | ||
| 491 | justify-content: flex-start; | ||
| 492 | .item { | ||
| 493 | width: 132px; | ||
| 494 | height: 36px; | ||
| 495 | } | ||
| 496 | } | ||
| 497 | } | ||
| 498 | } | ||
| 499 | |||
| 500 | .line { | ||
| 501 | margin-top: 2px; | ||
| 502 | width: 100%; | ||
| 503 | height: 2px; | ||
| 504 | background-color: #efefef; | ||
| 505 | } | ||
| 506 | |||
| 507 | .calculation { | ||
| 508 | margin-top: 10px; | ||
| 509 | display: flex; | ||
| 510 | justify-content: space-between; | ||
| 511 | align-items: flex-end; | ||
| 512 | .label { | ||
| 513 | } | ||
| 514 | .value { | ||
| 515 | .price { | ||
| 516 | font-size: 24px; | ||
| 517 | font-weight: bold; | ||
| 518 | // transition: 0.2s all; | ||
| 519 | } | ||
| 520 | } | ||
| 521 | } | ||
| 522 | |||
| 523 | .tips { | ||
| 524 | margin-top: 6px; | ||
| 525 | font-size: $fontSizeSmall-M2; | ||
| 526 | color: rgba(102, 102, 102, 0.5); | ||
| 527 | } | ||
| 528 | } | ||
| 377 | } | 529 | } |
| 378 | 530 | ||
| 379 | .arrow { | 531 | .arrow { |
| ... | @@ -745,7 +897,6 @@ | ... | @@ -745,7 +897,6 @@ |
| 745 | font-size: $fontSize-M2; | 897 | font-size: $fontSize-M2; |
| 746 | 898 | ||
| 747 | .panel { | 899 | .panel { |
| 748 | // 性别年龄 | ||
| 749 | .func1 { | 900 | .func1 { |
| 750 | &-item { | 901 | &-item { |
| 751 | display: block; | 902 | display: block; | ... | ... |
| ... | @@ -107,48 +107,99 @@ | ... | @@ -107,48 +107,99 @@ |
| 107 | </div> | 107 | </div> |
| 108 | </div> | 108 | </div> |
| 109 | <div class="panel panel-right"> | 109 | <div class="panel panel-right"> |
| 110 | <div v-if="curTab.relation == PRODUCT_PRO_EASY " class="func func1"> | 110 | <!-- 好医时 --> |
| 111 | <div class="func1-item"> | 111 | <div v-if="curTab.relation == PRODUCT_PRO_EASY " class="plugin fcc"> |
| 112 | <div class="k"> {{$t('common.Sex')}}</div> | 112 | <div class="func func1"> |
| 113 | <div class="gender"> | 113 | <div class="func1-item"> |
| 114 | <div class="gender-item" @click="onQuoteSexHandler('M')"> | 114 | <div class="k"> {{$t('common.Sex')}}</div> |
| 115 | {{$t('common.Male')}} | 115 | <div class="gender"> |
| 116 | <img v-if="quoteData.gender == 'M'" src="@/assets/images/common/icon-male-act.png" alt /> | 116 | <div class="gender-item" @click="onQuoteSexHandler('M')"> |
| 117 | <img v-else src="@/assets/images/common/icon-male.png" alt /> | 117 | {{$t('common.Male')}} |
| 118 | </div> | 118 | <img v-if="quoteData.gender == 'M'" src="@/assets/images/common/icon-male-act.png" alt /> |
| 119 | <div class="gender-item" @click="onQuoteSexHandler('F')"> | 119 | <img v-else src="@/assets/images/common/icon-male.png" alt /> |
| 120 | {{$t('common.Female')}} | 120 | </div> |
| 121 | <img v-if="quoteData.gender == 'F'" src="@/assets/images/common/icon-female-act.png" alt /> | 121 | <div class="gender-item" @click="onQuoteSexHandler('F')"> |
| 122 | <img v-else src="@/assets/images/common/icon-female.png" alt /> | 122 | {{$t('common.Female')}} |
| 123 | <img v-if="quoteData.gender == 'F'" src="@/assets/images/common/icon-female-act.png" alt /> | ||
| 124 | <img v-else src="@/assets/images/common/icon-female.png" alt /> | ||
| 125 | </div> | ||
| 123 | </div> | 126 | </div> |
| 124 | </div> | 127 | </div> |
| 125 | </div> | 128 | <div class="func1-item"> |
| 126 | <div class="func1-item"> | 129 | <div class="k">{{$t('common.Birthday')}}</div> |
| 127 | <div class="k">{{$t('common.Birthday')}}</div> | 130 | <div class="age"> |
| 128 | <div class="age"> | 131 | <div class="ipt-wrap-linear"> |
| 129 | <div class="ipt-wrap-linear"> | 132 | <div class="down-arrow"></div> |
| 130 | <div class="down-arrow"></div> | 133 | <div class="cont"> |
| 131 | <div class="cont"> | 134 | <!-- <el-select class="ipt" v-model="quoteData.age" :placeholder="$t('common.Age')"> |
| 132 | <!-- <el-select class="ipt" v-model="quoteData.age" :placeholder="$t('common.Age')"> | ||
| 133 | <el-option v-for="(item, index) in 100" :key="index" :label="item" :value="item"></el-option> | 135 | <el-option v-for="(item, index) in 100" :key="index" :label="item" :value="item"></el-option> |
| 134 | </el-select> --> | 136 | </el-select> --> |
| 135 | <date-picker class="ipt-date" :placeholder="$t('index.contact.form.Time') + '*'" v-model="quoteData.birthday" :filtModel="['future']" :cusStyle="{ | 137 | <date-picker class="ipt-date" :placeholder="$t('common.Birthday') + '*'" v-model="quoteData.birthday" :filtModel="['future']" :cusStyle="{ |
| 136 | border: 'none !important', | 138 | border: 'none !important', |
| 137 | 'background-color': 'transparent !important', | 139 | 'background-color': 'transparent !important', |
| 138 | padding: '16px 24px', | 140 | padding: '16px 24px', |
| 139 | color: '#606266', | 141 | color: '#606266', |
| 140 | 'text-align': 'center' | 142 | 'text-align': 'center' |
| 141 | }"> | 143 | }"> |
| 142 | </date-picker> | 144 | </date-picker> |
| 145 | </div> | ||
| 143 | </div> | 146 | </div> |
| 144 | </div> | 147 | </div> |
| 145 | </div> | 148 | </div> |
| 146 | </div> | 149 | </div> |
| 147 | </div> | 150 | </div> |
| 148 | 151 | ||
| 149 | <div v-if="curTab.relation == PRODUCT_REN_RICH " class="func func2"> | 152 | <!-- 传家福 --> |
| 150 | <!-- PRODUCT_REN_RICH --> | 153 | <div v-if="curTab.relation == PRODUCT_REN_RICH " class="plugin "> |
| 154 | <div class="func func2"> | ||
| 155 | <div class="func2-tit">滑動選擇保額</div> | ||
| 156 | <div class="func2-tit2">保額(萬美元)</div> | ||
| 157 | <!-- <div class="slider"> | ||
| 158 | <div class="slider-bar"> | ||
| 159 | <div class="slider-bar-thumb" > | ||
| 160 | <div class="num">300</div> | ||
| 161 | <div class="circle"></div> | ||
| 162 | </div> | ||
| 163 | </div> | ||
| 164 | </div> --> | ||
| 165 | |||
| 166 | <slider class="slider" :min="sliderMin" :max="sliderMax" v-model="sliderPer"></slider> | ||
| 167 | <!-- 表格选择 --> | ||
| 168 | <div class="form"> | ||
| 169 | <div class="form-item"> | ||
| 170 | <div class="label">繳費期</div> | ||
| 171 | <div class="val"> | ||
| 172 | <div @click="onSelectPaymentPeriodHandler(item)" class="item" :class="{'item-act':curPaymentPeriod.v==item.v}" v-for="item in paymentPeriodList" :key="item.id"> | ||
| 173 | {{ item.n }} | ||
| 174 | </div> | ||
| 175 | </div> | ||
| 176 | </div> | ||
| 177 | <div class="form-item"> | ||
| 178 | <div class="label">繳費選項</div> | ||
| 179 | <div class="val val2"> | ||
| 180 | <!-- <div class="item">每年</div> | ||
| 181 | <div class="item">每半年</div> | ||
| 182 | <div class="item">每季度</div> | ||
| 183 | <div class="item">每月</div> --> | ||
| 184 | <div @click="onSelectPaymentOptionHandler(item)" class="item" :class="{'item-act':curPaymentOption.v==item.v}" v-for="item in paymentOptionList" :key="item.id"> | ||
| 185 | {{ item.n }} | ||
| 186 | </div> | ||
| 187 | </div> | ||
| 188 | </div> | ||
| 189 | </div> | ||
| 190 | <!-- 分割线 --> | ||
| 191 | <div class="line"></div> | ||
| 192 | <!-- 计算 --> | ||
| 193 | <div class="calculation"> | ||
| 194 | <div class="label">每月保费</div> | ||
| 195 | <div class="value">$ <span class="price">{{sumAssured}}</span></div> | ||
| 196 | </div> | ||
| 197 | <!-- 提示 --> | ||
| 198 | <div class="tips">Please contact your financial consultant to quote for insured | ||
| 199 | amount that exceeds USD 3 million</div> | ||
| 200 | </div> | ||
| 151 | </div> | 201 | </div> |
| 202 | |||
| 152 | </div> | 203 | </div> |
| 153 | </div> | 204 | </div> |
| 154 | </div> | 205 | </div> | ... | ... |
| ... | @@ -159,4 +159,9 @@ | ... | @@ -159,4 +159,9 @@ |
| 159 | @mixin linear-bg() { | 159 | @mixin linear-bg() { |
| 160 | background-color: transparent; | 160 | background-color: transparent; |
| 161 | background-image: linear-gradient(135deg, #f15a08, #feab1b), linear-gradient(90deg, #fff, #fff); | 161 | background-image: linear-gradient(135deg, #f15a08, #feab1b), linear-gradient(90deg, #fff, #fff); |
| 162 | } | ||
| 163 | |||
| 164 | @mixin linear-bg-rev() { | ||
| 165 | background-color: transparent; | ||
| 166 | background-image: linear-gradient(135deg, #feab1b, #f15a08), linear-gradient(90deg, #fff, #fff); | ||
| 162 | } | 167 | } |
| ... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
| ... | @@ -32,6 +32,7 @@ $fontSize-M:14px; | ... | @@ -32,6 +32,7 @@ $fontSize-M:14px; |
| 32 | $fontSizeSmall-M:12px; | 32 | $fontSizeSmall-M:12px; |
| 33 | 33 | ||
| 34 | 34 | ||
| 35 | //新版PC字体 | ||
| 35 | $fontSizeTitle-M2:24px; | 36 | $fontSizeTitle-M2:24px; |
| 36 | $fontSize-M2:18px; | 37 | $fontSize-M2:18px; |
| 37 | $fontSizeSmall-M2:16px; | 38 | $fontSizeSmall-M2:16px; | ... | ... |
-
Please register or sign in to post a comment