vip_order.vue 3.6 KB

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