1. 新增套餐中有效和无效的操作
2. 会员修改门店功能
3. 套餐新增编辑次数功能
4. 计算是否为赠送的条件为,全部为赠送金额购买且支付金额大于0
5. 打印小票功能调整间距,和收银人
6. PC端服务单新增划扣金额展示
2 files added
17 files modified
| | |
| | | import com.matrix.core.tools.excl.ExcelUtil; |
| | | import com.matrix.core.tools.excl.ExcelVersion; |
| | | import com.matrix.system.common.bean.SysUsers; |
| | | import com.matrix.system.common.dao.SysCompanyDao; |
| | | import com.matrix.system.common.tools.ResponseHeadUtil; |
| | | import com.matrix.system.constance.Dictionary; |
| | | import com.matrix.system.hive.bean.*; |
| | |
| | | import org.springframework.web.bind.annotation.RequestBody; |
| | | import org.springframework.web.bind.annotation.RequestMapping; |
| | | import org.springframework.web.bind.annotation.ResponseBody; |
| | | import org.springframework.web.servlet.ModelAndView; |
| | | |
| | | import javax.annotation.Resource; |
| | | import javax.servlet.http.HttpServletRequest; |
| | |
| | | return showList(sysOrder, pageVo); |
| | | } |
| | | |
| | | @Resource |
| | | SysCompanyDao companyDao; |
| | | |
| | | /** |
| | | * 收款 |
| | | */ |
| | | @RequestMapping(value = "/printOrder") |
| | | public @ResponseBody |
| | | ModelAndView printOrder(SysOrder order) throws GlobleException { |
| | | ModelAndView mv = new ModelAndView("admin/hive/beautySalon/print-order"); |
| | | SysUsers user=(SysUsers)WebUtil.getSession().getAttribute(MatrixConstance.LOGIN_KEY); |
| | | String comRegisterCode = companyDao.selectById(user.getCompanyId()).getComRegisterCode(); |
| | | if(StringUtils.isNotBlank(comRegisterCode)){ |
| | | mv.addObject("page",comRegisterCode); |
| | | }else { |
| | | mv.addObject("page","taiyan"); |
| | | } |
| | | return mv; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 收款 |
| | |
| | | } else { |
| | | vipInfo.setVipState(Dictionary.VIP_STATE_HY); |
| | | SysUsers users = WebUtil.getSessionAttribute(MatrixConstance.LOGIN_KEY); |
| | | vipInfo.setShopId(users.getShopId()); |
| | | if(vipInfo.getShopId()==null){ |
| | | vipInfo.setShopId(users.getShopId()); |
| | | } |
| | | return add(vipInfoService, vipInfo, "会员信息"); |
| | | } |
| | | } |
| | |
| | | private boolean isGiftMoneyPay(SysOrder order) { |
| | | BusParameterSettings giftiIsfree = busParameterSettingsDao.selectCompanyParamByCode(AppConstance.SHOP_MANAGE_GIFTISFREE, order.getCompanyId()); |
| | | if(giftiIsfree.getParamValue().equals("是")){ |
| | | return order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift())); |
| | | return order.getFlows().stream().allMatch(item -> SysOrderFlow.IS_GIFT_Y.equals(item.getIsGift()) |
| | | && item.getAmount().doubleValue() >0D); |
| | | }else{ |
| | | return false; |
| | | } |
| | |
| | | </update> |
| | | |
| | | <!-- 批量删除 --> |
| | | <delete id="deleteByIds" parameterType="java.util.List"> |
| | | delete from sys_users where su_id in |
| | | <update id="deleteByIds" parameterType="java.util.List"> |
| | | update sys_users set su_valid='N' where su_id in |
| | | <foreach collection="list" index="index" item="item" open="(" |
| | | separator="," close=")"> |
| | | #{item} |
| | | </foreach> |
| | | </delete> |
| | | </update> |
| | | |
| | | <!-- 根据id删除 --> |
| | | <delete id="deleteById" parameterType="Long"> |
| | | DELETE FROM sys_users |
| | | where su_id=#{suId} |
| | | </delete> |
| | | <update id="deleteById" parameterType="Long"> |
| | | update sys_users set su_valid='N' |
| | | where su_id=#{suId} |
| | | </update> |
| | | |
| | | <!-- 根据对象删除 --> |
| | | <delete id="deleteByModel" parameterType="Long"> |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + id] |
| | | content: [basePath + '/admin/order/printOrder?id=' + id] |
| | | }); |
| | | }, |
| | | handleClick() { |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + this.order.id], |
| | | content: [basePath + '/admin/order/printOrder?id=' + this.order.id], |
| | | cancel: function (index, layero) { |
| | | _this.closeFram(); |
| | | } |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + loj.getResult().mapInfo.orderId], |
| | | content: [basePath + '/admin/order/printOrder?id=' + loj.getResult().mapInfo.orderId], |
| | | cancel: function (index, layer) { |
| | | if (parent.app) { |
| | | parent.app.vipInfoFn(); |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + this.order.id], |
| | | content: [basePath + '/admin/order/printOrder?id=' + this.order.id], |
| | | cancel: function (index, layero) { |
| | | _this.closeFram(); |
| | | } |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + this.order.id], |
| | | content: [basePath + '/admin/order/printOrder?id=' + this.order.id], |
| | | cancel: function (index, layero) { |
| | | _this.closeFram(); |
| | | } |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + id] |
| | | content: [basePath + '/admin/order/printOrder?id=' + id] |
| | | }); |
| | | }; |
| | | |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + id] |
| | | content: [basePath + '/admin/order/printOrder?id=' + id] |
| | | }); |
| | | }; |
| | | |
| | |
| | | title: "打印订单", |
| | | area: ['250px', '550px'], |
| | | maxmin: true, |
| | | content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + id] |
| | | content: [basePath + '/admin/order/printOrder?id=' + id] |
| | | }); |
| | | }, |
| | | handleClick() { |
| | |
| | | <!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> |
| | | <style> |
| | | |
| | | .btn{ |
| | | position: fixed; |
| | | bottom: 10px; |
| | | left: 45%; |
| | | } |
| | | <div th:include="'admin/hive/printTemplates/'+${page}::html" ></div> |
| | | |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content" id="app"> |
| | | <div id="print" style="width: 220px; "> |
| | | <h1 style="text-align: center;font-size: 18px;margin: 20px auto;"> |
| | | {{order.shopName}} |
| | | </h1> |
| | | <table style="width: 100%; font-size:12px;line-height: 20px;"> |
| | | |
| | | <tr> |
| | | <td colspan="2"> |
| | | <b>订单号</b>:<span>{{order.orderNo}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2" > |
| | | <b>客户</b>:<span>{{order.vipName}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2" > |
| | | <b>消费日期</b>:<span>{{order.orderTime |format}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <b>电话</b>:<span>{{order.vipPhone| formatPhone }}</span> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <p>-----------------------------------</p> |
| | | <table style="width: 80%;font-size:12px;margin-top: 20px;text-align: left"> |
| | | |
| | | <tr> |
| | | <th style="text-align: left;" colspan="4">产品</th> |
| | | </tr> |
| | | <tr> |
| | | <th style="">数量</th> |
| | | <th style="">单价</th> |
| | | <th style="">小计</th> |
| | | </tr> |
| | | <template v-for="item in order.items"> |
| | | <tr > |
| | | <td style="text-align: left;" colspan="4" >{{item.shoppingGoods.name }}</td> |
| | | </tr> |
| | | <tr > |
| | | <td>{{item.count }}</td> |
| | | <td>{{item.zkPrice }}</td> |
| | | <td>{{(item.zkPrice * item.count).toFixed(1) }}</td> |
| | | </tr> |
| | | </template> |
| | | <tr> |
| | | <td> |
| | | <b>总计:</b> |
| | | </td> |
| | | <td> |
| | | |
| | | </td> |
| | | <td> |
| | | <span >{{order.zkTotal}}</span> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <p>-----------------------------------</p> |
| | | <table style="width: 100%;font-size: 10px;line-height: 30px;"> |
| | | <tr > |
| | | <td> |
| | | <b >储值卡余额:</b><span >{{totalMoney}}</span> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr> |
| | | <td> |
| | | <b>实收金额:</b><span >{{order.zkTotal-order.arrears}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <b>收银人:</b><span>{{order.staffName}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <b>客户签名:</b> |
| | | </td> |
| | | </tr> |
| | | |
| | | |
| | | </table> |
| | | |
| | | <div style="width: 100%;text-align: center;margin: 30px auto;margin-bottom: 10px"> |
| | | <br> |
| | | *****************<br> |
| | | 谢谢惠顾<br> |
| | | *****************<br> |
| | | <br> |
| | | </div> |
| | | <div style="width: 100%;"> |
| | | 地址:{{shopInfo.shopAddr}}<br> |
| | | 电话:{{shopInfo.shopTel}}<br> |
| | | <br> |
| | | <br> |
| | | </div> |
| | | <div style="width: 100%;" > |
| | | <div style="text-align: center;"> |
| | | |
| | | <img style="width: 100%;" :src="shopInfo.qrcode" /><br> |
| | | 更多精彩请访问小程序<br> |
| | | </div> |
| | | <br> |
| | | <br> |
| | | </div> |
| | | |
| | | |
| | | </div> |
| | | <a href="javascript:;" onclick="print()" class="btn btn-success radius">打印</a> |
| | | </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="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/LodopFuncs.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script type="text/javascript"> |
| | | |
| | | |
| | | var id = $.query.get("id"); |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | order:{ |
| | | vipInfo:{}, |
| | | serviceItems:[] |
| | | }, |
| | | moneyCar:{}, |
| | | totalMoney:0 |
| | | |
| | | }, |
| | | created: function () { |
| | | |
| | | this.loadInfo(); |
| | | }, |
| | | |
| | | mounted: function () { |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | loadInfo(){ |
| | | var _this=this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | url: basePath + '/admin/order/getShopOrder?id='+id, |
| | | callback: function (data) { |
| | | _this.order=data.mapInfo.order; |
| | | _this.moneyCar=data.mapInfo.moneyCar; |
| | | _this.shopInfo=data.mapInfo.shopInfo; |
| | | _this.totalMoney=data.mapInfo.totalMoney; |
| | | setTimeout(print,1000) ; |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | filters: |
| | | { |
| | | format: function (value) { |
| | | if (!value) return ''; |
| | | return MTools.formatDate(value, 'yyyy-MM-dd') |
| | | } , |
| | | formatPhone: function (value) { |
| | | if (!value) return ''; |
| | | return value.substr(0,3) + "****" + value.substr(value.length-4,value.length+1) |
| | | } , |
| | | }, |
| | | |
| | | |
| | | }, |
| | | ); |
| | | |
| | | |
| | | var LODOP; |
| | | |
| | | function print() { |
| | | LODOP = getLodop(); |
| | | LODOP.PRINT_INIT("HIVE打印任务"); |
| | | LODOP.ADD_PRINT_HTM(0, 0, "100%", "100%", document.getElementById("print").innerHTML); |
| | | LODOP.SET_PRINT_MODE("FULL_HEIGHT_FOR_OVERFLOW", true); |
| | | LODOP.PREVIEW(); |
| | | } |
| | | |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | </el-table-column> |
| | | <el-table-column label="操作" fixed="right" width="160"> |
| | | <template slot-scope="scope"> |
| | | <el-button matrix:btn="vipInfo-youxiao" v-if="scope.row.status!='有效' && scope.row.taocanId == null" type="text" size="small" @click="tabProjValid(scope.$index, scope.row)">有效</el-button> |
| | | <el-button matrix:btn="vipInfo-wuxiao" v-if="scope.row.status!='无效' && scope.row.taocanId == null" type="text" size="small" @click="tabProjInvalid(scope.$index, scope.row)">无效</el-button> |
| | | <el-button matrix:btn="vipInfo-youxiao" v-if="scope.row.status!='有效'" type="text" size="small" @click="tabProjValid(scope.$index, scope.row)">有效</el-button> |
| | | <el-button matrix:btn="vipInfo-wuxiao" v-if="scope.row.status!='无效'" type="text" size="small" @click="tabProjInvalid(scope.$index, scope.row)">无效</el-button> |
| | | <el-button matrix:btn="vipInfo-dongjie" v-if="scope.row.status!='冻结' && scope.row.taocanId == null" type="text" size="small" @click="tabProjCold(scope.$index, scope.row)">冻结</el-button> |
| | | <el-button matrix:btn="vipInfo-cardEdit" v-if="scope.row.taocanId == null" type="text" size="small" @click="tabProjEdit(scope.$index, scope.row)">编辑</el-button> |
| | | <el-button type="text" v-if="scope.row.orderId != null" @click="openOrder(scope.$index, scope.row)" size="small">订单</el-button> |
| | |
| | | <tr> |
| | | <th>项目名称</th> |
| | | <th>次数</th> |
| | | <th>划扣金额</th> |
| | | <th width="100px">服务时长(分钟)</th> |
| | | <th>服务时间</th> |
| | | <th width="300px">美疗师</th> |
| | |
| | | <tr v-for="(item,index) in projService.serviceItems"> |
| | | <td>{{item.projInfo.name}}</td> |
| | | <td>{{item.count}}</td> |
| | | <td>{{item.projUse.price * item.count}}</td> |
| | | <td><el-input @change="changeTimeLength" v-model="item.projInfo.timeLength"></el-input></td> |
| | | |
| | | <td> |
New file |
| | |
| | | <!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> |
| | | <style> |
| | | |
| | | .btn{ |
| | | position: fixed; |
| | | bottom: 10px; |
| | | left: 45%; |
| | | } |
| | | |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content" id="app"> |
| | | |
| | | |
| | | <div id="print" style="width: 220px; "> |
| | | <h1 style="text-align: center;font-size: 18px;margin: 20px auto;"> |
| | | {{order.shopName}} |
| | | </h1> |
| | | <table style="width: 100%; font-size:12px;line-height: 20px;"> |
| | | |
| | | <tr> |
| | | <td colspan="2"> |
| | | <b>订单号</b>:<span>{{order.orderNo}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2" > |
| | | <b>客户</b>:<span>{{order.vipName}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2" > |
| | | <b>消费日期</b>:<span>{{order.orderTime |format}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <b>电话</b>:<span>{{order.vipPhone| formatPhone }}</span> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <p>--------------------------------</p> |
| | | <table style="width: 80%;font-size:12px;margin-top: 20px;text-align: left"> |
| | | |
| | | <tr> |
| | | <th style="text-align: left;" colspan="4">产品</th> |
| | | </tr> |
| | | <tr> |
| | | <th style="">数量</th> |
| | | <th style="">单价</th> |
| | | <th style="">小计</th> |
| | | </tr> |
| | | <template v-for="item in order.items"> |
| | | <tr > |
| | | <td style="text-align: left;" colspan="4" >{{item.shoppingGoods.name }}</td> |
| | | </tr> |
| | | <tr > |
| | | <td>{{item.count }}</td> |
| | | <td>{{item.zkPrice }}</td> |
| | | <td>{{(item.zkPrice * item.count).toFixed(1) }}</td> |
| | | </tr> |
| | | </template> |
| | | <tr> |
| | | <td> |
| | | <b>总计:</b> |
| | | </td> |
| | | <td> |
| | | |
| | | </td> |
| | | <td> |
| | | <span >{{order.zkTotal}}</span> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <p>--------------------------------</p> |
| | | <table style="width: 100%;font-size: 10px;line-height: 30px;"> |
| | | <tr > |
| | | <td> |
| | | <b >储值卡余额:</b><span >{{totalMoney}}</span> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr> |
| | | <td> |
| | | <b>实收金额:</b><span >{{order.zkTotal-order.arrears}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <b>收银人:</b><span th:utext="${session.userInfo.suName}" ></span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <b>客户签名:</b> |
| | | </td> |
| | | </tr> |
| | | |
| | | |
| | | </table> |
| | | <div style="width: 100%;"> |
| | | 地址:{{shopInfo.shopAddr}}<br> |
| | | 电话:{{shopInfo.shopTel}}<br> |
| | | </div> |
| | | </div> |
| | | <a href="javascript:;" onclick="print()" class="btn btn-success radius">打印</a> |
| | | </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="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/LodopFuncs.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script type="text/javascript"> |
| | | |
| | | |
| | | var id = $.query.get("id"); |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | order:{ |
| | | vipInfo:{}, |
| | | serviceItems:[] |
| | | }, |
| | | moneyCar:{}, |
| | | totalMoney:0, |
| | | shopInfo:{} |
| | | |
| | | }, |
| | | created: function () { |
| | | |
| | | this.loadInfo(); |
| | | }, |
| | | |
| | | mounted: function () { |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | loadInfo(){ |
| | | var _this=this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | url: basePath + '/admin/order/getShopOrder?id='+id, |
| | | callback: function (data) { |
| | | _this.order=data.mapInfo.order; |
| | | _this.moneyCar=data.mapInfo.moneyCar; |
| | | _this.shopInfo=data.mapInfo.shopInfo; |
| | | _this.totalMoney=data.mapInfo.totalMoney; |
| | | setTimeout(print,1000) ; |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | filters: |
| | | { |
| | | format: function (value) { |
| | | if (!value) return ''; |
| | | return MTools.formatDate(value, 'yyyy-MM-dd') |
| | | } , |
| | | formatPhone: function (value) { |
| | | if (!value) return ''; |
| | | return value.substr(0,3) + "****" + value.substr(value.length-4,value.length+1) |
| | | } , |
| | | }, |
| | | |
| | | |
| | | }, |
| | | ); |
| | | |
| | | |
| | | var LODOP; |
| | | |
| | | function print() { |
| | | LODOP = getLodop(); |
| | | LODOP.PRINT_INIT("HIVE打印任务"); |
| | | LODOP.ADD_PRINT_HTM(0, 0, "100%", "100%", document.getElementById("print").innerHTML); |
| | | LODOP.SET_PRINT_MODE("FULL_HEIGHT_FOR_OVERFLOW", true); |
| | | LODOP.PREVIEW(); |
| | | } |
| | | |
| | | </script> |
| | | </body> |
| | | </html> |
New file |
| | |
| | | <!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> |
| | | <style> |
| | | |
| | | .btn{ |
| | | position: fixed; |
| | | bottom: 10px; |
| | | left: 45%; |
| | | } |
| | | |
| | | </style> |
| | | </head> |
| | | <body> |
| | | <div class="ibox-content" id="app"> |
| | | |
| | | <div id="print" style="width: 220px; "> |
| | | <h1 style="text-align: center;font-size: 18px;margin: 20px auto;"> |
| | | {{order.shopName}} |
| | | </h1> |
| | | <table style="width: 100%; font-size:12px;line-height: 20px;"> |
| | | |
| | | <tr> |
| | | <td colspan="2"> |
| | | <b>订单号</b>:<span>{{order.orderNo}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2" > |
| | | <b>客户</b>:<span>{{order.vipName}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2" > |
| | | <b>消费日期</b>:<span>{{order.orderTime |format}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td colspan="2"> |
| | | <b>电话</b>:<span>{{order.vipPhone| formatPhone }}</span> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <p>-----------------------------------</p> |
| | | <table style="width: 80%;font-size:12px;margin-top: 20px;text-align: left"> |
| | | |
| | | <tr> |
| | | <th style="text-align: left;" colspan="4">产品</th> |
| | | </tr> |
| | | <tr> |
| | | <th style="">数量</th> |
| | | <th style="">单价</th> |
| | | <th style="">小计</th> |
| | | </tr> |
| | | <template v-for="item in order.items"> |
| | | <tr > |
| | | <td style="text-align: left;" colspan="4" >{{item.shoppingGoods.name }}</td> |
| | | </tr> |
| | | <tr > |
| | | <td>{{item.count }}</td> |
| | | <td>{{item.zkPrice }}</td> |
| | | <td>{{(item.zkPrice * item.count).toFixed(1) }}</td> |
| | | </tr> |
| | | </template> |
| | | <tr> |
| | | <td> |
| | | <b>总计:</b> |
| | | </td> |
| | | <td> |
| | | |
| | | </td> |
| | | <td> |
| | | <span >{{order.zkTotal}}</span> |
| | | </td> |
| | | </tr> |
| | | </table> |
| | | <p>-----------------------------------</p> |
| | | <table style="width: 100%;font-size: 10px;line-height: 30px;"> |
| | | <tr > |
| | | <td> |
| | | <b >储值卡余额:</b><span >{{totalMoney}}</span> |
| | | </td> |
| | | </tr> |
| | | |
| | | <tr> |
| | | <td> |
| | | <b>实收金额:</b><span >{{order.zkTotal-order.arrears}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <b>收银人:</b><span>{{order.staffName}}</span> |
| | | </td> |
| | | </tr> |
| | | <tr> |
| | | <td> |
| | | <b>客户签名:</b> |
| | | </td> |
| | | </tr> |
| | | |
| | | |
| | | </table> |
| | | |
| | | <div style="width: 100%;text-align: center;margin: 30px auto;margin-bottom: 10px"> |
| | | <br> |
| | | *****************<br> |
| | | 谢谢惠顾<br> |
| | | *****************<br> |
| | | <br> |
| | | </div> |
| | | <div style="width: 100%;"> |
| | | 地址:{{shopInfo.shopAddr}}<br> |
| | | 电话:{{shopInfo.shopTel}}<br> |
| | | <br> |
| | | <br> |
| | | </div> |
| | | <div style="width: 100%;" > |
| | | <div style="text-align: center;"> |
| | | |
| | | <img style="width: 100%;" :src="shopInfo.qrcode" /><br> |
| | | 更多精彩请访问小程序<br> |
| | | </div> |
| | | <br> |
| | | <br> |
| | | </div> |
| | | </div> |
| | | <a href="javascript:;" onclick="print()" class="btn btn-success radius">打印</a> |
| | | </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="@{/js/systools/AjaxProxyVue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> |
| | | <script type="text/javascript" th:src="@{/js/plugin/LodopFuncs.js}"></script> |
| | | <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> |
| | | <script type="text/javascript"> |
| | | |
| | | |
| | | var id = $.query.get("id"); |
| | | var app = new Vue({ |
| | | el: '#app', |
| | | data: { |
| | | order:{ |
| | | vipInfo:{}, |
| | | serviceItems:[] |
| | | }, |
| | | moneyCar:{}, |
| | | totalMoney:0, |
| | | shopInfo:{} |
| | | |
| | | }, |
| | | created: function () { |
| | | |
| | | this.loadInfo(); |
| | | }, |
| | | |
| | | mounted: function () { |
| | | |
| | | }, |
| | | |
| | | methods: { |
| | | loadInfo(){ |
| | | var _this=this; |
| | | AjaxProxy.requst({ |
| | | app: _this, |
| | | url: basePath + '/admin/order/getShopOrder?id='+id, |
| | | callback: function (data) { |
| | | _this.order=data.mapInfo.order; |
| | | _this.moneyCar=data.mapInfo.moneyCar; |
| | | _this.shopInfo=data.mapInfo.shopInfo; |
| | | _this.totalMoney=data.mapInfo.totalMoney; |
| | | setTimeout(print,1000) ; |
| | | } |
| | | }); |
| | | }, |
| | | }, |
| | | |
| | | filters: |
| | | { |
| | | format: function (value) { |
| | | if (!value) return ''; |
| | | return MTools.formatDate(value, 'yyyy-MM-dd') |
| | | } , |
| | | formatPhone: function (value) { |
| | | if (!value) return ''; |
| | | return value.substr(0,3) + "****" + value.substr(value.length-4,value.length+1) |
| | | } , |
| | | }, |
| | | |
| | | |
| | | }, |
| | | ); |
| | | |
| | | |
| | | var LODOP; |
| | | |
| | | function print() { |
| | | LODOP = getLodop(); |
| | | LODOP.PRINT_INIT("HIVE打印任务"); |
| | | LODOP.ADD_PRINT_HTM(0, 0, "100%", "100%", document.getElementById("print").innerHTML); |
| | | LODOP.SET_PRINT_MODE("FULL_HEIGHT_FOR_OVERFLOW", true); |
| | | LODOP.PREVIEW(); |
| | | } |
| | | |
| | | </script> |
| | | </body> |
| | | </html> |
| | |
| | | <label class="col-sm-2 control-label">套餐余额<span class="text-danger">*</span></label> |
| | | <div class="col-sm-4"> |
| | | <input type="text" class="form-control" name="balance" |
| | | th:value="${obj.balance}" datatype="*1-20" nullmsg="项目余次不能为空"> |
| | | th:value="${obj.balance}" datatype="*1-20" nullmsg="套餐余额不能为空"> |
| | | <div class="Validform_checktip"></div> |
| | | </div> |
| | | </div> |
| | | <div class="form-group"> |
| | | <label class="col-sm-2 control-label">套餐余次<span class="text-danger">*</span></label> |
| | | <div class="col-sm-4"> |
| | | <input type="text" class="form-control" name="surplusCount" |
| | | th:value="${obj.surplusCount}" datatype="*1-20" nullmsg="套餐余次不能为空"> |
| | | <div class="Validform_checktip"></div> |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <div class="form-group"> |
| | | |
| | | <label class="col-sm-2 control-label">所属门店<span |
| | | class="text-danger">*</span></label> |
| | | <div class="col-sm-4"> |
| | | <select class="form-control autoFull" dataType="*" |
| | | nullmsg="所属门店不能为空" th:data-url="@{/hiveErp/shopInfo/findShopByRole}" |
| | | data-value="id" data-filed="shopName" |
| | | th:data-def="${obj?.shopId}" |
| | | name="shopId"> |
| | | <option value=''>--选择所属门店--</option> |
| | | </select> |
| | | <div class="Validform_checktip"></div> |
| | | </div> |
| | | |
| | | <label class="col-sm-2 control-label">资金密码</label> |
| | | <div class="col-sm-4"> |
| | | <input autocomplete="off" type="input" class="form-control" name="passWord" |