Layout.vue 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <template>
  2. <div class="home layout">
  3. <div class="home-head">
  4. <div class="head-logo"></div>
  5. <div class="head-actions">
  6. <span class="action-icon action-min" title="最小化" @click="minWin">
  7. </span>
  8. <span class="action-icon action-close" title="关闭" @click="close">
  9. </span>
  10. </div>
  11. </div>
  12. <div class="home-body">
  13. <router-view />
  14. </div>
  15. <div v-if="showFooter" class="home-footer">
  16. <div class="home-footer-ip">
  17. <i class="el-icon-monitor"></i><span>{{ domain || "0.0.0.0" }}</span>
  18. </div>
  19. <div v-if="isDev">
  20. <router-link :to="{ name: 'MagickTest' }"
  21. ><span>功能测试</span></router-link
  22. >
  23. </div>
  24. <div class="home-footer-version">版本号:{{ version }}</div>
  25. </div>
  26. </div>
  27. </template>
  28. <script>
  29. const { ipcRenderer } = window.nodeRequire("electron");
  30. export default {
  31. name: "layout",
  32. props: {
  33. backHandle: {
  34. type: Function,
  35. },
  36. showFooter: {
  37. type: Boolean,
  38. default: false,
  39. },
  40. },
  41. data() {
  42. return {
  43. isDev: process.env.NODE_ENV === "development",
  44. version: "1.0.4",
  45. };
  46. },
  47. computed: {
  48. domain() {
  49. return this.$store.state.domain;
  50. },
  51. },
  52. methods: {
  53. toBack() {
  54. if (this.backHandle && typeof this.backHandle === "function") {
  55. this.backHandle();
  56. } else {
  57. window.history.go(-1);
  58. }
  59. },
  60. minWin() {
  61. ipcRenderer.send("minimize-window");
  62. },
  63. maxWin() {
  64. ipcRenderer.send("maximize-window");
  65. },
  66. close() {
  67. this.$confirm("确认要退出系统吗?", "提示", {
  68. type: "warning",
  69. })
  70. .then(() => {
  71. ipcRenderer.send("close-window");
  72. })
  73. .catch(() => {});
  74. },
  75. },
  76. };
  77. </script>