| <!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"/> | 
|     <!-- 本框架基本脚本和样式 --> | 
|     <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"/> | 
|     <style> | 
|         .vertical { | 
|             display: flex; | 
|             align-items: center; | 
|         } | 
|   | 
|         .searchInput { | 
|             width: 400px; | 
|             margin-right: 20px; | 
|         } | 
|   | 
|         .bigbtn { | 
|             width: 200px; | 
|         } | 
|   | 
|         .btn-box { | 
|             text-align: right; | 
|         } | 
|   | 
|         .money-box { | 
|             display: flex; | 
|             justify-content: space-between; | 
|             align-items: center; | 
|             font-size: 18px; | 
|         } | 
|   | 
|         .money-box ul { | 
|             list-style: none; | 
|         } | 
|   | 
|         .money-box ul li { | 
|             line-height: 30px; | 
|         } | 
|   | 
|         .money-title { | 
|             font-weight: bold; | 
|         } | 
|   | 
|         .money-value { | 
|             font-weight: bold; | 
|             color: #ff3300; | 
|             font-size: 30px; | 
|         } | 
|   | 
|         .space { | 
|             padding: 20px; | 
|         } | 
|   | 
|         .yjxzbtn { | 
|             float: right; | 
|         } | 
|   | 
|         .vipSelect { | 
|             width: 400px; | 
|         } | 
|   | 
|         .title { | 
|             font-weight: bold; | 
|         } | 
|   | 
|         .arrears { | 
|             color: #E6A23C; | 
|         } | 
|     </style> | 
| </head> | 
| <body> | 
| <div class="ibox-content" id="app" v-cloak> | 
|   | 
|   | 
|     <el-row> | 
|         <el-col :span="24"> | 
|             <el-row class="vertical  "> | 
|                 <el-col :span="24"> | 
|                     <!--  TODO 暂时不能切换会员 | 
|                      <span class="title">选择会员</span> | 
|                     <el-select | 
|                           class="vipSelect" | 
|                           v-model="order.vipId" | 
|                           @change="changeVip" | 
|                           filterable | 
|                           remote | 
|                           reserve-keyword | 
|                           placeholder="请输会员名称/手机号/编号搜索" | 
|                           :remote-method="remoteMethod" | 
|                           :loading="loading"> | 
|                       <el-option | 
|                               v-for="item in vipList" | 
|                               :key="item.id" | 
|                               :label="item.showLable" | 
|                               :value="item.id"> | 
|                       </el-option> | 
|                   </el-select> --> | 
|   | 
|                     <p class=" el-big-title"> 会员信息 <span v-if="currentVipInfo.id">【 编号:{{currentVipInfo.vipNo}} , 姓名:{{currentVipInfo.vipName}} , 手机号码:{{currentVipInfo.phone}} ,等级:<span | 
|                             v-if="currentVipInfo.vipLevel!=null">{{currentVipInfo.vipLevel.levelName}} </span> ,储值卡余额:{{currentVipInfo.balance}} 】</span> | 
|                     </p> | 
|                 </el-col> | 
|             </el-row> | 
|         </el-col> | 
|     </el-row> | 
|   | 
|     <el-row v-if="order.vipId!=null"> | 
|         <el-col :span="24"> | 
|             <el-row class="vertical  "> | 
|                 <el-col :span="6"><p>消费门店:{{order.shopName}} </p></el-col> | 
|                 <el-col :span="6"><p>订单编号:{{order.orderNo}}</p></el-col> | 
|                 <el-col :span="6"> | 
|                     <span> 订单时间:</span> | 
|                     <el-date-picker | 
|                             v-model="order.orderTime" | 
|                             type="datetime" | 
|                             placeholder="选择日期时间"> | 
|                     </el-date-picker> | 
|                 </el-col> | 
|                 <el-col :span="6"> | 
|                     <span> 备注:</span> | 
|                     <el-input style="width: 70%" | 
|                               v-model="order.remark"> | 
|                     </el-input> | 
|                 </el-col> | 
|             </el-row> | 
|             <el-row class="vertical  "> | 
|                 <el-input class="searchInput" @input="searchGoods()" v-model="queryKey" | 
|                           placeholder="搜索添加产品"></el-input> | 
|                 <el-button @click="searchGoods()" type="primary">搜索</el-button> | 
|             </el-row> | 
|   | 
|             <div class="searchResultTable" style="width: 50%" v-show="showSearchTable"> | 
|                 <!-- 搜索加载数据表格 --> | 
|                 <el-table | 
|                         ref="dataTable" | 
|                         v-loading="loading" | 
|                         element-loading-text="拼命加载中" | 
|                         element-loading-spinner="el-icon-loading" | 
|                         element-loading-background="rgba(0, 0, 0, 0.8)" | 
|                         @selection-change="handleSelectionChange" | 
|                         @row-click="handleClickTableRow" | 
|                         :max-height="400" | 
|                         :data="searchTableData" | 
|                         style="width: 100%"> | 
|                     <el-table-column | 
|                             type="selection" | 
|                             width="50"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="code" | 
|                             label="产品编号" | 
|                             width="100"> | 
|                     </el-table-column> | 
|   | 
|                     <el-table-column | 
|                             prop="name" | 
|   | 
|                             label="产品名称"> | 
|                     </el-table-column> | 
|   | 
|                     <el-table-column | 
|                             prop="sealPice" | 
|                             label="售价"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="goodType" | 
|                             label="类型"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="cateName" | 
|                             label="分类"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             width="150" | 
|                             prop="address" | 
|                             label="操作"> | 
|                         <template slot-scope="scope"> | 
|                             <el-button type="primary" | 
|                                        size="mini" | 
|                                        @click="handleEdit(scope.$index, scope.row,1)">选择 | 
|                             </el-button> | 
|                             <el-button type="warning" v-if="scope.row.isPresent == '是'" | 
|                                        size="mini" | 
|                                        @click="handleEdit(scope.$index, scope.row,2)">赠送 | 
|                             </el-button> | 
|                         </template> | 
|                     </el-table-column> | 
|                 </el-table> | 
|                 <el-row class="btn-box"> | 
|                     <el-button size="mini" type="danger" @click="closeXm()">关闭</el-button> | 
|                     <el-button size="mini" type="primary" @click="chouseGoods()">确认</el-button> | 
|                 </el-row> | 
|             </div> | 
|   | 
|             <el-row class="mt-10"> | 
|                 <el-table | 
|                         :stripe="true" | 
|                         :border="true" | 
|                         :height="tableHeight" | 
|                         :data="order.items" | 
|                         style="width: 100%"> | 
|                     <el-table-column | 
|                             type="index" | 
|                             width="50"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="shoppingGoods.code" | 
|                             label="产品编号" | 
|                             width="100"> | 
|                     </el-table-column> | 
|   | 
|                     <el-table-column | 
|                             prop="shoppingGoods.name" | 
|                             width="280" | 
|                             label="产品名称"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="shoppingGoods.goodType" | 
|                             width="80" | 
|                             label="产品类型"> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="shoppingGoods.sealPice" | 
|                             label="单价"> | 
|                     </el-table-column> | 
|                     <el-table-column label="数量"> | 
|   | 
|                         <template slot-scope="scope"> | 
|                             <el-input @change="calculationTotal" v-model="scope.row.count"></el-input> | 
|                         </template> | 
|   | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             label="折扣单价"> | 
|                         <template slot-scope="scope"> | 
|                             <el-input @change="calculationTotal" v-model="scope.row.zkPrice"></el-input> | 
|                         </template> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             label="应付"> | 
|                         <template slot-scope="scope"> | 
|                             {{scope.row.zkPrice * scope.row.count }} | 
|                         </template> | 
|                     </el-table-column> | 
|   | 
|                     <el-table-column | 
|                             label="实付"> | 
|                         <template slot-scope="scope"> | 
|                             <el-input @change="calculationTotal(1)" v-model="scope.row.payMoney"></el-input> | 
|                         </template> | 
|                     </el-table-column> | 
|   | 
|                     <el-table-column | 
|                             label="支付方式" | 
|                             width="130"> | 
|                         <template slot-scope="scope"> | 
|                             <el-select @change="changePayMethod(scope.row)" v-model="scope.row.payMethod" | 
|                                        placeholder="请选择支付方式"> | 
|                                 <el-option | 
|                                         v-for="item in payMethods" | 
|                                         :key="item.value" | 
|                                         :label="item.label" | 
|                                         :value="item.value" | 
|                                         :disabled="item.disabled"> | 
|                                 </el-option> | 
|                             </el-select> | 
|                         </template> | 
|                     </el-table-column> | 
|   | 
|   | 
|                     <el-table-column | 
|                             label="会员卡"> | 
|                         <template slot-scope="scope"> | 
|                             <el-select :disabled="scope.row.payMethod!='会员卡'" v-model="scope.row.payMethodDetail" | 
|                                        placeholder="请选择支付卡"> | 
|                                 <el-option | 
|                                         v-for="item in moneyCards" | 
|                                         :key="item.id" | 
|                                         :label="item.showLable" | 
|                                         :value="item.id"> | 
|                                 </el-option> | 
|                             </el-select> | 
|                         </template> | 
|                     </el-table-column> | 
|                     <el-table-column | 
|                             prop="address" | 
|                             label="操作"> | 
|                         <template slot-scope="scope"> | 
|                             <el-button type="primary" v-if="order.statu!='欠款'" | 
|                                        size="mini" | 
|                                        @click="removeItem(scope.$index, scope.row)">删除 | 
|                             </el-button> | 
|                         </template> | 
|                     </el-table-column> | 
|                 </el-table> | 
|   | 
|             </el-row> | 
|             <el-row class="mt-20 vertical"> | 
|                 <el-col :span="10" class="money-box"> | 
|                     <div> | 
|                         <ul> | 
|                             <li>应收金额:{{order.zkTotal}}</li> | 
|   | 
|                             <li>订单总金额:{{order.total}}</li> | 
|   | 
|                             <li v-if="order.arrears>0">订单欠款:<span class="arrears">{{order.arrears}}</span></li> | 
|                             <li v-if="order.arrears<0">找零:<span class="arrears">{{order.arrears}}</span></li> | 
|                         </ul> | 
|                     </div> | 
|                     <div class="money"> | 
|                         <span class="money-title">实收:</span> | 
|                         <span class="money-value">¥{{order.payMoney}}</span> | 
|                     </div> | 
|                 </el-col> | 
|                 <el-col :span="14" class="btn-box"> | 
|                     <el-button type="danger" @click="closeFram()">取消</el-button> | 
|                     <el-button type="primary" @click="submitOrder(2)">挂单</el-button> | 
|                     <el-button type="primary" @click="print()">打印</el-button> | 
|                     <el-button type="primary" @click="drawer = true">业绩设置</el-button> | 
|                     <el-button type="success" @click="confirmSubmit()" class="bigbtn"> 结算</el-button> | 
|                 </el-col> | 
|             </el-row> | 
|   | 
|         </el-col> | 
|     </el-row> | 
|   | 
|   | 
|     <el-drawer | 
|             title="业绩设置" | 
|             :visible.sync="drawer" | 
|             :direction="direction" | 
|             size="50%" | 
|     > | 
|         <el-row> | 
|             <el-col :span="24"> | 
|                 <div class="space"> | 
|   | 
|                     <el-table class="mt-20" | 
|                               :stripe="true" | 
|                               :border="true" | 
|                               :height="600" | 
|                               :data="achieveList" | 
|                               style="width: 100%"> | 
|                         <el-table-column | 
|                                 type="index" | 
|                                 width="50"> | 
|                         </el-table-column> | 
|                         <el-table-column | 
|                                 prop="orderItem.shoppingGoods.code" | 
|                                 label="产品编号" | 
|                                 width="100"> | 
|                         </el-table-column> | 
|   | 
|                         <el-table-column | 
|                                 prop="orderItem.shoppingGoods.name" | 
|                                 width="280" | 
|                                 label="产品名称"> | 
|                         </el-table-column> | 
|   | 
|                         <el-table-column | 
|                                 prop="orderItem.payMoney" | 
|                                 label="收款"> | 
|                         </el-table-column> | 
|                         <el-table-column | 
|                                 label="业绩"> | 
|                             <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-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="200" | 
|                                 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> | 
|                 </div> | 
|   | 
|             </el-col> | 
|         </el-row> | 
|     </el-drawer> | 
|   | 
|   | 
| </div> | 
| </body> | 
| <script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script> | 
| <script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script> | 
| <script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script> | 
| <script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script> | 
| <script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script> | 
| <script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script> | 
|   | 
|   | 
| <script> | 
|   | 
|     var id = $.query.get("id"); | 
|     var vipId = $.query.get("vipId"); | 
|   | 
|     const BUY_TYPE_NOT_FREE = 1; | 
|     const BUY_TYPE_FREE = 2; | 
|   | 
|   | 
|     var app = new Vue({ | 
|         el: '#app', | 
|         data: { | 
|   | 
|             //业绩设置框 | 
|             drawer: false, | 
|             direction: 'rtl', | 
|             //当前登录用户 | 
|             loginUser: {}, | 
|             //业绩用户列表 | 
|             userList: [], | 
|             order: { | 
|                 orderTime: new Date(), | 
|                 items: [], | 
|                 shopName: '', | 
|                 total: 0, | 
|                 zkPrice: 0, | 
|                 payMoney: 0, | 
|                 orderNo: "", | 
|             }, | 
|             vipCardDisAble: true, | 
|             vipList: [], | 
|             currentVipInfo: {}, | 
|             vipLoading: false, | 
|             payMethods: [{ | 
|                 value: '现金', | 
|                 label: '现金' | 
|             }, { | 
|                 value: '微信', | 
|                 label: '微信' | 
|             }, { | 
|                 value: '支付宝', | 
|                 label: '支付宝' | 
|             }, { | 
|                 value: '银行卡', | 
|                 label: '银行卡' | 
|             }, { | 
|                 value: '美团', | 
|                 label: '美团' | 
|             }, { | 
|                 value: '会员卡', | 
|                 label: '会员卡', | 
|                 disabled: true, | 
|             },], | 
|             achieveList: [], | 
|             //会员可用的充值卡 | 
|             moneyCards: [], | 
|             //门店信息 | 
|             shopInfo: {}, | 
|   | 
|   | 
|             tableHeight: 500, | 
|   | 
|             /*****搜索表格数据*********/ | 
|             //搜索关键词 | 
|             queryKey: '', | 
|             //是否展示搜索表格 | 
|             showSearchTable: false, | 
|             //搜索表格数据 | 
|             searchTableData: [], | 
|             //表格加载效果 | 
|             loading: false, | 
|             /******搜索表格数据END********/ | 
|   | 
|   | 
|         }, | 
|   | 
|         /** | 
|          * 初始化数据表 | 
|          */ | 
|         created: function () { | 
|             let _this = this; | 
|   | 
|             //获取登录用户信息 | 
|             AjaxProxy.requst({ | 
|                 app: _this, | 
|                 url: basePath + '/admin/getLoginUser', | 
|                 callback: function (data) { | 
|                     _this.loginUser = data.mapInfo.user; | 
|   | 
|                     if (id) { | 
|                         //加载订单信息 | 
|                         AjaxProxy.requst({ | 
|                             app: _this, | 
|                             url: basePath + '/admin/order/findOrderById/' + id, | 
|                             callback: function (data) { | 
|                                 _this.order = data.rows[0]; | 
|                                 //修改支付金额 | 
|                                 _this.changeVip(_this.order.vipId); | 
|                                 let items = _this.order.items; | 
|                                 let orderPayMoney = 0; | 
|                                 //设置欠款订单设置欠款金额等于支付金额,非欠款订单设置折扣金额等于支付金额 | 
|                                 items.forEach(item => { | 
|                                     if (item.arrears > 0) { | 
|                                         item.payMoney = item.arrears; | 
|                                     } else { | 
|                                         item.payMoney = item.zkPrice; | 
|                                     } | 
|                                     orderPayMoney += item.payMoney; | 
|   | 
|                                     //业绩设置 | 
|                                     _this.achieveList.push({ | 
|                                         orderItem: item, | 
|                                         staff: _this.loginUser, | 
|                                         saleId: _this.loginUser.suId, | 
|                                         achieveMoney: item.payMoney, | 
|                                         isShare: false, | 
|                                     }); | 
|                                 }); | 
|                                 _this.order.payMoney = orderPayMoney; | 
|                             } | 
|                         }); | 
|   | 
|                     } else { | 
|                         //获取门店信息 | 
|                         AjaxProxy.requst({ | 
|                             app: _this, | 
|                             url: basePath + '/admin/shopInfo/findUserShop', | 
|                             callback: function (data) { | 
|                                 _this.order.shopName = data.rows[0].shopName; | 
|   | 
|                             } | 
|                         }); | 
|                     } | 
|   | 
|   | 
|                 } | 
|             }); | 
|   | 
|             if (vipId) { | 
|                 _this.changeVip(vipId); | 
|             } | 
|             //获取用户列表 | 
|             AjaxProxy.requst({ | 
|                 app: _this, | 
|                 url: basePath + '/admin/getShopStaffByRoleName?roleName=美疗师', | 
|                 callback: function (data) { | 
|                     _this.userList = data.rows; | 
|                 } | 
|             }); | 
|   | 
|   | 
|         }, | 
|   | 
|         methods: { | 
|   | 
|             //取消订单 | 
|             closeFram() { | 
|                 parent.layer.close(parent.layer.getFrameIndex(window.name)); | 
|             }, | 
|   | 
|             changePayMethod(item) { | 
|                 console.log("changePayMethod", item); | 
|                 if (item.payMethod != '会员卡') { | 
|                     item.payMethodDetail = ''; | 
|                 } | 
|             }, | 
|   | 
|             getVipMoneyCards() { | 
|                 let _this = this; | 
|                 if (_this.currentVipInfo.id) { | 
|                     AjaxProxy.requst({ | 
|                         app: _this, | 
|                         data: {vipId: _this.currentVipInfo.id}, | 
|                         contentType: 'application/x-www-form-urlencoded', | 
|                         url: basePath + '/admin/moneyCardUse/getUseMoneyCard', | 
|                         callback: function (data) { | 
|                             console.log(_this.moneyCards) | 
|                             if (data.rows.length > 0) { | 
|                                 data.rows.forEach(function (item, index, input) { | 
|                                     item.showLable = item.cardName + "-余额:" + (item.realMoney + item.giftMoney) | 
|                                 }); | 
|                                 _this.moneyCards = data.rows; | 
|                                 //启用会员卡支付方式 | 
|                                 _this.payMethods[5].disabled = false; | 
|                             } else { | 
|                                 //禁用会员卡支付方式 | 
|                                 _this.payMethods[5].disabled = true; | 
|                             } | 
|   | 
|                         } | 
|                     }); | 
|                 } | 
|             }, | 
|   | 
|             //选择产品 | 
|             handleEdit(index, row, type) { | 
|   | 
|                 this.pushToSelectGoods(row, type); | 
|                 this.calculationTotal(); | 
|             }, | 
|             /** | 
|              * 把选中的产品加入到已存在的列表中 | 
|              * @param{type} 1 = 购买 2=赠送 | 
|              * */ | 
|             pushToSelectGoods(goods, type) { | 
|   | 
|                 //判断是否被选中 | 
|                 let selected = false; | 
|                 this.order.items.forEach(item => { | 
|                     if (item.shoppingGoods.id == goods.id) { | 
|                         selected = true; | 
|                         //购买数量+1 | 
|                         item.count++; | 
|                         return; | 
|                     } | 
|                 }); | 
|                 if (!selected) { | 
|                     //未选中产品加入列表 | 
|                     let item = {}; | 
|   | 
|                     item.uuid = MTools.uuid(); | 
|                     item.achieveList = []; | 
|                     item.shoppingGoods = goods; | 
|                     item.price = goods.sealPice; | 
|                     item.goodsId = goods.id; | 
|                     item.isFree = '否'; | 
|                     item.payMethod = '现金'; | 
|                     if (type == BUY_TYPE_NOT_FREE) { | 
|                         //购买 | 
|                         item.zkPrice = goods.sealPice; | 
|                         item.payMoney = goods.sealPice; | 
|                     } else if (type == BUY_TYPE_FREE) { | 
|                         //赠送 | 
|                         item.zkPrice = 0; | 
|                         item.payMoney = 0; | 
|                         item.isFree = '是'; | 
|                     } | 
|                     item.count = 1; | 
|   | 
|   | 
|                     //加入业绩 | 
|                     this.achieveList.push({ | 
|                         orderItem: item, | 
|                         staff: this.loginUser, | 
|                         saleId: this.loginUser.suId, | 
|                         achieveMoney: item.payMoney, | 
|                         isShare: false, | 
|                     }); | 
|                     this.order.items.push(item); | 
|                 } | 
|   | 
|             }, | 
|   | 
|             /** | 
|              * 点击多选 | 
|              */ | 
|             handleSelectionChange(val) { | 
|                 this.multipleSelection = val; | 
|             }, | 
|   | 
|             /** | 
|              * 计算订单总价 | 
|              */ | 
|             calculationTotal(optionType) { | 
|                 let _this = this; | 
|                 if (_this.checkSubmitOrder()) { | 
|                     _this.order.arrears = 0; | 
|                     _this.order.payMoney = 0; | 
|                     //后台计算订单金额和折扣金额 | 
|                     AjaxProxy.requst({ | 
|                         app: _this, | 
|                         data: _this.order, | 
|                         url: basePath + "/admin/order/calculationOrder", | 
|                         callback: function (data) { | 
|                             let order = data.rows[0]; | 
|                             console.log("order", order); | 
|                             _this.order.zkTotal = order.zkTotal; | 
|                             _this.order.total = order.total; | 
|   | 
|                             //支付金额计算 | 
|                             _this.order.items.forEach(item => { | 
|                                 let count = parseFloat(item.count); | 
|                                 let zkPrice = parseFloat(item.zkPrice); | 
|   | 
|                                 if (optionType != 1) { | 
|                                     //直接修改支付金额不重置支付金额 | 
|                                     item.payMoney = zkPrice * count; | 
|                                 } | 
|                                 _this.order.payMoney += parseFloat(item.payMoney); | 
|                             }); | 
|                             //计算欠款 | 
|                             _this.order.arrears = _this.order.zkTotal - _this.order.payMoney; | 
|                             if (_this.order.arrears < 0) { | 
|                                 _this.$message.error("支付金额不能大于应收金额"); | 
|                             } | 
|                         } | 
|                     }) | 
|                 } | 
|                 ; | 
|   | 
|   | 
|             }, | 
|   | 
|             confirmSubmit(){ | 
|                 let _this=this; | 
|                 //结算打印提示 | 
|                 _this.$confirm('请确认结算该订单吗?', '提示', { | 
|                     confirmButtonText: '确认', | 
|                     cancelButtonText: '取消', | 
|                     type: 'warning' | 
|                 }).then(() => { | 
|                     _this.submitOrder(1); | 
|                 }).catch(() => { | 
|   | 
|                 }); | 
|             }, | 
|   | 
|   | 
|   | 
|             /** | 
|              * 提交表单订单 | 
|              * submitType 1 提交,2保存 | 
|              */ | 
|             submitOrder(submitType) { | 
|   | 
|   | 
|   | 
|   | 
|                 if (this.checkSubmitOrder()) { | 
|                     let _this = this; | 
|   | 
|   | 
|                     //检查支付方式 | 
|                     let hasPayMethod=true; | 
|                     _this.order.items.forEach(item=>{ | 
|                         if(!item.payMethod){ | 
|                             hasPayMethod=false; | 
|                             return; | 
|                         } | 
|                     }); | 
|                     if(!hasPayMethod){ | 
|                         this.$message.warning("请选择支付方式"); | 
|                         return false; | 
|                     } | 
|   | 
|   | 
|   | 
|   | 
|   | 
|   | 
|                     //匹配业绩 | 
|                     _this.achieveList.forEach(achieve => { | 
|                         for (let i = 0; i < _this.order.items.length; i++) { | 
|                             let item = _this.order.items[i]; | 
|                             item.achieveList = []; | 
|                             if (item.uuid == achieve.orderItem.uuid) { | 
|                                 let achieveNew = { | 
|                                     beaultId: achieve.saleId, | 
|                                     t1: achieve.achieveMoney | 
|                                 }; | 
|                                 item.achieveList.push(achieveNew); | 
|                                 break; | 
|                             } | 
|                         } | 
|                     }) | 
|   | 
|                     //校验业绩金额 | 
|                     if (_this.checkAchieve()) { | 
|                         let url = basePath + "/admin/order/payOrder"; | 
|                         if (submitType == 2) { | 
|                             url = basePath + "/admin/order/saveOrder"; | 
|                         } | 
|   | 
|                         AjaxProxy.requst({ | 
|                             app: _this, | 
|                             data: _this.order, | 
|                             url: url, | 
|                             callback: function (data) { | 
|                                 let order = data.rows[0]; | 
|                                 _this.order.id = order.id; | 
|                                 _this.order.orderNo = order.orderNo; | 
|                                 //结算打印提示 | 
|                                 if (submitType == 1) { | 
|                                     _this.$confirm('结算成功,是否立刻打印小票?', '提示', { | 
|                                         confirmButtonText: '打印', | 
|                                         cancelButtonText: '取消', | 
|                                         type: 'warning' | 
|                                     }).then(() => { | 
|                                         _this.print(); | 
|   | 
|                                     }).catch(() => { | 
|                                         _this.closeFram(); | 
|                                     }); | 
|                                 } else { | 
|                                     _this.$message.success(data.info); | 
|                                 } | 
|                                 parent.myGrid.serchData(); | 
|                             } | 
|                         }); | 
|                     } | 
|   | 
|   | 
|                 } | 
|             }, | 
|             /** | 
|              * 校验订单业绩设置是否合理 | 
|              */ | 
|             checkAchieve() { | 
|                /* | 
|                //TODO 前端展示不检测,因为考虑到会员卡支付问题 | 
|                let _this = this; | 
|                 for (let i = 0; i < _this.order.items.length; i++) { | 
|                     if (_this.achieveList.length > 0) { | 
|                         let item = _this.order.items[i]; | 
|                         let sum = 0; | 
|                         item.achieveList.forEach(achieve => { | 
|                             console.log(sum, achieve); | 
|                             sum += parseFloat(achieve.t1); | 
|                         }); | 
|                         if (sum > item.payMoney) { | 
|                             this.$message.warning("业绩金额不能大于支付金额【" + item.shoppingGoods.name + "】"); | 
|                             return false; | 
|                         } | 
|                     } | 
|                 }*/ | 
|                 return true; | 
|             }, | 
|   | 
|             /** | 
|              * 检查订单是否能够提交 | 
|              */ | 
|             checkSubmitOrder() { | 
|                 let order = this.order; | 
|                 if (!order.vipId) { | 
|                     this.$message.warning("请选择会员"); | 
|                     return false; | 
|                 } | 
|                 if (order.items.length > 0) { | 
|                     order.items.forEach(item => | 
|                     { | 
|                         if (!(MTools.isRealNum(item.count) && item.count > 0)) { | 
|                             this.$message.warning("数量填写不正确"); | 
|                             return false; | 
|                         } | 
|                         if (!(MTools.isRealNum(item.zkPrice) && item.zkPrice >= 0)) { | 
|                             this.$message.warning("折扣单价填写不正确"); | 
|                             return false; | 
|                         } | 
|                         if (!(MTools.isRealNum(item.payMoney) && item.payMoney >= 0)) { | 
|                             this.$message.warning("实付金额填写不正确"); | 
|                             return false; | 
|                         } | 
|                     }) | 
|                 } else { | 
|                     this.$message.warning("请选择要购买的产品"); | 
|                     return false; | 
|                 } | 
|                 return true; | 
|             }, | 
|   | 
|   | 
|             /** | 
|              * 批量选择产品 | 
|              */ | 
|             chouseGoods() { | 
|                 let _this = this; | 
|                 this.multipleSelection.forEach(item => { | 
|                     _this.pushToSelectGoods(item, BUY_TYPE_NOT_FREE); | 
|                 }); | 
|                 this.closeXm(); | 
|                 this.calculationTotal(); | 
|             }, | 
|             /** | 
|              * 行点击事件 | 
|              */ | 
|             handleClickTableRow(row, event, column) { | 
|                 this.$refs.dataTable.toggleRowSelection(row); | 
|             }, | 
|             /** | 
|              * 删除组合产品 | 
|              */ | 
|             removeItem(index, row) { | 
|                 this.order.items.splice(index, 1); | 
|                 //删除业绩 | 
|                 let achieveListNew = []; | 
|                 this.achieveList.forEach(achieve => { | 
|                     if (achieve.orderItem.uuid != row.uuid) { | 
|                         achieveListNew.push(achieve); | 
|                     } | 
|                 }); | 
|                 this.achieveList = achieveListNew; | 
|                 this.calculationTotal(); | 
|             }, | 
|   | 
|   | 
|             /** | 
|              * 搜索项目绑定的产品信息 | 
|              */ | 
|             searchGoods() { | 
|                 let _this = this; | 
|                 if (this.queryKey && this.queryKey.trim().length > 0) { | 
|                     this.showSearchTable = true; | 
|                     this.loading = true; | 
|                     AjaxProxy.requst({ | 
|                         app: _this, | 
|                         contentType: 'application/x-www-form-urlencoded', | 
|                         //TODO 优化下拉加载 | 
|                         data: {name: _this.queryKey, limit: 10000}, | 
|                         url: basePath + "/admin/shoppinggoods/showList", | 
|                         callback: function (data) { | 
|                             _this.searchTableData = data.rows; | 
|                             _this.loading = false; | 
|                         } | 
|                     }); | 
|                 } else { | 
|                     this.showSearchTable = false; | 
|                 } | 
|             }, | 
|   | 
|   | 
|             remoteMethod(query) { | 
|                 if (query !== '') { | 
|                     this.vipLoading = true; | 
|                     let _this = this; | 
|                     AjaxProxy.requst({ | 
|                         app: _this, | 
|                         data: {keyWord: query}, | 
|                         contentType: 'application/x-www-form-urlencoded', | 
|                         url: basePath + '/admin/vipInfo/findUserByPhotoOrName', | 
|                         callback: function (data) { | 
|                             _this.vipLoading = false; | 
|                             if (data.rows.length > 0) { | 
|                                 data.rows.forEach(function (item, index, input) { | 
|                                     item.showLable = item.vipName + "-" + item.phone + "-" + item.vipNo | 
|                                 }); | 
|                             } | 
|                             _this.vipList = data.rows; | 
|                         } | 
|                     }); | 
|                 } else { | 
|   | 
|                     this.options = []; | 
|                 } | 
|             }, | 
|             changeVip(data) { | 
|                 let _this = this; | 
|                 AjaxProxy.requst({ | 
|                     app: _this, | 
|                     data: {id: data}, | 
|                     contentType: 'application/x-www-form-urlencoded', | 
|                     url: basePath + '/admin/vipInfo/findUserById', | 
|                     callback: function (data) { | 
|                         _this.currentVipInfo = data.rows[0]; | 
|                         _this.order.vipId = _this.currentVipInfo.id; | 
|                         _this.getVipMoneyCards(); | 
|   | 
|                     } | 
|                 }); | 
|             }, | 
|             closeXm() { | 
|                 this.showSearchTable = false; | 
|             }, | 
|   | 
|             //分享业绩 | 
|             shareAchieve(index, row) { | 
|                 row2 = JSON.parse(JSON.stringify(row)); | 
|                 row2.isShare = true; | 
|                 this.achieveList.push(row2); | 
|             }, | 
|             //删除业绩 | 
|             delAchieve(index, row) { | 
|                 this.achieveList.splice(index, 1); | 
|             }, | 
|             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("请先挂单在打印"); | 
|                 } | 
|   | 
|   | 
|             }, | 
|         } | 
|   | 
|     }) | 
| </script> | 
|   | 
| </body> | 
| </html> |