From dd58c1d3a27ba48a5df050aab7c586bb9b988914 Mon Sep 17 00:00:00 2001 From: wujingjing <gersonwu@qq.com> Date: 星期三, 09 四月 2025 18:01:22 +0800 Subject: [PATCH] activeTopMenuStyle --- src/stores/global.ts | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 152 insertions(+), 4 deletions(-) diff --git a/src/stores/global.ts b/src/stores/global.ts index 54d61a6..4d219e0 100644 --- a/src/stores/global.ts +++ b/src/stores/global.ts @@ -1,18 +1,28 @@ -import { MAIN_URL } from '../constants'; -import { accessSessionKey } from '../utils/request'; +import type { Ref } from 'vue'; +import { ref } from 'vue'; +import { GetSystemGlobalConfig } from '../api/system'; +import { SERVE_URL, SSE_URL } from '../constants'; +import { accessSessionKey, userInfoKey } from '../utils/request'; import { SSEClient } from '../utils/sse/SSEClient'; import { Local } from '../utils/storage'; - +import type { SystemGlobalConfig } from '../views/types'; +import { ElLoadingService, ElMessage } from 'element-plus'; +import { handleAfterLogin } from '../layout/component/login/login'; +import { isShowLogin } from './chatRoom'; +import { PostLogin, userBindingWechat } from '../api/ai/user'; +import emitter from '../utils/mitt'; /** * 杩炴帴娑堟伅鍚屾鏈嶅姟 * @returns */ const connectMsgSyncService = () => { if (!Local.get(accessSessionKey)) return; + if (!SSE_URL) return; // 鍒涘缓瀹炰緥 const sseClient = new SSEClient( - `${MAIN_URL}chat/connect_broadcast_chat`, + // `https://widev.cpolar.top/sse/chat/connect_broadcast_chat`, // `${MAIN_URL}events` + SSE_URL ); sseClient.connect({ websessionid: Local.get(accessSessionKey), @@ -21,3 +31,141 @@ }; export const sseClient = connectMsgSyncService(); + +/** @description 绯荤粺鍏ㄥ眬閰嶇疆 */ +export const systemGlobalConfig: Ref<SystemGlobalConfig> = ref({} as SystemGlobalConfig); + +/** + * 鑾峰彇绯荤粺鍏ㄥ眬閰嶇疆 + * @returns + */ +export const getSystemGlobalConfig = async () => { + const res = await GetSystemGlobalConfig({ + config_key_list: ['ui.project_city'].join(','), + }); + systemGlobalConfig.value = res.values ?? {}; +}; + +const resolveWechatInfo = () => { + const url = window.location.href; + const hashParams = url.split('#')[1]; + if (!hashParams) return; + + const [path, queryString] = hashParams.split('?'); + if (!queryString) return; + + const params = new URLSearchParams(queryString); + const wxcode = params.get('wxcode'); + const isLogin = params.get('isWxLogin'); + if (!wxcode) return; + + return { wxcode, isLogin }; +}; + +export const checkWechatLogin = async (wxcode: string) => { + isShowLogin.value = false; + Local.set('isWechatLogin', true); + const loadingInstance = ElLoadingService({ + // text: '鍔犺浇涓�...', + target: '.layout-parent', + }); + const res = await PostLogin({ + weixin_code: wxcode, + }).finally(() => { + loadingInstance.close(); + }); + if (res?.json_ok) { + handleAfterLogin(res, false); + Local.remove('isWechatLogin'); + + // 浣跨敤鏂板湴鍧�鏇挎崲褰撳墠椤甸潰,绉婚櫎寰俊鐧诲綍鍙傛暟 + // const newUrl = window.location.href.split('?')[0]; + // window.history.replaceState({}, '', SERVE_URL); + window.location.href = SERVE_URL; + + // window.location.reload(); + } else { + // isShowLogin.value = true; + Local.set('wechatLoginMsgInfo', { + type: 'error', + value: res?.json_msg ?? '鐧诲綍澶辫触锛岃妫�鏌ユ槸鍚﹀凡缁戝畾寰俊', + }); + window.location.href = SERVE_URL; + } +}; + +export const handleBindWechat = async (wxcode: string) => { + const userInfo = Local.get(userInfoKey); + + const loadingInstance = ElLoadingService({ + // text: '鍔犺浇涓�...', + target: '.layout-parent', + }); + const res = await userBindingWechat({ + weixin_code: wxcode, + user_name: userInfo.userName, + }).finally(() => { + loadingInstance.close(); + }); + if (res?.json_ok) { + ElMessage.success('缁戝畾鎴愬姛'); + const userInfo = Local.get(userInfoKey); + Local.set(userInfoKey, { + ...userInfo, + isBindWechat: true, + wechatNickname:res.json_url + }); + setTimeout(() => { + window.location.href = SERVE_URL; + }, 700); + } else { + ElMessage.error(res?.json_msg ?? '缁戝畾澶辫触'); + setTimeout(() => { + window.location.href = SERVE_URL; + }, 2000); + } +}; + +export const checkWxOperate = () => { + const result = resolveWechatInfo(); + if (!result) return; + + if (result.isLogin === 'Y') { + checkWechatLogin(result.wxcode); + } else { + handleBindWechat(result.wxcode); + } +}; + + +/** + * 杩斿洖涓�涓璞★紝缁� parent 璋冪敤 + * 姝ゅ璞″寘鍚涓嚱鏁� + * @returns + */ +const childCallObj = { + /** @description 娴嬭瘯鍑芥暟 */ + test: (msg: string) => { + console.log('test 鍑芥暟鏉ヨ嚜 child', msg); + }, + execute: (obj: any) => { + console.log('execute 鍑芥暟鏉ヨ嚜 child', obj); + }, +}; +export class ParentRegister { + static notify = null; + static setRegisterFunc() { + if (!window.parent) return; + (window as any).registerNotifyFunction = (notifyFunc: any) => { + ParentRegister.notify = notifyFunc; + return childCallObj; + }; + } + + static updateChildCallObj(key:string,callback:Function) { + childCallObj[key] = callback; + } +} + + +window.callObj = childCallObj; \ No newline at end of file -- Gitblit v1.9.3