From 4bee38335818a10e5a4f5ec804b69dbec2efad79 Mon Sep 17 00:00:00 2001
From: xiezhijun <15270898033@163.com>
Date: Sat, 27 Mar 2021 19:29:15 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E6=88=90=E8=AF=A6=E6=83=85?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../stdiet/custom/domain/SysCommision.java    |   6 +
 .../domain/SysOrderCommisionDayDetail.java    |   6 +
 .../impl/SysCommissionDayServiceImpl.java     | 136 ++++++++++++--
 .../mapper/custom/SysOrderMapper.xml          |  15 +-
 .../components/OrdercommissDetail/index.vue   | 174 +++++++++++++++---
 .../custom/commision/detail_day/index.vue     |   6 +-
 6 files changed, 298 insertions(+), 45 deletions(-)

diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java
index a1fe6f18a..2ee667379 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysCommision.java
@@ -62,4 +62,10 @@ public class SysCommision extends BaseEntity {
 
     //订单审核状态
     private String reviewStatus;
+
+    //服务开始时间,用于计算该时间段的提成
+    private String serverScopeStartTime;
+
+    //服务结束时间,用于计算该时间段的提成
+    private String serverScopeEndTime;
 }
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderCommisionDayDetail.java b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderCommisionDayDetail.java
index 449d24a61..981507c97 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderCommisionDayDetail.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/domain/SysOrderCommisionDayDetail.java
@@ -18,6 +18,9 @@ public class SysOrderCommisionDayDetail extends BaseEntity {
 
     private static final long serialVersionUID = 1L;
 
+    /**订单ID*/
+    private Long orderId;
+
     /**订单成交时间*/
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime orderTime;
@@ -66,6 +69,9 @@ public class SysOrderCommisionDayDetail extends BaseEntity {
     /**每年每月对应提成*/
     private Map<String, BigDecimal> everyYearMonthServerCommission;
 
+    /**每年每月的提成是否发放**/
+    private Map<String, Boolean> everyYearMonthCommissionSendFlag;
+
     //该笔订单成交的当月的总成交额,用于确定提成比例
     private BigDecimal monthOrderTotalAmount;
 
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java
index 41e40a9a6..1432f75c3 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysCommissionDayServiceImpl.java
@@ -3,6 +3,7 @@ package com.stdiet.custom.service.impl;
 import com.alibaba.fastjson.JSONArray;
 import com.stdiet.common.core.domain.AjaxResult;
 import com.stdiet.common.utils.DateUtils;
+import com.stdiet.common.utils.StringUtils;
 import com.stdiet.custom.domain.*;
 import com.stdiet.custom.dto.request.SysOrderCommision;
 import com.stdiet.custom.dto.response.EveryMonthTotalAmount;
@@ -138,7 +139,14 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
         }
         //获取每个月的提成比例以及计算提成
         Map<String, Float> rateMap = getRateByAmount(userId, postId, everyMonthTotalAmountMap);
+        //总服务金额
+        BigDecimal totalServerAmount = BigDecimal.valueOf(0);
+        //总提成金额
         BigDecimal totalCommission = BigDecimal.valueOf(0);
+        //已发放提成金额
+        BigDecimal totalSendCommission = BigDecimal.valueOf(0);
+        //未发放提成金额
+        BigDecimal totalNotSendCommission = BigDecimal.valueOf(0);
         //根据用户ID获取对应订单列表
         List<SysOrderCommisionDayDetail> orderDetailList = orderUserMap.get(userId);
         for(SysOrderCommisionDayDetail sysOrderCommisionDayDetail : orderDetailList){
@@ -147,18 +155,42 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
             sysOrderCommisionDayDetail.setCommissionRate(rateMap.get(yearMonth));
             //计算该笔订单总提成
             sysOrderCommisionDayDetail.setOrderCommission(getMoney(sysOrderCommisionDayDetail.getOrderAmount().doubleValue() * sysOrderCommisionDayDetail.getCommissionRate() / 100D));
+            //每年每月提成
             Map<String, BigDecimal> everyYearMonthServerCommission = new TreeMap<>(new MyComparator());
+            //每年每月提成是否发放状态
+            Map<String, Boolean> everyYearMonthCommissionSendFlag = new TreeMap<>(new MyComparator());
+            //当前订单的提成总和
+            BigDecimal currentOrderCommission = BigDecimal.valueOf(0);
             for (String everyMonth : sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().keySet()) {
-                everyYearMonthServerCommission.put(everyMonth, getMoney(sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().get(everyMonth).doubleValue() * sysOrderCommisionDayDetail.getCommissionRate() / 100D));
+                if(everyMonth.equals(sysOrderCommisionDayDetail.getServerEndDate().getYear()+""+sysOrderCommisionDayDetail.getServerEndDate().getMonth().getValue())){
+                    //最后一个月的提成直接相减,避免误差
+                    everyYearMonthServerCommission.put(everyMonth, sysOrderCommisionDayDetail.getOrderCommission().subtract(currentOrderCommission));
+                }else{
+                    everyYearMonthServerCommission.put(everyMonth, getMoney(sysOrderCommisionDayDetail.getEveryYearMonthServerMoney().get(everyMonth).doubleValue() * sysOrderCommisionDayDetail.getCommissionRate() / 100D));
+                }
+                //判断是否已发放
+                if(isSendCommissionByYearMonth(everyMonth)){
+                    everyYearMonthCommissionSendFlag.put(everyMonth, true);
+                    totalSendCommission = totalSendCommission.add(everyYearMonthServerCommission.get(everyMonth));
+                }else{
+                    everyYearMonthCommissionSendFlag.put(everyMonth, false);
+                    totalNotSendCommission = totalNotSendCommission.add(everyYearMonthServerCommission.get(everyMonth));
+                }
+                currentOrderCommission = currentOrderCommission.add(everyYearMonthServerCommission.get(everyMonth));
             }
             sysOrderCommisionDayDetail.setEveryYearMonthServerCommission(everyYearMonthServerCommission);
+            sysOrderCommisionDayDetail.setEveryYearMonthCommissionSendFlag(everyYearMonthCommissionSendFlag);
             totalCommission = totalCommission.add(sysOrderCommisionDayDetail.getOrderCommission());
+            totalServerAmount = totalServerAmount.add(sysOrderCommisionDayDetail.getOrderAmount());
         }
         result = AjaxResult.success();
         int total = sysOrderMapper.selectSimpleOrderMessageCount(sysCommision);
         result.put("total", total);
         result.put("list", orderDetailList);
+        result.put("totalServerAmount", totalServerAmount);
         result.put("totalCommission", totalCommission);
+        result.put("totalSendCommission", totalSendCommission);
+        result.put("totalNotSendCommission", totalNotSendCommission);
         return result;
     }
 
