<template>
|
<div class="pam-rec-cosultant-page">
|
<div class="pb-10 mdTxt">顧問性別</div>
|
<SingleSelectBtn :singleSelected.sync="strictQueryDto.gender" :options="genderOptions"/>
|
<div class="pam-paragraph">
|
<div class="pb-10 mdTxt required">顧問所在地區</div>
|
<div class="job-pick cursor--pointer"
|
@click="showAddress = true">
|
<input class="text--middle input cursor--pointer pl-10"
|
:value="strictQueryDto.area"
|
placeholder="請選擇">
|
<i class="icon-down down-icon"></i>
|
</div>
|
<PopUpFrame :isOpen.sync="showAddress"
|
:drawerSize="'65%'">
|
<AddressPicker
|
@confirm="confirmAddress" />
|
</PopUpFrame>
|
</div>
|
<div class="pam-paragraph">
|
<div class="pb-10 mdTxt required">
|
想要詢問的問題
|
<span class="hint text--bold">
|
(可複選)
|
</span>
|
<i class="icon-information text--bold fix-chrome-click--issue" @click="showDialog = true"></i>
|
</div>
|
<MultiSelectBtn :mutiSelect.sync="strictQueryDto.requirements" :options="requirementOptions" class="rec-multi-select" />
|
</div>
|
<div class="pam-paragraph">
|
<div class="pb-10 mdTxt">顧問年資</div>
|
<SingleSelectBtn :singleSelected.sync="strictQueryDto.seniority" :options="seniorityOptions"/>
|
</div>
|
<div class="pam-paragraph">
|
<div class="pb-10 mdTxt">保險顧問滿意度</div>
|
<el-rate class="pam-consultant-rate" v-model="strictQueryDto.avgScore">
|
</el-rate>
|
</div>
|
<div class="pam-paragraph">
|
<div class="rec-popular">
|
<div class="pb-10 mdTxt">熱門檢索</div>
|
<div class="hint text--bold ml-10">(可複選)</div>
|
</div>
|
<div class="rec-pop-container">
|
<MultiSelectBtn :mutiSelect.sync="strictQueryDto.popularTags"
|
:options="popularOptions"
|
:nameOfOtherOption="'#其他'" :otherSelect.sync="strictQueryDto.otherPopularTags" class="rec-pop-options"/>
|
</div>
|
</div>
|
<div class="rec-footer pam-paragraph">
|
<el-button type="primary"
|
:disabled="notFinishByRequireRules"
|
@click="makePair">馬上配對</el-button>
|
</div>
|
|
<PopUpFrame :isOpen.sync="showDialog"
|
:drawerSize=" '95%' ">
|
<div class="qaTextTitle mdTxt">
|
<strong>想要詢問的問題</strong>
|
</div>
|
<div class="qa-dialog">
|
<div v-for="(qaText,index) in queaAboutList"
|
:key="index">
|
<div class="pt-10">
|
<p class=" p bold">{{qaText.title}}</p>
|
<p class="p">{{qaText.content}}</p>
|
</div>
|
</div>
|
</div>
|
<div class="text--center mdTxt mt-30 mb-30">
|
<el-button type="primary" @click="showDialog = false">我知道了</el-button>
|
</div>
|
</PopUpFrame>
|
|
<PopUpFrame :isOpen.sync="isVisiblePopUp">
|
<div class="text--center mdTxt">
|
<p class="mb-50">尚無推薦資料</p>
|
<div class="text--center mdTxt">
|
<el-button type="primary" @click="isVisiblePopUp = false">我知道了</el-button>
|
</div>
|
</div>
|
</PopUpFrame>
|
</div>
|
</template>
|
<script lang="ts">
|
import {
|
Vue,
|
Component,
|
Mutation,
|
namespace
|
} from 'nuxt-property-decorator';
|
import * as _ from 'lodash';
|
import { strictQuery } from '~/assets/ts/api/consultant';
|
import { Seniority } from '~/assets/ts/models/enum/seniority';
|
|
const localStorage = namespace('localStorage');
|
|
@Component
|
export default class RecommendConsultant extends Vue {
|
isVisiblePopUp = false;
|
strictQueryDto: StrictQueryDto ={
|
gender:'',
|
area:'',
|
status:'',
|
requirements: [],
|
otherRequirement:'',
|
seniority:'',
|
avgScore:0,
|
popularTags: [],
|
otherPopularTags:'',
|
};
|
genderOptions=[
|
{
|
title:'男性',
|
label:Gender.MALE,
|
},
|
{
|
title:'女性',
|
label:Gender.FEMALE,
|
}
|
];
|
requirementOptions=[
|
{
|
title:'健康與保障',
|
label:'健康與保障',
|
},
|
{
|
title:'子女教育',
|
label:'子女教育',
|
},
|
{
|
title:'資產規劃',
|
label:'資產規劃',
|
},
|
{
|
title:'樂活退休',
|
label:'樂活退休',
|
},
|
{
|
title:'保單健檢/規劃',
|
label:'保單健檢/規劃',
|
},
|
{
|
title:'分紅保單',
|
label:'分紅保單',
|
},
|
];
|
seniorityOptions=[
|
{
|
title:'不限',
|
subTitle:'年齡不是問題',
|
label:Seniority.UNLIMITED,
|
},
|
{
|
title:'年輕',
|
subTitle:'給年輕人一個機會',
|
label:Seniority.YOUNG,
|
},
|
{
|
title:'資深',
|
subTitle:'薑是老的辣',
|
label:Seniority.SENIOR,
|
}
|
];
|
popularOptions=[
|
{
|
title: '#防疫',
|
label:'防疫'
|
},
|
{
|
title: '#失能',
|
label:'失能'
|
},
|
{
|
title: '#防癌',
|
label:'防癌'
|
},
|
{
|
title: '#醫療',
|
label:'醫療'
|
},
|
{
|
title: '#壽險',
|
label: '壽險'
|
},
|
{
|
title: '#儲蓄',
|
label:'儲蓄'
|
},
|
{
|
title: '#投資',
|
label:'投資'
|
},
|
{
|
title: '#意外',
|
label:'意外'
|
}
|
];
|
queaAboutList = [
|
{
|
title: '健康與保障',
|
content: '唯有把身體照顧好,才是保障幸福之本,不做盲目燃燒的蠟燭,只做綻開的陽光,陪孩子多走一哩路,人生的美正要開展。'
|
},
|
{
|
title: '子女教育',
|
content: '孩子,我們是雙方的導師也是學生,面對未來要並肩作戰,學會勇敢無畏、克服挫折、善於理財,這條路上我們一起學。'
|
},
|
{
|
title: '資產規劃',
|
content: '真正的財富來自嚴謹規劃資產傳承,為人生蓋一堵抵禦財務風險的牆,確保資產穩健成長,替全家族的未來做好萬全準備。'
|
},
|
{
|
title: '樂活退休',
|
content: '拼一輩子,退休後的日子要輕鬆快活,就得提早透過保險商品規劃退休財務,替自己創造穩定收入,為精彩的熟年人生揭開序幕。'
|
},
|
{
|
title: '保單健檢/規劃',
|
content: '全面檢視自己的保障結構是否符合現在或未來的風險移轉需求。'
|
},
|
{
|
title: '分紅保單',
|
content: '分紅保單 分紅保單是兼具「分攤風險」與「紅利共享」特色的保單,具有一定穩定度,讓你可以同時享有壽險保障及紅利!'
|
}
|
];
|
showDialog = false;
|
showAddress = false;
|
|
@Mutation updateStrictQueryList!: (data: any) => void;
|
@localStorage.Mutation storageRecommendConsultant!: (data: any) => void;
|
@localStorage.State recommendConsultantItem!: string;
|
|
mounted() {
|
if (!!this.recommendConsultantItem) {
|
this.strictQueryDto = JSON.parse(this.recommendConsultantItem);
|
}
|
}
|
makePair():void{
|
strictQuery(this.strictQueryDto).then(res=>{
|
console.log('resultData',res.data);
|
this.storageRecommendConsultant(JSON.stringify(this.strictQueryDto));
|
this.updateStrictQueryList(res.data);
|
if (res.data.length === 0) {
|
this.isVisiblePopUp = true;
|
return;
|
}
|
this.$router.push('/recommendConsultant/result');
|
});
|
}
|
get notFinishByRequireRules():boolean{
|
const area = this.strictQueryDto.area;
|
const requirementLength = this.strictQueryDto.requirements
|
? this.strictQueryDto.requirements.length
|
: 0;
|
return !(area && requirementLength >0)
|
}
|
|
confirmAddress(area: string) {
|
this.strictQueryDto.area = area;
|
this.showAddress = false;
|
}
|
|
}
|
enum Gender{
|
MALE="male",
|
FEMALE="female",
|
}
|
|
export interface StrictQueryDto {
|
gender: string,
|
area: string,
|
status: string,
|
requirements: string[],
|
otherRequirement: string,
|
seniority: string,
|
avgScore: number,
|
popularTags: string[],
|
otherPopularTags: string
|
}
|
</script>
|
|
<style lang="scss">
|
|
.pam-rec-cosultant-page {
|
.rec-pop-container{
|
width:310px;
|
.rec-pop-options{
|
.el-checkbox-group{
|
display: flex;
|
flex-wrap: wrap;
|
flex-direction: row;
|
.el-checkbox{
|
width:90px;
|
height: 50px;
|
padding:0;
|
.el-checkbox__label{
|
justify-content: center;
|
align-items: center;
|
display: flex;
|
padding:15px 20px;
|
text-align: center;
|
}
|
}
|
.pam-selectAll-btn{
|
margin-top: 60px;
|
margin-left:-203px;
|
height: 50px;
|
width: 90px;
|
padding: 10px;
|
}
|
|
}
|
}
|
|
}
|
.rec-multi-select{
|
.el-checkbox-group {
|
display: flex;
|
flex-direction: column;
|
align-items: flex-start;
|
}
|
}
|
|
input:focus,
|
textarea:focus {
|
outline: none;
|
}
|
|
.input {
|
border: none;
|
width: 90%;
|
border-radius: 10px;
|
}
|
|
.job-pick {
|
height: 50px;
|
border-radius: 10px;
|
border: 1px solid #D0D0CE;
|
display: flex;
|
justify-content: space-between;
|
background-color: #FFFFFF;
|
}
|
|
.down-icon {
|
color: #ED1B2E;
|
font-size: 25px;
|
align-self: center;
|
margin-right: 15px;
|
}
|
|
.popOtherBtn {
|
margin-left: -190px;
|
margin-top: 45px;
|
}
|
|
.genderBtn {
|
width: 80px;
|
height: 47px;
|
display: contents;
|
}
|
|
.qa-dialog {
|
overflow-y: auto;
|
height: 500px;
|
margin-top: 20px;
|
text-align: justify;
|
}
|
|
.qaTextTitle {
|
margin-top: 30px
|
}
|
|
.qa-dialog-footer {
|
display: flex;
|
justify-content: center;
|
margin-bottom: 81px;
|
color: #ED1B2E;
|
cursor: pointer;
|
}
|
|
.el-drawer__container ::-webkit-scrollbar {
|
display: none;
|
}
|
.el-button+.el-button {
|
margin-left: 0;
|
}
|
|
.seniority-choice {
|
display: flex;
|
flex-wrap: wrap;
|
}
|
|
.area-choice {
|
height: 50px;
|
border-radius: 10px;
|
border: 1px solid #D0D0CE;
|
display: flex;
|
justify-content: space-between;
|
background-color: #FFFFFF;
|
}
|
|
.area-icon {
|
color: #ED1B2E;
|
font-size: 25px;
|
display: flex;
|
justify-content: flex-end;
|
padding-right: 16px;
|
padding-top: 11px;
|
}
|
|
input::-webkit-input-placeholder {
|
font-size: 20px;
|
padding-left: 10px;
|
}
|
|
.el-button.is-disabled {
|
font-size: 20px;
|
border-radius: 20px;
|
color: #FFFFFF;
|
background-color: #A7A8AA;
|
border: 1px solid #A7A8AA;
|
}
|
|
.rec-footer {
|
height: 70px;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
}
|
|
.other-PopBtn {
|
width: 90px;
|
height: 47px;
|
margin-top: 10px;
|
}
|
|
|
|
.rec-ques-location {
|
display: flex;
|
align-items: center;
|
}
|
|
.pop-tag {
|
display: flex;
|
flex-wrap: wrap;
|
margin: -10px;
|
|
}
|
|
.rec-popular {
|
display: flex;
|
align-items: baseline;
|
padding-top: 10px;
|
margin-bottom: 10px;
|
}
|
|
.rec-btn-type {
|
padding-bottom: 10px;
|
}
|
|
.rec-question {
|
display: flex;
|
flex-direction: column;
|
|
}
|
|
.rec-banner {
|
height: 120px;
|
background-color: #D0D0CE;
|
|
}
|
|
.rec-btn {
|
font-size: 20px;
|
border-radius: 20px;
|
color: black;
|
border: 1px solid #D0D0CE;
|
}
|
|
.rec-pop-btn {
|
font-size: 20px;
|
border-radius: 20px;
|
color: black;
|
margin: 0px 0px 10px 10px;
|
border: 1px solid #D0D0CE;
|
width: 90px;
|
height: 47px;
|
}
|
|
.el-progress__text {
|
display: none;
|
}
|
|
.el-progress-bar {
|
padding-right: 0;
|
}
|
|
.el-progress-bar__inner {
|
background-color: #ED1B2E;
|
}
|
|
.required {
|
position: relative;
|
|
&::before {
|
content: '*';
|
position: absolute;
|
color: #FF0000;
|
transform: translate(-12px, 0);
|
z-index: 5;
|
}
|
}
|
|
.area-txt {
|
display: flex;
|
align-items: center;
|
margin-left: 18px;
|
}
|
|
@include desktop {
|
|
.desktopBtn {
|
margin-right: 10px;
|
height: 47px
|
}
|
|
.popOtherBtn {
|
margin-left: 10px;
|
margin-top: -10px;
|
}
|
|
.rec-pop-container{
|
width:auto;
|
.rec-pop-options{
|
.el-checkbox-group{
|
display: flex;
|
flex-wrap:wrap;
|
flex-direction: none;
|
.el-checkbox{
|
width:90px;
|
height: 50px;
|
padding:0;
|
.el-checkbox__label{
|
justify-content: center;
|
align-items: center;
|
display: flex;
|
padding:15px 20px;
|
text-align: center;
|
}
|
}
|
.pam-selectAll-btn{
|
margin-top:0px;
|
margin-left:0px;
|
height: 50px;
|
width: 90px;
|
padding: 10px;
|
}
|
}
|
}
|
|
}
|
|
.rec-multi-select{
|
.el-checkbox-group {
|
display: flex;
|
flex-direction: row;
|
align-items: flex-start;
|
flex-wrap: wrap;
|
}
|
}
|
}
|
}
|
|
</style>
|