Add new components for login and comment functionality

This commit is contained in:
wangqiao
2025-08-17 20:15:33 +08:00
parent 99df1d1f81
commit 07b4d3de99
37 changed files with 4744 additions and 263 deletions

View File

@ -1,6 +1,6 @@
import { defineStore } from 'pinia'
// import { getPermissions } from '@/api/common'
import { IPermissions } from '~/api/common/types'
import type { IPermissions } from '~/api/common/types'
// type TPayload = {
// menuId: string

View File

@ -1,99 +1,112 @@
import { defineStore } from 'pinia'
import { refreshToken as REFRESHTOKEN } from '~/utils/axios'
import router from '@/router'
import { getUserInfo } from '~/api/common/index'
import { AppMemberUserInfoRespVO } from '~/api/common/types'
import MQTTClient from '~/utils/mqttClient'
import { socialLoginByCode } from '~/api/pay'
import app from '@/main'
import { defineStore } from "pinia";
import refreshToken from "~/utils/RefreshToken";
import { getUserInfo } from "~/api/common/index";
import type { AppMemberUserInfoRespVO } from "~/api/common/types";
import MQTTClient from "~/utils/mqttClient";
import { socialLoginByCode } from "~/api/pay";
// const {
// $openLogin,
// $closeLogin,
// $openRegister,
// $closeRegister,
// $openLoginEmail,
// $closeLoginEmail,
// } = useNuxtApp();
export default defineStore('useUserStore', {
export default defineStore("useUserStore", {
state: () => ({
token: REFRESHTOKEN.getToken().token || '',
refreshToken: REFRESHTOKEN.getToken().refreshToken || '',
userId: REFRESHTOKEN.getToken().userId || '',
userName: REFRESHTOKEN.getToken().userName || '',
userInfoRes: (REFRESHTOKEN.getToken().userInfo || {}) as AppMemberUserInfoRespVO,
token: refreshToken.getToken().token || "",
refreshToken: refreshToken.getToken().refreshToken || "",
userId: refreshToken.getToken().userId || "",
userName: refreshToken.getToken().userName || "",
userInfoRes: (refreshToken.getToken().userInfo ||
{}) as AppMemberUserInfoRespVO,
mqttClient: null as MQTTClient | null,
}),
actions: {
setToken(token: string) {
this.token = token
this.token = token;
},
setRefreshToken(refreshToken: string) {
this.refreshToken = refreshToken
this.refreshToken = refreshToken;
},
setUserId(userId: string) {
this.userId = userId
this.userId = userId;
},
setUserName(userName: string) {
this.userName = userName
this.userName = userName;
},
logout() {
REFRESHTOKEN.removeToken()
refreshToken.removeToken();
if (self === top) {
router.push('/index')
navigateTo("/index");
} else {
window.top?.postMessage({ event: 'logout' }, '*')
window.top?.postMessage({ event: "logout" }, "*");
}
},
async getUserInfo() {
const res = await getUserInfo()
const res = await getUserInfo();
if (res.code === 0) {
this.userInfoRes = res.data
REFRESHTOKEN.setUserInfo(res.data)
this.userInfoRes = res.data;
refreshToken.setUserInfo(res.data);
// 建立连接mqtt
this.connectMqtt()
this.connectMqtt();
}
},
// 建立连接mqtt
async connectMqtt() {
this.mqttClient = new MQTTClient('wss://www.tuxixi.net/mqtt', {
this.mqttClient = new MQTTClient("wss://www.tuxixi.net/mqtt", {
clientId: this.userInfoRes.id,
})
await this.mqttClient.connect()
await this.mqttClient?.subscribe(`zbjk_message_single/${this.userInfoRes.id}`)
await this.mqttClient?.subscribe(`zbjk_message_kefu/${this.userInfoRes.id}`)
});
await this.mqttClient.connect();
await this.mqttClient?.subscribe(
`zbjk_message_single/${this.userInfoRes.id}`
);
await this.mqttClient?.subscribe(
`zbjk_message_kefu/${this.userInfoRes.id}`
);
},
async getToken(row: any) {
try {
// 验证state
if (localStorage.getItem('wechat_login_state') !== row.state && localStorage.getItem('qq_login_state') !== row.state) {
ElMessage.error('验证失败,请重新登录')
return
if (
localStorage.getItem("wechat_login_state") !== row.state &&
localStorage.getItem("qq_login_state") !== row.state
) {
ElMessage.error("验证失败,请重新登录");
return;
}
const res = await socialLoginByCode({
code: row.code,
state: row.state,
type: Number(row.type), // type: 32-微信开放平台 35-腾讯QQ
})
});
const { code, data } = res
const { code, data } = res;
if (code === 0 && data.openid) {
// 打开登录界面
if (!data.accessToken) {
ElMessage.error('因你未绑定手机号,请先绑定手机号')
if (app) {
app.config.globalProperties.$openLogin('verify', row.code, row.type, row.state)
}
ElMessage.error("因你未绑定手机号,请先绑定手机号");
// @ts-ignore
// $openLogin("verify", row.code, row.type, row.state);
} else {
REFRESHTOKEN.setToken(data.accessToken, data.refreshToken)
REFRESHTOKEN.setUserId(data.userId.toString())
// REFRESHTOKEN.setUserName(loginForm.mobile)
this.setToken(data.accessToken)
this.setUserId(data.userId.toString())
refreshToken.setToken(data.accessToken, data.refreshToken);
refreshToken.setUserId(data.userId.toString());
// refreshToken.setUserName(loginForm.mobile)
this.setToken(data.accessToken);
this.setUserId(data.userId.toString());
// userStore.setUserName(loginForm.mobile)
this.setRefreshToken(data.refreshToken)
this.setRefreshToken(data.refreshToken);
// 获取信息
await this.getUserInfo()
await this.getUserInfo();
}
} else {
console.error('获取token失败:', res.msg)
console.error("获取token失败:", res.msg);
}
} catch (error) {
console.error('getToken error:', error)
console.error("getToken error:", error);
}
},
},
})
});