index.vue 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  1. <script lang="ts" setup>
  2. import type {
  3. WorkbenchProjectItem,
  4. WorkbenchQuickNavItem,
  5. WorkbenchTodoItem,
  6. WorkbenchTrendItem,
  7. } from '@vben/common-ui';
  8. import { ref } from 'vue';
  9. import {
  10. AnalysisChartCard,
  11. WorkbenchHeader,
  12. WorkbenchProject,
  13. WorkbenchQuickNav,
  14. WorkbenchTodo,
  15. WorkbenchTrends,
  16. } from '@vben/common-ui';
  17. import { preferences } from '@vben-core/preferences';
  18. import { useAccessStore } from '#/store';
  19. import AnalyticsVisitsSource from '../analytics/analytics-visits-source.vue';
  20. defineOptions({ name: 'Workspace' });
  21. const accessStore = useAccessStore();
  22. const projectItems: WorkbenchProjectItem[] = [
  23. {
  24. color: '',
  25. content: '不要等待机会,而要创造机会。',
  26. date: '2021-04-01',
  27. group: '开源组',
  28. icon: 'carbon:logo-github',
  29. title: 'Github',
  30. },
  31. {
  32. color: '#3fb27f',
  33. content: '现在的你决定将来的你。',
  34. date: '2021-04-01',
  35. group: '算法组',
  36. icon: 'ion:logo-vue',
  37. title: 'Vue',
  38. },
  39. {
  40. color: '#e18525',
  41. content: '没有什么才能比努力更重要。',
  42. date: '2021-04-01',
  43. group: '上班摸鱼',
  44. icon: 'ion:logo-html5',
  45. title: 'Html5',
  46. },
  47. {
  48. color: '#bf0c2c',
  49. content: '热情和欲望可以突破一切难关。',
  50. date: '2021-04-01',
  51. group: 'UI',
  52. icon: 'ion:logo-angular',
  53. title: 'Angular',
  54. },
  55. {
  56. color: '#00d8ff',
  57. content: '健康的身体是实现目标的基石。',
  58. date: '2021-04-01',
  59. group: '技术牛',
  60. icon: 'bx:bxl-react',
  61. title: 'React',
  62. },
  63. {
  64. color: '#EBD94E',
  65. content: '路是走出来的,而不是空想出来的。',
  66. date: '2021-04-01',
  67. group: '架构组',
  68. icon: 'ion:logo-javascript',
  69. title: 'Js',
  70. },
  71. ];
  72. const quickNavItems: WorkbenchQuickNavItem[] = [
  73. {
  74. color: '#1fdaca',
  75. icon: 'ion:home-outline',
  76. title: '首页',
  77. },
  78. {
  79. color: '#bf0c2c',
  80. icon: 'ion:grid-outline',
  81. title: '仪表盘',
  82. },
  83. {
  84. color: '#e18525',
  85. icon: 'ion:layers-outline',
  86. title: '组件',
  87. },
  88. {
  89. color: '#3fb27f',
  90. icon: 'ion:settings-outline',
  91. title: '系统管理',
  92. },
  93. {
  94. color: '#4daf1bc9',
  95. icon: 'ion:key-outline',
  96. title: '权限管理',
  97. },
  98. {
  99. color: '#00d8ff',
  100. icon: 'ion:bar-chart-outline',
  101. title: '图表',
  102. },
  103. ];
  104. const todoItems = ref<WorkbenchTodoItem[]>([
  105. {
  106. completed: false,
  107. content: `审查最近提交到Git仓库的前端代码,确保代码质量和规范。`,
  108. date: '2024-07-30 11:00:00',
  109. title: '审查前端代码提交',
  110. },
  111. {
  112. completed: true,
  113. content: `检查并优化系统性能,降低CPU使用率。`,
  114. date: '2024-07-30 11:00:00',
  115. title: '系统性能优化',
  116. },
  117. {
  118. completed: false,
  119. content: `进行系统安全检查,确保没有安全漏洞或未授权的访问。 `,
  120. date: '2024-07-30 11:00:00',
  121. title: '安全检查',
  122. },
  123. {
  124. completed: false,
  125. content: `更新项目中的所有npm依赖包,确保使用最新版本。`,
  126. date: '2024-07-30 11:00:00',
  127. title: '更新项目依赖',
  128. },
  129. {
  130. completed: false,
  131. content: `修复用户报告的页面UI显示问题,确保在不同浏览器中显示一致。 `,
  132. date: '2024-07-30 11:00:00',
  133. title: '修复UI显示问题',
  134. },
  135. ]);
  136. const trendItems: WorkbenchTrendItem[] = [
  137. {
  138. avatar: 'svg:avatar-1',
  139. content: `在 <a>开源组</a> 创建了项目 <a>Vue</a>`,
  140. date: '刚刚',
  141. title: '威廉',
  142. },
  143. {
  144. avatar: 'svg:avatar-2',
  145. content: `关注了 <a>威廉</a> `,
  146. date: '1个小时前',
  147. title: '艾文',
  148. },
  149. {
  150. avatar: 'svg:avatar-3',
  151. content: `发布了 <a>个人动态</a> `,
  152. date: '1天前',
  153. title: '克里斯',
  154. },
  155. {
  156. avatar: 'svg:avatar-4',
  157. content: `发表文章 <a>如何编写一个Vite插件</a> `,
  158. date: '2天前',
  159. title: 'Vben',
  160. },
  161. {
  162. avatar: 'svg:avatar-1',
  163. content: `回复了 <a>杰克</a> 的问题 <a>如何进行项目优化?</a>`,
  164. date: '3天前',
  165. title: '皮特',
  166. },
  167. {
  168. avatar: 'svg:avatar-2',
  169. content: `关闭了问题 <a>如何运行项目</a> `,
  170. date: '1周前',
  171. title: '杰克',
  172. },
  173. {
  174. avatar: 'svg:avatar-3',
  175. content: `发布了 <a>个人动态</a> `,
  176. date: '1周前',
  177. title: '威廉',
  178. },
  179. {
  180. avatar: 'svg:avatar-4',
  181. content: `推送了代码到 <a>Github</a>`,
  182. date: '2021-04-01 20:00',
  183. title: '威廉',
  184. },
  185. {
  186. avatar: 'svg:avatar-4',
  187. content: `发表文章 <a>如何编写使用 Admin Vben</a> `,
  188. date: '2021-03-01 20:00',
  189. title: 'Vben',
  190. },
  191. ];
  192. </script>
  193. <template>
  194. <div class="p-5">
  195. <WorkbenchHeader
  196. :avatar="accessStore.userInfo?.avatar || preferences.app.defaultAvatar"
  197. >
  198. <template #title>
  199. 早安, {{ accessStore.userInfo?.realName }}, 开始您一天的工作吧!
  200. </template>
  201. <template #description> 今日晴,20℃ - 32℃! </template>
  202. </WorkbenchHeader>
  203. <div class="mt-5 flex flex-col lg:flex-row">
  204. <div class="mr-4 w-full lg:w-3/5">
  205. <WorkbenchProject :items="projectItems" title="项目" />
  206. <WorkbenchTrends :items="trendItems" class="mt-5" title="最新动态" />
  207. </div>
  208. <div class="w-full lg:w-2/5">
  209. <WorkbenchQuickNav :items="quickNavItems" title="快捷导航" />
  210. <WorkbenchTodo :items="todoItems" class="mt-5" title="待办事项" />
  211. <AnalysisChartCard class="mt-5" title="访问来源">
  212. <AnalyticsVisitsSource />
  213. </AnalysisChartCard>
  214. </div>
  215. </div>
  216. </div>
  217. </template>