From a9cd9302818ec2bcd6eec2cd530030e0eae11715 Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期一, 17 一月 2022 09:49:22 +0800 Subject: [PATCH] fixed: adjust same component class name --- PAMapp/components/QuickFilter/QuickFilterConsultantList.vue | 173 ++++++++++++++++++++++++++++++--------------------------- 1 files changed, 90 insertions(+), 83 deletions(-) diff --git a/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue b/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue index 351def6..71555ba 100644 --- a/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue +++ b/PAMapp/components/QuickFilter/QuickFilterConsultantList.vue @@ -5,110 +5,130 @@ :autoplay="false" indicator-position="none" arrow="never" - class="pam-consultant-carousel" + class="pam-quickFilter-carousel" ref="carouselRef" > <el-carousel-item - v-for="(item, index) in 5" + v-for="(item, index) in consultantList" :key="index" > <div class="fill" - @touchstart="touchStart" - @touchend="moveCard" + @touchstart="moveStart" + @touchend="moveEnd" > - <el-avatar + <UiAvatar :size="200" - class="mx-auto cursor--pointer" - @click="$router.push('/agentInfo')" - src="" - /> - <div class="mdTxt mt-30 mb-10 text--center">�蝢��(隡舀��蝬�鈭�)</div> + :agentNo="item.agentNo" + class="mx-auto" + @click.native="showAgentDetail(item.agentNo)" + ></UiAvatar> + <div class="mdTxt mt-30 mb-30 text--center" + >{{item.name}}<span v-if="item.role">({{item.role}})</span> + </div> <el-row> <el-col :span="12"> <div class="smTxt_bold mb-10 text--prudential_grey">����風</div> - <div class="mb-10">銝�撟�12���</div> + <div class="mb-10">{{item.seniority}}</div> </el-col> - <el-col :span="12"> + <el-col :span="12" v-if="!hideReviews"> + <!-- TODO:���遛��漲 --> <div class="smTxt_bold mb-10 text--prudential_grey">摰X皛踵�漲</div> <div> - <i class="icon-star pam-icon"></i> - 4.8</div> + <i class="icon-star pam-icon icon--yellow "></i> + {{item.avgScore}}</div> </el-col> </el-row> - <div class="smTxt_bold mb-10 text--prudential_grey">撠����</div> - <div class="p bold">#鞎∪����</div> - </div> - <div class="parallelBtns"> - <el-button @click="addConsultant"> - <i class="icon-add smTxt"></i> - <span>憿批��</span> - </el-button> - <el-button - @click="$router.push('/communication/myDemand')" - type="primary" - >�脰����</el-button> + <div class="smTxt_bold mt-10 mb-10 text--prudential_grey">撠����</div> + <div> + <span + v-for="(i, index) in item.expertise" + :key="index" + class="p bold mr-30 mb-10 inline-block" + >#{{i}}</span> + </div> + <AddAndReservedBtns + :cusClass="'fixedBtn'" + :agentInfo="item" + @openPopUp="openPopUp" + ></AddAndReservedBtns> </div> </el-carousel-item> </el-carousel> - <div class="absolute arrow-left-position" @click="nextCard"> + <div class="absolute arrow-left-position" @click="prevCard"> <i class="icon-left pam-left-arrow"></i> </div> <div class="absolute arrow-right-position" @click="nextCard"> <i class="icon-right pam-right-arrow"></i> </div> - <Ui-Drawer - :isVisible.sync="isVisibleDrawer" + <PopUpFrame :isOpen.sync="isVisiblePopUp" > <div class="text--center mdTxt"> - <p class="mb-50">����憿批��</p> - <p class="text--primary cursor--pointer" - @click="isVisibleDrawer = false">������</p> + <p class="mb-50">{{popUpTxt}}</p> + <div class="text--center"> + <el-button + type="primary" + @click="isVisiblePopUp = false" + >������</el-button> + </div> </div> - </Ui-Drawer> - - <Ui-Dialog - :isVisible.sync="isVisibleDialog" - > - <div class="text--center mdTxt"> - <p class="mb-50">����憿批��</p> - <p class="text--primary cursor--pointer" - @click="isVisibleDialog = false">������</p> - </div> - </Ui-Dialog> + </PopUpFrame> </div> </template> <script lang="ts"> +import { Consultant } from '~/shared/models/consultant.model'; import { ElCarousel } from 'element-ui/types/carousel'; -import { Vue, Component } from 'vue-property-decorator'; -import { isMobileDevice } from '~/assets/ts/device'; +import { hideReviews } from '~/shared/const/hide-reviews'; +import { Vue, Component, Prop } from 'vue-property-decorator'; @Component export default class QuickFilterConsultantList extends Vue { - isVisibleDrawer = false; - isVisibleDialog = false; + @Prop() + consultantList!: Consultant[]; + + isVisiblePopUp = false; + popUpTxt = '����憿批��'; startPosition = 0; endPosition = 0; + startYPosition = 0; + endYPosition = 0; + hideReviews = hideReviews ; - touchStart(event: TouchEvent) { + ////////////////////////////////////////////////////////////////// + + moveStart(event: TouchEvent) { this.startPosition = event.changedTouches[0].clientX; + this.startYPosition = event.changedTouches[0].clientY; } - moveCard(event: any) { + moveEnd(event: TouchEvent) { this.endPosition = event.changedTouches[0].clientX; - if (this.endPosition < this.startPosition) { - this.nextCard(); - return; - } + this.endYPosition = event.changedTouches[0].clientY; + if (Math.abs(this.endYPosition - this.startYPosition) < 50) { + if (this.endPosition < this.startPosition) { + this.nextCard(); + return; + } - if (this.endPosition > this.startPosition) { - this.prevCard(); - return; + if (this.endPosition > this.startPosition) { + this.prevCard(); + } } + } + + ////////////////////////////////////////////////////////////////// + + openPopUp(txt: string) { + this.popUpTxt = txt; + this.isVisiblePopUp = true; + } + + showAgentDetail(agentNo: string): void { + this.$router.push(`/agentInfo/${agentNo}`); } nextCard() { @@ -117,12 +137,6 @@ prevCard() { (this.$refs.carouselRef as ElCarousel).prev(); - } - - addConsultant() { - isMobileDevice() - ? this.isVisibleDrawer = true - : this.isVisibleDialog = true; } } @@ -141,19 +155,11 @@ margin: 0 auto; } - .parallelBtns { - display: flex; - justify-content: center; + .fixedBtn { position: fixed; bottom: 30px; left: 50%; transform: translateX(-50%); - width: 100%; - - .el-button { - padding: 10px 0; - width: 45%; - } } .pam-left-arrow,.pam-right-arrow { @@ -163,7 +169,6 @@ border-radius: 50px; background-color: $LIGHT_GREY; color: $CORAL; - z-index: 2; cursor: pointer; &:before { @@ -172,28 +177,26 @@ } } - .pam-right-arrow { - &:before { - margin-left: 15px; - } + .pam-left-arrow:before { + margin-left: 25px; } - .pam-left-arrow { - &:before { - margin-left: 25px; - } + .pam-right-arrow:before { + margin-left: 15px; } .arrow-right-position { top: 50%; - right: -60px; + right: -40px; transform: translateY(-50%); + z-index: 3; } .arrow-left-position { top: 50%; - left: -60px; + left: -40px; transform: translateY(-50%); + z-index: 3; } .relative { @@ -202,6 +205,10 @@ .absolute { position: absolute; + } + + .inline-block { + display: inline-block; } @media (min-width: 768px) { @@ -218,4 +225,4 @@ } } -</style> \ No newline at end of file +</style> -- Gitblit v1.8.0