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(""); AchieveNew achieveNew = new AchieveNew(); QueryUtil.setQueryLimitCom(achieveNew); achieveNew.setT1(rankingDto.getType()); achieveNew.setDatatime(new Date()); if (RankingDto.SALE.equals(rankingDto.getDataType())) { AchieveNew achieveNew = new AchieveNew(); QueryUtil.setQueryLimitCom(achieveNew); achieveNew.setType(rankingDto.getType()); achieveNew.setDatatime(new Date()); List<RankingVo> list = achieveNewDao.selectShopConsumeAchieveRanking(achieveNew); 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; @@ -17,8 +18,17 @@ private Long staffId; 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,11 +804,18 @@ <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"> and shop_id=#{shopId} </if> where <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]> and pay_method!='欠款' <if test="shopId != null"> and shop_id=#{shopId} </if> )totalPay, (select IFNULL(sum(amount),0) from sys_order_flow where pay_method not in ('储值卡', '欠款') and flow_type != '退款' and <![CDATA[ create_time > #{item.beginTime} and create_time < #{item.endTime}]]> @@ -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> <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> </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> <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> <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/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() { <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"); //校验业绩 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' }, achieveList : [], userList: [], treeSelect : [], payMoneys : [], printPaper : false, }, afterSubmit : function(loj) { created : function() { let _this = this; this.cardInfo = /*[[${obj}]]*/ 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(); //获取用户列表 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=' + this.order.id], cancel: function (index, layero) { _this.closeFram(); } }); } else { this.$message.warning("请先挂单在打印"); } }, payMethodSelect(item, index) { let _this = this; let payMoneys = _this.payMoneys; let rechargeMoney = _this.rechargeMoney; if (!rechargeMoney) { this.$message.warning("请输入充值金额"); return; } //添加一个美疗师 function addBeaute(trId, itemIndex) { if (!itemIndex) { itemIndex = 0; 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); }, } 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/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, }; item.achaeveList.push(achieveNew); 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,12 +172,14 @@ 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"); return startTime + "-" + endTime; 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>"; };