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