record.vue 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326
  1. <template>
  2. <div class="app-container">
  3. <div style="text-align: right; margin-bottom: 10px">
  4. <el-date-picker
  5. v-model="dateRange"
  6. type="datetimerange"
  7. range-separator="-"
  8. value-format="yyyy-MM-dd HH:mm:ss"
  9. start-placeholder="开始日期"
  10. end-placeholder="结束日期"
  11. @change="tjdatePicker"
  12. >
  13. </el-date-picker>
  14. </div>
  15. <div class="header" style="width: 100%">
  16. <el-row class="row" :gutter="12">
  17. <el-col :span="3">
  18. <div class="item">
  19. <div class="count">
  20. {{ orderStatistics ? orderStatistics.peopleNum : 0 }} 个
  21. </div>
  22. <div class="title">
  23. <span>活动订单总金额(元)</span>
  24. </div>
  25. </div>
  26. </el-col>
  27. <el-col :span="3">
  28. <div class="item">
  29. <div class="count">
  30. {{ orderStatistics ? orderStatistics.totalOrderNum : 0 }}
  31. </div>
  32. <div class="title">
  33. <span>活动订单总笔数(元)</span>
  34. </div>
  35. </div>
  36. </el-col>
  37. <el-col :span="3">
  38. <div class="item">
  39. <div class="count">
  40. {{ orderStatistics ? orderStatistics.totalOrderNum : 0 }}个
  41. </div>
  42. <div class="title">
  43. <span>总返红包数量</span>
  44. </div>
  45. </div>
  46. </el-col>
  47. <el-col :span="3">
  48. <div class="item">
  49. <div class="count">
  50. {{ orderStatistics ? orderStatistics.reduce : 0 }}个
  51. </div>
  52. <div class="title">
  53. <span>总返红包金额(元)</span>
  54. </div>
  55. </div>
  56. </el-col>
  57. <el-col :span="3">
  58. <div class="item">
  59. <div class="count">
  60. {{ orderStatistics ? orderStatistics.peopleNum : 0 }}个
  61. </div>
  62. <div class="title">
  63. <span>获得活动满返红包人数</span>
  64. </div>
  65. </div>
  66. </el-col>
  67. </el-row>
  68. </div>
  69. <el-form
  70. style="margin-top: 20px"
  71. :model="queryParams"
  72. ref="queryForm"
  73. size="small"
  74. :inline="true"
  75. label-width="120px"
  76. >
  77. <el-form-item label="" prop="key">
  78. <el-input
  79. v-model="queryParams.key"
  80. placeholder="请输入活动ID/活动名称/用户Id/用户昵称/用户手机号/订单编号搜索"
  81. clearable
  82. style="width: 300px"
  83. />
  84. </el-form-item>
  85. <el-form-item label="下单时间" prop="dateRange">
  86. <el-date-picker
  87. v-model="queryParams.dateRange"
  88. type="datetimerange"
  89. range-separator="-"
  90. value-format="yyyy-MM-dd HH:mm:ss"
  91. start-placeholder="开始日期"
  92. end-placeholder="结束日期"
  93. @change="datePicker"
  94. >
  95. </el-date-picker>
  96. </el-form-item>
  97. <el-form-item label="返红包时间" prop="dateRange">
  98. <el-date-picker
  99. v-model="queryParams.dateRange1"
  100. type="datetimerange"
  101. range-separator="-"
  102. value-format="yyyy-MM-dd HH:mm:ss"
  103. start-placeholder="开始日期"
  104. end-placeholder="结束日期"
  105. @change="fhbdatePicker"
  106. >
  107. </el-date-picker>
  108. </el-form-item>
  109. <el-form-item>
  110. <el-button
  111. type="primary"
  112. icon="el-icon-search"
  113. size="mini"
  114. @click="handleQuery"
  115. >搜索</el-button
  116. >
  117. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  118. >重置</el-button
  119. >
  120. </el-form-item>
  121. </el-form>
  122. <el-table
  123. ref="multipleTable"
  124. v-loading="loading"
  125. :data="spuList"
  126. :border="true"
  127. row-key="id"
  128. >
  129. <el-table-column type="selection" align="center" />
  130. <el-table-column label="领取人ID" align="center" prop="userId" />
  131. <el-table-column label="领取人昵称" align="center" prop="nick" />
  132. <el-table-column label="领取人手机号" align="center" prop="phone" />
  133. <el-table-column label="代金券ID" align="center" prop="voucherId" />
  134. <el-table-column label="代金券名称" align="center" prop="voucherName" />
  135. <el-table-column label="类型" align="center" width="120">
  136. <template slot-scope="scope">
  137. {{
  138. scope.row.type == 0
  139. ? "通用券"
  140. : scope.row.type == 1
  141. ? "独立券"
  142. : scope.row.type == 2
  143. ? "连锁券"
  144. : scope.row.type == 3
  145. ? "联合券"
  146. : ""
  147. }}
  148. </template>
  149. </el-table-column>
  150. <el-table-column label="推广方式" align="center">
  151. <template slot-scope="scope">
  152. {{
  153. scope.row.showType == 0
  154. ? "全网自动推出"
  155. : scope.row.showType == 1
  156. ? "定向渠道推广"
  157. : ""
  158. }}
  159. </template>
  160. </el-table-column>
  161. <el-table-column label="面额(元)" align="center" prop="sendAmount" />
  162. <el-table-column label="领取时间" align="center">
  163. <template slot-scope="scope">
  164. {{
  165. scope.row.reviewTime
  166. ? $moment(scope.row.reviewTime).format("YYYY-MM-DD HH:mm:ss")
  167. : ""
  168. }}
  169. </template>
  170. </el-table-column>
  171. </el-table>
  172. <pagination
  173. v-show="total > 0"
  174. :total="total"
  175. :page.sync="queryParams.pageNo"
  176. :limit.sync="queryParams.pageSize"
  177. @pagination="getList"
  178. />
  179. </div>
  180. </template>
  181. <script>
  182. import moment from "moment";
  183. import { statisticsActivity, queryPageRecord } from "@/api/marketing/voucher";
  184. export default {
  185. data() {
  186. return {
  187. // 遮罩层
  188. loading: false,
  189. // 显示搜索条件
  190. total: 0,
  191. // 参数表格数据
  192. spuList: [],
  193. // 弹出层标题
  194. title: "",
  195. // 查询参数
  196. dateRange: [],
  197. queryParams: {
  198. pageNo: 1,
  199. pageSize: 10,
  200. key: "",
  201. showType: "",
  202. startTime: "",
  203. endTime: "",
  204. type: "",
  205. dateRange: [],
  206. },
  207. orderStatistics: {},
  208. queryStatistics: {
  209. startTime: "",
  210. endTime: "",
  211. },
  212. };
  213. },
  214. mounted() {
  215. this.getList();
  216. this.getstatisticsOrder();
  217. },
  218. methods: {
  219. tjdatePicker(val) {
  220. if (val) {
  221. this.queryStatistics.startTime = moment(val[0]).valueOf();
  222. this.queryStatistics.endTime = moment(val[1]).valueOf();
  223. } else {
  224. this.queryStatistics.startTime = "";
  225. this.queryStatistics.endTime = "";
  226. }
  227. this.getstatisticsOrder();
  228. },
  229. fhbdatePicker(val) {
  230. this.queryParams.returnStartTime = moment(val[0]).valueOf();
  231. this.queryParams.returnEndTime = moment(val[1]).valueOf();
  232. },
  233. datePicker(val) {
  234. this.queryParams.orderStartTime = moment(val[0]).valueOf();
  235. this.queryParams.orderEndTime = moment(val[1]).valueOf();
  236. },
  237. getstatisticsOrder() {
  238. statisticsActivity(this.queryStatistics).then((res) => {
  239. if (res.code == 200) {
  240. this.orderStatistics = res.data;
  241. } else {
  242. this.$modal.msgError(res.msg);
  243. }
  244. });
  245. },
  246. /** 查询参数列表 */
  247. getList() {
  248. this.loading = true;
  249. queryPageRecord(this.queryParams).then((response) => {
  250. if (response.code == 200) {
  251. this.spuList = response.data.records;
  252. this.total = response.data.total;
  253. this.loading = false;
  254. }
  255. });
  256. },
  257. /** 重置按钮操作 */
  258. resetQuery() {
  259. this.queryParams.dateRange = [];
  260. this.queryParams.dateRange1 = [];
  261. this.queryParams.orderStartTime = "";
  262. this.queryParams.orderEndTime = "";
  263. this.queryParams.returnStartTime = "";
  264. this.queryParams.returnEndTime = "";
  265. this.resetForm("queryForm");
  266. this.queryParams.pageNo = 1;
  267. this.getList();
  268. },
  269. /** 搜索按钮操作 */
  270. handleQuery() {
  271. this.queryParams.pageNo = 1;
  272. this.getList();
  273. },
  274. },
  275. };
  276. </script>
  277. <style scoped lang="scss">
  278. .header {
  279. .item {
  280. height: 100px;
  281. display: flex;
  282. flex-direction: column;
  283. align-items: center;
  284. justify-content: center;
  285. line-height: 40px;
  286. }
  287. .row {
  288. background: #f4f4f4;
  289. padding: 10px;
  290. display: flex;
  291. flex-direction: row;
  292. justify-content: space-between;
  293. align-items: center;
  294. .title {
  295. text-align: center;
  296. }
  297. .count {
  298. text-align: center;
  299. font-size: 20px;
  300. font-weight: bold;
  301. color: rgb(64, 158, 255);
  302. }
  303. .zz {
  304. font-size: 14px;
  305. color: red;
  306. padding: 0px 10px;
  307. }
  308. }
  309. }
  310. .radio {
  311. margin: 20px 0px;
  312. }
  313. </style>
  314. <style>
  315. .el-radio-button__inner {
  316. width: 150px;
  317. }
  318. </style>