From 20b87b7eab9c600e2445548c4306ea1b8b37b275 Mon Sep 17 00:00:00 2001
From: HelenHuang <LinHuang@pollex.com.tw>
Date: 星期一, 06 十二月 2021 12:29:50 +0800
Subject: [PATCH] update#131467: [滿意度評分功能]-客戶進行滿意度評分API串接

---
 PAMapp/pages/index.vue |  280 +++++++++++++++++++++++++------------------------------
 1 files changed, 129 insertions(+), 151 deletions(-)

diff --git a/PAMapp/pages/index.vue b/PAMapp/pages/index.vue
index feffa01..3d9550d 100644
--- a/PAMapp/pages/index.vue
+++ b/PAMapp/pages/index.vue
@@ -1,185 +1,163 @@
 <template>
-    <div>
-        <Ui-Carousel></Ui-Carousel>
-        <div class="page-container">
-            <h5 class="mdTxt mb-30">����憿批��</h5>
-            <el-button
-                class="reserveBtn recommendConsultant"
-                @click="routerPush('/recommendConsultant')"
-            >
-                <p>������</p>
-            </el-button>
-            <el-button
-                class="reserveBtn quickFilter"
-                @click="routerPush('/quickFilter')"
-            >
-                <p>敹恍�祟�</p>
-            </el-button>
-            <el-row class="mb-30 rowStyle">
-                <el-col :span="16">
-                    <span class="mdTxt">���“���</span>
-                    <span class="smTxt_bold amount">� {{consultantList.length}} 蝑�</span>
-                </el-col>
-                <el-col
-                    :span="8"
-                    class="mdTxt readMore"
-                    v-if="consultantList.length > 3"
-                    @click.native="routerPush('/myConsultantList/consultantList')">���憭�</el-col>
-            </el-row>
-            <ConsultantList
-                :agents="consultantList.slice(0, 3)"
-                @removeAgent="removeAgent"
-            ></ConsultantList>
-            <div class='pam-recommend pb-30 pt-30'>
-                <h5 class="mdTxt">��靽憿批��</h5>
-                <img class="absulate img" src="~/assets/images/index_recommend.svg" alt="">
-            </div>
-            <ConsultantSwiper :agents="recommendList"></ConsultantSwiper>
+  <div>
+    <Ui-Carousel></Ui-Carousel>
+    <div class="page-container">
+      <div class="mb-30">
+        <h5 class="mdTxt">����憿批��</h5>
+        <div class="mt-10 pam-reserveBtn--block">
+          <el-button class="reserveBtn recommendConsultant"
+            @click="routerPush('/recommendConsultant')">
+            <p>������</p>
+          </el-button>
+          <el-button class="reserveBtn quickFilter"
+            @click="routerPush('/quickFilter')">
+            <p>敹恍�祟�</p>
+          </el-button>
         </div>
+      </div>
+      <div class="pam-paragraph">
+        <el-row class="rowStyle">
+          <el-col :span="16">
+            <span class="mdTxt">���“���</span>
+            <span class="smTxt_bold amount">� {{consultantList.length}} 蝑�</span>
+          </el-col>
+          <el-col :span="8"
+            class="mdTxt readMore fix-chrome-click--issue"
+            v-if="consultantList.length > 3"
+            @click.native="routerPush('/myConsultantList/consultantList')">���憭�</el-col>
+        </el-row>
+        <ConsultantList class="mt-10"
+          :agents="consultantList.slice(0, 3)"></ConsultantList>
+      </div>
+      <div class='pam-paragraph'>
+        <div class="pam-recommend">
+          <h5 class="mdTxt">��靽憿批��</h5>
+          <img class="img"
+            src="~/assets/images/index_recommend.svg"
+            alt="">
+        </div>
+        <ConsultantSwiper :agents="recommendList"></ConsultantSwiper>
+      </div>
     </div>
+  </div>
 </template>
 
 <script lang="ts">
-import { Vue, Component, State, Action } from 'nuxt-property-decorator';
-import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant';
-import { addFavoriteConsultant, Consultants } from '~/assets/ts/api/consultant';
-import { login, getFavoriteConsultant } from '~/assets/ts/api/consultant';
-import { isLogin } from '~/assets/ts/auth';
+  import { Vue, Component, State, Action, Watch } from 'nuxt-property-decorator';
+  import { Consultants } from '~/assets/ts/models/consultant.model';
 
