Browse Source

全局参数设置

liushengqiang 1 year ago
parent
commit
d2bf732266

+ 12 - 17
src/helpers/communication.ts

@@ -1,20 +1,15 @@
-import { browser } from "../utils";
+import { storeData } from "../store";
 import { CallBack, IPostMessage, listenerMessage, postMessage, promisefiyPostMessage, removeListenerMessage } from "../utils/native-message";
 
-let isApp = (): boolean => {
-	const browserInfo = browser();
-	isApp = () => browserInfo.isApp;
-	return isApp();
-};
 /**获取耳机的插入状态 */
 export const getEarphone = (): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "isWiredHeadsetOn" });
 };
 
 /** 获取异形屏信息 */
 export const isSpecialShapedScreen = (): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "isSpecialShapedScreen" });
 };
 
@@ -43,12 +38,12 @@ export const endSoundCheck = () => {
 
 /** 开始评测 */
 export const startEvaluating = (content: any): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "startEvaluating", content: content });
 };
 /** 结束评测 */
 export const endEvaluating = (content: any): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "endEvaluating", content: content });
 };
 /** 取消评测 */
@@ -60,43 +55,43 @@ export const cancelEvaluating = () => {
 
 /** 评测开始录音 */
 export const startRecording = (): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "startRecording" });
 };
 
 /** 和websocket通信 */
 export const api_proxyServiceMessage = (content: any): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "proxyServiceMessage", content });
 };
 
 /** 上传评测 音 视频 */
 export const api_videoUpdate = () => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "videoUpdate" });
 };
 
 /** 分享 */
 export const api_shareAchievements = (content: any): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "shareAchievements", content });
 };
 
 /** openwebview */
 export const api_openWebView = (content: any): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "openWebView", content });
 };
 
 /** 开启摄像头 */
 export const api_openCamera = (): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "openCamera" });
 };
 
 /** 关闭摄像头 */
 export const api_closeCamera = (): Promise<IPostMessage | undefined> => {
-	if (!isApp()) return Promise.resolve({} as any);
+	if (!storeData.isApp) return Promise.resolve({} as any);
 	return promisefiyPostMessage({ api: "closeCamera" });
 };
 

+ 17 - 16
src/page-colexiu/main.ts

@@ -1,22 +1,23 @@
-import 'vant/lib/index.css'
+import "vant/lib/index.css";
 import "@varlet/ui/es/popup/style/index";
 import "@varlet/ui/es/snackbar/style/index";
 import "@varlet/ui/es/cell/style/index";
 import "@varlet/ui/es/switch/style/index";
-import { createApp } from 'vue'
-import { getRequestHostname } from '../constant/whiteUrl'
-import { initStore } from '../store'
-import '../style.css'
-import App from './App'
-import router from './router'
-import './theme.css'
+import { createApp } from "vue";
+import { setStoreData, storeData } from "../store";
+import "../style.css";
+import App from "./App";
+import router from "./router";
+import "./theme.css";
 
-const platformApi = getRequestHostname()
-initStore({
-    platformApi: platformApi,
-    platformType: platformApi === '/api-student' ? 'STUDENT' : platformApi === '/api-teacher' ? 'TEACHER' : 'WEB',
-    proxy: import.meta.env.DEV ? '/colexiu' : '',
-})
+(function () {
+	const u = navigator.userAgent;
+	setStoreData({
+		isApp: u.includes("COLEXIUTEACHER") || u.includes("COLEXIUSTUDENT"),
+		platformApi: u.includes("COLEXIUTEACHER") ? "/api-teacher" : "/api-student",
+		platformType: u.includes("COLEXIUTEACHER") ? "TEACHER" : "STUDENT",
+		proxy: import.meta.env.DEV ? "/colexiu" : ""
+	});
+})();
 
-createApp(App).use(router)
-.mount('#app')
+createApp(App).use(router).mount("#app");

+ 2 - 2
src/page-colexiu/theme.css

