index.vue 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. <template>
  2. <div class="app-container">
  3. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="90px" >
  4. <el-form-item label="商品名称" prop="title">
  5. <el-input v-model="queryParams.title" placeholder="请输入商品名称" clearable size="small" style="width: 240px" @clear="handleQuery()" @keyup.enter.native="handleQuery" />
  6. </el-form-item>
  7. <el-form-item label="用户手机号" prop="userPhone">
  8. <el-input v-model="queryParams.userPhone" placeholder="请输入用户手机号" clearable size="small" style="width: 240px" @clear="handleQuery()" @keyup.enter.native="handleQuery" />
  9. </el-form-item>
  10. <el-form-item label="下单时间">
  11. <el-date-picker @clear="handleQuery()" v-model="tradeTimeArr" type="datetimerange" size="small" value-format="timestamp" range-separator="至" start-placeholder="时间选择" end-placeholder="时间选择" @change="tardeTime">
  12. </el-date-picker>
  13. </el-form-item>
  14. <el-form-item>
  15. <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery" >搜索</el-button >
  16. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery" >重置</el-button>
  17. </el-form-item>
  18. </el-form>
  19. <!-- 导出、刷新 -->
  20. <el-row :gutter="10" class="mb8">
  21. <el-col :span="1.5">
  22. <el-button
  23. type="infor"
  24. plain
  25. icon="el-icon-download"
  26. size="small"
  27. @click="handleExportDraw"
  28. v-hasPermi="['business:recovery:export']"
  29. >导出订单</el-button
  30. >
  31. </el-col>
  32. <right-toolbar
  33. :showSearch.sync="showSearch"
  34. @queryTable="getList"
  35. ></right-toolbar>
  36. </el-row>
  37. <!-- 列表 -->
  38. <el-table ref="table" v-loading="loading" :data="list">
  39. <el-table-column label="回收时间" min-width="100" align="center">
  40. <template slot-scope="{ row }">
  41. <div>{{ parseTime(row.createdTime) }}</div>
  42. </template>
  43. </el-table-column>
  44. <el-table-column label="商品主图" prop="picUrl" min-width="95" align="center">
  45. <template slot-scope="{row}">
  46. <div v-if="row.picUrl">
  47. <el-image
  48. style="width: 100px; height: 100px"
  49. :src="IMG_URL + row.picUrl.split(',')[0]"
  50. :preview-src-list="row.picUrl.split(',').map(item => { return IMG_URL + item })"
  51. />
  52. </div>
  53. <span v-else>-</span>
  54. </template>
  55. </el-table-column>>
  56. <el-table-column label="商品名称" prop="title" min-width="95" align="center" />
  57. <el-table-column label="商品规格" prop="properties" min-width="95" align="center" >
  58. <template slot-scope="{row}">
  59. <div v-if="row.properties">{{row.properties || "--" }}</div>
  60. <div v-else>--</div>
  61. </template>
  62. </el-table-column>
  63. <el-table-column label="单价(盲豆)" prop="exchangePrice" min-width="95" align="center"/>
  64. <el-table-column label="回收数量" prop="num" min-width="60" align="num" />
  65. <el-table-column label="回收折扣(%)" prop="discountRate" min-width="95" align="center"/>
  66. <el-table-column label="返还盲豆数" prop="returnCoin" min-width="95" align="center"/>
  67. <el-table-column label="用户昵称/手机号" min-width="120" align="center">
  68. <template slot-scope="{ row }">
  69. <div>{{ row.nickName }}/{{ row.userPhone }}</div>
  70. </template>
  71. </el-table-column>
  72. </el-table>
  73. <!-- 分页 -->
  74. <pagination
  75. v-show="total > 0"
  76. :total="total"
  77. :page.sync="pageParams.pageNum"
  78. :limit.sync="pageParams.pageSize"
  79. @pagination="getList"
  80. />
  81. </div>
  82. </template>
  83. <script>
  84. import { publicFileGetUrl } from "@/api/common"
  85. import { getRecoveryList, exchangeRecoveryExport } from "@/api/business/recovery";
  86. export default {
  87. name: "exchange",
  88. data() {
  89. return {
  90. IMG_URL: publicFileGetUrl,
  91. loading: false,
  92. showSearch: true,
  93. // 筛选
  94. queryParams: {
  95. endTime: "",
  96. startTime: "",
  97. title: "",
  98. userPhone: ""
  99. },
  100. // 分页
  101. pageParams: {
  102. pageNum: 1,
  103. pageSize: 10,
  104. },
  105. // 总条数
  106. total: 0,
  107. list: [],
  108. // 下单时间
  109. tradeTimeArr: [],
  110. // 订单列表状态
  111. state: "null",
  112. };
  113. },
  114. created() {
  115. this.getList()
  116. },
  117. methods: {
  118. // 订单列表
  119. getList() {
  120. this.loading = true;
  121. getRecoveryList( "pageNum=" + this.pageParams.pageNum + "&pageSize=" + this.pageParams.pageSize + "&",this.queryParams)
  122. .then((res) => {
  123. this.loading = false;
  124. if (res.code == 0) {
  125. this.total = res.total;
  126. this.list = res.rows;
  127. }
  128. })
  129. .catch(() => {
  130. this.loading = false;
  131. });
  132. },
  133. //搜索
  134. handleQuery() {
  135. this.pageParams.pageNum = 1;
  136. this.getList();
  137. },
  138. // 重置
  139. resetQuery() {
  140. this.resetForm("queryForm");
  141. this.tradeTimeArr = [];
  142. this.pageParams.pageNum = 1;
  143. this.queryParams.startTime = "";
  144. this.queryParams.endTime = "";
  145. this.getList();
  146. },
  147. // 选择下单时间
  148. tardeTime(e) {
  149. if (e) {
  150. this.queryParams.startTime = e[0];
  151. this.queryParams.endTime = e[1];
  152. this.handleQuery();
  153. } else {
  154. this.queryParams.startTime = "";
  155. this.queryParams.endTime = "";
  156. this.handleQuery();
  157. }
  158. },
  159. // 导出订单
  160. handleExportDraw() {
  161. this.$confirm("是否确认导出订单?", "提示", {
  162. confirmButtonText: "确定",
  163. cancelButtonText: "取消",
  164. type: "warning",
  165. })
  166. .then(() => {
  167. this.vloading = this.$loading({
  168. lock: true,
  169. text: "正在导出订单.....",
  170. background: "rgba(0, 0, 0, 0.7)",
  171. });
  172. return exchangeRecoveryExport(this.queryParams);
  173. })
  174. .then((response) => {
  175. this.vloading.close();
  176. this.download(response.msg);
  177. })
  178. .catch(() => {
  179. this.vloading.close();
  180. });
  181. },
  182. },
  183. };
  184. </script>
  185. <style lang="scss" scoped>
  186. ::v-deep .el-tabs--border-card > .el-tabs__content {
  187. padding: 0;
  188. }
  189. </style>