index.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252
  1. <template>
  2. <div class="main-background main-background-type0 index">
  3. <div class="nav-placeholder"></div>
  4. <div class="hero-section">
  5. <!-- 大标题区域 -->
  6. <div class="hero-header">
  7. <img src="@/assets/images/LogoIconDark.png" class="hero-logo" />
  8. <h1 class="main-title">{{TITLE}}</h1>
  9. <p class="welcome-text">欢迎您 {{authStore.userInfo?.nickname}}!</p>
  10. </div>
  11. <div class="action-buttons">
  12. <RouterLink v-if="authStore.isLogged && authStore.loginType === 1" to="/admin" class="button-link">
  13. <a-button size="large" type="primary" class="action-button">进入管理员页面</a-button>
  14. </RouterLink>
  15. <RouterLink v-else-if="authStore.isLogged" to="/inheritor" class="button-link">
  16. <a-button size="large" type="primary" class="action-button">进入非遗数字化资源信息校对</a-button>
  17. </RouterLink>
  18. <RouterLink v-else to="/login" class="button-link">
  19. <a-button size="large" type="primary" class="action-button">去登录</a-button>
  20. </RouterLink>
  21. </div>
  22. </div>
  23. <!--介绍内容区域-->
  24. <section class="main-section large small-h">
  25. <div class="content">
  26. <div class="title">
  27. <h2>平台优势</h2>
  28. </div>
  29. <div class="features-grid">
  30. <div class="feature-card">
  31. <div class="feature-icon">📸</div>
  32. <h3>数字化采集</h3>
  33. <p>高效便捷地采集闽南文化资源,支持图片、音频、视频等多种格式</p>
  34. </div>
  35. <div class="feature-card">
  36. <div class="feature-icon">📋</div>
  37. <h3>智能管理</h3>
  38. <p>系统化管理非遗项目信息,实现快速检索和数据统计分析</p>
  39. </div>
  40. <div class="feature-card">
  41. <div class="feature-icon">🔍</div>
  42. <h3>精准校对</h3>
  43. <p>专业的信息校对流程,确保数据准确性和文化传承质量</p>
  44. </div>
  45. </div>
  46. </div>
  47. </section>
  48. <!--常见问题-->
  49. <section class="main-section large small-h">
  50. <div class="content">
  51. <div class="title">
  52. <h2>常见问题</h2>
  53. </div>
  54. <a-collapse class="faq-collapse" v-model:activeKey="activeKey" accordion>
  55. <a-collapse-panel key="1" header="如何使用">
  56. <p>用户可通过注册账号登录系统,提交非遗项目,传承人,传习所信息。</p>
  57. </a-collapse-panel>
  58. <a-collapse-panel key="2" header="是免费使用的吗?">
  59. <p>是的,传承人可登录系统进行资源信息提交和修改。</p>
  60. </a-collapse-panel>
  61. <a-collapse-panel key="3" header="如果我需要帮助,可以获得支持吗?">
  62. <p>欢迎致电:18649931391 获取电话支持服务。</p>
  63. </a-collapse-panel>
  64. </a-collapse>
  65. </div>
  66. </section>
  67. </div>
  68. </template>
  69. <script setup lang="ts">
  70. import { TITLE } from '@/common/ConstStrings';
  71. import { useAuthStore } from '@/stores/auth';
  72. import { ref } from 'vue';
  73. import { RouterLink } from 'vue-router';
  74. const authStore = useAuthStore();
  75. const activeKey = ref('1');
  76. </script>
  77. <style lang="scss">
  78. @use '@/assets/scss/colors.scss' as *;
  79. .index {
  80. min-height: calc(100vh - 50px);
  81. }
  82. .hero-section {
  83. display: flex;
  84. flex-direction: column;
  85. align-items: center;
  86. justify-content: center;
  87. text-align: center;
  88. padding: 40px 20px;
  89. min-height: 80vh;
  90. }
  91. .hero-header {
  92. margin-bottom: 40px;
  93. }
  94. .hero-logo {
  95. width: 60px;
  96. height: 60px;
  97. margin-top: 64px;
  98. margin-bottom: 24px;
  99. transition: transform 0.3s ease;
  100. &:hover {
  101. transform: scale(1.05);
  102. }
  103. }
  104. .main-title {
  105. font-size: 2.8rem;
  106. font-weight: 700;
  107. color: #333;
  108. margin-bottom: 16px;
  109. letter-spacing: 1px;
  110. font-family: 'SourceHanSerifCNBold', sans-serif;
  111. }
  112. .welcome-text {
  113. font-size: 1.4rem;
  114. color: #666;
  115. margin-bottom: 32px;
  116. }
  117. .action-buttons {
  118. display: flex;
  119. gap: 20px;
  120. flex-wrap: wrap;
  121. justify-content: center;
  122. margin-bottom: 60px;
  123. }
  124. .button-link {
  125. text-decoration: none;
  126. }
  127. .action-button {
  128. padding: 12px 24px;
  129. font-size: 1.1rem;
  130. border-radius: 8px;
  131. transition: all 0.3s ease;
  132. box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  133. min-width: 200px;
  134. &:hover {
  135. transform: translateY(-3px);
  136. box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
  137. }
  138. }
  139. .features-grid {
  140. display: grid;
  141. grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  142. gap: 30px;
  143. }
  144. .feature-card {
  145. background: white;
  146. border-radius: 12px;
  147. padding: 30px;
  148. box-shadow: 0 6px 20px rgba(0, 0, 0, 0.08);
  149. transition: all 0.3s ease;
  150. h3 {
  151. text-align: center;
  152. }
  153. &:hover {
  154. transform: translateY(-5px);
  155. box-shadow: 0 10px 30px rgba(0, 0, 0, 0.12);
  156. }
  157. .feature-icon {
  158. font-size: 2.5rem;
  159. margin-bottom: 20px;
  160. height: 60px;
  161. display: flex;
  162. align-items: center;
  163. justify-content: center;
  164. }
  165. h3 {
  166. font-size: 1.3rem;
  167. color: #333;
  168. margin-bottom: 16px;
  169. font-weight: 600;
  170. }
  171. p {
  172. color: #666;
  173. line-height: 1.6;
  174. }
  175. }
  176. .faq-collapse {
  177. border-radius: 0!important;
  178. border: none!important;
  179. background-color: transparent;
  180. .ant-collapse-item {
  181. background-color: #fff!important;
  182. border-radius: 0.75rem!important;
  183. border: 1px solid #e5e7eb!important;
  184. margin-top: 1.5rem;
  185. overflow: hidden;
  186. }
  187. .ant-collapse-item-active {
  188. border-radius: 0.75rem!important;
  189. }
  190. .ant-collapse-header {
  191. display: flex;
  192. flex-direction: row;
  193. align-items: center !important;
  194. font-size: 1.125rem!important;
  195. line-height: 1.75rem!important;
  196. font-weight: 600;
  197. padding: 1.5rem !important;
  198. }
  199. .ant-collapse-content {
  200. border: none!important;
  201. padding-left: 1.5rem;
  202. padding-right: 1.5rem;
  203. font-size: 1rem!important;
  204. }
  205. .ant-collapse-content-box {
  206. padding: 0!important;
  207. }
  208. }
  209. @media (max-width: 768px) {
  210. .main-title {
  211. font-size: 2.2rem;
  212. }
  213. .welcome-text {
  214. font-size: 1.2rem;
  215. }
  216. .action-buttons {
  217. flex-direction: column;
  218. align-items: center;
  219. gap: 16px;
  220. }
  221. .hero-logo {
  222. width: 150px;
  223. height: 150px;
  224. }
  225. .features-grid {
  226. grid-template-columns: 1fr;
  227. }
  228. }
  229. </style>