From 3e8c86ebf61df1ac5c9dfd96c7a829a2cd9ec4a2 Mon Sep 17 00:00:00 2001 From: Mila <Mila@pollex.com.tw> Date: 星期一, 15 十一月 2021 17:55:59 +0800 Subject: [PATCH] TODO#130023 客戶預約清單: 串接標註已聯絡 api --- PAMapp/assets/ts/api/share.ts | 18 ++++++ PAMapp/pages/myAppointmentList/appointmentList.vue | 2 PAMapp/components/Client/ClientList.vue | 2 PAMapp/components/Client/ClientCard.vue | 46 ++++++++------ PAMapp/pages/myAppointmentList/contactedList.vue | 2 PAMapp/assets/ts/api/consultant.ts | 52 ++--------------- PAMapp/assets/ts/api/appointment.ts | 37 ++++++++++++ PAMapp/pages/myAppointmentList.vue | 2 8 files changed, 91 insertions(+), 70 deletions(-) diff --git a/PAMapp/assets/ts/api/appointment.ts b/PAMapp/assets/ts/api/appointment.ts new file mode 100644 index 0000000..bbb8d6b --- /dev/null +++ b/PAMapp/assets/ts/api/appointment.ts @@ -0,0 +1,37 @@ +import { service } from '~/assets/ts/api/share'; +import { AxiosResponse } from 'axios'; + +// ��������� +export function getMyAppointmentList():Promise<AxiosResponse<ClientInfo>> { + const headers = { + Authorization: 'Bearer ' + localStorage.getItem('id_token') + } + return service.get('/consultant/getMyAppointment', {headers}); +} + +// 璅�撌脰蝯� +export function markAsContact(appointmentId: number) { + const headers = { + Authorization: 'Bearer ' + localStorage.getItem('id_token') + } + return service.post('/appointment/markAsContacted/'+appointmentId, undefined, {headers}) +} + + +export interface ClientInfo { + id: number, + phone: string, + email: string, + contactType: string, + gender: string, + age: string, + job: string, + requirement: string, + communicateStatus: string, + hopeContactTime: string, + otherRequirement: string, + appointmentDate: Date, + agentNo: string, + customerId: number, + name: string +} \ No newline at end of file diff --git a/PAMapp/assets/ts/api/consultant.ts b/PAMapp/assets/ts/api/consultant.ts index 32789aa..16a86b9 100644 --- a/PAMapp/assets/ts/api/consultant.ts +++ b/PAMapp/assets/ts/api/consultant.ts @@ -1,24 +1,5 @@ -import axios from 'axios'; -import { AxiosRequestConfig, AxiosError, AxiosResponse } from 'axios'; -import { MessageBox } from 'element-ui'; -import { functionsIn } from 'lodash'; -import Router from 'vue-router'; - -export const service = axios.create({ - baseURL: process.env.BASE_URL -}) - -service.interceptors.request.use(function (config: AxiosRequestConfig) { - return config; -}, function (error: AxiosError) { - return Promise.reject(error); -}); - -service.interceptors.response.use(function (response: AxiosResponse) { - return response; -}, function (error: AxiosError) { - return Promise.reject(error); -}); +import { service } from '~/assets/ts/api/share'; +import { AxiosResponse } from 'axios'; // 憿批恥��(TODO: OTP隤����� ���蝙�) export function login(user: any) { @@ -58,7 +39,10 @@ // ����岷��� export function appointmentDemand(data: AppointmentParams) { - return service.post('/appointment/customer/create', data) + const headers = { + Authorization: 'Bearer ' + localStorage.getItem('id_token') + } + return service.post('/appointment/customer/create', data, {headers}) } //憿批�底蝝啗��� @@ -66,13 +50,6 @@ return service.get('/consultant/detail', {params:{agentNo:agentNo}}) } -// ��������� -export function getMyAppointmentList():Promise<AxiosResponse<ClientInfo>> { - const headers = { - Authorization: 'Bearer ' + localStorage.getItem('id_token') - } - return service.get('/consultant/getMyAppointment', {headers}); -} export interface Consultants { agentNo: string, name: string, @@ -127,20 +104,3 @@ new: boolean; } -export interface ClientInfo { - id: number, - phone: string, - email: string, - contactType: string, - gender: string, - age: string, - job: string, - requirement: string, - communicateStatus: string, - hopeContactTime: string, - otherRequirement: string, - appointmentDate: Date, - agentNo: string, - customerId: number, - name: string -} \ No newline at end of file diff --git a/PAMapp/assets/ts/api/share.ts b/PAMapp/assets/ts/api/share.ts new file mode 100644 index 0000000..680c065 --- /dev/null +++ b/PAMapp/assets/ts/api/share.ts @@ -0,0 +1,18 @@ +import axios from 'axios'; +import { AxiosRequestConfig, AxiosError, AxiosResponse } from 'axios'; + +export const service = axios.create({ + baseURL: process.env.BASE_URL +}) + +service.interceptors.request.use(function (config: AxiosRequestConfig) { + return config; +}, function (error: AxiosError) { + return Promise.reject(error); +}); + +service.interceptors.response.use(function (response: AxiosResponse) { + return response; +}, function (error: AxiosError) { + return Promise.reject(error); +}); \ No newline at end of file diff --git a/PAMapp/components/Client/ClientCard.vue b/PAMapp/components/Client/ClientCard.vue index 477cf7f..df1fceb 100644 --- a/PAMapp/components/Client/ClientCard.vue +++ b/PAMapp/components/Client/ClientCard.vue @@ -54,11 +54,12 @@ <p>�批嚗{client.gender === 'male' ? '���' : '憟單��'}}</p> <p>撟湧翩嚗{client.age}}</p> <p>�璆哨�{client.job}}</p> - <p>��瘙�{client.requirements}}</p> - <p>��蝯⊥�挾銝�嚗{hopeContactTime}}</p> + <p>��瘙�{client.requirement.replace(',', '��')}}</p> + <p v-for="(item, index) in hopeContactTime" :key="index">��蝯⊥�挾{{index + 1 | formatNumber}}嚗{item}}</p> <div class="mt-30 text--center" v-if="isReserved"> - <el-button>璅酉�撌脤��蝯�</el-button> + <el-button @click="markAppointment">璅酉�撌脤��蝯�</el-button> </div> + </div> </Ui-Dialog> </div> @@ -66,10 +67,19 @@ <script lang="ts"> import { Vue, Component, Prop } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/api/consultant'; import { isMobileDevice } from '~/assets/ts/device'; +import { ClientInfo, markAsContact } from '~/assets/ts/api/appointment'; -@Component +@Component({ + filters: { + formatNumber(index: number) { + if (index) { + const upperNumber = ['�', '銝�', '鈭�', '銝�', '���', '鈭�', '�', '銝�', '�', '銋�', '���'] + return upperNumber[index]; + } + } + } +}) export default class ClientList extends Vue { @Prop() client!: ClientInfo; isVisibleDialog = false; @@ -80,26 +90,18 @@ } get hopeContactTime() { - return this.client.hopeContactTime.slice(1, this.client.hopeContactTime.length - 1) + const contactList = this.client.hopeContactTime.split("'").map(item => item.slice(0, item.length - 1)); + return contactList.filter(item => !!item) } + get time() { - if (this.client.appointmentDate) { - const newDate = new Date(this.client.appointmentDate); - const hours = newDate.getHours(); - const minutes = newDate.getMinutes(); - return `${hours} : ${minutes}` - } - return '' + const formatDate = (this.$options.filters as any).formatDate(this.client.appointmentDate); + return formatDate.split(' ')[1] } get date() { - if (this.client.appointmentDate) { - const newDate = new Date(this.client.appointmentDate); - const month = newDate.getMonth(); - const date = newDate.getDate(); - return `${month} / ${date}` - } - return '' + const formatDate = (this.$options.filters as any).formatDate(this.client.appointmentDate); + return formatDate.split(' ')[0] } get isReserved() { @@ -111,6 +113,10 @@ this.isVisibleDialog = true; } + markAppointment() { + markAsContact(this.client.id).then(res => console.log(res)) + } + } </script> diff --git a/PAMapp/components/Client/ClientList.vue b/PAMapp/components/Client/ClientList.vue index b2c541f..11a77d1 100644 --- a/PAMapp/components/Client/ClientList.vue +++ b/PAMapp/components/Client/ClientList.vue @@ -17,7 +17,7 @@ <script lang='ts'> import { Vue, Component, Prop } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/api/consultant'; +import { ClientInfo } from '~/assets/ts/api/appointment'; @Component export default class ClientList extends Vue { diff --git a/PAMapp/pages/myAppointmentList.vue b/PAMapp/pages/myAppointmentList.vue index 9db3ceb..f0d6d6a 100644 --- a/PAMapp/pages/myAppointmentList.vue +++ b/PAMapp/pages/myAppointmentList.vue @@ -27,7 +27,7 @@ <script lang="ts"> import { Context } from '@nuxt/types'; import { Vue, Component } from 'nuxt-property-decorator'; -import { ClientInfo, getMyAppointmentList } from '~/assets/ts/api/consultant'; +import { ClientInfo, getMyAppointmentList } from '~/assets/ts/api/appointment'; @Component export default class ClientReservedList extends Vue { diff --git a/PAMapp/pages/myAppointmentList/appointmentList.vue b/PAMapp/pages/myAppointmentList/appointmentList.vue index 0a9286a..39a357c 100644 --- a/PAMapp/pages/myAppointmentList/appointmentList.vue +++ b/PAMapp/pages/myAppointmentList/appointmentList.vue @@ -23,7 +23,7 @@ <script lang="ts"> import { Vue, Component, Prop } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/api/consultant'; +import { ClientInfo } from '~/assets/ts/api/appointment'; @Component export default class ClientReservedList extends Vue { diff --git a/PAMapp/pages/myAppointmentList/contactedList.vue b/PAMapp/pages/myAppointmentList/contactedList.vue index d061c83..de75b31 100644 --- a/PAMapp/pages/myAppointmentList/contactedList.vue +++ b/PAMapp/pages/myAppointmentList/contactedList.vue @@ -27,7 +27,7 @@ <script lang="ts"> import { Vue, Component, Prop } from 'nuxt-property-decorator'; -import { ClientInfo } from '~/assets/ts/api/consultant'; +import { ClientInfo } from '~/assets/ts/api/appointment'; @Component export default class ClientContactedList extends Vue { -- Gitblit v1.8.0