main.ts 2.25 KB
/*
 * @Author: 赵丽婷
 * @Date: 2025-11-10 10:30:43
 * @LastEditors: 赵丽婷
 * @LastEditTime: 2025-12-16 18:26:49
 * @FilePath: \LinkMed\linkmed-vue3\src\main.ts
 * @Description:
 * Copyright (c) 2025 by 北京连心医疗科技有限公司, All Rights Reserved.
 */
import { createApp } from "vue";
import { createPinia } from "pinia";
import App from "./App.vue";
import router from "./router/index";
import i18n from "./locales/index";
import { setupMockInterceptors } from "./api/mock";
// import TDesignChat from "@tdesign-vue-next/chat"; // 引入 TDesign Chat 组件

// 引入样式
import "element-plus/dist/index.css"; // Element Plus 样式(如果使用按需导入,会自动注入)
import "@fortawesome/fontawesome-free/css/all.css"; // Font Awesome 图标
// import "@umoteam/editor/style"; // Umo Editor 样式
import "./assets/styles/main.scss"; // 自定义样式
import "./assets/styles/global.css"; // 全局样式(包含主题、重置、表格样式等)
// import "@tdesign-vue-next/chat/es/style/index.css"; // TDesign Chat 组件样式
// import "tdesign-vue-next/es/style/index.css"; // TDesign 全局样式变量
// import "katex/dist/katex.min.css"; // KaTeX 数学公式样式(仅样式,不引入 JS)

// 启用 Mock API(开发环境)
setupMockInterceptors();

// 手机端同比例缩放逻辑
const handleMobileScaling = () => {
  const deviceWidth = window.screen.width;
  // 定义手机端的判定阈值(通常小于 600px 视为手机)
  if (deviceWidth < 600) {
    const designWidth = 1024; // 以平板的最小宽度作为缩放基准
    const scale = deviceWidth / designWidth;
    const viewport = document.getElementById("viewport");
    if (viewport) {
      // 强制设置视口宽度为基准宽度,并设置初始缩放比例
      viewport.setAttribute(
        "content",
        `width=${designWidth}, initial-scale=${scale}, minimum-scale=${scale}, maximum-scale=${scale}, user-scalable=no`
      );
    }
  }
};

handleMobileScaling();

const app = createApp(App);
const pinia = createPinia();

// 使用插件
app.use(pinia);
app.use(router);
app.use(i18n);
// app.use(TDesignChat); // 注册 TDesign Chat 组件

// 全局属性挂载(如果需要)
// app.config.globalProperties.$http = axios

app.mount("#app");