Home.vue 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360
  1. <template>
  2. <div class="home">
  3. <!-- <div class="tips">
  4. <span>就像你看到的一样?查看我们的高级版本了解更多信息。</span>
  5. <span class="flex1"></span>
  6. <el-button size="mini" type="success" round class="doc-btn" @click="toDocs"
  7. >查看文档</el-button
  8. >
  9. <i class="el-icon-close"></i>
  10. </div> -->
  11. <el-row :gutter="20" class="card-statistics">
  12. <el-col :md="12" :xl="6">
  13. <div class="card block">
  14. <div class="val">
  15. <div class="left">
  16. <i class="el-icon-s-goods"></i>
  17. </div>
  18. <div class="right">
  19. <p>总收入</p>
  20. <p>¥15,650</p>
  21. </div>
  22. </div>
  23. <div class="desc">
  24. <i class="el-icon-warning"></i>
  25. <span>25% lower growth</span>
  26. </div>
  27. </div>
  28. </el-col>
  29. <el-col :md="12" :xl="6">
  30. <div class="card block">
  31. <div class="val">
  32. <div class="left">
  33. <i class="el-icon-s-flag"></i>
  34. </div>
  35. <div class="right">
  36. <p>订单</p>
  37. <p>1822</p>
  38. </div>
  39. </div>
  40. <div class="desc">
  41. <i class="el-icon-warning"></i>
  42. <span>Product-wise sales</span>
  43. </div>
  44. </div>
  45. </el-col>
  46. <el-col :md="12" :xl="6">
  47. <div class="card block">
  48. <div class="val">
  49. <div class="left">
  50. <i class="el-icon-s-marketing"></i>
  51. </div>
  52. <div class="right">
  53. <p>销售</p>
  54. <p>312</p>
  55. </div>
  56. </div>
  57. <div class="desc">
  58. <i class="el-icon-warning"></i>
  59. <span>Weekly Sales</span>
  60. </div>
  61. </div>
  62. </el-col>
  63. <el-col :md="12" :xl="6">
  64. <div class="card block">
  65. <div class="val">
  66. <div class="left">
  67. <i class="el-icon-s-custom"></i>
  68. </div>
  69. <div class="right">
  70. <p>用户</p>
  71. <p>2246</p>
  72. </div>
  73. </div>
  74. <div class="desc">
  75. <i class="el-icon-warning"></i>
  76. <span>Product-wise sales</span>
  77. </div>
  78. </div>
  79. </el-col>
  80. </el-row>
  81. <div class="card card-visitor">
  82. <p class="card-title">用户访客</p>
  83. <div class="card-body">
  84. <echart1></echart1>
  85. </div>
  86. </div>
  87. <!-- <div class="card card-plan">
  88. <p class="card-title">计划</p>
  89. <div class="card-body">
  90. <x-crud @load="onCrudLoad">
  91. <template #table-column-process="{scope}">
  92. <el-progress
  93. :show-text="false"
  94. :stroke-width="6"
  95. :percentage="scope.row.process"
  96. ></el-progress>
  97. </template>
  98. <template #table-column-price="{scope}">
  99. <span>¥{{ scope.row.price }}</span>
  100. </template>
  101. <template #table-column-salesRate="{scope}">
  102. <div :class="scope.row.salesStatus == 1 ? 'sales-top' : 'sales-bottom'">
  103. <span>{{ scope.row.salesRate }}%</span>
  104. <i class="el-icon-bottom" v-if="scope.row.salesStatus"></i>
  105. <i class="el-icon-top" v-else></i>
  106. </div>
  107. </template>
  108. </x-crud>
  109. </div>
  110. </div> -->
  111. </div>
  112. </template>
  113. <script>
  114. import Echart1 from '@/components/echarts/trend.vue';
  115. export default {
  116. components: {
  117. Echart1
  118. },
  119. data() {
  120. return {
  121. crud: {
  122. service: this.$service.test,
  123. table: {
  124. columns: [
  125. {
  126. type: 'index',
  127. align: 'center',
  128. width: 100
  129. },
  130. {
  131. label: '名字',
  132. prop: 'name',
  133. align: 'center'
  134. },
  135. {
  136. label: '进展',
  137. prop: 'process',
  138. align: 'center'
  139. },
  140. {
  141. label: '总量',
  142. prop: 'price',
  143. align: 'center'
  144. },
  145. {
  146. label: '销售',
  147. prop: 'salesRate',
  148. align: 'center'
  149. },
  150. {
  151. label: '最后期限',
  152. prop: 'endTime',
  153. align: 'center'
  154. }
  155. ],
  156. op: {
  157. hidden: true
  158. },
  159. props: {
  160. 'max-height': '500px'
  161. }
  162. },
  163. layout: [['data-table']]
  164. }
  165. };
  166. },
  167. methods: {
  168. toDocs() {
  169. window.open('https://docs.x-admin.com/#/');
  170. },
  171. onCrudLoad({ ctx, app }) {
  172. ctx({
  173. service: this.$service.test,
  174. table: {
  175. columns: [
  176. {
  177. type: 'index',
  178. align: 'center',
  179. width: 100
  180. },
  181. {
  182. label: '名字',
  183. prop: 'name',
  184. align: 'center'
  185. },
  186. {
  187. label: '进展',
  188. prop: 'process',
  189. align: 'center'
  190. },
  191. {
  192. label: '总量',
  193. prop: 'price',
  194. align: 'center'
  195. },
  196. {
  197. label: '销售',
  198. prop: 'salesRate',
  199. align: 'center'
  200. },
  201. {
  202. label: '最后期限',
  203. prop: 'endTime',
  204. align: 'center'
  205. }
  206. ],
  207. op: {
  208. visible: false
  209. },
  210. props: {
  211. 'max-height': '500px'
  212. }
  213. },
  214. layout: [['data-table']]
  215. }).done();
  216. app.refresh();
  217. }
  218. }
  219. };
  220. </script>
  221. <style lang="stylus" scoped>
  222. .home {
  223. overflow-y: auto;
  224. overflow-x: hidden;
  225. .card {
  226. background-color: #fff;
  227. border-radius: 5px;
  228. margin-bottom: 20px;
  229. .card-title {
  230. color: #000;
  231. padding: 20px 20px 0 20px;
  232. }
  233. .card-body {
  234. padding: 10px;
  235. }
  236. }
  237. .tips {
  238. display: flex;
  239. align-items: center;
  240. background-color: #ECEFF0;
  241. padding: 15px 20px;
  242. border-radius: 3px;
  243. margin-bottom: 20px;
  244. .flex1 {
  245. flex: 1;
  246. }
  247. span {
  248. color: #7e7e7e;
  249. font-size: 12px;
  250. }
  251. .doc-btn {
  252. margin-right: 10px;
  253. }
  254. }
  255. .card-statistics {
  256. .block {
  257. background-color: #fff;
  258. height: 100px;
  259. padding: 20px;
  260. .val {
  261. display: flex;
  262. justify-content: space-between;
  263. align-items: center;
  264. .left {
  265. i {
  266. font-size: 34px;
  267. &.el-icon-s-goods {
  268. color: #EC5555;
  269. }
  270. &.el-icon-s-flag {
  271. color: #FFB431;
  272. }
  273. &.el-icon-s-custom {
  274. color: #9257DB;
  275. }
  276. &.el-icon-s-marketing {
  277. color: #00D06F;
  278. }
  279. }
  280. }
  281. .right {
  282. p {
  283. &:first-child {
  284. font-size: 13px;
  285. text-align: right;
  286. }
  287. &:last-child {
  288. font-size: 24px;
  289. margin-top: 5px;
  290. }
  291. }
  292. }
  293. }
  294. .desc {
  295. color: #999;
  296. font-size: 13px;
  297. margin-top: 20px;
  298. span {
  299. margin-left: 5px;
  300. }
  301. }
  302. }
  303. }
  304. .sales-top {
  305. color: red;
  306. }
  307. .sales-bottom {
  308. color: green;
  309. }
  310. }
  311. </style>