UserLayout.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <div id="userLayout" :class="['user-layout-wrapper', isMobile && 'mobile']">
  3. <div class="container">
  4. <div class="top">
  5. <div class="header">
  6. <a href="/">
  7. <img src="~@/assets/logo.png" class="logo" alt="logo">
  8. <span class="title">两江消防车辆联网系统</span>
  9. </a>
  10. </div>
  11. <div class="desc">
  12. 基于SpringBoot,Spring Security,JWT,Vue 的前后端分离权限管理系统
  13. </div>
  14. </div>
  15. <router-view />
  16. <div class="footer">
  17. <div class="links">
  18. <a href="https://github.com/fuzui/RuoYi-Antdv" target="_blank">帮助</a>
  19. <a href="https://github.com/fuzui/RuoYi-Antdv" target="_blank">隐私</a>
  20. <a href="https://github.com/fuzui/RuoYi-Antdv" target="_blank">条款</a>
  21. </div>
  22. <div class="copyright">
  23. Copyright &copy; 2022 <a href="https://github.com/fuzui/RuoYi-Antdv" target="_blank">RuoYi-Antdv</a><br/>
  24. </div>
  25. <a-space size="large"></a-space>
  26. </div>
  27. </div>
  28. </div>
  29. </template>
  30. <script>
  31. import { deviceMixin } from '@/store/device-mixin'
  32. export default {
  33. name: 'UserLayout',
  34. mixins: [deviceMixin],
  35. mounted () {
  36. document.body.classList.add('userLayout')
  37. },
  38. beforeDestroy () {
  39. document.body.classList.remove('userLayout')
  40. }
  41. }
  42. </script>
  43. <style lang="less" scoped>
  44. #userLayout.user-layout-wrapper {
  45. height: 100%;
  46. &.mobile {
  47. .container {
  48. .main {
  49. max-width: 368px;
  50. width: 98%;
  51. }
  52. }
  53. }
  54. .container {
  55. width: 100%;
  56. min-height: 100%;
  57. background: #f0f2f5 url(~@/assets/background.svg) no-repeat 50%;
  58. background-size: 100%;
  59. padding: 110px 0 144px;
  60. position: relative;
  61. a {
  62. text-decoration: none;
  63. }
  64. .top {
  65. text-align: center;
  66. .header {
  67. height: 44px;
  68. line-height: 44px;
  69. .badge {
  70. position: absolute;
  71. display: inline-block;
  72. line-height: 1;
  73. vertical-align: middle;
  74. margin-left: -12px;
  75. margin-top: -10px;
  76. opacity: 0.8;
  77. }
  78. .logo {
  79. height: 44px;
  80. vertical-align: top;
  81. margin-right: 16px;
  82. border-style: none;
  83. }
  84. .title {
  85. font-size: 33px;
  86. color: rgba(0, 0, 0, .85);
  87. font-family: Avenir, 'Helvetica Neue', Arial, Helvetica, sans-serif;
  88. font-weight: 600;
  89. position: relative;
  90. top: 2px;
  91. }
  92. }
  93. .desc {
  94. font-size: 14px;
  95. color: rgba(0, 0, 0, 0.45);
  96. margin-top: 12px;
  97. margin-bottom: 40px;
  98. }
  99. }
  100. .main {
  101. min-width: 260px;
  102. width: 368px;
  103. margin: 0 auto;
  104. }
  105. .footer {
  106. position: absolute;
  107. width: 100%;
  108. bottom: 0;
  109. padding: 0 16px;
  110. margin: 48px 0 24px;
  111. text-align: center;
  112. .links {
  113. margin-bottom: 8px;
  114. font-size: 14px;
  115. a {
  116. color: rgba(0, 0, 0, 0.45);
  117. transition: all 0.3s;
  118. &:not(:last-child) {
  119. margin-right: 40px;
  120. }
  121. }
  122. }
  123. .copyright {
  124. color: rgba(0, 0, 0, 0.45);
  125. font-size: 14px;
  126. }
  127. }
  128. }
  129. }
  130. </style>