-@Component({
+  @Component({
     layout: 'home'
-})
-export default class MainComponent extends Vue {
+  })
+  export default class MainComponent extends Vue {
     consultantList: Consultants[] = [];
     agents: Consultants[] = [];
     @State('recommendList') recommendList!: Consultants[];
     @Action storeRecommendList!: any;
 
-    mounted() {
-        if (!this.recommendList) {
-            this.storeRecommendList();
-        }
+    @State('myConsultantList') myConsultantList!: Consultants[];
+    @Action storeConsultantList!: any;
 
-        if (isLogin()) {
-            this.addFavoriteFromStorageToApi();
-            getFavoriteConsultant().then((response) => this.consultantList = response.data);
-        } else {
-            this.consultantList = getFavoriteFromStorage();
-        }
+    @Watch('myConsultantList')
+    onMyConsultantListChange() {
+      this.consultantList = (this.myConsultantList || [])
+        .filter(item => item.contactStatus !== 'contacted')
+        .sort((a, b) => a.updateTime > b.updateTime ? -1 : 1)
     }
 
-    addFavoriteFromStorageToApi() {
-        const agentNoList = getFavoriteFromStorage().map(i => i.agentNo)
-        if (agentNoList.length > 0) {
-            addFavoriteConsultant(agentNoList).then(res => res);
-            localStorage.removeItem('favoriteConsultant');
-        }
+    mounted() {
+      if (!this.recommendList?.length) {
+        this.storeRecommendList();
+      }
+
+      this.storeConsultantList();
     }
 
     routerPush(path: string) {
-        this.$router.push(path);
+      this.$router.push(path);
     }
 
-    removeAgent(agentNo: string) {
-        const findIndex = this.consultantList.findIndex((item, i) => {
-            return item.agentNo === agentNo;
-        })
-        this.consultantList.splice(findIndex, 1);
-        if (!isLogin()) {
-            setFavoriteToStorage(this.consultantList)
-        }
-    }
-}
+  }
 
 </script>
 
 <style lang="scss" scoped>
+  .page-container {
+    margin: 0px 20px 30px 20px;
+  }
 
+  .reserveBtn.el-button--default {
+    width: 100%;
+    height: 110px;
+    border-radius: 10px;
+    margin-bottom: 15px;
+    font-size: 32px;
+    font-weight: 700;
+    background-position: right;
+    background-size: cover;
+    color: #68737A;
+    text-align: left;
+    background-repeat: no-repeat;
+    box-shadow: 0px 0px 6px #a79b9b29;
+    border-width: 0;
+
+    p {
+      text-shadow: 1px 1px 5px $PRIMARY_WHITE;
+    }
+  }
+
+  .el-button+.el-button {
+    margin-left: 0px;
+  }
+
+  .quickFilter {
+    background-image: url('~/assets/images/quickFilter/banner_mob.svg');
+  }
+
+  .recommendConsultant {
+    background-image: url('~/assets/images/recommendConsultant/banner_mob.svg');
+  }
+  .rowStyle {
+    .amount {
+      color: $PRUDENTIAL_GREY;
+    }
+    .readMore {
+      color: $PRIMARY_RED;
+      cursor: pointer;
+      text-align: right;
+    }
+  }
+
+  .pam-recommend {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+  }
+
+  @media (min-width: 576px) and (max-width: 768px) {
+    .quickFilter.el-button--default {
+      background-image: url('~/assets/images/quickFilter/banner_web.svg');
+    }
+
+    .recommendConsultant.el-button--default {
+      background-image: url('~/assets/images/recommendConsultant/banner_web.svg');
+    }
+  }
+  
+  @include desktop {
     .page-container {
-        padding: 0px 20px 30px 20px;
+      width: 700px;
+      margin: 0 auto;
     }
 
-    .reserveBtn.el-button--default {
-        width: 100%;
-        height: 110px;
-        border-radius: 10px;
-        margin: 0 auto 17px auto;
-        font-size: 32px;
-        font-weight: 700;
-        background-position: right;
-        background-size: cover;
-        color: #68737A;
-        text-align: left;
-        background-repeat: no-repeat;
-        box-shadow: 0px 0px 6px #a79b9b29;
-        border-width: 0;
-
-        p {
-            text-shadow: 1px 1px 5px $PRIMARY_WHITE;
-        }
-
-        &:nth-child(3) {
-            margin-bottom: 42px;
-        }
-
+    .pam-reserveBtn--block {
+      display: flex;
+      justify-content: space-between;
     }
 
-    .reserveBtn+.reserveBtn {
-        margin-left: 0px;
+    .reserveBtn {
+      max-width: 335px;
     }
-
-    .quickFilter {
-        background-image: url('~/assets/images/quickFilter/banner_mob.svg');
-    }
-
-    .recommendConsultant {
-        background-image: url('~/assets/images/recommendConsultant/banner_mob.svg');
-    }
-
-    @media (min-width: 576px) and (max-width: 1023px) {
-        .quickFilter.el-button--default {
-            background-image: url('~/assets/images/quickFilter/banner_web.svg');
-        }
-
-        .recommendConsultant.el-button--default {
-            background-image: url('~/assets/images/recommendConsultant/banner_web.svg');
-        }
-    }
-
-    .rowStyle {
-        .amount {
-            color: $PRUDENTIAL_GREY;
-        }
-        .readMore {
-            color: $PRIMARY_RED;
-            cursor: pointer;
-            text-align: right;
-        }
-    }
-
-    @include desktop {
-        .page-container {
-            width: 700px;
-            margin: 0 auto;
-        }
-
-        .reserveBtn {
-            max-width: 340px;
-
-            &:nth-child(2) {
-                margin-right: 15px;
-            }
-        }
-    }
-
-    .pam-recommend {
-        position: relative;
-
-        .img {
-            position: absolute;
-            right: 20px;
-            bottom: 0px;
-        }
-    }
+  }
 
 </style>

--
Gitblit v1.8.0