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