From 41daebaa3ffd0b99aac703208e4b6b2ec41c274e Mon Sep 17 00:00:00 2001 From: 劉鈞霖 <benson@gmail.com> Date: 星期五, 19 十一月 2021 17:44:15 +0800 Subject: [PATCH] [ Update ] 修正可複選文案,將共用 css 先拉出,調整預約顧問 背景 --- PAMapp/components/QuickFilter/QuickFilterSelector.vue | 108 ++++++++++++++++++++++++++++++++++-------------------- 1 files changed, 68 insertions(+), 40 deletions(-) diff --git a/PAMapp/components/QuickFilter/QuickFilterSelector.vue b/PAMapp/components/QuickFilter/QuickFilterSelector.vue index cb2017b..b972c52 100644 --- a/PAMapp/components/QuickFilter/QuickFilterSelector.vue +++ b/PAMapp/components/QuickFilter/QuickFilterSelector.vue @@ -7,7 +7,7 @@ <span class="smTxt_bold text--primary" v-if="questionOption.name === 'communicationStyles'" - >�銴</span> + >(�銴)</span> <span class="smTxt_bold text--primary" v-if="questionOption.name === 'avgScore'" @@ -15,7 +15,10 @@ </div> <div class="quickBtnBlock" v-if="questionOption.name === 'communicationStyles'"> - <el-checkbox-group class="pam-quickFilter-checkbox" v-model="pickedItem.communicationStyles"> + <el-checkbox-group + class="pam-quickFilter-checkbox" + v-model="pickedItem.communicationStyles" + > <el-checkbox v-for="(i, index) in questionOption.detail" :key="index" @@ -27,7 +30,10 @@ </div> <div class="quickBtnBlock" v-else-if="questionOption.name === 'gender'"> - <el-radio-group class="pam-quickFilter-radio" v-model="pickedItem.gender"> + <el-radio-group + class="pam-quickFilter-radio" + v-model="pickedItem.gender" + > <el-radio v-for="(i, index) in questionOption.detail" :key="index" @@ -37,25 +43,27 @@ </el-radio-group> </div> - <div class="quickBtnBlock" v-else-if="questionOption.name === 'status'"> - <el-radio-group class="pam-quickFilter-radio" v-model="pickedItem.status"> - <el-radio - v-for="(i, index) in QuestionOption.detail" - :key="index" - :label="i.value" - :class="i.className" - ></el-radio> - </el-radio-group> + <div v-else> + <el-rate + class="pam-quickFilter-rate" + v-model="pickedItem.avgScore" + ></el-rate> </div> - <div v-else> - <el-rate class="pam-quickFilter-rate" v-model="pickedItem.avgScore"></el-rate> + <div class="text--center mt-30"> + <el-button + class="pam-select-confirm" + type="primary" + @click="confirm" + :disabled="isDisabled" + >蝣箄��</el-button> </div> + </div> </template> <script lang="ts"> -import { Vue, Component, PropSync, Prop, Watch } from 'nuxt-property-decorator'; +import { Vue, Component, Prop, Watch, Emit } from 'nuxt-property-decorator'; import { FastQueryParams } from '~/assets/ts/api/consultant'; import { QuestionOption } from '~/pages/quickFilter/index.vue'; @@ -69,16 +77,56 @@ avgScore: 0 } - @PropSync('drawerVisible') isVisible!: boolean; - @Prop() selectedItem!: FastQueryParams; @Prop() questionOption!: QuestionOption; + @Prop() isOpenQuestionPopUp!: boolean; + @Prop() confirmItem!: Selected[]; - @Watch('selectedItem', {deep: true, immediate: true}) watchSelected(newValue: FastQueryParams) { - if (newValue) { - this.pickedItem = JSON.parse(JSON.stringify(this.selectedItem)) + @Watch('isOpenQuestionPopUp') onPopUpChange() { + this.pickedItem = { + communicationStyles: this.communicationStyles, + status: '', + gender: this.gender, + avgScore: this.avgScore } } + get gender() { + const filter = this.confirmItem.filter(item => item.option === 'gender'); + return filter.length > 0 ? filter[0].value : ''; + } + + get avgScore() { + const filter = this.confirmItem.filter(item => item.option === 'avgScore'); + return filter.length > 0 ? filter[0].value : 0; + } + + get communicationStyles() { + return this.confirmItem + .filter(item => item.option === 'communicationStyles') + .map(item => item.value); + } + + get isDisabled() { + const name = this.questionOption.name; + return name === 'gender' && !this.pickedItem[name] + || name === 'avgScore' && !this.pickedItem[name] + || name === 'communicationStyles' && !this.pickedItem[name].length + } + + @Emit('confirm') + confirm() { + const name = this.questionOption.name; + return { + option: this.questionOption.name, + value: this.pickedItem[name] + } + } + +} + +export interface Selected { + option: string; + value: any; } </script> @@ -89,26 +137,6 @@ justify-content: space-between; align-content: space-between; flex-wrap: wrap; - - .quickBtn { - width: 48%; - height: 110px; - text-align: center; - box-shadow: 0 0 6px #22222229; - padding: auto 0 auto 0; - border-radius: 10px; - color: $PRIMARY_BLACK; - - &:hover,&:focus { - color: $PRIMARY_BLACK; - border-color: $PRIMARY_WHITE; - background-color: $PRIMARY_WHITE; - } - } - - .quickBtn+.quickBtn { - margin-left: 0; - } } </style> \ No newline at end of file -- Gitblit v1.8.0