Merge branch 'master' of ssh://192.168.0.10:29418/pcalife/PAM
| | |
| | | border: 1px $LIGHT_GREY solid; |
| | | background-color: $PRIMARY_WHITE; |
| | | border-radius: 50px; |
| | | font-size: 20px; |
| | | margin-right: 10px; |
| | | margin-bottom: 10px; |
| | | |
| | |
| | | |
| | | .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 { |
| | |
| | | color: $PRIMARY_WHITE; |
| | | .el-radio__label{ |
| | | color: $PRIMARY_WHITE; |
| | | .radio-sub-title{ |
| | | color: $PRIMARY_WHITE; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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}) |
| | |
| | | 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; |
| | | } |
| | |
| | | <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> |
| | |
| | | |
| | | <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() { |
| | |
| | | |
| | | 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> |
| | | |
| | |
| | | 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> |
| | |
| | | |
| | | <PopUpFrame class="pam-popUpFrame" |
| | | :isOpen.sync="isOpenByStep_1" |
| | | :model="isOpenByStep_1" |
| | | :drawerSize="drawerSize" |
| | | :dialogWidth="dialogWidth"> |
| | | <div class="pam-popUp-title">{{popUpTitle}}</div> |
| | |
| | | <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"; |
| | |
| | | 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={ |
| | |
| | | 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,','); |
| | | } |
| | | } |
¤ñ¹ï·sÀÉ®× |
| | |
| | | <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> |
| | |
| | | |
| | | <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%' "> |
| | |
| | | <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> |
| | |
| | | <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:'å¥åº·èä¿é', |
| | |
| | | get disableActionButton(): boolean { |
| | | return true; |
| | | }; |
| | | |
| | | |
| | | get isConnectMobile(): boolean { |
| | | return this.connectDevices.includes('mobile'); |
| | |
| | | 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() { |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | |
| | | .ques-footer{ |
| | | display: flex; |
| | | justify-content: center; |
| | | |
| | | } |
| | | .job-inputDiv{ |
| | | height:90px; |
| | |
| | | <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">ç±é檢索</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">ç±é檢索</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="è«è¼¸å
¥,éXå"> |
| | | </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:'å
¨é¢æª¢è¦èªå·±çä¿éçµæ§æ¯å¦ç¬¦åç¾å¨ææªä¾ç風éªç§»è½éæ±ï¼ééãæ·ãæ¨ãé¢ãæé¢è±å¨åå£ä¸ã' |
| | | }, |
| | | { |
| | | 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: 'å
¨é¢æª¢è¦èªå·±çä¿éçµæ§æ¯å¦ç¬¦åç¾å¨ææªä¾ç風éªç§»è½éæ±ï¼ééãæ·ãæ¨ãé¢ãæé¢è±å¨åå£ä¸ã' |
| | | }, |
| | | { |
| | | 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> |