app.controller('walletCtrl', ['$scope', '$http', '$timeout', 'uiGridConstants', 'i18nService', 'toaster', 'chartOptions', function ($scope, $http, $timeout, uiGridConstants, i18nService, toaster, chartOptions) {
i18nService.setCurrentLang("zh-cn");
$scope.gridOptions = {
data: 'myData',
showGridFooter: true, //是否显示grid footer
// rowHeight:40,
//-------- 分页属性 ----------------
paginationPageSizes: [10, 20, 50, 100], //每页显示个数可选项
paginationCurrentPage: 1, //当前页码
paginationPageSize: 10, //每页显示个数
totalItems: 0,// 总数量
useExternalPagination: true,//是否使用分页按钮
//过滤
// enableFiltering: true,
columnDefs: [],
//---------------api---------------------
onRegisterApi: function (gridApi) {
$scope.gridApi = gridApi;
gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
if ($scope.setPagingData) {
$scope.getPagedDataAsync(newPage, pageSize);
}
});
}
};
//查询条件
var condition = $scope.condition = {
status: {value: 0, label: "待处理"},
searchKey: ""
};
//枚举常量
$scope.enum = {};
//事件
$scope.event = {
statusChange: function (item) {
condition.status.value = item.value;
condition.status.label = item.label;
$scope.getPagedDataAsync(1, $scope.gridOptions.paginationPageSize);
},
search: function () {
$scope.getPagedDataAsync(1, $scope.gridOptions.paginationPageSize);
}
};
var payTypeList = $scope.enum.payType = [
{value: "wechat", label: "微信"},
{value: "bank", label: "银行"}
];
var statusList = $scope.enum.status = [
{value: 0, label: "待处理"},
{value: 1, label: "提现成功"},
{value: 2, label: "处理中..."},
{value: 3, label: "提现失败"},//后台处理错误,可以尝试重新处理,多见于微信
{value: 4, label: "已退单"},//用户信息填写有误可以退单,多用于银行
];
function setColumnDefs() {
$scope.gridOptions.columnDefs = [
{
field: 'oper', displayName: '查看',
enableFiltering: false,
enableSorting: false,
enableHiding: false,//禁止在列选择器中隐藏
enableColumnMenu: false,// 是否显示列头部菜单按钮
width: 66,
cellTemplate: '
' +
'' +
'
'
},
{field: 'name', displayName: '商家名称'},
{field: 'tel', displayName: '商家电话'},
{field: 'orderNo', displayName: '单号', width: 280},
{
field: 'actualPay', displayName: '提现(实际到账)',
cellTemplate: ''
},
{field: 'bankName', displayName: '银行'},
{
field: 'subBankName',
displayName: '支行名称',
width: 200,
cellTemplate: ''
},
{field: 'cardId', displayName: '卡号', width: 280},
{
field: 'cardUserName', displayName: '持卡人'
},
{
field: 'dateTime',
displayName: '发起日期',
cellTemplate: '',
width: 200,
},
{
field: 'amount', displayName: '操作前余额',
cellTemplate: ''
},
{
field: 'payType', displayName: '提现方式',
filter: {
term: '',
type: uiGridConstants.filter.SELECT,
selectOptions: payTypeList
},
cellTemplate: ''
},
{
field: 'remarks', displayName: '备注', width: 200,
cellTemplate: '{{row.entity.remarks}}
'
},
{
field: 'operResult', displayName: '状态',
filter: {
term: '',
type: uiGridConstants.filter.SELECT,
selectOptions: statusList
},
cellTemplate: '{{grid.appScope.formatterStatus(row.entity,row.entity.operResult)}}
'
},
];
var fields = $scope.gridOptions.columnDefs;
for (var index in fields) {
var item = fields[index];
if (item && item['minWidth'] == null) {
item['minWidth'] = 100;
}
}
}
$scope.formatterPayType = function (row, payType) {
for (var i = 0; i < payTypeList.length; i++) {
var item = payTypeList[i];
if (item.value == payType) {
return item.label;
}
}
};
$scope.formatterStatus = function (row, operResult) {
for (var i = 0; i < statusList.length; i++) {
var item = statusList[i];
if (item.value == operResult) {
return item.label;
}
}
};
$scope.setPagingData = function (data, curPage, pageSize) {
var firstRow = (curPage - 1) * pageSize;
var pagedData = data.data.dataList;
$scope.myData = pagedData;
$scope.gridOptions.totalItems = data.data.total;
};
$scope.getPagedDataAsync = function (curPage, pageSize) {
if ($scope.gridOptionsLoading) {
return;
}
var params = {
pageSize: pageSize,
pageIndex: curPage
};
if (condition.status.value >= 0) {
params.status = condition.status.value
}
if (condition.searchKey != "") {
params.searchKey = condition.searchKey
}
$scope.gridOptionsLoading = true;
$http.get('/manager/getDealersWithdrawalList', {
params: params
}).then(function (data) {
$scope.gridOptionsLoading = false;
$scope.setPagingData(data.data, curPage, pageSize);
}).catch(function (data) {
toaster.pop("error", "提示", "获取提现列表失败");
});
};
function initDataGrid() {
//首次加载表格
$scope.getPagedDataAsync($scope.gridOptions.paginationCurrentPage, $scope.gridOptions.paginationPageSize);
}
setColumnDefs();
initDataGrid();
//展示详情
$scope.showInfoDetail = function (title, content) {
$scope.infoDetail = {title: title, content: content};
$("#detailInfoPanel").modal();
};
$scope.closeDetailInfoPanel = function () {
$("#detailInfoPanel").modal("hide");
};
/**************统计图********************/
var chartCondition = $scope.chartCondition = {"timeType": "month", "dealerId": null};
var selectEntity = {};
var dealerMoneyChartPanel;
$scope.showChart = function (entity) {
$("#chartInfoPanel").modal();
selectEntity = entity;
chartCondition.dealerId = entity.dealerId;
dealerMoneyChartPanel = echarts.init(document.getElementById('dealerMoneyChartPanel')); //resize事件绑定
$(window).off("resize.DealerMoneyChart").on("resize.DealerMoneyChart", function () {
dealerMoneyChartPanel.resize();
});
loadChartData();
};
$scope.closeChart = function () {
$("#chartInfoPanel").modal('hide');
};
//按条件加载统计图
var loadChartData = $scope.loadChartData = function () {
//获取数据:每日提现曲线
$http.get('/manager/getDealerMoneyTrend', {params: chartCondition}).then(function (data) {
data = data.data
var transData = adapterDealerMoneyChartData(data.data);
var option = chartOptions.getLineOptions(transData.xData);
dealerMoneyChartOption(option, transData.yData, data.detail);
dealerMoneyChartPanel.setOption(option);
});
};
//数据适配
function adapterDealerMoneyChartData(data) {
var xData = [];
var yData = {totalIncome: [], actualPay: [], balance: []};
for (var i = 0; i < data.length; i++) {
var item = data[i];
xData.push(item.time);
yData.totalIncome.push(item.totalIncome);
yData.actualPay.push(item.actualPay);
yData.balance.push(item.balance);
}
return {
xData: xData,
yData: yData
}
}
//趋势自定义样式
function dealerMoneyChartOption(option, yData, detail) {
option.grid.y = 80;
option.title = {
text: selectEntity.name + "-提现和收入趋势",
subtext: '提现成功次数:' + detail.success + " ,失败次数:" + detail.fail,
left: 'center',
textStyle: {},
subtextStyle: {
fontSize: 14,
color: "#525252"
}
};
option.series = [
{
name: '成功提现',
type: 'line',
itemStyle: {normal: {color: "#f05050"}},
data: yData.actualPay
}, {
name: '线上收入',
type: 'line',
itemStyle: {normal: {color: "#27c24c"}},
data: yData.totalIncome
}, {
name: '钱包余额',
type: 'line',
itemStyle: {normal: {color: "rgba(0,0,0,.2)"}},
data: yData.balance
}
];
option.legend = {
data: ['成功提现', '线上收入', '钱包余额'],
y: 62
};
var start = 0;
var end = 100;
if (chartCondition.timeType == "month") {
start = 50;
}
option.dataZoom = [
{
show: true,
realtime: true,
start: start,
end: end
},
{
type: 'inside',
realtime: true,
start: start,
end: end
}
]
}
}]);