Skill.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. <template>
  2. <div class="course">
  3. <el-card class="box-card">
  4. <div slot="header" class="clearfix topForm">
  5. <div class="leftForm">
  6. <div class="channelForm">
  7. 技能选择:
  8. <el-select v-model="orderParams.skillId" @change="channelChange" placeholder="请选择技能">
  9. <el-option
  10. v-for="item in skillList"
  11. :key="item.skillId"
  12. :label="item.skillName"
  13. :value="item.skillId"
  14. ></el-option>
  15. </el-select>
  16. </div>
  17. <div class="dateForm">
  18. 查询日期:
  19. <el-date-picker v-model="orderParams.startDate" type="date" placeholder="起"></el-date-picker>
  20. <el-date-picker v-model="orderParams.endDate" type="date" placeholder="止"></el-date-picker>
  21. </div>
  22. </div>
  23. <el-button type="primary" style="float: right;" @click="search">搜索</el-button>
  24. </div>
  25. <el-table :data="skillData" border style="width: 100%" :height="tableHeight">
  26. <el-table-column
  27. label="日期"
  28. prop="day"
  29. align="left"
  30. header-align="center"
  31. min-width="120px"
  32. ></el-table-column>
  33. <el-table-column label="UV" prop="uv" align="right" header-align="center" min-width="100px"></el-table-column>
  34. <el-table-column label="VV" prop="vv" align="right" header-align="center" min-width="100px"></el-table-column>
  35. <el-table-column
  36. label="VIP用户 | UV1"
  37. align="right"
  38. header-align="center"
  39. :render-header="renderheader"
  40. prop="vipUv"
  41. min-width="120px"
  42. ></el-table-column>
  43. <el-table-column
  44. label="非VIP用户 | UV2=UV-UV1"
  45. align="right"
  46. header-align="center"
  47. :render-header="renderheader"
  48. prop="waitVipUv"
  49. min-width="140px"
  50. ></el-table-column>
  51. <el-table-column
  52. label="VIP用户占比 | UV1/UV"
  53. align="right"
  54. header-align="center"
  55. :render-header="renderheader"
  56. prop="vipProportion"
  57. min-width="140px"
  58. ></el-table-column>
  59. <el-table-column
  60. label="付费订单数量"
  61. align="right"
  62. header-align="center"
  63. :render-header="renderheader"
  64. prop="totalPayment"
  65. min-width="160px"
  66. ></el-table-column>
  67. <el-table-column
  68. label="转化率"
  69. align="right"
  70. header-align="center"
  71. :render-header="renderheader"
  72. prop="totalConversion"
  73. min-width="190px"
  74. ></el-table-column>
  75. </el-table>
  76. <!-- <el-pagination
  77. v-if="orderList.totalElements"
  78. background
  79. layout="prev, pager, next"
  80. :total="orderList.totalElements"
  81. @current-change="changePage">
  82. </el-pagination>-->
  83. </el-card>
  84. </div>
  85. </template>
  86. <script>
  87. import { mapGetters } from "vuex";
  88. import formatDate from "../../utils/formatTime";
  89. export default {
  90. data() {
  91. return {
  92. tableHeight: 500,
  93. dateValue: "",
  94. orderParams: {
  95. skillId: "",
  96. startDate: "",
  97. endDate: ""
  98. }
  99. // orderList:[]
  100. };
  101. },
  102. computed: {
  103. ...mapGetters({
  104. skillList: "skillList",
  105. orderList: "orderList",
  106. productList: "productList",
  107. channeList: "channeList",
  108. skillData: "skillData"
  109. })
  110. },
  111. created() {
  112. this.$store.dispatch("getSkillList");
  113. console.log(1111, this.skillList);
  114. // this.$store.dispatch("getOrderList", this.orderParams);
  115. this.orderParams.startDate = this.getYesterDay();
  116. this.orderParams.endDate = this.getYesterDay();
  117. this.tableHeight = document.documentElement.clientHeight * 0.75;
  118. },
  119. methods: {
  120. // 搜索
  121. search() {
  122. console.log(this.dateValue[0]);
  123. console.log(formatDate(this.dateValue[0], 2));
  124. this.orderParams.startDate = this.orderParams.startDate
  125. ? formatDate(this.orderParams.startDate, 2)
  126. : "";
  127. this.orderParams.endDate = this.orderParams.endDate
  128. ? formatDate(this.orderParams.endDate, 2)
  129. : "";
  130. this.$store.dispatch("getSkillData", this.orderParams);
  131. },
  132. // 渠道下课程分页
  133. changePage(e) {
  134. this.orderParams.pageNo = e;
  135. this.$store.dispatch("getSkillData", this.orderParams);
  136. },
  137. // 表头折行
  138. renderheader(h, { column, $index }) {
  139. return h("span", {}, [
  140. h("span", {}, column.label.split("|")[0]),
  141. h("br"),
  142. h("span", {}, column.label.split("|")[1])
  143. ]);
  144. },
  145. getYesterDay() {
  146. let yesterday = new Date().getTime() - 86400000;
  147. return formatDate(yesterday, 2);
  148. }
  149. }
  150. };
  151. </script>
  152. <style lang="less">
  153. .pruductForm {
  154. margin-left: 10px;
  155. }
  156. .topForm {
  157. display: flex;
  158. align-items: center;
  159. flex-direction: row;
  160. justify-content: space-between;
  161. }
  162. .leftForm {
  163. display: flex;
  164. align-items: center;
  165. flex-direction: row;
  166. justify-content: space-between;
  167. }
  168. .dateForm {
  169. margin-left: 18px;
  170. }
  171. </style>