jyy
2021-01-19 0a67d6a24417507a27e03d53da82bbd802257148
Merge remote-tracking branch 'origin/api' into api
2 files added
21 files modified
1185 ■■■■ changed files
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java 11 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/vo/VipAchieveDataShowVo.java 6 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java 2 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/pojo/CzXkVo.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java 13 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/statistics/DailySaleVo.java 10 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/hive/statistics/SysBusinessDataAction.java 28 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java 31 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml 27 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml 9 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-sale-list.html 157 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/cz-form-bak.html 239 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/cz-form.html 559 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html 22 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html 7 ●●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/pbxq-form.html 15 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html 2 ●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html 1 ●●●● patch | view | raw | blame | history
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-sale-list.html 16 ●●●● patch | view | raw | blame | history
zq-erp/src/main/java/com/matrix/system/app/action/ApiCommonAction.java
@@ -47,6 +47,7 @@
 * @author wzy
 * @date 2020-12-21
 **/
@CrossOrigin(origins = "*")
@Api(value = "CommonAction", tags = "手机端公共请求类(含登陆)")
@RestController
@RequestMapping(value = "/api/common")
zq-erp/src/main/java/com/matrix/system/app/action/ApiRankingAction.java
@@ -59,18 +59,15 @@
    @PostMapping(value = "/findShopAchieveRanking")
    public AjaxResult findShopAchieveRanking(@RequestBody RankingDto rankingDto) {
        AjaxResult ajaxResult = AjaxResult.buildSuccessInstance("");
        if (RankingDto.SALE.equals(rankingDto.getDataType())) {
            AchieveNew achieveNew = new AchieveNew();
            QueryUtil.setQueryLimitCom(achieveNew);
            achieveNew.setType(rankingDto.getType());
        achieveNew.setT1(rankingDto.getType());
            achieveNew.setDatatime(new Date());
            List<RankingVo> list = achieveNewDao.selectShopConsumeAchieveRanking(achieveNew);
        if (RankingDto.SALE.equals(rankingDto.getDataType())) {
            List<RankingVo> list = achieveNewDao.selectShopSaleAchieveRanking(achieveNew);
            ajaxResult.setRows(list);
        } else {
            AchieveNew achieveNew = new AchieveNew();
            QueryUtil.setQueryLimitCom(achieveNew);
            achieveNew.setDatatime(new Date());
            achieveNew.setT1(rankingDto.getType());
            List<RankingVo> rankingVos = achieveNewDao.selectShopConsumeAchieveRanking(achieveNew);
            ajaxResult.setRows(rankingVos);
        }
zq-erp/src/main/java/com/matrix/system/app/vo/VipAchieveDataShowVo.java
@@ -21,10 +21,10 @@
    @ApiModelProperty(value = "现金业绩")
    private BigDecimal cashAmount;
    @ApiModelProperty(value = "售卡业绩")
    @ApiModelProperty(hidden = true)
    private BigDecimal cardAmount;
    @ApiModelProperty(value = "产品业绩")
    @ApiModelProperty(value = "订单提成")
    private BigDecimal goodsAmount;
    @ApiModelProperty(value = "划扣业绩")
@@ -36,7 +36,7 @@
    @ApiModelProperty(value = "赠送消耗")
    private BigDecimal freeConsume;
    @ApiModelProperty(value = "提成")
    @ApiModelProperty(value = "服务提成")
    private BigDecimal commission;
    @ApiModelProperty(value = "人头数")
zq-erp/src/main/java/com/matrix/system/hive/action/MoneyCardUseController.java
@@ -61,14 +61,12 @@
     * @author jyy
     */
    @RequestMapping(value = "/editFormCz")
    public String editFormCz() {
        SysVipInfo info =
                (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER);
        MoneyCardUse cardUseInfo = cardUseService.findByVipId(info.getId());
    public String editFormCz(Long id) {
        MoneyCardUse cardUseInfo = cardUseService.findByVipId(id);
        if (cardUseInfo == null) {
            cardUseInfo = new MoneyCardUse();
            cardUseInfo.setVipId(info.getId());
            cardUseInfo.setVipId(id);
            cardUseInfo.setCardName("储值卡");
            cardUseInfo.setIsVipCar(Dictionary.FLAG_YES_Y);
            cardUseInfo.setRealMoney(0D);
@@ -90,7 +88,7 @@
     */
    @RequestMapping(value = "/cz")
    public @ResponseBody
    AjaxResult cz(CzXkVo czVo) {
    AjaxResult cz(@RequestBody CzXkVo czVo) {
        SysOrder order=  orderService.updateAddCardMoney(czVo);
        AjaxResult result = new AjaxResult(AjaxResult.STATUS_SUCCESS, "充值成功");
        result.putInMap("orderId",order.getId());
zq-erp/src/main/java/com/matrix/system/hive/dao/AchieveNewDao.java
@@ -66,6 +66,8 @@
    List<RankingVo> selectShopConsumeAchieveRanking(@Param("record") AchieveNew achieveNew);
    List<RankingVo> selectShopSaleAchieveRanking(@Param("record") AchieveNew achieveNew);
    List<RankingVo> selectBeauticianConsumeAchieveRanking(@Param("record") AchieveNew achieveNew);
    List<AchieveNew> selectOrderItemAchieveByOrderId(Long orderId);
zq-erp/src/main/java/com/matrix/system/hive/pojo/CzXkVo.java
@@ -1,6 +1,7 @@
package com.matrix.system.hive.pojo;
import com.matrix.system.hive.bean.AchieveNew;
import com.matrix.system.hive.bean.SysOrderFlow;
import java.util.List;
@@ -18,6 +19,15 @@
    private Long vipId;
    private List<AchieveNew> achaeveList;
    
    private List<SysOrderFlow> flows;
    public List<SysOrderFlow> getFlows() {
        return flows;
    }
    public void setFlows(List<SysOrderFlow> flows) {
        this.flows = flows;
    }
     
    public Long getCardId() {
        return cardId;
zq-erp/src/main/java/com/matrix/system/hive/service/imp/SysOrderServiceImpl.java
@@ -1135,11 +1135,11 @@
    public SysOrder updateAddCardMoney(CzXkVo czVo) {
        SysUsers user = (SysUsers) WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY);
        SysVipInfo vip = (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER);
        czVo.setVipId(vip.getId());
//        SysVipInfo vip = (SysVipInfo) WebUtil.getSession().getAttribute(SystemConstance.CURRENT_CUSTOMER);
//        czVo.setVipId(vip.getId());
        //更新会员会员卡金额
        MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(vip.getId());
        MoneyCardUse cardUser = moneyCardUseDao.selectVipCard(czVo.getVipId());
        cardUser.setRealMoney(MoneyUtil.add(cardUser.getRealMoney(), czVo.getBjmoney()));
        cardUser.setGiftMoney(MoneyUtil.add(cardUser.getGiftMoney(), czVo.getGiftMoney()));
        moneyCardUseDao.update(cardUser);
@@ -1170,6 +1170,7 @@
        order.setStaffId(user.getSuId());
        order.setIsCross(2 + "");
        order.setStatu(Dictionary.ORDER_STATU_YFK);
        order.setCompanyId(user.getCompanyId());
        sysOrderDao.insert(order);
        SysOrderItem orderItem = new SysOrderItem();
@@ -1189,6 +1190,9 @@
        orderItem.setStatus(Dictionary.ORDER_STATU_YFK);
        orderItem.setAchaeveList(czVo.getAchaeveList());
        orderItemDao.insert(orderItem);
        List<SysOrderItem> items = new ArrayList<>();
        items.add(orderItem);
        order.setItems(items);
        //设置卡项使用流水
@@ -1204,7 +1208,8 @@
        moneyCardUseFlow.setBalance(cardUser.getGiftMoney()+cardUser.getRealMoney());
        moneyCardUseFlowDao.insert(moneyCardUseFlow);
        order.setFlows(czVo.getFlows());
        changeOrderStatu(order);
        // 添加员工业绩
        achieveNewService.addAchaeveByOrder(order);
        return order;
zq-erp/src/main/java/com/matrix/system/hive/statistics/DailySaleVo.java
@@ -18,6 +18,8 @@
    private String shopName;
    private BigDecimal shouldPay;
    private BigDecimal totalPay;
    private BigDecimal cashPay;
@@ -100,6 +102,14 @@
    private Long shopId;
    public BigDecimal getShouldPay() {
        return shouldPay;
    }
    public void setShouldPay(BigDecimal shouldPay) {
        this.shouldPay = shouldPay;
    }
    public BigDecimal getWechat() {
        return wechat;
    }
zq-erp/src/main/java/com/matrix/system/hive/statistics/SysBusinessDataAction.java
@@ -60,22 +60,46 @@
    @RequestMapping(value = "/findDailySaleData")
    @ResponseBody
    public AjaxResult findDailySaleData(DailySaleVo dailySaleVo, PaginationVO pageVo) {
        SysUsers user = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY);
        Calendar calendar = Calendar.getInstance();
        int total = 999;
        Date endDate = new Date();
        if (dailySaleVo.getEndTime() != null) {
            if (!dailySaleVo.getEndTime().after(new Date())) {
                calendar.setTime(dailySaleVo.getEndTime());
                endDate = DateUtil.nextNDate(dailySaleVo.getEndTime(), 1);
            }
        }
        calendar.add(Calendar.DATE, 1);
        calendar.add(Calendar.DATE, -pageVo.getOffset());
        String endTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
        calendar.add(Calendar.DATE, -pageVo.getLimit());
        String startTime = DateUtil.dateToString(calendar.getTime(), DateUtil.DATE_FORMAT_DD);
        if (dailySaleVo.getBeginTime() != null) {
            Date startDate = DateUtil.stringToDate(startTime, DateUtil.DATE_FORMAT_DD);
            if(dailySaleVo.getBeginTime().after(startDate)) {
                startTime = DateUtil.dateFormatStr(dailySaleVo.getBeginTime(), DateUtil.DATE_FORMAT_DD);
            }
            long sub = DateUtil.getTimeSpan(dailySaleVo.getBeginTime(), endDate, null);
            Long l = sub / (1000 * 3600 * 24);
            total = l.intValue();
        }
        List<Date> xAxis = StatisticsTimeUtil.getTimeSpace(startTime, endTime, "日");
        List<StatisticsTimeDaoParam> timeSpaceParam = StatisticsTimeUtil.buidParam(xAxis);
        List<StatisticsTimeDaoParam> statisticsTimeDaoParams = timeSpaceParam.subList(0, timeSpaceParam.size() - 2);
        if (dailySaleVo.getShopId() == null) {
            dailySaleVo.setShopId(user.getShopId());
        }
        List<DailySaleVo> dailySaleVos = sysBusinessDataDao.selectDailySaleData(statisticsTimeDaoParams, dailySaleVo.getShopId());
        List<DailySaleVo> result = new ArrayList<>();
        for (int i = dailySaleVos.size() - 1; i >= 0; i--) {
            result.add(dailySaleVos.get(i));
        }
        return AjaxResult.buildSuccessInstance(result);
        return AjaxResult.buildSuccessInstance(result, total);
    }
}
zq-erp/src/main/java/com/matrix/system/shopXcx/mqTask/OrderTask.java
@@ -9,9 +9,7 @@
import com.matrix.system.common.dao.BusParameterSettingsDao;
import com.matrix.system.constance.Dictionary;
import com.matrix.system.hive.bean.*;
import com.matrix.system.hive.dao.SysOrderDao;
import com.matrix.system.hive.dao.SysOrderItemDao;
import com.matrix.system.hive.dao.SysVipInfoDao;
import com.matrix.system.hive.dao.*;
import com.matrix.system.hive.service.CodeService;
import com.matrix.system.hive.service.ShoppingGoodsService;
import com.matrix.system.hive.service.SysOrderService;
@@ -24,6 +22,7 @@
import com.rabbitmq.client.DeliverCallback;
import com.rabbitmq.client.Delivery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
@@ -34,6 +33,7 @@
/**
 * 微商城订单同步到erp系统
 */
@Component
public class OrderTask implements DeliverCallback {
@@ -73,6 +73,12 @@
    @Autowired
    BusParameterSettingsDao parameterSettingsDao;
    @Autowired
    private SysOrderFlowDao sysOrderFlowDao;
    @Autowired
    private ShoppingGoodsDao shoppingGoodsDao;
    @Transactional(rollbackFor = Exception.class)
    public void createOrder(ShopOrder orderDto) {
@@ -86,7 +92,7 @@
        }
        //获取订单归属门店
        order.setCompanyId(bizUser.getCompanyId());
        order.setCompanyId(vipInfo.getCompanyId());
        order.setShopId(Long.parseLong(orderDto.getStoreId()+""));
        //同步的订单订单编号保持一致
        order.setOrderNo(orderDto.getOrderNo());
@@ -100,6 +106,7 @@
        order.setCashPay(orderDto.getOrderMoney().doubleValue());
        order.setTotal(orderDto.getOrderMoney().doubleValue());
        order.setZkTotal(orderDto.getOrderMoney().doubleValue());
        order.setPayTime(new Date());
        order.setArrears(0);
        int i = sysOrderDao.insert(order);
        // 创建订单明细,并计算总价与折扣总价
@@ -188,13 +195,21 @@
        orderService.setShopSelCount(sourceOrder);
        SysOrderFlow flow = new SysOrderFlow();
        flow.setFlowNo(codeService.getFlowCode() + "-" + i);
        Long goodsId = sourceOrder.getItems().get(0).getGoodsId();
        ShoppingGoods goods = shoppingGoodsDao.selectById(goodsId);
        flow.setFlowContent(goods.getName() + "等" + sourceOrder.getItems().size() + "件产品");
        flow.setOrderId(sourceOrder.getId());
        flow.setVipId(sourceOrder.getVipId());
        flow.setFlowType(SysOrderFlow.FLOW_TYPE_BUY);
        flow.setAmount(orderDto.getOrderMoney());
        flow.setPayMethod("微信");
        List<SysOrderFlow> flows = new ArrayList<>();
        flows.add(flow);
        sourceOrder.setFlows(flows);
        orderService.updateAfterMoney(sourceOrder);
        flow.setShopId(sourceOrder.getShopId());
        flow.setCompanyId(sourceOrder.getCompanyId());
        sysOrderFlowDao.insert(flow);
    }
zq-erp/src/main/resources/mybatis/mapper/hive/AchieveNewDao.xml
@@ -964,7 +964,7 @@
        select
            b.shop_short_name name,
            b.SHOP_IMAG photo,
            sum(IFNULL(a.free_consume,0) + IFNULL(a.consume,0) + IFNULL(a.his_consume,0)) amount
            sum(IFNULL(a.free_consume,0) + IFNULL(a.his_consume,0)) amount
        from achieve_new a
        left join sys_shop_info b on a.shop_id=b.ID
        <where>
@@ -1060,4 +1060,29 @@
        group by b.su_id
        order by amount desc, b.su_id
    </select>
    <select id="selectShopSaleAchieveRanking" resultType="com.matrix.system.app.vo.RankingVo">
        select
            b.shop_short_name name,
            b.SHOP_IMAG photo,
            sum(IFNULL(a.consume,0) + IFNULL(a.card_cash,0)) amount
        from achieve_new a
        left join sys_shop_info b on a.shop_id=b.ID
        <where>
            <if test="record.companyId != null">
                and a.company_id=#{record.companyId}
            </if>
            <if test='record.t1 == "1" and record.datatime != null'>
                and date_format(datatime, '%Y-%m-%d') = date_format(#{record.datatime}, '%Y-%m-%d')
            </if>
            <if test='record.t1 == "2" and record.datatime != null'>
                and date_format(datatime, '%Y-%m') = date_format(#{record.datatime}, '%Y-%m')
            </if>
            <if test='record.t1 == "3" and record.datatime != null'>
                and date_format(datatime, '%Y') = date_format(#{record.datatime}, '%Y')
            </if>
        </where>
        group by a.shop_id
        order by amount desc, a.shop_id
    </select>
</mapper>
zq-erp/src/main/resources/mybatis/mapper/hive/SysBusinessDataDao.xml
@@ -804,6 +804,13 @@
        <foreach collection="list" index="index" item="item"   separator="union all"  >
            select
            #{item.beginTime} dataTime,
            (select shop_short_name from sys_shop_info where id=#{shopId}) shopName,
            (select sum(total) shouldPay from sys_order
                where STATU in ('已付款', '欠款') and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]>
                <if test="shopId != null">
                    and shop_id=#{shopId}
                </if>
                ) shouldPay,
            (select IFNULL(sum(amount),0) from sys_order_flow
            where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]> and pay_method!='欠款'
            <if test="shopId != null">
@@ -932,7 +939,7 @@
        from sys_order_flow
        where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime} ]]>
        <if test="shopId != null">
            and a.shop_id=#{shopId}
            and shop_id=#{shopId}
        </if>
        group by paymethod
    </sql>
zq-erp/src/main/resources/mybatis/mapper/hive/TjVipSumDao.xml
@@ -232,7 +232,7 @@
        <foreach collection="list" index="index" item="item"   separator="union all"  >
            select
                #{item.beginTime} time,
                (select ifnull(sum(card_cash),0) from achieve_new a where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) orderAmount,
                (select ifnull(sum(ifnull(card_cash,0) + ifnull(consume,0)),0) from achieve_new a where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) orderAmount,
                (select ifnull(sum(case t3 when '现金业绩' then card_cash else 0 end),0) from achieve_new a where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) cashAmount,
                (select ifnull(sum(case t3 when '划扣业绩' then consume else 0 end),0) from achieve_new a where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) cardAmount,
                (select ifnull(sum(case t3 when '划扣业绩' then consume else 0 end),0) from achieve_new a where a.beault_id=#{userId} and <![CDATA[datatime > #{item.beginTime} and datatime < #{item.endTime} ]]>) cardUseAmount,
zq-erp/src/main/resources/templates/views/admin/hive-erp/statistics/daily-sale-list.html
New file
@@ -0,0 +1,157 @@
<!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/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script>
</head>
<body class="gray-bg">
    <div class="ibox-content">
        <!-- 搜索框部分start -->
        <form class="form-inline" id="serchform">
            <div class="form-group mr-20">
                <label>日期范围</label>
                <input name="beginTime" type="text" class="form-control datetimepicker" id="beginTime">-
                <input name="endTime"  type="text" class="form-control datetimepicker" id="endTime">
            </div>
            <div class="form-group mr-20">
                <label>门店</label>
                <select class="form-control autoFull" data-filed="shopName" name="shopId" id="shopId"
                        th:data-url="@{/admin/shopInfo/findShops}">
                    <option value=''>--请选择部所属门店--</option>
                </select>
            </div>
            <div class="row mb-10">
                <div class="col-sm-8">
                    <button  onclick="myGrid.serchData()" type="button" class="btn btn-info btn-sm"><i class="fa fa-search" ></i> 搜索</button>
                    <button  type="reset"   class="btn btn-default btn-sm"><i class="fa fa-refresh " ></i> 重置</button>
<!--                    <button  matrix:btn="ygyjbb-exportExcel"  onclick="exportExcel()" type="button" class="btn btn-default btn-sm"><i class="fa fa-download" ></i> 导出</button>-->
                </div>
            </div>
        </form>
        <table id="mgrid">
            <thead>
                <tr>
                    <th data-formatter="MGrid.indexfn" data-align="center"
                        data-width="30px">序号</th>
                    <th data-field="dataTime">日期</th>
                    <th data-field="shopName">门店名称</th>
                    <th data-field="shouldPay" data-formatter="shouldPayFormat">应收金额</th>
                    <th data-field="totalPay">实收金额</th>
                    <th data-field="shouldPay" data-formatter="zkAmountFormat">折扣金额</th>
                    <th data-field="perCustomCnt">客单数</th>
                    <th data-field="customGoodsCnt">客品数</th>
                    <th data-field="cost">成本</th>
                    <th data-field="grossProfit">毛利</th>
                    <th data-field="grossProfitRate">毛利率</th>
                    <th data-field="wechat">微信</th>
                    <th data-field="alipay">支付宝</th>
                    <th data-field="cash">现金</th>
                    <th data-field="bankCard">银行卡</th>
                    <th data-field="tuan">团购</th>
                    <th data-field="cardBj">本金收款</th>
                    <th data-field="cardFree">赠金收款</th>
                    <th data-field="arrears">欠款</th>
                </tr>
            </thead>
        </table>
    </div>
    <script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script>
    <script type="text/javascript" th:src="@{/js/function/public.js}"></script>
    <script type="text/javascript">
        var myGrid;
        var initParam = {
                format : "yyyy-mm-dd", //默认显示年与日,如果想显示十分秒:"yyyy-mm-dd hh:ii:ss"
                minView: "month",     //"month",只显示年月日的选择,不会再跳转去选择时分秒;如果想要选择时分秒的:"hour"
            }
         MTools.ininDatetimepicker(initParam);
        //限制结束时间不小于开始时间
         MTools.limitStartEndTime({});
        $(function() {
            MTools.autoFullSelect();
            $(".select2").select2();
            myGrid = MGrid.initGrid({
                url : basePath+"/admin/sysBusinessData/findDailySaleData",
                showExport : true,
                showFooter : false,
                height:'auto',
                width:'auto',
                exportDataType : "basic", //basic', 'all', 'selected'.
                exportTypes : [ 'excel', 'xlsx' ], //导出类型
                exportOptions : {
                    ignoreColumn : [ 0 ],
                    fileName : "客户消费统计" + MTools.getTime(), //文件名称设置
                    worksheetName : 'Sheet1', //表格工作区名称
                    tableName : '客户消费统计',
                    excelstyles : [ 'background-color', 'color', 'font-size',
                            'font-weight' ],
                }
            });
            $('[data-toggle="tooltip"]').tooltip()
        });
        function shouldPayFormat(value, row, index) {
            return row.shouldPay + row.refund;
        }
        function zkAmountFormat(value, row, index) {
            return row.shouldPay + row.refund - row.totalPay;
        }
        function footCountTitle(data) {
            return "<b>合计</b>";
        };
        function countColumn(data) {
            if (data) {
                var resultsumQuantity = parseFloat(data).toFixed(2);//保留有效数字
                return resultsumQuantity;
            } else {
                return "-";
            }
        };
        function buildVipNameJump(value, row, index) {
            return '<a  onClick="vipDetail(\'' + row.t9 +'\')"   class="text-primary " >'+value+'</a>';
        }
        function vipDetail(value) {
            layer.full(layer.open({
                type : 2,
                title : "订单详情",
                maxmin : true,
                area : MUI.SIZE_M,
                content : [basePath+'/admin/redirect/hive/beautySalon/vip?vipPhone=' + value ]
            }));
        }
        function exportExcel(){
            var param=MForm.toUrlParam("#serchform");
            window.location.href=basePath+"/admin/achieve/exportDailyInfoNew?"+param;
        }
    </script>
</body>
</html>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/bj-form.html
@@ -303,6 +303,13 @@
                            }
                        } else {
                            Vue.set(item,'isActive',true);
                            var hasAmount = 0;
                            for(var i = 0; i < payMoneys.length; i++) {
                                hasAmount += parseFloat(payMoneys[i].money);
                            }
                            if (_this.order.arrears - hasAmount > 0) {
                                Vue.set(item, 'money', _this.order.arrears - hasAmount);
                            }
                            _this.payMoneys.push(item);
                        }
                    });
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/cz-form-bak.html
New file
@@ -0,0 +1,239 @@
<!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/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript"
    th:src="@{/js/systools/MBase.js}"></script>
<title></title>
</head>
<div class="ibox-content">
        <form th:if="${obj ne null }" class="form-horizontal" id="dataform"
            onsubmit="javascripr:return false;">
            <input autocomplete="off"   type="hidden" name="cardId" th:value="${obj.id }">
            <div class="form-group">
                <label class="col-sm-2 control-label">余额</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" th:value="${obj.realMoney}"
                        readonly="readonly">
                    <div class="Validform_checktip"></div>
                </div>
                <label class="col-sm-2 control-label">充值时间</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   name="dateTime" type="text" datatype="*"
                           class="form-control  datetimepicker" nullmsg="充值时间不能为空"
                           style="display: inline;"
                           th:value="${#dates.format(new java.util.Date().getTime(), 'yyyy-MM-dd')}">
                    <div class="Validform_checktip"></div>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">充值金额</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" name="bjmoney" value="0"
                           onchange="changePayMoney('p0',this)"
                           datatype="*" nullmsg="充值金额不能为空">
                    <div class="Validform_checktip"></div>
                </div>
                <label class="col-sm-2 control-label">赠送金额</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" value="0" dataType="n1-8"
                        name="giftMoney" />
                    <div class="Validform_checktip"></div>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">赠送积分</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" value="0" dataType="n1-8"
                           name="jf" />
                    <div class="Validform_checktip"></div>
                </div>
                <label class="col-sm-2 control-label">下单顾问</label>
                <div class="col-sm-4">
                    <select class="autoFull select2 " style="width: 100%"
                        th:data-url="@{/admin/getShopStaffByRoleName?roleName=健康顾问}"
                        data-value="suId" data-filed="suName"
                        th:data-def="${session.userInfo.suId }" name="staffId">
                    </select>
                </div>
            </div>
            <div class="row ">
                <div class="col-sm-10 pd-20 col-sm-offset-1">
                    <div class="panel-body">
                        <table class="table   table-condensed   ">
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>商品名称</th>
                                    <th>分配金额</th>
                                    <th>美疗师业绩</th>
                                    <th>操作</th>
                                </tr>
                            </thead>
                            <tbody id="tbody2">
                                <tr id="p0">
                                    <td>1</td>
                                    <td>会籍卡充值</td>
                                    <td>0</td>
                                    <td>
                                        <table class="table   table-condensed   ">
                                            <tr>
                                                <td><select class="autoFull select2 input-sm" style="width: 80px;"
                                                    th:data-url="@{/admin/getShopStaffByRoleName?roleName=美疗师}"
                                                    data-value="suId" data-filed="suName"
                                                    th:data-def="${session.userInfo.suId }"
                                                    name="achaeveList[0].beaultId">
                                                </select></td>
                                                <td><input autocomplete="off"   type="text" class="form-control input-sm" value="0"
                                                    style="width: 80px" name="achaeveList[0].t1"></td>
                                                <td><button class="btn btn-danger btn-sm"
                                                        onclick="deleteBeaute(this)">删除</button></td>
                                            </tr>
                                        </table>
                                    </td>
                                    <td><a class="btn btn-default btn-sm"
                                        onclick="addBeaute('p0','0')">添加</a></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            <div class="form-group ">
                <div class="col-sm-12 text-center">
                    <a href="javascript:;" onclick="myForm.submit()"
                        class="btn btn-success radius">保存</a> &nbsp;&nbsp;&nbsp;&nbsp;
                    <button onclick="MTools.closeForm()" class="btn btn-danger radius"
                        type="button">取消</button>
                </div>
            </div>
        </form>
    </c:if>
        <div th:if="${obj eq null }" class="text-center text-info">
            <h2>该会员没有可用的会员卡!</h2>
        </div>
</div>
<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script><script type="text/javascript">
    $('.select2 ').select2();
    MTools.autoFullSelect();
    MTools.ininDatetimepicker({});
    var myForm = MForm.initForm({
        invokeUrl : basePath+"/admin/moneyCardUse/cz",
        isAutoClose : false,
        beforeSubmit : function() {
            //校验业绩
            var ifAchieveOk = true;
            var achieveSum = 0;
            $("#tbody2").children("tr").each(
                    function() {
                        var tr = $(this);
                        var pay = parseFloat(tr.find("td").eq(2).html());
                        tr.find("td").eq(3).find("table").find("tr").each(
                                function() {
                                    var achieve = parseFloat($(this).find("td")
                                            .eq(1).find("input").val());
                                    achieveSum += achieve;
                                });
                        if (achieveSum > pay) {
                            ifAchieveOk = false;
                        }
                    });
            if(isNaN(achieveSum)){
                layer.msg("业绩金额格式错误", {
                    icon : 2
                })
                return false;
            }
            if (!ifAchieveOk) {
                layer.msg("业绩金额不能大于支付金额", {
                    icon : 2
                })
                return false;
            }
        },
        afterSubmit : function(loj) {
            layer.open({
                type: 2,
                title: "打印订单",
                area: ['250px', '550px'],
                maxmin: true,
                content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + loj.getResult().mapInfo.orderId],
                cancel: function (index, layer) {
                    if (parent.app) {
                        parent.app.vipInfoFn();
                    } else {
                        parent.selectByKey();
                    }
                    MTools.closeForm();
                }
            });
        },
    });
    //添加一个美疗师
    function addBeaute(trId, itemIndex) {
        if (!itemIndex) {
            itemIndex = 0;
        }
        var id = MTools.randomStr();
        console.log(1);
        var table = $("#" + trId).find("td").eq(3).find("table")
        var achieveIndex = $("#" + trId).find("td").eq(3).find("table").find(
                "tr").length;
        var html = '<tr> <td><select class="autoFull select2 input-sm" id="'+id+'"  name="achaeveList['+achieveIndex+'].beaultId" '
                +'data-url="'+basePath+'/admin/getShopStaffByRoleName?roleName=美疗师" data-value="suId" data-filed="suName" data-def=""'
            +'name="beatuyId"> </select></td> <td><input autocomplete="off"   type="text" class="form-control input-sm"  value="0" style="width: 80px"  name="achaeveList['+achieveIndex+'].t1" '
            +'name="items['+achieveIndex+'].zkPrice" ></td> <td><button class="btn btn-danger btn-sm"  onclick="deleteBeaute(this)" >删除</button></td> </tr>';
        $("#" + trId).find("td").eq(3).find("table").append(html);
        $('#' + id).select2({
            'width' : '80px'
        });
        MTools.autoFullSelect({
            selecteder : '#' + id
        });
    };
    //删除一个美疗师
    function deleteBeaute(node) {
        $(node).closest("tr").remove();
    }
    //修改收款金额
    function changePayMoney(trId, node) {
        console.log(trId, node);
        $("#" + trId).find("td").eq(2).html($(node).val());
    };
</script>
</body>
</html>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/cz-form.html
@@ -10,230 +10,385 @@
<meta http-equiv="Cache-Control" content="no-siteapp" />
<LINK rel="Bookmark" href="../images/favicon.ico">
<!-- 本框架基本脚本和样式 -->
<script type="text/javascript"
    th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
<script type="text/javascript"
    th:src="@{/js/systools/MBase.js}"></script>
<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>
        .paymethod ul {
            padding: 0;
            margin: 0;
            height: 50px;
        }
        .paymethod ul li {
            padding: 10px;
            margin: 5px;
            list-style:none;
            float: left;
            display: block;
            cursor: pointer;
            position: relative;
            border: white 1px solid;
        }
        .paymethod ul li:hover {
            border: #409EFF 1px solid;
        }
        .paymethod .active {
            border: #409EFF 1px solid;
        }
        .paymethod .active::after {
            content: '';
            display: block;
            height: 0px;
            width: 0px;
            position: absolute;
            bottom: 0;
            right: 0;
            color:#fff;
            /**对号大小*/
            font-size: 10px;
            line-height: 8px;
            border: 3px solid;
            border-color: transparent #4884ff #4884ff transparent;
        }
        .el-dialog__body {
            padding-top: 10px !important;
        }
    </style>
</head>
<div class="ibox-content">
<div class="panel-body" id="app">
    <el-dialog title="充值" :visible.sync="dialogSettleVisible" :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false">
        <el-row type="flex" align="middle" style="padding: 0 0 10px 0;">
            <el-col :span="5" style="text-align: center;">充值金额</el-col>
            <el-col :span="10" style="text-align: center; line-height: 50px;">
                <el-input v-model="rechargeMoney" placeholder="0.1元起充"></el-input>
            </el-col>
        </el-row>
        <form th:if="${obj ne null }" class="form-horizontal" id="dataform"
            onsubmit="javascripr:return false;">
            <input autocomplete="off"   type="hidden" name="cardId" th:value="${obj.id }">
            <div class="form-group">
                <label class="col-sm-2 control-label">余额</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" th:value="${obj.realMoney}"
                        readonly="readonly">
                    <div class="Validform_checktip"></div>
                </div>
                <label class="col-sm-2 control-label">充值时间</label>
                <div class="col-sm-4">
        <el-row type="flex" align="middle" style="padding: 10px 0;">
            <el-col :span="5" style="text-align: center;">收款方式</el-col>
            <el-col class="paymethod" :span="15">
                <el-row>
                    <ul>
                        <span v-for="(item, index) in payMethods">
                            <li :class="{active : item.isActive}" @click="payMethodSelect(item, index)"><div style=" height:30px; line-height: 30px; display: flex; align-items: center"><img style="width: 25px; height: 25px; align-items: center;" :src="item.img"><span style="margin-left: 5px;">{{item.value}}</span></div></li>
                        </span>
                    </ul>
                </el-row>
            </el-col>
        </el-row>
                    <input autocomplete="off"   name="dateTime" type="text" datatype="*"
                           class="form-control  datetimepicker" nullmsg="充值时间不能为空"
                           style="display: inline;"
                           th:value="${#dates.format(new java.util.Date().getTime(), 'yyyy-MM-dd')}">
                    <div class="Validform_checktip"></div>
                </div>
        <el-row type="flex" align="middle" style="padding: 10px 0 50px 0;">
            <el-col :span="5" style="text-align: center;">支付金额</el-col>
            <el-col :span="15">
                <el-row style="line-height: 50px;" v-for="(item, index) in payMoneys">
                    <el-col :span="6" style="text-align: right; padding-right: 10px; font-size: 12px;">{{item.value}}</el-col>
                    <el-col :span="8"><el-input v-model="item.money"></el-input></el-col>
                </el-row>
            </el-col>
        </el-row>
        <el-row type="flex" align="middle" style="padding: 10px 0 50px 0;">
            <el-col :span="5" style="text-align: center;">业绩</el-col>
            <el-col :span="16">
                <el-table class="mt-20"
                          :border="true"
                          :data="achieveList"
                          style="width: 100%">
                    <el-table-column
                            type="index"
                            width="50">
                    </el-table-column>
                    <el-table-column
                            label="业绩" width="100">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.achieveMoney"></el-input>
                        </template>
                    </el-table-column>
                    <el-table-column
                            label="提成">
                        <template slot-scope="scope">
                            <el-input v-model="scope.row.commission"></el-input>
                        </template>
                    </el-table-column>
                    <el-table-column
                            label="员工" width="130">
                        <template slot-scope="scope">
                            <el-select v-model="scope.row.saleId" placeholder="请选择员工">
                                <el-option
                                        v-for="item in userList"
                                        :key="item.suId"
                                        :label="item.suName"
                                        :value="item.suId">
                                </el-option>
                            </el-select>
                        </template>
                    </el-table-column>
                    <el-table-column
                            width="150"
                            label="操作">
                        <template slot-scope="scope">
                            <el-button type="primary" v-if="scope.row.isShare"
                                       size="mini"
                                       @click="delAchieve(scope.$index, scope.row)">删除
                            </el-button>
                            <el-tooltip content="分享业绩" placement="top">
                                <el-button @click="shareAchieve(scope.$index, scope.row)" icon="el-icon-share"
                                           size="mini" type="primary"></el-button>
                            </el-tooltip>
                        </template>
                    </el-table-column>
                </el-table>
            </el-col>
        </el-row>
            </div>
            <div class="form-group">
        <el-row style="text-align: center; margin: 20px 0 10px 0">
            <el-checkbox v-model="printPaper">打印小票</el-checkbox>
        </el-row>
                <label class="col-sm-2 control-label">充值金额</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" name="bjmoney" value="0"
                           onchange="changePayMoney('p0',this)"
                           datatype="*" nullmsg="充值金额不能为空">
                    <div class="Validform_checktip"></div>
        <el-row style="text-align: center; margin: 10px 0 0 0">
            <el-button type="primary" @click="submitRecharge">确认收款</el-button>
            <el-button type="danger" @click="cancelSubmit">取消</el-button>
        </el-row>
    </el-dialog>
                </div>
<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:inline="javascript">
    var vipId = $.query.get("vipId");
                <label class="col-sm-2 control-label">赠送金额</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" value="0" dataType="n1-8"
                        name="giftMoney" />
                    <div class="Validform_checktip"></div>
                </div>
            </div>
            <div class="form-group">
                <label class="col-sm-2 control-label">赠送积分</label>
                <div class="col-sm-4">
                    <input autocomplete="off"   type="text" class="form-control" value="0" dataType="n1-8"
                           name="jf" />
                    <div class="Validform_checktip"></div>
                </div>
                <label class="col-sm-2 control-label">下单顾问</label>
                <div class="col-sm-4">
                    <select class="autoFull select2 " style="width: 100%"
                        th:data-url="@{/admin/getShopStaffByRoleName?roleName=健康顾问}"
                        data-value="suId" data-filed="suName"
                        th:data-def="${session.userInfo.suId }" name="staffId">
                    </select>
                </div>
            </div>
            <div class="row ">
                <div class="col-sm-10 pd-20 col-sm-offset-1">
                    <div class="panel-body">
                        <table class="table   table-condensed   ">
                            <thead>
                                <tr>
                                    <th>序号</th>
                                    <th>商品名称</th>
                                    <th>分配金额</th>
                                    <th>美疗师业绩</th>
                                    <th>操作</th>
                                </tr>
                            </thead>
                            <tbody id="tbody2">
                                <tr id="p0">
                                    <td>1</td>
                                    <td>会籍卡充值</td>
                                    <td>0</td>
                                    <td>
                                        <table class="table   table-condensed   ">
                                            <tr>
                                                <td><select class="autoFull select2 input-sm" style="width: 80px;"
                                                    th:data-url="@{/admin/getShopStaffByRoleName?roleName=美疗师}"
                                                    data-value="suId" data-filed="suName"
                                                    th:data-def="${session.userInfo.suId }"
                                                    name="achaeveList[0].beaultId">
                                                </select></td>
                                                <td><input autocomplete="off"   type="text" class="form-control input-sm" value="0"
                                                    style="width: 80px" name="achaeveList[0].t1"></td>
                                                <td><button class="btn btn-danger btn-sm"
                                                        onclick="deleteBeaute(this)">删除</button></td>
                                            </tr>
                                        </table>
                                    </td>
                                    <td><a class="btn btn-default btn-sm"
                                        onclick="addBeaute('p0','0')">添加</a></td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                </div>
            </div>
            <div class="form-group ">
                <div class="col-sm-12 text-center">
                    <a href="javascript:;" onclick="myForm.submit()"
                        class="btn btn-success radius">保存</a> &nbsp;&nbsp;&nbsp;&nbsp;
                    <button onclick="MTools.closeForm()" class="btn btn-danger radius"
                        type="button">取消</button>
                </div>
            </div>
        </form>
    </c:if>
        <div th:if="${obj eq null }" class="text-center text-info">
            <h2>该会员没有可用的会员卡!</h2>
        </div>
</div>
<script type="text/javascript" th:src="@{/js/systools/MJsBase.js}"></script><script type="text/javascript">
    $('.select2 ').select2();
    MTools.autoFullSelect();
    MTools.ininDatetimepicker({});
    var myForm = MForm.initForm({
        invokeUrl : basePath+"/admin/moneyCardUse/cz",
        isAutoClose : false,
        beforeSubmit : function() {
            //校验业绩
            var ifAchieveOk = true;
            var achieveSum = 0;
            $("#tbody2").children("tr").each(
                    function() {
                        var tr = $(this);
                        var pay = parseFloat(tr.find("td").eq(2).html());
                        tr.find("td").eq(3).find("table").find("tr").each(
                                function() {
                                    var achieve = parseFloat($(this).find("td")
                                            .eq(1).find("input").val());
                                    achieveSum += achieve;
                                });
                        if (achieveSum > pay) {
                            ifAchieveOk = false;
                        }
                    });
            if(isNaN(achieveSum)){
                layer.msg("业绩金额格式错误", {
                    icon : 2
                })
                return false;
            }
            if (!ifAchieveOk) {
                layer.msg("业绩金额不能大于支付金额", {
                    icon : 2
                })
                return false;
            }
    //<![CDATA[
    var vue = new Vue({
        el: '#app',
        data : {
            cardInfo : "",
            loginUser : "",
            rechargeMoney : "",
            payMethods: [{
                value: '现金支付',
                img: '/images/pay/cash.png',
                isActive: false,
                type: '现金支付'
            }, {
                value: '微信',
                img: '/images/pay/wechat.png',
                isActive: false,
                type: '微信'
            }, {
                value: '支付宝',
                img: '/images/pay/zhifubao.png',
                isActive: false,
                type: '支付宝'
            }, {
                value: '银行卡',
                img: '/images/pay/yinlian.png',
                isActive: false,
                type: '银行卡'
            }, {
                value: '团购',
                img: '/images/pay/tuan.png',
                isActive: false,
                type: '团购'
            }, ],
            dialogSettleVisible : true,
            defaultProps: {
                children: 'children',
                label: 'showLable'
        },
        afterSubmit : function(loj) {
            achieveList : [],
            userList: [],
            treeSelect : [],
            payMoneys : [],
            printPaper : false,
        },
        created : function() {
            let _this = this;
            this.cardInfo = /*[[${obj}]]*/
            //获取用户列表
            AjaxProxy.requst({
                app: _this,
                url: basePath + '/admin/shopAll',
                callback: function (data) {
                    _this.userList = data.rows;
                }
            });
            //获取登录用户信息
            AjaxProxy.requst({
                app: _this,
                url: basePath + '/admin/getLoginUser',
                callback: function (data) {
                    _this.loginUser = data.mapInfo.user;
                    _this.achieveList.push({
                        saleId: _this.loginUser.suId,
                        achieveMoney: 0,
                        commission : 0,
                        isShare: false,
                    });
                }
            });
        },
        methods : {
            submitRecharge() {
                let _this = this;
                if (!_this.rechargeMoney) {
                    this.$message.warning("请输入充值金额");
                    return;
                }
                if (_this.rechargeMoney < 0.1) {
                    this.$message.warning("0.1元起充");
                    return;
                }
                if (_this.payMoneys.length > 0) {
                    let flows = []
                    var total = 0;
                    _this.payMoneys.forEach(item => {
                        let flow = {};
                        flow.payMethod = item.type;
                        if (!item.money) {
                            this.$message.warning("请输入" + item.type + "的付款金额");
                            return false;
                        }
                        flow.amount = item.money;
                        total += item.money;
                        flows.push(flow);
                    })
                    if (total != _this.rechargeMoney) {
                        this.$message.warning("付款金额应等于充值金额");
                        return false;
                    }
                    _this.cardInfo.flows = flows;
                } else {
                    this.$message.warning("请选择支付方式");
                    return false;
                }
                let achaeveList = [];
                _this.achieveList.forEach(achieve => {
                    let achieveNew = {
                        beaultId: achieve.saleId,
                        t1: achieve.achieveMoney,
                        t3: '现金业绩',
                        projPercentage: achieve.commission,
                    };
                    achaeveList.push(achieveNew);
                })
                _this.cardInfo.bjmoney = _this.rechargeMoney;
                _this.cardInfo.achaeveList = achaeveList;
                let url = basePath + "/admin/moneyCardUse/cz";
                console.log(_this.cardInfo);
                AjaxProxy.requst({
                    app: _this,
                    data: _this.cardInfo,
                    url: url,
                    callback: function (data) {
                        if (_this.printPaper) {
                            _this.print();
                        }
                        if(parent.myGrid) {
                            parent.myGrid.serchData();
                        }
                        if (parent.app) {
                            parent.app.vipInfoFn();
                        }
                        _this.closeFrame();
                    }
                });
            },
            cancelSubmit() {
                this.closeFrame();
            },
            print() {
                let _this = this;
                if (_this.order.id) {
            layer.open({
                type: 2,
                title: "打印订单",
                area: ['250px', '550px'],
                maxmin: true,
                content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + loj.getResult().mapInfo.orderId],
                cancel: function (index, layer) {
                    if (parent.app) {
                        parent.app.vipInfoFn();
                    } else {
                        parent.selectByKey();
                    }
                    MTools.closeForm();
                        content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + this.order.id],
                        cancel: function (index, layero) {
                            _this.closeFram();
                }
            });
                } else {
                    this.$message.warning("请先挂单在打印");
                }
        },
    });
    //添加一个美疗师
    function addBeaute(trId, itemIndex) {
        if (!itemIndex) {
            itemIndex = 0;
        }
        var id = MTools.randomStr();
        console.log(1);
        var table = $("#" + trId).find("td").eq(3).find("table")
        var achieveIndex = $("#" + trId).find("td").eq(3).find("table").find(
                "tr").length;
        var html = '<tr> <td><select class="autoFull select2 input-sm" id="'+id+'"  name="achaeveList['+achieveIndex+'].beaultId" '
                +'data-url="'+basePath+'/admin/getShopStaffByRoleName?roleName=美疗师" data-value="suId" data-filed="suName" data-def=""'
            +'name="beatuyId"> </select></td> <td><input autocomplete="off"   type="text" class="form-control input-sm"  value="0" style="width: 80px"  name="achaeveList['+achieveIndex+'].t1" '
            +'name="items['+achieveIndex+'].zkPrice" ></td> <td><button class="btn btn-danger btn-sm"  onclick="deleteBeaute(this)" >删除</button></td> </tr>';
        $("#" + trId).find("td").eq(3).find("table").append(html);
        $('#' + id).select2({
            'width' : '80px'
        });
        MTools.autoFullSelect({
            selecteder : '#' + id
        });
    };
    //删除一个美疗师
    function deleteBeaute(node) {
        $(node).closest("tr").remove();
            payMethodSelect(item, index) {
                let _this = this;
                let payMoneys = _this.payMoneys;
                let rechargeMoney = _this.rechargeMoney;
                if (!rechargeMoney) {
                    this.$message.warning("请输入充值金额");
                    return;
    }
    //修改收款金额
    function changePayMoney(trId, node) {
        console.log(trId, node);
        $("#" + trId).find("td").eq(2).html($(node).val());
    };
                if (rechargeMoney < 0.1) {
                    this.$message.warning("0.1元起充");
                    return;
                }
                if (item.type != '储值卡') {
                    this.$nextTick(function () {
                        if (item.isActive) {
                            Vue.set(item,'isActive',false);
                            var index = -1;
                            for (var i = 0; i < payMoneys.length; i++) {
                                let payMoney = payMoneys[i];
                                if (payMoney.value == item.value) {
                                    index = i;
                                    break;
                                }
                            }
                            if (index > -1) {
                                _this.payMoneys.splice(index, 1)
                            }
                        } else {
                            Vue.set(item,'isActive',true);
                            var hasAmount = 0;
                            for(var i = 0; i < payMoneys.length; i++) {
                                hasAmount += parseFloat(payMoneys[i].money);
                            }
                            if (_this.rechargeMoney - hasAmount > 0) {
                                Vue.set(item, 'money', _this.rechargeMoney - hasAmount);
                            }
                            _this.payMoneys.push(item);
                        }
                    });
                }
            },
            closeFrame() {
                parent.layer.close(parent.layer.getFrameIndex(window.name));
            },
            shareAchieve(index, row) {
                row2 = JSON.parse(JSON.stringify(row));
                row2.isShare = true;
                this.achieveList.push(row2);
            },
            //删除业绩
            delAchieve(index, row) {
                this.achieveList.splice(index, 1);
            },
        }
    });
    //]]>
</script>
</body>
</html>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/order-form.html
@@ -951,17 +951,30 @@
                            }
                            if (item.uuid == achieve.orderItem.uuid) {
                                let achieveNew = {
                                    uuid:item.uuid,
                                    beaultId: achieve.saleId,
                                    t1: achieve.achieveMoney,
                                    t3: achieve.t3,
                                    projPercentage: achieve.commission,
                                };
                                var flag = true;
                                for(var j = 0; j < item.achaeveList.length; j++) {
                                    if(item.achaeveList[j].uuid == achieveNew.uuid && item.achaeveList[j].beaultId == achieveNew.beaultId) {
                                        flag = false;
                                        break;
                                    }
                                }
                                if (flag) {
                                item.achaeveList.push(achieveNew);
                                }
                                break;
                            }
                        }
                    })
                    console.log(_this.order);
                    //校验业绩金额
                    if (_this.checkAchieve()) {
                        let url = basePath + "/admin/order/payOrder";
@@ -982,7 +995,7 @@
                                    if (_this.printPaper) {
                                        _this.print();
                                    }
                                    _this.closeFram();
                                    // _this.closeFram();
                                    // _this.$confirm('结算成功,是否立刻打印小票?', '提示', {
                                    //     confirmButtonText: '打印',
                                    //     cancelButtonText: '取消',
@@ -1222,6 +1235,13 @@
                            }
                        } else {
                            Vue.set(item,'isActive',true);
                            var hasAmount = 0;
                            for(var i = 0; i < payMoneys.length; i++) {
                                hasAmount += parseFloat(payMoneys[i].money);
                            }
                            if (_this.order.payMoney - hasAmount > 0) {
                                Vue.set(item, 'money', _this.order.payMoney - hasAmount);
                            }
                            _this.payMoneys.push(item);
                        }
                    });
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/orderXq-form.html
@@ -771,6 +771,13 @@
                            }
                        } else {
                            Vue.set(item,'isActive',true);
                            var hasAmount = 0;
                            for(var i = 0; i < payMoneys.length; i++) {
                                hasAmount += parseFloat(payMoneys[i].money);
                            }
                            if (_this.refundMoney - hasAmount > 0) {
                                Vue.set(item, 'money', _this.refundMoney - hasAmount);
                            }
                            _this.payMoneys.push(item);
                        }
                    });
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/pbxq-form.html
@@ -48,7 +48,7 @@
            </el-row>
            <el-row class="order-info" type="flex" justify="space-around"  style="height: 150px; padding: 30px 30px;">
                <el-col :span="5">
                    <p>会员姓名:{{serviceOrderInfo.vipInfo.staffName}}</p>
                    <p>会员姓名:{{serviceOrderInfo.vipInfo.vipName}}</p>
                    <p>会员电话:{{serviceOrderInfo.vipInfo.phone}}</p>
                </el-col>
                <el-col :span="5">
