From e83f7fa1f5648745940863444fed16f7f9135ce7 Mon Sep 17 00:00:00 2001 From: 935090232@qq.com <ak473600000> Date: Sun, 06 Jun 2021 10:34:34 +0800 Subject: [PATCH] 业绩规则3 --- zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java | 75 ++++++ zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java | 41 +++ zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml | 62 +++++ zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java | 8 zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java | 6 zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java | 42 +++ zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java | 2 zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java | 28 ++ zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html | 366 +++++++++++++++++++++++++++++++++ 9 files changed, 626 insertions(+), 4 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java index 2c08183..89e72de 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/bean/AchieveNew.java @@ -26,7 +26,7 @@ /** - * 美疗师id + * 美疗师id 把这个字段视为正式的业绩归属人 */ private Long beaultId; diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java index d8421e3..bcde36d 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java @@ -1,10 +1,15 @@ package com.matrix.system.hive.dao; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.matrix.core.pojo.PaginationVO; import com.matrix.system.app.vo.OrderDetailAchieveItemVo; import com.matrix.system.app.vo.RankingVo; import com.matrix.system.app.vo.UserAchieveVo; import com.matrix.system.hive.bean.AchieveNew; +import com.matrix.system.hive.dto.AchieveNewStatisticsDto; +import com.matrix.system.hive.vo.AchieveNewStatisticsVo; import org.apache.ibatis.annotations.Param; import java.util.Date; @@ -18,7 +23,7 @@ */ -public interface AchieveNewDao{ +public interface AchieveNewDao extends BaseMapper<AchieveNew> { public int insert(@Param("item") AchieveNew achieveNew); @@ -82,4 +87,5 @@ int updateAchieveNumOfPeople(@Param("list") List<AchieveNew> list, @Param("num") Double num); + IPage<AchieveNewStatisticsVo> achieveNewStatistics(Page<AchieveNewStatisticsVo> page, @Param("record")AchieveNewStatisticsDto queryDto); } \ No newline at end of file diff --git a/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java b/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java new file mode 100644 index 0000000..f4b4816 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hive/dto/AchieveNewStatisticsDto.java @@ -0,0 +1,41 @@ +package com.matrix.system.hive.dto; + +import com.google.common.base.CaseFormat; +import com.matrix.core.pojo.BasePageQueryDto; +import com.matrix.core.tools.StringUtils; +import lombok.Data; + +@Data +public class AchieveNewStatisticsDto extends BasePageQueryDto { + + //规则名称 + String achieveRuleId; + + + //业绩归属人id + String staffName; + + + //门店名称 + Long shopId; + + //公司id + Long companyId; + + //订单类型 + String orderType; + + @Override + public void setSort(String sort) { + if(StringUtils.isNotBlank(sort)){ + if ("ruleName".equals(sort)) { + super.setSort("u.name"); + } else { + super.setSort(CaseFormat.LOWER_CAMEL.to + (CaseFormat.LOWER_UNDERSCORE, sort)); + } + }else{ + super.setSort(sort); + } + } +} diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java index 6b84084..201047f 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/AchieveNewServiceImpl.java @@ -299,7 +299,6 @@ for (AchieveNew achieveNew : orderItem.getAchieveList()) { if (achieveNew !=null && achieveNew.getGoodsCash()!=null) { buildAchieve(pageOrder, orderItem, achieveNew); - // 新增美疗师业绩 achieveNewList.add(achieveNew); } } @@ -325,7 +324,10 @@ } achieveNew.setVipId(pageOrder.getVipId()); - achieveNew.setSaleId(pageOrder.getStaffId()); + if(achieveNew.getSaleId()==null){ + achieveNew.setSaleId(pageOrder.getStaffId()); + } + if (pageOrder.getPayTime() != null) { achieveNew.setDatatime(pageOrder.getPayTime()); diff --git a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java index 93553f8..0384cfd 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java @@ -497,6 +497,12 @@ if (!Dictionary.ORDER_STATU_DFK.equals(pageOrder.getStatu())) { throw new GlobleException("该订单已经收过款,请刷新页面再试!"); } + + //交易业绩设置是否合理 + + checkAchieveIsOk(pageOrder); + + // 更新收款时间 pageOrder.setPayTime(new Date()); pageOrder.setStatu(Dictionary.ORDER_STATU_YFK); @@ -533,6 +539,28 @@ } /** + * 交易业绩设置是否合理 + * @param pageOrder + */ + private void checkAchieveIsOk(SysOrder pageOrder) { + double huakouSum = pageOrder.getItems().stream() + .mapToDouble( + item -> + item.getAchieveList().stream() + .filter(achieveNew -> "划扣".equals(achieveNew.getPayMethod())) + .mapToDouble(achieve -> achieve.getGoodsCash()).sum() + ).sum(); + + double czkPay= pageOrder.getFlows().stream() + .filter(sysOrderFlow -> "储值卡".equals(sysOrderFlow.getPayMethod())) + .mapToDouble(sysOrderFlow ->sysOrderFlow.getAmount().doubleValue()).sum(); + + if(czkPay!=huakouSum){ + throw new GlobleException("划扣业绩不等于储值卡扣款金额,请修改业绩设置!"); + } + } + + /** * 设置会员消费积分 * @param pageOrder */ diff --git a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java index 95ac4ed..a53bc40 100644 --- a/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java +++ b/zq-erp/src/main/java/com/matrix/system/hive/statistics/AchieveAction.java @@ -1,5 +1,7 @@ package com.matrix.system.hive.statistics; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.matrix.core.constance.MatrixConstance; import com.matrix.core.pojo.AjaxResult; import com.matrix.core.pojo.PaginationVO; @@ -13,14 +15,17 @@ import com.matrix.system.hive.action.util.QueryUtil; import com.matrix.system.hive.bean.AchieveNew; import com.matrix.system.hive.dao.AchieveNewDao; +import com.matrix.system.hive.dto.AchieveNewStatisticsDto; import com.matrix.system.hive.plugin.util.CollectionUtils; import com.matrix.system.hive.service.AchieveNewService; import com.matrix.system.hive.service.SysOrderItemService; import com.matrix.system.hive.service.SysOrderService; +import com.matrix.system.hive.vo.AchieveNewStatisticsVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.transaction.annotation.Transactional; import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @@ -53,6 +58,27 @@ @Autowired private AchieveNewDao achieveNewDao; + + + /** + * 员工业绩统计 + */ + @PostMapping(value = "/achieveNewStatistics") + public @ResponseBody + AjaxResult achieveNewStatistics(@RequestBody AchieveNewStatisticsDto queryDto){ + SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ + queryDto.setShopId(sysUsers.getShopId()); + } + queryDto.setCompanyId(sysUsers.getCompanyId()); + + Page<AchieveNewStatisticsVo> page = new Page(queryDto.getPageNum(), queryDto.getPageSize()); + IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto); + AjaxResult result = AjaxResult.buildSuccessInstance(rows.getRecords(),rows.getTotal()); + return result; + } + + /** * 门店每日单据明细表 */ @@ -86,6 +112,55 @@ return result; } + @RequestMapping(value = "/exportAchieveNewStatisticsExcel") + public void exportAchieveNewStatisticsExcel(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNewStatisticsDto queryDto) throws IOException { + //这里是从数据库里查数据并组装成我们想要的数据结构的过程 + List<ExcelSheetPO> res = new ArrayList<>(); + ExcelSheetPO orderSheet = new ExcelSheetPO(); + String title = "员工业绩统计"; + orderSheet.setSheetName(title); + orderSheet.setTitle(title); + String[] header = {"规则名称", "门店名称", "业绩归属人", "业绩创建人", "订单金额", "现金", "划扣", "本金消耗", "赠送消耗" + , "服务提成", "人头", "项目个数", "服务时间", "订单类型"}; + orderSheet.setHeaders(header); + SysUsers sysUsers = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); + if(!AppConstance.ZONGDIAN.equals(sysUsers.getShopName())){ + queryDto.setShopId(sysUsers.getShopId()); + } + queryDto.setCompanyId(sysUsers.getCompanyId()); + Page<AchieveNewStatisticsVo> page = new Page(1, Long.MAX_VALUE); + IPage<AchieveNewStatisticsVo> rows = achieveNewDao.achieveNewStatistics(page,queryDto); + List<AchieveNewStatisticsVo> dataList = rows.getRecords(); + List<List<Object>> list = new ArrayList<>(); + if (dataList.size() > 0) { + for (AchieveNewStatisticsVo item : dataList) { + List<Object> temp = new ArrayList<>(); + temp.add(item.getRuleName()); + temp.add(item.getShopName()); + temp.add(item.getGuwen()); + temp.add(item.getCreateBy()); + temp.add(item.getZkTotal()); + temp.add(item.getGoodsCash()); + temp.add(item.getCardCash()); + temp.add(item.getHisConsume()); + temp.add(item.getFreeConsume()); + temp.add(item.getProjPercentage()); + temp.add(item.getNumberOfPeople()); + temp.add(item.getProjNum()); + temp.add(item.getProjTime()); + temp.add(item.getOrderType()); + list.add(temp); + } + } + orderSheet.setDataList(list); + res.add(orderSheet); + response = ResponseHeadUtil.setExcelHead(response); + response.setHeader("Content-Disposition", + "attachment;filename=" + java.net.URLEncoder.encode(title + DateUtil.getTimeMark() + ".xlsx".trim(), "UTF-8")); + OutputStream os = response.getOutputStream(); + com.matrix.core.tools.excl.ExcelUtil.createWorkbookAtOutStream(ExcelVersion.V2007, res, os, true); + } + @RequestMapping(value = "/exportDailyInfoNew") public void exportDailyInfoNew(ModelMap model, HttpServletRequest request, HttpServletResponse response, AchieveNew achieveNew) throws IOException { //这里是从数据库里查数据并组装成我们想要的数据结构的过程 diff --git a/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java b/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java new file mode 100644 index 0000000..b48a597 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/hive/vo/AchieveNewStatisticsVo.java @@ -0,0 +1,42 @@ +package com.matrix.system.hive.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class AchieveNewStatisticsVo { + //规则名称 + String ruleName; + //业绩归属人 + String guwen; + //业绩归属人id + Long gwid; + //订单创建人 + String createBy; + //创建人id + Long createId; + //订单金额 + BigDecimal zkTotal; + //消耗金额 + BigDecimal hisConsume; + //赠送消耗 + BigDecimal freeConsume; + //项目提成 + BigDecimal projPercentage; + // 人头数 + Double numberOfPeople; + //项目数 + Double projNum; + //项目时长 + Integer projTime; + //现金支付 + BigDecimal goodsCash; + //卡项支付 + BigDecimal cardCash; + //门店名称 + String shopName; + //订单类型 + String orderType; + +} diff --git a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml index 0a5ce01..fae293f 100644 --- a/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml +++ b/zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml @@ -1124,6 +1124,68 @@ and date_format(datatime, '%Y-%m-%d') = date_format(#{date}, '%Y-%m-%d') </select> + <select id="achieveNewStatistics" resultType="com.matrix.system.hive.vo.AchieveNewStatisticsVo"> + + select + u.name ruleName, + f.su_name guwen, + f.su_id gwid, + g.su_name createBy, + g.su_id createId, + cast(SUM(b.ZK_TOTAL) AS decimal(15,2)) as zk_total, + cast(SUM(a.his_consume) AS decimal(15,2)) his_consume, + cast(SUM(a.free_consume) AS decimal(15,2)) free_consume, + cast(SUM(a.proj_percentage) AS decimal(15,2)) proj_percentage, + cast(SUM(a.number_of_people) AS decimal(15,2)) number_of_people, + cast(SUM(a.proj_num) AS decimal(15,2)) proj_num, + cast(SUM(case when a.pay_method = '划扣' then goods_cash end )AS decimal(15,2)) card_cash, + cast(SUM(a.proj_time) AS decimal(15,2)) proj_time, + cast(SUM(case when a.pay_method = '现金' then goods_cash end )AS decimal(15,2)) goods_cash, + h.shop_short_name shop_name, + a.order_type + from + achieve_new a + left join sys_order b on a.order_id=b.id + left join sys_vip_info c on a.vip_id=c.id + left join sys_vip_level d on c.LEVEL_ID=d.id + left join shopping_goods e on a.shopping_goods_id=e.id + LEFT JOIN sys_users f on a.beault_id=f.su_id + LEFT JOIN sys_users g on a.sale_id = g.su_id + LEFT JOIN sys_shop_info h ON a.SHOP_ID = h.ID + LEFT JOIN shopping_goods_category i ON e.cate_id = i.id + left join sys_proj_services l on a.service_order_id=l.id + left join sys_order_item j on a.order_item_id=j.ID + left join achieve_rule u on u.id=e.achieve_rule_id + <where> + and a.company_id = #{record.companyId} + <if test="record.shopId != null"> + and a.shop_id = #{record.shopId} + </if> + <if test="record.achieveRuleId != null"> + and u.id = #{record.achieveRuleId} + </if> + + <if test="record.staffName != null and record.staffName!=''"> + <!-- 创建人和归属人都有业绩 --> + and (f.su_name like concat('%',#{record.staffName},'%') or g.su_name like concat('%',#{record.staffName},'%') ) + </if> + + <if test="record.orderType != null and record.orderType != '' "> + and a.order_type= #{record.orderType} + </if> + <if test="record.beginTime != null "> + and a.datatime >= #{record.beginTime} + </if> + <if test="record.endTime != null "> + <![CDATA[and a.datatime <= #{record.endTime}]]> + </if> + + </where> + GROUP BY g.su_id , f.su_id, a.order_type, h.id,a.achieveType + <if test="record.sort !=null and record.sort!=''"> order by ${record.sort} ${record.order}</if> + + </select> + <update id="updateAchieveNumOfPeople"> <foreach collection="list" item="item" index="index" diff --git a/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html new file mode 100644 index 0000000..34ecd48 --- /dev/null +++ b/zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/achieveNewStatiostics.html @@ -0,0 +1,366 @@ +<!DOCTYPE HTML> +<html xmlns:th="http://www.thymeleaf.org" xmlns:matrix="http://www.w3.org/1999/xhtml"> +<head> + <meta charset="utf-8"> + <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> + <meta name="renderer" content="webkit|ie-comp|ie-stand"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width,initial-scale=1,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"/> + <meta http-equiv="Cache-Control" content="no-siteapp"/> + <LINK rel="Bookmark" href="../images/favicon.ico"> + <!-- 本框架基本脚本和样式 --> + <script type="text/javascript" th:src="@{/js/systools/MBaseVue.js}"></script> + <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> + <link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/> + <title></title> + <style> + .panel-body{ + overflow: hidden; + } + .buttonPanel{ + background: #ffffff; + padding: 10px 10px ; + margin: 0px 0px 10px 0px; + } + .rowPanel{ + background: #ffffff; + padding: 0px 10px ; + padding-top: 10px; + margin: 0px 0px 10px 0px; + } + .paginationStyle{ + background: #ffffff; + padding: 10px 10px; + margin: 0px 0px 10px 0px; + text-align: right; + } + </style> +</head> +<body> +<div class="panel-body" id="app"> + + <el-row class="buttonPanel"> + <el-button @click="exportExcel" type="primary" >导出</el-button> + </el-row> + + <el-row class="rowPanel" > + <el-form ref="form" :model="form" inline > + + <el-form-item label="业绩规则" > + <el-select v-model="form.achieveRuleId" filterable placeholder="请选择业绩规则"> + <el-option + v-for="item in achieveRulsList" + :key="item.id" + :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="员工姓名" > + <el-input v-model="form.staffName"></el-input> + </el-form-item> + + + <el-form-item label="统计门店" > + <el-select v-model="form.shopId" placeholder="请选择"> + <el-option + v-for="item in shopList" + :key="item.shopShortName" + :label="item.shopShortName" + :value="item.id"> + </el-option> + </el-select> + </el-form-item> + + + <el-form-item label="订单类型" > + <el-select v-model="form.orderType" placeholder="请选择"> + <el-option + v-for="item in orderTypeList" + :key="item.value" + :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> + + <el-form-item label="统计时间" prop="datetimeArr"> + <el-date-picker + v-model="form.datetimeArr" + type="daterange" + range-separator="至" format="yyyy-MM-dd HH:mm" + start-placeholder="开始日期" + end-placeholder="结束日期"> + </el-date-picker> + </el-form-item> + + <el-button type="primary" @click="search" >搜索</el-button> + <el-button @click="resetForm('form')">重置</el-button> + </el-form> + </el-row> + + <el-row class="table-style" > + + <el-table id="proj" :data="table.rows" :height="height" stripe @sort-change="sortChange"> + <el-table-column + sortable="custom" + prop="ruleName" + label="规则名称" + width="180"> + </el-table-column> + <el-table-column + prop="shopName" + label="门店名称" + show-overflow-tooltip + width="240"> + </el-table-column> + <el-table-column + prop="guwen" + label="业绩归属人" + show-overflow-tooltip + width="180"> + </el-table-column> + <el-table-column + prop="createBy" + label="业绩创建人" + show-overflow-tooltip + width="180"> + </el-table-column> + <el-table-column + sortable="custom" + prop="zkTotal" + label="订单金额"> + </el-table-column> + <el-table-column + sortable="custom" + prop="goodsCash" + label="现金"> + </el-table-column> + <el-table-column + sortable="custom" + prop="cardCash" + label="划扣"> + </el-table-column> + <el-table-column + sortable="custom" + prop="hisConsume" + label="本金消耗"> + </el-table-column> + <el-table-column + sortable="custom" + prop="freeConsume" + label="赠送消耗"> + </el-table-column> + <el-table-column + sortable="custom" + prop="projPercentage" + label="服务提成"> + </el-table-column> + <el-table-column + sortable="custom" + prop="numberOfPeople" + label="人头"> + </el-table-column> + + <el-table-column + sortable="custom" + prop="projNum" + label="项目个数"> + </el-table-column> + + <el-table-column + sortable="custom" + prop="projTime" + label="服务时间"> + </el-table-column> + + <el-table-column + sortable="custom" + prop="orderType" + label="订单类型"> + </el-table-column> + + </el-table> + </el-row> + <el-row class="paginationStyle" > + <el-pagination background + @size-change="changePageSize" + @current-change="changeCurrentPage" + :current-page="table.currentPage" + :page-sizes="[10, 20, 30, 50]" + :page-size="table.pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="table.total"> + </el-pagination> + </el-row> + +</div> +</body> +<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> +<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> +<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> +<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> +<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> +<script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> +<script type="text/javascript" th:inline="javascript"> + + var vue = new Vue({ + el: '#app', + data: { + table:{ + rows:[], + total:0, + pageSize:10, + currentPage:1, + }, + form:{ + achieveRuleId:null, + staffName:null, + shopId:null, + orderType:'', + order:'', + sort:'', + beginTime:'', + endTime:'', + }, + height:'calc(100vh - 240px)', + + //提成规则 + achieveRulsList:[], + //业绩用户列表 + userList: [], + shopList:[{id:0,shopShortName:'全部'}], + + orderTypeList:[ + {value:'',label:'全部'}, + {value:'订单',label:'订单'}, + {value:'服务单',label:'服务单'}, + + ], + }, + created: function () { + let _this=this; + //获取业绩用户列表 + AjaxProxy.requst({ + app: _this, + url: basePath + '/admin/shopAll', + callback: function (data) { + _this.userList = data.rows; + } + }); + AjaxProxy.requst({ + app:_this, + url:basePath+"/admin/shopInfo/findAll", + callback:function (data) { + data.rows.forEach(shop=>{ + _this.shopList.push(shop); + }); + } + + }) + this.getAchieveRule(); + this.loadData(); + window.addEventListener("keydown", this.keydown); + }, + methods: { + changePageSize(val) { + this.table.pageSize = val; + this.loadData(); + }, + changeCurrentPage(val) { + this.table.currentPage = val; + this.loadData(); + }, + resetForm(formName) { + this.$refs[formName].resetFields(); + this.form={ + achieveRuleId:null, + staffName:null, + shopId:null, + orderType:'', + order:'', + sort:'', + beginTime:'', + endTime:'', + }; + }, + sortChange:function (column){ + if(column.order){ + if(column.order.indexOf("desc")){ + this.form.order="desc"; + }else{ + this.form.order="asc"; + } + this.form.sort=column.prop; + this.loadData(); + } + }, + loadData:function(){ + let _this = this; + let data=_this.getRequestParam(); + data.pageSize=_this.table.pageSize; + data.pageNum=_this.table.currentPage; + AjaxProxy.requst({ + app: _this, + data:data, + url: basePath + '/admin/achieve/achieveNewStatistics', + callback: function (data) { + _this.table.rows = data.rows; + _this.table.total=data.total; + } + }); + }, + + /** + * 获取规则 + */ + getAchieveRule(){ + let _this = this; + AjaxProxy.requst({ + app: _this, + data: {pageNum:1,pageSize:1000}, + url: basePath + "/admin/achieveRule/selectList", + callback: function (data) { + _this.achieveRulsList=data.rows; + } + }); + }, + + getRequestParam(){ + let _this = this; + return { + achieveRuleId:_this.form.achieveRuleId, + staffName:_this.form.staffName, + shopId:_this.form.shopId, + orderType:_this.form.orderType, + beginTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[0]).format("YYYY-MM-DD HH:mm"):'', + endTime:_this.form.datetimeArr?moment(_this.form.datetimeArr[1]).format("YYYY-MM-DD HH:mm"):'', + order:_this.form.order, + sort:_this.form.sort, + } + }, + search:function(){ + this.table.currentPage=1; + this.loadData(); + }, + keydown(evt){ + if(evt.keyCode==13) { + this.search(); + } + }, + + //导出 + exportExcel(){ + window.location.href=basePath+"/admin/achieve/exportAchieveNewStatisticsExcel?"+MTools.jsonToUrlParam(this.getRequestParam()); + } + + } + }); + + +</script> +</body> +</html> \ No newline at end of file -- Gitblit v1.9.1