3 Коміти 14b571716f ... de697d1529

Автор SHA1 Опис Дата
  cc12458 de697d1529 添加 nav 和 copyright 等 URLSearchParams 参数配置 1 місяць тому
  cc12458 af28dd5b0d 添加 debug 功能 1 місяць тому
  cc12458 7916e44a9e 优化 WeChat 环境判断 1 місяць тому

+ 3 - 0
package.json

@@ -26,6 +26,9 @@
     "ant-design-x-vue": "^1.3.2",
     "core-js": "^3.45.1",
     "eruda": "^3.4.3",
+    "eruda-features": "^2.1.0",
+    "eruda-monitor": "^1.1.2",
+    "eruda-timing": "^2.0.1",
     "markdown-it": "^14.1.0",
     "pinia": "^3.0.3",
     "pinia-plugin-persistedstate": "^4.5.0",

+ 24 - 0
pnpm-lock.yaml

@@ -32,6 +32,15 @@ importers:
       eruda:
         specifier: ^3.4.3
         version: 3.4.3
+      eruda-features:
+        specifier: ^2.1.0
+        version: 2.1.0
+      eruda-monitor:
+        specifier: ^1.1.2
+        version: 1.1.2
+      eruda-timing:
+        specifier: ^2.0.1
+        version: 2.0.1
       markdown-it:
         specifier: ^14.1.0
         version: 14.1.0
@@ -1190,6 +1199,15 @@ packages:
   error-stack-parser-es@1.0.5:
     resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==}
 
+  eruda-features@2.1.0:
+    resolution: {integrity: sha512-RKrI0GDZqeUGeRWPFodsIuxxCU9j0t1LqIe601cQ+ZLyxA4TH8VRRQWNZjvnT6O2XS7TnlXVh0xPD2eJTiXFzQ==}
+
+  eruda-monitor@1.1.2:
+    resolution: {integrity: sha512-mAwMp600gd+4HOnub6FbNmAqGNuadIQv03UyqCCPcpIBWjLj/62PRGr720lBJffQ5G6HKfRVanhslw6hfj+nbA==}
+
+  eruda-timing@2.0.1:
+    resolution: {integrity: sha512-68Cir2pjgw4kkamabhZMrn00uuGt9uTltAflzGQhr6yeG2nB+dRXFEn2whJGvwinBA9GKMpselsH529LNWKJIw==}
+
   eruda@3.4.3:
     resolution: {integrity: sha512-J2TsF4dXSspOXev5bJ6mljv0dRrxj21wklrDzbvPmYaEmVoC+2psylyRi70nUPFh1mTQfIBsSusUtAMZtUN+/w==}
 
@@ -3435,6 +3453,12 @@ snapshots:
 
   error-stack-parser-es@1.0.5: {}
 
+  eruda-features@2.1.0: {}
+
+  eruda-monitor@1.1.2: {}
+
+  eruda-timing@2.0.1: {}
+
   eruda@3.4.3: {}
 
   escalade@3.2.0: {}

+ 19 - 0
src/loader/debug.ts

@@ -0,0 +1,19 @@
+// eslint-disable-next-line @typescript-eslint/ban-ts-comment
+// @ts-nocheck
+import { getURLSearchParams } from '@/tools';
+
+let loaded = false;
+export default async function debug(enabled = false) {
+  if (loaded) return;
+  if (enabled || getURLSearchParams().has('debug')) {
+    const { default: eruda } = await import('eruda');
+    const { default: erudaMonitor } = await import('eruda-monitor');
+    const { default: erudaFeatures } = await import('eruda-features');
+    const { default: erudaTiming } = await import('eruda-timing');
+    eruda.init();
+    eruda.add(erudaMonitor);
+    eruda.add(erudaFeatures);
+    eruda.add(erudaTiming);
+    loaded = true;
+  }
+}

+ 2 - 0
src/loader/index.ts

@@ -1,8 +1,10 @@
 import { type Component, createApp } from 'vue';
 import router from '@/router';
 import pinia from '@/stores';
