From 4c470b0d72591bb1732014352d6ac7d2d159547f Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期五, 12 十一月 2021 11:24:12 +0800 Subject: [PATCH] Merge branch 'master' of ssh://192.168.0.10:29418/pcalife/PAM --- PAMapp/assets/scss/vendors/elementUI/_radio.scss | 9 PAMapp/components/phoneContactTimePicker.vue | 58 +++ PAMapp/pages/questionnaire/_agentNo.vue | 53 ++ PAMapp/pages/recommendConsultant/index.vue | 743 ++++++++++++++++++++++--------------------- PAMapp/assets/ts/api/consultant.ts | 27 + PAMapp/components/singleSelectBtn.vue | 44 ++ PAMapp/components/multiSelectBtn.vue | 41 ++ 7 files changed, 584 insertions(+), 391 deletions(-) diff --git a/PAMapp/assets/scss/vendors/elementUI/_radio.scss b/PAMapp/assets/scss/vendors/elementUI/_radio.scss index b411a66..7c840a8 100644 --- a/PAMapp/assets/scss/vendors/elementUI/_radio.scss +++ b/PAMapp/assets/scss/vendors/elementUI/_radio.scss @@ -62,7 +62,6 @@ border: 1px $LIGHT_GREY solid; background-color: $PRIMARY_WHITE; border-radius: 50px; - font-size: 20px; margin-right: 10px; margin-bottom: 10px; @@ -72,9 +71,14 @@ .el-radio__label { text-align: center; + font-size: 18px; color: $PRIMARY_BLACK; + font-weight: normal; display: block; padding-left: 0px; + .radio-sub-title{ + color: $PRUDENTIAL_GREY; + } } &.is-checked { @@ -82,6 +86,9 @@ color: $PRIMARY_WHITE; .el-radio__label{ color: $PRIMARY_WHITE; + .radio-sub-title{ + color: $PRIMARY_WHITE; + } } } } diff --git a/PAMapp/assets/ts/api/consultant.ts b/PAMapp/assets/ts/api/consultant.ts index cfdfdb7..9d3ecf9 100644 --- a/PAMapp/assets/ts/api/consultant.ts +++ b/PAMapp/assets/ts/api/consultant.ts @@ -43,6 +43,11 @@ return service.post('/consultant/fastQuery', data) } +// ������ +export function strictQuery(data:StrictQueryParams):Promise<AxiosResponse<AgentOfStrictQuery>>{ + return service.post('/consultant/strictQuery', data) +} + // ��憿批�� export function addFavoriteConsultant(agentNoList: string[]) { return service.post('/consultant/favorite', {agentNoList}) @@ -82,4 +87,26 @@ hopeContactTime: string, otherRequirement: string, agentNo: string +} +export interface StrictQueryParams{ + gender: string; + avgScore: number; + status: string; //phase 1 disable + area: string; + requirements: string[]; + otherRequirement: string; + seniority: string; + popularTags: string[]; + otherPopularTags: string; +} +export interface AgentOfStrictQuery { + agentNo: string; + name: string; + img: string; + expertise: string[]; + avgScore: number; + contactStatus: null; + updateTime: null; + seniority: string; + new: boolean; } \ No newline at end of file diff --git a/PAMapp/components/multiSelectBtn.vue b/PAMapp/components/multiSelectBtn.vue index af57166..da017ba 100644 --- a/PAMapp/components/multiSelectBtn.vue +++ b/PAMapp/components/multiSelectBtn.vue @@ -4,13 +4,21 @@ <el-checkbox v-for="(option, index) in options" :key="index" - :label="option" - :name="option" - ></el-checkbox> + :label="option.label"> + {{option.title}} + </el-checkbox> <template v-if="nameOfSelectAll"> <button class="pam-selectAll-btn cursor--pointer" :class="{'selected':isSelectAll}" :model="isSelectAll" @click="selectAll"> <span>{{nameOfSelectAll}}</span> </button> + </template> + <template v-if="nameOfOtherOption"> + <button class="pam-selectAll-btn cursor--pointer" :class="{'selected':isSelectOtherOption}" :model="isSelectOtherOption" @click="selectOther"> + <span>{{nameOfOtherOption}}</span> + </button> + <div> + <input class="pam-muti-select-other cursor--pointer" v-if="isSelectOtherOption" v-model="syncOtherSelect" placeholder="隢撓�,���20摮�"> + </div> </template> </el-checkbox-group> </div> @@ -18,12 +26,16 @@ <script lang="ts"> import { Vue, Component, Prop, PropSync} from 'vue-property-decorator'; + import { OptionBtnDto } from './singleSelectBtn.vue'; @Component export default class MultiSelectBtn extends Vue { @PropSync('mutiSelect',{type:Array,default:()=>[]}) syncMutiSelect!:string[]; + @Prop({default:()=>[]}) options!:OptionBtnDto[]; @Prop({default:''}) nameOfSelectAll!:string; - @Prop({default:()=>[]}) options!:string[]|[]; + @PropSync('otherSelect',{default:''}) syncOtherSelect!:string; + @Prop({type:String,default:''}) nameOfOtherOption!:string; + isSelectOtherOption=false; isSelectAll=false; updated() { @@ -32,9 +44,17 @@ selectAll():void{ this.isSelectAll= !this.isSelectAll; - this.syncMutiSelect = this.isSelectAll ? this.options:[]; + this.syncMutiSelect = this.isSelectAll ? this.optionsFormat(this.options):[]; } - + optionsFormat(optios:OptionBtnDto[]):string[]{ + return optios.map(o=>o.title); + } + selectOther():void{ + this.isSelectOtherOption = !this.isSelectOtherOption; + if(!this.isSelectOtherOption){ + this.syncOtherSelect = ''; + } + } } </script> @@ -52,4 +72,13 @@ color: $PRIMARY_WHITE; } } + .pam-muti-select-other { + height: 50px; + padding: 5px; + -webkit-box-sizing: border-box; /* Safari/Chrome, other WebKit */ + -moz-box-sizing: border-box; /* Firefox, other Gecko */ + box-sizing: border-box; + width: 316px; + border: 1px solid #CCCCCC; + } </style> diff --git a/PAMapp/components/phoneContactTimePicker.vue b/PAMapp/components/phoneContactTimePicker.vue index 04578be..b0415f4 100644 --- a/PAMapp/components/phoneContactTimePicker.vue +++ b/PAMapp/components/phoneContactTimePicker.vue @@ -33,7 +33,6 @@ <PopUpFrame class="pam-popUpFrame" :isOpen.sync="isOpenByStep_1" - :model="isOpenByStep_1" :drawerSize="drawerSize" :dialogWidth="dialogWidth"> <div class="pam-popUp-title">{{popUpTitle}}</div> @@ -75,16 +74,62 @@ <script lang="ts"> import { Component,PropSync,Vue } from "nuxt-property-decorator"; import * as _ from "lodash"; +import { OptionBtnDto } from "./singleSelectBtn.vue"; @Component export default class PhoneContactTimePicker extends Vue { @PropSync('scheduleList',{type:Array,default:()=>[]}) syncScheduleList!:scheduleDto[]; private weekOptions ={ selectAll:'瘥予', - options:['蝳格��','蝳格���','蝳格���','蝳格���','蝳格���','蝳格�','蝳格�'], + options:[ + { + title:'蝳格��', + label:'蝳格��' + }, + { + title:'蝳格���', + label:'蝳格���' + }, + { + title:'蝳格���', + label:'蝳格���' + }, + { + title:'蝳格���', + label:'蝳格���' + }, + { + title:'蝳格���', + label:'蝳格���' + }, { + title:'蝳格�', + label:'蝳格�' + }, + { + title:'蝳格�', + label:'蝳格�' + }, + ], }; private timesOfDayOptions ={ selectAll:'�憭�', - options:['9:00~12:00','12:00~14:00','14:00~18:00','18:00~21:00'], + options:[ + { + title:'9:00~12:00', + label:'9:00~12:00', + }, + { + title:'12:00~14:00', + label:'12:00~14:00', + }, + { + title:'14:00~18:00', + label:'14:00~18:00', + }, + { + title:'18:00~21:00', + label:'18:00~21:00', + } + ], }; private drawerSize="40%"; private dialogWidth="376px"; @@ -117,8 +162,9 @@ this.selectedSchedule.selectWeekOptions = this.getOptionsBySort(this.weekOptions.options,this.initPickerControl.selectWeekOptions); this.selectedSchedule.selectTimesOptions = this.getOptionsBySort(this.timesOfDayOptions.options,this.initPickerControl.selectTimesOptions); } - getOptionsBySort(options:string[],selectedOptions:string[]):string[]{ - return options.filter( o => _.includes(selectedOptions,o)); + getOptionsBySort(options:OptionBtnDto[],selectedOptions:string[]):string[]{ + return options.map( o => _.includes(selectedOptions,o.title) ? o.title :'').filter(String); + // return } addNewSchedule():void{ const newScheduleDto={ @@ -140,7 +186,7 @@ const chineseNumber = ['銝�','鈭�','銝�','���','鈭�','�','銝�','�','銋�','���'] return '��挾'+chineseNumber[index]; } - optionsFormat(options:string[],needToCompareList:OptionDto):string{ + optionsFormat(options:OptionBtnDto[],needToCompareList:OptionDto):string{ return _.isEqual(options.length,needToCompareList.options.length) ? needToCompareList.selectAll: _.join(options,','); } } diff --git a/PAMapp/components/singleSelectBtn.vue b/PAMapp/components/singleSelectBtn.vue new file mode 100644 index 0000000..99bc644 --- /dev/null +++ b/PAMapp/components/singleSelectBtn.vue @@ -0,0 +1,44 @@ +<template> + <div> + <el-radio-group class="pam-single-btn" + v-model="syncSingleSelected"> + <el-radio v-for="(option,index) in options" + :key="index" + :label="option.label" + @click.native.prevent="patchValue(option.label)"> + <span class="text--middle"> + {{option.title}} + </span> + <span class="radio-sub-title" + v-if="option.subTitle"> + {{option.subTitle}} + </span> + </el-radio> + </el-radio-group> + </div> +</template> + +<script lang="ts"> + import { Component, Prop, PropSync, Vue } from "nuxt-property-decorator"; + import * as _ from 'lodash'; + @Component + export default class SingleSelectBtn extends Vue { + @PropSync('singleSelected', { default: '' }) syncSingleSelected!: string | number; + @Prop({ type:Array , default:()=>[] }) options!:OptionBtnDto[]; + + // 銝餉�圾瘙箸����甈∟��嚗暺������ + patchValue(value: string): void { + this.syncSingleSelected = _.isEqual(this.syncSingleSelected, value) ? "" : value; + } + } + export interface OptionBtnDto { + title: string, + subTitle?: string, + label: string | number, + } +</script> + +<style lang="scss" + scoped> + +</style> diff --git a/PAMapp/pages/questionnaire/_agentNo.vue b/PAMapp/pages/questionnaire/_agentNo.vue index 8262e3f..ff76472 100644 --- a/PAMapp/pages/questionnaire/_agentNo.vue +++ b/PAMapp/pages/questionnaire/_agentNo.vue @@ -62,8 +62,11 @@ <i class="icon-down down-icon " style="margin-right:18px" @click="showJobDrawer = true" ></i> </div> + <div class="ques-footer pt-30"> - <el-button type="primary" @click="sentDemand">�</el-button> + <el-button type="primary" + :disabled=" isInitScheduleDisabled || !isSelected" + @click="sentDemand">�</el-button> </div> <PopUpFrame :isOpen.sync="showDrawer" :drawerSize=" '95%' "> @@ -81,7 +84,7 @@ <PopUpFrame :isOpen.sync="showJobDrawer" drawerSize='60%'> <div class="job-drawerTxt fz-20"> <div class="subTitle mt-18">�璆�</div> - <!-- <p class="mt-30 fz-20" @click="staff ='��'" :class="{'jobBtn':staff === '��' }">��</p> --> + <div class="radio-btn"> <el-radio-group class="pam-radio-group--col" v-model="staff"> <el-radio-button style="margin-top:30px" text-color='#F09491' label="憭"></el-radio-button> @@ -98,44 +101,35 @@ <div class="fz-20 sendReserve-txt">�����蝯∴��</div> <div class="qa-dialog-footer mdTxt" @click="closeReservePopUp"><p>������</p></div> </PopUpFrame> + </div> </template> <script lang="ts"> import { Vue, Component } from 'vue-property-decorator'; import { appointmentDemand } from '~/assets/ts/api/consultant'; + @Component export default class Questionnaire extends Vue { gender: 'male'|'female' = 'male'; - // connectTarget:'mobile'|'email'='mobile'; - connectDevices = ['1111']; + connectDevices = new Array(); mobileNumber = ''; email = ''; inputValue=''; selectedQuestion: SelectedQuestion[] = []; - // staff:'in'|'out'|'jobOther'='in'; staff = '憭'; + age:'20'|'30'|'40'|'50'|'55'|'60'|'70'|'71' = '20'; showDrawer= false; showJobDrawer = false; sendReserve = false; - // datepicker Dto initScheduleList=[{ selectWeekOptions:[], selectTimesOptions:[], }] - // editJob(targetJob: string): void { - // const isExist = this.jobList.find((job) => job === targetJob); - // if (isExist) { - // const jobIndex = this.jobList.findIndex((job) => job === targetJob); - // this.jobList.splice(jobIndex, 1); - // } else { - // this.jobList.push(targetJob); - // } - // } queaAboutList=[ { title:'�摨瑁����', @@ -171,6 +165,7 @@ get disableActionButton(): boolean { return true; }; + get isConnectMobile(): boolean { return this.connectDevices.includes('mobile'); @@ -183,15 +178,30 @@ mounted() { this.agentNo = this.$route.params.agentNo; } + get isSelected() { + return this.selectedQuestion.findIndex(i => i.selected)>=0 + } toggleConnectDevice(selectDevice: 'mobile' | 'email'): void { const deviceSelected = this.connectDevices.includes(selectDevice); if (deviceSelected) { const deviceIndex = this.connectDevices.findIndex((device) => device === selectDevice); this.connectDevices.splice(deviceIndex, 1); + + if (selectDevice === 'mobile') { + this.initScheduleList = [{ + selectWeekOptions:[], + selectTimesOptions:[], + }] + } + + if (selectDevice === 'email') { + this.email = ''; + } return; } this.connectDevices.push(selectDevice); + } sentDemand() { @@ -233,6 +243,18 @@ closeReservePopUp() { this.sendReserve = false; this.$router.push('/') + } + + get isInitScheduleDisabled() { + console.log(this.isConnectMobile) + if (this.isConnectMobile && this.isConnectEmail) { + return !this.initScheduleList[0].selectWeekOptions.length || !this.initScheduleList[0].selectTimesOptions.length || !this.email + } else if (this.isConnectMobile) { + return !this.initScheduleList[0].selectWeekOptions.length || !this.initScheduleList[0].selectTimesOptions.length + } else if (this.isConnectEmail) { + return !this.email + } + return true; } } @@ -315,6 +337,7 @@ .ques-footer{ display: flex; justify-content: center; + } .job-inputDiv{ height:90px; diff --git a/PAMapp/pages/recommendConsultant/index.vue b/PAMapp/pages/recommendConsultant/index.vue index 106a164..09310fa 100644 --- a/PAMapp/pages/recommendConsultant/index.vue +++ b/PAMapp/pages/recommendConsultant/index.vue @@ -1,442 +1,459 @@ - <template> -<div class="pam-page"> +<template> + <div class="pam-page"> <div class="pb-10 mdTxt">����批</div> - <div class="mb-30 pam-tags "> - <el-button style="margin-right:10px" @click="gender = 'male'" :class="{ 'active': gender ==='male'}">���</el-button> - <el-button @click="gender = 'female'" :class="{'active': gender === 'female'}">憟單��</el-button> + <SingleSelectBtn :singleSelected.sync="strictQueryDto.gender" :options="genderOptions"/> + <div class="mt-30"> + <div class="pb-10 mdTxt required">������</div> + <div class="job-pick cursor--pointer" + @click="showAddress = true"> + <input class="fz-20 input cursor--pointer pl-10" + :value="strictQueryDto.area" + placeholder="隢���"> + <i class="icon-down down-icon"></i> + </div> + <PopUpFrame :isOpen.sync="showAddress" + :drawerSize="'45%'"> + <AddressPicker @close="showAddress = false" + @change="area => strictQueryDto.area = area" /> + </PopUpFrame> </div> - <div class="mb-30"> - <div class="pb-10 mdTxt required">������</div> - <div class="job-pick" @click="showAddress = true"> - <input class="fz-20 pl-18 input" - style="outline:none margin-right:-18px" - :value="district" - placeholder="隢���"> - <i class="icon-down down-icon " style="margin-right:18px"></i> - </div> - <PopUpFrame :isOpen.sync="showAddress" :drawerSize=" '45%' "> - <AddressPicker - @close="showAddress = false" - @change="selectedDistrict"/> - </PopUpFrame> + <div class="mt-30"> + <div class="pb-10 mdTxt required" @click="showDialog = true"> + �閬岷������ + <span class="hint text--bold"> + <i class="icon-information text--bold"></i>�銴 + </span> + </div> + <MultiSelectBtn :mutiSelect.sync="strictQueryDto.requirements" :options="requirementOptions" /> + </div> + <div class="mt-30 pam-tags"> + <div class="pb-10 mdTxt">憿批�僑鞈�</div> + <SingleSelectBtn :singleSelected.sync="strictQueryDto.seniority" :options="seniorityOptions"/> + </div> + <div class="rate-consultant mt-30"> + <div class="pb-10 mdTxt">靽憿批�遛��漲</div> + <el-rate v-model="strictQueryDto.avgScore" + :colors="elRateColors" + class="rate"> + </el-rate> + </div> + <div class="mt-30"> + <div class="rec-popular"> + <div class="pb-10 mdTxt">���瑼Y揣</div> + <div class="hint text--bold ml-10">�銴</div> + </div> + <MultiSelectBtn :mutiSelect.sync="strictQueryDto.popularTags" + :options="popularOptions" + :nameOfOtherOption="'#�隞�'" :otherSelect.sync="strictQueryDto.otherPopularTags" /> + </div> + <div class="rec-footer mt-30"> + <el-button type="primary" + :disabled="notFinishByRequireRules" + @click="makePair">擐砌����</el-button> </div> - - <div class="mb-10"> - <div class="pb-10 mdTxt required">�閬岷������<span class="hint text--bold" @click="showDialog = true"><i class="icon-information text--bold" @click="showDialog = true"></i>�銴</span></div> - - </div> - <ConsultantQues @change="selectedQuestion = $event" class="mb-30"/> - - - <div class="mb-30 pam-tags"> - <div class= "pb-10 mdTxt">憿批�僑鞈�</div> - <div> - <el-button class="mb-10" @click="seniority = 'unlimited'" :class="{'active':seniority === 'unlimited'}"> - <span class="text--bold">銝�� </span><span>撟湧翩銝����</span> - </el-button> - <el-button style="margin-left:-0.5px" class="mb-10 " @click="seniority = 'junior'" :class="{'active':seniority === 'junior'}"> - <span class="text--bold">撟渲�� </span><span>蝯血僑頛犖銝�����</span> - </el-button> - <el-button style="margin-left:-0.5px" class="mb-10" @click="seniority = 'senior'" :class="{'active':seniority === 'senior'}"> - <span class="text--bold">鞈楛 </span><span>����麾</span> - </el-button> + <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="qa-dialog-footer mdTxt" + @click="showDialog = false"> + <p>������</p> + </div> + </PopUpFrame> - </div> - - <div class="rate-consultant mb-30"> - <div> - <div class="pb-10 mdTxt">靽憿批�遛��漲</div> - </div> - <el-rate v-model="ratevalue" :colors="elRateColors" class="rate" @change="selected"></el-rate> - </div> - - <div class="mb-30"> - <div class="rec-popular"> - <div class="pb-10 mdTxt">���瑼Y揣</div> - <div class="hint text--bold ml-10">�銴</div> - </div> - <div class="pop-tag pam-tags"> - <div v-for="(popularItem,index) in popularList" :key="index"> - <el-button class="rec-pop-btn" :class="{'active': popularItem.reversation}" - @click="popularTarget(index)">{{'#'+popularItem.name}} - </el-button> - </div> - <div class="pam-tags popOtherBtn"> - <el-button class="other-PopBtn " @click="popOther=!popOther" :class="{'active':popOther=popOther}">#�隞�</el-button> - </div> - </div> - <div> - <input v-if="popOther" class="other-input " placeholder="隢撓�,��摮�"> - </div> - </div> - - <div class="rec-footer"> - <el-button - type="primary" - - :disabled="!district || !selectedQuestion.length" - @click="$router.push('/recommendConsultant/result')">擐砌����</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="qa-dialog-footer mdTxt" @click="showDialog = false"><p>������</p></div> - </PopUpFrame> - -</div> + </div> </template> <script lang="ts"> -import { Vue, Component } from 'vue-property-decorator'; -@Component - export default class RecommendConsultant extends Vue { - - ratevalue = null; - showDialog = false; - showAddress=false; - district = ''; - selectedQuestion = []; - elRateColors=['#ED1B2E','#ED1B2E','#ED1B2E']; - gender: 'male'|'female' = 'male'; - seniority:'unlimited'|'junior'|'senior' = 'unlimited' ; - popOther = ''; - yearList=[ - { - title:'銝�� ', - subTitle:'撟湧翩銝����', - reversation:false - }, - { - title:'撟渲�� ', - subTitle:'蝯血僑頛犖銝�����', - reversation:false - }, - { - title:'鞈楛 ', - subTitle:'����麾', - reversation:false - }, - ] - popularList=[ - { - name:'��', - reversation:false - }, - { - name:'憭梯', - reversation:false - }, - { - name:'����', - reversation:false - }, - { - name:'����', - reversation:false - }, - { - name:'憯賡', - reversation:false - }, - { - name:'����', - reversation:false - }, - { - name:'����', - reversation:false - }, - { - name:'����', - reversation:false - } - ]; - queaAboutList=[ - { - title:'�摨瑁����', - content:'蝒���������敺����犖��振摨剜����������������������靘��' - }, - { - title:'摮戊��', - content:'������嚗������� ���摮戊雿�����暑�������' - }, - { - title:'鞈閬��', - content:'�鞎∪�痊隞餃�������雲������������風嚗鈭箇����撥�����' - }, - { - title:'璅暑��隡�', - content:'��靽�������嚗��暑����車������犖�����挾���暑��閬��' - }, - { - title:'靽�瑼�/閬��', - content:'��瑼Z�撌梁������蝚血����靘�◢�蝘餉��瘙�������������銝��' - }, - { - title:'��靽', - content:'���漲��������翰�祟�敺����雿�憿批����脰�������蝯行�����潘��隞乩������“������潦��' - }, - { - title:'�隞�', - content:'���漲��������翰�祟�敺����雿�憿批����脰�������蝯行�����潘��隞乩������“������潦��' - }, - ]; - ageTarget(index: any){ - this.yearList[index].reversation = !this.yearList[index].reversation ; - } - popularTarget(index: any){ - this.popularList[index].reversation = !this.popularList[index].reversation ; - } + import { + Vue, + Component + } from 'vue-property-decorator'; + import {strictQuery} from '~/assets/ts/api/consultant'; + import * as _ from 'lodash'; + @Component + export default class RecommendConsultant extends Vue { + 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:'��靽����', + }, + ]; + seniorityOptions=[ + { + title:'銝��', + subTitle:'撟湧翩銝����', + label:'銝��', + }, + { + title:'撟渲��', + subTitle:'蝯血僑頛犖銝�����', + label:'撟渲��', + }, + { + title:'鞈楛', + subTitle:'����麾', + label:'鞈楛', + } + ]; + 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: '��瑼Z�撌梁������蝚血����靘�◢�蝘餉��瘙�������������銝��' + }, + { + title: '��靽', + content: '���漲��������翰�祟�敺����雿�憿批����脰�������蝯行�����潘��隞乩������“������潦��' + }, + { + title: '�隞�', + content: '���漲��������翰�祟�敺����雿�憿批����脰�������蝯行�����潘��隞乩������“������潦��' + }, + ]; + showDialog = false; + showAddress = false; + elRateColors = ['#ED1B2E', '#ED1B2E', '#ED1B2E']; - get disableActionButton(): boolean { - return true; - } - - - - - // @Prop() ilist - - // remove() { - - // } - - // get agentList() { - // return - // } - selected() { - console.log(this.ratevalue); - } - - selectedDistrict(selectDistrict: string): void { - console.log('sel', selectDistrict); - this.district = selectDistrict; - console.log('sel2', selectDistrict); - - // this.showAddress = false; - } + makePair():void{ + strictQuery(this.strictQueryDto).then(res=>{ + console.log('resultData',res.data); + this.$router.push('/recommendConsultant/result'); + }); } + get notFinishByRequireRules():boolean{ + const area = this.strictQueryDto.area; + const requirementLength = this.strictQueryDto.requirements.length; + return !(area && requirementLength >0) + } + } + enum Gender{ + MALE="male", + FEMALE="female", + } </script> <style lang="scss"> - -input:focus,textarea:focus { + input:focus, + textarea:focus { outline: none; -} -.input{ - border:none; + } + + .input { + border: none; + width: 90%; border-radius: 10px; -} -.job-pick{ + } + + .job-pick { height: 50px; - border-radius:10px; - border:1px solid #D0D0CE ; + border-radius: 10px; + border: 1px solid #D0D0CE; display: flex; justify-content: space-between; background-color: #FFFFFF; -} -.down-icon{ - color:#ED1B2E; - font-size: 25px; - display: flex; - justify-content: flex-end; - padding-top: 11px; - margin-left: -20px; - } -.popOtherBtn{ + } + .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; + } + + .genderBtn { + width: 80px; + height: 47px; display: contents; -} -.qa-dialog{ - overflow-y:auto; - height: 500px; + } + + .qa-dialog { + overflow-y: auto; + height: auto; margin-top: 20px; -} -.qaTextTitle{ - margin-top:30px -} -.qa-dialog-footer{ + } + + .qaTextTitle { + margin-top: 30px + } + + .qa-dialog-footer { display: flex; justify-content: center; margin-bottom: 81px; color: #ED1B2E; -} -.el-drawer__container ::-webkit-scrollbar { - display: none; - } -.el-button+.el-button{ + } + + .el-drawer__container ::-webkit-scrollbar { + display: none; + } + + .el-button+.el-button { margin-left: 0; -} -.seniority-choice{ + } + + .seniority-choice { display: flex; flex-wrap: wrap; -} -.area-choice{ - height:50px; - border-radius:10px; - border:1px solid #D0D0CE ; + } + + .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{ + } + + .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{ + } + + .el-button.is-disabled { font-size: 20px; border-radius: 20px; - color:#FFFFFF; - background-color: #A7A8AA; - border:1px solid #A7A8AA; -} -.rec-footer{ - height:70px; + color: #FFFFFF; + background-color: #A7A8AA; + border: 1px solid #A7A8AA; + } + + .rec-footer { + height: 70px; display: flex; justify-content: center; align-items: center; - margin: -10px; -} -.other-PopBtn{ + } + + .other-PopBtn { width: 90px; height: 47px; margin-top: 10px; -} -.other-input{ - margin-top: 20px; - height: 50px; - width:316px; - border:1px solid #CCCCCC; - ; -} -.rec-ques-location{ - display:flex; + } + + + + .rec-ques-location { + display: flex; align-items: center; -} -.pop-tag{ + } + + .pop-tag { display: flex; flex-wrap: wrap; margin: -10px; -} -.rec-popular{ + } + + .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{ + .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{ + 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; + color: black; + margin: 0px 0px 10px 10px; + border: 1px solid #D0D0CE; width: 90px; - height:47px; -} -.rate-consultant{ - - .el-rate__icon{ - font-size:35px + height: 47px; + } + + .rate-consultant { + + .el-rate__icon { + font-size: 35px } -} -.el-progress__text{ + } + + .el-progress__text { display: none; -} -.el-progress-bar{ + } + + .el-progress-bar { padding-right: 0; -} -.el-progress-bar__inner{ - background-color:#ED1B2E; -} + } -.required { + .el-progress-bar__inner { + background-color: #ED1B2E; + } + + .required { position: relative; - &::before { - content: '*'; - position: absolute; - color: #FF0000; - transform: translate(-12px, 0); - } -} -.hint { + &::before { + content: '*'; + position: absolute; + color: #FF0000; + transform: translate(-12px, 0); + } + } + + .hint { font-size: 16px; color: #ED1B2E; font-weight: bold; + .icon-information { - padding: 0 5px; + padding: 0 5px; } -} + } -.area-txt{ + .area-txt { display: flex; align-items: center; margin-left: 18px; -} + } -@include desktop { - .other-input{ - height: 50px; - width:316px; - border:1px solid #CCCCCC; - margin-left: 10px; -} - .desktopBtn{ - margin-right: 10px; - height:47px + @include desktop { + .desktopBtn { + margin-right: 10px; + height: 47px } - .popOtherBtn{ - margin-left:10px; - margin-top:-10px; -} -} -</style> + .popOtherBtn { + margin-left: 10px; + margin-top: -10px; + } + } + +</style> -- Gitblit v1.8.0