Commit 023bd534 authored by 黄韬's avatar 黄韬

Merge branch 'feature/20250604-login' into 'dev'

feat: 更新request.js

See merge request sparkprojects/20250528_FHQ1!7
parents 44727118 994fbba4
import {
useGlobalStore
} from '../stores/global.js';
import {
storeToRefs
} from 'pinia';
import {
HTTP_STATUS
} from './config.js'
const globalStore = useGlobalStore();
const {
cuk
} = storeToRefs(globalStore);
// request.js
// 通常可以吧 baseUrl 单独放在一个 js 文件了
const baseUrl = "https://docs.dui88.com/mock/1956";
const baseUrl = "http://172.16.230.108:7777/pmall";
const request = (options = {}) => {
// 在这里可以对请求头进行一些设置
......@@ -14,13 +29,28 @@ const request = (options = {}) => {
url: baseUrl + options.url || "",
method: options.type || "GET",
data: options.data || {},
header: options.header || {},
header: {
...options.header,
cuk: cuk.value || undefined
},
})
.then((data) => {
.then((data) => {
// console.log('request data ===>', data);
// const [err, res] = data;
// TODO uni.showToast errMsg
resolve(data.data);
if (data.statusCode !== HTTP_STATUS.SUCCESS) {
uni.showToast({
title: data.errMsg,
icon: 'error'
});
reject(data);
} else if (!data.data?.ok) {
uni.showToast({
title: data.data?.message,
icon: 'error'
});
reject(data.data);
} else {
resolve(data.data);
}
})
.catch((error) => {
reject(error);
......
import requestModule from './request.js';
const { api } = requestModule;
const {
api
} = requestModule;
/**
* 获取用户信息
* @param {*} cuk
* @returns
*/
export const fetchUserInfo = (cuk) =>
api.get('/c/user/memberInfo', {
cuk,
});
export const fetchUserInfo = () => api.get('/c/user/memberInfo');
/**
* 获取宝宝信息
* @param {*} cuk
* @returns
*/
export const fetchBabyInfo = (cuk) =>
api.get('/c/user/babyInfo', {
cuk,
});
export const fetchBabyInfo = () => api.get('/c/user/babyInfo');
/**
* 根据wx.login接口返回的code完成登录
* @param {*} code
* @returns
*/
export const autoLoginByCode = (code) =>
api.get('/c/login/autologin', {
code,
});
export const autoLoginByCode = (code) => api.get('/c/login/autologin', {
code,
});
/**
* 手机号授权,调用微信手机号快速验证组件,获取encryptedData、iv、code
* 通过此接口完成手机号授权,注册新用户
* @param {*} data : {phoneEncryptedData, phoneIv, code}
* @param {*} data : {phoneEncryptedData, phoneIv, code, codeLogin}
* @returns
*/
export const fetchAutoPhone = (data) => api.get('/c/login/authPhone', data);
export const fetchAutoPhone = (data) => api.post('/c/login/authPhone', data);
\ No newline at end of file
......@@ -19,7 +19,9 @@
</template>
<script setup>
import { ref, getCurrentInstance } from "vue";
import { ref, getCurrentInstance,onMounted } from "vue";
import {useUserStore} from '@/stores/user.js';
const userStore = useUserStore();
const { proxy } = getCurrentInstance();
const $baseUrl = proxy.$baseUrl;
......@@ -62,6 +64,10 @@ const handleTabClick = (index, item) => {
currentIndex.value = index;
emit("tabClick", { index, item });
};
onMounted(() => {
userStore.wxAutoLogin();
})
</script>
<style lang="less" scoped>
......
import App from "./App";
import apiRequest from "@/api/request.js";
// import apiRequest from "@/api/request.js";
import * as Pinia from 'pinia';
const BASE_URL = 'https://duiba.oss-cn-hangzhou.aliyuncs.com/fh/';
......@@ -11,7 +11,7 @@ import "./uni.promisify.adaptor";
// 全局挂载后使用
Vue.prototype.$api = apiRequest.api;
// Vue.prototype.$api = apiRequest.api;
Vue.prototype.$baseUrl = BASE_URL;
Vue.config.productionTip = false;
......@@ -28,7 +28,7 @@ import { createSSRApp } from "vue";
export function createApp() {
const app = createSSRApp(App);
app.use(Pinia.createPinia());
app.config.globalProperties.$api = apiRequest.api;
// app.config.globalProperties.$api = apiRequest.api;
app.config.globalProperties.$baseUrl = BASE_URL;
return {
app,
......
import {
defineStore
} from 'pinia';
const cuk = uni.getStorageSync('cuk')
export const useGlobalStore = defineStore('global', {
state: () => {
return {
cuk: cuk, // 用户登录后获取的凭证,调用接口时headers中携带
};
},
actions: {
/**
* 设置用户cuk
* @param {Object} cuk
*/
setCuk(cuk) {
this.cuk = cuk;
uni.setStorageSync('cuk', cuk);
}
},
});
\ No newline at end of file
......@@ -7,11 +7,15 @@ import {
fetchBabyInfo,
fetchAutoPhone
} from '../api/user.js';
import {
useGlobalStore
} from './global.js';
const globalStore = useGlobalStore();
export const useUserStore = defineStore('userInfo', {
state: () => {
return {
cuk: null, // 用户登录后获取的凭证,获取用户、宝宝信息接口时使用
userInfo: null,
babyInfo: null,
};
......@@ -38,43 +42,56 @@ export const useUserStore = defineStore('userInfo', {
* @param {Object} data : {encryptedData, iv, code}
* @returns
*/
async phoneCallback(data) {
// 用户手机授权
await fetchAutoPhone({
phoneEncryptedData: data.encryptedData,
phoneIv: data.iv,
code: data.code,
});
// 授权注册成功后做一次登录
this.wxAutoLogin();
async phoneCallback(data) {
uni.login({
provider: 'weixin',
success: async (res) => {
// console.log('wxAutoLogin', res);
if (res.errMsg === 'login:ok') {
// 用户手机授权
await fetchAutoPhone({
phoneEncryptedData: data.encryptedData,
phoneIv: data.iv,
code: data.code,
codeLogin: res.code
});
// 授权注册成功后做一次登录
this.wxAutoLogin();
} else {
uni.showToast({
title: res.errMsg,
icon: 'error'
});
}
},
});
},
/**
* 获取用户信息
*/
async loadUserInfo() {
if (!this.cuk) {
return;
}
const {
data
} = await fetchUserInfo(this.cuk);
} = await fetchUserInfo();
console.log('userInfo', data);
this.userInfo = data;
if (data?.memberId !== 'not_login') {
this.userInfo = data;
}
},
/**
* 获取宝宝信息
*/
async loadBabyInfo() {
if (!this.cuk) {
return;
}
const {
data
} = await fetchBabyInfo(this.cuk);
} = await fetchBabyInfo();
console.log('babyInfo', data);
this.babyInfo = data;
if (data?.memberId !== 'not_login') {
this.babyInfo = data;
}
},
/**
......@@ -88,7 +105,8 @@ export const useUserStore = defineStore('userInfo', {
console.log('autoLoginByCode', data);
// 如果登录成功,获取用户信息和宝宝信息,更新到state中,方便全局使用
if (data && data.cuk) {
this.cuk = data.cuk;
globalStore.setCuk(data.cuk);
this.loadUserInfo();
this.loadBabyInfo();
}
......@@ -104,6 +122,11 @@ export const useUserStore = defineStore('userInfo', {
console.log('wxAutoLogin', res);
if (res.errMsg === 'login:ok') {
this.autoLoginByCode(res.code);
} else {
uni.showToast({
title: res.errMsg,
icon: 'error'
});
}
},
});
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment