提交新项目

This commit is contained in:
kongyuebin
2019-12-19 14:47:58 +08:00
parent 7ba20ac1b9
commit f29066a984
609 changed files with 238892 additions and 0 deletions

268
jhboss/views/account.html Normal file
View File

@@ -0,0 +1,268 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/filter.js"></script>
<style type="text/css">
.explain {
display: block;
color: blue;
padding-left: 10px;
margin-bottom: 10px;
}
.account-edit .col-md-6 div {
line-height: 40px;
margin-right: 20px;
}
</style>
</head>
<body>
<div class="account-record">
<div class="search">
<div>
商户名称:
<input type="text" id="account-name">
</div>
<div>
商户编号:
<input type="text" id="account-no">
</div>
<div>
<button type="button" class="btn btn-default" id="account-search">搜索</button>
</div>
</div>
<div>
<span class="explain">账户余额:用户充值成功后立马相加,提款成功后相减的结果。结算金额:用户充值成功过一段时间后相加,出款成功后相减的结果。</span>
<span class="explain">可用金额 = (结算金额 - 冻结金额 - 押款金额 - 正在出款金额)</span>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>账户编号</th>
<th>账户名称</th>
<th>账户余额</th>
<th>结算金额</th>
<th>待结算金额</th>
<th>押款金额</th>
<th>冻结金额</th>
<th>正在出款的金额</th>
<th>可用金额</th>
<th>账户状态</th>
<th>操作</th>
</tr>
</thead>
<tbody id="account-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="4">4</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<script>
function getAccountCutPageValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let accountName = $("#account-name").val();
let accountNo = $("#account-no").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"accountName":accountName,
"accountNo":accountNo
};
}
function clearAccountSearchValues() {
$("#account-name").val("");
$("#account-no").val("");
}
function clearAccountCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
//渲染账户数据列表
function showAccountList(res) {
clearAccountCutPageValues(res);
let str = "";
for (let i = 0; i < res.AccountList.length; i ++) {
let v = res.AccountList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.AccountUid + "</th>" + "<th>" + v.AccountName + "</th>" + "<th>" + v.Balance + "</th>" +
"<th>" + v.SettleAmount + "</th>" + "<th>" + v.WaitAmount + "</th>" + "<th>" + v.LoanAmount + "</th>" +
"<th>" + v.FreezeAmount + "</th>" +"<th>" + v.PayforAmount + "</th>" +
"<th>" + (v.SettleAmount-v.FreezeAmount-v.PayforAmount-v.LoanAmount) + "</th>" + "<th>" + v.Status + "</th>";
tmp = tmp.replace("unactive", "冻结").replace("active", "激活");
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.AccountUid +'" class="btn btn-default" onclick="updateAccountStatus(this.value);">'+ "激活|冻结" +'</button>' +
'<button type="button" value="' + v.AccountUid +'" class="btn btn-default" onclick="deleteAccount(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#account-table-body").html(str);
}
function updateAccountStatus(accountUid) {
$.ajax({
url: "/update/account/status",
data: {
"accountUid":accountUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert("操作失败");
} else {
alert("操作成功");
ajaxAccountList(getAccountCutPageValues());
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
function deleteAccount(accountUid) {
$.ajax({
url: "/delete/account",
data: {
"accountUid":accountUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert(res.Msg);
} else {
alert("操作成功");
ajaxAccountList(getAccountCutPageValues());
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
function ajaxAccountList(dataJSON) {
$.ajax({
url:"/get/account",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert("获取账户数据列表失败");
} else {
showAccountList(res);
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
$(".account-edit-save").click(function() {
let accountUid = $("#account-uid-edit").html();
let accountOperator = $("#account-edit-opertor").val();
let amount = $("#account-edit-opertor-amount").val();
$.ajax({
url: "/account/operator",
data: {
"accountUid":accountUid,
"accountOperator":accountOperator,
"amount":amount
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else{
$("#account-edit-opertor-result").html(res.Msg);
randerAccountEdit(accountUid);
}
}
});
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getAccountCutPageValues();
ajaxAccountList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getAccountCutPageValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
ajaxAccountList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getAccountCutPageValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
ajaxAccountList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getAccountCutPageValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
ajaxAccountList(dataJSON);
});
$(".account-edit-back").click(function() {
$(".account-record").show();
$(".account-edit").hide();
ajaxAccountList({});
});
$(function() {
$(".account-record").show();
$(".account-edit").hide();
clearAccountSearchValues();
ajaxAccountList({});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,219 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>后台管理</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/filter.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
#account-history-table-body tr {
height: 30px;
}
.account-history-record .search {
margin: 0;
padding: 0;
}
.search label {
font-weight: normal;
margin-top: 10px;
margin-bottom: 10px;
margin-right: 20px;
}
.search label select {
height: 30px;
}
</style>
</head>
<body>
<div class="account-history-record">
<div class="search">
<label for="">
开始时间:
<input type="text" name="" value="" id="account-history-start-time" class="start-time" value="">
</label>
<label for="">
结束时间:
<input type="text" name="" value="" id="account-history-end-time" class="end-time" value="">
</label>
<label for="">
账户名称:
<input type="text" id="account-history-name" value="">
</label>
<label for="">
账户编号:
<input type="text" id="account-history-no" value="">
</label>
<label for="">
动账类型:
<select id="account-history-type">
<option value="">请选择</option>
<option value="plus-amount">加款</option>
<option value="sub-amount">减款</option>
<option value="freeze-amount">冻结</option>
<option value="unfreeze-amount">解冻</option>
</select>
</label>
<button type="button" class="btn btn-primary" id="account-history-search">搜索</button>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>账户编号</th>
<th>账户名称</th>
<th>动账类型</th>
<th>动账金额</th>
<th>当前余额</th>
<th>动账时间</th>
</tr>
</thead>
<tbody id="account-history-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<script>
function getAccountHistoryCutPageValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let accountHistoryName = $("#account-history-name").val();
let accountHistoryNo = $("#account-history-no").val();
let operatorType = $("#account-history-type").val();
let startTime = $("#account-history-start-time").val();
let endTime = $("#account-history-end-time").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"accountHistoryName":accountHistoryName,
"accountHistoryNo":accountHistoryNo,
"operatorType":operatorType,
"startTime":startTime,
"endTime":endTime
};
}
function setAccountHistoryCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function showAccountHistoryList(res) {
setAccountHistoryCutPageValues(res);
let str = "";
for (let i = 0; i < res.AccountHistoryList.length; i ++) {
let v = res.AccountHistoryList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.AccountUid + "</th>" + "<th>" + v.AccountName + "</th>" + "<th>" + v.Type + "</th>" +
"<th>" + v.Amount + "</th>" + "<th>" + v.Balance + "</th>" + "<th>" + v.CreateTime + "</th>";
tmp = tmp.replace("plus_amount", "加款").replace("sub_amount", "减款").replace("unfreeze_amount", "解冻").replace("freeze_amount", "冻结");
str = str + tmp;
}
$("#account-history-table-body").html(str);
}
function ajaxAccountHistoryList(dataJSON) {
$.ajax({
url:"/get/account/history",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert("获取账户数据列表失败");
} else {
showAccountHistoryList(res);
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
$("#account-history-search").click(function() {
let dataJSON = getAccountHistoryCutPageValues();
ajaxAccountHistoryList(dataJSON);
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getAccountHistoryCutPageValues();
ajaxAccountHistoryList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getAccountHistoryCutPageValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
ajaxAccountHistoryList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getAccountHistoryCutPageValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
ajaxAccountHistoryList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getAccountHistoryCutPageValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
ajaxAccountHistoryList(dataJSON);
});
$(function() {
let day = new Date(new Date().getTime() - 86400000);
let s = dateFtt("yyyy-MM-dd hh:mm:ss", day);
$(".start-time").val(s);
ajaxAccountHistoryList(getAccountHistoryCutPageValues());
});
</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
</head>
<body>
的费大幅度发
</body>
</html>

View File

@@ -0,0 +1,200 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/filter.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.search label {
font-weight: normal;
}
#select-agent-name,#select-merchant-name {
margin-right: 20px;
}
.search label select {
height: 30px;
line-height: 30px;
}
</style>
</head>
<body>
<div class="search">
<label for="">
代理名称:
<select name="" id="select-agent-name"></select>
</label>
<label for="">
商户名称:
<select name="" id="select-merchant-name"></select>
</label>
<input type="button" class="btn btn-primary" value="开始" onclick="search(getValues());">
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>代理名称</th>
<th>代理uid</th>
<th>代理商户名</th>
<th>代理商户uid</th>
<th>操作</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="4">4</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<script>
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getValues();
search(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
search(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
search(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
search(dataJSON);
});
function getValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let agentUid = $("#select-agent-name").val();
let merchantUid = $("#select-merchant-name").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"agentUid":agentUid,
"merchantUid":merchantUid
};
}
function clearCutValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function randAgentToMerchant(res) {
clearCutValues(res);
let str = "";
for (let i = 0; i < res.MerchantList.length; i ++) {
let v = res.MerchantList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.BelongAgentName + "</th>" + "<th>" + v.BelongAgentUid + "</th>" + "<th>" + v.MerchantName + "</th>" + "<th>" + v.MerchantUid + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.MerchantUid +'" class="btn btn-default" onclick="deleteRelation(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#table-body").html(str);
}
function deleteRelation(merchantUid) {
if (!confirm("是否删除?")) {
return
}
$.ajax({
url:"/delete/agent/merchant/relation",
data:{
"merchantUid":merchantUid
},
success:function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if(res.Code == -1) {
alert("删除失败");
} else {
alert("删除成功");
search(getValues());
}
}
});
}
function search(dataJSON) {
$.ajax({
url: "/get/agent/to/merchant",
data: dataJSON,
success:function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
randAgentToMerchant(res);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
$(function () {
setMerchant();
setAgent();
search(getValues());
});
</script>
</body>
</html>

447
jhboss/views/bank_card.html Normal file
View File

@@ -0,0 +1,447 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/js/filter.js"></script>
<style>
.add-bank-card, .bank-card-record {
overflow-x: hidden;
}
fieldset {
margin-top: 10px;
}
legend {
width: 60px;
}
fieldset div {
margin-bottom: 20px;
}
fieldset div span {
display: inline-block;
width: 120px;
}
#certificate-type {
height: 30px;
}
.bank-card-footer {
height: 40px;
width: 100%
background-color: white;
/* border: 1px solid #e7e7e7; */
margin-top: 10px;
}
.bank-card-footer span {
display: inline-block;
text-align: center;
background-color: #e7e7e7;
border-radius: 4px;
height: 40px;
width: 60px;
line-height: 40px;
margin-left: 20px;
}
.bank-card-footer span:hover {
background-color: red;
cursor: pointer;
}
.add-card-button {
margin-bottom: 10px;
}
.bank-card-search {
border-bottom: 1px solid #e7e7e7;
margin-bottom: 10px;
margin-top: 10px;
padding-bottom: 10px;
}
.account-name-search {
margin-right: 10px;
}
</style>
</head>
<body>
<div class="bank-card-record">
<div class="row bank-card-search">
<div class="col-md-4">
<span>开户名:</span>
<input type="text" value="" class="account-name-search" placeholder="模糊匹配">
<button class="btn btn-info bank-card-button">搜索</button>
</div>
</div>
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-card-button">添加银行卡</button>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>用户名称</th>
<th>银行名称</th>
<th>银行编码</th>
<th>对账卡类型</th>
<th>开户名</th>
<th>银行卡号</th>
<th>证件类型</th>
<th>身份证号</th>
<th>手机号</th>
<th>开户银行地址</th>
<th>操作</th>
</tr>
</thead>
<tbody id="bank_card_table_body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="4">4</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<div class="add-bank-card">
<fieldset>
<legend>添加银行卡</legend>
<div class="row">
<div class="col-md-4">
<input type="hidden" value="" class="bank-card-uid">
<div>
<span>用户名称:</span>
<input type="text" value="" class="user-name">
</div>
<div>
<span>银行编码:</span>
<input type="text" value="" class="bank-code">
</div>
<div>
<span>银行开户名:</span>
<input type="text" value="" class="account-name">
</div>
<div>
<span>证件类型:</span>
<select id="certificate-type">
<option value="identify-card">身份证&nbsp;</option>
</select>
</div>
<div>
<span>手机号:</span>
<input type="text" value="" placeholder="" class="phone-code">
</div>
</div>
<div class="col-md-4">
<div>
<span>银行名称:</span>
<input type="text" value="" placeholder="" class="bank-name">
</div>
<div>
<span>银行账户类型</span>
<select id="bank-account-type">
<option value="private">对私</option>
<option value="public">对公</option>
</select>
</div>
<div>
<span>银行卡账号:</span>
<input type="text" placeholder="" class="bank-no">
</div>
<div>
<span>证件号:</span>
<input type="text" class="certificate-no" value="" placeholder="">
</div>
<div>
<span>开户行详细地址:</span>
<input type="text" class="bank-address" value="" placeholder="">
</div>
</div>
</div>
</fieldset>
<fieldset>
<legend style="width: 25px;">操作</legend>
<div class="bank-card-footer">
<span class="bank-card-cannel">取消</span>
<span class="bank-card-save">保存</span>
</div>
</fieldset>
</div>
<script>
function getCutPageval() {
let operatorName = $(".operator-name").val();
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return dataJSON = {
"operatorName":operatorName,
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage
};
}
function editBankCard(uid) {
$.ajax({
url: "/get/oneBankCard",
data: {"uid":uid},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.BankCardInfoList.length == 0){
alert("编辑失败");
return;
} else {
let b = res.BankCardInfoList[0];
$(".bank-card-uid").val(b.Uid);
$(".user-name").val(b.UserName);
$(".bank-code").val(b.BankCode);
$(".account-name").val(b.AccountName);
$(".phone-code").val(b.PhoneNo);
$(".bank-name").val(b.BankName);
$(".bank-no").val(b.BankNo);
$(".certificate-no").val(b.CertificateNo);
$(".bank-address").val(b.BankAddress);
$("#bank-account-type option").each(function() {
if ($(this).val() == b.BankAccountType) {
$(this).attr('selected', true);
}else {
$(this).removeAttr('selected');
}
});
$(".bank-card-record").hide();
$(".add-bank-card").show();
}
}
});
}
$(".bank-card-button").click(function() {
let dataJSON = getCutPageval();
let accountNameSearch = $(".account-name-search").val();
dataJSON["accountNameSearch"] = accountNameSearch;
showBankCradRecord(dataJSON);
});
function deleteBankCard(uid) {
$.ajax({
url: "/delete/bankCardRecord",
data: {"uid":uid},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == 200){
alert("删除成功");
showBankCradRecord(getBankCardData());
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
function showBankCradRecord(dataJSON) {
// let dataJSON = getBankCardData();
$.ajax({
url: "/get/bankCard",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
} else {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
let str = "";
for (let i = 0; i < res.BankCardInfoList.length; i ++) {
let v = res.BankCardInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.UserName + "</th>" + "<th>" + v.BankName + "</th>" + "<th>" + v.BankCode + "</th>" +
"<th>" + v.BankAccountType + "</th>" + "<th>" + v.AccountName + "</th>" + "<th>" + v.BankNo + "</th>" +
"<th>" + "身份证" + "</th>" + "<th>" + v.CertificateNo + "</th>" + "<th>" + v.PhoneNo + "</th>" +
"<th>" + v.BankAddress + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.Uid +'" class="btn btn-default" onclick="editBankCard(this.value);"><span class="glyphicon glyphicon-pencil"></span></button>' +
'<button type="button" value="' + v.Uid +'" class="btn btn-default" onclick="deleteBankCard(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
tmp = tmp.replace("private", "对私").replace("public", "对公");
str = str + tmp;
}
$("#bank_card_table_body").html(str);
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
$(function() {
$(".add-bank-card").hide();
showBankCradRecord(getBankCardData());
$(".bank-card-record").show();
});
$(".bank-card-cannel").click(function(event) {
/* Act on the event */
$(".bank-card-record").show();
$(".add-bank-card").hide();
});
$(".add-card-button").click(function() {
clearBankCardData();
$(".add-bank-card").show();
$(".bank-card-record").hide();
});
function clearBankCardData() {
$(".user-name").val("");
$(".bank-code").val("");
$(".account-name").val("");
$(".phone-code").val("");
$(".bank-name").val("");
// $("#bank-account-type").val();
$(".bank-no").val("");
// $(".identify-card").val("");
$(".certificate-no").val("");
$(".bank-address").val("");
$(".bank-card-uid").html("");
}
function getBankCardData() {
let userName = $(".user-name").val();
let bankCode = $(".bank-code").val();
let accountName = $(".account-name").val();
let certificateType = $("#certificate-type").val();
let phoneNo = $(".phone-code").val();
let bankName = $(".bank-name").val();
let bankAccountType = $("#bank-account-type").val();
let bankNo = $(".bank-no").val();
let identifyCard = $(".identify-card").val();
let certificateNo = $(".certificate-no").val();
let bankAddress = $(".bank-address").val();
let uid = $(".bank-card-uid").val();
return {
"uid":uid,
"userName":userName,
"bankCode":bankCode,
"accountName":accountName,
"certificateType":certificateType,
"phoneNo":phoneNo,
"bankName":bankName,
"bankAccountType":bankAccountType,
"bankNo":bankNo,
"identifyCard":identifyCard,
"certificateNo":certificateNo,
"bankAddress":bankAddress
};
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getCutPageval();
showBankCradRecord(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPageval();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
showBankCradRecord(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPageval();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
showBankCradRecord(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPageval();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
showBankCradRecord(dataJSON);
});
$(".bank-card-save").click(function() {
let dataJSON = getBankCardData();
if (dataJSON["userName"].length <= 0) {
alert("用户名称不能为空");
return;
} else if (dataJSON["bankCode"].length <= 0) {
alert("银行编码不能为空");
return;
} else if (dataJSON["accountName"].length <= 0) {
alert("银行开户名不能为空");
return;
} else if (dataJSON["phoneNo"].length <= 0) {
alert("手机号不能为空");
return;
} else if (dataJSON["bankName"].length <= 0) {
alert("银行名称不能为空");
return;
} else if (dataJSON["bankNo"].length <= 0) {
alert("银行卡账号不能为空");
return;
} else if (dataJSON["certificateNo"].length <= 0) {
alert("身份证号不能为空");
return;
} else if (dataJSON["bankAddress"].length <= 0) {
alert("开户行地址不能为空");
return;
}
$.ajax({
url: "/add/bankCard",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert(res.Msg);
} else {
alert("添加银行卡成功");
$(".bank-card-record").show();
$(".add-bank-card").hide();
showBankCradRecord(getBankCardData());
}
}
});
});
</script>
</body>
</html>

View File

@@ -0,0 +1,10 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
</head>
<body>
</body>
</html>

261
jhboss/views/confirm.html Normal file
View File

@@ -0,0 +1,261 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link src="../static/lib/bootstrap/css/bootstrap.min.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/filter.js"></script>
<style>
.panel-body label {
font-weight: normal;
margin-right: 20px;
}
.margin-bottom{
margin-bottom: 20px;
}
</style>
</head>
<body>
<div class="panel panel-info">
<div class="panel-heading">
<h3 class="panel-title">审核处理</h3>
</div>
<div class="panel-body">
<div class="margin-bottom">
<label for="">
<input type="radio" name="confirm" value="payfor_road" checked>通道打款
</label>
<label for="">
<input type="radio" name="confirm" value="payfor_refuse">拒绝打款
</label>
<label for="">
<input type="radio" name="confirm" value="payfor_hand">手动打款
</label>
<label for="">
备注:<input type="text" id="remark" value=""><span class="color-red"> *必须</span>
</label>
<input type="button" class="btn btn-success" value="确定" onclick="yes();">
</div>
<div class="margin-bottom" id="road">
<label for="">
请选择打款通道:
<input type="text" value="" id="road-name"><span class="color-red"> *必须</span>
<input type="button" class="btn btn-info" value="搜索" id="road-search">
</label>
<label for="">
<input type="text" value="" id="balance">
<button type="button" class="btn btn-primary" onclick="getBalance();">显示余额
</label>
</div>
</div>
</div>
{{/*展示通道列表*/}}
<div class="road-list">
<div class="menu-table table-responsive">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>通道名称</th>
<th>通道uid</th>
<th>上游名称</th>
<th>状态</th>
<th>时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<script>
$("input[name='confirm']").change(function () {
let confirmType = $("input[name='confirm']:checked").val();
if (confirmType != "allow") {
$("#road").hide();
$(".road-list").hide();
} else if (confirmType == "allow") {
$("#road").show();
ajaxRoadList(getCutPageValues());
$(".road-list").show();
}
});
function getCutPageValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let roadName = $("#road-name").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"roadName":roadName
};
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getCutPageValues();
ajaxRoadList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPageValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
ajaxRoadList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPageValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
ajaxRoadList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPageValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
ajaxRoadList(dataJSON);
});
function setCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function randRoadList(res) {
setCutPageValues(res);
let str = "";
for (let i = 0; i < res.RoadInfoList.length; i ++) {
let v = res.RoadInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.RoadName + "</th>" + "<th>" + v.RoadUid + "</th>" + "<th>" + v.ProductName + "</th>" +
"<th>" + v.Status + "</th>" + "<th>" + v.CreateTime + "</th>";
tmp = tmp.replace("unactive", "不可用").replace("active", "正常");
tmp = tmp +'<th>' + '<button type="button" value="' + v.RoadName +'" class="btn btn-default" onclick="save(this.value);">'+ "确定" +'</button>' + '</th></tr>';
str = str + tmp;
$("#table-body").html(str);
}
}
function ajaxRoadList(dataJSON) {
$.ajax({
url: "/get/road",
data: dataJSON,
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
randRoadList(res);
}
},
error: function () {
alert("系统异常,请稍后再试")
}
});
}
function getBalance() {
let roadName = $("#road-name").val();
$.ajax({
url: "/get/balance",
data: {
"roadName":roadName
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
$("#balance").val(res.Balance);
}
},
error: function () {
alert("查询异常");
}
});
}
function yes() {
let roadName = $("#road-name").val();
let remark = $("#remark").val();
let bankOrderId = $("#main-bank-order-id").val();
let confirmType = $("input[name='confirm']:checked").val();
if (remark.length == 0 ) {
alert("备注不能为空")
return
}
$.ajax({
url:"/choose/payfor/road",
data: {
"roadName":roadName,
"bankOrderId":bankOrderId,
"remark":remark,
"confirmType":confirmType
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1){
alert(res.Msg);
} else {
alert("下发已经受理");
loadMainContent("/payfor_record.html");
}
},
error: function () {
alert("系统异常,请稍后再试")
}
});
}
function save(roadName) {
$("#road-name").val(roadName);
}
//搜索列表
$("#road-search").click(function () {
let dataJSON = getCutPageValues();
ajaxRoadList(dataJSON);
});
$(function () {
let dataJSON = getCutPageValues();
ajaxRoadList(dataJSON)
});
</script>
</body>
</html>

View File

@@ -0,0 +1,464 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/filter.js"></script>
<style>
#create-agent span {
display: inline-block;
width: 100px;
}
#create-agent div {
margin-bottom: 15px;
}
.add-agnet-button {
margin-bottom: 10px;
}
#agent-name-error, #agent-phone-error, #agent-login-password-error, #agent-vertify-password-error {
display: inline-block;
color: red;
margin-left: 10px;
}
#reset-agent-password span {
display: inline-block;
width: 100px;
}
#reset-agent-password div {
margin-bottom: 10px;
}
#agent-login-password-error-reset, #agent-vertify-password-error-reset {
color: red;
}
</style>
</head>
<body>
<div class="agent-record">
<div class="search">
<div>
代理名称:
<input type="text" value="" placeholder="模糊匹配" id="agent-name-search">
</div>
<div>
<button type="button" class="btn btn-default" id="agent-search">搜索</button>
</div>
</div>
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-agnet-button">创建代理</button>
<!-- 创建代理的模态框 -->
<div class="modal fade" id="create-agent" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">创建代理商</h4>
</div>
<div class="modal-body modal-body-agent">
<div>
<span>代理商名称:</span>
<input type="text" id="agent-name-modal">
<span id="agent-name-error"></span>
</div>
<div>
<span>注册手机号:</span>
<input type="text" id="agent-phone-modal">
<span id="agent-phone-error"></span>
</div>
<div>
<span>账号登录密码:</span>
<input type="password" id="agent-login-password-modal">
<span id="agent-login-password-error"></span>
</div>
<div>
<span>确认密码:</span>
<input type="password" id="agent-vertify-password-modal">
<span id="agent-vertify-password-error"></span>
</div>
<div>
<span>代理商状态:</span>
<select id="agent-status">
<option value="active">激活</option>
<option value="unactive">冻结</option>}
</select>
</div>
<div>
<span>备注:</span>
<textarea id="agent-remark"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-agent" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-agent">保存</button>
</div>
</div>
</div>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>状态</th>
<th>代理编号</th>
<th>代理名称</th>
<th>登录账号</th>
<th>重置密码</th>
<th>操作</th>
</tr>
</thead>
<tbody id="agent-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="4">4</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<!-- 充值密码 -->
<div class="modal fade" id="reset-agent-password" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">重置密码</h4>
</div>
<div class="modal-body modal-body-agent">
<input type="text" hidden="true" value="" id="agent-uid-reset">
<div>
<span>新密码:</span>
<input type="password" id="agent-login-password-reset">
<span id="agent-login-password-error-reset"></span>
</div>
<div>
<span>确认新密码:</span>
<input type="password" id="agent-vertify-password-reset">
<span id="agent-vertify-password-error-reset"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-agent-reset" data-dismiss="modal">放弃</button>
<button type="button" class="btn btn-primary save-agent-reset">重置</button>
</div>
</div>
</div>
</div>
<!-- 操作代理商 -->
<div class="modal fade" id="operator-agent" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">代理商操作</h4>
</div>
<div class="modal-body modal-body-agent">
<input type="text" hidden="true" value="" id="agent-uid-operator">
<div>
<span>操作类型:</span>
<select id="agent-opertor">
<option value="plus-amount">加款</option>
<option value="sub-amount">减款</option>
<option value="freeze-amount">冻结</option>
<option value="unfreeze-amount">解冻</option>
</select>
</div>
<div>
<span>操作金额:</span>
<input type="password" id="agent-opertor-amount">
</div>
<div>
<span>操作结果:</span>
<span></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-agent-reset" data-dismiss="modal">放弃</button>
<button type="button" class="btn btn-primary save-agent-reset">重置</button>
</div>
</div>
</div>
</div>
<script>
function getAgentModalContent() {
let agentName = $("#agent-name-modal").val();
let agentPhone = $("#agent-phone-modal").val();
let agentLoginPassword = $("#agent-login-password-modal").val();
let agentVertifyPassword = $("#agent-vertify-password-modal").val();
let agentRemark = $("#agent-remark").val();
let status = $("#agent-status").val();
return {
"agentName": agentName,
"agentPhone": agentPhone,
"agentLoginPassword": agentLoginPassword,
"agentVertifyPassword": agentVertifyPassword,
"agentRemark": agentRemark,
"status": status
};
}
function getAgentCutPageValues(){
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let agentName = $("#agent-name-search").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"agentName":agentName
};
}
function clearAgentModalContent() {
$("#agent-name-modal").val("");
$("#agent-phone-modal").val("");
$("#agent-login-password-modal").val("");
$("#agent-vertify-password-modal").val("");
$("#agent-remark").val("");
}
function clearAgentModalError() {
$("#agent-name-error").html("");
$("#agent-phone-error").html("");
$("#agent-login-password-error").html("");
$("#agent-vertify-password-error").html("");
}
function clearAgentCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function showAgentList(res) {
clearAgentCutPageValues(res);
let str = "";
for (let i = 0; i < res.AgentList.length; i ++) {
let v = res.AgentList[i];
let tmp = "";
if (v.Status == "unactive") {
tmp = "<tr style='color: red;'>";
} else {
tmp = "<tr>";
}
tmp = tmp + "<th>" + (res.StartIndex+i+1) + "</th>" + "<th>" + v.Status + "</th>" + "<th>" + v.AgentUid + "</th>" +
"<th>" + v.AgentName + "</th>" + "<th>" + v.AgentPhone + "</th>" ;
tmp = tmp + "<th>" + '<button type="button" value="' + v.AgentUid +'" class="btn btn-default" onclick="resetPassword(this.value);">' +
'<span class="glyphicon glyphicon-edit"></span></button>' + "</th>";
tmp = tmp.replace("unactive", "冻结").replace("active", "激活");
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.AgentUid +'" class="btn btn-default" onclick="updateAgentStatus(this.value);">'+ "激活|冻结" +'</button>' +
'<button type="button" value="' + v.AgentUid +'" class="btn btn-default" onclick="deleteAgent(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#agent-table-body").html(str);
}
function resetPassword(agentUid) {
$("#agent-uid-reset").val(agentUid);
$("#agent-login-password-reset").val("");
$("#agent-vertify-password-reset").val("");
$("#agent-login-password-error-reset").html("");
$("#agent-vertify-password-error-reset").html("");
$("#reset-agent-password").modal();
}
function updateAgentStatus(agentUid) {
$.ajax({
url: "/update/agent/status",
data: {
"agentUid": agentUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert("处理失败");
} else {
ajaxAgentList(getAgentCutPageValues());
}
}
});
}
function deleteAgent(agentUid) {
if (!window.confirm("确定删除该代理商吗?")) {
return;
}
$.ajax({
url: "/delete/agent",
data: {
"agentUid":agentUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert(res.Msg);
} else {
alert("删除成功");
ajaxAgentList(getAgentCutPageValues());
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
function ajaxAgentList(dataJSON) {
$.ajax({
url: "/get/agent",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert("获取代理数据失败");
} else {
showAgentList(res);
}
}
});
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getAgentCutPageValues();
ajaxAgentList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getAgentCutPageValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
ajaxAgentList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getAgentCutPageValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
ajaxAgentList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getAgentCutPageValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
ajaxAgentList(dataJSON);
});
$(".save-agent-reset").click(function() {
let agentUid = $("#agent-uid-reset").val();
let newPassword = $("#agent-login-password-reset").val();
let newVertifyPassword = $("#agent-vertify-password-reset").val();
$("#agent-login-password-error-reset").html("");
$("#agent-vertify-password-error-reset").html("");
$.ajax({
url: "/reset/agent/password",
data: {
"agentUid":agentUid,
"newPassword":newPassword,
"newVertifyPassword":newVertifyPassword
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -2) {
alert("充值代理商密码遇到错误");
} else if (res.Code == -1) {
$(res.Key).html(res.Msg);
} else {
alert("重置代理商密码成功");
$(".cancel-agent-reset").trigger('click');
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
});
$(".save-agent").click(function() {
clearAgentModalError();
let dataJSON = getAgentModalContent();
$.ajax({
url: "/add/agent",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
$(res.Key).html(res.Msg);
} else {
alert("添加成功");
$(".cancel-agent").trigger('click');
ajaxAgentList(getAgentCutPageValues());
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
});
$(".add-agnet-button").click(function() {
clearAgentModalContent();
clearAgentModalError();
$("#create-agent").modal();
});
$(".cancel-agent").click(function() {
clearAgentModalError();
clearAgentModalContent();
});
$(function() {
ajaxAgentList(getAgentCutPageValues());
});
</script>
</body>
</html>

218
jhboss/views/edit_role.html Normal file
View File

@@ -0,0 +1,218 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/jquery.ui.min.js"></script>
<style>
#deployRoleModal {
margin-bottom: 95px;
height: 500px;
overflow-y: hidden;
}
.modal-content {
overflow: auto;
max-height: 500px;
}
.modal-header {
padding: 10px;
}
.modal-footer {
padding-top: 10px;
padding-bottom: 30px;
}
</style>
</head>
<body>
<!-- 权限配置模态框 -->
<div class="modal fade" id="deployRoleModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="deployButton">配置权限项</h4>
</div>
<div class="modal-body modal-body-deploy">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-deploy" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-deploy">保存</button>
</div>
</div>
</div>
</div>
<!-- 权限模态框 end -->
<script>
function editRole(roleUid) {
showPowerTree(roleUid);
$("#deployRoleModal").modal();
}
$(".save-deploy").click(function() {
let firstMenuUid = [];
let secondMenuUid = [];
let powerId = [];
$('input[name="checkbox-first-menu-uid"]:checked').each(function() {
firstMenuUid.push($(this).val());
});
$('input[name="checkbox-second-menu-uid"]:checked').each(function() {
secondMenuUid.push($(this).val());
});
$('input[name="checkbox-power-id"]:checked').each(function() {
powerId.push($(this).val());
});
let roleUid = $("#roleUid").html();
savePower({"firstMenuUid":firstMenuUid, "secondMenuUid":secondMenuUid, "powerId":powerId, "roleUid": roleUid});
});
//对已经选择checkbox进行打钩
function setCheckboxChecked(res) {
$('input[name="checkbox-first-menu-uid"]').each(function() {
let firstMenuUid = $(this).val();
if (res.ShowFirstMenuUid[firstMenuUid]) {
$(this).attr("checked", true);
}
});
$('input[name="checkbox-second-menu-uid"]').each(function() {
let secondMenuUid = $(this).val();
if (res.ShowSecondMenuUid[secondMenuUid]) {
$(this).attr('checked', true);
}
});
$('input[name="checkbox-power-id"]').each(function() {
let powerId = $(this).val();
if (res.ShowPowerUid[powerId]) {
$(this).attr('checked', true);
}
});
}
function getCheckboxFirstMenuUid() {
let firstMenuUid = [];
$('input[name="checkbox-first-menu-uid"]:checked').each(function() {
firstMenuUid.push($(this).val());
});
return firstMenuUid;
}
function getCheckboxSecondMenuUid() {
let secondMenuUid = [];
$('input[name="checkbox-second-menu-uid"]:checked').each(function() {
secondMenuUid.push($(this).val());
});
return secondMenuUid;
}
function getCheckboxPowerId() {
let powerUid = [];
$('input[name="checkbox-power-id"]:checked').each(function() {
powerUid.push($(this).val());
});
return powerUid;
}
function savePower(dataJSON) {
$.ajax({
url: "/save/power",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
} else if (res.Code == 200) {
alert("保存成功");
} else {
alert("保存失败");
}
$(".cancel-deploy").trigger('click');
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
function showPowerTree(roleUid) {
$.ajax({
url: "/get/deployTree",
async: false,
data: {
"roleUid": roleUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
}
$(".modal-body-deploy").html("");
let str = '<span id="roleUid" style="display: none;">' + roleUid + '</span>';
for (let i = 0; i < res.AllFirstMenu.length; i ++) {
str +='<ul>';
str += '<li><input type="checkbox" name="checkbox-first-menu-uid" class="checkbox-first-menu-uid" value="'+ res.AllFirstMenu[i].MenuUid +'">' + res.AllFirstMenu[i].FirstMenu + '</li>';
for (let j = 0; j < res.AllSecondMenu.length; j ++) {
str += '<ul>';
if (res.AllSecondMenu[j].FirstMenuUid == res.AllFirstMenu[i].MenuUid) {
str += '<li><input type="checkbox" name="checkbox-second-menu-uid" class="checkbox-second-menu-uid" value="' + res.AllSecondMenu[j].SecondMenuUid + '">' + res.AllSecondMenu[j].SecondMenu + '</li>';
str += '<ul>';
for (let k = 0; k < res.AllPower.length; k ++) {
if (res.AllPower[k].SecondMenuUid == res.AllSecondMenu[j].SecondMenuUid) {
str += '<li><input type="checkbox" name="checkbox-power-id" class="checkbox-power-id" value="' + res.AllPower[k].PowerId + '">' + res.AllPower[k].PowerItem + '</li>';
}
}
str += '</ul>';
}
str += '</ul>';
}
str += '</ul>';
}
$(".modal-body-deploy").html(str);
setCheckboxChecked(res);
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
$(document).on("show.bs.modal", ".modal", function(){
$(this).draggable();
$(this).css("overflow-y", "hidden");
// 防止出现滚动条,出现的话,你会把滚动条一起拖着走的
});
$(".modal-body-deploy").on("click",".checkbox-first-menu-uid", function() {
if (this.checked) {
$(this).parent().parent().children("ul").children('li').children('.checkbox-second-menu-uid').prop('checked', 'checked');
} else {
$(this).parent().parent().children("ul").children('li').children('.checkbox-second-menu-uid').removeAttr('checked');
$(this).parent().parent().children("ul").children('ul').children('li').children('.checkbox-power-id').removeAttr('checked');
}
});
$(".modal-body-deploy").on("click", ".checkbox-second-menu-uid", function() {
if (this.checked) {
$(this).parent().parent().parent().children('li').children('.checkbox-first-menu-uid').prop('checked', 'checked');
} else {
$(this).parent().parent().children("ul").children('li').children('.checkbox-power-id').removeAttr('checked');
if (getCheckboxSecondMenuUid() <= 0) {
$(this).parent().parent().parent().children('li').children('.checkbox-first-menu-uid').removeAttr('checked');
}
}
});
$(".modal-body-deploy").on("click", ".checkbox-power-id", function() {
if (this.checked) {
$(this).parent().parent().parent().children('li').children('.checkbox-second-menu-uid').prop('checked', 'checked');
$(this).parent().parent().parent().parent().children('li').children('.checkbox-first-menu-uid').prop('checked', 'checked')
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,288 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/js/filter.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.first-input-group .basic-url {
width: 300px;
}
</style>
</head>
<body>
<!-- 添加菜单的模态框 -->
<div class="modal fade" id="addMenuModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">添加一级菜单</h4>
</div>
<div class="modal-body modal-body-menu">
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon3">一级菜单</span>
<input type="text" class="form-control basic-url">
<span class="first-menu-error"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-menu" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-menu">保存</button>
</div>
</div>
</div>
</div>
<div class="search">
<div>
<span>一级菜单</span>
<input type="text" class="first-menu-serach" placeholder="模糊匹配" value="">
</div>
<div>
<button type="button" class="btn btn-default first-menu-search">搜索</button>
</div>
</div>
<div class="add-menu">
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-button" data-toggle="modal" data-target="#addMenuModal">添加一级菜单</button>
<strong>提示:创建导航菜单栏,一般由技术开发人员进行配置!</strong>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>菜单识别号</th>
<th>一级菜单</th>
<th>菜单顺序号</th>
<th>二级菜单</th>
<th>创建者</th>
<th>操作</th>
</tr>
</thead>
<tbody id="menu_table_body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">1</span>/<span class="total_page">2</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<script>
$(".search div button").click(function() {
let firstMenuSearch = $(".first-menu-serach").val();
let dataJSON = getCutPageData();
dataJSON["firstMenuSearch"] = firstMenuSearch;
showMenuList(dataJSON);
});
//获取分页的基础数据
function getCutPageData() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return {"displayCount":displayCount, "currentPage":currentPage, "totalPage":totalPage, "jumpPage": jumpPage};
}
$(".first-menu-search").click(function() {
showMenuList(getCutPageData());
});
//刚开始加载页面的时候,执行的一系列操作
$(document).ready(function() {
showMenuList(getCutPageData());
});
//获取数据
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
showMenuList(getCutPageData());
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
showMenuList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
showMenuList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
showMenuList(dataJSON);
});
function Ajax(menuUid, hostUrl) {
$.ajax({
url: hostUrl,
data: {
"menuUid": menuUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == 200){
showMenuList(getCutPageData());
$(".table-caption").html("");
} else {
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
//提升菜单的顺序
function menuUp(menuUid) {
Ajax(menuUid, "/up/menu");
}
//降低菜单的顺序
function menuDown(menuUid) {
Ajax(menuUid, "/down/menu");
}
//删除菜单
function menuDelete(menuUid) {
if (!window.confirm("是否确定删除该项?")) {
return;
}
Ajax(menuUid,"/delete/menu");
}
//此函数的作用,是在每行的最后一格,加入可操作的按钮图标
function showMenuList(dataJSON) {
$.ajax({
url: "/get/menu",
data: dataJSON,
success: function(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
if (res.Code == -1) {
alert(res.Msg);
return;
} else if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
//将先前的内容清空
$("#menu_table_body").html("");
let str = "";
for(let i = 0; i < res.MenuList.length; i ++) {
let v = res.MenuList[i];
// let secondMenus = v.SecondMenu.split("|");
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.MenuUid + "</th>" + "<th>" + v.FirstMenu + "</th>" + "<th>" + v.MenuOrder + "</th>" +
"<th>" + v.SecondMenu + "</th>" + "<th>" + v.Creater + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.MenuUid +'" class="btn btn-default" onclick="menuUp(this.value);"><span class="glyphicon glyphicon-arrow-up"></span></button>' +
'<button type="button" value="' + v.MenuUid +'" class="btn btn-default" onclick="menuDown(this.value);"><span class="glyphicon glyphicon-arrow-down"></span></button>' +
'<button type="button" value="' + v.MenuUid +'" class="btn btn-default" onclick="menuDelete(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#menu_table_body").append(str);
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
$(".save-menu").click(function() {
let oneMenu = $(".basic-url").val();
if (oneMenu.length <= 0) {
$(".first-menu-error").text(" * 一级菜单不能为空");
return;
}
$(".first-menu-error").text("");
$.ajax({
url: "/add/menu",
data:{
oneMenu: oneMenu
},
success: function(res) {
if (res.Code == 200) {
$(".cancel-menu").trigger('click');
showMenuList();
} else if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
$(".first-menu-error").text(res.Msg);
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
});
$(".add-button").click(function() {
$(".basic-url").val("");
$(".basic-url-4").val("");
$(".first-menu-error").text("");
});
</script>
</body>
</html>

495
jhboss/views/index.html Normal file
View File

@@ -0,0 +1,495 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css" />
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/filter.js"></script>
<style type="text/css" media="screen">
body {
overflow-y: hidden;
overflow-x: hidden;
}
.middle {
position: absolute;
top: 50px;
left: 0;
bottom: 30px;
width: 100%;
}
.middle .sider-left {
float: left;
bottom: 30px;
width: 14%;
height: 100%;
border: 2px solid #e7e7e7;
overflow: auto;
box-sizing: border-box;
}
.middle .sider-left .sider-bar {
height: auto;
width: 100%;
}
.middle .sider-left li {
list-style: none;
}
.middle .sider-right {
float: right;
bottom: 30px;
height: 100%;
width: 86%;
border: 2px solid #e7e7e7;
overflow: auto;
box-sizing: border-box;
}
.middle .sider-right .main {
height: auto;
width: 100%;
}
.middle .sider-left .divider {
border-top: 1px solid #e7e7e7;
}
.middle .sider-left .first-menu {
position: relative;
display: inline-block;
text-decoration: none;
width: 100%;
font-size: 14px;
letter-spacing: 1px;
color: #777777;
line-height: 40px;
padding-left: 2px;
border-top: 1px solid #e7e7e7;
border-bottom: 1px solid #e7e7e7;
}
.middle .sider-left .first-menu-main {
position: relative;
display: inline-block;
text-decoration: none;
width: 100%;
font-size: 16px;
letter-spacing: 1px;
color: #777777;
line-height: 40px;
padding-left: 2px;
border-top: 1px solid #e7e7e7;
border-bottom: 1px solid #e7e7e7;
}
.middle .sider-left .first-menu .first-title {
display: inline-block;
}
.middle .sider-left .last-glyphicon {
position: absolute;
right: 2px;
top: 50%;
transform: translateY(-50%);
}
.middle .sider-left .second-menu a {
display: block;
width: 100%;
text-align: center;
text-decoration: none;
letter-spacing: 1px;
line-height: 30px;
font-size: 13px;
color: #777777;
}
.middle .sider-left .second-menu a:last-child{
margin-bottom: 30px;
}
.footer {
width: 100%;
border: 2px solid #e7e7e7;
line-height: 30px;
text-align: center;
box-sizing: border-box;
}
</style>
</head>
<body>
<!-- 更改密码的模态框 -->
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" >
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">用户密码更改</h4>
</div>
<div class="modal-body">
<p class="color-red text-center">温馨提示新密码字为8~16个字符字母和数字组成。</p>
<div class="row margin-top-20">
<div class="col-xs-3">
<span>旧密码:</span>
</div>
<div class="col-xs-5">
<input class="old-passwrod" type="password" name=""> <span class="color-red">*</span>
</div>
<div class="col-xs-4 color-red old-error">
</div>
</div>
<div class="row margin-top-20">
<div class="col-xs-3">
<span>新密码:</span>
</div>
<div class="col-xs-5">
<input class="new-password" type="password" name=""> <span class="color-red">*</span>
</div>
<div class="col-xs-4 color-red new-error">
</div>
</div>
<div class="row margin-top-20">
<div class="col-xs-3">
<span>再次输入新密码:</span>
</div>
<div class="col-xs-5">
<input class="twice-password" type="password" name=""> <span class="color-red">*</span>
</div>
<div class="col-xs-4 color-red twice-error">
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default password-cancal cancal-save" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary password-save">保存</button>
</div>
</div>
</div>
</div>
<!-- 导航栏 -->
<div class="self-nav">
</div>
<nav class="navbar-inverse navbar-fixed-top" id="navbar-inverse">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">聚合支付管理系统</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"><span class="glyphicon glyphicon-user"></span>你好!管理员 <span class="caret"></span></a>
<ul class="dropdown-menu">
<li>
<a href="#" style="text-align: center;" data-toggle="modal" data-target="#logoutModal"> <i class="glyphicon glyphicon-cog change-password"></i> 更改密码</a>
</li>
<li role="separator" class="divider"></li>
<li>
<a href="#" style="text-align: center;" class="logout"> <i class="glyphicon glyphicon-off"></i> 退出登录</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
<!-- 左侧导航栏 -->
<div class="middle">
<div class="sider-left">
<div class="sider-bar">
<div>
<a href="#" class="first-menu" onclick='loadMainContent("/main.html")'>
<span class="glyphicon glyphicon-home"></span>
<span class="first-title">控制面板</span>
</a>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-wrench"></span>
<span class="first-title">权限控制</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
{{/*<a href="#" onclick='loadMainContent("/first_menu.html");'><span>添加一级菜单</span></a>
<a href="#" onclick='loadMainContent("/second_menu.html")'><span>添加二级菜单</span></a>
<a href="#" onclick='loadMainContent("/power.html")'><span>添加权限</span></a>*/}}
<a href="#" onclick='loadMainContent("/role.html")'><span>角色管理</span></a>
<a href="#" onclick='loadMainContent("/operator.html")'><span>操作员管理</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-road"></span>
<span class="first-title">通道管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/road.html")'><span>添加通道</span></a>
<a href="#" onclick='loadMainContent("/road_pool.html")'><span>轮询池</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-user"></span>
<span class="first-title">商户管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/merchant.html")'><span>商户配置</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-console"></span>
<span class="first-title">代理管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/create_agent.html")'>创建代理</a>
<a href="#" onclick='loadMainContent("/agent_to_merchant.html")'><span>代理商户映射列表</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-folder-open"></span>
<span class="first-title">资金管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/account.html")'><span>账户钱包</span></a>
<a href="#" onclick='loadMainContent("/account_history.html")'><span>动账记录</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-book"></span>
<span class="first-title">订单管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/order_info.html")'><span>实时订单</span></a>
<a href="#" onclick='loadMainContent("/order_profit.html")'><span>订单收益</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-piggy-bank"></span>
<span class="first-title">代付管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/merchant_payfor.html")'><span>商户下发</span></a>
<a href="#" onclick='loadMainContent("/self_payfor.html")'><span>任意打款</span></a>
<a href="#" onclick='loadMainContent("/payfor_record.html")'><span>代付列表</span></a>
<a href="#" onclick='loadMainContent("/bank_card.html")'><span>银行卡管理</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-yen"></span>
<span class="first-title">分润管理</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick='loadMainContent("/platform_profit.html")'><span>平台利润</span></a>
<a href="#" onclick='loadMainContent("/agent_profit.html")'><span>代理利润</span></a>
</div>
</div>
<div>
<a href="#" class="first-menu">
<span class="glyphicon glyphicon-edit"></span>
<span class="first-title">自助服务</span>
<span class="glyphicon glyphicon-plus last-glyphicon"></span>
</a>
<div class="second-menu">
<a href="#" onclick="loadMainContent('/self_notify.html')"><span>批量给下游回调</span></a>
<a href="#" onclick="loadMainContent('/self_plus_sub.html')"><span>自定义加减款</span></a>
</div>
</div>
</div>
</div>
<div class="sider-right">
<input type="text" hidden="hidden" id="main-bank-order-id" value="">
<div class="main">
</div>
</div>
<div class="footer">版权所有</div>
</div>
</body>
<script>
$(function() {
$(".second-menu").hide();
});
function loadMainContent(url) {
$(".main").load(url);
}
function passwordCheck(str) {
let msg = "";
if (str.length < 8) {
msg = "密码长度不能小于8";
} else if (str.length > 16) {
msg = "密码长度不能大于16";
} else {
if (/([a-zA-Z]+[0-9]+|[0-9]+[a-zA-Z])/.exec(str)) {
return msg;
} else {
msg = "新密码中必须包含数字和字母!";
}
}
return msg;
}
function clearError() {
$(".old-error").text("").append("");
$(".new-error").text("").append("");
$(".twice-error").text("").append("");
}
function setError(key, value) {
$(key).text("").append(value);
return;
}
$(".password-cancal").click(function(event) {
$("input[type='password']").val("");
clearError();
})
$(".password-save").click(function(event) {
//清除之前的错误提示文字
clearError();
let oldPassword = $(".old-passwrod").val();
let newPassword = $(".new-password").val();
let twicePassword = $(".twice-password").val();
let msg = "";
if (oldPassword.length <= 0) {
setError(".old-error", "旧密码不能为空!");
return;
}
if (newPassword.length <= 0) {
setError(".new-error", "新密码不能为空!");
return;
}
if (twicePassword.length <= 0) {
setError(".twice-error", "请再次输入新密码!");
return;
}
if (!(newPassword == twicePassword)) {
setError(".twice-error", "新密码两次输入不一致!");
return;
}
if (oldPassword == newPassword) {
setError(".new-error", "新密码不能和旧密码一样!");
return;
}
msg = passwordCheck(newPassword);
if (msg.length > 0) {
setError(".new-error", msg);
return;
}
$.ajax({
url: "/update/password",
data: {
oldPassword: oldPassword,
newPassword: newPassword,
twicePassword: twicePassword
},
success: function(res) {
if (res.Code == 200) {
//将模态框关闭
$("input[type='password']").val("");
$(".cancal-save").trigger('click');
setTimeout("", 1500);//等待1.5秒
alert("密码修改成功!");
window.parent.location = "/login.html";
} else if (res.Code == 404) {
//用户登录已经过期,需要重新登录
window.parent.location = "/login.html";
} else {
//用户密码更新失败
setError(res.Key, res.Msg);
}
},
error: function() {
alert("系统异常,请稍后再试!");
}
});
});
$(".logout").click(function() {
$.ajax({
url: "/logout",
success: function(res) {
if (res.Code == 200) {
window.parent.location = "/login.html";
} else {
alert("系统异常,退出失败!");
}
},
error: function(e) {
alert("系统异常!");
},
});
});
$(".first-menu").click(function(event) {
//判断右边图标箭头是向右,还是向下;如果当前的图片是向下,那么变为向右;有所的兄弟图标全部变为向右。
if ($(this).children(".last-glyphicon").hasClass("glyphicon-plus")) {
$(this).children(".last-glyphicon").removeClass('glyphicon-plus');
$(this).children(".last-glyphicon").addClass("glyphicon-minus");
} else {
$(this).children(".last-glyphicon").removeClass("glyphicon-minus");
$(this).children(".last-glyphicon").addClass("glyphicon-plus");
}
//添加面包屑
$(".breadcrumb").html("");
firstTitle = $(this).children(".first-title").text();
//背景色变为灰色
$(this).css('background-color', 'skyblue');
$(this).parents().siblings().children(".first-menu").css("background-color", 'white');
$(this).parents().children(".second-menu").children("a").children('span').css('border-bottom', 'none');
// $(this).parents().children(".second-menu").css("background-color", "#dff0d8");
$(this).parents().siblings().children(".second-menu").css('background-color', 'none');
//展示当前的二级菜单
$(this).parents().children(".second-menu").toggle();
//隐藏其余的二级菜单
$(this).parents().siblings().children(".second-menu").hide();
//将其余一级菜单的箭头改为向右
$(this).parents().siblings().children(".first-menu").children(".last-glyphicon").removeClass("glyphicon-minus").addClass("glyphicon-plus");
});
//选择二级菜单时,会出现下划线
$(".second-menu a span").click(function(event) {
$(this).css("border-bottom", "1px dashed #333333");
$(this).parents().siblings().children('span').css("border-bottom", "none");
//添加二级面包屑
$(".breadcrumb").html("");
let secondTile = $(this).text();
});
</script>
</html>

122
jhboss/views/login.html Normal file
View File

@@ -0,0 +1,122 @@
<!DOCTYPE html>
<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="lt-ie9" lang="en"> <![endif]-->
<!--[if gt IE 8]><!-->
<html lang="en">
<!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>管理后台系统</title>
<link rel="stylesheet" href="../static/css/login.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/js/filter.js"></script>
<!--[if lt IE 9]><script src="../static/js/html5.js"></script><![endif]-->
</head>
<body>
<section class="container">
<div class="login">
<h1>管理员登录</h1>
<p><input type="text" name="login" class="userID" value="" placeholder="注册手机号"></p>
<div class="userIDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
<p><input type="password" name="password" class="passwd" value="" placeholder="密码"></p>
<div class="passwdDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
<div class="verify">
<div class="left_f">
<input type="text" class="verifyText" placeholder="验证码">
<div class="CodeDERROR" style="color: red;margin-left: 10px; font-size: small"></div>
</div>
<div class="right_f">
<img class="verifyImg" src="" ALT="">
</div>
</div>
<div class="remember_me">
<label>
<input type="checkbox" name="remember_me" id="remember_me">
记住密码
</label>
</div>
<div class="submit"><input type="submit" id="login" name="commit" value="登录"></div>
</div>
</section>
<script>
//页面展示自动加载验证码
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
//注册用户点击验证,更换验证码图片
var flushCode = function() {
let verifyImg = $(".verifyImg");
verifyImg.click(function() {
verifyImg.attr("src","/getVerifyImg?rand=" + new Date().getTime());
});
}
flushCode();
//点击登录按钮,进行用户登录操作
$("#login").click(function() {
login();
});
function login() {
let userID = $.trim($(".userID").val());
let passwd = $.trim($(".passwd").val());
let Code = $(".verifyText").val();
Code = $.trim(Code);
if (userID.length <= 0) {
$(".userIDERROR").text("").append("* 登录手机号不能为空!");
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
return;
}
if (passwd.length <= 0) {
$(".passwdDERROR").text("").append("* 密码不能为空!");
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
return;
}
if (Code.length < 4) {
$(".CodeDERROR").text("").append("* 验证码不正确!");
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
return;
}
$.ajax({
url: "/login",
data: {
userID: userID,
passwd: passwd,
Code: Code
},
success: function(data) {
if (data.Key === "userID") {
$(".userIDERROR").text("").append(data.Msg);
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
} else if (data.Key === "passWD") {
$(".passwdDERROR").text("").append(data.Msg);
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
} else if (data.Key === "code") {
$(".CodeDERROR").text("").append(data.Msg);
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
} else if (data.Key === "unactive" || data.Key === "del") {
alert(data.Msg);
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
}
//登录成功,跳转到管理界面主页
if (data.Key.length <= 0) {
window.parent.location = "/index.html";
} else {
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
}
},
error: function(e) {
alert("系统异常,请求稍后再尝试!");
$(".verifyImg").attr("src", "/getVerifyImg?rand=" + new Date().getTime());
}
});
}
</script>
</body>
</html>

14
jhboss/views/main.html Normal file
View File

@@ -0,0 +1,14 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="../static/js/filter.js"></script>
</head>
<body>
<div class="container">
</div>
</body>
</html>

70
jhboss/views/menu.html Normal file
View File

@@ -0,0 +1,70 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>商戶后台</title>
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<style>
.self-tabs {
margin-left: 1px;
margin-right: 1px;
text-align: center;
}
.first-menu-html, .second-menu-html {
height: 30px;
line-height: 30px;
}
.first-menu-html, .second-menu-html:hover {
cursor: pointer;
}
.first-menu-html {
border: 1px solid #d3d3d3;
border-radius: 2px;
margin-bottom: 5px;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row self-tabs">
<div class="col-md-6 first-menu-html">
一级菜单管理
</div>
<div class="col-md-6 second-menu-html">
二级菜单管理
</div>
</div>
<div class="menu-content-html">
</div>
</div>
<script>
function clickFirstMenuHtml() {
$(".first-menu-html").css('background-color', 'skyblue');
$(".second-menu-html").css('background-color', 'white');
$(".menu-content-html").load("/jhboss/first_menu.html");
}
function clickSecondMenuHtml() {
$(".second-menu-html").css('background-color', 'skyblue');
$(".first-menu-html").css('background-color', 'white');
$(".menu-content-html").load("/jhboss/second_menu.html");
}
//默认打开的是一级菜单管理页面
$(function() {
clickFirstMenuHtml();
});
$(".first-menu-html").click(function() {
clickFirstMenuHtml();
});
$(".second-menu-html").click(function() {
clickSecondMenuHtml();
});
</script>
</body>
</html>

1171
jhboss/views/merchant.html Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,413 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link src="../static/lib/bootstrap/css/bootstrap.min.css">
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/filter.js"></script>
{{/*<script src="../static/js/basic.js"></script>*/}}
<style>
.panel .panel-body input {
width: 50%;
}
.algin-right {
text-align: right;
}
table tr td {
display: inline-block;
width: 50%;
}
.panel-heading:hover {
cursor: pointer;
}
.panel-footer {
padding-left: 45%;
}
#modal-search {
height: 40px;
position: relative;
}
#modal-search button {
position: absolute;
right: 10px;
bottom: 5px;
}
</style>
</head>
<body>
<div class="panel panel-info">
<div class="panel-heading" onclick="merchantList({});">
<span class="panel-title">选择下发商户</span>
<span class="glyphicon glyphicon-search"></span>
</div>
<table class="table table-responsive table-bordered">
<thead>
<tr>
<td class="algin-right">下发所属商户</td><td><span id="merchant-name">未选择</span></td>
</tr>
</thead>
<tbody>
<tr>
<td class="algin-right">商户uid</td><td><span id="merchant-uid">未选择</span></td>
</tr>
<tr>
<td class="algin-right">可用金额</td><td><span id="able-amount"></span></td>
</tr>
<tr>
<td class="algin-right">创建时间</td><td><span id="create-time">未选择</span></td>
</tr>
</tbody>
</table>
<div class="panel-heading" onclick="bankList({});">
<span class="panel-title">选择下发银行卡</span>
<span class="glyphicon glyphicon-search"></span>
</div>
<table class="table table-responsive table-bordered">
<input type="text" hidden="hidden" id="bank-uid" value="">
<thead>
<tr>
<td class="algin-right">银行名称</td><td><span id="bank-name">未选择</span></td>
</tr>
</thead>
<tbody>
<tr>
<td class="algin-right">开户名</td><td><span id="account-name">未选择</span></td>
</tr>
<tr>
<td class="algin-right">卡号</td><td><span id="card-number">未选择</span></td>
</tr>
<tr>
<td class="algin-right">开户卡类型</td>
<td>
<input type="radio" name="card-type" value="private" checked>对私卡
<input type="radio" name="card-type" value="public">对公卡
</td>
</tr>
<tr>
<td class="algin-right">开户行所在地</td><td><span id="bank-address">未选择</span></td>
</tr>
<tr>
<td class="algin-right">开户人手机号码</td><td><span id="phone">未选择</span></td>
</tr>
<tr>
<td class="algin-right">下发金额</td><td><input type="text" value="" id="payfor-amount"><span></span></td>
</tr>
</tbody>
</table>
<div class="panel-footer">
<input type="button" class="btn btn-default" name="" id="" value="取消">
<input type="button" class="btn btn-primary" value="提交" id="submit">
</div>
</div>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="menu-table table-responsive">
<table>
<div id="modal-search">
<input type="text" hidden="hidden" id="modal-search-hidden" value="">
搜索:<input type="text" value="" id="modal-search-input" placeholder="名称">
<button type="button" class="btn btn-warning" data-dismiss="modal" id="cannel">取消</button>
</div>
<thead class="thead-dark" id="table-head">
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="4">4</option>
<option value="30">20</option>
<option value="50">30</option>
<option value="100">50</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
</div>
</div>
</div>
<script>
function getCutPagesValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage
};
}
function setOrderCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function clearModal() {
$("#table-head").html("");
$("#table-body").html("");
}
function randMerchantList(res) {
clearModal();
setOrderCutPageValues(res);
let head = "<tr>" + "<th>" + "序号" + "</th>" + "<th>" + "商户名称" + "</th>" + "<th>" + "商户uid" + "</th>" +
"<th>" + "可用金额" + "</th>" + "<th>" + "选择" + "</th>";
$("#table-head").html(head);
let str = "";
for (let i = 0; i < res.AccountList.length; i ++) {
let v = res.AccountList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.AccountName + "</th>" + "<th>" + v.AccountUid + "</th>" + "<th>" + (v.SettleAmount-v.FreezeAmount-v.LoanAmount-v.PayforAmount) + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.AccountUid +'" class="btn btn-default" onclick="saveMerchant(this.value);">' + "确定" +'</button>';
tmp = tmp + '</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#table-body").html(str);
$("#myModal").modal();
//标记是商户选择
$("#modal-search-hidden").val("merchant-list");
}
function saveMerchant(accountUid) {
$("#cannel").trigger('click');
$.ajax({
url:"/get/one/account",
data: {
"accountUid":accountUid
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
let v = res.AccountList[0];
$("#merchant-name").html(v.AccountName);
$("#merchant-uid").html(v.AccountUid);
$("#able-amount").html((v.SettleAmount - v.FreezeAmount -v.PayforAmount));
$("#create-time").html(v.CreateTime);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
function merchantList(dataJSON) {
if (JSONIsEmpty(dataJSON)) {
dataJSON = getCutPagesValues();
}
dataJSON["accountName"] = $("#modal-search-input").val();
$.ajax({
url: "/get/account",
data: dataJSON,
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
randMerchantList(res);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
$("#modal-search-input").change(function () {
let dataJSON = getCutPagesValues();
let type = $("#modal-search-hidden").val();
if (type == "merchant-list") {
merchantList(dataJSON);
} else {
bankList(dataJSON);
}
});
function f(dataJSON) {
let type = $("#modal-search-hidden").val();
if (type == "merchant-list") {
merchantList(dataJSON);
} else {
bankList(dataJSON);
}
}
function randBankCardList(res) {
clearModal();
setOrderCutPageValues(res);
let head = "<tr>" + "<th>" + "序号" + "</th>" + "<th>" + "开户名" + "</th>" + "<th>" + "银行名称" + "</th>" +
"<th>" + "卡号" + "</th>" + "<th>" + "手机号码" + "</th>" + "<th>" + "选择" + "</th>";
$("#table-head").html(head);
let str = "";
for (let i = 0; i < res.BankCardInfoList.length; i ++) {
let v = res.BankCardInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" + "<th>" + v.AccountName + "</th>" + "<th>" + v.BankName + "</th>" +
"<th>" + v.BankNo + "</th>" + "<th>" + v.PhoneNo + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.Uid +'" class="btn btn-default" onclick="saveBankCard(this.value);">' + "确定" +'</button>';
tmp = tmp + '</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#table-body").html(str);
$("#myModal").modal();
//标记是商户选择
$("#modal-search-hidden").val("bank-list");
}
function saveBankCard(uid) {
$("#cannel").trigger('click');
$.ajax({
url:"/get/oneBankCard",
data: {
"uid":uid
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
let v = res.BankCardInfoList[0];
$("#bank-uid").val(v.Uid);
$("#bank-name").html(v.BankName);
$("#account-name").html(v.AccountName);
$("#bank-address").html(v.BankAddress);
$("#card-number").html(v.BankNo);
$("#phone").html(v.PhoneNo);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getCutPagesValues();
f(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPagesValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
f(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPagesValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
f(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPagesValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
f(dataJSON);
});
function bankList(dataJSON) {
if (JSONIsEmpty(dataJSON)) {
dataJSON = getCutPagesValues();
}
dataJSON["accountNameSearch"] = $("#modal-search-input").val();
$.ajax({
url: "/get/bankCard",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
randBankCardList(res);
}
},
error:function() {
alert("系统异常,请稍后再试");
}
});
$("#myModal").modal();
}
$("#submit").click(function () {
let merchantUid = $("#merchant-uid").html();
let merchantName = $("#merchant-name").html();
let ableAmount = $("#able-amount").html();
let bankUid = $("#bank-uid").val();
let bankName = $("#bank-name").html();
let accountName = $("#account-name").html();
let bankNo = $("#card-number").html();
let cardType = $("input[name=\"card-type\"]").val();
let bankAddress = $("#bank-address").html();
let phone = $("#phone").html();
let payForAmount = $("#payfor-amount").val();
$.ajax({
url: "/add/payfor",
data:{
"merchantUid":merchantUid,
"merchantName":merchantName,
"ableAmount":ableAmount,
"bankUid":bankUid,
"bankName":bankName,
"accountName":accountName,
"bankNo":bankNo,
"cardType":cardType,
"bankAddress":bankAddress,
"phone":phone,
"payForAmount":payForAmount
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1){
alert(res.Msg);
} else {
alert("已经提交成功,请耐心等待结果");
loadMainContent("/payfor_record.html")
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
});
//判断json是否为空
function JSONIsEmpty(dataJSON) {
let b = (JSON.stringify(dataJSON) == "{}");
return b;
}
</script>
</body>
</html>

491
jhboss/views/operator.html Normal file
View File

@@ -0,0 +1,491 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>商户后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<style type="text/css" media="screen">
.first-input-group .basic-url, .operator-input-group .basic-url {
width: 210px;
}
.status-input-group .basic-url, .operator-input-group .basic-url {
width: 150px;
}
.change-operator-remark {
width: 220px;
height: 100px;
}
.operator-name-error, .operator-password-error, .operator-role-error {
display: inline-block;
margin-left: 20px;
margin-top: 6px;
color: red;
}
.add-operator-button {
margin-bottom: 10px;
margin-left: 10px;
}
#userId {
padding-left: 10px;
padding-bottom: 10px;
color: red;
}
</style>
</head>
<body>
<div class="search">
<div>
<span>操作员名称</span>
<input type="text" class="operator-name" value="" placeholder="模糊匹配">
</div>
<div>
<button type="button" class="btn btn-default operator-name-search">搜索</button>
</div>
</div>
<div class="add-menu">
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-operator-button" data-toggle="modal" data-target="#addOperatorModal">新加操作员</button>
</div>
<!-- 添加操作员的模态框 -->
<div class="modal fade" id="addOperatorModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="addPowerButton">添加新的操作员</h4>
</div>
<div class="modal-body modal-body-menu">
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">登录账号</span>
<input type="text" class="form-control basic-url operator-account" value="">
<span class="operator-name-error"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">初始密码</span>
<input type="password" class="form-control basic-url operator-password" value="">
<span class="operator-password-error"></span>
</div>
<div class="input-group operator-input-group">
<span class="input-group-addon basic-addon">角色分配</span>
<div class="select-content">
<select id="operator-role-select">
<option value="none">请选择</option>
</select>
</div>
<span class="operator-role-error"></span>
</div>
<div class="input-group status-input-group">
<span class="input-group-addon basic-addon">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<div class="select-content">
<select id="operator-status-select">
<option value="active">激活</option>
<option value="unactive">冻结</option>
</select>
</div>
</div>
<div>
<span class="operator-remark-word">操作员描述:</span>
<textarea class="operator-remark"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-operator" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-operator">保存</button>
</div>
</div>
</div>
</div>
<!-- end 模态框 -->
<!-- 修改操作员信息的模态框 -->
<div class="modal fade" id="editOperatorModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="editOperatorButton">添加新的操作员</h4>
</div>
<div class="modal-body modal-body-menu">
<div class="input-group first-input-group" id="userId">
<span>用户id</span>
<span class="userId"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">修改密码</span>
<input type="password" class="form-control basic-url change-operator-password" value="">
<span class="change-operator-password-error"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">确认密码</span>
<input type="password" class="form-control basic-url veritfy-operator-password" value="">
<span class="veritfy-operator-password-error"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">修改昵称</span>
<input type="text" class="form-control basic-url change-operator-nick" value="">
<span class="change-operator-password-error"></span>
</div>
<div class="input-group operator-input-group">
<span class="input-group-addon basic-addon">修改角色</span>
<div class="select-content">
<select id="change-operator-role-select">
<option value="none">请选择</option>
</select>
</div>
<span class="change-operator-role-error"></span>
</div>
<div>
<span class="operator-remark-word">操作员描述:</span>
<textarea class="change-operator-remark"></textarea>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default change-cancel-operator" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary change-save-operator">保存</button>
</div>
</div>
</div>
</div>
<!-- end 模态框 -->
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>账号</th>
<th>角色</th>
<th>昵称</th>
<th>备注</th>
<th>状态</th>
<th>创建时间</th>
<th>编辑</th>
</tr>
</thead>
<tbody id="operator_table_body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<script>
function getOperatorData() {
let operatorName = $(".operator-name").val();
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return dataJSON = {
"operatorName":operatorName,
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage
};
}
function operatorAjax(dataJSON, hostUrl) {
$.ajax({
url: hostUrl,
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
}
if (hostUrl.indexOf("/get/allRole") != -1) {
loadRoleListToModal(res);
} else if (hostUrl.indexOf("/add/operator") != -1) {
addOperator(res);
} else if (hostUrl.indexOf("/get/operator") != -1) {
showOperatorList(res);
} else if (hostUrl.indexOf("/delete/operator") != -1) {
alert("删除成功");
operatorAjax(getOperatorData(), "/get/operator");
} else if (hostUrl.indexOf("/freeze/operator") != -1) {
alert("冻结成功");
operatorAjax(getOperatorData(), "/get/operator");
} else if (hostUrl.indexOf("/unfreeze/operator") != -1) {
alert("解冻成功");
operatorAjax(getOperatorData(), "/get/operator");
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
$(".change-save-operator").click(function() {
clearChangeContent();
let userId = $(".userId").html();
let password = $(".change-operator-password").val();
let changePassword = $(".veritfy-operator-password").val();
let nick = $(".change-operator-nick").val();
let role = $("#change-operator-role-select").val();
let remark = $(".change-operator-remark").val();
if (role == "none") {
$(".change-operator-role-error").html("*角色不能为空");
return;
} else if ((password.length > 0 || changePassword.length > 0) && password != changePassword) {
$(".change-operator-password-error").html("修改");
return;
}
$.ajax({
url: "/edit/operator",
data: {
"userId":userId,
"password":password,
"changePassword":changePassword,
"nick":nick,
"role":role,
"remark":remark
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
$(res.Key).val(res.Msg);
} else if (res.Code == -2){
alert(res.Msg);
$(".change-cancel-operator").trigger("click");
} else {
alert("修改成功");
$(".change-cancel-operator").trigger("click");
operatorAjax(getOperatorData(), "/get/operator");
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
});
function showOperatorList(res) {
if (res.OperatorList.length == 0) {
$("#operator_table_body").html("没有数据可显示");
} else {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
let str = "";
for (let i = 0; i < res.OperatorList.length; i ++) {
let v = res.OperatorList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.UserId + "</th>" + "<th>" + v.RoleName + "</th>" + "<th>" + v.Nick + "</th>" +
"<th>" + v.Remark + "</th>" + "<th>" + v.Status + "</th>" +
"<th>" + v.CreateTime + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.UserId +'" class="btn btn-default" onclick="editOperator(this.value);"><span class="glyphicon glyphicon-pencil"></span></button>' +
'<button type="button" value="' + v.UserId +'" class="btn btn-default" onclick="freezeOperator(this.value);"><span>冻结</span></button>' +
'<button type="button" value="' + v.UserId +'" class="btn btn-default" onclick="unfreezeOperator(this.value);"><span>解冻</span></button>' +
'<button type="button" value="' + v.UserId +'" class="btn btn-default" onclick="deleteOperator(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
str = str.replace(/unactive/, "冻结").replace(/active/, "激活");
}
$("#operator_table_body").html(str);
operatorAjax({}, "/get/allRole");
}
}
function clearChangeContent() {
$(".change-operator-password-error").html("");
$(".veritfy-operator-password-error").html("");
$(".change-operator-role-error").html("");
$(".change-operator-remark").html("");
}
function editOperator(userId) {
let dataJSON = {"userId":userId};
$.ajax({
url: "/get/editOperator",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.OperatorList.length == 0) {
alert("获取单个操作者信息失败");
} else {
let o = res.OperatorList[0];
$(".userId").html(o.UserId);
$("#change-operator-role-select option").each(function() {
if (o.Role == $(this).val()) {
$(this).attr("selected", "selected");
}
});
$(".change-operator-nick").val(o.Nick);
$(".change-operator-remark").html(o.Remark);
$("#editOperatorModal").modal();
}
},
error: function() {
alert("获取单个操作者信息失败");
}
});
}
function freezeOperator(userId) {
let dataJSON = getOperatorData();
dataJSON["operatorName"] = userId;
operatorAjax(dataJSON, "/freeze/operator");
}
function unfreezeOperator(userId) {
let dataJSON = getOperatorData();
dataJSON["operatorName"] = userId;
operatorAjax(dataJSON, "/unfreeze/operator");
}
function deleteOperator(userId) {
if (!window.confirm("是否要删除?")) {
return;
}
operatorAjax({"userId":userId},"/delete/operator");
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getOperatorData();
operatorAjax(dataJSON, "/get/operator");
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getOperatorData();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
operatorAjax(dataJSON, "/get/operator");
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getOperatorData();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
operatorAjax(dataJSON, "/get/operator");
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getOperatorData();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
operatorAjax(dataJSON, "/get/operator");
});
function addOperator(res) {
if (res.Code == -1) {
$(res.Key).html(res.Msg);
} else {
alert(res.Msg);
$(".cancel-operator").trigger('click');
operatorAjax(getOperatorData(), "/get/operator");
}
}
function loadRoleListToModal(res) {
if (res.Code != 200) {
return;
}
let str = '<option value="none">请选择</option>';
for (let i = 0; i < res.RoleInfoList.length; i ++) {
let r = res.RoleInfoList[i];
str += '<option value="' + r.RoleUid + '">' + r.RoleName + '</option>';
}
$("#operator-role-select").html(str);
$("#change-operator-role-select").html(str);
}
function clearContent() {
$(".operator-remark").val("");
$(".operator-account").val("");
$(".operator-password").val("");
$(".operator-name-error").html("");
$(".operator-password-error").html("");
}
$(".add-operator-button").click(function() {
clearContent();
});
$(".save-operator").click(function() {
$(".operator-name-error").html("");
$(".operator-password-error").html("");
$(".operator-role-error").html("");
let operatorAccount = $(".operator-account").val();
let operatorPassword = $(".operator-password").val();
let operatorRole = $("#operator-role-select").val();
let status = $("#operator-status-select").val();
let remark = $(".operator-remark").val();
if (operatorAccount.length <= 0) {
$(".operator-name-error").html("*登录账号不能为空");
return;
}
if (operatorPassword.length <= 0) {
$(".operator-password-error").html("*初始密码不能为空");
return;
}
if (operatorRole == "none") {
$(".operator-role-error").html("请选择角色");
return;
}
let dataJSON = {
"operatorAccount" : operatorAccount,
"operatorPassword" : operatorPassword,
"operatorRole" : operatorRole,
"status" : status,
"remark" : remark
};
operatorAjax(dataJSON, "/add/operator");
});
$(function() {
operatorAjax(getOperatorData(), "/get/operator");
});
$(".operator-name-search").click(function() {
operatorAjax(getOperatorData(),"/get/operator");
});
</script>
</body>
</html>

View File

@@ -0,0 +1,634 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/filter.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.order-record .search{
margin: 0;
padding: 10px;
}
.search label {
font-weight: normal;
padding-right: 20px;
}
.order-record .search div {
height: 20px;
}
#search-order-status, #search-order-pay-way-code,#search-order-supplier-name, #search-order-free-status {
height: 30px;
margin-right: 15px;
}
#order-search {
background-color: skyblue;
width: 120px;
margin-right: 30px;
}
#notify {
word-break: break-all;
}
</style>
</head>
<body>
<div class="order-record">
<div class="search form-inline">
<label for="">
<span>开始时间:</span>
<input type="text" name="" id="search-order-start-time" class="start-time" value="">
</label>
<label for="">
<span>结束时间:</span>
<input type="text" name="" id="search-order-end-time" class="end-time" value="">
</label>
<label for="">
<span>商户名称:</span>
<input type="text" id="search-order-merchant-name" placeholder="模糊匹配">
</label>
<label for="">
<span>商户订单号:</span>
<input type="text" id="search-order-merchant-order-id" value="">
</label>
{{/* <label>
<span>本系统订单号:</span>
<input type="text" id="search-order-bank-order-id" value="" >
</label>*/}}
<label for="">
订单状态:
<select name="" id="search-order-status">
<option value="">请选择</option>
<option value="success">支付成功</option>
<option value="wait">等待支付</option>
<option value="fail">支付失败</option>
<option value="cancel">放弃支付</option>
</select>
</label>
<label for="">
上游名称:
<select name="" id="search-order-supplier-name">
</select>
</label>
<label for="">
支付类型:
<select name="" id="search-order-pay-way-code">
<option value="">请选择</option>
<option value="WEIXIN_SCAN">微信扫码</option>
<option value="WEIXIN_H5">微信H5</option>
<option value="WEIXIN_SYT">微信收银台</option>
<option value="ALI_SCAN">支付宝扫码</option>
<option value="ALI_H5">支付宝H5</option>
<option value="ALI_SYT">支付宝收银台</option>
<option value="QQ_SCAN">QQ扫码</option>
<option value="QQ_H5">QQ-H5</option>
<option value="QQ_SYT">QQ收银台</option>
<option value="UNION_SCAN">银联扫码</option>
<option value="UNION_H5">银联H5</option>
<option value="UNION_PC_WAP">银联pc-web</option>
<option value="UNION_SYT">银联收银台</option>
<option value="UNION_FAST">银联快捷</option>
<option value="BAIDU_SCAN">百度钱包扫码</option>
<option value="BAIDU_H5">百度钱包H5</option>
<option value="BAIDU_SYT">百度钱包收银台</option>
<option value="JD_SCAN">京东扫码</option>
<option value="JD_H5">京东H5</option>
<option value="JD_SYT">京东收银台</option>
</select>
</label>
<label for="">
冻结状态:
<select name="" id="search-order-free-status">
<option value="">请选择</option>
<option value="freeze_amount">冻结</option>
<option value="refund">退款</option>
</select>
</label>
<button type="button" class="btn btn-default" id="order-search">搜索</button>
<label class="color-red" style="font-size: 16px;">
交易金额:
<span id="order-all-amount"></span>
</label>
<label class="color-red" style="font-size: 16px;">
成功率:
<span id="success-rate"></span>
</label>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>商户名称</th>
<th>商户订单号</th>
<th>订单金额</th>
<th>实际支付金额</th>
<th>支付状态</th>
<th>冻结状态</th>
<th>退款状态</th>
<th>下单时间</th>
<th>上游供应商</th>
<th>支付类型</th>
<th>操作</th>
</tr>
</thead>
<tbody id="order-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<!-- 模态框 -->
<div class="modal fade" id="order-details" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">订单详情</h4>
</div>
<div class="modal-body modal-body-order-details">
<div class="row">
<div class="col-md-6">
<div>商品名称:<span id="shop-name"></span></div>
<div>商户订单id<span id="merchant-order-id"></span></div>
<div>系统订单id<span id="bank-order-id"></span></div>
<div>银行流水id<span id="bank-trans-id"></span></div>
<div>订单金额:<span id="order-amount"></span></div>
<div>实际金额:<span id="fact-amount"></span></div>
<div>轮询池id<span id="roll-pool-code"></span></div>
<div>轮询池名:<span id="roll-pool-name"></span></div>
<div>通道id<span id="road-uid"></span></div>
<div>通道名称:<span id="road-name"></span></div>
<div>上游商编码:<span id="pay-product-code"></span></div>
<div>上游商名称:<span id="pay-product-name"></span></div>
<div>支付类型编码:<span id="pay-type-code"></span></div>
<div>支付类型名称:<span id="pay-type-name"></span></div>
</div>
<div class="col-md-6">
<div>订单有效时间:<span id="order-period"></span></div>
<div>支付状态:<span id="status"></span></div>
<div>是否退款:<span id="refund"></span></div>
<div>退款时间:<span id="refund-time"></span></div>
<div>是否冻结:<span id="free"></span></div>
<div>冻结时间:<span id="free-time"></span></div>
<div>是否解冻:<span id="unfree"></span></div>
<div>解冻时间:<span id="unfree-time"></span></div>
<div>商户名称:<span id="merchant-name"></span></div>
<div>商户编号:<span id="merchant-uid"></span></div>
<div>代理编号:<span id="agent-uid"></span></div>
<div>代理名称:<span id="agent-name"></span></div>
<div>下单时间:<span id="create—time"></span></div>
<div>更新时间:<span id="update-time"></span></div>
</div>
</div>
<div class="row">
<div class="col-md-12">
回调地址:<span id="notify"></span>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-order-details" data-dismiss="modal">取消</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="order-solve" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h4 class="modal-title">订单处理</h4>
</div>
<div class="modal-body modal-body-order-solve">
<input type="radio" name="order-solve-radio" value="success" style="margin-left: 10%;"><span style="color: blue;">处理成功</span>
<input type="radio" name="order-solve-radio" value="fail" style="margin-left: 15%;"><span style="color: red;">处理失败</span>
<input type="text" hidden value="" id="order-solve-bank-order-id">
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default save-order-solve">确定</button>
<button type="button" class="btn btn-default cancel-order-solve" data-dismiss="modal">取消</button>
</div>
</div>
</div>
</div>
</div>
<script>
//将上游通道供应商写入
function setSupplier() {
$.ajax({
url: "/get/product",
success: function (res) {
if (res.Code == 404) {window.parent.location = "/login.html";}
else if (res.Code == -1) {alert("没有获取到上游供应商数据");}
else {
let str = '<option value="' + "" + '">' + "请选择" + '</option>';
for (let key in res.ProductMap) {
let v = res.ProductMap[key];
str = str + '<option value="' + key + '">' + v + '</option>'
}
$("#search-order-supplier-name").html(str);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
//获取搜索去的参数
function getOrderSearchValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let startTime = $("#search-order-start-time").val();
let endTime = $("#search-order-end-time").val();
let merchantName = $("#search-order-merchant-name").val();
let merchantOrderId = $("#search-order-merchant-order-id").val();
// let bankOrderId = $("#search-order-bank-order-id").val();
let orderStatus = $("#search-order-status").val();
let supplierUid = $("#search-order-supplier-name").val();
let payWayCode = $("#search-order-pay-way-code").val();
let freeStatus = $("#search-order-free-status").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"startTime":startTime,
"endTime":endTime,
"merchantName":merchantName,
"merchantOrderId":merchantOrderId,
// "bankOrderId":bankOrderId,
"orderStatus":orderStatus,
"supplierUid":supplierUid,
"payWayCode":payWayCode,
"freeStatus":freeStatus
};
}
function setOrderCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function showOrderList(res) {
setOrderCutPageValues(res);
let str = "";
for (let i = 0; i < res.OrderList.length; i ++) {
let v = res.OrderList[i];
let tmp = "";
if (v.Status == "success") {
tmp = "<tr style='color: blue;'>"
} else if (v.Status == "fail") {
tmp = "<tr style='color: red;'>"
}
tmp = tmp + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.MerchantName + "</th>" + "<th>" + v.MerchantOrderId + "</th>" +
"<th>" + v.OrderAmount + "</th>" + "<th>" + v.FactAmount + "</th>" + "<th>" + v.Status + "</th>";
if (v.Freeze == "yes") {
tmp = tmp + "<th style='color: red;'>" + "已经冻结" + "</th>"
} else {
tmp = tmp + "<th>" + "未被冻结" + "</th>"
}
if (v.Refund == "yes") {
tmp = tmp + "<th style='color: red;'>" + "已经退款" + "</th>"
} else {
tmp = tmp + "<th>" + "未被退款" + "</th>"
}
tmp = tmp + "<th>" + v.CreateTime + "</th>" + "<th>" + v.PayProductName + "</th>" + "<th>" + v.PayTypeName + "</th>";
tmp = tmp.replace("wait", "等待支付").replace("success", "支付成功").replace("fail", "支付失败").replace("cancel", "放弃支付");
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" class="btn btn-default" style="padding:0;margin-right: 5px;" value="' + v.BankOrderId +'" onclick="orderDetails(this.value);">' + "详情" +'</button>';
if (v.Status == "wait") {
tmp = tmp + '<button type="button" class="btn btn-info" style="padding: 0;margin-right: 5px;" value="' + v.BankOrderId +'" onclick="orderQuery(this.value);">'+ "查询" +'</button>';
tmp = tmp + '<button type="button" class="btn btn-success" style="padding: 0;margin-right: 5px;" value="' + v.BankOrderId +'" onclick="solveResult(this.value);">'+ "处理" +'</button>';
}
if (v.Status == "success" || v.Status == "fail") {
tmp = tmp + '<button type="button" class="btn btn-primary" style="padding: 0;margin-right: 5px;" value="' + v.BankOrderId +'" onclick="orderNotify(this.value);">' + "回调" + '</button>';
if (v.Freeze == "yes") {
tmp = tmp + '<button type="button" class="btn btn-default" style="padding: 0;margin-right: 5px;" value="' + v.BankOrderId + '" onclick="unfreeze(this.value);">' + "解冻" + '</button>';
tmp = tmp + '<button type="button" class="btn btn-danger" style="padding: 0;margin-right: 5px;" value="' + v.BankOrderId + '" onclick="refund(this.value);">' + "退款" + '</button>';
} else {
if (v.Refund != "yes") {
tmp = tmp + '<button type="button" class="btn btn-warning" style="padding: 0;margin-right: 5px;" value="' + v.BankOrderId + '" onclick="freeze(this.value);">' + "冻结" + '</button>'
}
}
if (v.Refund == "yes") {
tmp = tmp + '<button type="button" class="btn btn-default" style="padding: 0;" value="' + v.BankOrderId + '" onclick="orderRoll(this.value);">' + "回滚" + '</button>';
}
}
tmp = tmp + '</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#order-all-amount").html(res.AllAmount);
$("#success-rate").html(res.SuccessRate);
$("#order-table-body").html(str);
}
function freeze(bankOrderId) {
$.ajax({
url: "/update/order/status",
data: {
"bankOrderId":bankOrderId,
"solveType":"freeze_amount"
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return
} else if (res.Code == 200) {
alert("冻结成功");
} else {
alert("冻结失败")
}
AjaxOrderList(getOrderSearchValues());
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
function unfreeze(bankOrderId) {
$.ajax({
url: "/update/order/status",
data: {
"bankOrderId":bankOrderId,
"solveType":"unfreeze_amount"
},
success:function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return
} else if (res.Code == 200) {
alert("解冻成功")
} else {
alert("解冻失败")
}
AjaxOrderList(getOrderSearchValues());
},
error: function () {
alert("系统异常,请稍后再试")
}
});
}
function refund(bankOrderId) {
$.ajax({
url: "/update/order/status",
data: {
'bankOrderId':bankOrderId,
"solveType":"refund"
},
success:function (res) {
if (res.Code == 404){
window.parent.location = "/login.html";
return
}else if (res.Code == 200) {
alert("退款成功");
} else {
alert("退款失败");
}
AjaxOrderList(getOrderSearchValues());
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
function orderRoll(bankOrderId) {
$.ajax({
url: "/update/order/status",
data:{
"bankOrderId":bankOrderId,
"solveType":"order_roll"
},
success:function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return
} else if (res.Code == 200 ){
alert("加款成功");
} else {
alert("加款失败");
}
AjaxOrderList(getOrderSearchValues());
},
error:function () {
alert("系统异常,请稍后再试")
}
});
}
function solveResult(bankOrderId) {
$("#order-solve-bank-order-id").val(bankOrderId);
$("#order-solve").modal();
}
$(".save-order-solve").click(function () {
let bankOrderId = $("#order-solve-bank-order-id").val();
let solveType = $("input[name='order-solve-radio']:checked").val();
if (solveType != "success" && solveType != "fail") {
alert("没有选择那种处理方式");return;
} else {
$.ajax({
url: "/update/order/status",
data: {
"bankOrderId":bankOrderId,
"solveType":solveType
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
} else if (res.Code == 200){
alert("受理成功")
} else {
alert("受理失败");
}
$(".cancel-order-solve").trigger('click');
AjaxOrderList(getOrderSearchValues());
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
});
function orderNotify(bankOrderId) {
$.ajax({
url: "/send/notify",
data:{
"bankOrderId":bankOrderId
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
alert(res.Msg);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
function orderQuery(bankOrderid) {
$.ajax({
url: "/supplier/order/query",
data: {
"bankOrderId":bankOrderid
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
alert(res.Msg);
AjaxOrderList(getOrderSearchValues());
}
},
error: function (res) {
alert("系统异常,请稍后再试");
}
});
}
function orderDetails(bankOrderId) {
$("#order-details").modal();
$.ajax({
url: "/get/one/order",
data: {
"bankOrderId":bankOrderId
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == 200) {
let order = res.OrderList[0];
$("#order-period").html(order.OrderPeriod);
$("#shop-name").html(order.ShopName);
$("#merchant-order-id").html(order.MerchantOrderId);
$("#bank-order-id").html(order.BankOrderId);
$("#bank-trans-id").html(order.BankTransId);
$("#order-amount").html(order.OrderAmount);
$("#fact-amount").html(order.FactAmount);
$("#roll-pool-code").html(order.RollPoolCode);
$("#roll-pool-name").html(order.RollPoolName);
$("#road-uid").html(order.RoadUid);
$("#road-name").html(order.RoadName);
$("#pay-product-code").html(order.PayProductCode);
$("#pay-product-name").html(order.PayProductName);
$("#pay-type-code").html(order.PayTypeCode);
$("#pay-type-name").html(order.PayTypeName);
$("#notify").html(res.NotifyUrl);
$("#status").html(order.Status);
$("#refund").html(order.Refund);
$("#refund-time").html(order.RefundTime);
$("#free").html(order.Freeze);
$("#free-time").html(order.FreezeTime);
$("#unfree").val(order.Unfreeze);
$("#unfree-time").html(order.UnfreezeTime);
$("#merchant-name").html(order.MerchantName);
$("#merchant-uid").html(order.MerchantUid);
$("#agent-uid").html(order.AgentUid);
$("#agent-name").html(order.AgentName);
$("#create—time").html(order.CreateTime);
$("#update-time").html(order.UpdateTime);
$("#order-details").modal();
}
}
});
}
function AjaxOrderList(dataJSON) {
$.ajax({
url:"/get/order",
data: dataJSON,
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
} else {
showOrderList(res);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getOrderSearchValues();
AjaxOrderList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getOrderSearchValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
AjaxOrderList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getOrderSearchValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
AjaxOrderList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getOrderSearchValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
AjaxOrderList(dataJSON);
});
$("#order-search").click(function () {
let dataJSON = getOrderSearchValues();
AjaxOrderList(dataJSON);
});
$(function () {
let day = new Date(new Date().getTime() - 86400000);
let s = dateFtt("yyyy-MM-dd hh:mm:ss", day);
$("#search-order-start-time").val();
setSupplier();
let dataJSON = getOrderSearchValues();
AjaxOrderList(dataJSON);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,305 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/html">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/filter.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.order-record .search{
margin: 0;
padding: 0;
}
.search label {
font-weight: normal;
padding-right: 20px;
}
.order-profit-record .search div {
height: 20px;
}
#search-order-status, #search-order-pay-way-code,#search-order-supplier-name {
height: 30px;
margin-right: 15px;
}
#order-table-body tr {
height: 30px;
line-height: 30px;
}
#supplierProfit, #platformProfit, #agentProfit {
display: inline-block;
padding-right: 50px;
}
.menu-table {
margin-top: 10px;
}
#order-search {
background-color: skyblue;
width: 120px;
margin-right: 30px;
}
</style>
</head>
<body>
<div class="order-record">
<div class="search form-inline" style="font-weight: normal;">
<label for="" style="font-weight: normal;">
<span>开始时间:</span>
<input type="text" name="" value="" id="search-order-start-time" class="start-time" value="">
</label>
<label for="" style="font-weight: normal;">
<span>结束时间:</span>
<input type="text" name="" value="" id="search-order-end-time" class="end-time" value="">
</label>
<label for="" style="font-weight: normal;">
<span>商户名称:</span>
<input type="text" id="search-order-merchant-name" placeholder="模糊匹配">
</label>
<label for="">
<span>代理名称:</span>
<input type="text" name="" value="" id="search-order-agent-name" placeholder="模糊匹配">
</label>
<label style="font-weight: normal;">
<span>本系统订单号:</span>
<input type="text" id="search-order-bank-order-id" value="" >
</label>
<label for="" style="font-weight: normal;">
上游名称:
<select name="" id="search-order-supplier-name">
</select>
</label>
<label for="" style="font-weight: normal;">
订单状态:
<select name="" id="search-order-status">
<option value="">请选择</option>
<option value="success">支付成功</option>
<option value="wait">等待支付</option>
<option value="fail">支付失败</option>
<option value="cancel">放弃支付</option>
</select>
</label>
<label for="" style="font-weight: normal;">
支付类型:
<select name="" id="search-order-pay-way-code">
<option value="">请选择</option>
<option value="WEIXIN_SCAN">微信扫码</option>
<option value="WEIXIN_H5">微信H5</option>
<option value="WEIXIN_SYT">微信收银台</option>
<option value="ALI_SCAN">支付宝扫码</option>
<option value="ALI_H5">支付宝H5</option>
<option value="ALI_SYT">支付宝收银台</option>
<option value="QQ_SCAN">QQ扫码</option>
<option value="QQ_H5">QQ-H5</option>
<option value="QQ_SYT">QQ收银台</option>
<option value="UNION_SCAN">银联扫码</option>
<option value="UNION_H5">银联H5</option>
<option value="UNION_PC_WAP">银联pc-web</option>
<option value="UNION_SYT">银联收银台</option>
<option value="UNION_FAST">银联快捷</option>
<option value="BAIDU_SCAN">百度钱包扫码</option>
<option value="BAIDU_H5">百度钱包H5</option>
<option value="BAIDU_SYT">百度钱包收银台</option>
<option value="JD_SCAN">京东扫码</option>
<option value="JD_H5">京东H5</option>
<option value="JD_SYT">京东收银台</option>
</select>
</label>
{{/*<br>*/}}
<label class="color-red" style="font-weight: normal;">
手续费:
<span id="supplierProfit"></span>
</label>
<label class="color-red" style="font-weight: normal;">
平台利润:
<span id="platformProfit"></span>
</label>
<label class="color-red" style="font-weight: normal;">
代理利润:
<span id="agentProfit"></span>
</label>
<button type="button" class="btn btn-default" id="order-search">搜索</button>
</div>
<div class="menu-table table-responsive">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>商户名称</th>
<th>代理名称</th>
<th>系统订单号</th>
<th>实际金额</th>
<th>状态</th>
<th>手续费</th>
<th>平台利润</th>
<th>代理利润</th>
<th>支付类型</th>
<th>上游通道</th>
</tr>
</thead>
<tbody id="order-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<script>
//获取搜索去的参数
function getOrderProfitSearchValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let startTime = $("#search-order-start-time").val();
let endTime = $("#search-order-end-time").val();
let merchantName = $("#search-order-merchant-name").val();
let agentName = $("#search-order-agent-name").val();
let bankOrderId = $("#search-order-bank-order-id").val();
let orderStatus = $("#search-order-status").val();
let supplierUid = $("#search-order-supplier-name").val();
let payWayCode = $("#search-order-pay-way-code").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"startTime":startTime,
"endTime":endTime,
"merchantName":merchantName,
"agentName":agentName,
"bankOrderId":bankOrderId,
"orderStatus":orderStatus,
"supplierUid":supplierUid,
"payWayCode":payWayCode
};
}
function setOrderCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function showOrderProfitList(res) {
setOrderCutPageValues(res);
let str = "";
for (let i = 0; i < res.List.length; i ++) {
let v = res.List[i];
let tmp = "";
if (v.Status == "success") {
tmp = "<tr style='color: blue;'>"
} else if (v.Status == "fail") {
tmp = "<tr style='color: red;'>"
}
tmp = tmp + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.MerchantName + "</th>" + "<th>" + v.AgentName + "</th>" + "<th>" + v.BankOrderId + "</th>" +
"<th>" + v.FactAmount + "</th>" + "<th>" + v.Status + "</th>" + "<th>" + v.SupplierProfit + "</th>" +
"<th>" + v.PlatformProfit + "</th>" + "<th>" + v.AgentProfit + "</th>" + "<th>" + v.PayTypeName + "</th>" +
"<th>" + v.PayProductName + "</th>";
tmp = tmp.replace("wait", "等待支付").replace("success", "支付成功").replace("fail", "支付失败").replace("cancel", "放弃支付");
tmp = tmp + '</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#order-all-amount").html(res.AllAmount);
$("#success-rate").html(res.SuccessRate);
$("#order-table-body").html(str);
$("#supplierProfit").html(res.SupplierProfit);
$("#platformProfit").html(res.PlatformProfit);
$("#agentProfit").html(res.AgentProfit);
}
function AjaxOrderProfitList(dataJSON) {
$.ajax({
url:"/get/orderProfit",
data: dataJSON,
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
} else {
showOrderProfitList(res);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
$("#order-search").click(function () {
let dataJSON = getOrderProfitSearchValues();
AjaxOrderProfitList(dataJSON);
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getOrderProfitSearchValues();
AjaxOrderProfitList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getOrderProfitSearchValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
AjaxOrderProfitList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getOrderProfitSearchValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
AjaxOrderProfitList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getOrderProfitSearchValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
AjaxOrderProfitList(dataJSON);
});
$(function () {
let day = new Date(new Date().getTime() - 86400000);
let s = dateFtt("yyyy-MM-dd hh:mm:ss", day);
$("#search-order-start-time").val();
setSupplier();
let dataJSON = getOrderProfitSearchValues();
AjaxOrderProfitList(dataJSON);
})
</script>
</body>
</html>

View File

@@ -0,0 +1,343 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link src="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/filter.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.search label {
font-weight: normal;
margin-right: 20px;
}
#status {
height: 30px;
line-height: 30px;
}
.search-button {
margin-left: 40px;
}
.modal-body label {
font-weight: normal;
margin-left: 2%;
margin-top: 2%;
}
#result-modal label {
margin-right: 50px;
}
#table-body tr{
height: 25px;
line-height: 25px;
}
</style>
</head>
<body>
<div class="search">
<label>
开始时间:
<input type="text" name="" value="" id="start-time" class="start-time" value="">
</label>
<label>
结束时间:
<input type="text" name="" value="" id="end-time" class="end-time" value="">
</label>
<label>
商户订单号:
<input type="text" id="merchantOrderId">
</label>
<label>
系统订单号:
<input type="text" id="bankOrderId">
</label>
<select id="status">
<option value="">请选择</option>
<option value="payfor_confirm">待审核</option>
<option value="payfor_solving">系统处理中</option>
<option value="payfor_banking">银行处理中</option>
<option value="payfor_success">代付成功</option>
<option value="payfor_fail">代付失败</option>
</select>
<input type="button" class="btn btn-primary search-button" value="搜索">
</div>
<div class="menu-table table-responsive">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>商户名称</th>
<th>商户订单号</th>
<th>系统订单号</th>
<th>代付金额</th>
<th>开户名</th>
<th>银行名称</th>
<th>银行账号</th>
<th>状态</th>
<th>打款类型</th>
<th>时间</th>
<th>代付通道</th>
<th>操作</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<!-- Modal -->
<div class="modal fade" id="result-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<input type="text" value="" hidden="hidden" id="result-bank-order-id">
<div class="modal-body">
<label>
打款成功:
<input type="radio" name="result-payfor" value="payfor_success">
</label>
<label for="">
打款失败:
<input type="radio" name="result-payfor" value="payfor_fail">
</label>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" id="result-cannel">取消</button>
<input type="button" class="btn btn-primary" value="确定" onclick="resultSubmit();">
</div>
</div>
</div>
</div>
<script>
function getCurPageValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let startTime = $("#start-time").val();
let endTime = $("#end-time").val();
let merchantOrderId = $("#merchantOrderId").val();
let bankOrderId = $("#bankOrderId").val();
let status = $("#status").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"startTime":startTime,
"endTime":endTime,
"merchantOrderId":merchantOrderId,
"bankOrderId":bankOrderId,
"status":status
}
}
function setCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function randPayForList(res) {
setCutPageValues(res);
let str = "";
for (let i = 0; i < res.PayForList.length; i ++) {
let v = res.PayForList[i];
let tmp = "<tr>";
if (v.Status == "payfor_success") {
tmp = "<tr style='color: blue;'>";
} else if(v.Status == "payfor_fail") {
tmp = "<tr style='color: red;'>"
}
tmp = tmp + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.MerchantName + "</th>" + "<th>" + v.MerchantOrderId + "</th>" + "<th>" + v.BankOrderId + "</th>" +
"<th>" + v.PayforAmount + "</th>" + "<th>" + v.BankAccountName + "</th>" + "</th>" + "<th>" + v.BankName + "</th>" +
"<th>" + v.BankAccountNo + "</th>" + "<th>" + v.Status + "</th>" + "<th>" + v.GiveType + "</th>" + "<th>" + v.CreateTime + "</th>" +
"<th>" + v.RoadName + "</th>" + "<th>" ;
if (v.Status == "payfor_confirm") {
tmp = tmp + '<button type="button" value="' + v.BankOrderId +'" class="btn btn-default" onclick="confirm(this.value);">' + "审核" +'</button>';
} else if ((v.Status == "payfor_solving" && v.GiveType == "payfor_hand") || v.Status == "payfor_banking") {
tmp = tmp + '<button type="button" value="' + v.BankOrderId +'" class="btn btn-default" style="color: blue;" onclick="result(this.value);">' + "处理" +'</button>';
if (v.Status == "payfor_banking") {
tmp = tmp + '<button type="button" value="' + v.BankOrderId + '" class="btn btn-default" style="color: blue;" onclick="query(this.value);">' + "查询" + '</button>';
}
} else if (v.Status == "payfor_success") {
tmp = tmp + '<button type="button" value="' + v.BankOrderId +'" class="btn btn-default" style="color: green;">' + "成功" +'</button>';
} else if (v.Status == "payfor_fail") {
tmp = tmp + '<button type="button" value="' + v.BankOrderId + '" class="btn btn-warning">失败</button>';
} else {
tmp = tmp + '<button type="button" class="btn btn-primary">处理中</button>';
}
tmp = tmp + /*'</div>' +*/ "</th>" + "</tr>";
str = str + tmp.replace("payfor_fail", "失败").replace("payfor_success","成功").replace("payfor_confirm","待审核").replace("payfor_solving","系统处理中").
replace("payfor_banking","银行处理中").replace("payfor_hand","手动打款").replace("payfor_refuse","拒绝打款").replace("payfor_road","通道打款");
}
$("#table-body").html(str);
}
function notify(bankOrderId) {
$.ajax({
url: "/self/send/notify",
data: {
"bankOrderId":bankOrderId
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
alert(res.Msg);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
function query(bankOrderId) {
$.ajax({
url: "/supplier/payfor/query",
data: {
"bankOrderId":bankOrderId
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
alert(res.Msg);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
function AjaxPayForList(dataJSON) {
$.ajax({
url: "/get/payfor",
data: dataJSON,
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
randPayForList(res);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getCurPageValues();
AjaxPayForList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCurPageValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
AjaxPayForList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCurPageValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
AjaxPayForList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCurPageValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
AjaxPayForList(dataJSON);
});
$(".search-button").click(function () {
let dataJSON = getCurPageValues();
AjaxPayForList(dataJSON);
});
function result(bankOrderId) {
$("#result-bank-order-id").val(bankOrderId);
$("#result-modal").modal();
}
function resultSubmit() {
let bankOrderId = $("#result-bank-order-id").val();
let resultType = $("input[name='result-payfor']:checked").val();
$.ajax({
url: "/result/payfor",
data: {
"bankOrderId":bankOrderId,
"resultType":resultType
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1){
alert(res.Msg);
} else {
$("#result-cannel").trigger('click');
let dataJSON = getCurPageValues();
AjaxPayForList(dataJSON);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
//审核操作
function confirm(bankOrderId) {
$("#main-bank-order-id").val(bankOrderId);
loadMainContent("/confirm.html")
}
$(function () {
let day = new Date(new Date().getTime() - 86400000);
let s = dateFtt("yyyy-MM-dd hh:mm:ss", day);
$("#start-time").val();
let dataJSON = getCurPageValues();
AjaxPayForList(dataJSON);
});
</script>
</body>
</html>

View File

@@ -0,0 +1,182 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link src="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/filter.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.search label {
font-weight: normal;
margin-right: 20px;
}
select {
height: 30px;
line-height: 30px;
text-align: center;
}
#total-amount ,#total-platform-profit{
display: inline-block;
margin-right: 40px;
}
.profit{
font-size: 16px;
margin-top: 10px;
}
table tr {
height: 28px;
font-size: 16px;
}
</style>
</head>
<body>
<div class="search">
<label>
商户名称:
<select name="" id="select-merchant-name"></select>
</label>
<label for="">
代理名称:
<select name="" id="select-agent-name"></select>
</label>
<label for="">
上游通道名:
<select name="" id="search-order-supplier-name"></select>
</label>
<label for="">
支付类型:
<select name="" id="pay-type">
<option value="">请选择</option>
<option value="WEIXIN_SCAN">微信扫码</option>
<option value="WEIXIN_H5">微信H5</option>
<option value="WEIXIN_SYT">微信收银台</option>
<option value="ALI_SCAN">支付宝扫码</option>
<option value="ALI_H5">支付宝H5</option>
<option value="ALI_SYT">支付宝收银台</option>
<option value="QQ_SCAN">QQ扫码</option>
<option value="QQ_H5">QQ-H5</option>
<option value="QQ_SYT">QQ收银台</option>
<option value="UNION_SCAN">银联扫码</option>
<option value="UNION_H5">银联H5</option>
<option value="UNION_PC_WAP">银联pc-web</option>
<option value="UNION_SYT">银联收银台</option>
<option value="UNION_FAST">银联快捷</option>
<option value="BAIDU_SCAN">百度钱包扫码</option>
<option value="BAIDU_H5">百度钱包H5</option>
<option value="BAIDU_SYT">百度钱包收银台</option>
<option value="JD_SCAN">京东扫码</option>
<option value="JD_H5">京东H5</option>
<option value="JD_SYT">京东收银台</option>
</select>
</label>
<label>
开始时间:
<input type="text" name="" value="" id="start-time" class="start-time" value="">
</label>
<label>
结束时间:
<input type="text" name="" value="" id="end-time" class="end-time" value="">
</label>
<label for="">
<input type="button" class="btn btn-primary" value="搜索" onclick="search();">
</label>
<label for="" class="profit">
<span class="color-red">交易总金额:</span>
<span id="total-amount" class="color-red">00.00</span>
<span class="disabled"></span>
<span class="color-red">平台总纯利润:</span>
<span id="total-platform-profit" class="color-red">00.00</span>
<span class="disabled"></span>
<span class="color-red">代理总利润:</span>
<span id="total-agent-profit" class="color-red">00.00</span>
</label>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>商户名称</th>
<th>所属代理</th>
<th>上游名称</th>
<th>支付方式</th>
<th>交易金额</th>
<th>交易笔数</th>
<th>平台纯利润</th>
<th>代理纯利润</th>
</tr>
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<script>
function getCutValues() {
let merchantUid = $("#select-merchant-name").val();
let agentUid = $("#select-agent-name").val();
let supplierUid = $("#search-order-supplier-name").val();
let payType = $("#pay-type").val();
let startTime = $("#start-time").val();
let endTime = $("#end-time").val();
return {
"merchantUid": merchantUid,
"agentUid":agentUid,
"supplierUid": supplierUid,
"payType": payType,
"startTime": startTime,
"endTime": endTime
};
}
function randProfit(res) {
$("#total-amount").html(res.TotalAmount);
$("#total-platform-profit").html(res.PlatformTotalProfit);
$("#total-agent-profit").html(res.AgentTotalProfit);
let str = "";
for (let i = 0; i < res.ProfitList.length; i ++) {
let v = res.ProfitList[i];
let tmp = "<tr>" + "<th>" + (i+1) + "</th>" +
"<th>" + v.MerchantName + "</th>" + "<th>" + v.AgentName + "</th>" + "<th>" + v.SupplierName + "</th>" +
"<th>" + v.PayTypeName + "</th>" + "<th>" + v.OrderAmount + "</th>" + "<th>" + v.OrderCount + "</th>" +
"<th>" + v.PlatformProfit + "</th>" +"<th>" + v.AgentProfit + "</th>" + "</tr>";
str = str + tmp;
}
$("#table-body").html(str);
}
function search() {
$.ajax({
url: "/get/profit",
data: getCutValues(),
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
alert("系统异常,请稍后再试");
} else {
randProfit(res);
}
},
});
}
$(function () {
setMerchant();
setSupplier();
setAgent();
search();
})
</script>
</body>
</html>

330
jhboss/views/power.html Normal file
View File

@@ -0,0 +1,330 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>商户后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/jquery.min.js"></script>
<script src="../static/js/filter.js"></script>
<style type="text/css" media="screen">
.first-input-group .basic-url, .router-input-group .basic-url {
width: 210px;
}
.modal-body .pre-input-group select {
width: 210px;
height: 30px;
text-align: center;
text-align-last: center;
padding-left: 5px;
}
.power-name-error, .power-id-error, .first-menu-error, .second-menu-error {
color: red;
display: inline-block;
margin-left: 20px;
}
.power-save-success {
color: blue;
text-align: center;
}
</style>
</head>
<body>
<div class="search">
<div>
<span>二级菜单名称</span>
<input type="text" class="menu-name" value="" placeholder="模糊匹配">
</div>
<div>
<span>权限项名称</span>
<input type="text" class="power-name" value="" placeholder="模糊匹配">
</div>
<div>
<button type="button" class="btn btn-default power-menu-search">搜索</button>
</div>
</div>
<!-- 模态框 -->
<div class="add-menu">
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-button" data-toggle="modal" data-target="#addPowerModal">添加权限控制项</button>
<strong>权限控制项目加好后,不要随意修改,删除!!!</strong>
</div>
<div class="modal fade" id="addPowerModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="addPowerButton">添加权限控制项</h4>
</div>
<div class="modal-body modal-body-menu">
<div class="input-group pre-input-group">
<span class="input-group-addon basic-addon">一级菜单名</span>
<div class="select-content">
<select id="first-menu-select">
<option value="none">请选择</option>
</select>
<span class="first-menu-error"></span>
</div>
</div>
<div class="input-group pre-input-group">
<span class="input-group-addon basic-addon">二级菜单名</span>
<div class="select-content">
<select id="second-menu-select">
<option value="none">请选择</option>
</select>
<span class="second-menu-error"></span>
</div>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">权限项名称</span>
<input type="text" class="form-control basic-url power-item" value="">
<span class="power-name-error"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">权限项目ID</span>
<input type="text" class="form-control basic-url power-id" value="" placeholder="一级菜单:二级菜单:权限名">
<span class="power-id-error"></span>
</div>
<div class="input-group">
<span class="power-save-success"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-menu" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-menu">保存</button>
</div>
</div>
</div>
</div>
<!-- 模态框end -->
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>二级菜单名</th>
<th>二级菜单标识</th>
<th>权限项目名</th>
<th>权限项目ID</th>
<th>操作</th>
</tr>
</thead>
<tbody id="menu_table_body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<script>
function Ajax(dataJSON, urlHost) {
$.ajax({
url: urlHost,
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
}
if(urlHost.indexOf("get/firstMenu") != -1) {
initFirstMenuSelect(res);
} else if (urlHost.indexOf("/get/secondMenu") != -1) {
initSecondMenuSelect(res);
} else if (urlHost.indexOf("/add/power") != -1) {
savePowerItem(res);
} else if (urlHost.indexOf("/get/powerItem") != -1) {
showPowerItem(res);
} else if (urlHost.indexOf("/delete/powerItem") != -1) {
Ajax(getCutPageData(), "/get/powerItem");
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getCutPageData();
Ajax(dataJSON, "/get/powerItem");
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
Ajax(dataJSON, "/get/powerItem");
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
Ajax(dataJSON, "/get/powerItem");
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
Ajax(dataJSON, "/get/powerItem");
});
//删除权限项
function deletePowerItem(powerID) {
if (!window.confirm("是否确定删除该项?")) {
return;
}
Ajax({"powerID":powerID}, "/delete/powerItem");
}
//展示权限项的列表
function showPowerItem(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
let str = "";
for (let i = 0; i < res.PowerItemList.length; i ++) {
let v = res.PowerItemList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.SecondMenu + "</th>" + "<th>" + v.SecondMenuUid + "</th>" +
"<th>" + v.PowerItem + "</th>" + "<th>" + v.PowerId + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.PowerId +'" class="btn btn-default" onclick="deletePowerItem(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#menu_table_body").html(str);
}
function initFirstMenuSelect(res) {
let MenuList = res.MenuList;
let str = '<option value="none">请选择</option>';
for (let i = 0; i < MenuList.length; i ++) {
let m = MenuList[i];
str += '<option value="' + m.MenuUid + '">' + m.FirstMenu + '</option>';
}
$("#first-menu-select").html(str);
}
function clearContent() {
$(".power-name-error").html("");
$(".power-id-error").html("");
$(".first-menu-error").html("");
$(".second-menu-error").html("");
}
//点击 添加权限控制项 做出的响应
$(".add-button").click(function() {
clearContent();
$(".power-save-success").html();
Ajax({}, "/get/firstMenu");
});
function initSecondMenuSelect(res) {
let secondMenuList = res.SecondMenuList;
let str = '<option value="none">请选择</option>';
for (let i = 0; i < secondMenuList.length; i ++) {
let m = secondMenuList[i];
str += '<option value="' + m.SecondMenuUid + '">' + m.SecondMenu + '</option>';
}
$("#second-menu-select").html(str);
}
//关联二级菜单名
$("#first-menu-select").change(function() {
let firstMenuUid = $("#first-menu-select").val();
if (firstMenuUid == "none") {
return
}
Ajax({"firMenuUid":firstMenuUid}, "/get/secondMenus");
});
//点击 添加权限控制项的保存 按钮
function savePowerItem(res) {
let powerItem = $(".power-item").val();
if (res.Code == -1) {
$(res.Key).html(res.Msg);
return;
} else if (res.Code == 200) {
$(".power-item").val("");
$(".power-id").val("");
$(res.Key).html(powerItem + ":" + res.Msg);
}
clearContent();
}
$(".cancel-menu").click(function() {
Ajax(getCutPageData(), "/get/powerItem");
});
$(".save-menu").click(function() {
let firstMenuUid = $("#first-menu-select").val();
let secondMenuUid = $("#second-menu-select").val();
let powerItem = $(".power-item").val();
let powerID = $(".power-id").val();
clearContent();
$(".power-save-success").html("");
if (firstMenuUid == "none") {
$(".first-menu-error").html("*没选择一级菜单名");
return
}
if (secondMenuUid == "none") {
$(".second-menu-error").html("*没选择二级菜单");
return
}
Ajax({"firstMenuUid":firstMenuUid, "secondMenuUid":secondMenuUid, "powerItem":powerItem, "powerID":powerID}, "/add/power");
});
//获取搜索框的数据,和分页的基础数据
function getCutPageData() {
let powerItem = $(".power-item").val();
let powerID = $(".power-id").val();
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return {"displayCount":displayCount, "currentPage":currentPage, "totalPage":totalPage, "jumpPage":jumpPage, "powerItem": powerItem, "powerID":powerID};
}
$(".power-menu-search").click(function() {
Ajax(getCutPageData(), "/get/powerItem");
});
$(function() {
Ajax(getCutPageData(), "/get/powerItem");
});
</script>
</body>
</html>

603
jhboss/views/road.html Normal file
View File

@@ -0,0 +1,603 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/filter.js"></script>
<style type="text/css" media="screen">
.search div {
display: inline-block;
margin-top: 10px;
}
.add-edit-road {
margin-top: 10px;
margin-right: 10px;
}
.add-edit-road div {
margin-bottom: 20px;
margin-left: 10px;
}
.add-edit-road textarea {
width: 90%;
height: 150px;
}
select {
height: 25px;
min-width: 150px;
}
.road-footer {
width: 83%;
position: fixed;
float: left;
bottom: 10px;
left: 14%;
height: 30px;
border: 1px solid #e7e7e7;
background-color: white;
box-sizing: border-box;
}
fieldset:last-child {
margin-bottom: 30px;
}
.road-cannel-button, .road-save-button {
display: inline-block;
border: 1px solid #e7e7e7;
border-radius: 5px;
font-size: 12px;
text-align: center;
width: 100px;
line-height: 26px;
font-weight: 700;
}
.road-cannel-button:hover, .road-save-button:hover {
cursor: pointer;
background-color: #e7e7e7;
}
#product-name {
margin-right: 80px;
}
.add-road-button {
margin-bottom: 10px;
}
</style>
</head>
<body>
<div class="road-record">
<div class="search">
<div>
<span>通道名称</span>
<input type="text" class="road-name-search" value="" placeholder="模糊匹配">
</div>
<div>
<span>产品名称</span>
<input type="text" class="product-name-search" value="" placeholder="模糊匹配">
</div>
<div>
<button type="button" class="btn btn-default road-search">搜索</button>
</div>
</div>
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-road-button">添加通道</button>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>通道名称</th>
<th>产品名称</th>
<th>支付类型</th>
<th>成本汇率</th>
<th>状态</th>
<th>通道总额度</th>
<th>每天限额</th>
<th>单笔区间</th>
<th>开放时间段</th>
<th>总流水</th>
<th>今日流水</th>
<th>总利润</th>
<th>今日利润</th>
<th>成功数/请求数</th>
<th>操作</th>
</tr>
</thead>
<tbody id="road-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<div class="add-edit-road">
<input type="hidden" value="" class="road-uid">
<fieldset>
<legend style="width: 75px;">通道基本信息</legend>
<div>
<span>通道名称: </span>
<input type="text" class="road-name" value="">
<span class="star">*</span>
<span>备注:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<input type="text" value="" class="road-remark">
</div>
<div>
<span>产品名称: </span>
<select id="product-name">
{{/*<option value="WEIXIN">官方微信</option>*/}}
{{/*<option value="ALIPAY">官方支付宝</option>*/}}
</select>
<span>支付类型: </span>
<select id="pay-type">
<option value="WEIXIN_SCAN">微信扫码</option>
<option value="WEIXIN_H5">微信H5</option>
<option value="WEIXIN_SYT">微信收银台</option>
<option value="ALI_SCAN">支付宝扫码</option>
<option value="ALI_H5">支付宝H5</option>
<option value="ALI_SYT">支付宝收银台</option>
<option value="QQ_SCAN">QQ扫码</option>
<option value="QQ_H5">QQ-H5</option>
<option value="QQ_SYT">QQ收银台</option>
<option value="UNION_SCAN">银联扫码</option>
<option value="UNION_H5">银联H5</option>
<option value="UNION_PC_WAP">银联pc-web</option>
<option value="UNION_SYT">银联收银台</option>
<option value="UNION_FAST">银联快捷</option>
<option value="BAIDU_SCAN">百度钱包扫码</option>
<option value="BAIDU_H5">百度钱包H5</option>
<option value="BAIDU_SYT">百度钱包收银台</option>
<option value="JD_SCAN">京东扫码</option>
<option value="JD_H5">京东H5</option>
<option value="JD_SYT">京东收银台</option>
</select>
</div>
</fieldset>
<fieldset>
<legend style="width: 50px;">费用配置</legend>
<div>
<span>成本费率:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<input type="text" value="" class="basic-rate" placeholder="样例1.2">
<span class="star">*</span>
<span>代付手续费:&nbsp;&nbsp;&nbsp;&nbsp;</span>
<input type="text" value="" class="settle-fee" placeholder="单位:元">
<span class="star">*</span>
</div>
</fieldset>
<fieldset>
<legend style="width: 50px;">额度设置</legend>
<div>
<span>通道总额度:&nbsp;&nbsp;&nbsp;&nbsp;</span>
<input type="text" value="" class="road-total-limit">
<span class="star">*</span>
<span>每天额度:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
<input type="text" value="" class="road-everyday-limit">
<span class="star">*</span>
</div>
<div>
<span>单笔金额最小:</span>
<input type="text" value="" class="single-min-limit">
<span class="star">*</span>
<span>单笔金额最大:</span>
<input type="text" value="" class="single-max-limit">
<span class="star">*</span>
</div>
</fieldset>
<fieldset>
<legend style="width: 50px;">时间规则</legend>
<div>
<span>开始时间:</span>
<select id="road-start-hour">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
</select>
<span class="star"></span>
<span>结束时间:</span>
<select id="road-end-hour">
<option value="23">23</option>
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
</select>
</div>
</fieldset>
<fieldset>
<legend style="width: 110px;">参数配置JSON格式</legend>
<div>
<code>
<textarea class="road-param-json"></textarea>
</code>
</div>
</fieldset>
<div class="road-footer">
<span class="road-cannel-button">取消</span>
<span class="road-save-button">保存</span>
</div>
</div>
<script>
$(function() {
let dataJSON = getRoadCutPagevalues();
showRoadRecord(dataJSON);
$(".add-edit-road").hide();
});
function showProduct() {
$.ajax({
url: "/get/product",
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html"
} else if (res.Code == -1) {
} else {
let str = "";
for (let key in res.ProductMap) {
let v = res.ProductMap[key];
str = str + '<option value="' + key + '">' + v + '</option>'
}
$("#product-name").html(str);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
//点击添加通道按钮,隐藏通道列表页面,展示通道编辑添加页面
$(".add-road-button").click(function() {
clearRoadValues();
showProduct();
$(".add-edit-road").show();
$(".road-record").hide();
});
function showRoadRecord(dataJSON) {
$.ajax({
url: "/get/road",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
let str = "";
for (let i = 0; i < res.RoadInfoList.length; i ++) {
let v = res.RoadInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.RoadName + "</th>" + "<th>" + v.ProductName + "</th>" + "<th>" + v.PayType + "</th>" +
"<th>" + v.BasicFee + "</th>" + "<th>" + v.Status + "</th>" + "<th>" + v.TotalLimit + "</th>" +
"<th>" + v.TodayLimit + "</th>" + "<th>" + v.SingleMinLimit + "-" + v.SingleMaxLimit + "</th>" +
"<th>" + v.StarHour + "-" + v.EndHour + "</th>" + "<th>" + v.TotalIncome + "</th>" + "<th>" + v.TodayIncome + "</th>" +
"<th>" + v.TotalProfit + "</th>" + "<th>" + v.TodayProfit + "</th>" + "<th>" + v.RequestSuccess + "/" + v.RequestAll + '</th>';
tmp = tmp.replace("unactive", "冻结").replace("active", "激活");
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.RoadUid +'" class="btn btn-default" onclick="editRoad(this.value);"><span class="glyphicon glyphicon-pencil"></span></button>' +
'<button type="button" value="' + v.RoadUid +'" class="btn btn-default" onclick="updateRoadStatus(this.value);">'+ "激活|冻结" +'</button>' +
'<button type="button" value="' + v.RoadUid +'" class="btn btn-default" onclick="deleteRoad(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#road-table-body").html(str);
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
$(".road-save-button").click(function() {
let dataJSON = getRoadvalues();
$.ajax({
url:"/add/road",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
if (res.Code != 200) {
alert(res.Msg);
} else {
alert("添加成功");
$(".add-edit-road").hide();
showRoadRecord(getRoadCutPagevalues());
$(".road-record").show();
}
}
},
});
});
$(".road-cannel-button").click(function() {
$(".road-record").show();
$(".add-edit-road").hide();
});
$(function() {
$(".road-record").show();
$(".add-edit-road").hide();
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getRoadCutPagevalues();
showRoadRecord(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getRoadCutPagevalues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
showRoadRecord(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getRoadCutPagevalues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
showRoadRecord(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getRoadCutPagevalues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
showRoadRecord(dataJSON);
});
$(".road-search").click(function() {
let dataJSON = getRoadCutPagevalues();
showRoadRecord(dataJSON);
});
function editRoad(roadUid) {
$(".road-record").hide();
showProduct();
$.ajax({
url: "/get/oneRoad",
data: {
"roadUid":roadUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
alert("获取单通道信息失败");
} else {
let v = res.RoadInfoList[0];
$(".road-uid").val(v.RoadUid);
$(".road-name").val(v.RoadName);
$(".road-name").prop("readonly", "readonly");
$(".road-remark").val(v.Remark);
$("#product-name").val(v.ProductUid);
$("#product-name").attr("disabled", "disabled");
$("#pay-type").val(v.PayType);
$("#pay-type").attr("disabled", "disabled");
$(".basic-rate").val(v.BasicFee);
$(".settle-fee").val(v.SettleFee);
$(".road-total-limit").val(v.TotalLimit);
$(".road-everyday-limit").val(v.TodayLimit);
$(".single-min-limit").val(v.SingleMinLimit);
$(".single-max-limit").val(v.SingleMaxLimit);
$("#road-star-hour").val(v.StarHour);
$("#road-end-hour").val(v.EndHour);
$(".road-param-json").val(v.Params);
$(".road-record").hide();
$(".add-edit-road").show();
}
}
});
}
function updateRoadStatus(roadUid) {
$.ajax({
url: "/update/roadStatus",
data: {"roadUid":roadUid},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
alert("状态更新失败");
} else {
alert("更新状态成功")
showRoadRecord(getRoadCutPagevalues());
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
function deleteRoad(roadUid) {
if (!window.confirm("是否删除该项")) {
return false;
}
let dataJSON = getRoadCutPagevalues();
dataJSON["roadUid"] = roadUid;
$.ajax({
url: "/delete/road",
data:dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
alert("删除失败")
} else {
alert("删除成功");
showRoadRecord(getRoadCutPagevalues());
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
function getRoadCutPagevalues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let roadName = $(".road-name-search").val();
let roadUid = $(".road-number-search").val();
let productName = $(".product-name-search").val();
let productUid = $(".product-number-search").val();
return dataJSON = {
"roadName":roadName,
"roadUid":roadUid,
"productName":productName,
"productUid":productUid,
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage
};
}
function clearRoadValues() {
$(".road-uid").val("");
$(".road-name").val("");
$(".road-remark").val("");
$("#product-name").val("");
$("#pay-type").val("");
$(".basic-rate").val("");
$(".settle-fee").val("");
$(".road-total-limit").val("");
$(".road-everyday-limit").val("");
$(".single-min-limit").val("");
$(".single-max-limit").val("");
$(".road-star-hour").val("");
$(".road-end-hour").val("");
$(".road-param-json").val("");
}
//判断字符串是不是json串的函数
function isJSON(str) {
try {
// statements
var obj = JSON.parse(str);
if (typeof obj == 'object' && obj) {
return true;
} else {
return false;
}
} catch(e) {
// statements
return false;
}
}
function getRoadvalues() {
let roadUid = $(".road-uid").val();
let roadName = $(".road-name").val();
let roadRemark = $(".road-remark").val();
let productName = $("#product-name").val();
let payType = $("#pay-type").val();
let basicRate = $(".basic-rate").val();
let settleFee = $(".settle-fee").val();
let roadTotalLimit = $(".road-total-limit").val();
let roadEverydayLimit = $(".road-everyday-limit").val();
let singleMinLimit = $(".single-min-limit").val();
let singleMaxLimit = $(".single-max-limit").val();
let startHour = $("#road-start-hour").val();
let endHour = $("#road-end-hour").val();
let params = $(".road-param-json").val();
if (params.length > 0 ) {
if (!isJSON(params)) {
alert("参数配置不是json格式");
return
}
}
return {
"roadUid":roadUid,
"roadName":roadName,
"roadRemark":roadRemark,
"productName":productName,
"payType":payType,
"basicRate":basicRate,
"settleFee":settleFee,
"roadTotalLimit":roadTotalLimit,
"roadEverydayLimit":roadEverydayLimit,
"singleMinLimit":singleMinLimit,
"singleMaxLimit":singleMaxLimit,
"startHour":startHour,
"endHour":endHour,
"params":params
};
}
</script>
</body>
</html>

666
jhboss/views/road_pool.html Normal file
View File

@@ -0,0 +1,666 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/filter.js"></script>
<style type="text/css">
.road-pool-record, .edit-road-pool {
overflow-x: hidden;
}
.add-road-pool-button {
margin-bottom: 10px;
}
.edit-road-pool {
margin-top: 20px;
}
.edit-road-pool span {
display: inline-block;
width: 120px;
}
.modal-body-road-pool div {
margin-bottom: 20px;
}
.road-pool-name-error,
.road-pool-code-error {
color: red;
margin-left: 10px;
}
.edit-road-search {
border-bottom: 1px solid #e7e7e7;
margin-bottom: 10px;
}
.edit-road-search div {
display: inline-block;
margin-right: 20px;
margin-bottom: 10px;
}
.all-choose, .all-not-choose {
display: inline-block;
text-align: center;
width: 50px;
height: 30px;
line-height: 30px;
border: 1px solid #ccc;
border-radius: 3px;
font-weight: normal;
margin-bottom: 5px;
}
.all-choose:hover, .all-not-choose:hover {
cursor: pointer;
background-color: #e7e7e7;
}
#choose-road-table-body th {
height: 30px;
}
.current_total_page span, .current_total_page span{
width: 10px;
}
.road-footer {
width: 86%;
position: fixed;
float: left;
bottom: 30px;
left: 14%;
height: 30px;
border: 1px solid #e7e7e7;
background-color: white;
box-sizing: border-box;
}
.road-footer .road-cannel-button, .road-footer .road-save-button {
display: inline-block;
margin-right: 15px;
margin-left: 5px;
width: 50px;
height: 28px;
border: 1px solid #e7e7e7;
box-sizing: border-box;
text-align: center;
line-height: 28px;
border-radius: 2px;
}
.road-cannel-button:hover, .road-save-button:hover {
cursor: pointer;
background-color: #e7e7e7;
}
.cut_page {
margin-bottom: 30px;
}
</style>
</head>
<body>
<div class="road-pool-record">
<div class="search">
<div>
<span>通道池名称:</span>
<input type="text" class="road-pool-name-search" value="" placeholder="模糊匹配">
</div>
<div>
<span>通道池编号:</span>
<input type="text" class="product-pool-name-search" value="" placeholder="模糊匹配">
</div>
<div>
<button type="button" class="btn btn-default road-pool-search">搜索</button>
</div>
</div>
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-road-pool-button">添加通道池</button>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>通道池名称</th>
<th>通道池编号</th>
<th>状态</th>
<th>通道池</th>
<th>操作</th>
</tr>
</thead>
<tbody id="road-pool-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="4">4</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
<div class="edit-road-pool">
<input type="hidden" value="" class="road-pool-code-hide">
<div class="edit-road-search">
<div>
通道名称:
<input type="text" class="road-name-search" value="" placeholder="模糊匹配">
</div>
<div>
产品名称:
<input type="text" class="road-product-name-search" value="" placeholder="模糊匹配">
</div>
<div>
支付类型:
<input type="text" class="road-pay-type-search" value="">
</div>
<div>
<button type="button" class="btn btn-default edit-road-search-button">搜索</button>
</div>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th><input type="checkbox" id="controller-all-checkbox"></th>
<th>序列号</th>
<th>通道名称</th>
<th>产品名称</th>
<th>支付类型</th>
<th>成本汇率</th>
<th>状态</th>
<th>通道总额度</th>
<th>每天限额</th>
<th>单笔区间</th>
<th>开放时间段</th>
<th>总流水</th>
<th>今日流水</th>
<th>总利润</th>
<th>今日利润</th>
<th>成功数/请求数</th>
<th hidden="hidden">通道uid</th>
</tr>
</thead>
<tbody id="choose-road-table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count_1">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page" id="current_page">0</span>/<span class="total_page" id="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" id="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<div class="road-footer">
<word class="road-cannel-button">取消</word>
<word class="road-save-button">保存</word>
</div>
</div>
<!-- 模态框 -->
<div class="modal fade" id="roadPoolModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="addroadPoolButton">添加通道池</h4>
</div>
<div class="modal-body modal-body-road-pool">
<div>
<span>通道池名称:</span>
<input type="text" value="" placeholder="" class="road-pool-name">
<span class="road-pool-name-error"></span>
</div>
<div>
<span>通道池编号:</span>
<input type="text" value="" class="road-pool-code">
<span class="road-pool-code-error"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-road-pool" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-road-pool">保存</button>
</div>
</div>
</div>
</div>
<script>
//定义一个全局变量保存当前所有操作的通道uid
var roadUid = [];
//保存前端操作删除的通道uid
var deleteRoadUid = [];
$(function() {
$(".road-pool-code-hide").val("");
$(".edit-road-pool").hide();
showRoadPoolRecord(getRoadPoolCutPagevalues());
});
$(".add-road-pool-button").click(function() {
$(".road-pool-name").val("");
$(".road-pool-code").val("");
$(".road-pool-name-error").html("");
$(".road-pool-code-error").html("");
$("#roadPoolModal").modal();
});
$(".save-road-pool").click(function() {
let roadPoolName = $(".road-pool-name").val();
let roadPoolCode = $(".road-pool-code").val();
$.ajax({
url: "/add/roadPool",
data: {
"roadPoolName":roadPoolName,
"roadPoolCode":roadPoolCode
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
alert(res.Msg);
} else {
alert("添加通道池成功");
$(".cancel-road-pool").trigger("click");
showRoadPoolRecord(getRoadPoolCutPagevalues());
}
}
});
});
function showRoadPoolRecord(dataJSON) {
// let dataJSON = getRoadCutPagevalues();
$.ajax({
url: "/get/roadPool",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
} else {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
let str = "";
for (let i = 0; i < res.RoadPoolInfoList.length; i ++) {
let v = res.RoadPoolInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.RoadPoolName + "</th>" + "<th>" + v.RoadPoolCode + "</th>" +
"<th>" + v.Status + "</th>" +"<th>" +
'<button type="button" value="' + v.RoadPoolCode +'" class="btn btn-default" onclick="editRoadPool(this.value);"><span>配置通道</span></button>' +
"</th>";
tmp = tmp.replace("unactive", "冻结").replace("active", "激活");
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.RoadPoolCode +'" class="btn btn-default" onclick="deleteRoadPool(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#road-pool-table-body").html(str);
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
function showRoadRecordList(dataJSON) {
$.ajax({
url: "/get/road",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
alert("系统异常,请稍后再试");
} else {
$(".road-name-search").val("");
$("#current_page").html(res.CurrentPage);
$("#total_page").html(res.TotalPage);
$("#display_count_1 option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$("#jump_page").val("");
$(".road-name-search").val("");
$(".road-product-name-search").val("");
$(".road-pay-type-search").val("");
let str = "";
for (let i = 0; i < res.RoadInfoList.length; i ++) {
let v = res.RoadInfoList[i];
let tmp = "<tr>" + "<th>" + '<input type="checkbox">' + "</th>" +
"<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.RoadName + "</th>" + "<th>" + v.ProductName + "</th>" +
"<th>" + v.PayType + "</th>" + "<th>" + v.BasicFee + "</th>" +
"<th>" + v.Status + "</th>" + "<th>" + v.TotalLimit + "</th>" +
"<th>" + v.TodayLimit + "</th>" + "<th>" + v.SingleMinLimit + "-" + v.SingleMaxLimit + "</th>" +
"<th>" + v.StarHour + "-" + v.EndHour + "</th>" + "<th>" + v.TotalIncome + "</th>" +
"<th>" + v.TodayIncome + "</th>" + "<th>" + v.TotalProfit + "</th>" +
"<th>" + v.TodayProfit + "</th>" + "<th>" + v.RequestSuccess + "/" + v.RequestAll + "</th>" +
"<th hidden='hidden'>" + v.RoadUid + "</th>";
tmp = tmp.replace("unactive", "冻结").replace("active", "激活");
str = str + tmp;
}
$("#choose-road-table-body").html(str);
signCheckbox(res.RoadPool);
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
}
function getRoadListCutPageValues() {
let displayCount = $("#display_count_1").val();
let currentPage = $("#current_page").html();
let totalPage = $("#total_page").html();
let jumpPage = $("#jump_page").val();
let roadName = $(".road-name-search").val();
let productName = $(".road-product-name-search").val();
let payType = $(".road-pay-type-search").val();
let roadPoolCode = $(".road-pool-code-hide").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage,
"roadName":roadName,
"productName":productName,
"payType":payType,
"roadPoolCode":roadPoolCode
};
}
function getRoadPoolCutPagevalues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let roadPoolName = $(".road-pool-name-search").val();
let roadPoolCode = $(".product-pool-name-search").val();
return dataJSON = {
"roadPoolName":roadPoolName,
"roadPoolCode":roadPoolCode,
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage
};
}
function editRoadPool(roadPoolCode) {
//每次进来,清空数组
roadUid = [];
deleteRoadUid = [];
$("#jump_page").val("");
$(".road-pool-code-hide").val(roadPoolCode);
$(".edit-road-pool").show();
$(".road-pool-record").hide();
let dataJSON = getRoadListCutPageValues();
showRoadRecordList(dataJSON);
}
function deleteRoadPool(roadPoolCode) {
if (!window.confirm("是否确认删除该项?")) {
return false;
}
$.ajax({
url: "/delete/roadPool",
data:{
"roadPoolCode":roadPoolCode
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
} else {
alert("删除成功");
showRoadPoolRecord(getRoadPoolCutPagevalues());
}
}
});
}
//给数组绑定一个删除remove函数
Array.prototype.remove = function(val) {
var index = this.indexOf(val);
if (index > -1) {
this.splice(index, 1);
}
};
//去重函数
function unique(uid) {
for (let i = 0; i < roadUid.length; i ++) {
if (roadUid[i] == uid) {
return true;
}
}
return false;
}
//将去重后的uid加入roadUid数组中
function PushUid(uid) {
if (!unique(uid)) {
roadUid.push(uid);
}
}
//判断uid是否存在deleteRoadUid
function ExistDeleteRoadUid(uid) {
for (let i = 0; i < deleteRoadUid.length; i ++) {
if (deleteRoadUid[i] == uid) {
return true;
}
}
return false;
}
// 标记已经被选的checkbox
function signCheckbox(roadPoolInfo) {
let uids = roadPoolInfo.RoadUidPool.split("||");
//需要将uid保存到roaduid全局数组中保存
for (let i = 0; i < uids.length; i ++) {
if (!unique(uids[i]) && !ExistDeleteRoadUid(uids[i])) {
roadUid.push(uids[i])
}
}
$("#choose-road-table-body tr input:checkbox").each(function() {
let uid = $(this).parent().parent().children().eq(16).text();
for (let i = 0; i < roadUid.length; i ++) {
if (uid == roadUid[i]) {
$(this).prop('checked', 'true');
break;
}
}
});
}
//点击最上面的checkbox做出的逻辑
$("#controller-all-checkbox").click(function() {
let flag;
$(".thead-dark input[type='checkbox']").each(function() {
flag = $(this).prop("checked");
});
if (flag == true) {
$("#choose-road-table-body input:checkbox").each(function() {
$(this).prop('checked', 'true');
let uid = $(this).parent().parent().children().eq(16).text();
PushUid(uid);
deleteRoadUid.remove(uid);
});;
} else {
$("#choose-road-table-body input:checkbox").each(function() {
$(this).removeAttr('checked');
let uid = $(this).parent().parent().children().eq(16).text();
roadUid.remove(uid);
if (!ExistDeleteRoadUid(uid)) {
deleteRoadUid.push(uid);
}
})
}
});
//监听checkbox的事件如果有取消选择的remove数组
$("#choose-road-table-body").on("change", "input:checkbox", function() {
let uid = $(this).parent().parent().children().eq(16).text();
if ($(this).prop('checked')) {
PushUid(uid);
deleteRoadUid.remove(uid);
} else {
roadUid.remove(uid);
if (!ExistDeleteRoadUid(uid)) {
deleteRoadUid.push(uid);
}
}
});
$(".road-cannel-button").click(function() {
$(".road-pool-record").show();
$(".edit-road-pool").hide();
});
$(".road-save-button").click(function() {
let roadPoolCode = $(".road-pool-code-hide").val();
$.ajax({
url: "/save/roadUid",
data: {
"roadPoolCode":roadPoolCode,
"roadUid":roadUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code != 200) {
alert("更改通道池失败")
} else {
alert("更改通道池通道成功");
$(".edit-road-pool").hide();
$(".road-pool-record").show();
}
},
error: function(res) {
alert("系统异常,请稍后再试");
}
});
});
$(".edit-road-search-button").click(function() {
let dataJSON = getRoadListCutPageValues();
showRoadRecordList(dataJSON);
});
$(".road-pool-search").click(function() {
let dataJSON = getRoadPoolCutPagevalues();
showRoadPoolRecord(dataJSON);
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getRoadPoolCutPagevalues();
showRoadPoolRecord(dataJSON);
});
$("#display_count_1").change(function() {
$(".thead-dark input[type='checkbox']").each(function(){
$(this).removeAttr('checked');
});
let dataJSON = getRoadListCutPageValues();
showRoadRecordList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let flag = $(".road-pool-code-hide").val();
if (flag.length > 0) {
$(".thead-dark input[type='checkbox']").each(function(){
$(this).removeAttr('checked');
});
let dataJSON = getRoadListCutPageValues();
if (dataJSON["currentPage"] == 1) {
return;
}
// saveNowRoadUid();
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) -1;
showRoadRecordList(dataJSON);
} else {
let dataJSON = getRoadPoolCutPagevalues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) -1;
showRoadPoolRecord(dataJSON);
}
});
//点击下一页的按钮时
$(".next_page").click(function() {
let flag = $(".road-pool-code-hide").val();
if (flag.length > 0) {
$(".thead-dark input[type='checkbox']").each(function(){
$(this).removeAttr('checked');
});
let dataJSON = getRoadListCutPageValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
// saveNowRoadUid();
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
showRoadRecordList(dataJSON);
} else {
let dataJSON = getRoadPoolCutPagevalues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
showRoadPoolRecord(dataJSON);
}
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let flag = $(".road-pool-code-hide").val();
if (flag.length > 0) {
$(".thead-dark input[type='checkbox']").each(function(){
$(this).removeAttr('checked');
});
let dataJSON = getRoadListCutPageValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
// saveNowRoadUid();
showRoadRecordList(dataJSON);
} else {
let dataJSON = getRoadPoolCutPagevalues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
showRoadPoolRecord(dataJSON);
}
});
</script>
</body>
</html>

View File

@@ -0,0 +1,13 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/filter.js"></script>
</head>
<body>
<h1>利润统计</h1>
</body>
</html>

263
jhboss/views/role.html Normal file
View File

@@ -0,0 +1,263 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>商户后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/filter.js"></script>
<style>
.role-name-add {
margin-left: 30px;
vertical-align: bottom;
}
.role-remark {
margin-left: 30px;
margin-top: 20px;
width: 190px;
}
.role-remark-word {
vertical-align: center;
}
.role-name-error {
margin-left: 20px;
color: red;
}
</style>
</head>
<body>
<div class="search">
<div>
<span>角色名称</span>
<input type="text" class="role-name" value="" placeholder="模糊匹配">
</div>
<div>
<button type="button" class="btn btn-default role-menu-search">搜索</button>
</div>
</div>
<div class="add-menu">
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-button" data-toggle="modal" data-target="#addRoleModal">创建新角色</button>
</div>
<!-- 创建新角色的模态框 -->
<div class="modal fade" id="addRoleModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="addPowerButton">添加角色</h4>
</div>
<div class="modal-body modal-body-menu">
<div>
<span>角色名称: </span>
<input type="text" class="role-name-add">
<span class="role-name-error"></span>
</div>
<div>
<span class="role-remark-word">角色描述:</span>
<textarea class="role-remark"></textarea>
<span class="role-remark-error"></span>
</div>
<div class="input-group">
<span class="role-save-success"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-menu" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-menu">保存</button>
</div>
</div>
</div>
</div>
<!-- 模态框end -->
<!-- 权限配置模态框 -->
<div class="edit-role-modal"></div>
<!-- 权限模态框 end -->
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>角色名称</th>
<th>角色标识号</th>
<th>备注</th>
<th>创建时间</th>
<th>编辑</th>
</tr>
</thead>
<tbody id="menu_table_body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<script>
function getRolePageData() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
let roleName = $(".role-name").val();
let roleNameAdd = $(".role-name-add").val();
let roleRemark = $(".role-remark").val();
return {"displayCount":displayCount, "currentPage":currentPage, "totalPage":totalPage, "jumpPage":jumpPage,
"roleName":roleName, "roleRemark":roleRemark, "roleNameAdd":roleNameAdd};
}
function Ajax(dataJSON, urlHost) {
$.ajax({
url: urlHost,
async:false,
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
return;
}
if(urlHost.indexOf("/get/role") != -1) {
showRoleList(res);
} else if (urlHost.indexOf("/add/role") != -1) {
addRole(res);
} else if (urlHost.indexOf("/delete/role") != -1) {
if (res.Code == 200) {
Ajax(dataJSON, "/get/role");
}
}
},
error: function() {
alert("系统异常,请稍后再试");
}
});
}
function deleteRole(roleUid) {
if (!window.confirm("是否确定删除?")) {
return;
}
let dataJSON = getRolePageData();
dataJSON["roleUid"] = roleUid;
Ajax(dataJSON, "/delete/role");
}
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getRolePageData();
Ajax(dataJSON, "/get/role");
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getRolePageData();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
Ajax(dataJSON, "/get/role");
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getRolePageData();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
Ajax(dataJSON, "/get/role");
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getRolePageData();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
Ajax(dataJSON, "/get/role");
});
function addRole(res) {
let role = $(".role-name-add").val();
if (res.Code == 200) {
$(".role-save-success").html(role + ":添加成功");
$(".cancel-menu").trigger('click');
Ajax(getRolePageData(), "/get/role");
} else {
$(res.Key).html(res.Msg);
}
}
$(".save-menu").click(function() {
let roleName = $(".role-name").val();
let roleNameAdd = $(".role-name-add").val();
let roleRemark = $(".role-remark").val();
$(".role-name-error").html("");
$(".role-remark-error").html("");
if (roleNameAdd.length == 0) {
$(".role-name-error").html("*角色名称不能为空");
}
Ajax({"roleName":roleName, "roleRemark":roleRemark, "roleNameAdd":roleNameAdd},"/add/role");
});
function showRoleList(res) {
if (res.Code != 200) {
alert("获取数据失败");
return;
}
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
let str = "";
for (let i = 0; i < res.RoleInfoList.length; i ++) {
let v = res.RoleInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.RoleName + "</th>" + "<th>" + v.RoleUid + "</th>" +
"<th>" + v.Remark + "</th>" + "<th>" + v.CreateTime + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.RoleUid +'" class="btn btn-default" onclick="editRole(this.value);"><span class="glyphicon glyphicon-pencil"></span></button>' +
'<button type="button" value="' + v.RoleUid +'" class="btn btn-default" onclick="deleteRole(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#menu_table_body").html(str);
}
$(".role-menu-search").click(function() {
Ajax(getRolePageData(), "/get/role");
$(".edit-role-modal").load("/jhboss/edit_role.html");
});
$(function() {
Ajax(getRolePageData(), "/get/role");
$(".edit-role-modal").load("/jhboss/edit_role.html");
});
</script>
</body>
</html>

View File

@@ -0,0 +1,342 @@
<!doctype html>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<script src="../static/js/jquery.ui.min.js"></script>
<script src="../static/js/filter.js"></script>
<style>
.first-input-group .basic-url, .router-input-group .basic-url {
width: 210px;
}
.pre-menu-error ,.second-menu-error ,.second-router-error {
padding-left: 20px;
color: red
}
</style>
</head>
<body>
<!-- 添加菜单的模态框 -->
<div class="modal fade" id="addMenuModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" data-keyboard="false" data-backdrop="static">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="myModalLabel">添加二级菜单</h4>
</div>
<div class="modal-body modal-body-menu">
<div class="input-group pre-input-group">
<span class="input-group-addon basic-addon">父级菜单</span>
<div class="select-content">
</div>
<span class="pre-menu-error"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">二级菜单</span>
<input type="text" class="form-control basic-url second-menu-content">
<span class="second-menu-error"></span>
</div>
<div class="input-group first-input-group">
<span class="input-group-addon basic-addon">菜单路由</span>
<input type="text" class="form-control basic-url router-url">
<span class="second-router-error"></span>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default cancel-menu" data-dismiss="modal">取消</button>
<button type="button" class="btn btn-primary save-menu">保存</button>
</div>
</div>
</div>
</div>
<div class="search">
<div>
<span>一级菜单</span>
<input type="text" class="first-menu-serach" placeholder ="模糊匹配">
</div>
<div>
<span>二级菜单</span>
<input type="text" class="second-menu-serach" value="" placeholder="模糊匹配">
</div>
<div>
<button type="button" class="btn btn-default second-menu-search">搜索</button>
</div>
</div>
<div class="add-menu">
<button type="button" class="btn btn-default btn-xs glyphicon glyphicon-plus add-button" data-toggle="modal" data-target="#addMenuModal">添加二级菜单</button>
<strong>在添加二级菜单时,确保对应的一级菜单已经创建好!</strong>
</div>
<div class="menu-table">
<table>
<thead class="thead-dark">
<tr>
<th>序列号</th>
<th>父级菜单</th>
<th>父级菜单排序号</th>
<th>父级菜单识别号</th>
<th>二级菜单顺序</th>
<th>二级菜单识别号</th>
<th>二级菜单</th>
<th>二级菜单路由</th>
<th>操作</th>
</tr>
</thead>
<tbody id="menu_table_body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="20">20</option>
<option value="30">30</option>
<option value="50">50</option>
<option value="100">100</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">1</span>/<span class="total_page">2</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
<script>
//获取搜索框的数据,和分页的基础数据
function getCutPageData() {
let firstMenuSerach = $(".first-menu-serach").val();
let secondMenuSerach = $(".second-menu-serach").val();
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return {"displayCount":displayCount, "currentPage":currentPage, "totalPage":totalPage, "jumpPage":jumpPage, "firstMenuSerach": firstMenuSerach, "secondMenuSerach":secondMenuSerach};
}
$(".second-menu-search").click(function() {
showSecondMenuList(getCutPageData());
});
//刚开始加载页面的时候,执行的一系列操作
$(document).ready(function() {
showSecondMenuList(getCutPageData());
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
showSecondMenuList(getCutPageData());
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
showSecondMenuList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
showSecondMenuList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPageData();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
showSecondMenuList(dataJSON);
});
$(".search div button").click(function() {
let dataJSON = getCutPageData();
showSecondMenuList(dataJSON);
});
function Ajax(secondMenuUid, hostUrl) {
$.ajax({
url: hostUrl,
data: {
"secondMenuUid": secondMenuUid
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == 200){
showSecondMenuList();
} else {
alert("参数传入有误");
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
//提升菜单的顺序
function menuUp(secondMenuUid) {
Ajax(secondMenuUid, "/up/secondMenu");
}
//降低菜单的顺序
function menuDown(secondMenuUid) {
Ajax(secondMenuUid, "/down/secondMenu");
}
//删除菜单
function menuDelete(secondMenuUid) {
if (!window.confirm("是否确定删除该项?")) {
return;
}
Ajax(secondMenuUid, "/delete/secondMenu");
}
//此函数的作用,是在每行的最后一格,加入可操作的按钮图标
function showSecondMenuList(dataJSON) {
$.ajax({
url: "/get/secondMenu",
data: dataJSON,
success: function(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
if (res.Code == -1) {
alert(res.Msg);
}else if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
//将先前的内容清空
$("#menu_table_body").html("");
let str = "";
for(let i = 0; i < res.SecondMenuList.length; i ++) {
let v = res.SecondMenuList[i];
let secondMenus = v.SecondMenu.split("|");
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" +
"<th>" + v.FirstMenu + "</th>" + "<th>" + v.FirstMenuOrder + "</th>" +
"<th>" + v.FirstMenuUid + "</th>" + "<th>" + v.MenuOrder + "</th>" + "<th>" + v.SecondMenuUid + "</th>" +
"<th>" + v.SecondMenu + "</th>" + "<th>" + v.SecondRouter + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.SecondMenuUid +'" class="btn btn-default" onclick="menuUp(this.value);"><span class="glyphicon glyphicon-arrow-up"></span></button>' +
'<button type="button" value="' + v.SecondMenuUid +'" class="btn btn-default" onclick="menuDown(this.value);"><span class="glyphicon glyphicon-arrow-down"></span></button>' +
'<button type="button" value="' + v.SecondMenuUid +'" class="btn btn-default" onclick="menuDelete(this.value);"><span class="glyphicon glyphicon-trash"></span></button>' +
'</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#menu_table_body").append(str);
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
$(".save-menu").click(function() {
clearMenuError();
let preMenuUid = $("#pre-menu").val();
if (preMenuUid == "none") {
$(".pre-menu-error").text("*父级菜单不能为空");
return;
}
let secondMenu = $(".second-menu-content").val();
let secondRouter = $(".router-url").val();
if (secondMenu.length == 0) {
$(".second-menu-error").text("*二级菜单不能为空");
return;
}
if (secondRouter.length == 0) {
$(".second-router-error").text("*二级菜单路由不能为空");
return;
}
$.ajax({
url: "/add/secondMenu",
data: {
"preMenuUid": preMenuUid,
"secondMenu": secondMenu,
"secondRouter": secondRouter
},
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
$("." + res.Key).text(res.Msg);
} else {
$(".cancel-menu").trigger('click');
showSecondMenuList();
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
});
function clearMenuError() {
$(".pre-menu-error").text("");
$(".second-menu-error").text("");
$(".second-router-error").text("");
}
function selectContent() {
$.ajax({
url: "/get/firstMenu",
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == 200) {
let str = '<select id="pre-menu">' + '<option value="none">请选择父菜单</option>';
for (let i = 0; i < res.MenuList.length; i ++) {
let m = res.MenuList[i];
str = str + '<option value="' + m.MenuUid + '">' + m.FirstMenu + '</option>' ;
}
str = str + '</select>';
$(".select-content").html(str);
} else {
}
},
error: function() {
alert("系统异常,请稍后重试");
}
});
}
$(".add-button").click(function() {
$(".basic-url").val("");
$(".select-content").html("");
clearMenuError();
selectContent();
});
</script>
</body>
</html>

View File

@@ -0,0 +1,131 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/filter.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.search label {
font-weight: normal;
padding-right: 20px;
}
.order-record .search div {
height: 20px;
}
#search-order-supplier-name, #select-merchant-name,#search-notify-pay-type {
height: 30px;
line-height: 30px;
}
</style>
</head>
<body>
<div class="self_notify">
<div class="search form-inline">
<label for="">
<span>开始时间:</span>
<input type="text" name="" id="search-notify-start-time" class="start-time" value="">
</label>
<label for="">
<span>结束时间:</span>
<input type="text" name="" id="search-notify-end-time" class="end-time" value="">
</label>
<label for="">
<span>商户名称:</span>
<select name="" id="select-merchant-name">
</select>
</label>
<label for="">
<span>商户名称:</span>
<select name="" id="search-order-supplier-name">
</select>
</label>
<label for="">
<span>回调类型:</span>
<select name="" id="notify-type">
<option value="">请选择</option>
<option value="order">支付回调</option>
<option value="payfor">代付回调</option>
</select>
</label>
<label for="">
<input type="button" class="btn btn-primary" value="开始" onclick="startNotify()">
</label>
</div>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">回调日志</h3>
</div>
<div class="panel-body" style="color: red;">
</div>
</div>
<script>
function getSearchValues() {
let startTime = $("#search-notify-start-time").val();
let endTime = $("#search-notify-end-time").val();
let merchantUid = $("#select-merchant-name").val();
let notifyType = $("#notify-type").val();
return {
"startTime": startTime,
"endTime":endTime,
"merchantUid":merchantUid,
"notifyType":notifyType
};
}
function sendNotify(bankOrderId) {
$.ajax({
url:"/self/send/notify",
data: {
"bankOrderId":bankOrderId
},
success: function () {
}
});
}
function startNotify() {
if (!confirm("是否开始执行批量回调操作")){
return;
}
let dataJSON = getSearchValues();
$.ajax({
url: "/get/notify/bankOrderId/list",
data: dataJSON,
success: function (res) {
if (res.Code == 404){
window.parent.location = "/login.html";
} else if (res.Code == 200) {
$(".panel-body").html("回调处理中......");
for (let i = 0; i < res.NotifyIdList.length; i++) {
sendNotify(res.NotifyIdList[i]);
$(".panel-body").html("回调完毕");
}
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
$(function () {
let day = new Date(new Date().getTime() - 86400000);
let s = dateFtt("yyyy-MM-dd hh:mm:ss", day);
$("#search-notify-start-time").val(s);
setSupplier();
setMerchant();
/*let dataJSON = getOrderSearchValues();
AjaxOrderList(dataJSON);*/
});
</script>
</body>
</html>

View File

@@ -0,0 +1,285 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link src="../static/lib/bootstrap/css/bootstrap.min.css">
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/js/filter.js"></script>
<style>
.panel .panel-body input {
width: 50%;
}
.algin-right {
text-align: right;
}
table tr td {
display: inline-block;
width: 50%;
}
.panel-heading:hover {
cursor: pointer;
}
.panel-footer {
padding-left: 45%;
}
#modal-search {
height: 40px;
position: relative;
}
#modal-search button {
position: absolute;
right: 10px;
bottom: 5px;
}
</style>
</head>
<body>
<div class="panel panel-info">
<div class="panel-heading" onclick="bankList({});">
<span class="panel-title">选择下发银行卡</span>
<span class="glyphicon glyphicon-search"></span>
</div>
<table class="table table-responsive table-bordered">
<input type="text" hidden="hidden" id="bank-uid" value="">
<thead>
<tr>
<td class="algin-right">银行名称</td><td><span id="bank-name">未选择</span></td>
</tr>
</thead>
<tbody>
<tr>
<td class="algin-right">开户名</td><td><span id="account-name">未选择</span></td>
</tr>
<tr>
<td class="algin-right">卡号</td><td><span id="card-number">未选择</span></td>
</tr>
<tr>
<td class="algin-right">开户卡类型</td>
<td>
<input type="radio" name="card-type" value="private" checked>对私卡
<input type="radio" name="card-type" value="public">对公卡
</td>
</tr>
<tr>
<td class="algin-right">开户行所在地</td><td><span id="bank-address">未选择</span></td>
</tr>
<tr>
<td class="algin-right">开户人手机号码</td><td><span id="phone">未选择</span></td>
</tr>
<tr>
<td class="algin-right">下发金额</td><td><input type="text" value="" id="payfor-amount"><span></span></td>
</tr>
</tbody>
</table>
<div class="panel-footer">
<input type="button" class="btn btn-default" name="" id="" value="取消">
<input type="button" class="btn btn-primary" value="提交" id="submit">
</div>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="menu-table table-responsive">
<table>
<div id="modal-search">
<input type="text" hidden="hidden" id="modal-search-hidden" value="">
搜索:<input type="text" value="" id="modal-search-input" placeholder="名称">
<button type="button" class="btn btn-warning" data-dismiss="modal" id="cannel">取消</button>
</div>
<thead class="thead-dark" id="table-head">
</thead>
<tbody id="table-body">
</tbody>
</table>
</div>
<!-- 分页插件 -->
<div class="cut_page">
<li>
每页显示
<select id="display_count">
<option value="30">20</option>
<option value="50">30</option>
<option value="100">50</option>
</select>
</li>
<li class="current_total_page"><span class="current_page">0</span>/<span class="total_page">0</span></li>
<li class="pre_page">上一页</li>
<li class="next_page">下一页</li>
<li class="jump_page">跳转 <input type="text" name="jump_page" value=""> <button type="button" class="btn btn-default">Go</button></li>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function getCutPagesValues() {
let displayCount = $("#display_count").val();
let currentPage = $(".current_page").html();
let totalPage = $(".total_page").html();
let jumpPage = $(".jump_page input").val();
return {
"displayCount":displayCount,
"currentPage":currentPage,
"totalPage":totalPage,
"jumpPage":jumpPage
};
}
function setOrderCutPageValues(res) {
$(".current_page").html(res.CurrentPage);
$(".total_page").html(res.TotalPage);
$("#display_count option").each(function() {
if ($(this).text() == res.DisplayCount) {
$(this).attr('selected', true);
}
});
$(".jump_page input").val("");
}
function clearModal() {
$("#table-head").html("");
$("#table-body").html("");
}
function randBankCardList(res) {
clearModal();
setOrderCutPageValues(res);
let head = "<tr>" + "<th>" + "序号" + "</th>" + "<th>" + "开户名" + "</th>" + "<th>" + "银行名称" + "</th>" +
"<th>" + "卡号" + "</th>" + "<th>" + "手机号码" + "</th>" + "<th>" + "选择" + "</th>";
$("#table-head").html(head);
let str = "";
for (let i = 0; i < res.BankCardInfoList.length; i ++) {
let v = res.BankCardInfoList[i];
let tmp = "<tr>" + "<th>" + (res.StartIndex+i+1) + "</th>" + "<th>" + v.AccountName + "</th>" + "<th>" + v.BankName + "</th>" +
"<th>" + v.BankNo + "</th>" + "<th>" + v.PhoneNo + "</th>";
tmp = tmp + "<th>" + '<div class="btn-group" role="group" aria-label="...">' +
'<button type="button" value="' + v.Uid +'" class="btn btn-default" onclick="saveBankCard(this.value);">' + "确定" +'</button>';
tmp = tmp + '</div>' + "</th>" + "</tr>";
str = str + tmp;
}
$("#table-body").html(str);
$("#myModal").modal();
}
function saveBankCard(uid) {
$("#cannel").trigger('click');
$.ajax({
url:"/get/oneBankCard",
data: {
"uid":uid
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
let v = res.BankCardInfoList[0];
$("#bank-uid").val(v.Uid);
$("#bank-name").html(v.BankName);
$("#account-name").html(v.AccountName);
$("#bank-address").html(v.BankAddress);
$("#card-number").html(v.BankNo);
$("#phone").html(v.PhoneNo);
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
}
$("#submit").click(function () {
let bankUid = $("#bank-uid").val();
let bankName = $("#bank-name").html();
let accountName = $("#account-name").html();
let bankNo = $("#card-number").html();
let cardType = $("input[name=\"card-type\"]").val();
let bankAddress = $("#bank-address").html();
let phone = $("#phone").html();
let payForAmount = $("#payfor-amount").val();
$.ajax({
url: "/add/self/payfor",
data:{
"bankUid":bankUid,
"bankName":bankName,
"accountName":accountName,
"bankNo":bankNo,
"cardType":cardType,
"bankAddress":bankAddress,
"phone":phone,
"payForAmount":payForAmount
},
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1){
alert(res.Msg);
} else {
alert("已经提交成功,请耐心等待结果");
loadMainContent("/payfor_record.html.html")
}
},
error: function () {
alert("系统异常,请稍后再试");
}
});
});
//当每页显示数更改后,执行的操作
$("#display_count").change(function() {
let dataJSON = getCutPagesValues();
bankList(dataJSON);
});
//点击上一页的按钮
$(".pre_page").click(function() {
let dataJSON = getCutPagesValues();
if (dataJSON["currentPage"] == 1) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) - 1;
bankList(dataJSON);
});
//点击下一页的按钮时
$(".next_page").click(function() {
let dataJSON = getCutPagesValues();
if (dataJSON["currentPage"] == dataJSON["totalPage"]) {
return;
}
dataJSON["currentPage"] = parseInt(dataJSON["currentPage"]) + 1;
bankList(dataJSON);
});
//点击跳转那一页的按钮
$(".jump_page button").click(function() {
let dataJSON = getCutPagesValues();
if (dataJSON["jumpPage"].length <= 0) {
return;
}
bankList(dataJSON);
});
function bankList(dataJSON) {
$.ajax({
url: "/get/bankCard",
data: dataJSON,
success: function(res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
randBankCardList(res);
}
},
error:function() {
alert("系统异常,请稍后再试");
}
});
$("#myModal").modal();
}
</script>
</body>
</html>

View File

@@ -0,0 +1,170 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>管理后台</title>
<link rel="stylesheet" type="text/css" href="../static/css/basic.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../static/lib/bootstrap-datetimepicker/css/bootstrap-datetimepicker.min.css">
<script src="../static/js/filter.js"></script>
<script src="../static/js/jquery.min.js"></script>
<script src="../static/lib/bootstrap/js/bootstrap.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/bootstrap-datetimepicker.min.js"></script>
<script src="../static/lib/bootstrap-datetimepicker/js/locales/bootstrap-datetimepicker.zh-CN.js"></script>
<script src="../static/js/basic.js"></script>
<style>
.panel-body label {
font-weight: normal;
margin-right: 10px;
}
#select-self-name {
height: 30px;
line-height: 30px;
}
</style>
</head>
<body>
<div class="panel panel-danger">
<div class="panel-heading">
<h3 class="panel-title">自定义商户金额操作</h3>
</div>
<div class="panel-body">
<label for="">
<span>操作账户:</span>
<select name="" id="select-self-name">
</select>
</label>
<label for="">
<span>操作类型:</span>
<select name="" id="select-self-type">
<option value="">请选择</option>
<option value="plus_amount">加款</option>
<option value="sub_amount">减款</option>
<option value="freeze_amount">冻结</option>
<option value="unfreeze_amount">解冻</option>
</select>
</label>
<label for="">
<span>操作金额:</span>
<input type="text" id="select-self-amount" placeholder="单位:元">
</label>
<input type="button" class="btn btn-primary" value="执行" onclick="selfOperateAccount();">
</div>
</div>
<div class="panel panel-success">
<div class="panel-heading">
<h3 class="panel-title">操作结果</h3>
</div>
<div class="panel-body">
<table class="table table-responsive table-bordered">
<thead>
<tr>
<td class="algin-right">结果</td><td><span id="operate-result">待处理......</span></td>
</tr>
</thead>
<tbody>
<tr>
<td class="algin-right">账户余额</td><td><span id="balance"> </span></td>
</tr>
<tr>
<td class="algin-right">结算金额</td><td><span id="settle-amount"></span></td>
</tr>
<tr>
<td class="algin-right">在途金额</td><td><span id="wait-amount"></span></td>
</tr>
<tr>
<td class="algin-right">冻结金额</td><td><span id="freeze-amount"></span></td>
</tr>
<tr>
<td class="algin-right">押款金额</td><td><span id="loan-amount"></span></td>
</tr>
<tr>
<td class="algin-right">代付中金额</td><td><span id="payfor-amount"></span></td>
</tr>
</tbody>
</table>
</div>
</div>
<script>
function getValues() {
let accountUid = $("#select-self-name").val();
let accountOperator = $("#select-self-type").val();
let amount = $("#select-self-amount").val();
return {
"accountUid":accountUid,
"accountOperator":accountOperator,
"amount":amount
};
}
function clearResult() {
$("#operate-result").html("待处理......");
$("#balance").html("");
$("#settle-amount").html("");
$("#wait-amount").html("");
$("#freeze-amount").html("");
$("#loan-amount").html("");
$("#payfor-amount").html("");
}
function randResult(res) {
let account = res.AccountList[0];
$("#operate-result").html(res.Msg);
$("#balance").html(account.Balance);
$("#settle-amount").html(account.SettleAmount);
$("#wait-amount").html(account.WaitAmount);
$("#freeze-amount").html(account.FreezeAmount);
$("#loan-amount").html(account.LoanAmount);
$("#payfor-amount").html(account.PayforAmount);
}
function selfOperateAccount() {
clearResult();
let dataJSON = getValues();
$.ajax({
url:"/account/operator",
data: dataJSON,
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else if (res.Code == -1) {
$("#operate-result").html(res.Msg);
} else {
randResult(res);
alert("操作成功,请仔细检查商户的资金状态");
}
},
error: function () {
alert("系统异常,请稍后再试")
}
});
}
$("#select-self-name").change(function () {
clearResult();
});
$("#select-self-type").click(function () {
clearResult();
});
function setAccount() {
$.ajax({
url: "/get/all/account",
success: function (res) {
if (res.Code == 404) {
window.parent.location = "/login.html";
} else {
let str = '<option value="' + "" + '">' + "请选择" + '</option>';
for (let i = 0; i < res.AccountList.length; i ++) {
let account = res.AccountList[i];
str = str + '<option value="' + account.AccountUid + '">' + account.AccountName + '</option>';
}
$("#select-self-name").html(str);
}
}
});
}
$(function () {
setAccount();
});
</script>
</body>
</html>