index.vue 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251
  1. <template>
  2. <div class="m-container">
  3. <h2><div class="squrt"></div>首页
  4. </h2>
  5. <div class="m-core">
  6. <div class="itemWrap">
  7. <div class="item"
  8. v-if="dataInfo.musicDatas">
  9. <h4>
  10. <p>分部乐团数</p> <img src=""
  11. alt="">
  12. </h4>
  13. <div class="infos">
  14. <div class="info">
  15. <p class="sub">全部</p>
  16. <p class='msg'>{{ dataInfo.musicDatas.total }}</p>
  17. </div>
  18. <div class="info">
  19. <p class="sub">进行中</p>
  20. <p class='msg'>{{ dataInfo.musicDatas.progress_num_ }}</p>
  21. </div>
  22. <div class="info">
  23. <p class="sub">已完成</p>
  24. <p class='msg'>{{ dataInfo.musicDatas.pause_num_ }}</p>
  25. </div>
  26. </div>
  27. </div>
  28. <!-- -->
  29. <div class="item"
  30. v-if="dataInfo.incomeExpendMap">
  31. <h4>
  32. <p>本月收入</p>
  33. <img src=""
  34. alt="">
  35. </h4>
  36. <div class="infos">
  37. <div class="info">
  38. <p class="sub">收入笔数</p>
  39. <p class='msg'>{{ dataInfo.incomeExpendMap.income_num_ }}</p>
  40. </div>
  41. <div class="info">
  42. <p class="sub">收入金额</p>
  43. <p class='msg'>{{ dataInfo.incomeExpendMap.income_total_ }}</p>
  44. </div>
  45. </div>
  46. </div>
  47. <div class="item"
  48. v-if="dataInfo.incomeExpendMap">
  49. <h4>
  50. <p>本月支出</p>
  51. <img src=""
  52. alt="">
  53. </h4>
  54. <div class="infos">
  55. <div class="info">
  56. <p class="sub">支出笔数</p>
  57. <p class='msg'>{{ dataInfo.incomeExpendMap.expend_num_ }}</p>
  58. </div>
  59. <div class="info">
  60. <p class="sub">支出金额</p>
  61. <p class='msg'>{{ dataInfo.incomeExpendMap.expend_total_ }}</p>
  62. </div>
  63. </div>
  64. </div>
  65. <div class="item"
  66. v-if="dataInfo.teacherDatas">
  67. <h4>
  68. <p>分部老师数</p>
  69. <img src=""
  70. alt="">
  71. </h4>
  72. <div class="infos">
  73. <div class="info">
  74. <p class="sub">总计</p>
  75. <p class='msg'>{{ dataInfo.teacherDatas.total }}</p>
  76. </div>
  77. <div class="info">
  78. <p class="sub">全职人数</p>
  79. <p class='msg'>{{ dataInfo.teacherDatas.full_time_num_ }}</p>
  80. </div>
  81. <div class="info">
  82. <p class="sub">兼职人数</p>
  83. <p class='msg'>{{ dataInfo.teacherDatas.part_time_num_ }}</p>
  84. </div>
  85. </div>
  86. </div>
  87. <div class="item"
  88. v-if="dataInfo.vipDatas">
  89. <h4>
  90. <p>VIP课数</p>
  91. <img src=""
  92. alt="">
  93. </h4>
  94. <div class="infos">
  95. <div class="info">
  96. <p class="sub">总计</p>
  97. <p class='msg'>{{ dataInfo.vipDatas.total }}</p>
  98. </div>
  99. <div class="info">
  100. <p class="sub">进行中</p>
  101. <p class='msg'>{{ dataInfo.vipDatas.applying_num_ }}</p>
  102. </div>
  103. <div class="info">
  104. <p class="sub">已完成</p>
  105. <p class='msg'>{{ dataInfo.vipDatas.finished_num_ }}</p>
  106. </div>
  107. </div>
  108. </div>
  109. <div class="item"
  110. v-if="dataInfo.demoDatas">
  111. <h4>
  112. <p>试听课</p>
  113. <img src=""
  114. alt="">
  115. </h4>
  116. <div class="infos">
  117. <div class="info">
  118. <p class="sub">总计</p>
  119. <p class='msg'>{{ dataInfo.demoDatas.booked_num_ + dataInfo.demoDatas.unbooked_num_ }}</p>
  120. </div>
  121. <div class="info">
  122. <p class="sub">已预约</p>
  123. <p class='msg'>{{ dataInfo.demoDatas.booked_num_ }}</p>
  124. </div>
  125. <div class="info">
  126. <p class="sub">未完成</p>
  127. <p class='msg'>{{ dataInfo.demoDatas.unbooked_num_ }}</p>
  128. </div>
  129. </div>
  130. </div>
  131. <div class="item"
  132. v-if="dataInfo.studentDatas">
  133. <h4>
  134. <p>分部学生数</p>
  135. <img src=""
  136. alt="">
  137. </h4>
  138. <div class="infos">
  139. <div class="info">
  140. <p class="sub">总计</p>
  141. <p class='msg'>{{ dataInfo.studentDatas.total_num_ }}</p>
  142. </div>
  143. <div class="info">
  144. <p class="sub">本月新增</p>
  145. <p class='msg'>{{ dataInfo.studentDatas.new_num_ }}</p>
  146. </div>
  147. <div class="info">
  148. <p class="sub">本月退团</p>
  149. <p class='msg'>{{ dataInfo.studentDatas.quit_num_ }}</p>
  150. </div>
  151. </div>
  152. </div>
  153. <div class="item">
  154. <h4>
  155. <p>本月预计上课</p>
  156. <img src=""
  157. alt="">
  158. </h4>
  159. <div class="infos">
  160. <div class="info">
  161. <p class="sub">乐团课</p>
  162. <p class='msg'>{{ dataInfo.musicGroupNum }}</p>
  163. </div>
  164. <div class="info">
  165. <p class="sub">VIP课</p>
  166. <p class='msg'>{{ dataInfo.vipGroupNum }}</p>
  167. </div>
  168. <div class="info">
  169. <p class="sub">试听课</p>
  170. <p class='msg'>{{ dataInfo.demoGroupNum }}</p>
  171. </div>
  172. </div>
  173. </div>
  174. </div>
  175. </div>
  176. </div>
  177. </template>
  178. <script>
  179. import { getIndex } from '@/api/user'
  180. export default {
  181. // name: 'main',
  182. data () {
  183. return {
  184. dataInfo: {}
  185. }
  186. },
  187. mounted () {
  188. this.__init();
  189. },
  190. methods: {
  191. __init () {
  192. getIndex().then(res => {
  193. if (res.code == 200) {
  194. this.dataInfo = res.data
  195. }
  196. })
  197. }
  198. }
  199. }
  200. </script>
  201. <style lang="scss" scope>
  202. .itemWrap {
  203. display: flex;
  204. flex-direction: row;
  205. justify-content: flex-start;
  206. align-items: center;
  207. flex-wrap: wrap;
  208. .item {
  209. width: 333px;
  210. height: 137px;
  211. padding: 22px 28px 20px;
  212. box-shadow: 0px 8px 20px 0px rgba(0, 0, 0, 0.1);
  213. border-radius: 6px;
  214. margin: 0 15px 3rem;
  215. h4 {
  216. display: flex;
  217. flex-direction: row;
  218. justify-content: space-between;
  219. margin-bottom: 20px;
  220. color: #323c47;
  221. font-size: 14px;
  222. }
  223. .infos {
  224. display: flex;
  225. flex-direction: row;
  226. justify-content: space-between;
  227. .sub {
  228. font-size: 14px;
  229. line-height: 20px;
  230. color: #aaa;
  231. margin-bottom: 8px;
  232. }
  233. .msg {
  234. font-size: 24px;
  235. font-weight: 500;
  236. color: rgba(68, 68, 68, 1);
  237. line-height: 28px;
  238. text-align: center;
  239. }
  240. }
  241. }
  242. }
  243. </style>