| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  | <template> | 
					
						
							|  |  |  |   <div class="page"> | 
					
						
							|  |  |  |     <topBar | 
					
						
							|  |  |  |       v-if="topList.length > 0" | 
					
						
							|  |  |  |       :topList="topList" | 
					
						
							|  |  |  |       :moren="moren" | 
					
						
							|  |  |  |     ></topBar> | 
					
						
							|  |  |  |     <div class="main"> | 
					
						
							|  |  |  |       <div class="form_all"> | 
					
						
							|  |  |  |         <el-form ref="select" :model="select" label-width="auto"> | 
					
						
							|  |  |  |           <el-row :gutter="10"> | 
					
						
							|  |  |  |             <el-col :span="4"> | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |               <el-form-item :label="'会员编号'" prop="memberCode"> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |                 <el-input | 
					
						
							|  |  |  |                   clearable | 
					
						
							|  |  |  |                   v-model="select.memberCode" | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |                   :placeholder="'请输入'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |                 ></el-input> | 
					
						
							|  |  |  |               </el-form-item> | 
					
						
							|  |  |  |             </el-col> | 
					
						
							|  |  |  |             <el-col :span="4"> | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |               <el-form-item :label="'所属专区'" prop="orderType"> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |                 <el-select | 
					
						
							|  |  |  |                   @change="selSpecial" | 
					
						
							|  |  |  |                   clearable | 
					
						
							|  |  |  |                   v-model="select.specialArea" | 
					
						
							|  |  |  |                 > | 
					
						
							|  |  |  |                   <el-option | 
					
						
							|  |  |  |                     v-for="item in areaList" | 
					
						
							|  |  |  |                     :key="item.value" | 
					
						
							|  |  |  |                     :label="item.label" | 
					
						
							|  |  |  |                     :value="item.value" | 
					
						
							|  |  |  |                   ></el-option> | 
					
						
							|  |  |  |                 </el-select> | 
					
						
							|  |  |  |               </el-form-item> | 
					
						
							|  |  |  |             </el-col> | 
					
						
							|  |  |  |             <el-col :span="6"> | 
					
						
							|  |  |  |               <el-form-item label="筛选商品"> | 
					
						
							|  |  |  |                 <el-select | 
					
						
							|  |  |  |                   v-model="goodsArray" | 
					
						
							|  |  |  |                   filterable | 
					
						
							|  |  |  |                   multiple | 
					
						
							|  |  |  |                   placeholder="请选择" | 
					
						
							|  |  |  |                 > | 
					
						
							|  |  |  |                   <el-option | 
					
						
							|  |  |  |                     v-for="item in goodsList" | 
					
						
							|  |  |  |                     :key="item.pkId" | 
					
						
							|  |  |  |                     :label="item.waresName + '--' + item.waresCode" | 
					
						
							|  |  |  |                     :value="item.pkId" | 
					
						
							|  |  |  |                   ></el-option> | 
					
						
							|  |  |  |                 </el-select> | 
					
						
							|  |  |  |               </el-form-item> | 
					
						
							|  |  |  |             </el-col> | 
					
						
							|  |  |  |             <el-col :span="6"> | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |               <el-form-item :label="'统计时间'"> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |                 <el-date-picker | 
					
						
							|  |  |  |                   v-model="creationTime" | 
					
						
							|  |  |  |                   @change="changeTime" | 
					
						
							|  |  |  |                   value-format="yyyy-MM-dd" | 
					
						
							|  |  |  |                   type="daterange" | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |                   :range-separator="'至'" | 
					
						
							|  |  |  |                   :start-placeholder="'开始日期'" | 
					
						
							|  |  |  |                   :end-placeholder="'结束日期'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |                 > | 
					
						
							|  |  |  |                 </el-date-picker> | 
					
						
							|  |  |  |               </el-form-item> | 
					
						
							|  |  |  |             </el-col> | 
					
						
							|  |  |  |             <el-col :span="4"> | 
					
						
							|  |  |  |               <el-button type="primary" @click="getDataList"> | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |                 {{ '搜索' }}</el-button | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |               > | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |               <el-button type="" @click="reset"> {{ '重置' }}</el-button> | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |             </el-col> | 
					
						
							|  |  |  |           </el-row> | 
					
						
							|  |  |  |         </el-form> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |       <div class="maintop"> | 
					
						
							|  |  |  |         <div class="mainbtn"> | 
					
						
							|  |  |  |           <el-button | 
					
						
							|  |  |  |             size="small" | 
					
						
							|  |  |  |             @click="handleExport" | 
					
						
							|  |  |  |             v-hasButtons="['userConsumpionStaExport']" | 
					
						
							|  |  |  |             style="background-color: #ffad41" | 
					
						
							|  |  |  |             class="thebtn1" | 
					
						
							|  |  |  |           > | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |             {{ '导出' }}</el-button | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |           > | 
					
						
							|  |  |  |         </div> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |       <div class="maintable"> | 
					
						
							|  |  |  |         <el-table | 
					
						
							|  |  |  |           :data="tableData" | 
					
						
							|  |  |  |           v-loading="loading" | 
					
						
							|  |  |  |           style="width: 100%" | 
					
						
							|  |  |  |           :header-cell-style="{ background: '#EEEEEE' }" | 
					
						
							|  |  |  |           :row-class-name="tableRowClassName" | 
					
						
							|  |  |  |           @selection-change="handleSelectionChange" | 
					
						
							|  |  |  |         > | 
					
						
							|  |  |  |           <el-table-column type="selection" width="55"> </el-table-column> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           <el-table-column | 
					
						
							|  |  |  |             align="center" | 
					
						
							|  |  |  |             prop="memberCode" | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |             :label="'会员编号'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |           > | 
					
						
							|  |  |  |           </el-table-column> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           <el-table-column | 
					
						
							|  |  |  |             align="center" | 
					
						
							|  |  |  |             prop="memberName" | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |             :label="'会员姓名'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |           > | 
					
						
							|  |  |  |           </el-table-column> | 
					
						
							|  |  |  |           <el-table-column | 
					
						
							|  |  |  |             align="center" | 
					
						
							|  |  |  |             prop="orderAmount" | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |             :label="'订单金额'" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |           > | 
					
						
							|  |  |  |           </el-table-column> | 
					
						
							|  |  |  |           <el-table-column | 
					
						
							|  |  |  |             align="center" | 
					
						
							|  |  |  |             prop="orderAchieve" | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |             :label="`${'订单业绩'}(PV)`" | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |           > | 
					
						
							|  |  |  |           </el-table-column> | 
					
						
							|  |  |  |         </el-table> | 
					
						
							|  |  |  |       </div> | 
					
						
							|  |  |  |     </div> | 
					
						
							|  |  |  |     <pagination | 
					
						
							|  |  |  |       v-show="total > 0" | 
					
						
							|  |  |  |       :total="total" | 
					
						
							|  |  |  |       :page.sync="queryParams.pageNum" | 
					
						
							|  |  |  |       :limit.sync="queryParams.pageSize" | 
					
						
							|  |  |  |       @pagination="getDataList" | 
					
						
							|  |  |  |     /> | 
					
						
							|  |  |  |   </div> | 
					
						
							|  |  |  | </template> | 
					
						
							|  |  |  |        | 
					
						
							|  |  |  |       <script> | 
					
						
							|  |  |  | import topBar from "@/components/topBar"; | 
					
						
							|  |  |  | import * as api from "@/api/statistics.js"; | 
					
						
							|  |  |  | import { specialArea } from "@/api/configManage"; | 
					
						
							|  |  |  | import * as gif from "@/api/giftGoods.js"; | 
					
						
							|  |  |  | export default { | 
					
						
							|  |  |  |   name: "UserConsumpionSta", | 
					
						
							|  |  |  |   components: { | 
					
						
							|  |  |  |     topBar, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   data() { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       creationTime: [], | 
					
						
							|  |  |  |       areaList: [], | 
					
						
							|  |  |  |       select: {}, | 
					
						
							|  |  |  |       // 查询参数
 | 
					
						
							|  |  |  |       queryParams: { | 
					
						
							|  |  |  |         pageNum: 1, | 
					
						
							|  |  |  |         pageSize: 50, | 
					
						
							|  |  |  |       }, | 
					
						
							|  |  |  |       total: 0, | 
					
						
							|  |  |  |       tableData: [], | 
					
						
							|  |  |  |       loading:false, | 
					
						
							|  |  |  |       orderTypeList: [], | 
					
						
							|  |  |  |       moren: "userConsumpionSta", | 
					
						
							|  |  |  |       topList: [ | 
					
						
							|  |  |  |         { | 
					
						
							|  |  |  |           name: "用户消费统计", | 
					
						
							|  |  |  |           path: "userConsumpionSta", | 
					
						
							|  |  |  |         }, | 
					
						
							|  |  |  |       ], | 
					
						
							|  |  |  |       goodsArray: [], | 
					
						
							|  |  |  |       goodsList: [], | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   mounted() { | 
					
						
							|  |  |  |     this.getOthers(); | 
					
						
							|  |  |  |     // 获取列表
 | 
					
						
							|  |  |  |     this.getDataList(); | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  |   methods: { | 
					
						
							|  |  |  |     getOthers() { | 
					
						
							|  |  |  |       api.orderBusiness().then((res) => { | 
					
						
							|  |  |  |         this.orderTypeList = res.data; | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       // 获取专区
 | 
					
						
							|  |  |  |       specialArea().then((res) => { | 
					
						
							|  |  |  |         this.areaList = res.data; | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |       this.getWaresList(); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     selSpecial(e) { | 
					
						
							|  |  |  |       this.getWaresList(e); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     // 查询分类父子级关系
 | 
					
						
							|  |  |  |     getWaresList(val) { | 
					
						
							|  |  |  |       gif | 
					
						
							|  |  |  |         .waresList({ | 
					
						
							|  |  |  |           specialArea: val || null, | 
					
						
							|  |  |  |         }) | 
					
						
							|  |  |  |         .then((res) => { | 
					
						
							|  |  |  |           this.goodsList = res.data; | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     reset() { | 
					
						
							|  |  |  |       this.select = {}; | 
					
						
							|  |  |  |       this.creationTime = []; | 
					
						
							|  |  |  |       this.goodsArray = []; | 
					
						
							|  |  |  |       this.pkProducts = ""; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     changeTime(val) { | 
					
						
							|  |  |  |       this.select.startPayTime = val ? val[0] : ""; | 
					
						
							|  |  |  |       this.select.endPayTime = val ? val[1] : ""; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     getDataList() { | 
					
						
							|  |  |  |       this.loading = true | 
					
						
							|  |  |  |       if ( | 
					
						
							|  |  |  |         this.goodsArray != null && | 
					
						
							|  |  |  |         this.goodsArray != undefined && | 
					
						
							|  |  |  |         this.goodsArray.length > 0 | 
					
						
							|  |  |  |       ) { | 
					
						
							|  |  |  |         this.select.pkProducts = this.goodsArray.join(","); | 
					
						
							|  |  |  |       } else { | 
					
						
							|  |  |  |         this.select.pkProducts = ""; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       api | 
					
						
							|  |  |  |         .getMemberConsumptionList( | 
					
						
							|  |  |  |           Object.assign({}, this.queryParams, this.select) | 
					
						
							|  |  |  |         ) | 
					
						
							|  |  |  |         .then((res) => { | 
					
						
							|  |  |  |           this.tableData = res.rows; | 
					
						
							|  |  |  |           this.total = res.total; | 
					
						
							|  |  |  |           this.loading = false | 
					
						
							|  |  |  |         }); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     handleSelectionChange(val) {}, | 
					
						
							|  |  |  |     /** 导出按钮操作 */ | 
					
						
							|  |  |  |     handleExport() { | 
					
						
							| 
									
										
										
										
											2025-04-01 23:46:26 +08:00
										 |  |  |       this.$confirm('是否确认导出所有数据项?', '警告', { | 
					
						
							|  |  |  |         confirmButtonText: '确定', | 
					
						
							|  |  |  |         cancelButtonText: '取消', | 
					
						
							| 
									
										
										
										
											2025-03-23 09:18:42 +08:00
										 |  |  |         type: "warning", | 
					
						
							|  |  |  |       }).then((_) => { | 
					
						
							|  |  |  |         this.download( | 
					
						
							|  |  |  |           "/member/manager/member/member_consumption_stat_export", | 
					
						
							|  |  |  |           Object.assign({}, this.queryParams, this.select), | 
					
						
							|  |  |  |           `用户消费统计${new Date().getTime()}.xlsx` | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |       }); | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |     tableRowClassName({ row, rowIndex }) { | 
					
						
							|  |  |  |       if (rowIndex % 2 == 1) { | 
					
						
							|  |  |  |         return "warning-row"; | 
					
						
							|  |  |  |       } else if (rowIndex % 2 == 0) { | 
					
						
							|  |  |  |         return "success-row"; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       return ""; | 
					
						
							|  |  |  |     }, | 
					
						
							|  |  |  |   }, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | </script> | 
					
						
							|  |  |  |       <style scoped lang="scss"> | 
					
						
							|  |  |  | ::v-deep .el-table .warning-row { | 
					
						
							|  |  |  |   background: #f9f9f9; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ::v-deep .el-table .success-row { | 
					
						
							|  |  |  |   background: #ffffff; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ::v-deep .el-table thead { | 
					
						
							|  |  |  |   color: #000000; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ::v-deep .el-select { | 
					
						
							|  |  |  |   width: 100%; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .uploadIcon ::v-deep .el-upload--picture-card { | 
					
						
							|  |  |  |   display: none !important; /* 上传按钮隐藏 */ | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .page { | 
					
						
							|  |  |  |   padding: 20px; | 
					
						
							|  |  |  |   background: #f9f9f9; | 
					
						
							|  |  |  |   font-size: 14px; | 
					
						
							|  |  |  |   .main { | 
					
						
							|  |  |  |     background: #ffffff; | 
					
						
							|  |  |  |     border-radius: 8px; | 
					
						
							|  |  |  |     box-shadow: 0px 2px 20px 0px rgba(238, 238, 238, 0.5); | 
					
						
							|  |  |  |     .form_all { | 
					
						
							|  |  |  |       padding: 0px 20px 0 20px; | 
					
						
							|  |  |  |       // margin-bottom: 20px;
 | 
					
						
							|  |  |  |       background: #fff; | 
					
						
							|  |  |  |       border-radius: 8px; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     .maintop { | 
					
						
							|  |  |  |       display: flex; | 
					
						
							|  |  |  |       padding: 0px 0px; | 
					
						
							|  |  |  |       justify-content: space-between; | 
					
						
							|  |  |  |       align-items: center; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |       background: #f8f8f8; | 
					
						
							|  |  |  |       .mainbtn { | 
					
						
							|  |  |  |         .thebtn1 { | 
					
						
							|  |  |  |           background: #3181e5; | 
					
						
							|  |  |  |           color: #ffffff; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         .thebtn2 { | 
					
						
							|  |  |  |           background: #ffad41; | 
					
						
							|  |  |  |           color: #ffffff; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |       .maintitle { | 
					
						
							|  |  |  |         font-size: 10px; | 
					
						
							|  |  |  |         font-family: MicrosoftYaHei; | 
					
						
							|  |  |  |         color: #999999; | 
					
						
							|  |  |  |       } | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .tem { | 
					
						
							|  |  |  |     display: flex; | 
					
						
							|  |  |  |     align-items: center; | 
					
						
							|  |  |  |     justify-content: center; | 
					
						
							|  |  |  |     img { | 
					
						
							|  |  |  |       width: 28px; | 
					
						
							|  |  |  |       height: 20px; | 
					
						
							|  |  |  |       margin-right: 3px; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .isRed { | 
					
						
							|  |  |  |     color: #ed1d25; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .isGreen { | 
					
						
							|  |  |  |     color: #1ab62b; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   .bgImg { | 
					
						
							|  |  |  |     width: 48px; | 
					
						
							|  |  |  |     height: 48px; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .openClose { | 
					
						
							|  |  |  |   text-align: right; | 
					
						
							|  |  |  |   margin-right: 10px; | 
					
						
							|  |  |  |   color: #3181e5; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .dizhi { | 
					
						
							|  |  |  |   ::v-deep .el-cascader { | 
					
						
							|  |  |  |     width: 100%; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ::v-deep .el-date-editor.el-input, | 
					
						
							|  |  |  | .el-date-editor.el-input__inner { | 
					
						
							|  |  |  |   width: auto; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | .lan { | 
					
						
							|  |  |  |   text-decoration: underline; | 
					
						
							|  |  |  |   color: #48b2fd; | 
					
						
							|  |  |  |   cursor: pointer; | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | </style> | 
					
						
							|  |  |  |        |