@@ -1,6 +1,6 @@
 :root {
-    --van-primary-color: #01c1b5;
-    --color-primary    : #01c1b5;
+    --van-primary-color: #2dc7aa;
+    --color-primary    : #2dc7aa;
 }
 
 .vf-StaveSection {

+ 20 - 16
src/page-gym/main.ts

@@ -1,22 +1,26 @@
-import 'vant/lib/index.css'
+import "vant/lib/index.css";
 import "@varlet/ui/es/popup/style/index";
 import "@varlet/ui/es/snackbar/style/index";
 import "@varlet/ui/es/cell/style/index";
 import "@varlet/ui/es/switch/style/index";
-import { createApp } from 'vue'
-import { getRequestHostname } from '../constant/whiteUrl'
-import { initStore } from '../store'
-import '../style.css'
-import App from './App'
-import router from './router'
-import './theme.css'
+import "../style.css";
+import "./theme.css";
+import { createApp } from "vue";
+import App from "./App";
+import router from "./router";
+import { setStoreData } from "../store";
 
-const platformApi = getRequestHostname()
-initStore({
-    platformApi: platformApi,
-    platformType: platformApi === '/api-student' ? 'STUDENT' : platformApi === '/api-teacher' ? 'TEACHER' : 'WEB',
-    proxy: import.meta.env.DEV ? '/gym' : '',
-})
+(function () {
+	const u = navigator.userAgent;
+	const blank = ["mteadev.dayaedu.com", "mteatest.dayaedu.com", "mteaonline.dayaedu.com"];
+	const webBlank = ["mandev.dayaedu.com", "mantest.dayaedu.com", "manonline.dayaedu.com"];
+	const platformApi = blank.includes(location.hostname) ? "/api-teacher" : webBlank.includes(location.hostname) ? "/api-web" : "/api-student";
+	setStoreData({
+		isApp: u.includes("DAYAAPPA") || u.includes("DAYAAPPI"),
+		platformApi,
+		platformType: platformApi === "/api-student" ? "STUDENT" : platformApi === "/api-teacher" ? "TEACHER" : "WEB",
+		proxy: import.meta.env.DEV ? "/gym" : "",
+	});
+})();
 
-createApp(App).use(router)
-.mount('#app')
+createApp(App).use(router).mount("#app");

+ 11 - 2
src/store.ts

@@ -13,7 +13,14 @@ type IUser = {
 type IStatus = "init" | "login" | "logout" | "error";
 type IPlatformType = "STUDENT" | "TEACHER" | "WEB";
 type IPlatformApi = "/api-student" | "/api-teacher" | "/api-web";
-type IProxy = "/gym" | "/colexiu" | "/orchestra";
+type IProxy = "" | "/gym" | "/colexiu" | "/orchestra";
+
+export interface IStoreData {
+	platformType: IPlatformType
+	platformApi: IPlatformApi
+	proxy: IProxy
+	isApp: boolean
+}
 
 export const storeData = reactive({
 	status: "init" as IStatus,
@@ -25,10 +32,12 @@ export const storeData = reactive({
 	platformApi: "/api-student" as IPlatformApi,
 	/** 开发模式api前缀 */
 	proxy: "" as IProxy,
+	/** 是否在APP中 */
+	isApp: false, //
 });
 
 /** 初始化 */
-export const initStore = <storeData>(data: storeData) => {
+export const setStoreData = (data: IStoreData) => {
 	Object.assign(storeData, data);
 };
 

+ 3 - 4
src/utils/index.ts

@@ -1,7 +1,6 @@
 /** 获取浏览器信息 */
 export const browser = () => {
 	const u = navigator.userAgent;
-	// console.log("🚀 ~ u:", u)
 	return {
 		trident: u.indexOf("Trident") > -1, //IE内核
 		presto: u.indexOf("Presto") > -1, //opera内核
@@ -11,9 +10,9 @@ export const browser = () => {
 		ios: !!u.match(/Mac OS X/) || /(iPhone|iPad|iPod|iOS)/i.test(u), //ios终端
 		android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,   //判断是否是 android终端
 		iPhone: u.indexOf("ORCHESTRAAPPI") > -1, //是否为iPhone或者QQHD浏览器
-		isApp: u.indexOf('DAYAAPPA') > -1 || u.indexOf('DAYAAPPI') > -1 || u.indexOf("ORCHESTRAAPPI") > -1 || u.indexOf("ORCHESTRAAPPA") > -1,
-		isTeacher: u.indexOf("ORCHESTRATEACHER") > -1,
-		isStudent: u.indexOf("ORCHESTRASTUDENT") > -1,
+		isApp: u.includes('DAYAAPPA') || u.includes('DAYAAPPI') || u.includes('COLEXIUAPPA') || u.includes('COLEXIUAPPI') || u.includes("ORCHESTRAAPPI") || u.includes("ORCHESTRAAPPA"),
+		isTeacher: u.indexOf("ORCHESTRATEACHER") > -1 || u.includes('COLEXIUTEACHER'),
+		isStudent: u.indexOf("ORCHESTRASTUDENT") > -1 || u.includes('COLEXIUSTUDENT'),
 		isSchool: u.indexOf("ORCHESTRASCHOOL") > -1,
 		iPad: u.indexOf("iPad") > -1, //是否iPad
 		webApp: u.indexOf("Safari") == -1, //是否web应该程序,没有头部与底部

+ 1 - 1
src/utils/native-message.ts

@@ -65,7 +65,7 @@ if (browserInfo.isApp) {
   })
 }
 
-const instance: any = (window as any).DAYA || (window as any).webkit?.messageHandlers?.DAYA
+const instance: any = (window as any).DAYA || (window as any).webkit?.messageHandlers?.DAYA || (window as any).COLEXIU || (window as any).webkit?.messageHandlers?.COLEXIU || (window as any).ORCHESTRA || (window as any).webkit?.messageHandlers?.ORCHESTRA
 
 export const postMessage = (data: IPostMessage, callback?: CallBack) => {
   if (browserInfo.isApp) {