commit
36c6d99d84
@ -0,0 +1,25 @@
|
||||
package au.com.royalpay.payment.manage.mappers.payment;
|
||||
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.annotations.Select;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by liuxinxin on 2019-11-12.
|
||||
*/
|
||||
@AutoMapper(tablename = "sys_client_incremental", pkName = "incremental_id")
|
||||
public interface SysClientIncrementalMapper {
|
||||
|
||||
@Select("SELECT incremental_rate_value FROM sys_client_incremental WHERE channel = #{channel} AND client_id = #{client_id} ")
|
||||
String findByChannelAndClientId(@Param("client_id") String clientId,@Param("channel") String channel);
|
||||
|
||||
@AutoSql(type = SqlType.SELECT)
|
||||
List<JSONObject> find(@Param("client_id") String clientId);
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package au.com.royalpay.payment.manage.mappers.system;
|
||||
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AdvanceSelect;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoMapper;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
|
||||
import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.apache.ibatis.executor.keygen.Jdbc3KeyGenerator;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author DuLingLing
|
||||
* @create 2019/11/13 0013 14:49
|
||||
*/
|
||||
@AutoMapper(tablename = "sys_client_incremental", pkName = "incremental_id", keyGenerator = Jdbc3KeyGenerator.class)
|
||||
public interface ClientIncrementalMapper {
|
||||
|
||||
/**
|
||||
* 获取商户所有增值渠道信息
|
||||
* @param clientId
|
||||
* @return
|
||||
*/
|
||||
@AutoSql(type = SqlType.SELECT)
|
||||
List<JSONObject> findAllByclientMoniker(@Param("client_id") int clientId);
|
||||
|
||||
@AutoSql(type = SqlType.SELECT)
|
||||
JSONObject findByClinetIdAndChannel(@Param("client_id")int clinet_id, @Param("channel")String channel);
|
||||
|
||||
@AutoSql(type = SqlType.INSERT)
|
||||
void save(JSONObject saveIncrementalService);
|
||||
|
||||
@AutoSql(type = SqlType.UPDATE)
|
||||
void update(JSONObject saveIncrementalService);
|
||||
}
|
@ -1,6 +1,16 @@
|
||||
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
|
||||
spring.datasource.schema-name=royalpay_local
|
||||
spring.datasource.host=192.168.0.50:3306
|
||||
spring.datasource.url=jdbc:mysql://${spring.datasource.host}/${spring.datasource.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
|
||||
spring.datasource.username=root
|
||||
spring.datasource.password=root
|
||||
#多数据源配置
|
||||
spring.datasource.type = com.zaxxer.hikari.HikariDataSource
|
||||
#数据源master
|
||||
|
||||
spring.datasource.master.schema-name=royalpay_production
|
||||
spring.datasource.master.host=192.168.1.52:3306
|
||||
spring.datasource.master.jdbc-url=jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
|
||||
spring.datasource.master.username=taylor
|
||||
spring.datasource.master.password=taylor
|
||||
|
||||
#数据源salve
|
||||
spring.datasource.slave.schema-name=royalpay_production
|
||||
spring.datasource.slave.host=192.168.1.52:3306
|
||||
spring.datasource.slave.jdbc-url=jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
|
||||
spring.datasource.slave.username=taylor
|
||||
spring.datasource.slave.password=taylor
|
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 415 B |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 547 B |
@ -0,0 +1,271 @@
|
||||
define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) {
|
||||
'use strict';
|
||||
var app = angular.module('partnerIncrementalService', ['ui.bootstrap', 'ui.router']);
|
||||
app.config(['$stateProvider', function ($stateProvider) {
|
||||
$stateProvider.state('partnerIncrementalService', {
|
||||
url: '/partner_incremental_service',
|
||||
templateUrl: '/static/incrementalService/templates/partner_incremental_service.html',
|
||||
controller: 'partnerIncrementalServiceCtrl',
|
||||
resolve:{
|
||||
partner:['$http',function($http){
|
||||
return $http.get('/client/partner_info');
|
||||
}]
|
||||
}
|
||||
}).state('partnerIncrementalServiceInfo', {
|
||||
url: '/partner_incremental_service_info?:channel',
|
||||
templateUrl: '/static/incrementalService/templates/partner_incremental_service_info.html',
|
||||
controller: 'partnerIncrementalServiceInfoCtrl',
|
||||
resolve:{
|
||||
partner:['$http',function($http){
|
||||
return $http.get('/client/partner_info');
|
||||
}]
|
||||
}
|
||||
});
|
||||
}]);
|
||||
|
||||
app.controller('partnerIncrementalServiceCtrl', ['$scope', '$http', '$state', 'partner', function ($scope, $http, $state, partner) {
|
||||
$scope.serviceAll = [];
|
||||
$scope.channelOptions = [];
|
||||
$scope.windowHeight = document.body.clientWidth;
|
||||
$scope.clientInfo = partner.data
|
||||
$scope.initDate = function(){
|
||||
$http.get("/client/partner_info/"+$scope.clientInfo.client_moniker+"/incremental_service").then(function (res) {
|
||||
$scope.serviceAll = res.data.all_service;
|
||||
$scope.serviceAll.forEach(function(service){
|
||||
service.logo_url = '/static/images/'+service.channel+'.jpg'
|
||||
})
|
||||
res.data.incremental_channel.forEach(function(channel){
|
||||
$scope.channelOptions.push({name:channel,logo_url:'/static/images/'+channel+'.jpg'})
|
||||
})
|
||||
})
|
||||
|
||||
}
|
||||
$scope.initDate();
|
||||
}]);
|
||||
|
||||
app.controller('partnerIncrementalServiceInfoCtrl',['$scope', '$http', '$state','$stateParams','$filter', '$timeout', 'partnerRefunder', 'orderService', 'commonDialog','partner',
|
||||
function($scope,$http,$state,$stateParams,$filter, $timeout, partnerRefunder, orderService, commonDialog,partner){
|
||||
$scope.serviceInfo = {}
|
||||
$scope.initDate = function () {
|
||||
$http.get("/client/partner_info/"+partner.data.client_moniker+"/incremental_service/"+$stateParams.channel+"/info").then(function(res){
|
||||
$scope.serviceInfo =res.data
|
||||
$scope.serviceInfo.logo_url = '/static/images/'+$scope.serviceInfo.channel+'.jpg'
|
||||
|
||||
})
|
||||
}
|
||||
$scope.initDate();
|
||||
$scope.params = {source: $scope.serviceInfo.channel,status: 'PAID', channel :'ALL' ,textType: 'all', datefrom: new Date(), dateto: new Date()};
|
||||
$scope.pagination = {};
|
||||
$scope.today = new Date();
|
||||
$scope.isAll = true;
|
||||
$scope.isLevel3All = true;
|
||||
$scope.device_isAll = true;
|
||||
$scope.dev_params = {client_type:'sunmi',limit:100};
|
||||
$scope.clients = [$scope.currentUser.client];
|
||||
$scope.showLevel3Clients = false;
|
||||
|
||||
|
||||
$scope.chooseToday = function () {
|
||||
$scope.params.datefrom = $scope.params.dateto = new Date();
|
||||
$scope.loadTradeLogs(1);
|
||||
};
|
||||
$scope.chooseYesterday = function () {
|
||||
var yesterday = new Date();
|
||||
yesterday.setDate(yesterday.getDate() - 1);
|
||||
$scope.params.datefrom = $scope.params.dateto = yesterday;
|
||||
$scope.loadTradeLogs(1);
|
||||
};
|
||||
$scope.chooseLast7Days = function () {
|
||||
$scope.params.dateto = new Date();
|
||||
var day = new Date();
|
||||
day.setDate(day.getDate() - 7);
|
||||
$scope.params.datefrom = day;
|
||||
$scope.loadTradeLogs(1);
|
||||
};
|
||||
$scope.thisMonth = function () {
|
||||
$scope.params.dateto = new Date();
|
||||
var monthBegin = new Date();
|
||||
monthBegin.setDate(1);
|
||||
$scope.params.datefrom = monthBegin;
|
||||
$scope.loadTradeLogs(1);
|
||||
};
|
||||
$scope.lastMonth = function () {
|
||||
var monthFinish = new Date();
|
||||
monthFinish.setDate(0);
|
||||
$scope.params.dateto = monthFinish;
|
||||
var monthBegin = new Date();
|
||||
monthBegin.setDate(0);
|
||||
monthBegin.setDate(1);
|
||||
$scope.params.datefrom = monthBegin;
|
||||
$scope.loadTradeLogs(1);
|
||||
};
|
||||
$scope.loadTradeLogs = function (page) {
|
||||
$scope.params.source = $scope.serviceInfo.channel;
|
||||
var params = angular.copy($scope.params);
|
||||
if (params.datefrom) {
|
||||
params.datefrom = $filter('date')(params.datefrom, 'yyyyMMdd');
|
||||
}
|
||||
if (params.dateto) {
|
||||
params.dateto = $filter('date')(params.dateto, 'yyyyMMdd');
|
||||
}
|
||||
params.page = page || $scope.pagination.page || 1;
|
||||
$http.get('/client/partner_info/incremental_trade_logs', {params: params}).then(function (resp) {
|
||||
$scope.tradeLogs = resp.data.data;
|
||||
$scope.pagination = resp.data.pagination;
|
||||
$scope.analysis = resp.data.analysis;
|
||||
$scope.analysis.refund_fee = angular.copy(Math.abs($scope.analysis.refund_fee));
|
||||
});
|
||||
};
|
||||
|
||||
$scope.gatewaySelected = function (arr) {
|
||||
return $scope.params.gateway != null && $scope.params.gateway.filter(function (gateway) {
|
||||
return arr.indexOf(gateway) >= 0
|
||||
}).length > 0
|
||||
};
|
||||
$scope.showTradeDetail = function (order) {
|
||||
orderService.clientOrderDetail(order)
|
||||
};
|
||||
$scope.showPRefundLog = function (orderId) {
|
||||
partnerRefunder.prefunded(orderId);
|
||||
};
|
||||
$scope.newPRefund = function (orderId) {
|
||||
partnerRefunder.prefund(orderId).then(function () {
|
||||
$scope.loadTradeLogs();
|
||||
});
|
||||
};
|
||||
$scope.releasePreAuth = function (orderId) {
|
||||
commonDialog.confirm({
|
||||
title: 'Pre Authorization Completion',
|
||||
content: 'This bill will be taken into settlement, or you will be able to make a refund order. Are you sure?'
|
||||
}).then(function () {
|
||||
$http.put('/client/partner_info/trade_logs/' + orderId + '/release_preauth').then(function (resp) {
|
||||
$scope.loadTradeLogs();
|
||||
}, function (resp) {
|
||||
commonDialog.alert({title: 'Error!', content: resp.data.message, type: 'error'})
|
||||
})
|
||||
})
|
||||
};
|
||||
$scope.alerts = [];
|
||||
$scope.$on('pe_order_paid', function (evt, order) {
|
||||
$scope.alerts.push(order);
|
||||
$timeout(function () {
|
||||
$scope.alerts.splice(0, 1);
|
||||
}, 10000);
|
||||
$scope.loadTradeLogs();
|
||||
});
|
||||
$scope.chooseClient = function (client) {
|
||||
if (client == 'all') {
|
||||
$scope.params.client_ids = angular.copy($scope.clientIds);
|
||||
$scope.isAll = true;
|
||||
$scope.chooseClientId = '';
|
||||
$scope.dev_params.client_ids = angular.copy($scope.clientIds);
|
||||
$scope.showLevel3Clients = false;
|
||||
$scope.listDevices();
|
||||
} else if (client.level3Clients) {
|
||||
$scope.chooseClientId = client.client_id;
|
||||
$scope.showLevel3Clients = true;
|
||||
$scope.level3Clients = client.level3Clients;
|
||||
$scope.isAll = false;
|
||||
$scope.level3ClientIds = [];
|
||||
$scope.level3ClientIds.push(client.client_id);
|
||||
client.level3Clients.forEach(function (client) {
|
||||
$scope.level3ClientIds.push(client.client_id);
|
||||
});
|
||||
$scope.chooseLevel3Client("all");
|
||||
return;
|
||||
} else {
|
||||
$scope.chooseClientId = client.client_id;
|
||||
$scope.params.client_ids = [client.client_id];
|
||||
$scope.isAll = false;
|
||||
$scope.dev_params.client_ids = [client.client_id];
|
||||
$scope.showLevel3Clients = false;
|
||||
$scope.listDevices();
|
||||
}
|
||||
$scope.loadTradeLogs();
|
||||
};
|
||||
|
||||
$scope.chooseLevel3Client = function (client) {
|
||||
if (client == 'all') {
|
||||
$scope.params.client_ids = angular.copy($scope.level3ClientIds);
|
||||
$scope.isLevel3All = true;
|
||||
$scope.chooseLevel3ClientId = '';
|
||||
$scope.dev_params.client_ids = angular.copy($scope.level3ClientIds);
|
||||
$scope.listDevices();
|
||||
} else {
|
||||
$scope.chooseLevel3ClientId = client.client_id;
|
||||
$scope.params.client_ids = [client.client_id];
|
||||
$scope.isLevel3All = false;
|
||||
$scope.dev_params.client_ids = [client.client_id];
|
||||
$scope.listDevices();
|
||||
}
|
||||
$scope.loadTradeLogs();
|
||||
};
|
||||
|
||||
$scope.listDevices = function () {
|
||||
var params = angular.copy($scope.dev_params)
|
||||
$http.get('/client/partner_info/devices', {params: params}).then(function (resp) {
|
||||
$scope.devices = resp.data.data;
|
||||
})
|
||||
};
|
||||
$scope.chooseDevices = function (dev_id) {
|
||||
if(dev_id == 'all'){
|
||||
$scope.chooseDevice_id = '';
|
||||
$scope.params.dev_id = null;
|
||||
$scope.device_isAll = true;
|
||||
$scope.loadTradeLogs(1);
|
||||
}else {
|
||||
$scope.chooseDevice_id = dev_id;
|
||||
$scope.params.dev_id = dev_id;
|
||||
$scope.device_isAll = false;
|
||||
$scope.loadTradeLogs(1);
|
||||
}
|
||||
};
|
||||
$scope.listDevices();
|
||||
|
||||
if ($scope.currentUser.client.has_children) {
|
||||
$http.get('/client/partner_info/sub_partners').then(function (resp) {
|
||||
var clientList = resp.data;
|
||||
clientList.forEach(function (client) {
|
||||
$scope.clients.push(client);
|
||||
});
|
||||
$scope.clientIds = [];
|
||||
$scope.clients.forEach(function (client) {
|
||||
$scope.clientIds.push(client.client_id);
|
||||
if (client.level3Clients) {
|
||||
client.level3Clients.forEach(function (level3Client) {
|
||||
$scope.clientIds.push(level3Client.client_id);
|
||||
});
|
||||
}
|
||||
});
|
||||
$scope.params.client_ids = angular.copy($scope.clientIds);
|
||||
|
||||
$scope.loadTradeLogs(1);
|
||||
//console.log($rootScope.currentUser.client.clientList);
|
||||
})
|
||||
}else{
|
||||
$scope.loadTradeLogs(1);
|
||||
}
|
||||
|
||||
$scope.fullReleasePreAuth = function (){
|
||||
var params = angular.copy($scope.params);
|
||||
if (params.datefrom) {
|
||||
params.datefrom = $filter('date')(params.datefrom, 'yyyyMMdd');
|
||||
}
|
||||
if (params.dateto) {
|
||||
params.dateto = $filter('date')(params.dateto, 'yyyyMMdd');
|
||||
}
|
||||
commonDialog.confirm({
|
||||
title: 'All Pre Authorization Completion',
|
||||
content: 'These pre authorization orders will be taken into settlement, or you will be able to make a refund order. Are you sure?'
|
||||
}).then(function(){
|
||||
$http.put('/client/partner_info/trade_logs/full_release_preauth',params).then(function (resp){
|
||||
$scope.loadTradeLogs(1);
|
||||
alert("Success");
|
||||
},function (resp) {
|
||||
commonDialog.alert({title: 'Error!', content: resp.data.message, type: 'error'})
|
||||
})
|
||||
});
|
||||
}
|
||||
}]);
|
||||
return app;
|
||||
});
|
@ -0,0 +1,426 @@
|
||||
<style>
|
||||
.cursor {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.div-display {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.i-rotate_90 {
|
||||
animation: rotate_90 1s forwards;
|
||||
-webkit-animation: rotate_90 1s forwards; /* Safari and Chrome */
|
||||
}
|
||||
|
||||
@keyframes rotate_90 {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes rotate_90 /* Safari and Chrome */
|
||||
{
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
-webkit-transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
.popover-color {
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
color: black;
|
||||
}
|
||||
|
||||
.popover-content button {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.position_re {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.position_re .position_ab {
|
||||
position: absolute;
|
||||
top: 90%;
|
||||
left: 90%;
|
||||
}
|
||||
|
||||
.box-icon_small {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
font-size: 30px;
|
||||
line-height: 70px
|
||||
}
|
||||
|
||||
.info_box_bottom {
|
||||
min-height: 70px;
|
||||
margin-bottom: 0px
|
||||
}
|
||||
|
||||
.box-content_left {
|
||||
margin-left: 70px
|
||||
}
|
||||
|
||||
.box-number_font {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.line_height {
|
||||
line-height: 14px
|
||||
}
|
||||
|
||||
.line_height_ {
|
||||
line-height: 22px;
|
||||
}
|
||||
</style>
|
||||
<section class="content-header">
|
||||
<h1>
|
||||
<img height="40px" ng-src="{{serviceInfo.logo_url}}">
|
||||
<span style="color:#F06101">{{serviceInfo.channel}}</span>
|
||||
Service Info</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-comments-o"></i> Service List
|
||||
</li>
|
||||
<li class="active">{{serviceInfo.channel}} Service Info</li>
|
||||
</ol>
|
||||
</section>
|
||||
<div class="content">
|
||||
<div class="row" style="font-size: 18px">
|
||||
<div class="col-sm-12">
|
||||
<div class="box-solid">
|
||||
<div class="box box-warning">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<label>Mode:</label>
|
||||
<span>{{serviceInfo.incremental_mode==1?'固定手续费':'固定金额扣款' }}</span>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label>{{serviceInfo.incremental_mode==1?'Rate':'Amount'}}:</label>
|
||||
<span>{{serviceInfo.incremental_mode==1?serviceInfo.incremental_rate_value+'%':serviceInfo.total_incremental_amount}}</span>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label>Create Time:</label>
|
||||
<span>{{serviceInfo.create_time }}</span>
|
||||
</div>
|
||||
<div class="col-sm-3">
|
||||
<label>Status:</label>
|
||||
<span ng-style="{'color':serviceInfo.is_valid?'#00A65A':'#DD4B39'}">{{serviceInfo.is_valid?'已启用':'未启用' }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box box-warning">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-horizontal">
|
||||
<!--<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Source</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.source=='ALL'}"
|
||||
ng-click="params.source='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.source=='system'}"
|
||||
ng-click="params.source='system';loadTradeLogs(1)">System</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.source=='R跨境商城'}"
|
||||
ng-click="params.source='R跨境商城';loadTradeLogs(1)">R跨境商城</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Status</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='ALL'}"
|
||||
ng-click="params.status='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='PAID'}"
|
||||
ng-click="params.status='PAID';loadTradeLogs(1)">Payment Success</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='ALL_REFUNDED'}"
|
||||
ng-click="params.status='ALL_REFUNDED';loadTradeLogs(1)">All Refund</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='PARTIAL_REFUNDED'}"
|
||||
ng-click="params.status='PARTIAL_REFUNDED';loadTradeLogs(1)">Partial Refund</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='FULL_REFUNDED'}"
|
||||
ng-click="params.status='FULL_REFUNDED';loadTradeLogs(1)">Full Refund</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Channel</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALL'}"
|
||||
ng-click="params.channel='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='WECHAT'}"
|
||||
ng-click="params.channel='WECHAT';loadTradeLogs(1)">Wechat Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALIPAY'}"
|
||||
ng-click="params.channel='ALIPAY';loadTradeLogs(1)">Alipay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALIPAYONLINE'}"
|
||||
ng-click="params.channel='ALIPAYONLINE';loadTradeLogs(1)">AlipayOnline</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
|
||||
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
|
||||
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='HF'}"
|
||||
ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='RPAY'}"
|
||||
ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay+</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='YEEPAY'}"
|
||||
ng-click="params.channel='YEEPAY';loadTradeLogs(1)">Yeepay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='LAKALAPAY'}"
|
||||
ng-click="params.channel='LAKALAPAY';loadTradeLogs(1)">LakalaPay</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Date Range</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<div class="form-control-static form-inline">
|
||||
<div style="display: inline-block">
|
||||
<input class="form-control" id="date-from-input"
|
||||
ng-model="params.datefrom"
|
||||
uib-datepicker-popup size="10" placeholder="From"
|
||||
is-open="dateBegin.open" ng-click="dateBegin.open=true"
|
||||
datepicker-options="{maxDate:params.dateto||today}">
|
||||
</div>
|
||||
~
|
||||
<div style="display: inline-block">
|
||||
<input class="form-control" id="date-to-input"
|
||||
ng-model="params.dateto"
|
||||
uib-datepicker-popup size="10" placeholder="To"
|
||||
is-open="dateTo.open" ng-click="dateTo.open=true"
|
||||
datepicker-options="{minDate:params.datefrom,maxDate:today}">
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseToday()">Today</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseYesterday()">Yesterday</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseLast7Days()">Last 7 Days</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="thisMonth()">This Month</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="lastMonth()">Last Month</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-group col-xs-12" ng-if="currentUser.client.has_children">
|
||||
<label class="control-label col-xs-4 col-sm-2">Sub Partner</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':isAll}" ng-click="chooseClient('all')">All</a>
|
||||
<label ng-repeat="sub in clients">
|
||||
|
|
||||
<a role="button" ng-class="{'bg-primary':sub.client_id==chooseClientId}" ng-click="chooseClient(sub)">{{sub.short_name}}</a>
|
||||
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12" ng-if="level3Clients && showLevel3Clients">
|
||||
<label class="control-label col-xs-4 col-sm-2">Sub-Partner of sub-partners</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':isLevel3All}" ng-click="chooseLevel3Client('all')">All</a>
|
||||
<label ng-repeat="sub in level3Clients">
|
||||
|
|
||||
<a role="button" ng-class="{'bg-primary':sub.client_id==chooseLevel3ClientId}" ng-click="chooseLevel3Client(sub)">{{sub.short_name}}</a>
|
||||
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-success" type="button" ng-click="loadTradeLogs(1)">
|
||||
<i class="fa fa-search"></i> Search
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Transaction Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.paid_fee|currency:'AUD '"></span>
|
||||
<span class="small">( {{analysis.order_count}} Orders )</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 col-sm-6 col-xs-12" ng-if="!analysis.cny_display_amount">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Input Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.display_amount|currency:'AUD '"></span>
|
||||
<span class="small"> ( {{analysis.pre_display_amount | currency:'pre authorization '}} )</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 col-xs-12" ng-if="analysis.cny_display_amount">
|
||||
<div class="info-box info_box_bottom" ng-class="{'line_height':analysis.pre_display_amount||analysis.pre_cny_display_amount}">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text" >Input Amount</span>
|
||||
<span class="info-box-number box-number_font" style="margin-bottom: -3px;" ng-class="{line_height_:!analysis.pre_display_amount}"
|
||||
ng-bind="analysis.display_amount|currency:'AUD '"></span>
|
||||
<span style="font-size: 10px;line-height: 10px" ng-if="analysis.pre_display_amount">
|
||||
( {{analysis.pre_display_amount | currency:'pre authorization '}} )
|
||||
</span>
|
||||
<span class="info-box-number box-number_font" style="margin-bottom: -3px;"
|
||||
ng-if="analysis.cny_display_amount"
|
||||
ng-bind="analysis.cny_display_amount|currency:'CNY '"></span>
|
||||
<span style="font-size: 10px;line-height: 10px" ng-if="analysis.pre_cny_display_amount">
|
||||
( {{analysis.pre_cny_display_amount | currency:'pre authorization '}} )
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-red box-icon_small"><i class="ion ion-android-warning"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Refund Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.refund_fee|currency:'AUD '"></span>
|
||||
<span class=small" ng-if="analysis.pre_refund_fee">
|
||||
({{analysis.pre_refund_fee|currency:'pre authorization '}})
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-yellow box-icon_small"><i class="ion ion-ios-people"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Incremental Surcharge</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.incremental_surcharge|currency:'AUD '">
|
||||
</span>
|
||||
<span style="color: red" ng-if="analysis.refund_incremental_surcharge">({{analysis.all_incremental_surcharge}} - {{analysis.refund_incremental_surcharge}} = {{analysis.incremental_surcharge}}) </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title" style="display: inherit">Orders</h3>
|
||||
</div>
|
||||
<div class="box-body table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Client Order ID</th>
|
||||
<th>Order ID</th>
|
||||
<th>Amount</th>
|
||||
<th>Input Amount</th>
|
||||
<th>System Rate</th>
|
||||
<th>System Profit</th>
|
||||
<th>Incremental Rate</th>
|
||||
<th>Incremental Profit</th>
|
||||
<th>Status</th>
|
||||
<th>Create Time</th>
|
||||
<th>Operation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="trade in tradeLogs" ng-class="{warning:trade.clearing_status==2}">
|
||||
<td ng-bind="trade.client_order_id||'NOT PROVIDED'"></td>
|
||||
<td>
|
||||
<img src="/static/images/clearing-icon.png" uib-tooltip="clearing" ng-if="trade.clearing_status=='1'"/>
|
||||
<i class="fa fa-check-circle-o text-danger" uib-tooltip="Refund Audition Required" ng-if="trade.audition"></i>
|
||||
<img src="/static/images/royalpay_sign_s.png" uib-tooltip="RoyalPay" ng-if="trade.source=='system'"/>
|
||||
<img src="/static/images/yangmaimai_sign.png" uib-tooltip="R跨境商城" ng-if="trade.source=='R跨境商城'"/>
|
||||
<img src="/static/images/wechatpay_sign.png" uib-tooltip="Znyoo" ng-if="trade.channel=='Znyoo'"/>
|
||||
<img src="/static/images/wechatpay_sign.png" uib-tooltip="Wechat Pay" ng-if="trade.channel=='Wechat'"/>
|
||||
<img src="/static/images/bestpay_sign.png" uib-tooltip="BestPay" alt="BestPay" ng-if="trade.channel=='Bestpay'"/>
|
||||
<img src="/static/images/alipay_sign.png" uib-tooltip="Alipay" alt="Alipay" ng-if="trade.channel=='Alipay'"/>
|
||||
<img src="/static/images/alipay_sign.png" uib-tooltip="AlipayOnline" alt="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
|
||||
<img src="/static/images/jd_sign.png" uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
|
||||
<img src="/static/images/hf_sign.png" uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
|
||||
<img src="/static/images/rpayplus_sign.png" uib-tooltip="RPay+" ng-if="trade.channel=='Rpay'"/>
|
||||
<img src="/static/images/yeepay_sign.png" uib-tooltip="Yeepay" ng-if="trade.channel=='Yeepay'"/>
|
||||
<img src="/static/images/lakalapay_sign.png" uib-tooltip="LakalaPay" ng-if="trade.channel=='LakalaPay'"/>
|
||||
{{trade.order_id}}
|
||||
</td>
|
||||
<td>
|
||||
{{trade.total_amount|currency:trade.currency+' '}}
|
||||
<a ng-if="trade.refund_fee" class="text-danger" role="button">(-{{trade.refund_fee}})</a>
|
||||
</td>
|
||||
<td ng-bind="trade.display_amount|currency:trade.currency"></td>
|
||||
<td>{{(trade.surcharge_rate * 100 - trade.rate_value)| number : 2}}<span ng-if="trade.surcharge_rate">%</span></td>
|
||||
<td>{{(trade.total_surcharge-trade.incremental_surcharge) | number : 2 | currency:trade.currency}}</td>
|
||||
<td><span ng-if="trade.rate_value">{{trade.source}}:{{(trade.rate_value) | number : 2}}%</span></td>
|
||||
<td>{{trade.source}}:<span ng-if="trade.incremental_surcharge">{{trade.incremental_surcharge | currency:trade.currency}}</span><span ng-if="!trade.incremental_surcharge">{{0.00 | currency:trade.currency}}</span></td>
|
||||
<td ng-bind="trade.status|tradeStatus"></td>
|
||||
<td ng-bind="trade.create_time"></td>
|
||||
<td>
|
||||
<a role="button" class="text-bold" ng-click="showTradeDetail(trade)" title="Detail">
|
||||
<i class="fa fa-list-alt"></i>
|
||||
</a>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="box-footer" ng-if="tradeLogs.length">
|
||||
<uib-pagination class="pagination"
|
||||
total-items="pagination.totalCount"
|
||||
boundary-links="true"
|
||||
ng-model="pagination.page"
|
||||
items-per-page="pagination.limit"
|
||||
max-size="10"
|
||||
ng-change="loadTradeLogs()"
|
||||
previous-text="‹"
|
||||
next-text="›"
|
||||
first-text="«"
|
||||
last-text="»"></uib-pagination>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">Total Records:{{pagination.totalCount}};Total Pages:{{pagination.totalPages}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,38 @@
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="table-responsive col-sm-12">
|
||||
<button class="btn btn-success" role="button" ng-if="channelOptions.length>0" ng-click="newServiceChannelDialog()" style="margin: 5px">新增增值服务</button>
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Logo</th>
|
||||
<th>Channel</th>
|
||||
<th>Mode</th>
|
||||
<th>Rate Value</th>
|
||||
<th>Amount</th>
|
||||
<th>Operator</th>
|
||||
<th>Create Time</th>
|
||||
<th>Update Time</th>
|
||||
<th>Operation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="service in serviceAll">
|
||||
<td style="max-width: 160px;line-height: 90px"><img style=" height:80px; max-width: 180px;"ng-src="{{service.logo_url}}"/></td>
|
||||
<td style="line-height: 90px">{{service.channel}}</td>
|
||||
<td style="line-height: 90px">{{service.incremental_mode==1?'固定手续费':'固定金额扣款' }}</td>
|
||||
<td style="line-height: 90px">{{service.incremental_rate_value!=null?service.incremental_rate_value+'%':'-'}}</td>
|
||||
<td style="line-height: 90px">{{service.total_incremental_amount}}</td>
|
||||
<td style="line-height: 90px">{{service.operator}}</td>
|
||||
<td style="line-height: 90px">{{service.create_time}}</td>
|
||||
<td style="line-height: 90px">{{service.update_time}}</td>
|
||||
<td style="line-height: 90px">
|
||||
<a role="button" ng-click="editServiceChannelDialog(service)" ng-if="'011'|withRole"><i class="fa fa-edit"></i></a> |
|
||||
<a role="button" ng-click="updateStatus(service)">{{service.is_valid?'禁用':'启用'}}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,72 @@
|
||||
<div class="modal-header">
|
||||
<h4>{{isCreate?"New":"Edit"}} Service</h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="alert alert-danger" ng-if="errmsg" ng-bind="errmsg"></div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<form novalidate name="service_form" class="form-horizontal">
|
||||
<div class="form-group has-feedback" ng-if="isCreate"
|
||||
ng-class="{'has-error':service_form.channel.$invalid && service_form.channel.$dirty}">
|
||||
<label class="control-label col-sm-4">Service Channel:</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" name="channel" id="channel-input" required
|
||||
ng-model="model.channel"
|
||||
ng-options="channel for channel in model.channelOptions">
|
||||
</select>
|
||||
<span ng-messages="service_form.channel.$error" ng-if="service_form.channel.$dirty" ng-message="required">Required Field</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group has-feedback"
|
||||
ng-class="{'has-error':service_form.incremental_mode.$invalid && service_form.incremental_mode.$dirty}">
|
||||
<label class="control-label col-sm-4">Mode:</label>
|
||||
<div class="col-sm-6">
|
||||
<select class="form-control" name="incrementalMode" id="incrementalMode-input" required
|
||||
ng-model="model.incremental_mode">
|
||||
<option value="1">固定手续费</option>
|
||||
<option value="2">固定金额扣款</option>
|
||||
</select>
|
||||
<span ng-messages="service_form.incremental_mode.$error" ng-if="service_form.incremental_mode.$dirty" ng-message="required">Required Field</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group has-feedback" ng-if="model.incremental_mode==1" ng-class="{'has-error':service_form.incremental_rate_value.$invalid && service_form.incremental_rate_value.$dirty}">
|
||||
<label class="control-label col-sm-4" style="text-align: right">Rate Value:</label>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group">
|
||||
<input type="number" name="incremental_rate_value" stringToNumber2 class="form-control" ng-model="model.incremental_rate_value" max="100" min="0" step="0" id="incremental_rate_value" required>
|
||||
<div class="input-group-addon">%</div>
|
||||
</div>
|
||||
<div ng-messages="service_form.incremental_rate_value.$error" ng-if="service_form.incremental_rate_value.$dirty">
|
||||
<div class="small text-danger" ng-message="min">
|
||||
<i class="glyphicon glyphicon-alert"></i> No less than 0%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="max">
|
||||
<i class="glyphicon glyphicon-alert"></i> No less than 100%
|
||||
</div>
|
||||
<div class="small text-danger" ng-message="required">
|
||||
<i class="glyphicon glyphicon-alert"></i> Required Field
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group has-feedback" ng-if="model.incremental_mode==2" ng-class="{'has-error':service_form.total_incremental_amount.$invalid && service_form.total_incremental_amount.$dirty}">
|
||||
<label class="control-label col-sm-4" style="text-align: right">Amount:</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="number" name="total_incremental_amount" stringToNumber2 class="form-control" ng-model="model.total_incremental_amount"
|
||||
min="0" maxlength="20" id="total_incremental_amount" required>
|
||||
<div ng-messages="service_form.total_incremental_amount.$error" ng-if="service_form.total_incremental_amount.$dirty">
|
||||
<div class="small text-danger" ng-message="required">
|
||||
<i class="glyphicon glyphicon-alert"></i> Required Field
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-success" type="button" ng-click="save(service_form)" ng-disabled="ctrl.sending">Submit</button>
|
||||
<button class="btn btn-danger" type="button" ng-click="$dismiss()">Cancel</button>
|
||||
</div>
|
@ -0,0 +1,436 @@
|
||||
<style>
|
||||
.box-icon_small {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
font-size: 30px;
|
||||
line-height: 70px
|
||||
}
|
||||
|
||||
.info_box_bottom {
|
||||
min-height: 70px;
|
||||
margin-bottom: 0px
|
||||
}
|
||||
|
||||
.box-content_left {
|
||||
margin-left: 70px
|
||||
}
|
||||
|
||||
.box-number_font {
|
||||
font-size: 14px
|
||||
}
|
||||
|
||||
.line_height {
|
||||
line-height: 14px
|
||||
}
|
||||
|
||||
.line_height_ {
|
||||
line-height: 22px;
|
||||
}
|
||||
|
||||
.col-xs-1-5,
|
||||
.col-sm-1-5,
|
||||
.col-md-1-5,
|
||||
.col-lg-1-5 {
|
||||
position: relative;
|
||||
min-height: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.col-xs-1-5 {
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.col-sm-1-5 {
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 992px) {
|
||||
.col-md-1-5 {
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.col-lg-1-5 {
|
||||
width: 20%;
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<section class="content-header">
|
||||
<h1>Trade Logs</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-list-alt"></i> Transaction
|
||||
</li>
|
||||
<li class="active">Trade Logs</li>
|
||||
</ol>
|
||||
</section>
|
||||
<div class="content">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box-solid">
|
||||
<div class="box box-warning">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-horizontal">
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="col-xs-4 col-sm-2">
|
||||
<select class="form-control" ng-model="params.textType">
|
||||
<option value="all">ALL</option>
|
||||
<option value="client_moniker">Partner Code</option>
|
||||
<option value="client_name">Partner Name</option>
|
||||
<option value="sys_trans_id">Platform Transaction ID</option>
|
||||
<option value="channel">Channel</option>
|
||||
<option value="order_id">Order ID</option>
|
||||
<option value="remark">Remark</option>
|
||||
</select>
|
||||
</label>
|
||||
<div class="col-sm-4 col-xs-8">
|
||||
<input class="form-control" placeholder="Keyword"
|
||||
ng-enter="loadTradeLogs(1)"
|
||||
ng-model="params.searchText">
|
||||
</div>
|
||||
|
||||
<div class="col-sm-6 col-xs-8">
|
||||
<div ng-if="orgs" class="col-sm-6">
|
||||
<select id="org-clild" class="form-control" ng-model="params.org_id"
|
||||
ng-options="org.org_id as org.name group by org.type for org in orgs"
|
||||
ng-change="params.org_id2 = '';loadOrgs();loadTradeLogs(1)">
|
||||
<option value="">ALL Organizations</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div ng-if="((orgs_child.length > 1) && ('1000011'|withRole))&¶ms.org_id || ((orgs_child.length > 0) && ('1000000000000'|withRole))"
|
||||
class="col-sm-6">
|
||||
<select id="org-select" class="form-control" ng-model="params.org_id2"
|
||||
ng-options="org.org_id as org.name group by org.org_type for org in orgs_child"
|
||||
ng-change="loadTradeLogs(1)">
|
||||
<option value="">{{org2}}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Status</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='ALL'}"
|
||||
ng-click="params.status='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='PAID'}"
|
||||
ng-click="params.status='PAID';loadTradeLogs(1)">Payment Success</a>
|
||||
|
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='ALL_REFUNDED'}"
|
||||
ng-click="params.status='ALL_REFUNDED';loadTradeLogs(1)">All
|
||||
Refund</a> |
|
||||
<a role="button"
|
||||
ng-class="{'bg-primary':params.status=='PARTIAL_REFUNDED'}"
|
||||
ng-click="params.status='PARTIAL_REFUNDED';loadTradeLogs(1)">Partial
|
||||
Refund</a> |
|
||||
<a role="button"
|
||||
ng-class="{'bg-primary':params.status=='FULL_REFUNDED'}"
|
||||
ng-click="params.status='FULL_REFUNDED';loadTradeLogs(1)">Full
|
||||
Refund</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Channel</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALL'}"
|
||||
ng-click="params.channel='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='WECHAT'}"
|
||||
ng-click="params.channel='WECHAT';loadTradeLogs(1)">Wechat Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALIPAY'}"
|
||||
ng-click="params.channel='ALIPAY';loadTradeLogs(1)">Alipay</a> |
|
||||
<a role="button"
|
||||
ng-class="{'bg-primary':params.channel=='ALIPAYONLINE'}"
|
||||
ng-click="params.channel='ALIPAYONLINE';loadTradeLogs(1)">AlipayOnline</a>
|
||||
|
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
|
||||
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
|
||||
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='HF'}"
|
||||
ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='RPAY'}"
|
||||
ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay +</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='YEEPAY'}"
|
||||
ng-click="params.channel='YEEPAY';loadTradeLogs(1)">Yeepay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='LAKALAPAY'}"
|
||||
ng-click="params.channel='LAKALAPAY';loadTradeLogs(1)">LakalaPay</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Date Range</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<div class="form-control-static form-inline">
|
||||
<div style="display: inline-block">
|
||||
<input class="form-control" id="date-from-input"
|
||||
ng-model="params.datefrom"
|
||||
uib-datepicker-popup size="10" placeholder="From"
|
||||
is-open="dateBegin.open" ng-click="dateBegin.open=true"
|
||||
datepicker-options="{maxDate:params.dateto||today}">
|
||||
</div>
|
||||
~
|
||||
<div style="display: inline-block">
|
||||
<input class="form-control" id="date-to-input"
|
||||
ng-model="params.dateto"
|
||||
uib-datepicker-popup size="10" placeholder="To"
|
||||
is-open="dateTo.open" ng-click="dateTo.open=true"
|
||||
datepicker-options="{minDate:params.datefrom,maxDate:today}">
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseToday()">Today</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseYesterday()">Yesterday</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseLast7Days()">Last 7 Days</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="thisMonth()">This Month</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="lastMonth()">Last Month</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-group col-xs-12" ng-if="'1000000000'|withRole">
|
||||
<label class="control-label col-xs-4 col-sm-2">My Group</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':isAll}"
|
||||
ng-click="chooseBD('all')">All</a>
|
||||
<label ng-repeat="sub in bd_group_bds">
|
||||
| <a role="button"
|
||||
ng-class="{'bg-primary':sub.manager_id==chooseBDId}"
|
||||
ng-click="chooseBD(sub.manager_id)">{{sub.bd_name}}</a>
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<button class="btn btn-success" type="button" ng-click="loadTradeLogs(1)">
|
||||
<i class="fa fa-search"></i> Search
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-md-1-5 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i
|
||||
class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Transaction Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.paid_fee|currency:'AUD'"></span>
|
||||
<span class="small">( {{analysis.order_count}} Orders )</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1-5 col-sm-6 col-xs-12" ng-if="!analysis.cny_display_amount">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i
|
||||
class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Input Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.display_amount|currency:'AUD '"></span>
|
||||
<span class="small"> ( {{analysis.pre_display_amount | currency:'pre authorization '}} )</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1-5 col-sm-6 col-xs-12" ng-if="analysis.cny_display_amount">
|
||||
<div class="info-box info_box_bottom"
|
||||
ng-class="{'line_height':analysis.pre_display_amount||analysis.pre_cny_display_amount}">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i
|
||||
class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Input Amount</span>
|
||||
<span class="info-box-number box-number_font" style="margin-bottom: -3px;"
|
||||
ng-class="{line_height_:!analysis.pre_display_amount}"
|
||||
ng-bind="analysis.display_amount|currency:'AUD '"></span>
|
||||
<span style="font-size: 8px;line-height: 8px"
|
||||
ng-if="analysis.pre_display_amount">
|
||||
( {{analysis.pre_display_amount | currency:'pre authorization '}} )
|
||||
</span>
|
||||
<span class="info-box-number box-number_font" style="margin-bottom: -3px;"
|
||||
ng-if="analysis.cny_display_amount"
|
||||
ng-bind="analysis.cny_display_amount|currency:'CNY '"></span>
|
||||
<span style="font-size: 8px;line-height: 8px"
|
||||
ng-if="analysis.pre_cny_display_amount">
|
||||
( {{analysis.pre_cny_display_amount | currency:'pre authorization '}} )
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1-5 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-red box-icon_small"><i
|
||||
class="ion ion-android-warning"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Refund Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.refund_fee|currency:'AUD '"></span>
|
||||
<span class=small" ng-if="analysis.pre_refund_fee">
|
||||
({{analysis.pre_refund_fee|currency:'pre authorization '}})
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1-5 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-yellow box-icon_small"><i
|
||||
class="ion ion-ios-people"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Merchants</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.clients"></span>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-1-5 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-yellow box-icon_small"><i
|
||||
class="ion ion-ios-people"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Incremental Surcharge</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.incremental_surcharge|currency:'AUD '"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title" style="display: inherit">Trade Orders
|
||||
<span style="float: right;font-size: 14px;">Pre Authorization:<i class="fa fa-stop"
|
||||
aria-hidden="true"
|
||||
style="color: #fff2a5"></i></span>
|
||||
</h3>
|
||||
<a hidden class="pull-right text-bold" ng-if="'manual_refund_check'|withFunc" role="button"
|
||||
ng-click="confirmOrders()">Manual Confirm Orders</a>
|
||||
</div>
|
||||
<div class="box-body table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Partner</th>
|
||||
<th>Order ID</th>
|
||||
<th>Amount</th>
|
||||
<th>Input Amount</th>
|
||||
<th>System Rate</th>
|
||||
<th>System Profit</th>
|
||||
<th>R跨境商城 Rate</th>
|
||||
<th>R跨境商城 Profit</th>
|
||||
<th>Status</th>
|
||||
<th>Create Time</th>
|
||||
<th>Operation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="trade in tradeLogs" ng-class="{warning:trade.clearing_status==2}">
|
||||
<td>
|
||||
<a role="button" ui-sref="partners.detail({clientMoniker:trade.client_moniker})">
|
||||
{{trade.short_name}}({{trade.client_moniker}})
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
<img src="/static/images/royalpay_sign_s.png"
|
||||
uib-tooltip="RoyalPay" ng-if="trade.source=='system'"/>
|
||||
<img src="/static/images/yangmaimai_sign.png"
|
||||
uib-tooltip="R跨境商城" ng-if="trade.source=='R跨境商城'"/>
|
||||
<img src="/static/images/wechatpay_sign.png"
|
||||
uib-tooltip="WechatPay" ng-if="trade.channel=='Wechat'"/>
|
||||
<img src="/static/images/wechatpay_sign.png"
|
||||
uib-tooltip="Znyoo" ng-if="trade.channel=='Znyoo'"/>
|
||||
<img src="/static/images/bestpay_sign.png"
|
||||
uib-tooltip="BestPay" ng-if="trade.channel=='Bestpay'"/>
|
||||
<img src="/static/images/alipay_sign.png"
|
||||
uib-tooltip="Alipay" ng-if="trade.channel=='Alipay'"/>
|
||||
<img src="/static/images/alipay_sign.png"
|
||||
uib-tooltip="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
|
||||
<img src="/static/images/jd_sign.png"
|
||||
uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
|
||||
<img src="/static/images/hf_sign.png"
|
||||
uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
|
||||
<img src="/static/images/rpayplus_sign.png"
|
||||
uib-tooltip="Royal Pay" ng-if="trade.channel=='Rpay'"/>
|
||||
<img src="/static/images/yeepay_sign.png"
|
||||
uib-tooltip="Yeepay" ng-if="trade.channel=='Yeepay'"/>
|
||||
<img src="/static/images/lakalapay_sign.png"
|
||||
uib-tooltip="LakalaPay" ng-if="trade.channel=='LakalaPay'"/>
|
||||
{{trade.order_id}}
|
||||
</td>
|
||||
<td>
|
||||
{{trade.total_amount|currency:trade.currency}}
|
||||
<a ng-if="trade.refund_fee" class="text-danger" role="button"
|
||||
ng-click="showRefundLog(trade.order_id)">(-{{trade.refund_fee}})</a>
|
||||
</td>
|
||||
<td ng-bind="trade.display_amount|currency:trade.currency"></td>
|
||||
<td><span ng-if="trade.surcharge_rate">{{(trade.surcharge_rate * 100 - trade.rate_value)| number : 2}}%</span></td>
|
||||
<td>{{(trade.total_surcharge-trade.incremental_surcharge) | number : 2 | currency:trade.currency}}</td>
|
||||
<td><span ng-if="trade.rate_value">{{trade.source}}:{{(trade.rate_value) | number : 2}}%</span></td>
|
||||
<td><span ng-if="trade.incremental_surcharge">{{trade.source}}:{{trade.incremental_surcharge | currency:trade.currency}}</span></td>
|
||||
<td ng-bind="trade.status|tradeStatus"></td>
|
||||
<td ng-bind="trade.create_time"></td>
|
||||
<td>
|
||||
<a role="button" class="text-bold" ng-click="showTradeDetail(trade)" title="Detail">
|
||||
<i class="fa fa-list-alt"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="box-body" ng-if="tradeLogs.length">
|
||||
<uib-pagination class="pagination"
|
||||
total-items="pagination.totalCount"
|
||||
boundary-links="true"
|
||||
ng-model="pagination.page"
|
||||
items-per-page="pagination.limit"
|
||||
max-size="10"
|
||||
ng-change="loadTradeLogs()"
|
||||
previous-text="‹"
|
||||
next-text="›"
|
||||
first-text="«"
|
||||
last-text="»"></uib-pagination>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">Total Records:{{pagination.totalCount}};Total
|
||||
Pages:{{pagination.totalPages}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,388 @@
|
||||
<style>
|
||||
.cursor {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.div-display {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.i-rotate_90 {
|
||||
animation: rotate_90 1s forwards;
|
||||
-webkit-animation: rotate_90 1s forwards; /* Safari and Chrome */
|
||||
}
|
||||
|
||||
@keyframes rotate_90 {
|
||||
from {
|
||||
transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
|
||||
@-webkit-keyframes rotate_90 /* Safari and Chrome */
|
||||
{
|
||||
from {
|
||||
-webkit-transform: rotate(0deg);
|
||||
}
|
||||
to {
|
||||
-webkit-transform: rotate(90deg);
|
||||
}
|
||||
}
|
||||
.popover-color{
|
||||
background-color: #f7f7f7;
|
||||
border-bottom: 1px solid #ebebeb;
|
||||
color: black;
|
||||
}
|
||||
.popover-content button{
|
||||
display: inline-block;
|
||||
}
|
||||
.position_re{
|
||||
position: relative;
|
||||
}
|
||||
.position_re .position_ab{
|
||||
position: absolute;
|
||||
top: 90%;
|
||||
left: 90%;
|
||||
}
|
||||
|
||||
.box-icon_small{
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
font-size: 30px;
|
||||
line-height: 70px
|
||||
}
|
||||
.info_box_bottom{
|
||||
min-height:70px;
|
||||
margin-bottom:0px
|
||||
}
|
||||
.box-content_left{
|
||||
margin-left:70px
|
||||
}
|
||||
.box-number_font{
|
||||
font-size:14px;
|
||||
}
|
||||
.line_height{
|
||||
line-height: 14px
|
||||
}
|
||||
.line_height_{
|
||||
line-height: 22px;
|
||||
}
|
||||
</style>
|
||||
<section class="content-header">
|
||||
<h1>Incremental Orders</h1>
|
||||
<ol class="breadcrumb">
|
||||
<li>
|
||||
<i class="fa fa-comments-o"></i> Payment
|
||||
</li>
|
||||
<li class="active">Incremental Orders</li>
|
||||
</ol>
|
||||
</section>
|
||||
<div class="content">
|
||||
<div class="callout callout-info" ng-repeat="order in alerts">
|
||||
<h4><span style="font-size: 22px">{{order.display_amount|currency:order.currency+' '}}</span> Paid
|
||||
Success!</h4>
|
||||
<p>Pay Time:{{order.pay_time_local}}</p>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="box-solid">
|
||||
<div class="box box-warning">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="form-horizontal">
|
||||
<!--<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Source</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.source=='ALL'}"
|
||||
ng-click="params.source='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.source=='system'}"
|
||||
ng-click="params.source='system';loadTradeLogs(1)">System</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.source=='R跨境商城'}"
|
||||
ng-click="params.source='R跨境商城';loadTradeLogs(1)">R跨境商城</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>-->
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Status</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='ALL'}"
|
||||
ng-click="params.status='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='PAID'}"
|
||||
ng-click="params.status='PAID';loadTradeLogs(1)">Payment Success</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='ALL_REFUNDED'}"
|
||||
ng-click="params.status='ALL_REFUNDED';loadTradeLogs(1)">All Refund</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='PARTIAL_REFUNDED'}"
|
||||
ng-click="params.status='PARTIAL_REFUNDED';loadTradeLogs(1)">Partial Refund</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.status=='FULL_REFUNDED'}"
|
||||
ng-click="params.status='FULL_REFUNDED';loadTradeLogs(1)">Full Refund</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Channel</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALL'}"
|
||||
ng-click="params.channel='ALL';loadTradeLogs(1)">All</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='WECHAT'}"
|
||||
ng-click="params.channel='WECHAT';loadTradeLogs(1)">Wechat Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALIPAY'}"
|
||||
ng-click="params.channel='ALIPAY';loadTradeLogs(1)">Alipay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='ALIPAYONLINE'}"
|
||||
ng-click="params.channel='ALIPAYONLINE';loadTradeLogs(1)">AlipayOnline</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='BESTPAY'}"
|
||||
ng-click="params.channel='BESTPAY';loadTradeLogs(1)">BestPay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='JD'}"
|
||||
ng-click="params.channel='JD';loadTradeLogs(1)">JD Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='HF'}"
|
||||
ng-click="params.channel='HF';loadTradeLogs(1)">HF Pay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='RPAY'}"
|
||||
ng-click="params.channel='RPAY';loadTradeLogs(1)">RPay+</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='YEEPAY'}"
|
||||
ng-click="params.channel='YEEPAY';loadTradeLogs(1)">Yeepay</a> |
|
||||
<a role="button" ng-class="{'bg-primary':params.channel=='LAKALAPAY'}"
|
||||
ng-click="params.channel='LAKALAPAY';loadTradeLogs(1)">LakalaPay</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12">
|
||||
<label class="control-label col-xs-4 col-sm-2">Date Range</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<div class="form-control-static form-inline">
|
||||
<div style="display: inline-block">
|
||||
<input class="form-control" id="date-from-input"
|
||||
ng-model="params.datefrom"
|
||||
uib-datepicker-popup size="10" placeholder="From"
|
||||
is-open="dateBegin.open" ng-click="dateBegin.open=true"
|
||||
datepicker-options="{maxDate:params.dateto||today}">
|
||||
</div>
|
||||
~
|
||||
<div style="display: inline-block">
|
||||
<input class="form-control" id="date-to-input"
|
||||
ng-model="params.dateto"
|
||||
uib-datepicker-popup size="10" placeholder="To"
|
||||
is-open="dateTo.open" ng-click="dateTo.open=true"
|
||||
datepicker-options="{minDate:params.datefrom,maxDate:today}">
|
||||
</div>
|
||||
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseToday()">Today</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseYesterday()">Yesterday</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="chooseLast7Days()">Last 7 Days</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="thisMonth()">This Month</a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a role="button" class="btn btn-default btn-sm"
|
||||
ng-click="lastMonth()">Last Month</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="form-group col-xs-12" ng-if="currentUser.client.has_children">
|
||||
<label class="control-label col-xs-4 col-sm-2">Sub Partner</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':isAll}" ng-click="chooseClient('all')">All</a>
|
||||
<label ng-repeat="sub in clients">
|
||||
|
|
||||
<a role="button" ng-class="{'bg-primary':sub.client_id==chooseClientId}" ng-click="chooseClient(sub)">{{sub.short_name}}</a>
|
||||
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group col-xs-12" ng-if="level3Clients && showLevel3Clients">
|
||||
<label class="control-label col-xs-4 col-sm-2">Sub-Partner of sub-partners</label>
|
||||
<div class="col-sm-10 col-xs-8">
|
||||
<p class="form-control-static">
|
||||
<a role="button" ng-class="{'bg-primary':isLevel3All}" ng-click="chooseLevel3Client('all')">All</a>
|
||||
<label ng-repeat="sub in level3Clients">
|
||||
|
|
||||
<a role="button" ng-class="{'bg-primary':sub.client_id==chooseLevel3ClientId}" ng-click="chooseLevel3Client(sub)">{{sub.short_name}}</a>
|
||||
|
||||
</label>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<button class="btn btn-success" type="button" ng-click="loadTradeLogs(1)">
|
||||
<i class="fa fa-search"></i> Search
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<div class="row">
|
||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Transaction Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.paid_fee|currency:'AUD '"></span>
|
||||
<span class="small">( {{analysis.order_count}} Orders )</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-3 col-sm-6 col-xs-12" ng-if="!analysis.cny_display_amount">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Input Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.display_amount|currency:'AUD '"></span>
|
||||
<span class="small"> ( {{analysis.pre_display_amount | currency:'pre authorization '}} )</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 col-xs-12" ng-if="analysis.cny_display_amount">
|
||||
<div class="info-box info_box_bottom" ng-class="{'line_height':analysis.pre_display_amount||analysis.pre_cny_display_amount}">
|
||||
<span class="info-box-icon bg-aqua box-icon_small"><i class="ion ion-social-usd"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text" >Input Amount</span>
|
||||
<span class="info-box-number box-number_font" style="margin-bottom: -3px;" ng-class="{line_height_:!analysis.pre_display_amount}"
|
||||
ng-bind="analysis.display_amount|currency:'AUD '"></span>
|
||||
<span style="font-size: 10px;line-height: 10px" ng-if="analysis.pre_display_amount">
|
||||
( {{analysis.pre_display_amount | currency:'pre authorization '}} )
|
||||
</span>
|
||||
<span class="info-box-number box-number_font" style="margin-bottom: -3px;"
|
||||
ng-if="analysis.cny_display_amount"
|
||||
ng-bind="analysis.cny_display_amount|currency:'CNY '"></span>
|
||||
<span style="font-size: 10px;line-height: 10px" ng-if="analysis.pre_cny_display_amount">
|
||||
( {{analysis.pre_cny_display_amount | currency:'pre authorization '}} )
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-red box-icon_small"><i class="ion ion-android-warning"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Refund Amount</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.refund_fee|currency:'AUD '"></span>
|
||||
<span class=small" ng-if="analysis.pre_refund_fee">
|
||||
({{analysis.pre_refund_fee|currency:'pre authorization '}})
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3 col-sm-6 col-xs-12">
|
||||
<div class="info-box info_box_bottom">
|
||||
<span class="info-box-icon bg-yellow box-icon_small"><i class="ion ion-ios-people"></i></span>
|
||||
<div class="info-box-content box-content_left">
|
||||
<span class="info-box-text">Incremental Surcharge</span>
|
||||
<span class="info-box-number box-number_font"
|
||||
ng-bind="analysis.incremental_surcharge|currency:'AUD '">
|
||||
</span>
|
||||
<span style="color: red" ng-if="analysis.refund_incremental_surcharge">({{analysis.all_incremental_surcharge}} - {{analysis.refund_incremental_surcharge}} = {{analysis.incremental_surcharge}}) </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="box-header">
|
||||
<h3 class="box-title" style="display: inherit">Orders</h3>
|
||||
</div>
|
||||
<div class="box-body table-responsive">
|
||||
<table class="table table-bordered table-hover table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Client Order ID</th>
|
||||
<th>Order ID</th>
|
||||
<th>Amount</th>
|
||||
<th>Input Amount</th>
|
||||
<th>System Rate</th>
|
||||
<th>System Profit</th>
|
||||
<th>Incremental Rate</th>
|
||||
<th>Incremental Profit</th>
|
||||
<th>Status</th>
|
||||
<th>Create Time</th>
|
||||
<th>Operation</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="trade in tradeLogs" ng-class="{warning:trade.clearing_status==2}">
|
||||
<td ng-bind="trade.client_order_id||'NOT PROVIDED'"></td>
|
||||
<td>
|
||||
<img src="/static/images/clearing-icon.png" uib-tooltip="clearing" ng-if="trade.clearing_status=='1'"/>
|
||||
<i class="fa fa-check-circle-o text-danger" uib-tooltip="Refund Audition Required" ng-if="trade.audition"></i>
|
||||
<img src="/static/images/royalpay_sign_s.png" uib-tooltip="RoyalPay" ng-if="trade.source=='system'"/>
|
||||
<img src="/static/images/yangmaimai_sign.png" uib-tooltip="R跨境商城" ng-if="trade.source=='R跨境商城'"/>
|
||||
<img src="/static/images/wechatpay_sign.png" uib-tooltip="Znyoo" ng-if="trade.channel=='Znyoo'"/>
|
||||
<img src="/static/images/wechatpay_sign.png" uib-tooltip="Wechat Pay" ng-if="trade.channel=='Wechat'"/>
|
||||
<img src="/static/images/bestpay_sign.png" uib-tooltip="BestPay" alt="BestPay" ng-if="trade.channel=='Bestpay'"/>
|
||||
<img src="/static/images/alipay_sign.png" uib-tooltip="Alipay" alt="Alipay" ng-if="trade.channel=='Alipay'"/>
|
||||
<img src="/static/images/alipay_sign.png" uib-tooltip="AlipayOnline" alt="AlipayOnline" ng-if="trade.channel=='AlipayOnline'"/>
|
||||
<img src="/static/images/jd_sign.png" uib-tooltip="JD Pay" ng-if="trade.channel=='jd'"/>
|
||||
<img src="/static/images/hf_sign.png" uib-tooltip="HF Pay" ng-if="trade.channel=='hf'"/>
|
||||
<img src="/static/images/rpayplus_sign.png" uib-tooltip="RPay+" ng-if="trade.channel=='Rpay'"/>
|
||||
<img src="/static/images/yeepay_sign.png" uib-tooltip="Yeepay" ng-if="trade.channel=='Yeepay'"/>
|
||||
<img src="/static/images/lakalapay_sign.png" uib-tooltip="LakalaPay" ng-if="trade.channel=='LakalaPay'"/>
|
||||
{{trade.order_id}}
|
||||
</td>
|
||||
<td>
|
||||
{{trade.total_amount|currency:trade.currency+' '}}
|
||||
<a ng-if="trade.refund_fee" class="text-danger" role="button">(-{{trade.refund_fee}})</a>
|
||||
</td>
|
||||
<td ng-bind="trade.display_amount|currency:trade.currency"></td>
|
||||
<td>{{(trade.surcharge_rate * 100 - trade.rate_value)| number : 2}}<span ng-if="trade.surcharge_rate">%</span></td>
|
||||
<td>{{(trade.total_surcharge-trade.incremental_surcharge) | number : 2 | currency:trade.currency}}</td>
|
||||
<td><span ng-if="trade.rate_value">{{trade.source}}:{{(trade.rate_value) | number : 2}}%</span></td>
|
||||
<td>{{trade.source}}:<span ng-if="trade.incremental_surcharge">{{trade.incremental_surcharge | currency:trade.currency}}</span><span ng-if="!trade.incremental_surcharge">{{0.00 | currency:trade.currency}}</span></td>
|
||||
<td ng-bind="trade.status|tradeStatus"></td>
|
||||
<td ng-bind="trade.create_time"></td>
|
||||
<td>
|
||||
<a role="button" class="text-bold" ng-click="showTradeDetail(trade)" title="Detail">
|
||||
<i class="fa fa-list-alt"></i>
|
||||
</a>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
<div class="box-footer" ng-if="tradeLogs.length">
|
||||
<uib-pagination class="pagination"
|
||||
total-items="pagination.totalCount"
|
||||
boundary-links="true"
|
||||
ng-model="pagination.page"
|
||||
items-per-page="pagination.limit"
|
||||
max-size="10"
|
||||
ng-change="loadTradeLogs()"
|
||||
previous-text="‹"
|
||||
next-text="›"
|
||||
first-text="«"
|
||||
last-text="»"></uib-pagination>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">Total Records:{{pagination.totalCount}};Total Pages:{{pagination.totalPages}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
Loading…
Reference in new issue