+import debug from './debug';
 
 export default async function loader(component: Component) {
+  await debug();
   const app = createApp(component);
   app.use(router);
   app.use(pinia);

+ 3 - 3
src/modules/chat/HospitalGuide.vue

@@ -32,8 +32,8 @@ tryOnBeforeMount(() => {
     navProps.leftArrow = true;
     navProps.leftText = '返回';
     searchParams.delete('back');
-  }
-  if (isWechat()) navProps.show = false;
+  } else if (isWechat()) navProps.show = false;
+  if (searchParams.has('hide-nav')) navProps.show = false;
   register(searchParams);
 });
 
@@ -133,7 +133,7 @@ const { send: register } = useRequest(guideRegisterSessionMethod, { immediate: f
 
 <template>
   <chart-messages class="hospital-guide-wrapper" ref="chat-messages">
-    <template #chat-header>
+    <template #chat-header v-if="navProps.show">
       <van-nav-bar v-bind="navProps" @click-left="back()" />
     </template>
   </chart-messages>

+ 35 - 0
src/modules/chat/components/Copyright.vue

@@ -0,0 +1,35 @@
+<script setup lang="ts">
+import { tryOnBeforeMount, useCounter } from '@vueuse/core';
+import debug from '@/loader/debug.ts';
+import { getURLSearchParams } from '@/tools';
+
+let timer: ReturnType<typeof setTimeout>;
+
+const { count, inc, reset } = useCounter();
+const handle = () => {
+  inc();
+  if (count.value >= 10) debug(true);
+  clearTimeout(timer);
+  timer = setTimeout(() => reset(0), 1000);
+};
+
+const copyright = ref('杭州六智科技提供技术支持');
+tryOnBeforeMount(() => {
+  const searchParams = getURLSearchParams();
+  if (searchParams.has('copyright')) copyright.value = searchParams.get('copyright')!;
+});
+</script>
+
+<template>
+  <div class="copyright" v-if="!!copyright" @click="handle">{{ copyright }}</div>
+</template>
+
+<style scoped lang="scss">
+.copyright {
+  padding: 8px 0 4px;
+  font-size: 12px;
+  text-align: center;
+  color: #999;
+  letter-spacing: 2px;
+}
+</style>

+ 3 - 9
src/modules/chat/components/Messages.vue

@@ -3,6 +3,8 @@ import { useScroll } from '@vueuse/core';
 import { BubbleList } from 'ant-design-x-vue';
 import { useMessages } from '@/modules/chat/composables';
 
+import Copyright from './Copyright.vue';
+
 defineOptions({
   name: 'ChartMessages',
 });
@@ -31,7 +33,7 @@ const onClickMessage = (event: PointerEvent) => {
       <slot name="chat-footer">
         <component :is="sender"></component>
       </slot>
-      <div class="copyright">杭州六智科技提供技术支持</div>
+      <copyright />
     </footer>
   </div>
 </template>
@@ -85,12 +87,4 @@ $p: 12px;
     }
   }
 }
-
-.copyright {
-  padding: 8px 0 4px;
-  font-size: 12px;
-  text-align: center;
-  color: #999;
-  letter-spacing: 2px;
-}
 </style>

+ 7 - 3
src/tools/url.ts

@@ -10,12 +10,16 @@ export function getClientURL(value: string, origin?: string) {
 }
 
 export function isFrameOpen() {
-  return window.parent !== window
+  return window.parent !== window;
 }
 
 export function isWechat() {
-  const userAgent = navigator.userAgent;
-  return userAgent.indexOf('miniprogram') > -1 && ( userAgent.indexOf('wx') || userAgent.indexOf('wechat') );
+  const userAgent = navigator.userAgent.toLowerCase();
+  return userAgent.includes('wx') || userAgent.includes('wechat') || userAgent.includes('micromessenger');
+}
+
+export function isWechatMiniprogram() {
+  return isWechat() && navigator.userAgent.toLowerCase().includes('miniprogram');
 }
 
 export function getBackReferrerUrl() {