<!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>
|
<link rel="stylesheet" th:href="@{/plugin/element-ui/index.css}">
|
<link th:href="@{/css/styleOne/style.min.css}" rel="stylesheet" type="text/css"/>
|
<title></title>
|
<style>
|
.paymethod ul {
|
padding: 0;
|
margin: 0;
|
height: 50px;
|
}
|
.paymethod ul li {
|
padding: 10px;
|
margin: 5px;
|
list-style:none;
|
float: left;
|
display: block;
|
cursor: pointer;
|
position: relative;
|
border: white 1px solid;
|
}
|
.paymethod ul li:hover {
|
border: #409EFF 1px solid;
|
}
|
.paymethod .active {
|
border: #409EFF 1px solid;
|
}
|
.paymethod .active::after {
|
content: '';
|
display: block;
|
height: 0px;
|
width: 0px;
|
position: absolute;
|
bottom: 0;
|
right: 0;
|
color:#fff;
|
/**对号大小*/
|
font-size: 10px;
|
line-height: 8px;
|
border: 3px solid;
|
border-color: transparent #4884ff #4884ff transparent;
|
}
|
|
.el-dialog__body {
|
padding-top: 10px !important;
|
}
|
</style>
|
</head>
|
<div class="panel-body" id="app">
|
<el-dialog title="还款" :visible.sync="dialogSettleVisible" :show-close="false" :close-on-click-modal="false" :close-on-press-escape="false">
|
<el-row type="flex" align="middle" style="padding: 0 0 10px 0;">
|
<el-col :span="5" style="text-align: center;">还款金额</el-col>
|
<el-col :span="10" style="text-align: center; line-height: 50px;"><span style="color: red; font-size: 20px;">¥ {{order.arrears}}</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="15">
|
<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="submitBj">确认收款</el-button>
|
<el-button type="danger" @click="cancelSubmit">取消</el-button>
|
</el-row>
|
</el-dialog>
|
</div>
|
|
<script type="text/javascript" th:src="@{/js/plugin/jquery-2.1.4.min.js}"></script>
|
<script type="text/javascript" th:src="@{/js/plugin/jquery.query.js}"></script>
|
<script type="text/javascript" th:src="@{/plugin/layer/layer.js}"></script>
|
<script type="text/javascript" th:src="@{/js/systools/AjaxProxyVue.js}"></script>
|
<script type="text/javascript" th:src="@{/js/plugin/vue.js}"></script>
|
<script type="text/javascript" th:src="@{/plugin/element-ui/index.js}"></script>
|
<script type="text/javascript" th:inline="javascript">
|
//<![CDATA[
|
var vue = new Vue({
|
el: '#app',
|
data : {
|
order : "",
|
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: '储值卡'
|
},],
|
moneyCards : [],
|
dialogSettleVisible : true,
|
defaultProps: {
|
children: 'children',
|
label: 'showLable'
|
},
|
treeSelect : [],
|
payMoneys : [],
|
printPaper : false,
|
},
|
created : function() {
|
this.order = /*[[${order}]]*/
|
this.getVipMoneyCards();
|
},
|
methods : {
|
submitBj() {
|
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 = item.money;
|
if (item.type == '储值卡'){
|
flow.isGift = item.isGift;
|
flow.cardId = item.id;
|
}
|
total += item.money;
|
flows.push(flow)
|
})
|
if (total > _this.order.arrears) {
|
this.$message.warning("输入付款总金额大于应还金额");
|
return false;
|
}
|
_this.order.flows = flows;
|
} else {
|
this.$message.warning("请选择支付方式");
|
return false;
|
}
|
|
let url = basePath + "/admin/moneyCardUse/bj";
|
|
AjaxProxy.requst({
|
app: _this,
|
data: _this.order,
|
url: url,
|
callback: function (data) {
|
if (_this.printPaper) {
|
_this.print();
|
}
|
|
if(parent.myGrid) {
|
parent.myGrid.serchData();
|
}
|
|
if (parent.app) {
|
parent.app.orderQuery();
|
}
|
|
_this.closeFrame();
|
}
|
});
|
},
|
cancelSubmit() {
|
this.closeFrame();
|
},
|
print() {
|
let _this = this;
|
if (_this.order.id) {
|
layer.open({
|
type: 2,
|
title: "打印订单",
|
area: ['250px', '550px'],
|
maxmin: true,
|
content: [basePath + '/admin/order/printOrder?id=' + this.order.id],
|
cancel: function (index, layero) {
|
_this.closeFram();
|
}
|
});
|
} else {
|
this.$message.warning("请先挂单在打印");
|
}
|
|
|
},
|
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.order.arrears - hasAmount > 0) {
|
Vue.set(item, 'money', _this.order.arrears - 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));
|
},
|
}
|
});
|
//]]>
|
</script>
|
</body>
|
</html>
|