From 3041bdc8daee6f17ab790bbab0bfdbf22f244573 Mon Sep 17 00:00:00 2001
From: Tomas <tomasysh@gmail.com>
Date: 星期四, 27 一月 2022 10:18:51 +0800
Subject: [PATCH] update: [前單] 在相關功能顯示滿意度資訊、打開滿意度相關功能

---
 PAMapp/pages/agentInfo/edit/_agentNo.vue |  227 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 168 insertions(+), 59 deletions(-)

diff --git a/PAMapp/pages/agentInfo/edit/_agentNo.vue b/PAMapp/pages/agentInfo/edit/_agentNo.vue
index 35cbc1d..82d013a 100644
--- a/PAMapp/pages/agentInfo/edit/_agentNo.vue
+++ b/PAMapp/pages/agentInfo/edit/_agentNo.vue
@@ -1,30 +1,50 @@
 <template>
-    <div>
+    <div class="edit-agent-info-page">
       <el-row
         type="flex"
         justify="center">
-        <UiAvatar
-          :size="150"
-          :agentNo="agentInfo.agentNo">
-        </UiAvatar>
+        <EditConsultantAvatar
+          :agentNo="agentInfo.agentNo"
+          :photoBase64.sync="editInfoValue.photoBase64"/>
       </el-row>
-
       <el-row
         type="flex"
         class="pt-10"
         justify="center"
         align="middle" v-if="!hideReviews">
-        <!-- TODO:���遛��漲 -->
           <i class="pam-icon icon--primary icon-star"></i>
           <h3 class="mdTxt">{{ agentInfo.avgScore }}</h3>
       </el-row>
 
       <el-row
         type="flex"
-        class="pt-10"
+        class="pam-paragraph"
         justify="center">
         <el-input class="mdTxt" v-model="editInfoValue.name"></el-input>
       </el-row>
+
+      <el-row
+        type="flex"
+        class="pam-paragraph">
+        <el-col :span="24" class="pam-field">
+          <div class="pam-field__label pam-progress__label">
+            <div>
+              <div class="pam-field__title mb-10">
+                <i class="pam-icon icon-phone"
+                  ></i>����Ⅳ
+                  <span class="hint text--bold" v-show="!phoneValid">����Ⅳ�撘�炊</span>
+                  <span class="hint text--bold" v-show="editInfoValue.phoneNumber.length === 0">����Ⅳ�敹‵</span>
+              </div>
+            </div>
+            <el-input
+            v-model="editInfoValue.phoneNumber"
+            :class="{'is-invalid': !phoneValid}"
+            maxlength="10"
+            minlength="10"></el-input>
+          </div>
+        </el-col>
+      </el-row>
+
 
       <el-row
         type="flex"
@@ -93,27 +113,42 @@
       <el-row
         type="flex"
         class="pam-paragraph">
-        <UiField icon="flag" label="皞�◢�">
-        <el-checkbox
-            v-model="editInfoValue.communicationStyle"
-            :label="communicateStyle"
-            :key="index"
-            v-for="(communicateStyle, index) in communicationStyleList">
-          </el-checkbox>
-        </UiField>
-
+        <el-col :span="24" class="pam-field">
+          <div class="pam-field__label pam-progress__label">
+            <div>
+              <div class="pam-field__title">
+                <i class="pam-icon icon-flag"
+                  ></i>皞�◢�  <span class="hint text--bold">(�銴,��憭�2���)</span>
+              </div>
+            </div>
+            <MultiSelectBtn class="mt-30"
+            :mutiSelect.sync="editInfoValue.communicationStyle"
+            :options="agentCommunicationStyleList"
+            :maxLength="2"
+            >
+            </MultiSelectBtn>
+          </div>
+        </el-col>
       </el-row>
+
       <el-row
         type="flex"
         class="pam-paragraph">
-        <UiField icon="flag" label="撠����">
-          <el-checkbox
-            v-model="editInfoValue.expertise"
-            :label="expert"
-            :key="index"
-            v-for="(expert, index) in expertList">
-          </el-checkbox>
-        </UiField>
+        <el-col :span="24" class="pam-field">
+          <div class="pam-field__label pam-progress__label">
+            <div>
+              <div class="pam-field__title">
+                <i class="pam-icon icon-flag"
+                  ></i>撠����  <span class="hint text--bold">(�銴)</span>
+              </div>
+            </div>
+            <MultiSelectBtn class="mt-30"
+            :mutiSelect.sync="editInfoValue.expertise"
+            :options="agentExpertList"
+            >
+            </MultiSelectBtn>
+          </div>
+        </el-col>
       </el-row>
 
       <el-row
