<!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/systools/MBaseVue.js}"></script> 
 | 
    <script type="text/javascript" th:src="@{/plugin/moment.min.js}"></script> 
 | 
    <script type="text/javascript" th:src="@{/js/systools/MBase.js}"></script> 
 | 
    <script type="text/javascript" th:src="@{/js/function/vip.js}"></script> 
 | 
    <link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}"> 
 | 
  
 | 
    <script type="text/javascript" th:src="@{/js/function/meiduCommon.js}"></script> 
 | 
    <title></title> 
 | 
    <style> 
 | 
        .ibox-content { 
 | 
            background-color: rgba(240, 242, 245, 1); 
 | 
        } 
 | 
        .aside label { 
 | 
            width: 100%; 
 | 
            margin: 5px 0 !important; 
 | 
        } 
 | 
        .arrears { 
 | 
            color: #E6A23C; 
 | 
        } 
 | 
  
 | 
        .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" id="app"> 
 | 
    <el-container> 
 | 
        <el-aside class="aside" style="width: 300px; background-color: white; padding: 10px;"> 
 | 
            <el-row style="border-bottom: #E4E7ED 1px solid;"> 
 | 
                <el-col :span="20" style="padding: 10px;"> 
 | 
                    <el-row type="flex" align="middle"> 
 | 
                        <el-col :span="7"> 
 | 
                            <el-avatar :size="60" :src="circleUrl"></el-avatar> 
 | 
                        </el-col> 
 | 
                        <el-col :span="15" style="margin-left: 10px;"> 
 | 
                            <label>{{vipInfo.vipName}}({{vipInfo.vipLevel == null ? '' : vipInfo.vipLevel.levelName}})</label> 
 | 
                            <label>{{vipInfo.vipNo}}</label> 
 | 
                        </el-col> 
 | 
                    </el-row> 
 | 
                    <el-row style="line-height: 20px;"> 
 | 
                        <label>订单号: <span>{{order.orderNo}}</span></label> 
 | 
                        <label>下单顾问: <span>{{order.staffName}}</span></label> 
 | 
                        <label>消费门店: <span>{{order.shopShortName}}</span></label> 
 | 
                        <label>订单时间: <span>{{order.orderTime}}</span></label> 
 | 
                        <label>备  注: <span>{{order.remark}}</span></label> 
 | 
                    </el-row> 
 | 
                </el-col> 
 | 
            </el-row> 
 | 
            <el-row style="padding: 10px; border-bottom: #E4E7ED 1px solid;"> 
 | 
                <el-col :span="24"> 
 | 
                    <el-row> 
 | 
                        <el-col :span="6" style="text-align: right;"> 
 | 
                            <label>总金额</label> 
 | 
                            <label>整单折扣</label> 
 | 
                            <label style="font-size: 14px;">应收金额</label> 
 | 
                            <label>欠款</label> 
 | 
                            <label>已还</label> 
 | 
                            <label v-if="order.refund != 0">退款</label> 
 | 
                        </el-col> 
 | 
                        <el-col :span="14" style="text-align: right;"> 
 | 
                            <label>¥ {{order.total}}</label> 
 | 
                            <!-- 退款订单不能显示为负数 --> 
 | 
                            <label>¥ {{(order.zkTotal - order.total>0?order.zkTotal - order.total:0).toFixed(2)}}</label> 
 | 
                            <label>¥ {{order.zkTotal}}</label> 
 | 
                            <label>¥ {{order.arrears}}</label> 
 | 
                            <label>¥ {{order.repay}}</label> 
 | 
                            <label v-if="order.refund != 0">¥ {{order.refund}}</label> 
 | 
                        </el-col> 
 | 
                    </el-row> 
 | 
                </el-col> 
 | 
            </el-row> 
 | 
            <el-row style="padding: 10px; border-bottom: #E4E7ED 1px solid;"> 
 | 
                <el-col :span="24"> 
 | 
                    <el-row> 
 | 
                        <h3>收款明细</h3> 
 | 
                    </el-row> 
 | 
                    <el-row> 
 | 
                        <el-col :span="6" style="text-align: right;"> 
 | 
                            <label v-for="(item, index) in payMethodItems">{{item.payMethod}}</label> 
 | 
                        </el-col> 
 | 
                        <el-col :span="14" style="text-align: right;"> 
 | 
                            <label v-for="(item, index) in payMethodItems">¥ {{item.amount}}</label> 
 | 
                        </el-col> 
 | 
                    </el-row> 
 | 
                </el-col> 
 | 
            </el-row> 
 | 
            <el-row type="flex" justify="center" style="margin: 20px;"> 
 | 
                <el-button size="medium" type="primary" @click="printf">打印</el-button> 
 | 
            </el-row> 
 | 
        </el-aside> 
 | 
        <el-main style="background-color: white; margin-right: 15px; margin-left: 15px; padding: 20px 30px;"> 
 | 
            <el-tabs v-model="activeName" @tab-click="handleClick"> 
 | 
                <el-tab-pane label="订单明细" name="first"> 
 | 
                    <el-row> 
 | 
                        <el-button size="mini" type="primary" @click="openPayMoneyDialog" v-if="isRefund">提交退款<span v-if="totalRefund"> ¥ {{totalRefund}}</span></el-button> 
 | 
                        <el-button size="mini" type="danger" @click="isRefund = false" v-if="isRefund">取消</el-button> 
 | 
                        <el-button size="mini" type="primary" @click="isRefund = true" v-if="order.statu == '已付款' && !isRefund">退款</el-button> 
 | 
                    </el-row> 
 | 
                    <el-row v-show="!isRefund"> 
 | 
                        <el-table 
 | 
                                :data="orderItems" 
 | 
                                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" 
 | 
                                    label="产品名称" 
 | 
                                    width="280"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="shoppingGoods.goodType" 
 | 
                                    label="产品类型"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="price" 
 | 
                                    label="单价"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="count" 
 | 
                                    label="数量"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="zkPrice" 
 | 
                                    label="折扣单价"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column  label="小计" :formatter="calOrderTotalFormatter"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column  label="支付方式"  prop="payMethod"> 
 | 
                            </el-table-column> 
 | 
                        </el-table> 
 | 
                    </el-row> 
 | 
                    <el-row v-show="isRefund"> 
 | 
                        <el-table 
 | 
                                :data="orderItems" 
 | 
                                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" 
 | 
                                    label="产品名称" 
 | 
                                    width="280"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="shoppingGoods.goodType" 
 | 
                                    label="产品类型"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="zkPrice" 
 | 
                                    label="单价"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column 
 | 
                                    prop="count" 
 | 
                                    label="可退数量"> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column label="退款单价"> 
 | 
                                <template slot-scope="scope"> 
 | 
                                    <el-input @change="calRefund" v-model="scope.row.refundPrice" v-if="scope.row.count > 0"></el-input> 
 | 
                                </template> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column label="退款数量"> 
 | 
                                <template slot-scope="scope"> 
 | 
                                    <el-input @change="calRefund" v-model.number="scope.row.refundCount" v-if="scope.row.count > 0"></el-input> 
 | 
                                </template> 
 | 
                            </el-table-column> 
 | 
                            <el-table-column label="是否退库存" align="center"> 
 | 
                                <template slot-scope="scope"> 
 | 
                                    <el-checkbox v-model="scope.row.returnStore" v-if="scope.row.type == '家居产品' && scope.row.count > 0"></el-checkbox> 
 | 
                                </template> 
 | 
                            </el-table-column> 
 | 
                        </el-table> 
 | 
  
 | 
                        <el-checkbox v-model="isReturnAchieve">退业绩</el-checkbox> 
 | 
  
 | 
                        <el-row v-if="isReturnAchieve"> 
 | 
                            <el-table 
 | 
                                    :data="achieveItems" 
 | 
                                    style="width: 100%"> 
 | 
                                <el-table-column 
 | 
                                        type="index" 
 | 
                                        width="50"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="goodsNo" 
 | 
                                        label="产品编号" 
 | 
                                        width="100"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="goodsName" 
 | 
                                        label="产品名称" 
 | 
                                        width="200"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="zkTotal" 
 | 
                                        label="收款"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="payMethod" 
 | 
                                        label="支付方式"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="achieveType" 
 | 
                                        label="业绩类型"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="goodsCash" 
 | 
                                        label="原业绩"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        prop="projPercentage" 
 | 
                                        label="原提成"> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column label="业绩"> 
 | 
                                    <template slot-scope="scope"> 
 | 
                                        <el-input v-model="scope.row.returnAchieve" v-if="scope.row.zkTotal != 0"></el-input> 
 | 
                                    </template> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column label="提成"> 
 | 
                                    <template slot-scope="scope"> 
 | 
                                        <el-input v-model="scope.row.returnCommission" v-if="scope.row.zkTotal != 0"></el-input> 
 | 
                                    </template> 
 | 
                                </el-table-column> 
 | 
                                <el-table-column 
 | 
                                        label="员工" prop="meiliao"> 
 | 
                                </el-table-column> 
 | 
                            </el-table> 
 | 
                        </el-row> 
 | 
                    </el-row> 
 | 
                </el-tab-pane> 
 | 
                <el-tab-pane label="业绩设置" name="second"> 
 | 
                    <el-row> 
 | 
                        <el-button size="mini" type="primary" @click="saveAchieve" v-if="order.statu == '已付款'">保存</el-button> 
 | 
                    </el-row> 
 | 
                    <el-table 
 | 
                            :data="achieveItems" 
 | 
                            style="width: 100%"> 
 | 
                        <el-table-column 
 | 
                                type="index" 
 | 
                                width="50"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="goodsNo" 
 | 
                                label="产品编号" 
 | 
                                width="180"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="goodsName" 
 | 
                                label="产品名称" 
 | 
                                width="180"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="zkTotal" 
 | 
                                label="收款"> 
 | 
                        </el-table-column> 
 | 
  
 | 
                        <el-table-column 
 | 
                                label="支付方式" 
 | 
                                width="130"> 
 | 
                            <template slot-scope="scope"> 
 | 
                                <el-select  v-model="scope.row.payMethod" 
 | 
                                            placeholder="请选择支付方式"> 
 | 
                                    <el-option 
 | 
                                            v-for="item in itemSimplePayMethods" 
 | 
                                            :key="item.value" 
 | 
                                            :label="item.label" 
 | 
                                            :value="item.value" 
 | 
                                            :disabled="item.disabled"> 
 | 
                                    </el-option> 
 | 
                                </el-select> 
 | 
                            </template> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="t3" 
 | 
                                label="业绩类型"> 
 | 
                            <template slot-scope="scope"> 
 | 
                                <el-select v-model="scope.row.achieveType" placeholder="请选择业绩类型"> 
 | 
                                    <el-option 
 | 
                                            v-for="item in achieveTypeList" 
 | 
                                            :key="item.value" 
 | 
                                            :label="item.value" 
 | 
                                            :value="item.value"> 
 | 
                                    </el-option> 
 | 
                                </el-select> 
 | 
                            </template> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="achieve" 
 | 
                                label="业绩"> 
 | 
                            <template slot-scope="scope"> 
 | 
                                <el-input  @input="checkAchieveMoney" v-model="scope.row.goodsCash"></el-input> 
 | 
                            </template> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="projPercentage" 
 | 
                                label="提成"> 
 | 
                            <template slot-scope="scope"> 
 | 
                                <el-input v-model="scope.row.projPercentage"></el-input> 
 | 
                            </template> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                label="员工"> 
 | 
                            <template slot-scope="scope"> 
 | 
                                <el-select v-model="scope.row.beaultId" 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 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" v-if="!scope.row.isShare"> 
 | 
                                    <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-tab-pane> 
 | 
                <el-tab-pane label="交易流水" name="third"> 
 | 
                    <el-table 
 | 
                            :data="flowItems" 
 | 
                            style="width: 100%"> 
 | 
                        <el-table-column 
 | 
                                type="index" 
 | 
                                width="50"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="orderNo" 
 | 
                                label="订单号" 
 | 
                                width="180"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="flowContent" 
 | 
                                label="交易内容" 
 | 
                                width="300"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="createTime" 
 | 
                                label="交易时间"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="flowType" 
 | 
                                label="交易类型"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="amount" 
 | 
                                label="交易金额"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="payMethod" 
 | 
                                label="支付方式"> 
 | 
                        </el-table-column> 
 | 
                        <el-table-column 
 | 
                                prop="flowNo" 
 | 
                                label="流水号"> 
 | 
                        </el-table-column> 
 | 
                    </el-table> 
 | 
                </el-tab-pane> 
 | 
            </el-tabs> 
 | 
        </el-main> 
 | 
    </el-container> 
 | 
  
 | 
    <el-dialog title="退款" :visible.sync="dialogSettleVisible"> 
 | 
        <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;"><span style="color: red; font-size: 20px;">¥ {{refundMoney}}</span></el-col> 
 | 
        </el-row> 
 | 
  
 | 
        <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="18"> 
 | 
                <el-row> 
 | 
                    <ul> 
 | 
                        <span v-for="(item, index) in payMethods"> 
 | 
                            <el-popover 
 | 
                                    :disabled="item.type != '储值卡'" 
 | 
                                    placement="bottom" 
 | 
                                    trigger="hover" 
 | 
                                    @hide="popoverHide(item)"> 
 | 
                                <el-row style="text-align: center;"><span style="padding: 0 0 10px 0; display: block; font-size: 12px;">选择储值卡支付方式</span></el-row> 
 | 
                                <el-tree :data="moneyCards" 
 | 
                                         show-checkbox 
 | 
                                         default-expand-all 
 | 
                                         node-key="id" 
 | 
                                         ref="tree" 
 | 
                                         check-strictly 
 | 
                                         highlight-current 
 | 
                                         @check="(click, checked,$item)=>{handleCheckChange(click, checked,$item)}" 
 | 
                                         :props="defaultProps"> 
 | 
                                </el-tree> 
 | 
                                <li :class="{active : item.isActive}" slot="reference" @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> 
 | 
                            </el-popover> 
 | 
                        </span> 
 | 
                    </ul> 
 | 
                </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="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-col :span="6" style="margin-left: 10px;" v-if="item.type == '储值卡'">{{item.isGift == 1 ? '赠送余额' : '余额' }}:<span class="arrears">¥ {{item.balance}}</span></el-col> 
 | 
                </el-row> 
 | 
            </el-col> 
 | 
        </el-row> 
 | 
  
 | 
        <!--        <el-row style="text-align: center; margin: 20px 0 10px 0">--> 
 | 
        <!--            <el-checkbox v-model="printPaper">打印小票</el-checkbox>--> 
 | 
        <!--        </el-row>--> 
 | 
  
 | 
        <el-row style="text-align: center; margin: 10px 0 0 0"> 
 | 
            <el-button type="primary" @click="confirmSubmit">确认收款</el-button> 
 | 
        </el-row> 
 | 
    </el-dialog> 
 | 
