From 785a57e89f99ec350f029f9a85a450839324babf Mon Sep 17 00:00:00 2001 From: jack <jack.su@pollex.com.tw> Date: 星期五, 21 七月 2023 09:38:42 +0800 Subject: [PATCH] Merge branch '2023_CR' into 2023_CR2 --- PAMapp/store/index.ts | 126 +++++++++++++++++++++++++++-------------- 1 files changed, 83 insertions(+), 43 deletions(-) diff --git a/PAMapp/store/index.ts b/PAMapp/store/index.ts index d075c4f..cd5d2fe 100644 --- a/PAMapp/store/index.ts +++ b/PAMapp/store/index.ts @@ -1,48 +1,86 @@ import { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators' -import { ClientInfo, getMyAppointmentList, getMyReviewLog } from '~/assets/ts/api/appointment'; -import { recommend, AgentOfStrictQuery, addFavoriteConsultant, deleteConsultant, strictQuery } from '~/assets/ts/api/consultant'; -import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant'; +import myConsultantService from '~/shared/services/my-consultant.service'; +import queryConsultantService, { AddFavoriteConsultantItem } from '~/shared/services/query-consultant.service'; +import reviewsService from '~/shared/services/reviews.service'; +import { Consultant, ConsultantWithAppointmentId } from '~/shared/models/consultant.model'; +import { getFavoriteFromStorage, setFavoriteToStorage } from '~/shared/storageConsultant'; +import { AppointmentLog } from '~/shared/models/appointment.model'; +import { AgentOfStrictQuery, StrictQueryParams } from '~/shared/models/strict-query.model'; +import { NotificationList } from '~/shared/models/reviews.model'; +import {AccessFroms} from "~/shared/services/utils.service"; -import myConsultantService from '~/assets/ts/services/my-consultant.service'; -import { Consultant } from '~/assets/ts/models/consultant.model'; -import { AppointmentLog } from '~/assets/ts/models/appointment.model'; @Module export default class Store extends VuexModule { recommendList: Consultant[] = []; strictQueryList: AgentOfStrictQuery[] = []; myConsultantList: Consultant[] = []; + myAppointmentGroupByConsultantList: ConsultantWithAppointmentId[] = []; - myAppointmentList: ClientInfo[] = []; + reviewLogList: AppointmentLog[] = []; + unReviewLogList: AppointmentLog[] = []; + notificationList: NotificationList[] = []; - myAppointmentReviewLogList: AppointmentLog[] = []; + accessFrom: AccessFroms | null = null; get isUserLogin() { return this.context.getters['localStorage/isUserLogin']; } - @Mutation updateRecommend(data: Consultant[]) { - this.recommendList = data; + get strictResultList(): AgentOfStrictQuery[] { + const perfectMatchList = this.strictQueryList.filter((i) => i.suitability === 100); + return perfectMatchList.length > 5 + ? perfectMatchList + : this.strictQueryList; } - @Mutation updateConsultantList(data: Consultant[]) { + get fromAccess(): AccessFroms | null { + return this.accessFrom; + } + + @Mutation + setAccessSource(from: AccessFroms) { + this.accessFrom = from; + } + + @Mutation + updateRecommend(data: Consultant[]) { + this.recommendList = data; + } + + @Mutation + updateConsultantList(data: Consultant[]) { this.myConsultantList = data; } - @Mutation updateStrictQueryList(data: AgentOfStrictQuery[]) { - this.strictQueryList = data; + @Mutation + updateStrictQueryList(data: AgentOfStrictQuery[]) { + this.strictQueryList = data.sort((a, b) => b.suitability - a.suitability); } - @Mutation updateMyAppointmentList(data: ClientInfo[]) { - this.myAppointmentList = data; + @Mutation + updateReviewLog(data: AppointmentLog[]) { + this.reviewLogList = data; } - @Mutation updateMyAppointmentReviewLog(data: AppointmentLog[]) { - this.myAppointmentReviewLogList = data; + @Mutation + updateUnReviewLog(data: AppointmentLog[]) { + this.unReviewLogList = data; } - @Action storeRecommendList() { - recommend().then(data => { + @Mutation + updateNotification(data: NotificationList[]) { + this.notificationList = data; + } + + @Mutation + updateAppointmentGroupByConsultantList(data: ConsultantWithAppointmentId[]) { + this.myAppointmentGroupByConsultantList = data; + } + + @Action + storeRecommendList() { + queryConsultantService.getRecommendConsultantList().then(data => { this.context.commit('updateRecommend', data) }) } @@ -58,14 +96,18 @@ if (localData?.length) { - const agentNoList = localData.map(i => i.agentNo) - await addFavoriteConsultant(agentNoList).then(res => { + const addFavoriteAgentList: AddFavoriteConsultantItem[] = localData.map(i => ({ agentNo: i.agentNo, createdTime: i.updateTime})); + await queryConsultantService.addFavoriteConsultant(addFavoriteAgentList).then(res => { localStorage.removeItem('favoriteConsultant') }) } myConsultantService.getFavoriteConsultantList().then(data => { this.context.commit('updateConsultantList', data); + }) + + myConsultantService.getAllGroupByConsultant().then((data) => { + this.context.commit('updateAppointmentGroupByConsultantList', data); }) } @@ -79,7 +121,7 @@ if (!this.isUserLogin) { setFavoriteToStorage(left); } else { - await deleteConsultant(agentNo) + await myConsultantService.deleteConsultant(agentNo) } this.context.commit('updateConsultantList', left) @@ -94,7 +136,7 @@ if (!found) { const newData = [consultantToAdd].concat(this.myConsultantList); if (this.isUserLogin) { - await addFavoriteConsultant([consultantToAdd.agentNo]) + await queryConsultantService.addFavoriteConsultant([{ agentNo: consultantToAdd.agentNo, createdTime: consultantToAdd.updateTime }]) } else { setFavoriteToStorage(newData); } @@ -109,16 +151,8 @@ } @Action - async storeMyAppointmentList() { - return await getMyAppointmentList().then((data) => { - this.context.commit('updateMyAppointmentList', data); - return data.filter(item => !item.consultantViewTime || item.consultantViewTime === null).length - }); - } - - @Action storeMyAppointmentReviewLog() { - getMyReviewLog().then((data) => { + reviewsService.getMyReviewLog().then((data) => { const dataWithLatestDate = data.map((item) => { return { ...item, @@ -126,23 +160,29 @@ } }); const sortedData = dataWithLatestDate.sort((a, b) => +b.compareDate - +a.compareDate); - this.context.commit('updateMyAppointmentReviewLog', sortedData); + const reviewLog = sortedData.filter(item => item.score); + const unReviewLog = sortedData.filter(item => !item.score); + this.context.commit('updateReviewLog', reviewLog); + this.context.commit('updateUnReviewLog', unReviewLog); }); - } - - @Action updateMyAppointment(myAppointment: ClientInfo) { - const data = this.myAppointmentList.filter(item => item.id !== myAppointment.id); - data.unshift(myAppointment); - this.context.commit('updateMyAppointmentList', data) } @Action - async storeStrictQueryList(strictQueryDto) { - return await strictQuery(strictQueryDto).then(res=>{ + async storeStrictQueryList(strictQueryDto: StrictQueryParams) { + return await queryConsultantService.strictQuery(strictQueryDto).then(res=>{ this.context.commit('localStorage/storageRecommendConsultant', JSON.stringify(strictQueryDto)); - this.context.commit('updateStrictQueryList', res.data) - return res.data.length; + this.context.commit('updateStrictQueryList', res) + return res.length; }); } + @Action + storeMyPersonalNotification() { + reviewsService.getMyPersonalNotification().then(data => { + const sortData = data + .sort((preItem, nextItem) => +new Date(nextItem.createdDate) - +new Date(preItem.createdDate)) + this.context.commit('updateNotification', sortData); + }) + } + } -- Gitblit v1.8.0