From 9cb6d5f92ad7aeda45ad1fe6482dcfc63d17be2b Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期一, 06 十二月 2021 12:35:26 +0800 Subject: [PATCH] Merge branch 'master' of https://192.168.0.10:8443/r/pcalife/PAM --- PAMapp/store/index.ts | 133 ++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 132 insertions(+), 1 deletions(-) diff --git a/PAMapp/store/index.ts b/PAMapp/store/index.ts index 986f688..4fe433a 100644 --- a/PAMapp/store/index.ts +++ b/PAMapp/store/index.ts @@ -1,6 +1,137 @@ -import { Module, VuexModule } from 'vuex-module-decorators' +import { Module, VuexModule, Mutation, Action } from 'vuex-module-decorators' +import { ClientInfo, getMyAppointmentList, getMyReviewLog, allAppointmentsView } from '~/assets/ts/api/appointment'; +// import * as consultant from '~/assets/ts/api/consultant'; +import { recommend, AgentOfStrictQuery, getFavoriteConsultant, addFavoriteConsultant, deleteConsultant, strictQuery } from '~/assets/ts/api/consultant'; +import { Consultants } from '~/assets/ts/models/consultant.model'; +import { isLogin } from '~/assets/ts/auth'; +import { AppointmentLog } from '~/assets/ts/models/appointment.model'; +import { getFavoriteFromStorage, setFavoriteToStorage } from '~/assets/ts/storageConsultant'; @Module export default class Store extends VuexModule { + recommendList: Consultants[] = []; + strictQueryList: AgentOfStrictQuery[] = []; + myConsultantList: Consultants[] = []; + + myAppointmentList: ClientInfo[] = []; + + myAppointmentReviewLogList: AppointmentLog[] = []; + + @Mutation updateRecommend(data: Consultants[]) { + this.recommendList = data; + } + + @Mutation updateConsultantList(data: Consultants[]) { + this.myConsultantList = data; + } + + @Mutation updateStrictQueryList(data: AgentOfStrictQuery[]) { + this.strictQueryList = data; + } + + @Mutation updateMyAppointmentList(data: ClientInfo[]) { + this.myAppointmentList = data; + } + + @Mutation updateMyAppointmentReviewLog(data: AppointmentLog[]) { + this.myAppointmentReviewLogList = data; + } + + @Action storeRecommendList() { + recommend().then(data => { + this.context.commit('updateRecommend', data) + }) + } + + @Action + async storeConsultantList() { + const localData = getFavoriteFromStorage(); + if (!isLogin()) { + this.context.commit('updateConsultantList', localData) + return; + }; + + + if (localData?.length) { + const agentNoList = localData.map(i => i.agentNo) + await addFavoriteConsultant(agentNoList).then(res => { + localStorage.removeItem('favoriteConsultant') + }) + } + + getFavoriteConsultant().then(data => { + this.context.commit('updateConsultantList', data) + }) + } + + @Action + async removeFromMyConsultantList(agentNo: string) { + const left = this.myConsultantList.filter(item => item.agentNo !== agentNo); + + // no agent was removed + if (left.length === this.myConsultantList.length) return false; + + if (!isLogin()) { + setFavoriteToStorage(left); + } else { + await deleteConsultant(agentNo) + } + + this.context.commit('updateConsultantList', left) + + return true + } + + @Action + async addToMyConsultantList(consultantToAdd: Consultants) { + if (consultantToAdd) { + const found = this.myConsultantList.find(item => item.agentNo === consultantToAdd.agentNo); + if (!found) { + const newData = [consultantToAdd].concat(this.myConsultantList); + + if (isLogin()) { + await addFavoriteConsultant([consultantToAdd.agentNo]) + } else { + setFavoriteToStorage(newData); + } + + this.context.commit('updateConsultantList', newData) + + return true; + } + } + + return false; + } + + @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) => { + this.context.commit('updateMyAppointmentReviewLog', data); + }); + } + + @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=>{ + this.context.commit('localStorage/storageRecommendConsultant', JSON.stringify(strictQueryDto)); + this.context.commit('updateStrictQueryList', res.data) + return res.data.length; + }); + } } \ No newline at end of file -- Gitblit v1.9.3