index.vue 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  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 label="门店"></el-table-column>
  17. <el-table-column label="客户"></el-table-column>
  18. <el-table-column label="交易类型"></el-table-column>
  19. <el-table-column label="交易日期"></el-table-column>
  20. <el-table-column label="成交金额"></el-table-column>
  21. <el-table-column label="会员状态"></el-table-column>
  22. <el-table-column label="联系电话"></el-table-column>
  23. </el-table>
  24. <el-pagination style="background: #ffffff;padding: 20px 0"
  25. v-model:current-page="page.pageNumber"
  26. v-model:page-size="page.pageSize"
  27. :page-sizes="page.pageSizes"
  28. :background="true"
  29. layout="total, sizes,prev, pager, next, jumper"
  30. :total="page.total"
  31. @size-change="getData()"
  32. @current-change="getData()"
  33. />
  34. </div>
  35. </div>
  36. </template>
  37. <script setup>
  38. import { ref, reactive, onMounted } from "vue";
  39. import { order, orderExport, store } from "/@/api/controllerUrls";
  40. import request from "/@/api/request";
  41. import buttonExportExcel from "/@/components/common/buttonExportExcel.vue";
  42. let tableData = ref([]);
  43. let storeList = ref([]);
  44. let exportExcelRef = ref()
  45. let search = reactive({
  46. storeId: "",
  47. beginDate: "",
  48. endDate: ""
  49. });
  50. let page = reactive({
  51. total: 0,
  52. pageNumber: 1,
  53. pageSize: 20,
  54. pageSizes: [20, 100, 500]
  55. });
  56. onMounted(() => {
  57. getData();
  58. getInitData();
  59. });
  60. function getData() {
  61. request.index(order, {
  62. limit: page.pageSize,
  63. page: page.pageNumber,
  64. beginDate: search.beginDate,
  65. endDate: search.endDate,
  66. storeId: search.storeId
  67. }).then((res) => {
  68. if (res.code === 1) {
  69. tableData.value = res.data.list;
  70. page.total = +res.data.total;
  71. }
  72. });
  73. }
  74. function getInitData() {
  75. request.index(store, {}, "list").then((res) => {
  76. if (res.code === 1) {
  77. storeList.value = res.data;
  78. }
  79. });
  80. }
  81. async function exportExcel() {
  82. const columns = [
  83. {name:'',label:''},
  84. {name:'',label:''},
  85. {name:'',label:''},
  86. {name:'',label:''},
  87. ];//表头中文名
  88. const res = await request.edit(orderExport, {
  89. limit: page.pageSize,
  90. page: page.pageNumber,
  91. beginDate: search.beginDate,
  92. endDate: search.endDate,
  93. storeId: search.storeId
  94. }, "");
  95. if (res.code === 1) {
  96. let data = res.data;
  97. exportExcelRef.value.open(data,columns);
  98. }
  99. }
  100. </script>
  101. <style scoped lang="scss"></style>