Merge remote-tracking branch 'origin/develop' into develop

master
todking 8 years ago
commit a2971575e1

@ -2,6 +2,7 @@ package au.com.royalpay.payment.manage.citypartner.core;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import javax.servlet.http.HttpServletResponse;
import java.util.List; import java.util.List;
/** /**
@ -43,6 +44,5 @@ public interface CityPartnerPrizeService {
JSONObject getSenior(String monthStr, String orgId); JSONObject getSenior(String monthStr, String orgId);
void exportMonthFiles(String monthStr, HttpServletResponse httpResponse) throws Exception;
} }

@ -31,6 +31,11 @@ import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.time.DateFormatUtils; import org.apache.commons.lang3.time.DateFormatUtils;
import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.lang3.time.DateUtils;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.*;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -684,7 +689,6 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService {
} }
@Override @Override
@Transactional @Transactional
public void generateReferrer(String monthStr) { public void generateReferrer(String monthStr) {
@ -857,8 +861,6 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService {
// } // }
} }
@Override @Override
@ -1224,4 +1226,73 @@ public class CityPartnerPrizeServiceImpl implements CityPartnerPrizeService {
return financialSeniorPartnerCommissionMapper.find(year, month, orgId); return financialSeniorPartnerCommissionMapper.find(year, month, orgId);
} }
@Override
public void exportMonthFiles(String monthStr, HttpServletResponse resp) throws Exception {
OutputStream ous = null;
Date monthDate = parseMonth(monthStr);
Calendar monthCal = Calendar.getInstance();
monthCal.setTime(monthDate);
int year = monthCal.get(Calendar.YEAR);
int month = monthCal.get(Calendar.MONTH) + 1;
List<JSONObject> report = financialPartnerCommissionMapper.listWithOrgInfo(year, month);
if (report != null) {
resp.setContentType("application/octet-stream;");
resp.addHeader("Content-Disposition", "attachment; filename=" + "CityPartner_Commission_Info_" + monthStr + ".xls");
ous = resp.getOutputStream();
HSSFWorkbook wb = new HSSFWorkbook();
Cell cell = null;
HSSFFont font = wb.createFont();
font.setBoldweight(Font.BOLDWEIGHT_BOLD);
font.setFontHeightInPoints((short) 10);
CellStyle titleStyle = wb.createCellStyle();
titleStyle.setFont(font);
HSSFCellStyle style = wb.createCellStyle();
style.setFillForegroundColor(HSSFColor.RED.index);
style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
Sheet sheet = wb.createSheet("CityPartner_Commission_Info_" + month);
sheet.setDefaultColumnWidth(20);
int rowNum = 0;
Row row = sheet.createRow(rowNum);
String[] CommissionTitle = {"City Partner Name", "Transaction Amount", "Total Charge", "RoyalPay Charge", "Net Charge", "City Partner Charge", "Share Charge", "Type"};
for (int i = 0; i < CommissionTitle.length; i++) {
cell = row.createCell(i, Cell.CELL_TYPE_STRING);
cell.setCellStyle(titleStyle);
cell.setCellValue(CommissionTitle[i]);
}
for (JSONObject log : report) {
row = sheet.createRow(++rowNum);
StringBuffer name = new StringBuffer(log.getString("name"));
if (log.get("parent_org_id") == null) {
name.append("(一级代理)");
} else {
name.append("(二级代理)");
}
String type = "";
switch (log.getIntValue("commission_type")) {
case 1:
type = "渠道计算法";
break;
case 2:
type = "总交易额比例";
break;
case 3:
type = "收益比例";
break;
default:
break;
}
row.createCell(0, Cell.CELL_TYPE_STRING).setCellValue(name.toString());
row.createCell(1, Cell.CELL_TYPE_STRING).setCellValue(log.getBigDecimal("gross_amount") == null ? BigDecimal.ZERO.toPlainString() : log.getBigDecimal("gross_amount").toPlainString());
row.createCell(2, Cell.CELL_TYPE_STRING).setCellValue(log.getBigDecimal("total_charge") == null ? BigDecimal.ZERO.toPlainString() : log.getBigDecimal("total_charge").toPlainString());
row.createCell(3, Cell.CELL_TYPE_STRING).setCellValue(log.getBigDecimal("royalpay_charge") == null ? BigDecimal.ZERO.toPlainString() : log.getBigDecimal("royalpay_charge").toPlainString());
row.createCell(4, Cell.CELL_TYPE_STRING).setCellValue(log.getBigDecimal("net_charge") == null ? BigDecimal.ZERO.toPlainString() : log.getBigDecimal("net_charge").toPlainString());
row.createCell(5, Cell.CELL_TYPE_STRING).setCellValue(log.getBigDecimal("org_charge") == null ? BigDecimal.ZERO.toPlainString() : log.getBigDecimal("org_charge").toPlainString());
row.createCell(6, Cell.CELL_TYPE_STRING).setCellValue(log.getBigDecimal("share_charge") == null ? BigDecimal.ZERO.toPlainString() : log.getBigDecimal("share_charge").toPlainString());
row.createCell(7, Cell.CELL_TYPE_STRING).setCellValue(type);
}
wb.write(ous);
ous.flush();
}
}
} }

@ -20,6 +20,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import javax.annotation.Resource; import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
/** /**
* Created by yixian on 2017-03-08. * Created by yixian on 2017-03-08.
@ -42,6 +43,11 @@ public class CityPartnerPrizeController {
return cityPartnerPrizeService.listAvailableMonths(year); return cityPartnerPrizeService.listAvailableMonths(year);
} }
@RequestMapping(value = "/export/{monthStr}", method = RequestMethod.GET)
public void exportExcel(@PathVariable String monthStr,HttpServletResponse httpResponse) throws Exception {
cityPartnerPrizeService.exportMonthFiles(monthStr,httpResponse);
}
@RequestMapping(value = "/months/{monthStr}") @RequestMapping(value = "/months/{monthStr}")
public JSONObject getCityPartnersPrizeInfo(@PathVariable String monthStr) { public JSONObject getCityPartnersPrizeInfo(@PathVariable String monthStr) {
List<JSONObject> partnerPrizeInfos = cityPartnerPrizeService.getCityPartnerPrizeInfoList(monthStr); List<JSONObject> partnerPrizeInfos = cityPartnerPrizeService.getCityPartnerPrizeInfoList(monthStr);

@ -1,11 +1,11 @@
package au.com.royalpay.payment.manage.mappers.system; 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.AutoMapper;
import cn.yixblog.support.mybatis.autosql.annotations.AutoSql; import cn.yixblog.support.mybatis.autosql.annotations.AutoSql;
import cn.yixblog.support.mybatis.autosql.annotations.SqlType; import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import org.joda.time.DateTime;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -22,4 +22,6 @@ public interface ClearingDistributedSurchargeMapper {
List<JSONObject> getMonthDetailByClientId(@Param("datefrom") Date datefrom, @Param("dateto") Date dateto); List<JSONObject> getMonthDetailByClientId(@Param("datefrom") Date datefrom, @Param("dateto") Date dateto);
List<JSONObject> findTransactionsByDate(JSONObject params); List<JSONObject> findTransactionsByDate(JSONObject params);
List<JSONObject> listUnClearedByMonth(@Param("dateto") DateTime dateTo);
} }

@ -6,7 +6,6 @@ import cn.yixblog.support.mybatis.autosql.annotations.SqlType;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List; import java.util.List;

@ -11,7 +11,7 @@ import au.com.royalpay.payment.tools.exceptions.ServerErrorException;
import au.com.royalpay.payment.tools.lock.Locker; import au.com.royalpay.payment.tools.lock.Locker;
import au.com.royalpay.payment.tools.permission.enums.ManagerRole; import au.com.royalpay.payment.tools.permission.enums.ManagerRole;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.time.DateFormatUtils; import org.joda.time.DateTime;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -19,10 +19,11 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.ArrayList; import java.util.Comparator;
import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Service @Service
public class SurchargeAccountServiceImpl implements SurchargeAccountService { public class SurchargeAccountServiceImpl implements SurchargeAccountService {
@ -42,27 +43,44 @@ public class SurchargeAccountServiceImpl implements SurchargeAccountService{
@Override @Override
@Transactional @Transactional
public void generatorMonthDetail() { public void generatorMonthDetail() {
Calendar monthCal = Calendar.getInstance(); DateTime dateTo = DateTime.now().withMillisOfDay(0).withDayOfMonth(1);
monthCal.setTime(new Date()); logger.info("===============Start generator surcharge account month detail==============={}", new Date());
monthCal.set(Calendar.DAY_OF_MONTH, 1); List<JSONObject> surchargeTransactions = clearingDistributedSurchargeMapper.listUnClearedByMonth(dateTo);
monthCal.set(Calendar.HOUR_OF_DAY, 0); Map<Integer, List<JSONObject>> clientsDistributed = surchargeTransactions.stream().collect(Collectors.groupingBy(trans -> trans.getInteger("client_id")));
monthCal.set(Calendar.MINUTE, 0); for (Map.Entry<Integer, List<JSONObject>> clientEntry : clientsDistributed.entrySet()) {
monthCal.set(Calendar.SECOND, 0); int clientId = clientEntry.getKey();
Date dateto = monthCal.getTime(); List<JSONObject> surchargeTrans = clientEntry.getValue();
monthCal.set(Calendar.MONTH, (monthCal.get(Calendar.MONTH) - 1)); surchargeTrans.sort(Comparator.comparing(trans -> trans.getDate("create_time")));
Date datefrom = monthCal.getTime(); JSONObject detail = new JSONObject();
logger.info("===============Start generator surcharge account month detail===============" + new Date()); detail.put("client_id", clientId);
List<JSONObject> thisMonthDetail = clearingDistributedSurchargeMapper.getMonthDetailByClientId(datefrom, dateto); detail.put("settle_month", dateTo.toString("yyyy-MM"));
logger.info("this month details : " + thisMonthDetail.toString()); BigDecimal creditAmount = surchargeTrans.stream()
for (JSONObject detail : thisMonthDetail) { .filter(trans -> "Credit".equals(trans.getString("type")))
.map(trans -> trans.getBigDecimal("amount"))
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
BigDecimal debitAmount = surchargeTrans.stream()
.filter(trans -> "Debit".equals(trans.getString("type")))
.map(trans -> trans.getBigDecimal("amount"))
.reduce(BigDecimal::add).orElse(BigDecimal.ZERO);
detail.put("credit_amount", creditAmount);
detail.put("debit_amount", debitAmount);
JSONObject lastTrans = surchargeTrans.stream().max(Comparator.comparing(trans -> trans.getDate("create_time")))
.orElse(null);
BigDecimal postBalance;
if (lastTrans == null) {
JSONObject account = clientsSurchargeAccountsMapper.find(clientId);
postBalance = account == null ? BigDecimal.ZERO : account.getBigDecimal("balance");
} else {
postBalance = lastTrans.getBigDecimal("post_balance");
}
detail.put("post_balance", postBalance);
detail.put("send_mail", 0); detail.put("send_mail", 0);
detail.put("wx_send", 0); detail.put("wx_send", 0);
detail.put("settle_month", DateFormatUtils.format(datefrom, "yyyy-MM"));
detail.put("create_time", new Date()); detail.put("create_time", new Date());
detail.put("is_valid", 0); detail.put("is_valid", 0);
financialSurchargeAccountDetailMapper.save(detail); financialSurchargeAccountDetailMapper.save(detail);
} }
logger.info("===============generator OVER===============" + new Date()); logger.info("===============generator OVER==============={}", new Date());
} }
@Override @Override

@ -130,6 +130,12 @@ settle.abafile.bank.ANZ.bsb=013006
settle.abafile.bank.ANZ.account-no=837022519 settle.abafile.bank.ANZ.account-no=837022519
settle.abafile.bank.ANZ.account-name=Tunnel Show Pty Ltd settle.abafile.bank.ANZ.account-name=Tunnel Show Pty Ltd
settle.abafile.bank.NAB.manual-sending=true
settle.abafile.bank.NAB.bank=NAB
settle.abafile.bank.NAB.apca=514624
settle.abafile.bank.NAB.bsb=013006
settle.abafile.bank.NAB.account-no=837022519
settle.abafile.bank.NAB.account-name=Tunnel Show Pty Ltd
# 瀚银Secure # 瀚银Secure
app.hanyin-secure.pid=ROYALPAY app.hanyin-secure.pid=ROYALPAY

@ -27,9 +27,13 @@
SELECT SELECT
sum(c.gross_amount) gross_amount, sum(c.total_charge) total_charge, sum(c.gross_amount) gross_amount, sum(c.total_charge) total_charge,
sum(c.royalpay_charge) royalpay_charge, sum(c.org_charge) org_charge, sum(c.royalpay_charge) royalpay_charge, sum(c.org_charge) org_charge,
sum(c.net_charge) net_charge,
sum(c.share_charge) share_charge,
c.commission_type,
o.parent_org_id,
o.name `name`, o.org_id org_id o.name `name`, o.org_id org_id
FROM financial_partner_commission c FROM financial_partner_commission c
INNER JOIN sys_org o ON o.org_id = c.org_id and o.type=0 INNER JOIN sys_org o ON o.org_id = c.org_id
WHERE c.year = #{year} AND c.month = #{month} WHERE c.year = #{year} AND c.month = #{month}
GROUP BY `name` GROUP BY `name`
</select> </select>

@ -3,31 +3,47 @@
<mapper namespace="au.com.royalpay.payment.manage.mappers.system.ClearingDistributedSurchargeMapper"> <mapper namespace="au.com.royalpay.payment.manage.mappers.system.ClearingDistributedSurchargeMapper">
<select id="getMonthDetailByClientId" resultType="com.alibaba.fastjson.JSONObject"> <select id="getMonthDetailByClientId" resultType="com.alibaba.fastjson.JSONObject">
<![CDATA[ <![CDATA[
SELECT d.client_id,c.client_moniker,c.company_name, SELECT d.client_id,
c.client_moniker,
c.company_name,
SUM(IF(d.type = 'Debit', total_surcharge, -total_surcharge)) total_surcharge, SUM(IF(d.type = 'Debit', total_surcharge, -total_surcharge)) total_surcharge,
SUM(IF(d.type = 'Credit', amount, 0)) credit_amount, SUM(IF(d.type = 'Credit', amount, 0)) credit_amount,
SUM(IF(d.type = 'Debit', amount, 0)) debit_amount, SUM(IF(d.type = 'Debit', amount, 0)) debit_amount,
SUM(IF(d.type = 'Debit', total_surcharge, 0)) total_surcharge SUM(IF(d.type = 'Debit', total_surcharge, 0)) total_surcharge
FROM log_clearing_distributed_surcharge d INNER JOIN sys_clients c ON c.client_id=d.client_id FROM log_clearing_distributed_surcharge d
WHERE d.create_time >=#{datefrom} AND d.create_time < #{dateto} INNER JOIN sys_clients c ON c.client_id = d.client_id
WHERE d.create_time >= #{datefrom}
AND d.create_time < #{dateto}
AND c.is_valid = 1 AND c.is_valid = 1
GROUP BY d.client_id GROUP BY d.client_id
]]> ]]>
</select> </select>
<select id="findTransactions" resultType="com.alibaba.fastjson.JSONObject"> <select id="findTransactions" resultType="com.alibaba.fastjson.JSONObject">
<![CDATA[ <![CDATA[
SELECT * FROM log_clearing_distributed_surcharge WHERE client_id = #{client_id} SELECT *
FROM log_clearing_distributed_surcharge
WHERE client_id = #{client_id}
ORDER BY create_time DESC ORDER BY create_time DESC
]]> ]]>
</select> </select>
<select id="findTransactionsByDate" resultType="com.alibaba.fastjson.JSONObject"> <select id="findTransactionsByDate" resultType="com.alibaba.fastjson.JSONObject">
<![CDATA[ <![CDATA[
SELECT * FROM log_clearing_distributed_surcharge WHERE client_id = #{client_id} SELECT *
FROM log_clearing_distributed_surcharge
WHERE client_id = #{client_id}
AND year(create_time) = #{year} AND year(create_time) = #{year}
AND month(create_time) = #{month} AND month(create_time) = #{month}
ORDER BY create_time DESC ORDER BY create_time DESC
]]> ]]>
</select> </select>
<select id="listUnClearedByMonth" resultType="com.alibaba.fastjson.JSONObject">
<![CDATA[
select d.*
from log_clearing_distributed_surcharge d
where d.bill_id is null
and d.create_time < #{dateto}
]]>
</select>
</mapper> </mapper>

@ -778,7 +778,7 @@ margin-bottom: 10%;"/>
</li> </li>
<li ui-sref-active="active" ng-if="('bdprize'|withModule)&&(currentUser.org_id==null||currentUser.org_id==1)"> <li ui-sref-active="active" ng-if="('bdprize'|withModule)&&(currentUser.org_id==null||currentUser.org_id==1)">
<a ui-sref="analysis_bd.bd_data_analysis" ui-sref-opts="{reload:true}"> <a ui-sref="analysis_bd.bd_data_analysis" ui-sref-opts="{reload:true}">
<i class="fa fa-usd"></i> <span>BD数据分析|BD Data Analysis</span> <i class="fa fa-usd"></i> <span>BD团队分析|BD Team Analysis</span>
</a> </a>
</li> </li>
<li ui-sref-active="active" ng-if="'10000000001000'|withRole"> <li ui-sref-active="active" ng-if="'10000000001000'|withRole">

@ -59,7 +59,7 @@ define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) {
$scope.getBDTeamKpiEcharts = function(data){ $scope.getBDTeamKpiEcharts = function(data){
var BDTeamKpi = { var BDTeamKpi = {
tooltip : { tooltip : {
formatter: "{a} <br/>{c} {b}" formatter: "{b} <br/> {a} {c}% "
}, },
toolbox: { toolbox: {
show : true, show : true,
@ -106,7 +106,7 @@ define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) {
fontWeight: 'bolder' fontWeight: 'bolder'
} }
}, },
data:[{value: 0, name: '完成度'}] data:[{value: 0, name: ''}]
}, },
{ {
name:'KPI', name:'KPI',
@ -267,7 +267,7 @@ define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) {
}, },
series : [ series : [
{ {
name:'业务指标', name:'KPI完成比例',
type:'gauge', type:'gauge',
startAngle: 180, startAngle: 180,
endAngle: 0, endAngle: 0,
@ -327,17 +327,17 @@ define(['angular', 'uiBootstrap', 'uiRouter'], function (angular) {
} }
] ]
}; };
bdKpi.series[0].data[0] = {"value":(data.total_amount/data.kpi_amount*100).toFixed(2),"name":data.bd_name + "完成度"}; bdKpi.series[0].data[0] = {"value":(data.total_amount/data.kpi_amount*100).toFixed(2),"name":data.bd_name};
return bdKpi; return bdKpi;
} }
$scope.filterBdType = function (type) { $scope.filterBdType = function (type) {
switch (type) { switch (type) {
case 1: case 1:
return 'Sydney'; return 'Sydney Team';
case 2: case 2:
return 'KA Manager'; return 'KA Manager';
case 6: case 6:
return 'Melbourne'; return 'Melbourne Team';
case 7: case 7:
return 'KA Manager'; return 'KA Manager';
} }

@ -32,15 +32,20 @@
<table class="table table-bordered table-striped table-hover"> <table class="table table-bordered table-striped table-hover">
<thead> <thead>
<tr> <tr>
<td>teamName</td> <th>团队名称<span class="text-green small">(点击可查看团队明细)</span></th>
<td>kpiAmount</td> <th>KPI</th>
<td>totalAmount</td> <th>总金额</th>
<th>完成比例</th>
</tr> </tr>
</thead> </thead>
<tr ng-repeat="data in BDTeamKpiData"> <tr ng-repeat="data in BDTeamKpiData" ng-click="getBdProportion(data.bd_type)"
style="cursor:pointer;">
<td ng-bind="data.team_name" ></td> <td ng-bind="data.team_name" ></td>
<td ng-bind="data.kpi"></td> <td ng-bind="data.kpi"></td>
<td ng-bind="data.total_amount"></td> <td ng-bind="data.total_amount"></td>
<td>{{data.total_amount/data.kpi | percentage:2}} <i ng-if="(data.total_amount/data.kpi)>=1"
class="fa fa-star text-yellow"
title="已完成"></i></td>
</tr> </tr>
</table> </table>
</div> </div>
@ -48,30 +53,36 @@
<div class="box box-info"> <div class="box box-info">
<div class="box-header">BD占比</div> <div class="box-header">BD占比</div>
<div class="box-body"> <div class="box-body">
<div class="col-xs-6 col-sm-6">
<div class="chart" style="height: 400px" id="bdProportion" echarts="bdProportion" <div class="chart" style="height: 400px" id="bdProportion" echarts="bdProportion"
chart-setter="bdProportionEcharts($chart)" chart-setter="bdProportionEcharts($chart)"
ng-class="{nodata:!bdProportionData}"></div> ng-class="{nodata:!bdProportionData}"></div>
</div>
<div class=" col-xs-6 col-sm-6">
<div class="chart" style="height: 400px" id="bdKpi" echarts="bdKpi"
ng-class="{nodata:!bdKpiData}"></div>
</div>
<table class="table table-bordered table-striped table-hover"> <table class="table table-bordered table-striped table-hover">
<thead> <thead>
<tr> <tr>
<td>bdName</td> <th>BD 名称</th>
<td>kpiAmount</td> <th>KPI</th>
<td>totalAmount</td> <th>总交易金额</th>
<th>完成比例</th>
</tr> </tr>
</thead> </thead>
<tr ng-repeat="data in bdProportionData"> <tr ng-repeat="data in bdProportionData">
<td ng-bind="data.bd_name"></td> <td ng-bind="data.bd_name"></td>
<td ng-bind="data.kpi_amount"></td> <td ng-bind="data.kpi_amount"></td>
<td ng-bind="data.total_amount"></td> <td ng-bind="data.total_amount"></td>
<td>{{data.total_amount/data.kpi_amount | percentage:2}}
<i ng-if="(data.total_amount/data.kpi_amount)>=1" class="fa fa-star text-yellow"
title="已完成"></i>
</td>
</tr> </tr>
</table> </table>
</div>
</div>
<div class="box box-info">
<div class="box-header">BD KPI完成度</div>
<div class="box-body">
<div class="chart" style="height: 400px" id="bdKpi" echarts="bdKpi"
ng-class="{nodata:!bdKpiData}"></div>
</div> </div>
</div> </div>
</section> </section>

@ -24,6 +24,9 @@
<div class="box box-default"> <div class="box box-default">
<div class="box-header">Details</div> <div class="box-header">Details</div>
<div class="box-body table-responsive"> <div class="box-body table-responsive">
<div style="float:right"><a role="button" class="btn-group btn btn-warning" type="button" ng-href="/sys/citypartner_prizes/export/{{monthData.monthstr}}">
<i class="fa fa-download"></i>提成明细文件</a>
</div>
<table class="table table-bordered table-hover table-striped"> <table class="table table-bordered table-hover table-striped">
<thead> <thead>
<tr> <tr>

@ -489,6 +489,16 @@
</div> </div>
</a> </a>
</div> </div>
<div ng-if="('bdprize'|withModule)&&(currentUser.org_id==null||currentUser.org_id==1)" class="col-sm-2 col-xs-6">
<a ui-sref="analysis_bd.bd_data_analysis" ui-sref-opts="{reload:true}">
<div class="description-block">
<img src="/static/images/main_menu/bd_sales_volume.png"/>
<div class="description-text">
<span class="description-text">BD团队分析</span>
</div>
</div>
</a>
</div>
<div ng-if="('bdprize'|withModule)&&(currentUser.org_id==null||currentUser.org_id==1)" class="col-sm-2 col-xs-6"> <div ng-if="('bdprize'|withModule)&&(currentUser.org_id==null||currentUser.org_id==1)" class="col-sm-2 col-xs-6">
<a ui-sref="analysis_bd.bd_prizes" ui-sref-opts="{reload:true}"> <a ui-sref="analysis_bd.bd_prizes" ui-sref-opts="{reload:true}">
<div class="description-block"> <div class="description-block">

Loading…
Cancel
Save