保誠-保戶業務員媒合平台
劉鈞霖
2021-11-19 41daebaa3ffd0b99aac703208e4b6b2ec41c274e
PAMapp/pages/recommendConsultant/index.vue
@@ -1,9 +1,9 @@
<template>
  <div>
    <div class="pb-10 mdTxt">您的性別</div>
  <div class="pam-rec-cosultant-page">
    <div class="pb-10 mdTxt">顧問性別</div>
    <SingleSelectBtn :singleSelected.sync="strictQueryDto.gender" :options="genderOptions"/>
    <div class="pam-paragraph">
      <div class="pb-10 mdTxt required">所在地區</div>
      <div class="pb-10 mdTxt required">顧問所在地區</div>
      <div class="job-pick cursor--pointer"
        @click="showAddress = true">
        <input class="fz-20 input cursor--pointer pl-10"
@@ -12,39 +12,40 @@
        <i class="icon-down down-icon"></i>
      </div>
      <PopUpFrame :isOpen.sync="showAddress"
        :drawerSize="'45%'">
        <AddressPicker @close="showAddress = false"
          @change="area => strictQueryDto.area = area" />
        :drawerSize="'65%'">
        <AddressPicker
          @confirm="confirmAddress" />
      </PopUpFrame>
    </div>
    <div class="pam-paragraph">
      <div class="pb-10 mdTxt required">
        想要詢問的問題
        <span class="hint text--bold">
          <i class="icon-information text--bold" @click="showDialog = true"></i>可複選
          (可複選)
        </span>
        <i class="icon-information text--bold fix-chrome-click--issue" @click="showDialog = true"></i>
      </div>
      <MultiSelectBtn :mutiSelect.sync="strictQueryDto.requirements" :options="requirementOptions" />
      <MultiSelectBtn :mutiSelect.sync="strictQueryDto.requirements" :options="requirementOptions" class="rec-multi-select" />
    </div>
    <div class="pam-paragraph pam-tags">
      <div class="pb-10 mdTxt">顧問年資</div>
       <SingleSelectBtn :singleSelected.sync="strictQueryDto.seniority" :options="seniorityOptions"/>
        <SingleSelectBtn :singleSelected.sync="strictQueryDto.seniority" :options="seniorityOptions"/>
    </div>
    <div class="rate-consultant pam-paragraph">
    <div class="pam-paragraph">
      <div class="pb-10 mdTxt">保險顧問滿意度</div>
      <el-rate v-model="strictQueryDto.avgScore"
        :colors="elRateColors"
        class="rate">
      <el-rate class="pam-consultant-rate" v-model="strictQueryDto.avgScore">
      </el-rate>
    </div>
    <div class="pam-paragraph">
      <div class="rec-popular">
        <div class="pb-10 mdTxt">熱門檢索</div>
        <div class="hint text--bold ml-10">可複選</div>
        <div class="hint text--bold ml-10">(可複選)</div>
      </div>
      <div class="rec-pop-container">
      <MultiSelectBtn :mutiSelect.sync="strictQueryDto.popularTags"
        :options="popularOptions"
        :nameOfOtherOption="'#其他'" :otherSelect.sync="strictQueryDto.otherPopularTags" />
        :nameOfOtherOption="'#其他'" :otherSelect.sync="strictQueryDto.otherPopularTags" class="rec-pop-options"/>
        </div>
    </div>
    <div class="rec-footer pam-paragraph">
      <el-button type="primary"
@@ -66,23 +67,32 @@
          </div>
        </div>
      </div>
      <div class="qa-dialog-footer mdTxt"
        @click="showDialog = false">
        <p>我知道了</p>
      <div class="text--center mdTxt mt-30 mb-30">
        <el-button type="primary" @click="showDialog = false">我知道了</el-button>
      </div>
    </PopUpFrame>
    <PopUpFrame :isOpen.sync="isVisiblePopUp">
      <div class="text--center mdTxt">
            <p class="mb-50">尚無推薦資料</p>
            <div class="text--center mdTxt">
              <el-button type="primary" @click="isVisiblePopUp = false">我知道了</el-button>
            </div>
        </div>
    </PopUpFrame>
  </div>
