ba-order-list.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <template>
  2. <div v-loading="loading">
  3. <div class="white-box">
  4. <el-table class="withdraw-table" :data="tableData" :max-height="maxHeight" style="width: 100%;" :span-method="objectSpanMethod">
  5. <el-table-column width="120" label="Product Code" prop="SKU_CODE"></el-table-column><!--商品编号-->
  6. <el-table-column width="120" label="Product Name" prop="GOODS_TITLE"></el-table-column><!--商品名称-->
  7. <el-table-column width="120" label="Product Price" prop="REAL_PRICE"></el-table-column><!--商品价格-->
  8. <el-table-column width="120" label="Qty" prop="BUY_NUMS"></el-table-column><!--数量-->
  9. <el-table-column width="120" label="Tax Rate" prop="TAX_RATE"></el-table-column><!--税率-->
  10. <el-table-column width="120" label="Tax" prop="TAX_AMOUNT"></el-table-column><!--税额-->
  11. <el-table-column width="120" label="Total Price" prop="TOTAL_AMOUNT"></el-table-column><!--税额-->
  12. <el-table-column width="120" label="Order Code" prop="SN"></el-table-column><!--订单编号-->
  13. <el-table-column width="120" label="Member Code" prop="USER_NAME"></el-table-column><!--会员编号-->
  14. <el-table-column width="120" label="Member Name" prop="REAL_NAME"></el-table-column><!--会员姓名-->
  15. <el-table-column width="130" label="Recipient name" prop="CONSIGNEE"></el-table-column><!--收货人-->
  16. <el-table-column width="120" label="Phone Number" prop="MOBILE"></el-table-column><!--收货电话-->
  17. <el-table-column width="150" label="Shipping Address" prop="FULL_ADDRESS"></el-table-column><!--收货地址-->
  18. <el-table-column width="120" label="Created Name" prop="CREATE_USER"></el-table-column><!--创建人-->
  19. <el-table-column width="120" label="Created time" prop="CREATED_AT"></el-table-column><!--下单时间-->
  20. <el-table-column width="150" label="Payment" prop="PAY_TYPE"></el-table-column><!--支付方式-->
  21. <el-table-column width="120" label="Pay time" prop="PAY_AT"></el-table-column><!--支付时间-->
  22. <el-table-column width="120" label="Pay Status" prop="STATUS"></el-table-column><!--支付状态-->
  23. </el-table>
  24. <div class="white-box-footer">
  25. <pagination :total="totalCount" :page_size="pageSize" @size-change="handleSizeChange" @current-change="handleCurrentChange"></pagination>
  26. </div>
  27. </div>
  28. </div>
  29. </template>
  30. <script>
  31. import network from '@/utils/network'
  32. import tool from '@/utils/tool'
  33. import Pagination from '@/components/Pagination'
  34. export default {
  35. name: "ba-order-list",
  36. components: {
  37. Pagination
  38. },
  39. mounted() {
  40. this.getData();
  41. },
  42. data() {
  43. return {
  44. loading: false,
  45. form:{},
  46. tableData:null,
  47. list: null,
  48. currentPage: 1,
  49. totalPages: 1,
  50. totalCount: 1,
  51. pageSize: 20,
  52. tool: tool,
  53. spanArr: [], // 用于存放需要合并的行的个数
  54. pos: 0, // 记录spanArr数组的下标
  55. maxHeight: tool.getTableHeight(),
  56. }
  57. },
  58. methods: {
  59. handleCurrentChange (page) {
  60. this.getData(page, this.pageSize)
  61. },
  62. handleSizeChange (pageSize) {
  63. this.getData(this.currentPage, pageSize)
  64. },
  65. // 列表页合并
  66. objectSpanMethod(obj) {
  67. if (obj.columnIndex >= 7) {
  68. // ⼆维数组存储的数据取出
  69. let _row = this.spanArr[obj.rowIndex];
  70. let _col = _row > 0 ? 1 : 0;
  71. return {
  72. rowspan: _row,
  73. colspan: _col,
  74. };
  75. } else {
  76. return false;
  77. }
  78. },
  79. // 列表页合并
  80. getSpanArr(orderList) {
  81. this.pos = 0;
  82. orderList.forEach((item, index) => {
  83. //判断是否是第⼀项
  84. if (index === 0) {
  85. this.spanArr.push(1);
  86. this.pos = 0;
  87. } else {
  88. //不是第⼀项时,就根据标识去存储
  89. if (
  90. orderList[index].ORDER_SN === orderList[index - 1].ORDER_SN &&
  91. orderList[index].USER_NAME === orderList[index - 1].USER_NAME &&
  92. orderList[index].REAL_NAME === orderList[index - 1].REAL_NAME &&
  93. orderList[index].CONSIGNEE === orderList[index - 1].CONSIGNEE &&
  94. orderList[index].MOBILE === orderList[index - 1].MOBILE &&
  95. orderList[index].PAY_AT === orderList[index - 1].PAY_AT &&
  96. orderList[index].STATUS === orderList[index - 1].STATUS &&
  97. orderList[index].PAY_TYPE === orderList[index - 1].PAY_TYPE &&
  98. orderList[index].CREATED_AT === orderList[index - 1].CREATED_AT
  99. ) {
  100. // 查找到符合条件的数据时每次要把之前存储的数据+1
  101. this.spanArr[this.pos] += 1;
  102. this.spanArr.push(0);
  103. } else {
  104. // 没有符合的数据时,要记住当前的index
  105. this.spanArr.push(1);
  106. this.pos = index;
  107. }
  108. }
  109. });
  110. },
  111. // 查询列表数据
  112. getData(page, pageSize) {
  113. this.spanArr = [];
  114. this.pos = 0;
  115. let _this = this
  116. network.getPageData(_this, 'shop/ba-order-list', page, pageSize, {type: this.type}, function (response) {
  117. _this.loading = false;
  118. _this.list = response.list;
  119. let settingObj = _this.list;
  120. _this.tableData = Object.keys(settingObj).map(item => {
  121. //把每个对象返回出去生成一个新的数组中相当于0:{id:1}
  122. return settingObj[item];
  123. });
  124. _this.getSpanArr(_this.tableData);
  125. });
  126. },
  127. }
  128. }
  129. </script>
  130. <style scoped>
  131. </style>