vip_order.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. <template>
  2. <div id="vip-order">
  3. <div
  4. class="title"
  5. >订单总量:初创版{{whole.company_order_num}},企业版{{whole.premius_order_num}}, 开发者{{whole.person_order_num}} 累计收入: 初创版 ¥{{whole.company_paid_money}},企业版¥{{whole.premius_paid_money}}, 开发者 ¥{{whole.person_paid_money}}</div>
  6. <div class="table">
  7. <el-table v-if="tableData.length" border style="width: 100%" :data="tableData">
  8. <el-table-column
  9. v-for="(prop, index) of tableProps"
  10. :key="index"
  11. :prop="prop"
  12. :label="tableHeaders[index]"
  13. >
  14. <template slot-scope="scope">
  15. <el-button
  16. type="text"
  17. class="ctrls"
  18. v-if="prop === 'uid'"
  19. @click="clickUID(scope.row)"
  20. >{{scope.row[prop]}}</el-button>
  21. <span v-else>{{scope.row[prop]}}</span>
  22. </template>
  23. </el-table-column>
  24. </el-table>
  25. </div>
  26. <el-pagination
  27. @current-change="changePagination"
  28. :current-page.sync="currentPage"
  29. :page-size="10"
  30. layout="total, prev, pager, next"
  31. :total="totalCount"
  32. ></el-pagination>
  33. </div>
  34. </template>
  35. <script>
  36. const tableHeaders = [
  37. "用户ID",
  38. "昵称",
  39. "会员类型",
  40. "购买类型",
  41. "购买月数",
  42. "应付金额",
  43. "实付金额",
  44. "订单号",
  45. "开始时间",
  46. "生效时间",
  47. "购前到期",
  48. "购后到期"
  49. ];
  50. const tableProps = [
  51. "uid",
  52. "nickname",
  53. "type_name",
  54. "is_first_name",
  55. "num",
  56. "need_pay_money",
  57. "paid_money",
  58. "order_no",
  59. "start_date",
  60. "pay_date",
  61. "origin_end_date",
  62. "end_date"
  63. ];
  64. // 现在环境是线上还是测试, 默认线上
  65. let env = "";
  66. export default {
  67. data() {
  68. return {
  69. // 原始数据
  70. listData: {},
  71. // 头部信息
  72. titleInfo: {},
  73. // 数据总条目
  74. totalCount: 0,
  75. // 当前页面
  76. currentPage: 1,
  77. // 列表头显示内容
  78. tableHeaders,
  79. // 列表头字段
  80. tableProps,
  81. // 列表数据
  82. tableData: []
  83. };
  84. },
  85. computed: {
  86. whole() {
  87. return this.listData.whole || {};
  88. }
  89. },
  90. mounted() {
  91. this.getTableData();
  92. },
  93. filters: {
  94. toDate(val) {
  95. return new Date(val * 1000).toLocaleDateString();
  96. },
  97. projectLink(i) {
  98. const type = i.entity_type;
  99. let link = "javascript:void(0)";
  100. if (type === "1") link = `/rooter/outsourceitem/${i.entity_id}>`;
  101. else if (type === "3") link = `/rooter/wagedetails?job_id=${i.entity_id}`;
  102. return link;
  103. }
  104. },
  105. methods: {
  106. /**
  107. * 点击 uid
  108. */
  109. clickUID({ uid }) {
  110. window.open(
  111. this.$store.state.domainConfig.siteUrl + `/rooter/user/${uid}`
  112. );
  113. },
  114. // 页码变动
  115. changePagination() {
  116. this.getTableData();
  117. },
  118. // 格式化列表数据
  119. formatTableData(data) {
  120. return data.map(i => {
  121. let projectName = "--";
  122. let prePay = "";
  123. let servicePay = "";
  124. let getPay = "";
  125. let realGet = "";
  126. return {
  127. ...i
  128. };
  129. });
  130. },
  131. // 获取列表数据
  132. async getTableData() {
  133. this.tableData = [];
  134. const p = this.currentPage;
  135. const res = await this.$post("/api/admin/vip/getVipOrders", {
  136. page: this.currentPage,
  137. page_size: 10
  138. });
  139. // console.log(res)
  140. const data = res.data;
  141. env = data.current_env;
  142. const list = data.list;
  143. this.listData = data;
  144. this.tableData = list; // this.formatTableData(list, data)
  145. this.totalCount = Number(data.total);
  146. this.totalPage = data.pages;
  147. }
  148. }
  149. };
  150. </script>
  151. <style scoped>
  152. .table {
  153. height: 100%;
  154. height: calc(100% - 80px);
  155. }
  156. </style>