main.js 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. import Vue from "vue";
  2. import App from "./App.vue";
  3. import router from "./router";
  4. import store from "./store";
  5. // import "./registerServiceWorker";
  6. import "./plugins/iview.js";
  7. import "./styles/global.css";
  8. // import "./plugins/tracking.js";
  9. // import "./plugins/face.js";
  10. import "qm-tracking/tracking.js";
  11. import "qm-tracking/face.js";
  12. import axiosPlugin from "./utils/axios";
  13. import "./utils/monitors";
  14. import MainLayout from "@/components/MainLayout/MainLayout.vue";
  15. Vue.use(axiosPlugin);
  16. Vue.config.productionTip = process.env.NODE_ENV !== "production";
  17. Vue.component("main-layout", MainLayout);
  18. if (process.env.NODE_ENV !== "production") {
  19. // 测试vue cli打包的环境变量
  20. console.log("环境检查: process.env.NODE_ENV === " + process.env.NODE_ENV);
  21. }
  22. if (process.env.NODE_ENV === "development") {
  23. console.log("非生产环境:准备自动登录");
  24. (async () => {
  25. if (window.sessionStorage.getItem("token")) {
  26. console.log("非生产环境: 已有token,自动登录");
  27. return;
  28. }
  29. console.log("非生产环境: 没有token,自动登录");
  30. const response = await fetch("/api/ecs_core/auth/login", {
  31. method: "POST",
  32. headers: {
  33. "Content-Type": "application/json;charset=UTF-8",
  34. },
  35. body: JSON.stringify({
  36. domain: process.env.VUE_APP_LOGIN_DOMAIN,
  37. accountValue: process.env.VUE_APP_LOGIN_ACCOUNT_VALUE,
  38. password: process.env.VUE_APP_LOGIN_PASSWORD,
  39. accountType: process.env.VUE_APP_LOGIN_ACCOUNTTYPE,
  40. }),
  41. });
  42. let data = await response.json();
  43. if (data.token) {
  44. window.sessionStorage.setItem("token", data.token);
  45. window.localStorage.setItem("key", data.key);
  46. window.localStorage.setItem("domain", process.env.VUE_APP_LOGIN_DOMAIN);
  47. const student = await (await fetch(
  48. "/api/ecs_core/student/getStudentInfoBySession",
  49. {
  50. method: "GET",
  51. headers: {
  52. "Content-Type": "application/json;charset=UTF-8",
  53. key: data.key,
  54. token: data.token,
  55. },
  56. }
  57. )).json();
  58. const user = { ...data, ...student };
  59. window.localStorage.setItem("user-for-reload", JSON.stringify(user));
  60. } else {
  61. console.log(data.desc);
  62. }
  63. })();
  64. }
  65. Vue.mixin({
  66. beforeCreate() {
  67. if (document.getElementById("app-placeholder"))
  68. document.getElementById("app-placeholder").remove();
  69. },
  70. mounted() {
  71. // console.log("mixin hook called");
  72. [...document.getElementsByTagName("a")].forEach(e => {
  73. e.addEventListener("click", function(event) {
  74. event.preventDefault();
  75. });
  76. });
  77. },
  78. methods: {
  79. async serverLog(level, logText) {
  80. try {
  81. await this.$http.post(
  82. "/api/ecs_core/log/studentClient/" + level,
  83. logText,
  84. {
  85. headers: {
  86. "Content-Type": "text/plain",
  87. },
  88. }
  89. );
  90. } catch (error) {
  91. console.log(error);
  92. }
  93. },
  94. logout(cause = "") {
  95. localStorage.removeItem("phoneVerified");
  96. window._hmt.push(["_trackEvent", "退出", cause]);
  97. this.$router.push("/login/" + localStorage.getItem("domain") + cause);
  98. },
  99. },
  100. });
  101. if (
  102. process.env.NODE_ENV === "development" &&
  103. process.env.VUE_APP_ENABLE_VUE_RENDER_LOGS === "true"
  104. ) {
  105. require("./plugins/vueLifecylceLogs");
  106. }
  107. new Vue({
  108. router,
  109. store,
  110. render: h => h(App),
  111. }).$mount("#app");