@@ -154,7 +189,16 @@
             </div>
         </div>
     </PopUpFrame>
-
+    <PopUpFrame :isOpen.sync="isInfoUpdate">
+      <div class="text--center mdTxt fs-18">
+        <p class="mt-20 text--center ">撣唾��������</p>
+        <el-button
+                type="primary"
+                @click="backToInfo"
+                class="mt-20"
+              >������</el-button>
+      </div>
+    </PopUpFrame>
     <div class="pam-paragraph account-confirm">
       <el-button :disabled="isSubmitBtnDisabled"
         @click.native="editAgentInfoSetting">
@@ -167,7 +211,7 @@
 <script lang="ts">
 import { Context } from '@nuxt/types';
 import { namespace } from 'nuxt-property-decorator';
-import { Vue, Component } from 'vue-property-decorator';
+import { Vue, Component, Prop } from 'vue-property-decorator';
 import * as _ from "lodash";
 
 import myConsultantService from '~/shared/services/my-consultant.service';
@@ -177,15 +221,14 @@
 import { hideReviews } from '~/shared/const/hide-reviews';
 import { AgentInfoSetting } from '~/shared/models/account.model';
 import { Role } from '~/shared/models/enum/Role';
-import { agentExpertList } from '~/shared/const/agent-expert-list';
 import { agentCommunicationStyleList } from '~/shared/const/agent-communication-style-list';
 
-const localStorage = namespace('localStorage');
+const localStorageTest = namespace('localStorage');
 
 @Component
 export default class AgentInfoComponent extends Vue {
 
-  @localStorage.State('current_role')
+  @localStorageTest.State('current_role')
   currentRole!:string | null;
 
   _agentInfoSetting!: AgentInfoSetting;
@@ -194,25 +237,71 @@
   fieldInfoTitle  : string = '';
   hideReviews     : boolean = hideReviews ;
   isAlertFieldInfo: boolean = false;
+  isInfoUpdate    : boolean = false;
 
   editInfoValue = {
     agentNo           : '',
     name              : '',
-    expertise            : [] as string[],
+    expertise         : [] as string[],
     title             : '',
     serveArea         : '',
     companyAddress    : '',
     seniorityYear     : 1,
     seniorityMonth    : 0,
     concept           : '',
-    experiences        : '',
+    experiences       : '',
     awards            : '',
     communicationStyle: [] as string[],
+    photoBase64       : '',
+    phoneNumber       : ''
   };
 
   communicationStyleList: string[] = agentCommunicationStyleList;
-  expertList: string[] = agentExpertList;
   role           = Role;
+
+  agentExpertList = [
+    {
+        title:'�摨瑁����',
+        label:'�摨瑁����'
+    },
+    {
+        title:'摮戊��',
+        label:'摮戊��'
+    },
+    {
+        title:'鞈閬��',
+        label:'鞈閬��'
+    },
+    {
+        title:'璅暑��隡�',
+        label:'璅暑��隡�'
+    },
+    {
+        title:'靽�瑼�/閬��',
+        label:'靽�瑼�/閬��'
+    },
+    {
+        title:'����',
+        label:'����'
+    }];
+
+  agentCommunicationStyleList = [
+    {
+        title:'雓寞��祕',
+        label:'雓寞��祕'
+    },
+    {
+        title:'��翰銝餃��',
+        label:'��翰銝餃��'
+    },
+    {
+        title:'���',
+        label:'���'
+    },
+    {
+        title:'�隢◢頞�',
+        label:'�隢◢頞�'
+    }];
 
   //////////////////////////////////////////////////////////////////////
 
@@ -229,7 +318,6 @@
 
   private setAgentInfo(agentInfo: AgentInfo): void {
     const [agentYear, _yearUnit , agentMonth, _monthUnit] =  agentInfo.seniority.split(" ");
-
     this._agentInfoSetting = {
       agentNo           : agentInfo.agentNo||'',
       name              : agentInfo.name || '',
@@ -240,24 +328,45 @@
       gender            : agentInfo.gender||'',
       phoneNumber       : agentInfo.phoneNumber||'',
       companyAddress    : agentInfo.companyAddress || '',
-      seniorityYear     : agentYear? +agentYear     : 0,
-      seniorityMonth    : agentMonth ? +agentMonth  : 0,
+      seniorityYear     : agentYear? +agentYear : 0,
+      seniorityMonth    : agentMonth ? +agentMonth : 0,
       concept           : agentInfo.concept || '',
       experiences       : agentInfo.experiences  || '',
       awards            : agentInfo.awards || '',
       communicationStyle: agentInfo.communicationStyle || '',
-      photoBase64       : '',
+      photoBase64       : ''
     };
 
     this.editInfoValue = {
       ...this._agentInfoSetting,
       expertise          : _.cloneDeep(this._agentInfoSetting.expertise),
       // TODO: 蝣箄��垢甇斗���垢���隞�" , "���� [Tomas, 2021/12/28]
-      communicationStyle : this._agentInfoSetting.communicationStyle.split('��')
+      communicationStyle : this._agentInfoSetting.communicationStyle.split('��'),
     }
   }
 
   //////////////////////////////////////////////////////////////////////
+
+  editAgentInfoSetting(): void {
+    const editSettingInfo: any = {
+      ...this.editInfoValue,
+      communicationStyle: this.editInfoValue.communicationStyle.join('��'),
+    }
+    accountSettingService.editAgentInfoSetting(editSettingInfo).then((res: AgentInfoSetting) => {
+      this.isInfoUpdate = true;
+    });
+  }
+
+  backToInfo() {
+    this.isInfoUpdate = false
+    this.$router.push(`/agentInfo/${this.agentInfo.agentNo}`);
+  }
+
+  selectCommunicationStyles(): void {
+    if (this.editInfoValue.communicationStyle.length > 2) {
+            this.editInfoValue.communicationStyle.shift();
+        }
+  }
 
   alertFieldInfo(field: string): void {
     this.isAlertFieldInfo = true;
@@ -272,8 +381,13 @@
         break;
     }
   }
