feat: 後端API
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { computed, ref } from 'vue'
|
||||
import { login as apiLogin } from '@/api/auth'
|
||||
|
||||
/** 後端尚未完成前保持 true,改為 false 才會實際呼叫登入 API */
|
||||
const USE_MOCK = import.meta.env.VITE_USE_MOCK !== 'false'
|
||||
|
||||
export interface UserProfile {
|
||||
name: string
|
||||
@@ -198,6 +202,8 @@ function createDefaultRadarData () {
|
||||
|
||||
export const useAppStore = defineStore('app', () => {
|
||||
const isLoggedIn = ref(false)
|
||||
/** 登入取得的使用者識別碼,課程建議等 API 需要此值查詢 */
|
||||
const userID = ref('')
|
||||
const userProfile = ref<UserProfile>(createDefaultUserProfile())
|
||||
const selfAssessment = ref<SelfAssessment>(createDefaultSelfAssessment())
|
||||
const appointments = ref<Appointment[]>(createDefaultAppointments())
|
||||
@@ -224,13 +230,26 @@ export const useAppStore = defineStore('app', () => {
|
||||
return Math.round((done / keys.length) * 100)
|
||||
})
|
||||
|
||||
function login (phone: string) {
|
||||
/** 手機門號登入;後端未完成時走模擬資料,完成後設 VITE_USE_MOCK=false 改打真實 API */
|
||||
async function login (phone: string) {
|
||||
if (USE_MOCK) {
|
||||
isLoggedIn.value = true
|
||||
userID.value = 'MOCK-USER'
|
||||
userProfile.value.phone = phone
|
||||
return
|
||||
}
|
||||
|
||||
const response = await apiLogin(phone)
|
||||
|
||||
isLoggedIn.value = true
|
||||
userProfile.value.phone = phone
|
||||
userID.value = response.userID
|
||||
userProfile.value.phone = response.phone
|
||||
userProfile.value.name = response.userName
|
||||
}
|
||||
|
||||
function logout () {
|
||||
isLoggedIn.value = false
|
||||
userID.value = ''
|
||||
}
|
||||
|
||||
function updateProfile (profile: Partial<UserProfile>) {
|
||||
@@ -374,6 +393,7 @@ export const useAppStore = defineStore('app', () => {
|
||||
|
||||
return {
|
||||
isLoggedIn,
|
||||
userID,
|
||||
userProfile,
|
||||
selfAssessment,
|
||||
appointments,
|
||||
|
||||
Reference in New Issue
Block a user