index.vue 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <div class="portal">
  3. <div class="portal-head">
  4. <div class="portal-head-center">
  5. <a href="https://www.singlewindow.cn" target="_blank"><img src="@/views/auth/login/img/swLogo.png"></a>
  6. </div>
  7. </div>
  8. <div class="portal-content">
  9. <div class="portal-content-process">
  10. <img src="./process.png"/>
  11. </div>
  12. <div class="portal-content-link">
  13. <template v-for="item in portalLinkOptions">
  14. <div class="portal-content-link-item">
  15. <div class="portal-content-link-item-icon">
  16. <img :src="icons[$TOOL.dictTypeData('portal_link_icon', item.label)]"/>
  17. </div>
  18. <div class="portal-content-link-item-title" v-html="item.label"/>
  19. <div class="portal-content-link-item-to __hover" @click="toLink(item)">进入系统</div>
  20. </div>
  21. </template>
  22. </div>
  23. </div>
  24. </div>
  25. </template>
  26. <script setup>
  27. import tool from "@/utils/tool";
  28. const { proxy } = getCurrentInstance()
  29. import icon1 from './icon-1.png'
  30. import icon2 from './icon-2.png'
  31. import icon3 from './icon-3.png'
  32. const icons = {
  33. 1: icon1,
  34. 2: icon2,
  35. 3: icon3,
  36. }
  37. const portalLinkOptions = ref(tool.dictList('portal_link'))
  38. let timer = setInterval(() => {
  39. if (portalLinkOptions.value.length === 0) {
  40. portalLinkOptions.value = tool.dictList('portal_link')
  41. } else {
  42. clearInterval(timer)
  43. }
  44. }, 500)
  45. const toLink = (item) => {
  46. window.open(item.value)
  47. }
  48. </script>
  49. <style lang="less" scoped>
  50. .portal {
  51. width: 100%;
  52. height: 100%;
  53. display: flex;
  54. flex-direction: column;
  55. .portal-head {
  56. background-color: #ffffff;
  57. height: 90px;
  58. line-height: 90px;
  59. display: flex;
  60. .portal-head-center {
  61. display: flex;
  62. align-items: center;
  63. margin-left: 120px;
  64. }
  65. }
  66. .portal-content {
  67. flex: 1;
  68. padding: 14px 0 20px;
  69. overflow: hidden;
  70. background-image: url("./bg.png");
  71. background-size: 100% 100%;
  72. background-repeat: no-repeat;
  73. display: flex;
  74. flex-direction: column;
  75. align-items: center;
  76. justify-content: space-around;
  77. >div {
  78. width: 1649px;
  79. }
  80. .portal-content-process {
  81. overflow: hidden;
  82. >img {
  83. }
  84. }
  85. .portal-content-link {
  86. display: flex;
  87. justify-content: space-between;
  88. .portal-content-link-item {
  89. width: 512px;
  90. height: 150px;
  91. border-radius: 20px;
  92. position: relative;
  93. .portal-content-link-item-icon {
  94. position: absolute;
  95. left: 24px;
  96. height: 100%;
  97. >img {
  98. height: 100%;
  99. }
  100. }
  101. .portal-content-link-item-title {
  102. font-family: YouSheBiaoTiHei;
  103. font-weight: bold;
  104. font-size: 32px;
  105. line-height: 45px;
  106. text-shadow: 0px 1px 2px rgba(0,0,0,0.25);
  107. transform: skewX(-10deg);
  108. position: absolute;
  109. right: 26px;
  110. top: 22px;
  111. letter-spacing: 2px;
  112. }
  113. .portal-content-link-item-to {
  114. width: 112px;
  115. height: 45px;
  116. background: #1890FF;
  117. box-shadow: 0px 1px 2px 0px rgba(255,255,255,0.15), 0px 1px 2px 0px rgba(0,0,0,0.15);
  118. border-radius: 43px 43px 43px 43px;
  119. border: 1px solid rgba(255,255,255,0.5);
  120. display: flex;
  121. align-items: center;
  122. justify-content: center;
  123. font-family: PingFang SC, PingFang SC;
  124. font-size: 18px;
  125. color: #FFFFFF;
  126. position: absolute;
  127. right: 24px;
  128. bottom: 18px;
  129. }
  130. &:nth-child(1) {
  131. background: #E2F0FF;
  132. box-shadow: 0px 4px 4px 0px rgba(24,144,255,0.1);
  133. .portal-content-link-item-title {
  134. color: #138DFF;
  135. }
  136. .portal-content-link-item-to {
  137. background: #138DFF;
  138. }
  139. }
  140. &:nth-child(2) {
  141. background: #DFF4FF;
  142. box-shadow: 0px 4px 4px 0px rgba(141,197,223,0.3);
  143. .portal-content-link-item-title {
  144. color: #2CA3DB;
  145. }
  146. .portal-content-link-item-to {
  147. background: #2CA3DB;
  148. }
  149. }
  150. &:nth-child(3) {
  151. background: #E9EFFF;
  152. box-shadow: 0px 4px 4px 0px rgba(162,180,237,0.3);
  153. .portal-content-link-item-title {
  154. color: #5E79D0;
  155. }
  156. .portal-content-link-item-to {
  157. background: #5E79D0;
  158. }
  159. }
  160. }
  161. }
  162. }
  163. }
  164. </style>