</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="@{/js/systools/MJsBase.js}"></script> 
 | 
<script type="text/javascript" th:src="@{/js/plugin/LodopFuncs.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"> 
 | 
    //<![CDATA[ 
 | 
    var app = new Vue({ 
 | 
        el : "#app", 
 | 
        data : { 
 | 
            orderParam : "", 
 | 
            vipInfo : "", 
 | 
            order : "", 
 | 
            activeName : "first", 
 | 
            circleUrl : "https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png", 
 | 
            userList : [], 
 | 
            achieveTypeList : [], 
 | 
            orderItems : [], 
 | 
            achieveItems : [], 
 | 
            flowItems : [], 
 | 
            payMethodItems : [], 
 | 
            isRefund : false, 
 | 
            isReturnAchieve : false, 
 | 
            totalRefund : "", 
 | 
            itemSimplePayMethods:[{ 
 | 
                value: '现金', 
 | 
                label:'现金', 
 | 
            },{ 
 | 
                value: '划扣', 
 | 
                label:'划扣', 
 | 
            }], 
 | 
            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: '团购' 
 | 
            }, { 
 | 
                value: '储值卡', 
 | 
                img: '/images/pay/card.png', 
 | 
                isActive: false, 
 | 
                type: '储值卡' 
 | 
            }, ], 
 | 
  
 | 
            dialogSettleVisible : false, 
 | 
            moneyCards: [], 
 | 
            defaultProps: { 
 | 
                children: 'children', 
 | 
                label: 'showLable' 
 | 
            }, 
 | 
            treeSelect : [], 
 | 
            payMoneys : [], 
 | 
            printPaper : true, 
 | 
            refundMoney : 0, 
 | 
            data : {}, 
 | 
  
 | 
        }, 
 | 
        created : function() { 
 | 
            let _this = this; 
 | 
            this.orderParam = /*[[${orderParam}]]*/ 
 | 
            var orderId = /*[[${orderId}]]*/ 
 | 
            var orderNo = /*[[${orderNo}]]*/ 
 | 
  
 | 
            var param = {}; 
 | 
            if(orderId) { 
 | 
                param.id = orderId; 
 | 
            } else { 
 | 
                param.orderNo = orderNo; 
 | 
            } 
 | 
            this.queryOrderDetailData(param); 
 | 
            // 业绩类型 
 | 
            AjaxProxy.requst({ 
 | 
                app: _this, 
 | 
                url: basePath + '/admin/customerDictionary/getListByParentCode/YJLX', 
 | 
                callback: function (data) { 
 | 
                    _this.achieveTypeList = data.rows; 
 | 
                } 
 | 
            }); 
 | 
        }, 
 | 
        methods : { 
 | 
            calRefund() { 
 | 
                let _this = this; 
 | 
                var total = 0; 
 | 
                _this.orderItems.forEach(item => { 
 | 
                    if (item.refundPrice && item.refundCount) { 
 | 
                        total += parseFloat(item.refundPrice * item.refundCount); 
 | 
                    } 
 | 
                }) 
 | 
  
 | 
                _this.totalRefund = total; 
 | 
            }, 
 | 
            queryOrderDetailData(param) { 
 | 
                let _this = this; 
 | 
                AjaxProxy.requst({ 
 | 
                    app: _this, 
 | 
                    data: param, 
 | 
                    contentType: 'application/x-www-form-urlencoded', 
 | 
                    url: basePath + '/admin/order/findOrderDetailByIdOrNo', 
 | 
                    callback: function (data) { 
 | 
                        console.log(data); 
 | 
                        var mapInfo = data.mapInfo; 
 | 
                        _this.vipInfo = mapInfo.vipInfo; 
 | 
                        _this.order = mapInfo.order; 
 | 
                        _this.orderItems = mapInfo.orderItems; 
 | 
                        _this.payMethodItems = mapInfo.payMethods; 
 | 
                        _this.achieveItems = mapInfo.achieveList; 
 | 
  
 | 
                        _this.flowItems = _this.order.flows; 
 | 
  
 | 
                        _this.checkAchieveIsDel(_this.achieveItems); 
 | 
                        _this.order.orderTime = moment(_this.order.orderTime).format("YYYY-MM-DD HH:mm"); 
 | 
  
 | 
                        var arrears = 0; 
 | 
                        var refund = 0; 
 | 
                        var repay = 0; 
 | 
                        for(var i = 0; i < _this.flowItems.length; i++) { 
 | 
                            var item = _this.flowItems[i]; 
 | 
                            if (item.payMethod === '欠款') { 
 | 
                                arrears += item.amount; 
 | 
                            } 
 | 
  
 | 
                            if (item.flowType === '还款') { 
 | 
                                repay += item.amount; 
 | 
                            } 
 | 
  
 | 
                            if (item.flowType === '退款') { 
 | 
                                refund += item.amount; 
 | 
                            } 
 | 
                        } 
 | 
                        _this.order.arrears = arrears; 
 | 
                        _this.order.refund = refund; 
 | 
                        _this.order.repay = repay; 
 | 
  
 | 
                        //获取用户列表 
 | 
                        AjaxProxy.requst({ 
 | 
                            app: _this, 
 | 
                            url: basePath + '/admin/shopAll', 
 | 
                            callback: function (data) { 
 | 
                                _this.userList = data.rows; 
 | 
                            } 
 | 
                        }); 
 | 
                        _this.getVipMoneyCards(); 
 | 
                    } 
 | 
                }); 
 | 
            }, 
 | 
            confirmSubmit() { 
 | 
                let _this = this; 
 | 
                _this.data.oldOrderId = _this.order.id; 
 | 
                _this.data.vipId = _this.vipInfo.id; 
 | 
  
 | 
                if(!_this.payMethodFlow()) { 
 | 
                    return; 
 | 
                } 
 | 
  
 | 
                let orderItems = _this.orderItems; 
 | 
                let dataItems = []; 
 | 
                for(var i = 0; i < orderItems.length; i++) { 
 | 
                    let item = orderItems[i]; 
 | 
                    if (item.refundPrice && item.refundCount) { 
 | 
                        let achieveList = [] 
 | 
                        if (_this.isReturnAchieve) { 
 | 
                            for(var j = 0; j < _this.achieveItems.length; j++) { 
 | 
                                let achieveItem = _this.achieveItems[j]; 
 | 
                                if (achieveItem.returnAchieve || achieveItem.returnCommission) { 
 | 
                                    achieveItem.t1 = achieveItem.returnAchieve ?  achieveItem.returnAchieve : 0; 
 | 
                                    achieveItem.projPercentage = achieveItem.returnCommission ? achieveItem.returnCommission : 0; 
 | 
                                    achieveList.push(achieveItem); 
 | 
                                } 
 | 
                            } 
 | 
  
 | 
                            item.achaeveList = achieveList; 
 | 
                        } 
 | 
                        if (item.returnStore) { 
 | 
                            item.isReturnStore = 'Y'; 
 | 
                        } else { 
 | 
                            item.isReturnStore = 'N'; 
 | 
                        } 
 | 
  
 | 
                        item.preCount = item.count; 
 | 
                        item.count = item.refundCount; 
 | 
                        item.zkPrice = item.refundPrice; 
 | 
                        item.cashPay = 0; 
 | 
                        item.cardPay = 0; 
 | 
                        item.oldItemId = item.id; 
 | 
                        dataItems.push(item); 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                _this.data.items = dataItems; 
 | 
                _this.data.zkTotal =  _this.refundMoney; 
 | 
                _this.data.total =  _this.total; 
 | 
  
 | 
  
 | 
                AjaxProxy.requst({ 
 | 
                    app: _this, 
 | 
                    data: _this.data, 
 | 
                    contentType: 'application/json', 
 | 
                    url: basePath + '/admin/order/refundOrder', 
 | 
                    callback: function (data) { 
 | 
                        _this.isRefund = false; 
 | 
                        _this.dialogSettleVisible = false; 
 | 
                        var param = {}; 
 | 
                        param.id = _this.data.oldOrderId; 
 | 
                        _this.queryOrderDetailData(param); 
 | 
                    } 
 | 
                }); 
 | 
  
 | 
            }, 
 | 
            payMethodFlow() { 
 | 
                let _this = this; 
 | 
                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 = parseFloat(item.money); 
 | 
                        if (item.type == '储值卡'){ 
 | 
                            flow.isGift = item.isGift; 
 | 
                            flow.cardId = item.id; 
 | 
                        } 
 | 
                        total += parseFloat(item.money); 
 | 
                        flows.push(flow) 
 | 
                    }) 
 | 
                    if (total != _this.refundMoney) { 
 | 
                        this.$message.warning("输入付款总金额与应付金额不符"); 
 | 
                        return false; 
 | 
                    } 
 | 
  
 | 
                    if(_this.order.zkTotal - _this.order.refund - _this.order.arrears < total) { 
 | 
                        this.$message.warning("退款金额不能超过收款金额"); 
 | 
                        return false; 
 | 
                    } 
 | 
                    _this.data.flows = flows; 
 | 
                    return true; 
 | 
                } else { 
 | 
                    this.$message.warning("请选择支付方式"); 
 | 
                    return false; 
 | 
                } 
 | 
            }, 
 | 
            openPayMoneyDialog() { 
 | 
                let _this = this; 
 | 
                let items = this.orderItems; 
 | 
                _this.refundMoney = 0; 
 | 
                _this.total = 0; 
 | 
  
 | 
                for(var i = 0; i < items.length; i++) { 
 | 
                    let item = items[i] 
 | 
                    if (item.refundPrice && item.refundCount) { 
 | 
                        if (!item.refundPrice > 0 && !item.refundCount > 0) { 
 | 
                            _this.$message.error("退款金额或退款数量须大于0"); 
 | 
                            return; 
 | 
                        } 
 | 
  
 | 
                        if (item.refundCount > item.count) { 
 | 
                            _this.$message.error("输入正确的退款数量"); 
 | 
                            return; 
 | 
                        } 
 | 
  
 | 
                        _this.refundMoney += parseFloat(item.refundPrice * item.refundCount); 
 | 
                        //记录一下未优惠之前的价格 
 | 
                        _this.total += parseFloat(item.price * item.refundCount); 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                if (_this.refundMoney == 0) { 
 | 
                    _this.$message.error("请输入退款金额或退款数量"); 
 | 
                    return; 
 | 
                } 
 | 
                _this.dialogSettleVisible = true; 
 | 
            }, 
 | 
            calOrderTotalFormatter(row, column) { 
 | 
                return row.count * row.zkPrice; 
 | 
            }, 
 | 
            getVipMoneyCards() { 
 | 
                let _this = this; 
 | 
                if (_this.order.vipId) { 
 | 
                    AjaxProxy.requst({ 
 | 
                        app: _this, 
 | 
                        data: {vipId: _this.order.vipId}, 
 | 
                        contentType: 'application/x-www-form-urlencoded', 
 | 
                        url: basePath + '/admin/moneyCardUse/getUseMoneyCard', 
 | 
                        callback: function (data) { 
 | 
                            if (data.rows.length > 0) { 
 | 
                                data.rows.forEach(function (item, index, input) { 
 | 
                                    item.showLable = item.cardName + "-余额:" + (item.realMoney) 
 | 
                                    item.uuid = MTools.uuid(); 
 | 
                                    if (item.giftMoney != 0) { 
 | 
                                        var children = []; 
 | 
                                        var gift = {}; 
 | 
                                        gift.id = item.id; 
 | 
                                        gift.giftMoney = item.giftMoney; 
 | 
                                        gift.showLable = item.cardName + '-赠送金额' + item.giftMoney; 
 | 
                                        gift.cardName = item.cardName; 
 | 
                                        gift.isGift = 1; 
 | 
                                        gift.uuid = MTools.uuid(); 
 | 
                                        children.push(gift); 
 | 
                                        item.children = children; 
 | 
                                    } 
 | 
                                }); 
 | 
                                _this.moneyCards = data.rows; 
 | 
                            } 
 | 
                        } 
 | 
                    }); 
 | 
                } 
 | 
            }, 
 | 
            payMethodSelect(item, index) { 
 | 
                let _this = this; 
 | 
                let payMoneys = _this.payMoneys; 
 | 
                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.refundMoney - hasAmount > 0) { 
 | 
                                Vue.set(item, 'money', _this.refundMoney - hasAmount); 
 | 
                            } 
 | 
                            _this.payMoneys.push(item); 
 | 
                        } 
 | 
                    }); 
 | 
                } 
 | 
            }, 
 | 
            popoverHide(item) { 
 | 
                if(this.treeSelect.length <= 0) { 
 | 
                    Vue.set(item, 'isActive', false) 
 | 
                } else { 
 | 
                    Vue.set(item, 'isActive', true) 
 | 
                } 
 | 
            }, 
 | 
            handleCheckChange(clickNode, checked) { 
 | 
                let _this = this; 
 | 
  
 | 
                let nodes = checked.checkedNodes; 
 | 
                _this.treeSelect = nodes; 
 | 
                var index = -1; 
 | 
                // 判断点击节点是否在已展示支付方式中 
 | 
                for(var i = 0; i < _this.payMoneys.length; i++) { 
 | 
                    let node = _this.payMoneys[i]; 
 | 
                    if (node.uuid === clickNode.uuid) { 
 | 
                        index = i; 
 | 
                        break; 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                // 若点击节点在选中节点中,且已展示支付方式不存在,则添加 
 | 
                if (nodes.indexOf(clickNode) > -1 && index === -1) { 
 | 
                    var node = clickNode; 
 | 
                    var item = {}; 
 | 
                    if (node.isGift) { 
 | 
                        item.value = node.cardName; 
 | 
                        item.balance = node.giftMoney; 
 | 
                        item.isGift = 'Y'; 
 | 
                    } else { 
 | 
                        item.value = node.cardName; 
 | 
                        item.balance = node.realMoney; 
 | 
                        item.isGift = 'N'; 
 | 
                    } 
 | 
                    item.type = '储值卡'; 
 | 
                    item.id = node.id; 
 | 
                    item.uuid = clickNode.uuid; 
 | 
                    _this.payMoneys.push(item); 
 | 
                } 
 | 
  
 | 
                // 若点击节点不存在选中节点中,且已展示支付方式中存在,则移除 
 | 
                if (nodes.indexOf(clickNode) === -1 && index > -1) { 
 | 
                    _this.payMoneys.splice(index, 1); 
 | 
                } 
 | 
            }, 
 | 
            closeFrame() { 
 | 
                parent.layer.close(parent.layer.getFrameIndex(window.name)); 
 | 
            }, 
 | 
            saveAchieve() { 
 | 
                let _this = this; 
 | 
                if(_this.checkAchieveMoney()){ 
 | 
                    AjaxProxy.requst({ 
 | 
                        app: _this, 
 | 
                        data: _this.achieveItems, 
 | 
                        contentType: 'application/json', 
 | 
                        url: basePath + '/admin/achieve/add', 
 | 
                        callback: function (data) { 
 | 
                            _this.$message.success(data.info); 
 | 
                        } 
 | 
                    }); 
 | 
                } 
 | 
  
 | 
            }, 
 | 
  
 | 
            shareAchieve(index, row) { 
 | 
                var row2 = JSON.parse(JSON.stringify(row)); 
 | 
                row2.id = null; 
 | 
                row2.isShare = true; 
 | 
                this.achieveItems.splice(index+1,0,row2); 
 | 
                this.calculationAchieve(); 
 | 
            }, 
 | 
            //业绩均分订单金额 
 | 
            calculationAchieve(){ 
 | 
                console.log("计算业绩"); 
 | 
                let jsqMap={}; 
 | 
                this.achieveItems.forEach(achieve=>{ 
 | 
                    key=achieve.achieveType+achieve.orderItemId; 
 | 
                    if(!jsqMap[key]){ 
 | 
                        jsqMap[key]=1; 
 | 
                    }else{ 
 | 
                        jsqMap[key]++; 
 | 
                    } 
 | 
                }); 
 | 
                this.achieveItems.forEach(achieve=>{ 
 | 
                    key=achieve.achieveType+achieve.orderItemId; 
 | 
                    achieve.goodsCash=(achieve.zkTotal/jsqMap[key]).toFixed(2); 
 | 
                }); 
 | 
            }, 
 | 
            //校验业绩是否大于订单收款金额 
 | 
            checkAchieveMoney(){ 
 | 
                console.log("校验业绩是否大于订单收款金额"); 
 | 
                let jsqMap={}; 
 | 
                let isOk=true; 
 | 
                for(let i=0 ; i< this.achieveItems.length; i++){ 
 | 
                    let achieve=this.achieveItems[i]; 
 | 
                    if(!isNaN(achieve.goodsCash)  ){ 
 | 
                        key=achieve.achieveType+achieve.orderItemId; 
 | 
                        if(!jsqMap[key]){ 
 | 
                            jsqMap[key]=parseFloat(achieve.goodsCash); 
 | 
                        }else{ 
 | 
                            jsqMap[key]=jsqMap[key]+parseFloat(achieve.goodsCash); 
 | 
                        } 
 | 
                        if(jsqMap[key]>achieve.zkTotal) { 
 | 
                            this.$message.error("【"+achieve.goodsName + "】业绩分配金额大于支付金额"); 
 | 
                            isOk = false; 
 | 
                            break; 
 | 
                        } 
 | 
                    }else{ 
 | 
                        this.$message.error("【"+achieve.goodsName + "】业绩分配金额请填写数字"); 
 | 
                        isOk=false; 
 | 
                        break; 
 | 
                    } 
 | 
                } 
 | 
                console.log("isOk",isOk); 
 | 
                return isOk; 
 | 
            }, 
 | 
            //删除业绩 
 | 
            delAchieve(index, row) { 
 | 
                let _this = this; 
 | 
                _this.achieveItems.splice(index, 1); 
 | 
                this.calculationAchieve(); 
 | 
            }, 
 | 
            checkAchieveIsDel(items) { 
 | 
                var achieveIds = []; 
 | 
                for(var i = 0; i < items.length; i++) { 
 | 
                    var item = items[i]; 
 | 
                    if(achieveIds.indexOf(item.orderItemId) === -1) { 
 | 
                        achieveIds.push(item.orderItemId); 
 | 
                        item.isShare = false; 
 | 
                    } else { 
 | 
                        item.isShare = true; 
 | 
                    } 
 | 
  
 | 
                    item.t1 = item.consume + item.cardCash; 
 | 
                } 
 | 
            }, 
 | 
            printf() { 
 | 
                var id = this.order.id; 
 | 
                layer.open({ 
 | 
                    type: 2, 
 | 
                    title: "打印订单", 
 | 
                    area: ['250px', '550px'], 
 | 
                    maxmin: true, 
 | 
                    content: [basePath + '/admin/redirect/hive/beautySalon/print-order?id=' + id] 
 | 
                }); 
 | 
            }, 
 | 
            handleClick() { 
 | 
  
 | 
            }, 
 | 
            toBack() { 
 | 
                MTools.closeForm(); 
 | 
            }, 
 | 
        } 
 | 
    }); 
 | 
    //]]> 
 | 
</script> 
 | 
</html> 
 |