From b1d83028691edb487c4a0e4f7ded977dc916d783 Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期一, 10 一月 2022 13:39:49 +0800 Subject: [PATCH] add#133803 - 製作功能元件 appoitment-progress --- PAMapp/components/Client/ClientCard.vue | 19 ++---- PAMapp/components/Appointment/AppointmentProgress.vue | 122 +++++++++++++++++++++++++++++++++------- PAMapp/assets/scss/utilities/_heading.scss | 4 + PAMapp/assets/scss/utilities/_utilities.scss | 4 + 4 files changed, 115 insertions(+), 34 deletions(-) diff --git a/PAMapp/assets/scss/utilities/_heading.scss b/PAMapp/assets/scss/utilities/_heading.scss index ab51c54..8b64442 100644 --- a/PAMapp/assets/scss/utilities/_heading.scss +++ b/PAMapp/assets/scss/utilities/_heading.scss @@ -39,6 +39,10 @@ font-size: 14px; } +.xxsTxt { + font-size: 12px; +} + .text--bold { font-weight: bold !important; } diff --git a/PAMapp/assets/scss/utilities/_utilities.scss b/PAMapp/assets/scss/utilities/_utilities.scss index 39f3cac..04b3932 100644 --- a/PAMapp/assets/scss/utilities/_utilities.scss +++ b/PAMapp/assets/scss/utilities/_utilities.scss @@ -32,6 +32,10 @@ margin-bottom: 10px; } +.ml-5 { + margin-left: 5px; +} + .ml-10{ margin-left: 10px; } diff --git a/PAMapp/components/Appointment/AppointmentProgress.vue b/PAMapp/components/Appointment/AppointmentProgress.vue index 2a9e8e5..8d57b43 100644 --- a/PAMapp/components/Appointment/AppointmentProgress.vue +++ b/PAMapp/components/Appointment/AppointmentProgress.vue @@ -1,12 +1,19 @@ <template> <div class="appointment-progress"> - <div class="unread" style="display:flex"> - <div class="circle"></div> - <div class="line"></div> - <div class="circle"></div> - <div class="line"></div> - <div class="circle"></div> - </div> + <div + class="appointment-progress__indicator" + :style="{ width: indicatorLineWidth }"> + <div class="line"></div> + <div + class="circle" + v-for="(step, index) in stepList" + :class="{ 'activate': index < displayCurrentStep }" + :key="index"> + </div> + </div> + <div class="appointment-progress__status-label xxsTxt text--bold ml-5"> + {{ displayStatusLabel }} + </div> </div> </template> @@ -15,24 +22,95 @@ @Component export default class AppointmentProgress extends Vue { - @Prop() - size!: number; - @Prop() - agentNo!: string; + @Prop() + totalStep?: number; + + @Prop() + currentStep!: 'picked' | 'reserved' | 'contacted' | 'done' | 'closed' | 'cancel'; + + ////////////////////////////////////////////////////////////////////// + + get stepList(): number[] { + const tempList: number[] = []; + for(let i = 0; i < (this.totalStep || 3); i ++) { + tempList.push(i); + } + return tempList; + } + + get indicatorLineWidth(): string { + const connectLineGutter = 10; + return ((this.totalStep || 3) * 10 + connectLineGutter) + 'px'; + } + + get displayCurrentStep(): number { + let step: number = 0; + switch (this.currentStep) { + case 'picked' || 'reserved': + step = 1; + break; + case 'contacted': + step = 2; + break; + case 'done' || 'closed' || 'cancel': + step = 3; + break; + } + return step; + } + + get displayStatusLabel(): '��蝯�' | '蝝赤銝�' | '��漱' | '���漱' | '撌脣���' { + let label: '��蝯�' | '蝝赤銝�' | '��漱' | '���漱' | '撌脣���' = '��蝯�'; + switch (this.currentStep) { + case 'contacted': + label = '蝝赤銝�'; + break; + case 'done': + label = '��漱'; + break; + case 'closed': + label = '���漱'; + break; + case 'cancel': + label = '撌脣���'; + break; + } + return label; + } } </script> -<style lang="scss" scoped> -.appointment-progress{ - display: flex; - .circle { - width: 10px; - height: 10px; - border-radius: 50px; - background-color: $PRIMARY_BLACK; - margin: auto; - } +<style lang="scss" scoped> + +.appointment-progress{ + display: flex; + .appointment-progress__indicator { + justify-content: space-between; + display : flex; + align-items : center; + position : relative; + .circle { + width : 8px; + height : 8px; + border-radius : 50%; + background-color: white; + margin : 0; + z-index : 50; + border : 1px solid #707070; + &.activate { + background-color: $PRIMARY_BLACK; + } + } + .line { + position : absolute; + height : 3px; + width : 90%; + left : 5%; + background-color: #707070; + } + } } -</style> \ No newline at end of file + +</style> diff --git a/PAMapp/components/Client/ClientCard.vue b/PAMapp/components/Client/ClientCard.vue index c140e28..7f5c0bf 100644 --- a/PAMapp/components/Client/ClientCard.vue +++ b/PAMapp/components/Client/ClientCard.vue @@ -29,13 +29,9 @@ >(摰X�����瘙�)</span> </template> </div> - <div class="unread" style="display:flex"> - <div class="circle"></div> - <div class="line"></div> - <div class="circle"></div> - <div class="line"></div> - <div class="circle"></div> - </div> + <AppointmentProgress + :currentStep="'contacted'" + ></AppointmentProgress> </div> </div> <!-- <el-col :xs="5" :sm="3" align="middle"> @@ -53,7 +49,7 @@ </template> </div> </el-col> --> - + <div class="flex-column contactInfo" :xs="4" :sm="6"> <!-- <div class="smTxt_bold fix-chrome-click--issue" @@ -353,7 +349,7 @@ margin-bottom: 10px; display: flex; justify-content: space-between; - + transition: background-color 0.5s; &.new { border-left: solid 4px $YELLOW; @@ -367,7 +363,7 @@ .circle { width: 10px; height: 10px; - border-radius: 50px; + border-radius: 50%; background-color: $PRIMARY_RED; margin: auto; } @@ -387,7 +383,6 @@ text-overflow: ellipsis; .professionalsTxt { font-size: 12px; - font-weight: bold; margin-right: 5px; } .noProfessionalsTxt { @@ -445,6 +440,6 @@ height: 4px; width: 10px; background-color: $PRUDENTIAL_GREY; - + } </style> -- Gitblit v1.8.0