-
   ////////////////////////////////////////////////////////////
+  get phoneValid(): boolean {
+            const rule = /^09[0-9]{8}$/;
+            return this.editInfoValue.phoneNumber
+            ? rule.test(this.editInfoValue.phoneNumber) && _.isEqual(this.editInfoValue.phoneNumber.length,10)
+            : true;
+        }
 
   get isSubmitBtnDisabled(): boolean {
       const isFormValid =  this.editInfoValue.name
@@ -282,33 +396,22 @@
                         && this.editInfoValue.serveArea
                         && this.editInfoValue.concept
                         && this.editInfoValue.experiences
-                        && this.editInfoValue.awards
+                        && this.editInfoValue.phoneNumber.length
                         && this.editInfoValue.seniorityYear
-                        && this.editInfoValue.seniorityMonth
-                        && this.editInfoValue.expertise
-                        && this.editInfoValue.communicationStyle;
+                        && this.editInfoValue.expertise.length
+                        && this.editInfoValue.communicationStyle.length;
       return !isFormValid
   }
-
-
-
-  editAgentInfoSetting(): void {
-    const editSettingInfo: any = {
-      ...this.editInfoValue,
-      communicationStyle: this.editInfoValue.communicationStyle.join('��'),
-      photoBase64       : '',
-    }
-
-    accountSettingService.editAgentInfoSetting(editSettingInfo).then((res: AgentInfoSetting) => {
-      console.log(editSettingInfo)
-    });
-  }
-
 }
 
 </script>
 
-<style lang="scss">
+<style lang="scss" >
+.edit-agent-info-page{
+  .el-textarea__inner{
+  font-size: 15px;
+}
+}
 .pam-icon {
   font-size    : 15px;
   padding-right: 8px;
@@ -366,5 +469,11 @@
   width       : 50px;
   margin-right: 5px;
 }
+.el-input--suffix .el-input__inner {
+  padding-right: 20px;
+}
 
+.el-textarea__inner{
+  font-size: 18px;
+}
 </style>

--
Gitblit v1.9.3