358 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
		
		
			
		
	
	
			358 lines
		
	
	
		
			8.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
|  | <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"> | ||
|  |               <el-form-item :label="$t('MN_T_1')" prop="memberCode"> | ||
|  |                 <el-input | ||
|  |                   clearable | ||
|  |                   v-model="select.memberCode" | ||
|  |                   :placeholder="$t('S_C_70')" | ||
|  |                 ></el-input> | ||
|  |               </el-form-item> | ||
|  |             </el-col> | ||
|  |             <el-col :span="4"> | ||
|  |               <el-form-item :label="$t('MN_F_T_612')" prop="orderType"> | ||
|  |                 <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"> | ||
|  |               <el-form-item :label="$t('MN_F_T_916')"> | ||
|  |                 <el-date-picker | ||
|  |                   v-model="creationTime" | ||
|  |                   @change="changeTime" | ||
|  |                   value-format="yyyy-MM-dd" | ||
|  |                   type="daterange" | ||
|  |                   :range-separator="$t('w_0139')" | ||
|  |                   :start-placeholder="$t('CK_KS_4')" | ||
|  |                   :end-placeholder="$t('CK_KS_5')" | ||
|  |                 > | ||
|  |                 </el-date-picker> | ||
|  |               </el-form-item> | ||
|  |             </el-col> | ||
|  |             <el-col :span="4"> | ||
|  |               <el-button type="primary" @click="getDataList"> | ||
|  |                 {{ $t("MN_T_2") }}</el-button | ||
|  |               > | ||
|  |               <el-button type="" @click="reset"> {{ $t("MN_T_3") }}</el-button> | ||
|  |             </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" | ||
|  |           > | ||
|  |             {{ $t("MN_T_8") }}</el-button | ||
|  |           > | ||
|  |         </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" | ||
|  |             :label="$t('MN_T_1')" | ||
|  |           > | ||
|  |           </el-table-column> | ||
|  | 
 | ||
|  |           <el-table-column | ||
|  |             align="center" | ||
|  |             prop="memberName" | ||
|  |             :label="$t('CK_KS_14')" | ||
|  |           > | ||
|  |           </el-table-column> | ||
|  |           <el-table-column | ||
|  |             align="center" | ||
|  |             prop="orderAmount" | ||
|  |             :label="$t('MY_ORD_6')" | ||
|  |           > | ||
|  |           </el-table-column> | ||
|  |           <el-table-column | ||
|  |             align="center" | ||
|  |             prop="orderAchieve" | ||
|  |             :label="`${$t('MY_ORD_16')}(PV)`" | ||
|  |           > | ||
|  |           </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() { | ||
|  |       this.$confirm(this.$t("MN_F_T_407"), this.$t("MN_F_T_304"), { | ||
|  |         confirmButtonText: this.$t("w_0035"), | ||
|  |         cancelButtonText: this.$t("ENU_P_TYPE0"), | ||
|  |         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> | ||
|  |        |