413 lines
19 KiB
Vue
413 lines
19 KiB
Vue
<template>
|
||
<section class="content">
|
||
<div class="box box-primary">
|
||
<div class="box-body">
|
||
<!-- Content Header (Page header) -->
|
||
<section class="content-header">
|
||
<h1 id="itemTitle"></h1>
|
||
</section>
|
||
<!-- .content -->
|
||
<div id="table"></div>
|
||
<div id="toolbar">
|
||
<div class="col-sm-12">
|
||
<label for="searchValue" class="col-sm-3 control-label">Peko ID:</label>
|
||
<div class="col-sm-3"><input type="text" class="form-control" name="searchValue" id="searchValue">
|
||
</div>
|
||
<label for="searchType" class="col-sm-3 control-label">地区:</label>
|
||
<div class="col-sm-3">
|
||
<select name="searchType" id="searchType" data-btn-class="btn-warning" class="form-control">
|
||
<option value="0" selected="selected">全部</option>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
<div class="col-sm-12">
|
||
<button id="btnSearch" class="btn btn-default">
|
||
<i class="glyphicon glyphicon-search"></i>查询
|
||
</button>
|
||
<button id="btnAdd" class="btn btn-default">
|
||
<i class="glyphicon glyphicon-plus-sign"></i>新增
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<div class="modal fade" id="editModal" 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="modalLabel">代充信息</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<form class="form-horizontal">
|
||
<input type="hidden" name="id" id="id" />
|
||
<div class="form-group">
|
||
<label for="erbanNo" class="col-sm-3 control-label">Peko ID:</label>
|
||
<div class="col-sm-9">
|
||
<input type="text" class="form-control" id="erbanNo">
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="col-sm-3 control-label">代充地区</label>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
|
||
<button type="button" class="btn btn-primary" id="save">确认</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<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>
|
||
</div>
|
||
<div class="modal-body" id="tipMsg"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import TableHelper from '@/utils/bootstrap-table-helper';
|
||
|
||
var regionArray;
|
||
export default {
|
||
name: "RechargeUserView",
|
||
setup() {
|
||
//切换只读
|
||
function editSeqText(obj) {
|
||
if (!regionArray) {
|
||
return;
|
||
}
|
||
var $input = $(obj);
|
||
const typeArray = $("input:checkbox[name='type']:checked").serializeArray();
|
||
if (!typeArray) {
|
||
return;
|
||
}
|
||
for (let i = 0; i < regionArray.length; i++) {
|
||
var region = regionArray[i];
|
||
var type = region.type;
|
||
var isCheck = false;
|
||
for (let j = 0; j < typeArray.length; j++) {
|
||
var value = typeArray[j].value;
|
||
if (type == value) {
|
||
isCheck = true;
|
||
break;
|
||
}
|
||
}
|
||
var $seq = $('#seq' + type);
|
||
if (isCheck) {
|
||
$seq.removeAttr('readonly');
|
||
} else {
|
||
$seq.attr('readonly', 'true');
|
||
}
|
||
}
|
||
}
|
||
window.editSeqText = editSeqText;
|
||
return {
|
||
editSeqText
|
||
};
|
||
},
|
||
created() {
|
||
this.$nextTick(function () {
|
||
this.initData();
|
||
});
|
||
},
|
||
methods: {
|
||
initData() {
|
||
$(function () {
|
||
//地区
|
||
regionArray = chargeRegion();
|
||
$('#table').bootstrapTable('destroy');
|
||
$('#table').bootstrapTable({
|
||
columns: [
|
||
{ field: 'erbanNo', title: 'Peko ID', align: 'center', width: '5%' },
|
||
{ field: 'nick', title: '昵称', align: 'center', width: '5%' },
|
||
{ field: 'createTime', title: '首次加入代充时间', align: 'center', width: '5%' },
|
||
{
|
||
field: 'type',
|
||
title: '地区',
|
||
align: 'center',
|
||
width: '5%',
|
||
formatter: function (val, row, index) {
|
||
var value = '';
|
||
if (regionArray) {
|
||
for (var i = 0, len = regionArray.length; i < len; i++) {
|
||
var region = regionArray[i];
|
||
var name = region.name;
|
||
var type = region.type;
|
||
if ((val & type) != 0) {
|
||
value += name;
|
||
if (i != len - 1) {
|
||
value += '<br>';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
},
|
||
{
|
||
field: 'userRegions',
|
||
title: '排序',
|
||
align: 'center',
|
||
width: '5%',
|
||
formatter: function (val, row, index) {
|
||
var value = '';
|
||
if (row.userRegions) {
|
||
for (var i = 0, len = row.userRegions.length; i < len; i++) {
|
||
var userRegion = row.userRegions[i];
|
||
var name = userRegion.name;
|
||
var seq = userRegion.seq;
|
||
value += name + ':' + seq;
|
||
if (i != len - 1) {
|
||
value += '<br>';
|
||
}
|
||
}
|
||
}
|
||
return value;
|
||
}
|
||
},
|
||
{ field: 'outDiamondNum', title: '最近30天转出金币', align: 'center', width: '5%' },
|
||
{
|
||
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>' + '<button class="btn btn-sm btn-default opt-del" data-index="' + index + '">删除</button>';
|
||
}
|
||
}
|
||
],
|
||
cache: false,
|
||
striped: true,
|
||
showRefresh: false,
|
||
pageSize: 20,
|
||
pagination: true,
|
||
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 = {
|
||
page: params.pageNumber,
|
||
pageSize: params.pageSize,
|
||
erbanNo: $('#searchValue').val(),
|
||
regionType: $('#searchType').val()
|
||
};
|
||
return param;
|
||
},
|
||
toolbar: '#toolbar',
|
||
url: '/admin/recharge/user/page',
|
||
onLoadSuccess: function () { //加载成功时执行
|
||
console.log("load success");
|
||
},
|
||
onLoadError: function () { //加载失败时执行
|
||
console.log("load fail");
|
||
}
|
||
});
|
||
|
||
//地区
|
||
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 + '" />');
|
||
$option.html(array[i].name);
|
||
$select.append($option);
|
||
}
|
||
return array;
|
||
}
|
||
|
||
//新增
|
||
$('#btnAdd').on('click', function () {
|
||
$("#id").val('');
|
||
$("#erbanNo").val('');
|
||
showRegion();
|
||
$("#editModal").modal('show');
|
||
});
|
||
|
||
// 查询刷新
|
||
$('#btnSearch').on('click', function () {
|
||
TableHelper.doRefresh('#table');
|
||
});
|
||
|
||
//展示地区
|
||
function showRegion() {
|
||
if (!regionArray) {
|
||
return;
|
||
}
|
||
var $form = $('#editModal .modal-body .form-horizontal');
|
||
for (let i = 0, len = regionArray.length; i < len; i++) {
|
||
$('#region' + i).remove();
|
||
var region = regionArray[i];
|
||
var name = region.name;
|
||
var type = region.type;
|
||
var $formGroup = $('<div/>');
|
||
$formGroup.attr('id', 'region' + i);
|
||
$formGroup.attr('class', 'form-group');
|
||
var $label = $('<label/>');
|
||
$label.attr('class', 'col-sm-3 control-label');
|
||
$label.html('<input type="checkbox" name="type" value="' + type + '" onclick=\"editSeqText(this);\"/> ' + name);
|
||
$formGroup.append($label);
|
||
var $div = $('<div/>');
|
||
$div.attr('class', 'col-sm-9');
|
||
$div.html('<input type="text" readonly class="form-control" id="seq' + type + '" value="0"/>');
|
||
$formGroup.append($div);
|
||
$form.append($formGroup);
|
||
}
|
||
}
|
||
|
||
//保存
|
||
$("#save").click(function () {
|
||
const msg = '确定要保存吗?';
|
||
if (confirm(msg)) {
|
||
var id = $('#id').val();
|
||
const typeArray = $("input:checkbox[name='type']:checked").serializeArray();
|
||
if (!typeArray) {
|
||
$("#tipMsg").text("代充地区不能为空");
|
||
$("#tipModal").modal('show');
|
||
return;
|
||
}
|
||
var userRegionArray = [];
|
||
for (let i = 0; i < regionArray.length; i++) {
|
||
var region = regionArray[i];
|
||
var name = region.name;
|
||
var seq = 0;
|
||
var isCheck = false;
|
||
for (let j = 0; j < typeArray.length; j++) {
|
||
console.log(typeArray[j]);
|
||
if (typeArray[j] && region.type == typeArray[j].value) {
|
||
seq = $('#seq' + region.type).val();
|
||
isCheck = true;
|
||
break;
|
||
}
|
||
}
|
||
var userRegion = {
|
||
type: region.type,
|
||
name: region.name,
|
||
isCheck: isCheck,
|
||
seq: seq
|
||
};
|
||
userRegionArray.push(userRegion);
|
||
}
|
||
var data = {
|
||
erbanNo: $('#erbanNo').val(),
|
||
userRegions: JSON.stringify(userRegionArray)
|
||
};
|
||
if (id) {
|
||
data.id = id;
|
||
}
|
||
$.ajax({
|
||
type: "post",
|
||
url: "/admin/recharge/user/save",
|
||
data: data,
|
||
dataType: "json",
|
||
success: function (json) {
|
||
if (json.success == 'true' || json.code == 200) {
|
||
$("#tipMsg").text("保存成功");
|
||
$("#tipModal").modal('show');
|
||
TableHelper.doRefresh("#table");
|
||
$("#editModal").modal('hide');
|
||
} else {
|
||
$("#tipMsg").text("保存失败." + json.message);
|
||
$("#tipModal").modal('show');
|
||
$("#editModal").modal('hide');
|
||
}
|
||
}
|
||
});
|
||
}
|
||
});
|
||
|
||
//编辑
|
||
$('#table').on('click', '.opt-edit', function () {
|
||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||
showRegion();
|
||
var id = currentData.id;
|
||
var erbanNo = currentData.erbanNo;
|
||
var userRegions = currentData.userRegions;
|
||
$("#erbanNo").val(erbanNo);
|
||
$("#id").val(id);
|
||
if (regionArray) {
|
||
for (let i = 0; i < regionArray.length; i++) {
|
||
var region = regionArray[i];
|
||
var seq = 0;
|
||
var isCheck = false;
|
||
for (let j = 0; j < userRegions.length; j++) {
|
||
var userRegion = userRegions[j];
|
||
if (region.type == userRegion.type) {
|
||
seq = userRegion.seq;
|
||
isCheck = true;
|
||
break;
|
||
}
|
||
}
|
||
if (isCheck) {
|
||
$('input:checkbox[value="' + region.type + '"]').prop('checked', true);
|
||
$('#seq' + region.type).removeAttr('readonly');
|
||
$('#seq' + region.type).val(seq);
|
||
} else {
|
||
$("input:checkbox[value='" + region.type + "']").prop('checked', false);
|
||
$('#seq' + region.type).attr('readonly', 'true');
|
||
$('#seq' + region.type).val(0);
|
||
}
|
||
}
|
||
}
|
||
$("#editModal").modal('show');
|
||
});
|
||
|
||
//删除
|
||
$('#table').on('click', '.opt-del', function () {
|
||
const currentData = $('#table').bootstrapTable('getData')[$(this).data('index')];
|
||
var id = currentData.id;
|
||
const msg = '确定要删除吗?';
|
||
if (confirm(msg)) {
|
||
$.ajax({
|
||
type: "get",
|
||
url: "/admin/recharge/user/del?id=" + id,
|
||
dataType: "json",
|
||
success: function (json) {
|
||
if (json.success == 'true' || json.code == 200) {
|
||
$("#tipMsg").text("删除成功");
|
||
$("#tipModal").modal('show');
|
||
TableHelper.doRefresh("#table");
|
||
$("#editModal").modal('hide');
|
||
} else {
|
||
$("#tipMsg").text("删除失败." + json.message);
|
||
$("#tipModal").modal('show');
|
||
$("#editModal").modal('hide');
|
||
}
|
||
}
|
||
});
|
||
}
|
||
});
|
||
});
|
||
}
|
||
},
|
||
|
||
};
|
||
</script>
|
||
|
||
<style scoped></style> |