From bcc6976e871d6aa664e301684b7a8871b2d727b7 Mon Sep 17 00:00:00 2001
From: HelenHuang <LinHuang@pollex.com.tw>
Date: 星期四, 30 十二月 2021 15:10:38 +0800
Subject: [PATCH] TODO 顧問編輯個人帳號資訊-多選樣式修改

---
 PAMapp/pages/quickFilter/index.vue |  114 ++++++++++++++++++--------------------------------------
 1 files changed, 37 insertions(+), 77 deletions(-)

diff --git a/PAMapp/pages/quickFilter/index.vue b/PAMapp/pages/quickFilter/index.vue
index 2e35267..e8f352f 100644
--- a/PAMapp/pages/quickFilter/index.vue
+++ b/PAMapp/pages/quickFilter/index.vue
@@ -66,10 +66,11 @@
 
 <script lang="ts">
 import { Vue, Component, namespace } from 'nuxt-property-decorator';
-import { FastQueryParams } from '~/assets/ts/api/consultant';
-import { Consultant } from '~/assets/ts/models/consultant.model';
-import { Selected } from '~/components/QuickFilter/QuickFilterSelector.vue';
-import { fastQuery } from '~/assets/ts/api/consultant';
+
+import queryConsultantService from '~/shared/services/query-consultant.service';
+import { Consultant } from '~/shared/models/consultant.model';
+import { questionList } from '~/shared/const/quickFilter-questionList';
+import { FastQueryParams, QuestionOption, Selected } from '~/shared/models/quick-filter.model';
 
 const localStorage = namespace('localStorage');
 @Component
@@ -81,41 +82,9 @@
     consultantList: Consultant[] = [];
     questionOption = {};
     confirmItem: Selected[] = [];
-    questionList: QuestionOption[] = [
-        {
-            name: 'gender',
-            title: '憿批��批',
-            detail: [
-                { name: '���', value: 'male', className: 'btn_man'},
-                { name: '憟單��', value: 'female', className: 'btn_woman'}
-            ],
-            type: 'radio'
-        },
-        // { TODO:���遛��漲
-        //     name: 'avgScore',
-        //     title: '憿批�遛��漲',
-        //     detail: [],
-        //     type: ''
-        // },
-        {
-            name: 'communicationStyles',
-            title: '皞�◢�',
-            detail: [
-                { value: '雓寞��祕', className: 'btn_owl'},
-                { value: '��翰銝餃��', className: 'btn_tiger'},
-                { value: '���', className: 'btn_koala'},
-                { value: '�隢◢頞�', className: 'btn_peacock'}
-            ],
-            type: 'checkbox'
-        },
-        // {
-        //     name: 'status',
-        //     title: '銝�����',
-        //     detail: [],
-        //     type: 'radio'
-        // }
-    ];
+    questionList = questionList;
 
+    //////////////// lifecycle ////////////////
     mounted() {
         if (this.quickFilterSelectedData && this.quickFilterSelectedData.length > 0) {
             this.confirmItem = this.quickFilterSelectedData;
@@ -123,26 +92,8 @@
         }
     }
 
-    gender(): string {
-        const filter = this.confirmItem.filter(item => item.option === 'gender').map(i => i.value);
-        return filter.length === 0 ? '' : filter[0];
-    }
 
-    avgScore(): number {
-        const filter = this.confirmItem.filter(item => item.option === 'avgScore').map(i => i.value);
-        return filter.length === 0 ? '' : filter[0];
-    }
-
-    communicationStyles(): string[] {
-        return this.confirmItem.filter(item => item.option === 'communicationStyles').map(i => i.value);
-    }
-
-    isActive(name: string) {
-        return name === 'gender' && !!this.gender()
-            || name === 'avgScore' && !!this.avgScore()
-            || name === 'communicationStyles' && !!this.communicationStyles().length
-    }
-
+    //////////////////////////////////////////
     openPopUp(question: QuestionOption) {
         this.questionOption = question;
         this.isOpenQuestionPopUp =true;
@@ -159,7 +110,29 @@
         this.isOpenQuestionPopUp = false;
     }
 
-    setConfirmData(event: Selected) {
+    isActive(name: string) {
+        return name === 'gender' && !!this.gender()
+            || name === 'avgScore' && !!this.avgScore()
+            || name === 'communicationStyles' && !!this.communicationStyles().length
+    }
+
+
+    //////////////// private ////////////////
+    private gender(): string {
+        const filter = this.confirmItem.filter(item => item.option === 'gender').map(i => i.value);
+        return filter.length === 0 ? '' : filter[0];
+    }
+
+    private avgScore(): number {
+        const filter = this.confirmItem.filter(item => item.option === 'avgScore').map(i => i.value);
+        return filter.length === 0 ? '' : filter[0];
+    }
+
+    private communicationStyles(): string[] {
+        return this.confirmItem.filter(item => item.option === 'communicationStyles').map(i => i.value);
+    }
+
+    private setConfirmData(event: Selected) {
         if (event.option === 'communicationStyles') {
             this.filterCommunicationStyles(event);
         } else {
@@ -168,7 +141,7 @@
         }
     }
 
-    filterCommunicationStyles(event: Selected) {
+    private filterCommunicationStyles(event: Selected) {
         const confirmValue = this.confirmItem
             .filter(item => item.option === 'communicationStyles')
             .map(i => i.value);
@@ -188,7 +161,7 @@
         }
     }
 
-    getRecommendList() {
+    private getRecommendList() {
         const data: FastQueryParams = {
             gender: this.gender(),
             communicationStyles: this.communicationStyles(),
@@ -196,25 +169,12 @@
             status: ''
         }
 
-        fastQuery(data).then((res) => {
-            this.consultantList = res.data;
+        queryConsultantService.fastQuery(data).then((consultantList) => {
+            this.consultantList = consultantList;
             this.storageQuickFilter(JSON.stringify(this.confirmItem))
         })
     }
 
-}
-
-export interface QuestionOption {
-    title: string;
-    detail: Detail[];
-    type: string;
-    name: string;
-}
-
-interface Detail {
-    value: string;
-    name?: string;
-    className: string;
 }
 
 </script>
@@ -240,7 +200,7 @@
     .quickBtnBlock {
         display: flex;
         width: 100%;
-        height: 132px;
+        // height: 132px;
         flex-wrap: wrap;
         justify-content: space-between;
 
@@ -273,4 +233,4 @@
         }
     }
 
-</style>
\ No newline at end of file
+</style>

--
Gitblit v1.8.0