2023-09-19 10:55:46 +08:00
|
|
|
|
<template>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<section class="content">
|
|
|
|
|
<div class="box box-primary">
|
|
|
|
|
<div class="box-body">
|
|
|
|
|
<!-- Content Header (Page header) -->
|
|
|
|
|
<section class="content-header">
|
|
|
|
|
<h1 id="regionTitle">充值H5配置</h1>
|
|
|
|
|
</section>
|
|
|
|
|
<!-- .content -->
|
|
|
|
|
<div id="regionTable"></div>
|
|
|
|
|
<div id="toolbar">
|
|
|
|
|
<div class="col-sm-12">
|
|
|
|
|
<label for="searchType"
|
2024-12-05 15:20:40 +08:00
|
|
|
|
class="col-sm-2 control-label">地区:</label>
|
|
|
|
|
<div class="col-sm-8">
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<select name="searchType"
|
|
|
|
|
id="searchType"
|
|
|
|
|
data-btn-class="btn-warning"
|
|
|
|
|
class="form-control">
|
|
|
|
|
</select>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-12-05 15:20:40 +08:00
|
|
|
|
<div class="col-sm-2">
|
|
|
|
|
<button id="btnSearch" class="btn btn-default">
|
|
|
|
|
<i class="glyphicon glyphicon-search"></i>查询
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</div>
|
2024-12-05 15:20:40 +08:00
|
|
|
|
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</div>
|
|
|
|
|
<div class="box-body"
|
|
|
|
|
style="height:150%;">
|
|
|
|
|
<!-- Content Header (Page header) -->
|
|
|
|
|
<section class="content-header">
|
|
|
|
|
<h1 id="channelTitle">渠道和档位配置</h1>
|
|
|
|
|
</section>
|
|
|
|
|
<!-- .content -->
|
|
|
|
|
<div id="channelTable"></div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="modal fade"
|
|
|
|
|
id="regionModal"
|
|
|
|
|
tabindex="-1"
|
|
|
|
|
role="dialog"
|
|
|
|
|
aria-labelledby="modalLabel">
|
|
|
|
|
<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">×</span>
|
|
|
|
|
</button>
|
|
|
|
|
<h4 class="modal-title"
|
|
|
|
|
id="regionModalLabel">地区信息编辑</h4>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
|
|
|
|
<form class="form-horizontal">
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="code"
|
|
|
|
|
id="code" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="type"
|
|
|
|
|
id="type" />
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="name"
|
|
|
|
|
class="col-sm-3 control-label">使用地区:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
readonly
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="name">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-12-05 15:20:40 +08:00
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="currency"
|
|
|
|
|
class="col-sm-3 control-label">货币:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
readonly
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="currency">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="rate"
|
2024-12-05 15:20:40 +08:00
|
|
|
|
class="col-sm-3 control-label">兑USD汇率:</label>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="rate">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="isRegionEnabled"
|
|
|
|
|
class="col-sm-3 control-label">地区是否生效:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<select name="isRegionEnabled"
|
|
|
|
|
id="isRegionEnabled"
|
|
|
|
|
class="form-control validate[required]">
|
|
|
|
|
<option value="1"
|
|
|
|
|
selected>是</option>
|
|
|
|
|
<option value="0">否</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="isRegionRecommend"
|
|
|
|
|
class="col-sm-3 control-label">代儲是否展示"推荐":</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<select name="isRegionRecommend"
|
|
|
|
|
id="isRegionRecommend"
|
|
|
|
|
class="form-control validate[required]">
|
|
|
|
|
<option value="1"
|
|
|
|
|
selected>是</option>
|
|
|
|
|
<option value="0">否</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="regionSeq"
|
|
|
|
|
class="col-sm-3 control-label">排序:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="regionSeq">
|
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</form>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="modal-footer">
|
|
|
|
|
<button type="button"
|
|
|
|
|
class="btn btn-default"
|
|
|
|
|
data-dismiss="modal">取消</button>
|
|
|
|
|
<button type="button"
|
|
|
|
|
class="btn btn-primary"
|
|
|
|
|
id="regionSave">确认编辑</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="modal fade"
|
|
|
|
|
id="channelModal"
|
|
|
|
|
tabindex="-1"
|
|
|
|
|
role="dialog"
|
|
|
|
|
aria-labelledby="modalLabel">
|
|
|
|
|
<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">×</span>
|
|
|
|
|
</button>
|
|
|
|
|
<h4 class="modal-title"
|
|
|
|
|
id="channelModalLabel">充值渠道编辑</h4>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="modal-body">
|
|
|
|
|
<form class="form-horizontal">
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="channelCode"
|
|
|
|
|
id="channelCode" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="regionCode"
|
|
|
|
|
id="regionCode" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="channelCurrency"
|
|
|
|
|
id="channelCurrency" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="usdRate"
|
|
|
|
|
id="usdRate" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="payChannel"
|
|
|
|
|
id="payChannel" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="paymentType"
|
|
|
|
|
id="paymentType" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="chargeSize"
|
|
|
|
|
id="chargeSize" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="isSpecial"
|
|
|
|
|
id="isSpecial" />
|
|
|
|
|
<input type="hidden"
|
|
|
|
|
name="specialValues"
|
|
|
|
|
id="specialValues" />
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="regionName"
|
|
|
|
|
class="col-sm-3 control-label">使用地区:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
readonly
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="regionName">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="desc"
|
|
|
|
|
class="col-sm-3 control-label">渠道名称:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
readonly
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="desc">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="isChannelEnabled"
|
|
|
|
|
class="col-sm-3 control-label">是否展示在充值H5:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<select name="isChannelEnabled"
|
|
|
|
|
id="isChannelEnabled"
|
|
|
|
|
class="form-control validate[required]">
|
|
|
|
|
<option value="1"
|
|
|
|
|
selected>是</option>
|
|
|
|
|
<option value="0">否</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="isChannelRecommend"
|
|
|
|
|
class="col-sm-3 control-label">是否展示"推荐":</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<select name="isChannelRecommend"
|
|
|
|
|
id="isChannelRecommend"
|
|
|
|
|
class="form-control validate[required]">
|
|
|
|
|
<option value="1"
|
|
|
|
|
selected>是</option>
|
|
|
|
|
<option value="0">否</option>
|
|
|
|
|
</select>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label for="channelSeq"
|
|
|
|
|
class="col-sm-3 control-label">排序:</label>
|
|
|
|
|
<div class="col-sm-9">
|
|
|
|
|
<input type="text"
|
|
|
|
|
class="form-control"
|
|
|
|
|
id="channelSeq">
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="form-group">
|
|
|
|
|
<label class="col-sm-3 control-label">充值档位配置</label>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</form>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<button type="button"
|
|
|
|
|
class="btn btn-primary"
|
|
|
|
|
id="chargeProdAdd">+档位</button>
|
|
|
|
|
<div class="modal-footer">
|
|
|
|
|
<button type="button"
|
|
|
|
|
class="btn btn-default"
|
|
|
|
|
data-dismiss="modal">取消</button>
|
|
|
|
|
<button type="button"
|
|
|
|
|
class="btn btn-primary"
|
|
|
|
|
id="channelSave">确认编辑</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="modal fade"
|
|
|
|
|
id="tipModal"
|
|
|
|
|
tabindex="-1"
|
|
|
|
|
role="dialog"
|
|
|
|
|
aria-labelledby="modalLabel">
|
|
|
|
|
<div class="modal-dialog"
|
|
|
|
|
role="document">
|
|
|
|
|
<div class="modal-content">
|
|
|
|
|
<div class="modal-header">
|
|
|
|
|
<h4 class="modal-title">提示信息</h4>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
<div class="modal-body"
|
|
|
|
|
id="tipMsg"></div>
|
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</div>
|
2024-07-25 21:57:56 +08:00
|
|
|
|
</div>
|
2023-09-19 10:55:46 +08:00
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import TableHelper from '@/utils/bootstrap-table-helper';
|
|
|
|
|
|
|
|
|
|
export default {
|
2024-07-25 21:57:56 +08:00
|
|
|
|
name: "ChargeRegionView",
|
|
|
|
|
setup () {
|
|
|
|
|
//计算
|
|
|
|
|
function calc (obj) {
|
|
|
|
|
var $obj = $(obj);
|
|
|
|
|
var index = $obj.data('index');
|
|
|
|
|
var amount = $('#amount' + index).val();
|
|
|
|
|
var handlingRate = $('#handlingRate' + index).val();
|
|
|
|
|
var usdRate = $('#usdRate').val();
|
|
|
|
|
var chargeGoldNum = 0;
|
|
|
|
|
if (usdRate && amount && handlingRate) {
|
|
|
|
|
//chargeGoldNum = Math.ceil(Math.ceil(parseFloat(amount).toFixed(4) / parseFloat(usdRate).toFixed(4) * 1000 * parseFloat((100 - parseFloat(handlingRate)) / 100).toFixed(4)) / 10) * 10;
|
|
|
|
|
var money = parseInt(amount * 100);
|
|
|
|
|
$.ajax({
|
|
|
|
|
type: "get",
|
|
|
|
|
url: "/admin/charge/channel/calc?money=" + money + "&handlingRate=" + handlingRate + "&usdRate=" + usdRate,
|
|
|
|
|
dataType: "json",
|
|
|
|
|
async: false,
|
|
|
|
|
success: function (json) {
|
|
|
|
|
if (json.success == 'true' || json.code == 200) {
|
|
|
|
|
chargeGoldNum = json.data;
|
2023-09-19 10:55:46 +08:00
|
|
|
|
}
|
2024-07-25 21:57:56 +08:00
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
console.log('index : ' + index + ', usdRate : ' + usdRate + ', amount : ' + amount + ', handlingRate : ' + handlingRate);
|
|
|
|
|
$("#chargeGoldNum" + index).html(parseFloat(chargeGoldNum).toFixed(2));
|
|
|
|
|
}
|
|
|
|
|
window.calc = calc;
|
|
|
|
|
return {
|
|
|
|
|
calc
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
created () {
|
|
|
|
|
this.$nextTick(function () {
|
|
|
|
|
this.initData();
|
|
|
|
|
});
|
|
|
|
|
},
|
|
|
|
|
methods: {
|
|
|
|
|
initData () {
|
|
|
|
|
$(function () {
|
|
|
|
|
//地区
|
|
|
|
|
var regionArray = chargeRegion();
|
|
|
|
|
$('#regionTable').bootstrapTable('destroy');
|
|
|
|
|
$('#regionTable').bootstrapTable({
|
|
|
|
|
columns: [
|
|
|
|
|
{ field: 'name', title: '地区', align: 'center', width: '5%' },
|
2024-12-05 15:20:40 +08:00
|
|
|
|
{ field: 'currency', title: '货币', align: 'center', width: '5%'},
|
2024-07-25 21:57:56 +08:00
|
|
|
|
{
|
|
|
|
|
field: 'rate',
|
2024-12-05 15:20:40 +08:00
|
|
|
|
title: '兑USD汇率',
|
2024-07-25 21:57:56 +08:00
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
var value = '';
|
|
|
|
|
value += val + '<br/>';
|
|
|
|
|
value += '(上一次更新时间:' + row.updateTime + ')';
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
field: 'isEnabled',
|
|
|
|
|
title: '地区是否生效',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
var value = '否';
|
|
|
|
|
if (val) {
|
|
|
|
|
value = '是';
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
field: 'isRecommend',
|
|
|
|
|
title: '代儲是否展示"推荐"',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
var value = '否';
|
|
|
|
|
if (val) {
|
|
|
|
|
value = '是';
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
field: 'id',
|
|
|
|
|
title: '操作',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
valign: 'middle',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
return '<button class="btn btn-sm btn-default opt-edit" data-index="' + index + '">编辑</button>';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
cache: false,
|
|
|
|
|
striped: true,
|
|
|
|
|
showRefresh: false,
|
|
|
|
|
pageSize: 20,
|
|
|
|
|
pagination: false,
|
|
|
|
|
pageList: [20, 50, 100],
|
|
|
|
|
search: false,
|
|
|
|
|
sidePagination: "server", //表示服务端请求
|
|
|
|
|
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
|
|
|
|
//设置为limit可以获取limit, offset, search, sort, order
|
|
|
|
|
queryParamsType: "undefined",
|
|
|
|
|
queryParams: function queryParams (params) { //设置查询参数
|
|
|
|
|
var param = {
|
|
|
|
|
regionType: $('#searchType').val()
|
|
|
|
|
};
|
|
|
|
|
return param;
|
|
|
|
|
},
|
|
|
|
|
toolbar: '#toolbar',
|
|
|
|
|
url: '/admin/charge/region/page',
|
|
|
|
|
onLoadSuccess: function () { //加载成功时执行
|
|
|
|
|
console.log("load success");
|
|
|
|
|
},
|
|
|
|
|
onLoadError: function () { //加载失败时执行
|
|
|
|
|
console.log("load fail");
|
|
|
|
|
}
|
2023-09-19 10:55:46 +08:00
|
|
|
|
});
|
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
$('#channelTable').bootstrapTable('destroy');
|
|
|
|
|
$('#channelTable').bootstrapTable({
|
|
|
|
|
columns: [
|
|
|
|
|
{ field: 'payChannel', title: '合作方', align: 'center', width: '5%' },
|
|
|
|
|
{
|
|
|
|
|
field: 'desc',
|
|
|
|
|
title: '渠道名称',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
let color = 'black';
|
|
|
|
|
if (val == 'MyCard點數卡' || val == 'MyCard會員點數' || val == 'MyCard Paypal' || val == '信用卡' || val == '悠遊付' || val == 'ezPay 簡單付' || val == '台灣Pay' || val == 'icash Pay' || val == 'Pi 拍錢包' || val == '全支付' || val == 'LINE Pay') {
|
|
|
|
|
color = 'green';
|
|
|
|
|
} else if (val == '電子支付' || val == '銀行轉賬') {
|
|
|
|
|
color = 'blue';
|
|
|
|
|
} else if (val == '市內電話帳單' || val == '行動電話帳單' || val == '電信數據ADSL帳單') {
|
|
|
|
|
color = 'orange';
|
|
|
|
|
}
|
|
|
|
|
return '<span style="color:' + color + ';">' + val + '</span>';
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
field: 'logo',
|
|
|
|
|
title: '图标',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
return '<img src="' + val + '" style="width:90px;height:90px;" alt="">'
|
|
|
|
|
}
|
|
|
|
|
},
|
2024-12-05 15:20:40 +08:00
|
|
|
|
{ field: 'currency', title: '货币', align: 'center', width: '5%' },
|
2024-07-25 21:57:56 +08:00
|
|
|
|
{
|
|
|
|
|
field: 'isEnabled',
|
|
|
|
|
title: '是否展示在充值H5',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
var value = '否';
|
|
|
|
|
if (val) {
|
|
|
|
|
value = '是';
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
field: 'isRecommend',
|
|
|
|
|
title: '是否展示"推荐"',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
var value = '否';
|
|
|
|
|
if (val) {
|
|
|
|
|
value = '是';
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
field: 'chargeProd',
|
|
|
|
|
title: '充值档位和手续费',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
var value = '';
|
|
|
|
|
var currency = row.currency;
|
|
|
|
|
if (row.chargeProds) {
|
|
|
|
|
for (let i = 0, len = row.chargeProds.length; i < len; i++) {
|
|
|
|
|
var chargeProd = row.chargeProds[i];
|
|
|
|
|
value += currency + ':' + (chargeProd.money / 100) + '手续费 ' + chargeProd.handlingRate + '% 到账金币:' + chargeProd.chargeGoldNum + '<br/>';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return value;
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
{ field: 'seq', title: '排序', align: 'center', width: '5%' },
|
|
|
|
|
{
|
|
|
|
|
field: 'handle',
|
|
|
|
|
title: '操作',
|
|
|
|
|
align: 'center',
|
|
|
|
|
width: '5%',
|
|
|
|
|
valign: 'middle',
|
|
|
|
|
formatter: function (val, row, index) {
|
|
|
|
|
return '<button class="btn btn-sm btn-default opt-edit" data-index="' + index + '">编辑</button>';
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
],
|
|
|
|
|
cache: false,
|
|
|
|
|
striped: true,
|
|
|
|
|
showRefresh: false,
|
|
|
|
|
pageSize: 20,
|
|
|
|
|
pagination: false,
|
|
|
|
|
pageList: [20, 50, 100],
|
|
|
|
|
search: false,
|
|
|
|
|
sidePagination: "server", //表示服务端请求
|
|
|
|
|
//设置为undefined可以获取pageNumber,pageSize,searchText,sortName,sortOrder
|
|
|
|
|
//设置为limit可以获取limit, offset, search, sort, order
|
|
|
|
|
queryParamsType: "undefined",
|
|
|
|
|
queryParams: function queryParams (params) { //设置查询参数
|
|
|
|
|
var param = {
|
|
|
|
|
regionType: $('#searchType').val()
|
|
|
|
|
};
|
|
|
|
|
return param;
|
|
|
|
|
},
|
|
|
|
|
url: '/admin/charge/channel/page',
|
|
|
|
|
onLoadSuccess: function () { //加载成功时执行
|
|
|
|
|
console.log("load success");
|
|
|
|
|
},
|
|
|
|
|
onLoadError: function () { //加载失败时执行
|
|
|
|
|
console.log("load fail");
|
|
|
|
|
}
|
|
|
|
|
});
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
//编辑
|
|
|
|
|
$('#regionTable').on('click', '.opt-edit', function () {
|
|
|
|
|
const currentData = $('#regionTable').bootstrapTable('getData')[$(this).data('index')];
|
|
|
|
|
var code = currentData.code;
|
|
|
|
|
var name = currentData.name;
|
|
|
|
|
var currency = currentData.currency;
|
|
|
|
|
var type = currentData.type;
|
|
|
|
|
var rate = currentData.rate;
|
|
|
|
|
var isRegionEnabled = currentData.isEnabled;
|
|
|
|
|
var isRegionRecommend = currentData.isRecommend;
|
|
|
|
|
var regionSeq = currentData.seq;
|
|
|
|
|
$('#code').val(code);
|
|
|
|
|
$('#name').val(name);
|
|
|
|
|
$('#currency').val(currency);
|
|
|
|
|
$('#type').val(type);
|
|
|
|
|
$('#rate').val(rate);
|
|
|
|
|
$('#isRegionEnabled').val(isRegionEnabled);
|
|
|
|
|
$('#isRegionRecommend').val(isRegionRecommend);
|
|
|
|
|
$('#regionSeq').val(regionSeq);
|
|
|
|
|
$("#regionModal").modal('show');
|
|
|
|
|
});
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
$("#regionSave").click(function () {
|
|
|
|
|
const msg = '确定要保存吗?';
|
|
|
|
|
if (confirm(msg)) {
|
|
|
|
|
const data = {
|
|
|
|
|
code: $('#code').val(),
|
|
|
|
|
name: $('#name').val(),
|
|
|
|
|
currency: $('#currency').val(),
|
|
|
|
|
type: $('#type').val(),
|
|
|
|
|
rate: $('#rate').val(),
|
|
|
|
|
isEnabled: $('#isRegionEnabled').val(),
|
|
|
|
|
isRecommend: $('#isRegionRecommend').val(),
|
|
|
|
|
seq: $('#regionSeq').val()
|
|
|
|
|
}
|
|
|
|
|
$.ajax({
|
|
|
|
|
type: "post",
|
|
|
|
|
url: "/admin/charge/region/save",
|
|
|
|
|
data: data,
|
|
|
|
|
dataType: "json",
|
|
|
|
|
success: function (json) {
|
|
|
|
|
if (json.success == 'true' || json.code == 200) {
|
|
|
|
|
$("#tipMsg").text("保存成功");
|
|
|
|
|
$("#tipModal").modal('show');
|
|
|
|
|
TableHelper.doRefresh("#regionTable");
|
|
|
|
|
TableHelper.doRefresh("#channelTable");
|
|
|
|
|
$("#regionModal").modal('hide');
|
|
|
|
|
} else {
|
|
|
|
|
$("#tipMsg").text("保存失败." + json.message);
|
|
|
|
|
$("#tipModal").modal('show');
|
|
|
|
|
$("#regionModal").modal('hide');
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//编辑
|
|
|
|
|
$('#channelTable').on('click', '.opt-edit', function () {
|
|
|
|
|
const currentData = $('#channelTable').bootstrapTable('getData')[$(this).data('index')];
|
|
|
|
|
for (let i = 0, len = $('#chargeSize').val(); i < len; i++) {
|
|
|
|
|
$('#chargeProd' + i).remove();
|
|
|
|
|
}
|
|
|
|
|
var channelCode = currentData.channelCode;
|
|
|
|
|
var regionCode = currentData.regionCode;
|
|
|
|
|
var usdRate = currentData.usdRate;
|
|
|
|
|
var payChannel = currentData.payChannel;
|
|
|
|
|
var paymentType = currentData.paymentType;
|
|
|
|
|
var regionName = currentData.regionName;
|
|
|
|
|
var currency = currentData.currency;
|
|
|
|
|
var desc = currentData.desc;
|
|
|
|
|
var isChannelEnabled = currentData.isEnabled;
|
|
|
|
|
var isChannelRecommend = currentData.isRecommend;
|
|
|
|
|
var channelSeq = currentData.seq;
|
|
|
|
|
var chargeProds = currentData.chargeProds;
|
|
|
|
|
var specialValues = currentData.specialValues;
|
|
|
|
|
var isSpecial = (specialValues && specialValues.length > 0);
|
|
|
|
|
console.log(isSpecial);
|
|
|
|
|
console.log(specialValues);
|
|
|
|
|
var chargeSize = 0;
|
|
|
|
|
if (chargeProds) {
|
|
|
|
|
chargeSize = chargeProds.length;
|
|
|
|
|
}
|
|
|
|
|
$('#channelCode').val(channelCode);
|
|
|
|
|
$('#regionCode').val(regionCode);
|
|
|
|
|
$('#usdRate').val(usdRate);
|
|
|
|
|
$('#payChannel').val(payChannel);
|
|
|
|
|
$('#paymentType').val(paymentType);
|
|
|
|
|
$('#regionName').val(regionName);
|
|
|
|
|
$('#channelCurrency').val(currency);
|
|
|
|
|
$('#desc').val(desc);
|
|
|
|
|
$('#isChannelEnabled').val(isChannelEnabled);
|
|
|
|
|
$('#isChannelRecommend').val(isChannelRecommend);
|
|
|
|
|
$('#channelSeq').val(channelSeq);
|
|
|
|
|
$('#chargeSize').val(chargeSize);
|
|
|
|
|
$('#isSpecial').val(isSpecial);
|
|
|
|
|
$('#specialValues').val(specialValues);
|
|
|
|
|
var $form = $('#channelModal .modal-body .form-horizontal');
|
|
|
|
|
for (let i = 0; i < chargeProds.length; i++) {
|
|
|
|
|
var chargeProd = chargeProds[i];
|
|
|
|
|
var chargeProdId = chargeProd.chargeProdId;
|
|
|
|
|
var amount = chargeProd.money / 100;
|
|
|
|
|
var handlingRate = chargeProd.handlingRate;
|
|
|
|
|
var chargeGoldNum = chargeProd.chargeGoldNum;
|
|
|
|
|
var $formGroup = $('<div/>');
|
|
|
|
|
$formGroup.attr('class', 'form-group');
|
|
|
|
|
$formGroup.attr('id', 'chargeProd' + i);
|
|
|
|
|
var $input = $('<input/>');
|
|
|
|
|
$input.attr('type', 'hidden');
|
|
|
|
|
$input.attr('name', 'chargeProdId' + i);
|
|
|
|
|
$input.attr('id', 'chargeProdId' + i);
|
|
|
|
|
$input.attr('value', chargeProdId);
|
|
|
|
|
$formGroup.append($input);
|
|
|
|
|
var $div = $('<div/>');
|
|
|
|
|
$div.attr('class', 'col-sm-12');
|
|
|
|
|
if (isSpecial) {
|
|
|
|
|
$div.append(currency + ' ');
|
|
|
|
|
var $select = $('<select/>');
|
|
|
|
|
$select.attr('class', 'validate[required]');
|
|
|
|
|
$select.attr('data-index', i);
|
|
|
|
|
$select.attr('id', 'amount' + i);
|
|
|
|
|
$select.attr('oninput', 'calc(this)');
|
|
|
|
|
for (let j = 0; j < specialValues.length; j++) {
|
|
|
|
|
var specialValue = specialValues[j];
|
|
|
|
|
var $option = $('<option/>');
|
|
|
|
|
$option.attr('value', specialValue);
|
|
|
|
|
$option.html(specialValue);
|
|
|
|
|
if (parseFloat(amount).toFixed(2) == parseFloat(specialValue).toFixed(2)) {
|
|
|
|
|
$option.attr('selected', true);
|
|
|
|
|
}
|
|
|
|
|
$select.append($option);
|
|
|
|
|
}
|
|
|
|
|
$div.append($select);
|
|
|
|
|
$div.append(' 手续费 <input type="text" data-index="' + i + '" id="handlingRate' + i + '" oninput="calc(this)" value="' + handlingRate + '" style="width:41px;"/>% 到账金币:<span id="chargeGoldNum' + i + '">' + chargeGoldNum + '</span> <button class="btn btn-sm btn-default opt-del" data-index="' + i + '">删除</button>');
|
|
|
|
|
} else {
|
|
|
|
|
$div.html(currency + ' <input type="text" data-index="' + i + '" id="amount' + i + '" oninput="calc(this)" value="' + amount + '" style="width:41px;"/> 手续费 <input type="text" data-index="' + i + '" id="handlingRate' + i + '" oninput="calc(this)" value="' + handlingRate + '" style="width:41px;"/>% 到账金币:<span id="chargeGoldNum' + i + '">' + chargeGoldNum + '</span> <button class="btn btn-sm btn-default opt-del" data-index="' + i + '">删除</button>');
|
|
|
|
|
}
|
|
|
|
|
$formGroup.append($div);
|
|
|
|
|
$form.append($formGroup);
|
|
|
|
|
}
|
|
|
|
|
$("#channelModal").modal('show');
|
|
|
|
|
});
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
//新增档位
|
|
|
|
|
$("#chargeProdAdd").click(function () {
|
|
|
|
|
var currency = $('#channelCurrency').val();
|
|
|
|
|
var i = parseInt($('#chargeSize').val());
|
|
|
|
|
var isSpecial = JSON.parse($('#isSpecial').val());
|
|
|
|
|
var specialValues = $('#specialValues').val().split(',');
|
|
|
|
|
var $form = $('#channelModal .modal-body .form-horizontal');
|
|
|
|
|
var $formGroup = $('<div/>');
|
|
|
|
|
$formGroup.attr('class', 'form-group');
|
|
|
|
|
$formGroup.attr('id', 'chargeProd' + i);
|
|
|
|
|
var $div = $('<div/>');
|
|
|
|
|
$div.attr('class', 'col-sm-12');
|
|
|
|
|
if (isSpecial) {
|
|
|
|
|
$div.append(currency + ' ');
|
|
|
|
|
var $select = $('<select/>');
|
|
|
|
|
$select.attr('class', 'validate[required]');
|
|
|
|
|
$select.attr('data-index', i);
|
|
|
|
|
$select.attr('id', 'amount' + i);
|
|
|
|
|
$select.attr('oninput', 'calc(this)');
|
|
|
|
|
for (let j = 0; j < specialValues.length; j++) {
|
|
|
|
|
var specialValue = specialValues[j];
|
|
|
|
|
var $option = $('<option/>');
|
|
|
|
|
$option.attr('value', specialValue);
|
|
|
|
|
$option.html(specialValue);
|
|
|
|
|
$select.append($option);
|
|
|
|
|
}
|
|
|
|
|
$div.append($select);
|
|
|
|
|
$div.append(' 手续费 <input type="text" data-index="' + i + '" id="handlingRate' + i + '" oninput="calc(this)" style="width:41px;"/>% 到账金币:<span id="chargeGoldNum' + i + '"></span> <button class="btn btn-sm btn-default opt-del" data-index="' + i + '">删除</button>');
|
|
|
|
|
} else {
|
|
|
|
|
$div.html(currency + ' <input type="text" data-index="' + i + '" id="amount' + i + '" oninput="calc(this)" style="width:41px;"/> 手续费 <input type="text" data-index="' + i + '" id="handlingRate' + i + '" oninput="calc(this)" style="width:41px;"/>% 到账金币:<span id="chargeGoldNum' + i + '"></span> <button class="btn btn-sm btn-default opt-del" data-index="' + i + '">删除</button>');
|
|
|
|
|
}
|
|
|
|
|
$formGroup.append($div);
|
|
|
|
|
$form.append($formGroup);
|
|
|
|
|
$('#chargeSize').val(++i);
|
|
|
|
|
});
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
$("#channelSave").click(function () {
|
|
|
|
|
const msg = '确定要保存吗?';
|
|
|
|
|
if (confirm(msg)) {
|
|
|
|
|
var channelCode = $('#channelCode').val();
|
|
|
|
|
var regionCode = $('#regionCode').val();
|
|
|
|
|
var currency = $('#channelCurrency').val();
|
|
|
|
|
var desc = $('#desc').val();
|
|
|
|
|
var payChannel = $('#payChannel').val();
|
|
|
|
|
var paymentType = $('#paymentType').val();
|
|
|
|
|
var chargeSize = $('#chargeSize').val();
|
|
|
|
|
var isEnabled = $('#isChannelEnabled').val();
|
|
|
|
|
var isRecommend = $('#isChannelRecommend').val();
|
|
|
|
|
var seq = $('#channelSeq').val();
|
|
|
|
|
var isSpecial = $('#isSpecial').val();
|
|
|
|
|
var chargeProdArray = [];
|
|
|
|
|
for (let i = 0; i < chargeSize; i++) {
|
|
|
|
|
const isHidden = $('#chargeProd' + i).is(':hidden');
|
|
|
|
|
if (isHidden) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
var chargeProdId = $('#chargeProdId' + i).val();
|
|
|
|
|
var money = parseFloat($('#amount' + i).val()) * 100;
|
|
|
|
|
var handlingRate = $('#handlingRate' + i).val();
|
|
|
|
|
if (!money || !handlingRate) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
const arrayIndex = chargeProdArray.findIndex(prod => prod.money === money);
|
|
|
|
|
if (arrayIndex !== -1) {
|
|
|
|
|
$("#tipMsg").text("保存失败." + money + "档位重复配置");
|
|
|
|
|
$("#tipModal").modal('show');
|
|
|
|
|
return;
|
|
|
|
|
}
|
2023-09-19 10:55:46 +08:00
|
|
|
|
|
2024-07-25 21:57:56 +08:00
|
|
|
|
var chargeProd = {
|
|
|
|
|
country: regionCode,
|
|
|
|
|
localCurrencyCode: currency,
|
|
|
|
|
payChannel: payChannel,
|
|
|
|
|
paymentType: paymentType,
|
|
|
|
|
money: parseInt(money),
|
|
|
|
|
seqNo: i,
|
|
|
|
|
handlingRate: handlingRate
|
|
|
|
|
};
|
|
|
|
|
if (chargeProdId) {
|
|
|
|
|
chargeProd.chargeProdId = chargeProdId;
|
|
|
|
|
}
|
|
|
|
|
chargeProdArray.push(chargeProd);
|
|
|
|
|
}
|
|
|
|
|
var data = {
|
|
|
|
|
channelCode: channelCode,
|
|
|
|
|
regionCode: regionCode,
|
|
|
|
|
desc: desc,
|
|
|
|
|
payChannel: payChannel,
|
|
|
|
|
paymentType: paymentType,
|
|
|
|
|
isEnabled: isEnabled,
|
|
|
|
|
isRecommend: isRecommend,
|
|
|
|
|
seq: seq,
|
|
|
|
|
chargeProds: JSON.stringify(chargeProdArray)
|
|
|
|
|
};
|
|
|
|
|
$.ajax({
|
|
|
|
|
type: "post",
|
|
|
|
|
url: "/admin/charge/channel/save",
|
|
|
|
|
data: data,
|
|
|
|
|
dataType: "json",
|
|
|
|
|
success: function (json) {
|
|
|
|
|
if (json.success == 'true' || json.code == 200) {
|
|
|
|
|
$("#tipMsg").text("保存成功");
|
|
|
|
|
$("#tipModal").modal('show');
|
|
|
|
|
TableHelper.doRefresh("#regionTable");
|
|
|
|
|
TableHelper.doRefresh("#channelTable");
|
|
|
|
|
$("#channelModal").modal('hide');
|
|
|
|
|
} else {
|
|
|
|
|
$("#tipMsg").text("保存失败." + json.message);
|
|
|
|
|
$("#tipModal").modal('show');
|
|
|
|
|
$("#channelModal").modal('hide');
|
2023-09-19 10:55:46 +08:00
|
|
|
|
}
|
2024-07-25 21:57:56 +08:00
|
|
|
|
}
|
2023-09-19 10:55:46 +08:00
|
|
|
|
});
|
2024-07-25 21:57:56 +08:00
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//删除
|
|
|
|
|
$('#channelModal .modal-body .form-horizontal').on('click', '.opt-del', function () {
|
|
|
|
|
var index = $(this).data('index');
|
|
|
|
|
var chargeProd = $('#chargeProd' + index);
|
|
|
|
|
chargeProd.hide();
|
|
|
|
|
return false;
|
|
|
|
|
// var chargeProdId = $('#chargeProdId' + index).val();
|
|
|
|
|
// if (chargeProdId) {
|
|
|
|
|
// const msg = '确定要删除吗?';
|
|
|
|
|
// if (confirm(msg)) {
|
|
|
|
|
// $.ajax({
|
|
|
|
|
// type: "get",
|
|
|
|
|
// url: "/admin/charge/prod/del?chargeProdId=" + chargeProdId,
|
|
|
|
|
// dataType: "json",
|
|
|
|
|
// success: function (json) {
|
|
|
|
|
// if (json.success == 'true' || json.code == 200) {
|
|
|
|
|
// $("#tipMsg").text("删除成功");
|
|
|
|
|
// $("#tipModal").modal('show');
|
|
|
|
|
// TableHelper.doRefresh("#regionTable");
|
|
|
|
|
// TableHelper.doRefresh("#channelTable");
|
|
|
|
|
// $("#channelModal").modal('hide');
|
|
|
|
|
// } else {
|
|
|
|
|
// $("#tipMsg").text("删除失败." + json.message);
|
|
|
|
|
// $("#tipModal").modal('show');
|
|
|
|
|
// $("#channelModal").modal('hide');
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// });
|
|
|
|
|
// $('#chargeProd' + index).remove();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
//地区
|
|
|
|
|
function chargeRegion () {
|
|
|
|
|
var array;
|
|
|
|
|
$.ajax({
|
|
|
|
|
type: "get",
|
|
|
|
|
url: "/admin/charge/region/list",
|
|
|
|
|
dataType: "json",
|
|
|
|
|
async: false,
|
|
|
|
|
success: function (json) {
|
|
|
|
|
if (json.success == 'true' || json.code == 200) {
|
|
|
|
|
array = json.data;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
var $select = $('#searchType');
|
|
|
|
|
for (let i = 0; i < array.length; i++) {
|
|
|
|
|
var $option = $('<option value="' + array[i].type + '" />');
|
2024-12-05 15:20:40 +08:00
|
|
|
|
$option.html(array[i].desc + '(' + array[i].name + ')');
|
2024-07-25 21:57:56 +08:00
|
|
|
|
if (i == 0) {
|
|
|
|
|
$option.attr('selected', true);
|
|
|
|
|
}
|
|
|
|
|
$select.append($option);
|
|
|
|
|
}
|
|
|
|
|
return array;
|
2023-09-19 10:55:46 +08:00
|
|
|
|
}
|
2024-07-25 21:57:56 +08:00
|
|
|
|
|
|
|
|
|
// 查询刷新
|
|
|
|
|
$('#btnSearch').on('click', function () {
|
|
|
|
|
TableHelper.doRefresh('#regionTable');
|
|
|
|
|
TableHelper.doRefresh('#channelTable');
|
|
|
|
|
});
|
|
|
|
|
});
|
2023-10-16 11:20:05 +08:00
|
|
|
|
}
|
2024-07-25 21:57:56 +08:00
|
|
|
|
},
|
|
|
|
|
unmounted () {
|
|
|
|
|
$('#regionTable').bootstrapTable('destroy');
|
|
|
|
|
$('#channelTable').bootstrapTable('destroy');
|
|
|
|
|
}
|
2023-09-19 10:55:46 +08:00
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.fixed-table-body {
|
2024-07-25 21:57:56 +08:00
|
|
|
|
overflow-x: auto;
|
|
|
|
|
overflow-y: auto;
|
|
|
|
|
height: 25%;
|
2023-09-19 10:55:46 +08:00
|
|
|
|
}
|
|
|
|
|
</style>
|