@@ -81,7 +81,6 @@
                                width="200">
                        </el-table-column>
                        <el-table-column
                                prop="address"
                                label="服务时间" :formatter="serviceTime">
                        </el-table-column>
                        <el-table-column
@@ -173,11 +172,13 @@
                MTools.closeForm();
            },
            serviceTime(row, column) {
                if (!column.bedState) {
                    return "-";
                }
                var startTime = moment(column.bedState.startTime).format("YYYY-MM-DD HH:mm");
                var endTime = moment(column.bedState.endTime).format("YYYY-MM-DD HH:mm");
                console.log(column);
                console.log(row);
                // if (!column.bedState) {
                //     return "-";
                // }
                var startTime = this.dateFormat(row.beginTime);
                var endTime = this.dateFormat(row.endTime);
                return startTime + "-" + endTime;
            }
        },
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/service_all_list.html
@@ -76,7 +76,7 @@
            <div class="form-group mr-20">
                <button type="button" class="btn btn-my btn-sm" id="btn4" value="">全部</button>
                <button type="button" class="btn btn-my btn-sm active" id="btn1" value="待预约">待预约</button>
                <button type="button" class="btn btn-my btn-sm" id="btn2" value="预约成功待处理">待派单</button>
<!--                <button type="button" class="btn btn-my btn-sm" id="btn2" value="预约成功待处理">待派单</button>-->
                <button type="button" class="btn btn-my btn-sm" id="btn3" value="需配料">待配料</button>
                <button type="button" class="btn btn-my btn-sm" id="btn3" value="配料完成">待服务</button>
                <button type="button" class="btn btn-my btn-sm" id="btn6" value="服务中">服务中</button>
