index.vue 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <div class="home-container">
  3. <el-row :gutter="20">
  4. <el-col :span="24">
  5. <el-card>
  6. <p class="card-title">快捷菜单</p>
  7. <panel-group />
  8. </el-card>
  9. </el-col>
  10. <el-col :xs="24" :sm="12" :md="13" :lg="10">
  11. <el-card class="card-group">
  12. <p class="card-title">待办事项</p>
  13. <el-row :gutter="20">
  14. <el-col :xs="24" :sm="24" :md="12" :lg="12" v-for="(v,i) in dataList" :key="i">
  15. <div class="card-panel" >
  16. <div class="card-panel-icon-wrapper icon-people">
  17. <svg-icon icon-class="peoples" class-name="card-panel-icon" />
  18. <div class="card-icon-text">
  19. {{v.taskTypeText}}
  20. </div>
  21. </div>
  22. <div class="card-panel-description">
  23. <div class="card-panel-text">
  24. {{v.statusText}}
  25. </div>
  26. <count-to :start-val="0" :end-val="v.nums" :duration="3000" class="card-panel-num" />
  27. </div>
  28. </div>
  29. </el-col>
  30. </el-row>
  31. </el-card>
  32. </el-col>
  33. <el-col :xs="24" :sm="12" :md="11" :lg="14">
  34. <el-card class="chart-wrapper">
  35. <p class="card-title">其他</p>
  36. <el-tabs type="border-card">
  37. <el-tab-pane label="通知公告">通知公告</el-tab-pane>
  38. <el-tab-pane label="知识库">知识库</el-tab-pane>
  39. </el-tabs>
  40. </el-card>
  41. </el-col>
  42. </el-row>
  43. </div>
  44. </template>
  45. <script>
  46. import PanelGroup from './dashboard/PanelGroup'
  47. import CountTo from 'vue-count-to'
  48. import {homeData} from '../api/login'
  49. export default {
  50. name: 'Index',
  51. components: {
  52. PanelGroup,
  53. CountTo
  54. },
  55. data() {
  56. return {
  57. dataList:[],
  58. }
  59. },
  60. mounted(){
  61. this.getData();
  62. },
  63. methods: {
  64. getData(){
  65. homeData().then(res=>{
  66. this.dataList = res.data;
  67. })
  68. }
  69. }
  70. }
  71. </script>
  72. <style lang="scss">
  73. .home-container{
  74. .el-card__body{
  75. padding: 10px 20px 20px 20px;
  76. }
  77. .card-group{
  78. .el-card__body {
  79. padding-bottom: 10px;
  80. }
  81. }
  82. }
  83. </style>
  84. <style lang="scss" scoped>
  85. .home-container {
  86. padding: 20px;
  87. background-color: rgb(240, 242, 245);
  88. .chart-wrapper {
  89. background: #fff;
  90. margin-top: 20px;
  91. }
  92. }
  93. .card-title{
  94. margin: 0 0 10px 0;
  95. }
  96. .card-group{
  97. .card-title{
  98. margin: 0;
  99. }
  100. }
  101. .card-group {
  102. margin-top: 20px;
  103. .card-panel {
  104. display: flex;
  105. flex:1;
  106. justify-content: space-between;
  107. cursor: pointer;
  108. font-size: 12px;
  109. color: #666;
  110. background: #fff;
  111. box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);
  112. border-color: rgba(0, 0, 0, .05);
  113. margin: 10px 0;
  114. .icon-people {
  115. color: #40c9c6;
  116. }
  117. .card-panel-icon-wrapper {
  118. height: 120px;
  119. margin: 10px;
  120. padding: 10px;
  121. transition: all 0.38s ease-out;
  122. border-radius: 6px;
  123. display: flex;
  124. flex-direction: column;
  125. justify-content: center;
  126. align-items: center;
  127. }
  128. .card-panel-icon {
  129. float: left;
  130. font-size: 44px;
  131. }
  132. .card-icon-text{
  133. padding-top: 8px;
  134. text-align: center;
  135. line-height: 20px;
  136. color: rgba(0, 0, 0, 0.65);
  137. font-size: 16px;
  138. }
  139. .card-panel-description {
  140. display: flex;
  141. flex-direction: column;
  142. justify-content: center;
  143. font-weight: bold;
  144. margin: 10px;
  145. .card-panel-text {
  146. text-align: center;
  147. line-height: 18px;
  148. color: rgba(0, 0, 0, 0.65);
  149. font-size: 16px;
  150. margin-bottom: 12px;
  151. }
  152. .card-panel-num {
  153. font-size: 20px;
  154. }
  155. }
  156. }
  157. }
  158. @media (max-width:550px) {
  159. .card-panel-description {
  160. display: none;
  161. }
  162. .card-panel-icon-wrapper {
  163. float: none !important;
  164. width: 100%;
  165. height: 100%;
  166. margin: 0 !important;
  167. .svg-icon {
  168. display: block;
  169. margin: 14px auto !important;
  170. float: none !important;
  171. }
  172. }
  173. }
  174. </style>