@@ -296,7 +328,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
                 continue;
             }
             //对每笔订单进行处理,统计出该比订单在每年每月对应的服务天数、金额、暂停天数等
-            SysOrderCommisionDayDetail sysOrderCommisionDayDetail = statisticsOrderMessage(sysOrder);
+            SysOrderCommisionDayDetail sysOrderCommisionDayDetail = statisticsOrderMessage(sysOrder, sysCommision.getServerScopeStartTime(), sysCommision.getServerScopeEndTime());
             if(sysOrder.getAfterSaleId() != null && sysOrder.getAfterSaleId() > 0L){
                 addUserOrderResultMap(sysOrder.getAfterSaleId(), sysOrderCommisionDayDetail, userOrderResultMap);
             }
@@ -323,7 +355,7 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
     /**
      * 统计每笔订单的服务开始时间、结束时间、每年每月服务天数、服务金额、服务暂停天数等信息
      * */
-    public SysOrderCommisionDayDetail statisticsOrderMessage(SysOrder sysOrder){
+    public SysOrderCommisionDayDetail statisticsOrderMessage(SysOrder sysOrder, String serverScopeStartTime, String serverScopeEndTime){
         //提成计算开始时间(与食谱计划开始时间可能不同)
         LocalDate serverStartDate = DateUtils.dateToLocalDate(sysOrder.getCommissStartTime());
         //订单总服务月数
@@ -349,9 +381,10 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
         //每天对应金额
         BigDecimal dayMoney = getMoney(orderAmount.doubleValue()/serverDay);
         //每年每月对于金额
-        Map<String, BigDecimal> everyYearMonthServerMoney = getEveryMonthServerMoney(everyYearMonthServerDay, orderAmount, dayMoney);
+        Map<String, BigDecimal> everyYearMonthServerMoney = getEveryMonthServerMoney(everyYearMonthServerDay, orderAmount, dayMoney, serverEndDate);
 
         SysOrderCommisionDayDetail sysOrderCommisionDayDetail = new SysOrderCommisionDayDetail();
+        sysOrderCommisionDayDetail.setOrderId(sysOrder.getOrderId());
         sysOrderCommisionDayDetail.setOrderTime(DateUtils.dateToLocalDateTime(sysOrder.getOrderTime()));
         sysOrderCommisionDayDetail.setName(sysOrder.getCustomer());
         sysOrderCommisionDayDetail.setServerStartDate(serverStartDate);
@@ -366,9 +399,50 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
         sysOrderCommisionDayDetail.setEveryYearMonthServerDay(everyYearMonthServerDay);
         sysOrderCommisionDayDetail.setEveryYearMonthServerMoney(everyYearMonthServerMoney);
 
+        if(StringUtils.isNotEmpty(serverScopeStartTime) && StringUtils.isNotEmpty(serverScopeEndTime)){
+            LocalDate realStartTime = DateUtils.stringToLocalDate(serverScopeStartTime, "yyyy-MM-dd");
+            LocalDate realEndTime = DateUtils.stringToLocalDate(serverScopeEndTime, "yyyy-MM-dd");
+            //计算该时间范围内的暂停时间
+            Map<String, Integer> realEveryYearMonthPauseDay = getRealEveryYearMonthPauseDay(sysOrder.getOrderPauseList(), serverStartDate, serverEndDate, realStartTime, realEndTime);
+            //暂停总天数
+            int realPauseTotalDay = getTotalByMap(realEveryYearMonthPauseDay);
+            //计算每年每月服务天数
+            Map<String, Integer> realEveryYearMonthServerDay = getRealEveryYearMonthDayCount(serverStartDate, serverEndDate, realStartTime, realEndTime, everyYearMonthPauseDay);
+            //服务总天数
+            int realServerDay = getTotalByMap(realEveryYearMonthServerDay);
+            //每年每月对于金额
+            Map<String, BigDecimal> realEveryYearMonthServerMoney = getEveryMonthServerMoney(realEveryYearMonthServerDay, orderAmount, dayMoney, serverEndDate);
+            //服务时间范围内暂停天数
+            sysOrderCommisionDayDetail.setPauseTotalDay(realPauseTotalDay);
+            sysOrderCommisionDayDetail.setEveryYearMonthPauseDay(realEveryYearMonthPauseDay);
+            sysOrderCommisionDayDetail.setServerDay(realServerDay);
+            sysOrderCommisionDayDetail.setEveryYearMonthServerDay(realEveryYearMonthServerDay);
+            sysOrderCommisionDayDetail.setEveryYearMonthServerMoney(realEveryYearMonthServerMoney);
+            sysOrderCommisionDayDetail.setOrderAmount(getBigDecimalTotalByMap(realEveryYearMonthServerMoney));
+        }
         return sysOrderCommisionDayDetail;
     }
 
+    /**
+     * 获取真正服务时间范围内的每年每月暂停天数
+     * @Param list 暂停记录集合
+     * */
+    public Map<String, Integer> getRealEveryYearMonthPauseDay(List<SysOrderPause> list, LocalDate serverStartDate, LocalDate serverEndDate, LocalDate realStartDate, LocalDate realEndDate){
+        Map<String, Integer> pauseMap = new TreeMap<>(new MyComparator());
+        if(ChronoUnit.DAYS.between(realEndDate, serverStartDate) > 0 || ChronoUnit.DAYS.between(serverEndDate, realStartDate) > 0){
+            return pauseMap;
+        }
+        //更新服务开始时间
+        if(ChronoUnit.DAYS.between(serverStartDate,realStartDate) > 0){
+            serverStartDate =  realStartDate;
+        }
+        //更新服务结束时间
+        if(ChronoUnit.DAYS.between(realEndDate,serverEndDate) > 0){
+            serverEndDate =  realEndDate;
+        }
+        return getEveryYearMonthPauseDay(list, serverStartDate, serverEndDate);
+    }
+
     /**
      * 获取每年每月暂停天数
      * @Param list 暂停记录集合
@@ -423,6 +497,17 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
         return total;
     }
 
+    /**
+     * 获取Map<String, BigDecimal>集合中BigDecimal的总和
+     * */
+    public BigDecimal getBigDecimalTotalByMap(Map<String, BigDecimal> map){
+        BigDecimal totalBigDecimal = BigDecimal.valueOf(0);
+        for(String key : map.keySet()){
+            totalBigDecimal = totalBigDecimal.add(map.get(key));
+        }
+        return totalBigDecimal;
+    }
+
     /**
      * 获取订单服务时间范围中每年每月服务天数,减去当月暂停天数
      * @Param server_start_date 服务开始时间
@@ -438,27 +523,50 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
      * @Param everyMonthServerDay 每年每月服务天数
      * @Param orderMoney 订单总额
      * @Param dayMoney 每天对于金额
+     * @Param serverEndTime 订单服务结束时间
      * */
-    public Map<String, BigDecimal> getEveryMonthServerMoney(Map<String, Integer> everyMonthServerDay, BigDecimal orderMoney, BigDecimal dayMoney){
+    public Map<String, BigDecimal> getEveryMonthServerMoney(Map<String, Integer> everyMonthServerDay, BigDecimal orderMoney, BigDecimal dayMoney, LocalDate serverEndTime){
         Map<String, BigDecimal > everyMonthServerMoney = new TreeMap<>(new MyComparator());
         Set<String> keySet = everyMonthServerDay.keySet();
         int i = 1;
-        double totalMoney = 0.0;
+        BigDecimal total = BigDecimal.valueOf(0);
         for(String key : keySet){
-            if(i++ != keySet.size()){
-                everyMonthServerMoney.put(key, getMoney(everyMonthServerDay.get(key) * dayMoney.doubleValue()));
-                totalMoney += everyMonthServerMoney.get(key).doubleValue();
+            //System.out.println(serverEndTime.getYear()+""+serverEndTime.getMonth().getValue());
+            //判断是否为最后一个月
+            if(key.equals(serverEndTime.getYear()+""+serverEndTime.getMonth().getValue())){
+                System.out.println(key);
+                //由于小数保留问题,最后一个月的金额等于总额减去前几个月金额,避免总数不一致
+                everyMonthServerMoney.put(key, orderMoney.subtract(total));
             }else{
-                //由于小数点只保留一位,最后一个月的金额等于总额减去前几个月金额,避免总数不一致
-                everyMonthServerMoney.put(key, getMoney(orderMoney.doubleValue() - totalMoney));
+                everyMonthServerMoney.put(key, getMoney(everyMonthServerDay.get(key) * dayMoney.doubleValue()));
+                total = total.add(everyMonthServerMoney.get(key));
             }
         }
         return everyMonthServerMoney;
     }
 
+    /**
+     * 根据订单服务开始日期、订单服务结束日期、营养师或售后实际开始时间、营养师或售后实际结束时间,统计出实际时间范围内每年每月对应的天数
+     * */
+    public Map<String, Integer> getRealEveryYearMonthDayCount(LocalDate startDate, LocalDate endDate, LocalDate realStartDate, LocalDate realEndDate, Map<String, Integer> lessDayMap){
+        Map<String, Integer> everyYearMonthServerDay = new TreeMap<>(new MyComparator());
+        if(ChronoUnit.DAYS.between(realEndDate, startDate) > 0 || ChronoUnit.DAYS.between(endDate, realStartDate) > 0){
+            return everyYearMonthServerDay;
+        }
+        //更新服务开始时间
+        if(ChronoUnit.DAYS.between(startDate,realStartDate) > 0){
+            startDate =  realStartDate;
+        }
+        //更新服务结束时间
+        if(ChronoUnit.DAYS.between(realEndDate,endDate) > 0){
+            endDate =  realEndDate;
+        }
+        return getEveryYearMonthDayCount(startDate, endDate, lessDayMap);
+    }
+
 
     /**
-     * 根据开始日期、结束日期统计出时间范围内每年每月对应的天数
+     * 根据订单开始日期、订单结束日期统计出时间范围内每年每月对应的天数
      * */
     public Map<String, Integer> getEveryYearMonthDayCount(LocalDate startDate, LocalDate endDate, Map<String, Integer> lessDayMap){
         Map<String, Integer> everyYearMonthServerDay = new TreeMap<>(new MyComparator());
@@ -468,8 +576,8 @@ public class SysCommissionDayServiceImpl implements ISysCommissionDayService {
         LocalDate everyMonthLastDate = everyMonthFirstDate.with(TemporalAdjusters.lastDayOfMonth());
         int day = 0;
         boolean breakFlag = false;
-        //写100防止死循环
-        for(int i = 0; i < 100; i++){
+        //写1000防止死循环
+        for(int i = 0; i < 1000; i++){
             if(ChronoUnit.DAYS.between(everyMonthLastDate, endDate) > 0){
                 day = Period.between(everyMonthFirstDate, everyMonthLastDate).getDays() + 1;
             }else{
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml
index 1c4c712f8..84c9e65dd 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysOrderMapper.xml
@@ -400,7 +400,8 @@
       from sys_order o
       left join sys_user su_sale on su_sale.user_id = o.after_sale_id and su_sale.del_flag = 0
       left join sys_user su_nutritionist on su_nutritionist.user_id = o.nutritionist_id and su_nutritionist.del_flag = 0
-      where o.order_time >= '2021-01-01' and o.del_flag = 0
+      where o.order_time >= '2021-01-01' and o.del_flag = 0 and (su_sale.user_id is not null OR su_nutritionist.user_id is not null)
+      and o.amount is not null
         <if test="reviewStatus != null and reviewStatus != ''">
             and review_status = #{reviewStatus}
         </if>
@@ -410,6 +411,9 @@
       <if test="endTime != null and endTime != ''">
           AND DATE_FORMAT(o.order_time,'%Y-%m-%d') &lt;= #{endTime}
       </if>
+        <if test="serverScopeEndTime != null and serverScopeEndTime != ''">
+            AND  #{serverScopeEndTime} >= DATE_FORMAT(o.commiss_start_time,'%Y-%m-%d')
+        </if>
       order by o.order_time desc
     </select>
 
@@ -419,7 +423,8 @@
         from sys_order o
         left join sys_user su_sale on su_sale.user_id = o.after_sale_id and su_sale.del_flag = 0
         left join sys_user su_nutritionist on su_nutritionist.user_id = o.nutritionist_id and su_nutritionist.del_flag = 0
-        where o.order_time >= '2021-01-01' and o.del_flag = 0
+        where o.order_time >= '2021-01-01' and o.del_flag = 0 and (su_sale.user_id is not null OR su_nutritionist.user_id is not null)
+        and o.amount is not null
         <if test="reviewStatus != null and reviewStatus != ''">
             and review_status = #{reviewStatus}
         </if>
@@ -429,6 +434,9 @@
         <if test="endTime != null and endTime != ''">
             AND DATE_FORMAT(o.order_time,'%Y-%m-%d') &lt;= #{endTime}
         </if>
+        <if test="serverScopeEndTime != null and serverScopeEndTime != ''">
+            AND  #{serverScopeEndTime} >= DATE_FORMAT(o.commiss_start_time,'%Y-%m-%d')
+        </if>
         order by o.order_time desc
     </select>
 
@@ -440,7 +448,8 @@
           FROM sys_order o
           LEFT JOIN sys_user su_sale ON su_sale.user_id = o.after_sale_id AND su_sale.del_flag = 0
           LEFT JOIN sys_user su_nutritionist ON su_nutritionist.user_id = o.nutritionist_id AND su_nutritionist.del_flag = 0
-          where o.order_time >= '2021-01-01' and o.del_flag = 0
+          where o.order_time >= '2021-01-01' and o.del_flag = 0 and (su_sale.user_id is not null OR su_nutritionist.user_id is not null)
+          and o.amount is not null
           <if test="reviewStatus != null and reviewStatus != ''">
             and o.review_status = #{reviewStatus}
           </if>
diff --git a/stdiet-ui/src/components/OrdercommissDetail/index.vue b/stdiet-ui/src/components/OrdercommissDetail/index.vue
index 6529b1dd6..1b3c5c932 100644
--- a/stdiet-ui/src/components/OrdercommissDetail/index.vue
+++ b/stdiet-ui/src/components/OrdercommissDetail/index.vue
@@ -5,19 +5,53 @@
       :close-on-press-escape="false"
       :visible.sync="visible"
       @closed="handleOnClosed"
-      size="63%"
+      size="65%"
     >
-      <div class="order_drawer_wrapper" height="84%">
+      <div class="order_drawer_wrapper" >
+        <div style="margin-left:40px">
+          <el-form
+            ref="queryForm"
+            :inline="true"
+            v-show="true"
+            label-width="100px"
+          >
+            <el-form-item label="服务时间范围" prop="dateScope">
+              <el-date-picker
+                v-model="serverDateScope"
+                type="daterange"
+                range-separator="至"
+                start-placeholder="开始日期"
+                end-placeholder="结束日期"
+                format="yyyy-MM-dd"
+                value-format="yyyy-MM-dd"
+              
+              >
+              </el-date-picker>
+            </el-form-item>
+            <el-form-item>
+              <el-button type="cyan" icon="el-icon-search" size="small" @click="fetchOrderList">搜索</el-button>
+              <el-button icon="el-icon-refresh" size="small" @click="resetQueryForm">重置</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
         <div
-          class="header"
-          style="float: right; margin-bottom: 20px; margin-right: 60px"
+          class="order_total_data"
         >
-          <span style="font-size:14px;margin-top:-200px"
+       <span class="order_total_data_span_right20">
+            当前页总服务金额:{{totalServerAmount}}元
+          </span>
+          <span class="order_total_data_span_right20"
             >当前页总提成:{{ totalCommission }}元</span
           >
+          <span class="order_total_data_span_right20"
+            >已发放总提成:{{ totalSendCommission }}元</span
+          >
+          <span class="order_total_data_span"
+            >未发放总提成:{{ totalNotSendCommission }}元</span
+          >  
         </div>
-
-        <el-table :data="orderList" v-loading="loading">
+        <div style="width:100%;height:80%;overflow: auto">
+        <el-table :data="orderList" v-loading="loading" stripe>
           <el-table-column
             label="订单成交时间"
             prop="orderTime"
@@ -31,7 +65,7 @@
             width="100"
           ></el-table-column>
           <el-table-column
-            label="订单金额"
+            label="服务金额"
             prop="orderAmount"
             align="center"
             width="100"
@@ -77,7 +111,7 @@
             label="暂停天数"
             prop="pauseTotalDay"
             align="center"
-            width="100"
+            width="80"
           ></el-table-column>
 
           <el-table-column
@@ -87,7 +121,7 @@
             width="100"
           ></el-table-column>
           <el-table-column
-            label="当月总额"
+            label="当月成交额"
             prop="monthOrderTotalAmount"
             align="center"
             width="100"
@@ -96,7 +130,7 @@
             label="提成比例"
             prop="commissionRate"
             align="center"
-            width="100"
+            width="80"
           >
             <template slot-scope="scope">
               {{ scope.row.commissionRate + "%" }}
@@ -108,7 +142,7 @@
             align="center"
             width="100"
           >
-           <template slot-scope="scope">
+            <template slot-scope="scope">
               {{ scope.row.orderCommission }}
               <el-popover
                 placement="top-start"
@@ -117,7 +151,8 @@
                 trigger="hover"
               >
                 <div
-                  v-for="(item, index) in scope.row.everyYearMonthServerCommission"
+                  v-for="(item, index) in scope.row
+                    .everyYearMonthServerCommission"
                   :key="index"
                 >
                   {{ item }}
@@ -126,10 +161,36 @@
               </el-popover>
             </template>
           </el-table-column>
-
-          
+          <el-table-column
+            label="操作"
+            align="center"
+            width="100"
+          >
+            <template slot-scope="scope">
+              <el-button
+                size="mini"
+                type="text"
+                @click="handleOnDetailClick(scope.row)"
+                >订单详情</el-button
+              >
+            </template>
+          </el-table-column> 
         </el-table>
-
+        </div>
+        <!--<div style="float: right; margin-right: 40px">
+          <span style="font-size:14px;margin-top:-200px;margin-right:20px">
+            当前页总服务金额:{{totalServerAmount}}元
+          </span>
+          <span style="font-size:14px;margin-top:-200px;margin-right:20px"
+            >当前页总提成:{{ totalCommission }}元</span
+          >
+          <span style="font-size:14px;margin-top:-200px;margin-right:20px"
+            >已发放总提成:{{ totalSendCommission }}元</span
+          >
+          <span style="font-size:14px;margin-top:-200px"
+            >未发放总提成:{{ totalNotSendCommission }}元</span
+          >  
+        </div>-->
         <pagination
           v-show="total > 0"
           :total="total"
@@ -139,16 +200,22 @@
           :pageSizes="[10, 15, 30, 50, 100]"
         >
         </pagination>
+        
       </div>
     </el-drawer>
+
+    <order-detail ref="orderDetailRef" />
   </div>
 </template>
 <script>
 import { orderDetailDay } from "@/api/custom/commision";
+import OrderDetail from "@/components/OrderDetail";
 
 export default {
   name: "OrdercommissDetail",
-  components: {},
+  components: {
+    "order-detail": OrderDetail,
+  },
   data() {
     return {
       visible: false,
@@ -158,60 +225,98 @@ export default {
       orderList: [],
       queryParam: {},
       total: 0,
+      totalServerAmount: 0,
       totalCommission: 0,
-      serverDayList: ["1月:30", "2月:20"],
+      totalSendCommission: 0,
+      totalNotSendCommission: 0,
+      serverDateScope: null,
     };
   },
   computed: {},
   methods: {
     showDrawer(data) {
       this.data = data;
+      this.serverDateScope = null;
       if (!this.data) {
         return;
       }
-      (this.queryParam = {
+      this.queryParam = {
         pageNum: 1,
         pageSize: 10,
-      }),
-        (this.queryParam.userId = this.data.userId);
+      },
+      this.queryParam.userId = this.data.userId;
       this.queryParam.reviewStatus = this.data.reviewStatus;
       this.queryParam.endTime = this.data.endTime;
-      this.title = `「${this.data.name}」订单提成列表`;
+      this.title = `「${this.data.name}`;
+      if (this.data.yearMonth) {
+        this.title += " 截止" + `${this.data.yearMonth}`;
+      }
+      if (this.queryParam.reviewStatus) {
+        this.title +=
+          this.queryParam.reviewStatus == "yes" ? " 已审核" : " 未审核";
+      }
+      this.title += " 订单提成列表」";
       this.visible = true;
-
       this.fetchOrderList();
     },
     fetchOrderList() {
       this.loading = true;
+      this.queryParam.serverScopeStartTime = this.serverDateScope && this.serverDateScope.length > 0 ? this.serverDateScope[0] : null;
+      this.queryParam.serverScopeEndTime = this.serverDateScope && this.serverDateScope.length > 0 ? this.serverDateScope[1] : null;
       orderDetailDay(this.queryParam).then((res) => {
         //console.log(res);
         if (res.code == 200) {
           this.orderList = this.dealOrderList(res.list);
           this.total = res.total;
+          this.totalServerAmount = res.totalServerAmount;
           this.totalCommission = res.totalCommission;
+          this.totalSendCommission = res.totalSendCommission;
+          this.totalNotSendCommission = res.totalNotSendCommission;
         }
         this.loading = false;
       });
     },
     handleOnClosed() {
       this.data = undefined;
+      this.serverDateScope = null;
     },
     dealOrderList(orderList) {
       //处理每个月的服务天数
       orderList.forEach((item, index) => {
         let everyYearMonthServerDayArray = [];
         for (let yearMonth in item.everyYearMonthServerDay) {
-          everyYearMonthServerDayArray.push(yearMonth.slice(0, 4) +"-" + yearMonth.slice(4) + ":" + item.everyYearMonthServerDay[yearMonth] + "天");
+          everyYearMonthServerDayArray.push(
+            yearMonth.slice(0, 4) +
+              "-" +
+              yearMonth.slice(4) +
+              ":" +
+              item.everyYearMonthServerDay[yearMonth] +
+              "天"
+          );
         }
         item.everyYearMonthServerDay = everyYearMonthServerDayArray;
         let everyYearMonthServerCommissionArray = [];
         for (let commissYearMonth in item.everyYearMonthServerCommission) {
-          everyYearMonthServerCommissionArray.push(commissYearMonth.slice(0, 4) +"-" +commissYearMonth.slice(4) +":" + item.everyYearMonthServerCommission[commissYearMonth]);
+          everyYearMonthServerCommissionArray.push(
+            commissYearMonth.slice(0, 4) +
+              "-" +
+              commissYearMonth.slice(4) +
+              ":" +
+              item.everyYearMonthServerCommission[commissYearMonth]
+              + (item.everyYearMonthCommissionSendFlag[commissYearMonth] ? '  已发放' : '  未发放')
+          );
         }
         item.everyYearMonthServerCommission = everyYearMonthServerCommissionArray;
       });
       return orderList;
     },
+    resetQueryForm(){
+      this.serverDateScope = null;
+      this.fetchOrderList();
+    },
+    handleOnDetailClick(data) {
+      this.$refs.orderDetailRef.showDialog(data.orderId);
+    },
   },
 };
 </script>
@@ -223,4 +328,23 @@ export default {
 .order_drawer_wrapper {
   height: calc(100vh - 77px);
 }
+
+.order_total_data {
+  float: right; 
+  margin-right: 40px; 
+  margin-bottom:20px
+}
+
+.order_total_data_span_right20 {
+  font-size:16px;
+  margin-top:-200px;
+  margin-right:20px;
+}
+
+.order_total_data_span {
+  font-size:16px;
+  margin-top:-200px;
+}
+
+
 </style>
diff --git a/stdiet-ui/src/views/custom/commision/detail_day/index.vue b/stdiet-ui/src/views/custom/commision/detail_day/index.vue
index 6fd2bbea1..22dec651b 100644
--- a/stdiet-ui/src/views/custom/commision/detail_day/index.vue
+++ b/stdiet-ui/src/views/custom/commision/detail_day/index.vue
@@ -157,11 +157,11 @@
             @click="openFormDialog('查看发放计划', scope.row)"
             >查看发放计划</el-button
           >
-          <el-button
+          <!--<el-button
             type="text"
             @click="handleDetailClick(scope.row)"
             >查看订单详情</el-button
-          >
+          >-->
         </template>
       </el-table-column>
 
@@ -419,7 +419,7 @@ export default {
         dayjs(this.month).startOf("month").format("YYYY-MM-DD"),
         dayjs(this.month).endOf("month").format("YYYY-MM-DD"),
       ];
-      this.$refs["ordercommissDetailRef"].showDrawer(this.addDateRange({'name': row.nickName, 'userId': row.userId, 'reviewStatus': this.queryParams.reviewStatus}, dateRange));
+      this.$refs["ordercommissDetailRef"].showDrawer(this.addDateRange({'yearMonth': dayjs(this.month).endOf("month").format("YYYY-MM-DD"),'name': row.nickName, 'userId': row.userId, 'reviewStatus': this.queryParams.reviewStatus}, dateRange));
     },
     getSummaries(param) {
       //param 是固定的对象,里面包含 columns与 data参数的对象 {columns: Array[4], data: Array[5]},包含了表格的所有的列与数据信息