zq-erp/src/main/resources/templates/views/admin/hive/beautySalon/vip.html
@@ -127,7 +127,6 @@
                <el-button type="primary" plain @click="recharge">充值</el-button>
                <el-button type="warning" plain @click="addOrder">开单</el-button>
                <el-button type="success" plain @click="addServiceOrder">开服务单</el-button>
                <el-button type="danger" plain @click="returnMoney">退款</el-button>
            </el-col>
        </el-header>
        <el-container>
zq-erp/src/main/resources/templates/views/admin/hive/statistics/daily-sale-list.html
@@ -53,9 +53,9 @@
                        data-width="30px">序号</th>
                    <th data-field="dataTime">日期</th>
                    <th data-field="shopName">门店名称</th>
                    <th data-field="totalPay">应收金额</th>
                    <th data-field="shouldPay" data-formatter="shouldPayFormat">应收金额</th>
                    <th data-field="totalPay">实收金额</th>
                    <th data-field="hisConsume">折扣金额</th>
                    <th data-field="shouldPay" data-formatter="zkAmountFormat">折扣金额</th>
                    <th data-field="perCustomCnt">客单数</th>
                    <th data-field="customGoodsCnt">客品数</th>
                    <th data-field="cost">成本</th>
@@ -79,8 +79,8 @@
    <script type="text/javascript">
        var myGrid;
        var initParam = {
                format : "yyyy-mm-dd hh:ii", //默认显示年与日,如果想显示十分秒:"yyyy-mm-dd hh:ii:ss"
                minView: "hour",     //"month",只显示年月日的选择,不会再跳转去选择时分秒;如果想要选择时分秒的:"hour"
                format : "yyyy-mm-dd", //默认显示年与日,如果想显示十分秒:"yyyy-mm-dd hh:ii:ss"
                minView: "month",     //"month",只显示年月日的选择,不会再跳转去选择时分秒;如果想要选择时分秒的:"hour"
            }
         MTools.ininDatetimepicker(initParam);
        //限制结束时间不小于开始时间
@@ -111,6 +111,14 @@
        });
        function shouldPayFormat(value, row, index) {
            return row.shouldPay + row.refund;
        }
        function zkAmountFormat(value, row, index) {
            return row.shouldPay + row.refund - row.totalPay;
        }
        function footCountTitle(data) {
            return "<b>合计</b>";
        };