</template>
<script lang="ts">
  import {
    Vue,
    Component
  } from 'vue-property-decorator';
    Component,
    Mutation
  } from 'nuxt-property-decorator';
  import {strictQuery} from '~/assets/ts/api/consultant';
  import * as _ from 'lodash';
  @Component
  export default class RecommendConsultant extends Vue {
    isVisiblePopUp = false;
    strictQueryDto={
      gender:'',
      area:'',
@@ -213,12 +223,18 @@
    ];
    showDialog = false;
    showAddress = false;
    elRateColors = ['#ED1B2E', '#ED1B2E', '#ED1B2E'];
    @Mutation updateStrictQueryList!: (data: any) => void;
    makePair():void{
      strictQuery(this.strictQueryDto).then(res=>{
        console.log('resultData',res.data);
         this.$router.push('/recommendConsultant/result');
        this.updateStrictQueryList(res.data);
        if (res.data.length === 0) {
          this.isVisiblePopUp = true;
          return;
        }
        this.$router.push('/recommendConsultant/result');
      });
    }
    get notFinishByRequireRules():boolean{
@@ -226,6 +242,12 @@
      const requirementLength = this.strictQueryDto.requirements.length;
      return !(area && requirementLength >0)
    }
    confirmAddress(area: string) {
      this.strictQueryDto.area = area;
      this.showAddress = false;
    }
  }
  enum Gender{
    MALE="male",
@@ -233,7 +255,48 @@
  }
</script>
<style lang="scss">
<style lang="scss" >
.pam-rec-cosultant-page {
  .rec-pop-container{
    width:310px;
    .rec-pop-options{
      .el-checkbox-group{
        display: flex;
        flex-wrap: wrap;
        flex-direction: row;
        .el-checkbox{
          width:90px;
          height: 50px;
          padding:0;
          .el-checkbox__label{
            justify-content: center;
            align-items: center;
            display: flex;
            padding:15px 20px;
            text-align: center;
          }
        }
        .pam-selectAll-btn{
          margin-top: 60px;
          margin-left:-203px;
          height: 50px;
          width: 90px;
          padding: 10px;
        }
      }
    }
  }
  .rec-multi-select{
    .el-checkbox-group {
      display: flex;
      flex-direction: column;
      align-items: flex-start;
    }
  }
  input:focus,
  textarea:focus {
    outline: none;
@@ -274,7 +337,7 @@
  .qa-dialog {
    overflow-y: auto;
    height: auto;
    height: 500px;
    margin-top: 20px;
  }
@@ -287,6 +350,7 @@
    justify-content: center;
    margin-bottom: 81px;
    color: #ED1B2E;
    cursor: pointer;
  }
  .el-drawer__container ::-webkit-scrollbar {
@@ -399,13 +463,6 @@
    height: 47px;
  }
  .rate-consultant {
    .el-rate__icon {
      font-size: 35px
    }
  }
  .el-progress__text {
    display: none;
  }
@@ -426,20 +483,10 @@
      position: absolute;
      color: #FF0000;
      transform: translate(-12px, 0);
      z-index: 5;
    }
  }
  .hint {
    font-size: 16px;
    color: #ED1B2E;
    font-weight: bold;
    .icon-information {
      padding: 0 5px;
    }
  }
  .area-txt {
    display: flex;
    align-items: center;
@@ -457,6 +504,48 @@
      margin-left: 10px;
      margin-top: -10px;
    }
    .rec-pop-container{
      width:auto;
    .rec-pop-options{
      .el-checkbox-group{
        display: flex;
        flex-wrap:wrap;
        flex-direction: none;
        .el-checkbox{
          width:90px;
          height: 50px;
          padding:0;
          .el-checkbox__label{
            justify-content: center;
            align-items: center;
            display: flex;
            padding:15px 20px;
            text-align: center;
          }
        }
        .pam-selectAll-btn{
          margin-top:0px;
          margin-left:0px;
          height: 50px;
          width: 90px;
          padding: 10px;
        }
      }
    }
  }
    .rec-multi-select{
    .el-checkbox-group {
      display: flex;
      flex-direction: row;
      align-items: flex-start;
      flex-wrap: wrap;
    }
  }
  }
}
</style>