index.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. <template>
  2. <div class="default-main ">
  3. <div style="background: #ffffff;padding: 20px">
  4. <div style="display: flex;align-items: center;flex-wrap: wrap">
  5. <el-select v-model="search.storeId" placeholder="销售门店" style="margin-right: 20px;width: 250px" clearable>
  6. <el-option v-for="item in storeList" :label="item.storeName" :value="item.id"></el-option>
  7. </el-select>
  8. <el-date-picker style="margin-right: 20px;width: 250px" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
  9. v-model="search.beginDate" placeholder="起始日期"></el-date-picker>
  10. <el-date-picker style="margin-right: 20px;width: 250px" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
  11. v-model="search.endDate" placeholder="截止日期"></el-date-picker>
  12. <el-button type="primary" @click="getData">检索</el-button>
  13. <buttonExportExcel ref="exportExcelRef" @click="exportExcel">生成Excel</buttonExportExcel>
  14. </div>
  15. <el-table :data="tableData" border style="margin-top: 20px">
  16. <el-table-column prop="storeName" label="门店"></el-table-column>
  17. <el-table-column prop="memberName" label="会员" min-width="150px"></el-table-column>
  18. <el-table-column prop="mobileNumber" label="联系电话" min-width="150px"></el-table-column>
  19. <el-table-column prop="goodsName" label="货品"></el-table-column>
  20. <el-table-column prop="goodsPrice" label="定价"></el-table-column>
  21. <el-table-column prop="discountAmount" label="折扣"></el-table-column>
  22. <el-table-column prop="orderAmount" label="订单价"></el-table-column>
  23. <el-table-column prop="memberCouponName" label="优惠券"></el-table-column>
  24. <el-table-column prop="actualAmount" label="实付金额"></el-table-column>
  25. <el-table-column prop="saleCount" label="数量"></el-table-column>
  26. <el-table-column prop="createTime" label="订单创建时间" min-width="150px"></el-table-column>
  27. </el-table>
  28. <el-pagination style="background: #ffffff;padding: 20px 0"
  29. v-model:current-page="page.pageNumber"
  30. v-model:page-size="page.pageSize"
  31. :page-sizes="page.pageSizes"
  32. :background="true"
  33. layout="total, sizes,prev, pager, next, jumper"
  34. :total="page.total"
  35. @size-change="getData()"
  36. @current-change="getData()"
  37. />
  38. </div>
  39. </div>
  40. </template>
  41. <script setup>
  42. import { ref, reactive, onMounted } from "vue";
  43. import { order, orderExport, store } from "/@/api/controllerUrls";
  44. import request from "/@/api/request";
  45. import buttonExportExcel from "/@/components/common/buttonExportExcel.vue";
  46. let tableData = ref([]);
  47. let storeList = ref([]);
  48. let exportExcelRef = ref();
  49. let search = reactive({
  50. storeId: "",
  51. beginDate: "",
  52. endDate: ""
  53. });
  54. let page = reactive({
  55. total: 0,
  56. pageNumber: 1,
  57. pageSize: 20,
  58. pageSizes: [20, 100, 500]
  59. });
  60. onMounted(() => {
  61. getData();
  62. getInitData();
  63. });
  64. function getData() {
  65. request.index(order, {
  66. limit: page.pageSize,
  67. page: page.pageNumber,
  68. beginDate: search.beginDate,
  69. endDate: search.endDate,
  70. storeId: search.storeId
  71. }).then((res) => {
  72. if (res.code === 1) {
  73. tableData.value = res.data.list;
  74. page.total = +res.data.total;
  75. }
  76. });
  77. }
  78. function getInitData() {
  79. request.index(store, {}, "list").then((res) => {
  80. if (res.code === 1) {
  81. storeList.value = res.data;
  82. }
  83. });
  84. }
  85. async function exportExcel() {
  86. const columns = [
  87. { name: "storeName", label: "门店" },
  88. { name: "goodsName", label: "货品" },
  89. { name: "goodsPrice", label: "定价" },
  90. { name: "discountAmount", label: "折扣" },
  91. { name: "orderAmount", label: "订单价" },
  92. { name: "memberCouponName", label: "优惠券" },
  93. { name: "actualAmount", label: "实付金额" },
  94. { name: "saleCount", label: "数量" },
  95. { name: "memberName", label: "会员" },
  96. { name: "mobileNumber", label: "联系电话" },
  97. { name: "createTime", label: "订单创建时间" }
  98. ];//表头中文名
  99. const res = await request.edit(orderExport, {
  100. beginDate: search.beginDate,
  101. endDate: search.endDate,
  102. storeId: search.storeId
  103. }, "");
  104. if (res.code === 1) {
  105. let data = res.data;
  106. data.forEach(item => {
  107. item["memberCouponName"] = item.memberCouponName ? item.memberCouponName : "";
  108. // item["storeName"] = item.storeName ? item.storeName : "";
  109. });
  110. console.log(data);
  111. exportExcelRef.value.open(data, columns);
  112. }
  113. }
  114. </script>
  115. <style scoped lang="scss"></style>