add 提成规则页面

master
luoyang 6 years ago
parent 82d2385fde
commit 759ac52efe

@ -60,9 +60,10 @@ public interface ManageAppService {
List<JSONObject> getOrgPrizeList(JSONObject device); List<JSONObject> getOrgPrizeList(JSONObject device);
JSONObject getBdConfigKpi(JSONObject device); JSONObject getBdConfigKpi(JSONObject device);
List<JSONObject> getBdPrizeList(JSONObject device); List<JSONObject> getBdPrizeList(JSONObject device);
String getPrizeRulesUrl(JSONObject device);
} }

@ -143,6 +143,7 @@ public class ManageAppServiceImp implements ManageAppService {
query.setQuickPass(true); query.setQuickPass(true);
break; break;
} }
query.setOnlyMe(true);
return clientManager.listClientsByApp(manager, query); return clientManager.listClientsByApp(manager, query);
} }
@ -372,4 +373,17 @@ public class ManageAppServiceImp implements ManageAppService {
} }
return listBdPrizeLogByOne; return listBdPrizeLogByOne;
} }
@Override
public String getPrizeRulesUrl(JSONObject device) {
//todo 获取BD提成列表
String clientType = device.getString("client_type");
manageDeviceSupport.findRegister(clientType);
JSONObject manager = managerMapper.findById(device.getString("manager_id"));
if (manager.getIntValue("org_id") == 1) {
return "http://192.168.0.49:9002/app/rules/bd";
} else {
return "http://192.168.0.49:9002/app/rules/org";
}
}
} }

@ -168,4 +168,9 @@ public class ManageAppController {
return manageAppService.getBdPrizeList(device); return manageAppService.getBdPrizeList(device);
} }
@RequestMapping(value = "/prize/rules", method = RequestMethod.GET)
public String getPrizeRulesUrl(@ModelAttribute(CommonConsts.MANAGER_DEVICE) JSONObject device) {
return manageAppService.getPrizeRulesUrl(device);
}
} }

@ -0,0 +1,37 @@
package au.com.royalpay.payment.manage.dev.web;
import au.com.royalpay.payment.manage.bdprize.core.BDPrizeService;
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/app/rules")
public class MangerAppRulesController {
@Resource
private BDPrizeService bdPrizeService;
@RequestMapping(value = "/org", method = RequestMethod.GET)
public ModelAndView hrefOrgRules() {
ModelAndView view = new ModelAndView("app/org_prize_rules");
return view;
}
@RequestMapping(value = "/bd", method = RequestMethod.GET)
public ModelAndView hrefBdRules() {
ModelAndView view = new ModelAndView("app/bd_prize_rules");
return view;
}
@RequestMapping(value = "/bd/config", method = RequestMethod.GET)
public List<JSONObject> bdConfigRates() {
return bdPrizeService.getRateConfig();
}
}

@ -76,6 +76,8 @@ public class ClientRegisterInfo {
private String merchant_video_url; private String merchant_video_url;
@JSONField(name = "store_name") @JSONField(name = "store_name")
private String storeName; private String storeName;
private String client_pay_type;
private String client_pay_desc;
public JSONObject insertObject() { public JSONObject insertObject() {
JSONObject res = (JSONObject) JSON.toJSON(this); JSONObject res = (JSONObject) JSON.toJSON(this);
@ -386,4 +388,20 @@ public class ClientRegisterInfo {
public String getStoreName() { public String getStoreName() {
return storeName; return storeName;
} }
public void setClient_pay_type(String client_pay_type) {
this.client_pay_type = client_pay_type;
}
public void setClient_pay_desc(String client_pay_desc) {
this.client_pay_desc = client_pay_desc;
}
public String getClient_pay_type() {
return client_pay_type;
}
public String getClient_pay_desc() {
return client_pay_desc;
}
} }

@ -676,6 +676,9 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
JSONObject clientConfig = new JSONObject(); JSONObject clientConfig = new JSONObject();
clientConfig.put("client_id", partner.getIntValue("client_id")); clientConfig.put("client_id", partner.getIntValue("client_id"));
clientConfig.put("client_moniker", partner.getString("client_moniker")); clientConfig.put("client_moniker", partner.getString("client_moniker"));
clientConfig.put("client_pay_type", partner.getString("client_pay_type"));
clientConfig.put("client_pay_desc", partner.get("client_pay_desc"));
clientConfigService.save(clientConfig); clientConfigService.save(clientConfig);
permissionPartnerManagerImpl.permissionClientModuleSave(partner.getIntValue("client_id"), partner.getString("client_moniker")); permissionPartnerManagerImpl.permissionClientModuleSave(partner.getIntValue("client_id"), partner.getString("client_moniker"));
} catch (Exception e) { } catch (Exception e) {
@ -744,6 +747,12 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
} }
clientMapper.update(updateInfo); clientMapper.update(updateInfo);
saveOrUpdateMailList(updateInfo, client); saveOrUpdateMailList(updateInfo, client);
JSONObject clientConfig = new JSONObject();
clientConfig.put("client_id", clientId);
clientConfig.put("client_moniker", client.getString("client_moniker"));
clientConfig.put("client_pay_type", updateInfo.getString("client_pay_type"));
clientConfig.put("client_pay_desc", updateInfo.get("client_pay_desc"));
clientConfigMapper.update(clientConfig);
clientInfoCacheSupport.clearClientCache(clientId); clientInfoCacheSupport.clearClientCache(clientId);
} }

@ -0,0 +1,98 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Title</title>
<link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
<script type="text/javascript" src="//cdn.bootcss.com/angular.js/1.4.8/angular.min.js"></script>
<script type="text/javascript">
angular.module('bdRulesApp', []).controller('bdRulesCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.kpiRanges = [{value: 1, label: '0-50%'}, {value: 2, label: '50%~80%'}, {value: 3, label: '80%~100%'},
{value: 4, label: '100%-120%'}, {value: 5, label: '>=120%'}];
$http.get('/app/rules/bd/config').then(function (resp) {
$scope.bd_rate_configs = resp.data;
$scope.kpi_ranges = [];
var kpiStart = [];
angular.forEach($scope.bd_rate_configs, function (cfg) {
if (kpiStart.indexOf(cfg.kpi_range) < 0) {
kpiStart.push(cfg.kpi_range);
$scope.kpi_ranges.push(cfg);
}
})
})
}]);
</script>
</head>
<style>
.box-body ul {
margin: 0;
padding-left: 20px;
}
.box-body ul li {
margin-bottom: 15px;
}
.clear {
clear: both;
}
</style>
<body ng-app="bdRulesApp" ng-controller="bdRulesCtrl">
<div class="box box-info">
<div class="box-header">提成规则</div>
<div class="box-body">
<h4>BD分级提成费率速查表</h4>
<div class="table-responsive">
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>BD Level</th>
<th rowspan="2">KPI完成度</th>
<th colspan="2">Junior BD</th>
<th colspan="2">Intermediate BD</th>
<th colspan="2">Senior BD</th>
</tr>
<tr>
<th>费率</th>
<th>0.6-0.79</th>
<th>0.8-2.0</th>
<th>0.6-0.79</th>
<th>0.8-2.0</th>
<th>0.6-0.79</th>
<th>0.8-2.0</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="range in kpi_ranges">
<td ng-bind="'#'+($index+1)"></td>
<td ng-bind="(kpiRanges|filter:{value:range.kpi_range})[0].label"></td>
<td ng-repeat-start="level in [1,2,3] track by $index"
ng-bind="(bd_rate_configs|filter:{kpi_range:range.kpi_range,bd_level:level,rate_from:0.6})[0].prize_rate+'%'"></td>
<td ng-repeat-end
ng-bind="(bd_rate_configs|filter:{kpi_range:range.kpi_range,bd_level:level,rate_from:0.8})[0].prize_rate+'%'"></td>
</tr>
</tbody>
</table>
</div>
<h4>补充说明</h4>
<ul>
<li>按月度发放</li>
<li>每月发放总提成额度的 80%,剩余 20%按照“年度考评分数比例”于每年年底即 12 月 25 日圣诞前发放</li>
<li>提前离职者20%提成不予发放</li>
<li>年度考评(根据销管中心每月考评表打分制进行统计)按照考评分数对应比例发放 20%的占比部分,扣下部分如果第二年考评超出一定评分 110%可以补发;同样,如果年度考评分数超过 100 分按照同比例发放</li>
<li>商户开通后连续 1 个月未产生流水的,上交主管,由主管重新分配</li>
<li>连续 2 个月不产生流水的商户,由销管部统一收回,重新分配</li>
<li>分配后的商户流水客户专员只能占一半</li>
<li>离职及调岗人员商户统一上交销管中心,由销管中心 leader 及跨境事业部总监相互协商及相互监督,按照公平公正的原则, 做出分配方案,并由总监确认后统一分配。调岗人员移交的商户,在移交后 1 个月内移交人员和接收人员平分该商家产生的提成,移交人员需配合接收人员做好商户对接和短期内的商户维护;
离职人员交接的商户提成,接收人员享受一半的提成,另一半作为跨境客服专员福利会基金</li>
<li>被客户投诉情况严重者,此商户由销管中心无条件收回重新分配</li>
<li>活动执行未传达到位且出现舞弊、徇私、懒惰等行为的,商户上交由销管中心统一分配</li>
<li>后期维护不及时,连续一个月不跟踪者,此商户上交销管中心,统一重新分配</li>
<li>以上分配,销管中心 leader 和跨境支付事业部商量好之后需做好方案后经 COO 审批方可执行</li>
</ul>
</div>
</div>
</body>
</html>

@ -0,0 +1,65 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Title</title>
<link href="https://cdn.bootcss.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
</head>
<style>
.box-body ul {
margin: 0;
padding-left: 20px;
}
.box-body ul li {
margin-bottom: 15px;
}
.clear {
clear: both;
}
</style>
<body>
<div>
<section class="content">
<div class="box box-info">
<div class="box-body container">
<div style="margin-left: -5px" class="box-row">
<h5 style="float:left">合伙人提成计算说明</h5>
<p style="float: right;color:#cccccc">2018-11-30更新</p>
<div class="clear"></div>
</div>
<div style="padding-left: 20px;margin-bottom: 20px">
合伙人提成算法:按照合伙人签约的商户下每笔订单计算合伙人提成,提成规则明细如下: &nbsp&nbsp
<span style="color:orange">(取整规则为四舍五入保留2位小数)</span>
</div>
<ul>
<li>单笔订单 :&nbsp&nbsp(单笔订单交易金额 * 商家签约费率)<span style="color:orange">取整</span> &nbsp&nbsp&nbsp -
&nbsp&nbsp单笔订单交易金额 * 组织成本费率)<span style="color:orange">取整</span> &nbsp&nbsp&nbsp
= &nbsp&nbsp&nbsp单笔订单合伙人提成
</li>
<li>总交易额 : &nbsp合伙人签约的商户累计交易额</li>
<li>平台手续费:合伙人签约的商户(单笔订单交易金额 * 组织成本费率)<span style="color:orange">取整</span> 累加</li>
<li>合伙人提成: 每笔订单合伙人提成累加</li>
</ul>
<div style="width:100%;background:#cccccc;height:1px;margin-bottom: 20px"></div>
<div style="padding-left: 20px;margin-bottom: 20px">如合伙人存在二级代理,可从二级代理的交易额中得到分润,分润规则如下:</div>
<ul>
<li>二级代理合伙人提成计算规则如同一级代理,分润从平台手续费中扣除。</li>
<li>如A合伙人与平台签约组织成本费率为1.5%A合伙人的二级代理B的签约组织成本费率为1.8%B的商户签约费率为3%</li>
<li>假设B当月只有一笔交易且交易额为1000总手续费为30平台手续费为18B合伙人提成为12。</li>
<li>计算A的分润时会将B的交易额1000 * A的组织成本费率 1.5% = 15A的分润就是 18-15=3而B合伙人平台手续费为15其中扣除3是A的分润</li>
</ul>
<h5>补充说明</h5>
<ul style="color:orange;font-size: 13px">
<li style="margin-bottom: 10px">退款成功的订单不计入合伙人提成内</li>
<li>当本月有合伙人手续费存在欠款时,无法下载汇款文件</li>
</ul>
</div>
</div>
</section>
</div>
</body>
</html>

@ -45,6 +45,17 @@ define(['../app', 'jquery'], function (app, $) {
} }
}); });
var offlineDesc = [];
$.ajax({
url: '/static/data/client_offline_desc.json',
method: 'GET',
async: false,
dataType: 'json',
success: function (data) {
offlineDesc = data;
}
});
app.filter('partner_state', ['stateMap', function (stateMap) { app.filter('partner_state', ['stateMap', function (stateMap) {
return function (stateValue) { return function (stateValue) {
@ -163,6 +174,29 @@ define(['../app', 'jquery'], function (app, $) {
}]); }]);
app.filter('partner_offline_desc', ['$http', function ($http) {
return function (industryCode) {
var industryLabel = '';
angular.forEach(offlineDesc, function (category) {
if (category.value == industryCode) {
industryLabel = category.label;
}
angular.forEach(category.children, function (categoryChildren1) {
if (categoryChildren1.value == industryCode) {
industryLabel = categoryChildren1.label;
}
angular.forEach(categoryChildren1.children, function (categoryChildren2) {
if (categoryChildren2.value == industryCode) {
industryLabel = categoryChildren2.label;
}
});
});
});
return industryLabel;
}
}]);
app.filter('partner_sector', ['sectorMap', function (sectorMap) { app.filter('partner_sector', ['sectorMap', function (sectorMap) {
return function (sectorValue) { return function (sectorValue) {
var sectorLabel = ''; var sectorLabel = '';

@ -2,12 +2,15 @@
<section class="content"> <section class="content">
<div class="box box-info"> <div class="box box-info">
<div class="box-body"> <div class="box-body">
<h4>合伙人提成计算说明</h4> <div class="row">
<ul> <p style="float: left;font-size: 17px">合伙人提成计算说明</p>
<li>2018-11-30更新</li> <p style="float: right">2018-11-30更新</p>
<li>合伙人提成算法:按照合伙人签约的商户下每笔订单计算合伙人提成,提成规则明细如下: &nbsp&nbsp </div>
<div class="row">
合伙人提成算法:按照合伙人签约的商户下每笔订单计算合伙人提成,提成规则明细如下: &nbsp&nbsp
<span style="color:red">(取整规则为四舍五入保留2位小数)</span> <span style="color:red">(取整规则为四舍五入保留2位小数)</span>
</li> </div>
<ul>
<li>单笔订单 :&nbsp&nbsp(单笔订单交易金额 * 商家签约费率)<span style="font-size: 1px;color:red">取整</span> &nbsp&nbsp&nbsp - &nbsp&nbsp单笔订单交易金额 * 组织成本费率)<span style="font-size: 1px;color:red">取整</span> &nbsp&nbsp&nbsp <li>单笔订单 :&nbsp&nbsp(单笔订单交易金额 * 商家签约费率)<span style="font-size: 1px;color:red">取整</span> &nbsp&nbsp&nbsp - &nbsp&nbsp单笔订单交易金额 * 组织成本费率)<span style="font-size: 1px;color:red">取整</span> &nbsp&nbsp&nbsp
= &nbsp&nbsp&nbsp单笔订单合伙人提成</li> = &nbsp&nbsp&nbsp单笔订单合伙人提成</li>
<li>总交易额 : &nbsp合伙人签约的商户累计交易额</li> <li>总交易额 : &nbsp合伙人签约的商户累计交易额</li>
@ -19,8 +22,6 @@
<li>如A合伙人与平台签约组织成本费率为1.5%A合伙人的二级代理B的签约组织成本费率为1.8%B的商户签约费率为3%</li> <li>如A合伙人与平台签约组织成本费率为1.5%A合伙人的二级代理B的签约组织成本费率为1.8%B的商户签约费率为3%</li>
<li>假设B当月只有一笔交易且交易额为1000总手续费为30平台手续费为18B合伙人提成为12。</li> <li>假设B当月只有一笔交易且交易额为1000总手续费为30平台手续费为18B合伙人提成为12。</li>
<li>计算A的分润时会将B的交易额1000 * A的组织成本费率 1.5% = 15A的分润就是 18-15=3而B合伙人平台手续费为15其中扣除3是A的分润</li> <li>计算A的分润时会将B的交易额1000 * A的组织成本费率 1.5% = 15A的分润就是 18-15=3而B合伙人平台手续费为15其中扣除3是A的分润</li>
</ul> </ul>
<h4>补充说明</h4> <h4>补充说明</h4>
<ul style="color:red"> <ul style="color:red">

@ -0,0 +1,54 @@
[
{
"children": [
{
"children": [],
"label": "立牌",
"value": "qrcode"
},
{
"children": [],
"label": "POS",
"value": "pos"
}
],
"label": "门店",
"value": "1"
},
{
"children": [
{
"children": [],
"label": "ipos",
"value": "ipos"
},
{
"children": [],
"label": "银豹",
"value": "pospal"
},
{
"children": [],
"label": "aupos",
"value": "aupos"
},
{
"children": [],
"label": "其他",
"value": "other"
}
],
"label": "收银系统",
"value": "2"
},{
"children": [
{
"children": [],
"label": "无门店",
"value": "no-store"
}
],
"label": "其他",
"value": "3"
}
]

@ -30,6 +30,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
{code: 2, label: 'Manager'}, {code: 2, label: 'Manager'},
{code: 3, label: 'Cashier'} {code: 3, label: 'Cashier'}
]; ];
var wxMerchantIndustries = [ var wxMerchantIndustries = [
{ {
"label": "鞋包服饰|Shoes&Garments", "label": "鞋包服饰|Shoes&Garments",
@ -361,7 +362,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
}]); }]);
app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone','businessStructuresMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, industryMap, stateMap, sectorMap, countryMap) { app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'businessStructuresMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, industryMap, stateMap, sectorMap, countryMap) {
if ($scope.partner_application) { if ($scope.partner_application) {
$scope.partner = angular.copy($scope.partner_application); $scope.partner = angular.copy($scope.partner_application);
delete $rootScope.partner_application; delete $rootScope.partner_application;
@ -382,6 +383,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.bd_citys = angular.copy(bd_city_map); $scope.bd_citys = angular.copy(bd_city_map);
$scope.params = {textType: 'all', org_name: 'ALL'}; $scope.params = {textType: 'all', org_name: 'ALL'};
$scope.onOfflineDescSelect = function (selectedItem) {
$scope.partner.offline_label = selectedItem.label;
$scope.partner.client_offline_desc = selectedItem.value;
};
function remove(arr, val) { function remove(arr, val) {
if (angular.isArray(arr)) { if (angular.isArray(arr)) {
for (var i = arr.length; i--;) { for (var i = arr.length; i--;) {
@ -393,6 +400,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
return arr; return arr;
} }
$scope.loadOfflineDesc = function () {
$http.get('/static/data/client_offline_desc.json').then(function (resp) {
$scope.client_offline_select = resp.data;
})
};
$scope.loadOfflineDesc();
var industries = angular.copy($scope.industries); var industries = angular.copy($scope.industries);
$scope.industries = remove(industries, 331); $scope.industries = remove(industries, 331);
@ -504,7 +517,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
alert("Logo is necessary!"); alert("Logo is necessary!");
return; return;
} }
if($scope.partner.partner_type == 'photo'){ if ($scope.partner.partner_type == 'photo') {
if (!$scope.partner.company_photo) { if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary'); alert('Shop Photo1 is necessary');
return; return;
@ -523,10 +536,20 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
}) })
} }
// if ($scope.partner.client_pay_type =='online' || $scope.partner.client_pay_type =='all') {
// if (!$scope.partner.online_website && !$scope.partner.online_public_account && !$scope.partner.online_mini_program && !$scope.partner.online_app) {
// alert('线上支付场景至少填写一种方式');
// return;
// }
// }
// if(!window.frames['merchant_detail'].merchant_location){ // if(!window.frames['merchant_detail'].merchant_location){
// alert("Please Locate Merchant's Location"); // alert("Please Locate Merchant's Location");
// return; // return;
// } // }
if ($scope.params.client_pay_type==''){
alert('请选择商户支付场景')
}
$http.post('/sys/partners', $scope.partner).then(function (resp) { $http.post('/sys/partners', $scope.partner).then(function (resp) {
commonDialog.alert({title: 'Success', content: 'Register new partner successfully', type: 'success'}); commonDialog.alert({title: 'Success', content: 'Register new partner successfully', type: 'success'});
$scope.updateMerchantLocation(); $scope.updateMerchantLocation();
@ -618,15 +641,15 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.isComplianceOfShortName = false; $scope.isComplianceOfShortName = false;
$scope.isComplianceOfBusinessStructure = false; $scope.isComplianceOfBusinessStructure = false;
var website = partner.data.company_website; var website = partner.data.company_website;
if (website!=null){ if (website != null) {
if (website.indexOf('http')!=0){ if (website.indexOf('http') != 0) {
$scope.partner.company_website= 'http://'+angular.copy(website); $scope.partner.company_website = 'http://' + angular.copy(website);
} }
} }
$scope.decideCompliance = function (name) { $scope.decideCompliance = function (name) {
var keywords = ['education','financial' ,'train','immigrant','invest', var keywords = ['education', 'financial', 'train', 'immigrant', 'invest',
'律师咨询','会计事务所', '移民', '留学','娱乐','金融','地产','投资']; '律师咨询', '会计事务所', '移民', '留学', '娱乐', '金融', '地产', '投资'];
for(var i = 0; i < keywords.length; i++){ for (var i = 0; i < keywords.length; i++) {
if (name.indexOf(keywords[i]) != -1) { if (name.indexOf(keywords[i]) != -1) {
return true; return true;
} }
@ -655,12 +678,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.showFile(); $scope.showFile();
$scope.passClient = function () { $scope.passClient = function () {
if(!$scope.partner.wechat_institution_merchant_id){ if (!$scope.partner.wechat_institution_merchant_id) {
commonDialog.alert({title: 'info', content: 'HF Institution Merchant Id not Refresh', type: 'info'}); commonDialog.alert({title: 'info', content: 'HF Institution Merchant Id not Refresh', type: 'info'});
return; return;
} }
if ($scope.partner.enable_hf) { if ($scope.partner.enable_hf) {
if($scope.partner.hfindustry == null){ if ($scope.partner.hfindustry == null) {
alert("已开启HF支付通道HF行业不可为空!"); alert("已开启HF支付通道HF行业不可为空!");
return; return;
} }
@ -698,7 +721,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
info.push('Business Structure'); info.push('Business Structure');
} }
title = 'Warning'; title = 'Warning';
contentHtml = $sce.trustAsHtml('本次提交的商户[' + $scope.partner.company_name + '],<span style="color: red">'+ info.toString() +'</span>存在微信渠道不合规信息'); contentHtml = $sce.trustAsHtml('本次提交的商户[' + $scope.partner.company_name + '],<span style="color: red">' + info.toString() + '</span>存在微信渠道不合规信息');
choises = [{label: '取消', className: 'btn-danger', key: '2', dismiss: true}, choises = [{label: '取消', className: 'btn-danger', key: '2', dismiss: true},
{label: '确认提交', className: 'btn-success', key: '1'}]; {label: '确认提交', className: 'btn-success', key: '1'}];
content = ''; content = '';
@ -731,8 +754,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}); });
}; };
$scope.pass2GreenChannel = function () { $scope.pass2GreenChannel = function () {
if(!$scope.partner.wechat_institution_merchant_id){ if (!$scope.partner.wechat_institution_merchant_id) {
commonDialog.alert({title: 'info', content: 'Wechat Institution Merchant Id not Refresh', type: 'info'}); commonDialog.alert({
title: 'info',
content: 'Wechat Institution Merchant Id not Refresh',
type: 'info'
});
return; return;
} }
commonDialog.confirm({ commonDialog.confirm({
@ -787,7 +814,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.Export = function () { $scope.Export = function () {
var url = '/dev/' + $scope.partner.client_moniker +'/export/aggregate/agreepdf' ; var url = '/dev/' + $scope.partner.client_moniker + '/export/aggregate/agreepdf';
return url; return url;
} }
$scope.uploadAgreeFile = function (file) { $scope.uploadAgreeFile = function (file) {
@ -1037,7 +1064,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
if (!$scope.partner) { if (!$scope.partner) {
return; return;
} }
if(!$state.is('partners.detail')){ if (!$state.is('partners.detail')) {
$scope.init.wechat_compliance = false; $scope.init.wechat_compliance = false;
return; return;
} }
@ -1059,7 +1086,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
if (!$scope.partner) { if (!$scope.partner) {
return; return;
} }
if(!$state.is('partners.detail')){ if (!$state.is('partners.detail')) {
$scope.init.local_merchant = false; $scope.init.local_merchant = false;
return; return;
} }
@ -1096,6 +1123,18 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
var origin_referrer_id = angular.copy($scope.partner.referrer_id); var origin_referrer_id = angular.copy($scope.partner.referrer_id);
$scope.partner.partner_type = $scope.partner.website ? 'website' : 'photo'; $scope.partner.partner_type = $scope.partner.website ? 'website' : 'photo';
$scope.loadOfflineDesc = function () {
$http.get('/static/data/client_offline_desc.json').then(function (resp) {
$scope.client_offline_select = resp.data;
})
};
$scope.loadOfflineDesc();
$scope.onOfflineDescSelect = function (selectedItem) {
$scope.partner.offline_label = selectedItem.label;
$scope.partner.client_offline_desc = selectedItem.value;
};
$scope.listReferrers = function () { $scope.listReferrers = function () {
$http.get('/sys/orgs/referrer').then(function (resp) { $http.get('/sys/orgs/referrer').then(function (resp) {
$scope.referrers = resp.data; $scope.referrers = resp.data;
@ -1170,7 +1209,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
alert('suburb can not contain two and more continuous space characters'); alert('suburb can not contain two and more continuous space characters');
return; return;
} }
if($scope.partner.partner_type == 'photo'){ if ($scope.partner.partner_type == 'photo') {
if (!$scope.partner.company_photo) { if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary'); alert('Shop Photo1 is necessary');
return; return;
@ -1198,10 +1237,19 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
if (!origin_referrer_id && $scope.partner.referrer_id) { if (!origin_referrer_id && $scope.partner.referrer_id) {
content = 'Update partner info successfully,But You Had add new Referrer,Please Change the BD Commission Proportion!'; content = 'Update partner info successfully,But You Had add new Referrer,Please Change the BD Commission Proportion!';
} }
// if ($scope.partner.client_pay_type =='online' || $scope.partner.client_pay_type =='all') {
// if (!$scope.partner.online_website && !$scope.partner.online_public_account && !$scope.partner.online_mini_program && !$scope.partner.online_app) {
// alert('线上支付场景至少填写一种方式');
// return;
// }
// }
// if(!window.frames['merchant_detail'].merchant_location){ // if(!window.frames['merchant_detail'].merchant_location){
// alert("Please Locate Merchant Location!"); // alert("Please Locate Merchant Location!");
// return; // return;
// } // }
if ($scope.params.client_pay_type==''){
alert('请选择商户支付场景')
}
$http.put('/sys/partners/' + $scope.partner.client_moniker, $scope.partner).then(function () { $http.put('/sys/partners/' + $scope.partner.client_moniker, $scope.partner).then(function () {
if (content != '') { if (content != '') {
commonDialog.alert({ commonDialog.alert({
@ -1305,34 +1353,34 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
} }
}]); }]);
app.controller('partnerPaymentInfoCtrl', ['$scope', '$http', '$state', 'commonDialog','$uibModal', '$sce', function ($scope, $http, $state, commonDialog,$uibModal, $sce) { app.controller('partnerPaymentInfoCtrl', ['$scope', '$http', '$state', 'commonDialog', '$uibModal', '$sce', function ($scope, $http, $state, commonDialog, $uibModal, $sce) {
$scope.copyHfLink = function() { $scope.copyHfLink = function () {
var e=document.getElementById("cpbt"); var e = document.getElementById("cpbt");
e.select(); e.select();
var successful = document.execCommand("Copy"); var successful = document.execCommand("Copy");
if (successful) { if (successful) {
commonDialog.alert({title: 'Success', content: '已复制到剪切板!', type: 'success'}); commonDialog.alert({title: 'Success', content: '已复制到剪切板!', type: 'success'});
}else { } else {
commonDialog.alert({title: 'Error', content: '您的浏览器不支持!', type: 'error'}); commonDialog.alert({title: 'Error', content: '您的浏览器不支持!', type: 'error'});
} }
}; };
$scope.copyYeepayLink = function() { $scope.copyYeepayLink = function () {
var e=document.getElementById("cpyeepay"); var e = document.getElementById("cpyeepay");
e.select(); e.select();
var successful = document.execCommand("Copy"); var successful = document.execCommand("Copy");
if (successful) { if (successful) {
commonDialog.alert({title: 'Success', content: '已复制到剪切板!', type: 'success'}); commonDialog.alert({title: 'Success', content: '已复制到剪切板!', type: 'success'});
}else { } else {
commonDialog.alert({title: 'Error', content: '您的浏览器不支持!', type: 'error'}); commonDialog.alert({title: 'Error', content: '您的浏览器不支持!', type: 'error'});
} }
}; };
$scope.copyCBBankPayLink = function() { $scope.copyCBBankPayLink = function () {
var e=document.getElementById("cpcbbankpay"); var e = document.getElementById("cpcbbankpay");
e.select(); e.select();
var successful = document.execCommand("Copy"); var successful = document.execCommand("Copy");
if (successful) { if (successful) {
commonDialog.alert({title: 'Success', content: '已复制到剪切板!', type: 'success'}); commonDialog.alert({title: 'Success', content: '已复制到剪切板!', type: 'success'});
}else { } else {
commonDialog.alert({title: 'Error', content: '您的浏览器不支持!', type: 'error'}); commonDialog.alert({title: 'Error', content: '您的浏览器不支持!', type: 'error'});
} }
}; };
@ -1362,7 +1410,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
size: 'lg', size: 'lg',
resolve: { resolve: {
logs: ['$http', function ($http) { logs: ['$http', function ($http) {
return $http.get('/sys/partners/'+$scope.partner.client_moniker+'/get_sub_merchant_id_logs'); return $http.get('/sys/partners/' + $scope.partner.client_moniker + '/get_sub_merchant_id_logs');
}] }]
} }
}).result.then(function () { }).result.then(function () {
@ -1528,7 +1576,19 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}) })
}) })
}; };
$scope.init = {jsapi: false, gateway: false, offline: false, refund: false,common_sub_merchant_id:false, channel: {},gateway_alipay_online:false,hf_Link:false,enable_hf_email_notice:false,enable_yeepay_link:false,enable_yeepay_email_notice:false}; $scope.init = {
jsapi: false,
gateway: false,
offline: false,
refund: false,
common_sub_merchant_id: false,
channel: {},
gateway_alipay_online: false,
hf_Link: false,
enable_hf_email_notice: false,
enable_yeepay_link: false,
enable_yeepay_email_notice: false
};
$scope.switchCommonSubMerchantId = function () { $scope.switchCommonSubMerchantId = function () {
if (!$scope.paymentInfo) { if (!$scope.paymentInfo) {
return; return;
@ -1549,9 +1609,9 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
var info = []; var info = [];
$scope.decideCompliance = function (name) { $scope.decideCompliance = function (name) {
var keywords = ['education','financial' ,'train','immigrant','invest', var keywords = ['education', 'financial', 'train', 'immigrant', 'invest',
'律师咨询','会计事务所', '移民', '留学','娱乐','金融','地产','投资']; '律师咨询', '会计事务所', '移民', '留学', '娱乐', '金融', '地产', '投资'];
for(var i = 0; i < keywords.length; i++){ for (var i = 0; i < keywords.length; i++) {
if (name.indexOf(keywords[i]) != -1) { if (name.indexOf(keywords[i]) != -1) {
return true; return true;
} }
@ -1560,17 +1620,17 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.getComplianceInfo = function () { $scope.getComplianceInfo = function () {
if ($scope.paymentInfo.company_name != null) { if ($scope.paymentInfo.company_name != null) {
if($scope.decideCompliance($scope.paymentInfo.company_name)) { if ($scope.decideCompliance($scope.paymentInfo.company_name)) {
info.push('Company Name'); info.push('Company Name');
} }
} }
if ($scope.paymentInfo.short_name != null) { if ($scope.paymentInfo.short_name != null) {
if($scope.decideCompliance($scope.paymentInfo.short_name)) { if ($scope.decideCompliance($scope.paymentInfo.short_name)) {
info.push('Short Name'); info.push('Short Name');
} }
} }
if ($scope.paymentInfo.business_structure != null) { if ($scope.paymentInfo.business_structure != null) {
if($scope.decideCompliance($scope.paymentInfo.business_structure)) { if ($scope.decideCompliance($scope.paymentInfo.business_structure)) {
info.push('Business Structure'); info.push('Business Structure');
} }
} }
@ -1591,7 +1651,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
&& $scope.paymentInfo.open_status == 5 && info.length > 0) { && $scope.paymentInfo.open_status == 5 && info.length > 0) {
commonDialog.confirm({ commonDialog.confirm({
title: "Warning", title: "Warning",
contentHtml: $sce.trustAsHtml('本次提交的商户[' + $scope.partner.company_name + '],<span style="color: red">'+ info.toString() +'</span>存在微信渠道不合规信息') contentHtml: $sce.trustAsHtml('本次提交的商户[' + $scope.partner.company_name + '],<span style="color: red">' + info.toString() + '</span>存在微信渠道不合规信息')
}).then(function () { }).then(function () {
$scope.saveChannel(channel); $scope.saveChannel(channel);
}) })
@ -1640,16 +1700,16 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
if (!$scope.paymentInfo) { if (!$scope.paymentInfo) {
return; return;
} }
var channelLink = 'enable_'+channel+'_link'; var channelLink = 'enable_' + channel + '_link';
if (!$scope.init[channelLink]) { if (!$scope.init[channelLink]) {
$scope.init[channelLink] = true; $scope.init[channelLink] = true;
return; return;
} }
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/'+channel, {allow: $scope.paymentInfo[channelLink]}).then(function () { $http.put('/sys/partners/' + $scope.partner.client_moniker + '/' + channel, {allow: $scope.paymentInfo[channelLink]}).then(function () {
$scope.loadPartnerPaymentInfo(); $scope.loadPartnerPaymentInfo();
}, function (resp) { }, function (resp) {
commonDialog.alert({ commonDialog.alert({
title: 'Failed to change '+channelLink+' permission status', title: 'Failed to change ' + channelLink + ' permission status',
content: resp.data.message, content: resp.data.message,
type: 'error' type: 'error'
}); });
@ -1692,7 +1752,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
title: 'Confirm', title: 'Confirm',
content: content content: content
}).then(function () { }).then(function () {
$http.put('/sys/partners/'+ $scope.partner.client_moniker + '/cb_bankpay/'+ key +'/channel_id', {channel_id: channel}).then(function (resp) { $http.put('/sys/partners/' + $scope.partner.client_moniker + '/cb_bankpay/' + key + '/channel_id', {channel_id: channel}).then(function (resp) {
commonDialog.alert({type: 'success', title: 'Success', content: '修改成功'}); commonDialog.alert({type: 'success', title: 'Success', content: '修改成功'});
$scope.loadPartnerPaymentInfo(); $scope.loadPartnerPaymentInfo();
}, function (resp) { }, function (resp) {
@ -1705,16 +1765,16 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
if (!$scope.paymentInfo) { if (!$scope.paymentInfo) {
return; return;
} }
var channelNotice = 'enable_'+channel+'_email_notice'; var channelNotice = 'enable_' + channel + '_email_notice';
if (!$scope.init[channelNotice]) { if (!$scope.init[channelNotice]) {
$scope.init[channelNotice] = true; $scope.init[channelNotice] = true;
return; return;
} }
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/'+channel+'/email_notice', {allow: $scope.paymentInfo[channelNotice]}).then(function () { $http.put('/sys/partners/' + $scope.partner.client_moniker + '/' + channel + '/email_notice', {allow: $scope.paymentInfo[channelNotice]}).then(function () {
$scope.loadPartnerPaymentInfo(); $scope.loadPartnerPaymentInfo();
}, function (resp) { }, function (resp) {
commonDialog.alert({ commonDialog.alert({
title: 'Failed to change '+channelNotice+' permission status', title: 'Failed to change ' + channelNotice + ' permission status',
content: resp.data.message, content: resp.data.message,
type: 'error' type: 'error'
}); });
@ -1964,9 +2024,14 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.loadSubClients(); $scope.loadSubClients();
}]); }]);
app.controller('partnerRatesCtrl', ['$scope', '$rootScope', '$http', '$uibModal', 'commonDialog','$sce', function ($scope, $rootScope, $http, $uibModal, commonDialog,$sce) { app.controller('partnerRatesCtrl', ['$scope', '$rootScope', '$http', '$uibModal', 'commonDialog', '$sce', function ($scope, $rootScope, $http, $uibModal, commonDialog, $sce) {
$scope.bankCtrl = {edit: true, rate_name: 'Wechat'}; $scope.bankCtrl = {edit: true, rate_name: 'Wechat'};
$scope.init = {skip_clearing:false,tax_in_surcharge:false,customer_tax_free:false,allow_surcharge_credit:false}; $scope.init = {
skip_clearing: false,
tax_in_surcharge: false,
customer_tax_free: false,
allow_surcharge_credit: false
};
$scope.getBankAccount = function () { $scope.getBankAccount = function () {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/bank_account').then(function (resp) { $http.get('/sys/partners/' + $scope.partner.client_moniker + '/bank_account').then(function (resp) {
$scope.bankaccount = resp.data; $scope.bankaccount = resp.data;
@ -1979,7 +2044,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
title: 'Warning', title: 'Warning',
content: '启用收支分离模式清算将使消费者支付手续费模式失效,请确认是否切换?' content: '启用收支分离模式清算将使消费者支付手续费模式失效,请确认是否切换?'
}).then(function () { }).then(function () {
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/surcharge_mode', {surcharge_mode:'distributed'}).then(function () { $http.put('/sys/partners/' + $scope.partner.client_moniker + '/surcharge_mode', {surcharge_mode: 'distributed'}).then(function () {
commonDialog.alert({title: 'Success', content: '已切换为收支分离模式', type: 'success'}); commonDialog.alert({title: 'Success', content: '已切换为收支分离模式', type: 'success'});
$scope.partner.surcharge_mode = 'distributed'; $scope.partner.surcharge_mode = 'distributed';
$scope.getBalance(); $scope.getBalance();
@ -1987,12 +2052,12 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}); commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'});
}) })
}) })
}else { } else {
commonDialog.confirm({ commonDialog.confirm({
title: 'Warning', title: 'Warning',
content: '请确认是否切换成净值清算模式?' content: '请确认是否切换成净值清算模式?'
}).then(function () { }).then(function () {
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/surcharge_mode', {surcharge_mode:'balance'}).then(function () { $http.put('/sys/partners/' + $scope.partner.client_moniker + '/surcharge_mode', {surcharge_mode: 'balance'}).then(function () {
commonDialog.alert({title: 'Success', content: '已切换为净值清算模式', type: 'success'}); commonDialog.alert({title: 'Success', content: '已切换为净值清算模式', type: 'success'});
$scope.partner.surcharge_mode = 'balance'; $scope.partner.surcharge_mode = 'balance';
}, function (resp) { }, function (resp) {
@ -2044,7 +2109,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}); });
}); });
}) })
}else{ } else {
commonDialog.confirm({ commonDialog.confirm({
title: 'Warning', title: 'Warning',
content: 'This operation will switch skip clearing status. Are you sure?', content: 'This operation will switch skip clearing status. Are you sure?',
@ -2137,10 +2202,11 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.getRates(); $scope.getRates();
$scope.saveBankAccount = function () { $scope.saveBankAccount = function () {
if(isNaN($scope.bankaccount.account_no)){ if (isNaN($scope.bankaccount.account_no)) {
alert("Account No应输入数字!"); alert("Account No应输入数字!");
return; return;
}; }
;
$http.put('/sys/partners/' + $scope.partner.client_moniker + '/bank_account', $scope.bankaccount).then(function () { $http.put('/sys/partners/' + $scope.partner.client_moniker + '/bank_account', $scope.bankaccount).then(function () {
$scope.getBankAccount(); $scope.getBankAccount();
}, function (resp) { }, function (resp) {
@ -2200,7 +2266,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}; };
$scope.complianceChangeCheck(); $scope.complianceChangeCheck();
}]); }]);
app.controller('surchargeAccountDetailCtrl', ['$scope','$http','balance','partner','transactions','commonDialog', function ($scope, $http, balance, partner, transactions,commonDialog) { app.controller('surchargeAccountDetailCtrl', ['$scope', '$http', 'balance', 'partner', 'transactions', 'commonDialog', function ($scope, $http, balance, partner, transactions, commonDialog) {
$scope.surcharge = angular.copy(balance); $scope.surcharge = angular.copy(balance);
$scope.transactions = angular.copy(transactions.data); $scope.transactions = angular.copy(transactions.data);
$scope.partner = angular.copy(partner); $scope.partner = angular.copy(partner);
@ -2232,7 +2298,10 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.params = {}; $scope.params = {};
} }
$scope.save = function () { $scope.save = function () {
$http.post('/sys/partners/' + $scope.partner.client_moniker + '/account/save', {amount:$scope.params.amount,remark:$scope.params.remark}).then(function (resp) { $http.post('/sys/partners/' + $scope.partner.client_moniker + '/account/save', {
amount: $scope.params.amount,
remark: $scope.params.remark
}).then(function (resp) {
$scope.getTransactions(); $scope.getTransactions();
$scope.getBalance(); $scope.getBalance();
$scope.canAddDetail = false; $scope.canAddDetail = false;
@ -2548,7 +2617,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
alert("Logo is necessary!"); alert("Logo is necessary!");
return; return;
} }
if($scope.partner.partner_type == 'photo'){ if ($scope.partner.partner_type == 'photo') {
if (!$scope.partner.company_photo) { if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary'); alert('Shop Photo1 is necessary');
return; return;
@ -3340,7 +3409,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
detail: ['$http', '$stateParams', function ($http) { detail: ['$http', '$stateParams', function ($http) {
return $http.get('/analysis/partner_card/' + client_id + '/settlement_logs/' + detail_id); return $http.get('/analysis/partner_card/' + client_id + '/settlement_logs/' + detail_id);
}], }],
detail_id:detail_id detail_id: detail_id
}, },
size: 'lg' size: 'lg'
}); });
@ -3408,7 +3477,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
detail: ['$http', '$stateParams', function ($http) { detail: ['$http', '$stateParams', function ($http) {
return $http.get('/analysis/partner_card/' + client_id + '/settlement_logs/' + detail_id); return $http.get('/analysis/partner_card/' + client_id + '/settlement_logs/' + detail_id);
}], }],
detail_id:detail_id detail_id: detail_id
}, },
size: 'lg' size: 'lg'
}); });
@ -3416,17 +3485,17 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.chooseLast7Days(); $scope.chooseLast7Days();
}]); }]);
app.controller('managerSettlementDetailCtrl', ['$scope', 'detail','detail_id','$http', function ($scope, detail,detail_id,$http) { app.controller('managerSettlementDetailCtrl', ['$scope', 'detail', 'detail_id', '$http', function ($scope, detail, detail_id, $http) {
$scope.ctrl = {channel: null}; $scope.ctrl = {channel: null};
$scope.show = true; $scope.show = true;
$scope.report = detail.data; $scope.report = detail.data;
$scope.report.total_charge = Decimal.add($scope.report.total_charge,$scope.report.tax_amount).toFixed(2); $scope.report.total_charge = Decimal.add($scope.report.total_charge, $scope.report.tax_amount).toFixed(2);
angular.forEach($scope.report.channels,function (e) { angular.forEach($scope.report.channels, function (e) {
e.total_charge = Decimal.add(e.tax_amount,e.total_charge).toFixed(2); e.total_charge = Decimal.add(e.tax_amount, e.total_charge).toFixed(2);
}); });
$scope.channelAndDayOfAnalysis = function () { $scope.channelAndDayOfAnalysis = function () {
$http.get('/analysis/partner_card/settlement_logs/' + detail_id+'/analysis/'+$scope.ctrl.channel).then(function (resp) { $http.get('/analysis/partner_card/settlement_logs/' + detail_id + '/analysis/' + $scope.ctrl.channel).then(function (resp) {
$scope.channelAndDayMap = resp.data; $scope.channelAndDayMap = resp.data;
$scope.index = 0; $scope.index = 0;
}) })
@ -3705,7 +3774,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
}]); }]);
app.controller('applyRpaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', 'businessStructuresMap','$filter', 'commonDialog','timezone', function ($scope, $http, $uibModal, $state, subMerchantInfo, businessStructuresMap,$filter, commonDialog,timezone) { app.controller('applyRpaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', 'businessStructuresMap', '$filter', 'commonDialog', 'timezone', function ($scope, $http, $uibModal, $state, subMerchantInfo, businessStructuresMap, $filter, commonDialog, timezone) {
$scope.subMerchantInfo = angular.copy(subMerchantInfo); $scope.subMerchantInfo = angular.copy(subMerchantInfo);
$scope.business_structures = businessStructuresMap.configs(); $scope.business_structures = businessStructuresMap.configs();
$scope.timezone = timezone.configs(); $scope.timezone = timezone.configs();
@ -3723,8 +3792,8 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
return; return;
} }
angular.forEach(form, function (item, key) { angular.forEach(form, function (item, key) {
if(item !=null) { if (item != null) {
if(item.$name !=null) { if (item.$name != null) {
merchantInfo[key] = item.$modelValue; merchantInfo[key] = item.$modelValue;
} }
} }
@ -3751,17 +3820,17 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
}]); }]);
app.controller('applyYeepaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state','subMerchantInfo','yeepayIndustryMap','yeepayBusinessContentMap','$filter', 'commonDialog','Upload', function ($scope, $http, $uibModal, $state,subMerchantInfo,yeepayIndustryMap,yeepayBusinessContentMap,$filter, commonDialog,Upload) { app.controller('applyYeepaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', 'yeepayIndustryMap', 'yeepayBusinessContentMap', '$filter', 'commonDialog', 'Upload', function ($scope, $http, $uibModal, $state, subMerchantInfo, yeepayIndustryMap, yeepayBusinessContentMap, $filter, commonDialog, Upload) {
$scope.yeepay_industries = yeepayIndustryMap.configs(); $scope.yeepay_industries = yeepayIndustryMap.configs();
$scope.yeepay_business_contents = yeepayBusinessContentMap.configs(); $scope.yeepay_business_contents = yeepayBusinessContentMap.configs();
$scope.subMerchantInfo = angular.copy(subMerchantInfo); $scope.subMerchantInfo = angular.copy(subMerchantInfo);
if(!$scope.subMerchantInfo.abn){ if (!$scope.subMerchantInfo.abn) {
$scope.subMerchantInfo.abn = $scope.subMerchantInfo.acn; $scope.subMerchantInfo.abn = $scope.subMerchantInfo.acn;
} }
var vouchers={}; var vouchers = {};
$scope.directors={}; $scope.directors = {};
$scope.executives={}; $scope.executives = {};
$scope.industry = ''; $scope.industry = '';
$scope.business_content = ''; $scope.business_content = '';
var merchantInfo = {}; var merchantInfo = {};
@ -4068,17 +4137,17 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
} }
}]); }]);
app.controller('updateYeepaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state','subMerchantInfo','yeepayIndustryMap','yeepayBusinessContentMap','$filter', 'commonDialog','Upload','subMerchantId', function ($scope, $http, $uibModal, $state,subMerchantInfo,yeepayIndustryMap,yeepayBusinessContentMap,$filter, commonDialog,Upload,subMerchantId) { app.controller('updateYeepaySubMerchantIdCtrl', ['$scope', '$http', '$uibModal', '$state', 'subMerchantInfo', 'yeepayIndustryMap', 'yeepayBusinessContentMap', '$filter', 'commonDialog', 'Upload', 'subMerchantId', function ($scope, $http, $uibModal, $state, subMerchantInfo, yeepayIndustryMap, yeepayBusinessContentMap, $filter, commonDialog, Upload, subMerchantId) {
$scope.yeepay_industries = yeepayIndustryMap.configs(); $scope.yeepay_industries = yeepayIndustryMap.configs();
$scope.yeepay_business_contents = yeepayBusinessContentMap.configs(); $scope.yeepay_business_contents = yeepayBusinessContentMap.configs();
$scope.subMerchantInfo = angular.copy(subMerchantInfo); $scope.subMerchantInfo = angular.copy(subMerchantInfo);
if(!$scope.subMerchantInfo.abn){ if (!$scope.subMerchantInfo.abn) {
$scope.subMerchantInfo.abn = $scope.subMerchantInfo.acn; $scope.subMerchantInfo.abn = $scope.subMerchantInfo.acn;
} }
var vouchers={}; var vouchers = {};
$scope.directors={}; $scope.directors = {};
$scope.executives={}; $scope.executives = {};
$scope.industry = ''; $scope.industry = '';
$scope.business_content = ''; $scope.business_content = '';
var merchantInfo = {}; var merchantInfo = {};
@ -4388,10 +4457,10 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
app.controller('permissionClientCtrl', ['$scope', '$http', '$uibModal', '$state', '$filter', 'commonDialog', function ($scope, $http, $uibModal, $state, $filter, commonDialog) { app.controller('permissionClientCtrl', ['$scope', '$http', '$uibModal', '$state', '$filter', 'commonDialog', function ($scope, $http, $uibModal, $state, $filter, commonDialog) {
$scope.clientPermission = {client_moniker:$scope.partner.client_moniker}; $scope.clientPermission = {client_moniker: $scope.partner.client_moniker};
$scope.loadPermissionList = function () { $scope.loadPermissionList = function () {
var params = angular.copy($scope.clientPermission); var params = angular.copy($scope.clientPermission);
$http.get('/sys/permission/list',{params:params}).then(function (resp) { $http.get('/sys/permission/list', {params: params}).then(function (resp) {
$scope.permissionList = resp.data; $scope.permissionList = resp.data;
}, function (resp) { }, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
@ -4401,16 +4470,16 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.switchValid = function (permission) { $scope.switchValid = function (permission) {
$scope.clientPermission.isValid = permission.is_valid; $scope.clientPermission.isValid = permission.is_valid;
var params = angular.copy($scope.clientPermission); var params = angular.copy($scope.clientPermission);
$http.post('/sys/permission/'+permission.id,params).then(function (resp) { $http.post('/sys/permission/' + permission.id, params).then(function (resp) {
},function (resp) { }, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
}) })
}; };
$scope.init = function () { $scope.init = function () {
var params = {client_moniker:$scope.partner.client_moniker}; var params = {client_moniker: $scope.partner.client_moniker};
$http.post('/sys/permission/init',params).then(function (resp) { $http.post('/sys/permission/init', params).then(function (resp) {
},function (resp) { }, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'}) commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
}) })
}; };
@ -4418,11 +4487,6 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}]); }]);
app.filter('bdOrg', function () { app.filter('bdOrg', function () {
return function (bdUsers, org_id) { return function (bdUsers, org_id) {
if (org_id) { if (org_id) {

@ -1,5 +1,5 @@
<style> <style>
.img-size{ .img-size {
max-height: 100px; max-height: 100px;
margin-left: 20px; margin-left: 20px;
} }
@ -257,7 +257,8 @@
</div> </div>
<uib-progressbar value="shopPhotoProgress.value" <uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar> ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo" class="thumbnail img-size col-sm-9"> <img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo"
class="thumbnail img-size col-sm-9">
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form-control-static"><em>2:</em>&nbsp; <div class="form-control-static"><em>2:</em>&nbsp;
@ -268,7 +269,8 @@
</div> </div>
<uib-progressbar value="storePhotoProgress.value" <uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar> ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo" class="thumbnail img-size col-sm-9"> <img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo"
class="thumbnail img-size col-sm-9">
</div> </div>
</div> </div>
@ -389,8 +391,114 @@
</div> </div>
</div> </div>
<!--end 商户基本资料--> <!--end 商户基本资料-->
<!--商户支付场景-->
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em></div> <div class="panel-heading">Merchant Payment Scenario</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_type.$invalid && partnerForm.client_pay_type.$dirty}">
<label class="control-label col-sm-2" for="client-pay-type-select">*
Merchant Payment Scenario Type</label>
<div class="col-sm-8">
<select class="form-control" ng-model="partner.client_pay_type"
id="client-pay-type-select"
name="client_pay_type">
<option value="">Please Choose</option>
<option value="all">All</option>
<option value="online">线上</option>
<option value="offline">线下</option>
</select>
<div ng-messages="partnerForm.client_pay_type.$error"
ng-if="partnerForm.client_pay_type.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<!--<div ng-if="partner.client_pay_type=='online' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Website</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_website">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--公众号名称</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_public_account">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Mini Program Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_mini_program">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--APP Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_app">-->
<!--<p class="small text-info">-->
<!--<i class="fa fa-info"></i> 线上支付场景至少选择填一项</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div ng-if="partner.client_pay_type=='offline' || partner.client_pay_type=='all'">-->
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">-->
<!--<label class="control-label col-sm-2"-->
<!--for="client-offline-desc">*Offline Scene Of Merchants</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" id="client-offline-desc" required-->
<!--name="client_offline" readonly-->
<!--ng-model="partner.client_offline_desc | partner_offline_desc"-->
<!--multi-level-select-popup="client_offline_select"-->
<!--on-select="onOfflineDescSelect($selected)">-->
<!--<div ng-messages="partnerForm.client_offline.$error"-->
<!--ng-if="partnerForm.client_offline.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required-->
<!--Field</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_desc.$invalid && partnerForm.client_pay_desc.$dirty}">
<label class="control-label col-sm-2" for="client-pay-desc-input">*
Merchant Payment Scenario Description</label>
<div class="col-sm-8">
<textarea class="form-control" required
ng-model="partner.client_pay_desc"
name="client_pay_desc" id="client-pay-desc-input"
maxlength="200"></textarea>
<p class="small text-info">
<i class="fa fa-info"></i> 例如线下场景门店立牌、POS、收银系统选择品牌名称【ipos、银豹、aupos、其他】、无门店</p>
<div ng-messages="partnerForm.client_pay_desc.$error"
ng-if="partnerForm.client_pay_desc.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em>
</div>
<div class="panel-body"> <div class="panel-body">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group"> <div class="form-group">
@ -413,7 +521,8 @@
<label class="control-label col-sm-2"> <label class="control-label col-sm-2">
Merchant Introduction<em class="small">(Chinese)</em></label> Merchant Introduction<em class="small">(Chinese)</em></label>
<div class="col-sm-8"> <div class="col-sm-8">
<textarea class="form-control" ng-model="partner.merchant_introduction"></textarea> <textarea class="form-control"
ng-model="partner.merchant_introduction"></textarea>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
@ -675,7 +784,8 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<div class="embed-responsive" style="height: 300px;"> <div class="embed-responsive" style="height: 300px;">
<iframe id="merchant_detail" name="merchant_detail" class="embed-responsive-item" src="one_locations.html"></iframe> <iframe id="merchant_detail" name="merchant_detail" class="embed-responsive-item"
src="one_locations.html"></iframe>
</div> </div>
</div> </div>
</div> </div>
@ -778,13 +888,15 @@
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading" style="color: #333;background-color: #f5f5f5;border-color: #ddd;">Industry</div> <div class="panel-heading" style="color: #333;background-color: #f5f5f5;border-color: #ddd;">
Industry
</div>
<div class="panel-body form-horizontal"> <div class="panel-body form-horizontal">
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.royalpay_label.$invalid && partnerForm.royalpay_label.$dirty}"> ng-class="{'has-error':partnerForm.royalpay_label.$invalid && partnerForm.royalpay_label.$dirty}">
<label class="control-label col-sm-2" <label class="control-label col-sm-2"
for="royalpayindustry">*RoyalPay Industry</label> for="royalpayindustry">*RoyalPay Industry</label>
<div class="col-sm-8" > <div class="col-sm-8">
<input class="form-control" id="royalpayindustry" required <input class="form-control" id="royalpayindustry" required
name="royalpayindustry" readonly name="royalpayindustry" readonly
ng-model="partner.royalpayindustry|partner_royalpay_industry" ng-model="partner.royalpayindustry|partner_royalpay_industry"
@ -841,7 +953,7 @@
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}"> ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2" <label class="control-label col-sm-2"
for="alipay_category">*Alipay Category</label> for="alipay_category">*Alipay Category</label>
<div class="col-sm-8" > <div class="col-sm-8">
<input class="form-control" id="alipay_category" required <input class="form-control" id="alipay_category" required
name="alipay_category" readonly name="alipay_category" readonly
ng-model="partner.alipayindustry|partner_alipay_industry" ng-model="partner.alipayindustry|partner_alipay_industry"
@ -859,7 +971,7 @@
<div class="form-group" ng-if="('10'|withRole) || ('1'|withRole)"> <div class="form-group" ng-if="('10'|withRole) || ('1'|withRole)">
<label class="control-label col-sm-2" <label class="control-label col-sm-2"
for="hf_category">HF Industry</label> for="hf_category">HF Industry</label>
<div class="col-sm-8" > <div class="col-sm-8">
<input class="form-control" id="hf_category" required <input class="form-control" id="hf_category" required
name="hf_label" readonly name="hf_label" readonly
ng-model="partner.hfindustry|partner_hf_industry" ng-model="partner.hfindustry|partner_hf_industry"

@ -28,7 +28,8 @@
width: 95%; width: 95%;
float: left; float: left;
} }
.img-size{
.img-size {
height: 100px; height: 100px;
margin-left: 20px; margin-left: 20px;
} }
@ -39,7 +40,8 @@
<i ng-if="partner.parent_client_id" class="fa fa-sitemap" title="Sub Partner"></i> <i ng-if="partner.parent_client_id" class="fa fa-sitemap" title="Sub Partner"></i>
<a class="text-primary" ng-if="'00001'|withRole" title="Mock Login" <a class="text-primary" ng-if="'00001'|withRole" title="Mock Login"
ng-href="/global/userstatus/current_manager/clients/{{partner.client_moniker}}/auth" target="_blank"><i ng-href="/global/userstatus/current_manager/clients/{{partner.client_moniker}}/auth" target="_blank"><i
class="fa fa-share"></i></a><span ng-if="partner.is_valid==0" ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span> class="fa fa-share"></i></a><span ng-if="partner.is_valid==0"
ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span>
</h1> </h1>
<ol class="breadcrumb"> <ol class="breadcrumb">
<li> <li>
@ -78,7 +80,9 @@
</b> </b>
<span ng-if="partner.is_valid==0" ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span> <span ng-if="partner.is_valid==0" ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span>
</h3> </h3>
<button ng-if="!partner.is_valid" type="button" class="btn btn-success" style="float:right;" ng-click="revertClient()">Revert</button> <button ng-if="!partner.is_valid" type="button" class="btn btn-success" style="float:right;"
ng-click="revertClient()">Revert
</button>
</div> </div>
<div class="box-body" ng-if="partner.is_valid==1"> <div class="box-body" ng-if="partner.is_valid==1">
<div ng-if="partner.open_status != 5 && partner.open_status!=10"> <div ng-if="partner.open_status != 5 && partner.open_status!=10">
@ -130,16 +134,22 @@
<small ng-repeat="log in partner.audit_logs"> <small ng-repeat="log in partner.audit_logs">
<i class="fa fa-arrow-right" aria-hidden="true"></i> <i class="fa fa-arrow-right" aria-hidden="true"></i>
<div class="btn-group-vertical"> <div class="btn-group-vertical">
<button type="button" class="btn btn-xs btn-primary" ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">{{log.remark}}</button> <button type="button" class="btn btn-xs btn-primary"
<button type="button" class="btn btn-xs btn-primary" ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">{{log.operator}} | {{log.create_time}}</button> ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">
{{log.remark}}
</button>
<button type="button" class="btn btn-xs btn-primary"
ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">
{{log.operator}} | {{log.create_time}}
</button>
</div> </div>
</small> </small>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div> <a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{Export()}}"> <div><a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{Export()}}">
<i class="fa fa-download" ></i>制作临时合同</a> <i class="fa fa-download"></i>制作临时合同</a>
</div> </div>
<div class="box" ng-if="('100'|withRole) && partner.show_all_permission" <div class="box" ng-if="('100'|withRole) && partner.show_all_permission"
@ -200,8 +210,14 @@
<small ng-repeat="log in partner.audit_logs"> <small ng-repeat="log in partner.audit_logs">
<i class="fa fa-arrow-right" aria-hidden="true" style="margin-top: 5px"></i> <i class="fa fa-arrow-right" aria-hidden="true" style="margin-top: 5px"></i>
<div class="btn-group-vertical" style="margin-top: 5px"> <div class="btn-group-vertical" style="margin-top: 5px">
<button type="button" class="btn btn-xs btn-primary" ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">{{log.remark}}</button> <button type="button" class="btn btn-xs btn-primary"
<button type="button" class="btn btn-xs btn-primary" ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">{{log.operator}} | {{log.create_time}}</button> ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">
{{log.remark}}
</button>
<button type="button" class="btn btn-xs btn-primary"
ng-class="{'btn-danger':log.remark.indexOf('打回')>-1,'btn-success':log.open_status_to==5||(log.open_status_from==10 && log.open_status_to==1)}">
{{log.operator}} | {{log.create_time}}
</button>
</div> </div>
</small> </small>
</div> </div>
@ -235,7 +251,8 @@
<li ui-sref-active="active" ng-if="partner.show_all_permission && partner.is_valid==1"> <li ui-sref-active="active" ng-if="partner.show_all_permission && partner.is_valid==1">
<a ui-sref=".accounts">Partner Accounts</a> <a ui-sref=".accounts">Partner Accounts</a>
</li> </li>
<li ui-sref-active="active" ng-if="partner.parent_client_id==null && partner.show_all_permission && partner.is_valid==1"> <li ui-sref-active="active"
ng-if="partner.parent_client_id==null && partner.show_all_permission && partner.is_valid==1">
<a ui-sref=".subpartners">Subpartners</a> <a ui-sref=".subpartners">Subpartners</a>
</li> </li>
<li ui-sref-active="active" ng-if="false && partner.is_valid==1"> <li ui-sref-active="active" ng-if="false && partner.is_valid==1">
@ -257,7 +274,8 @@
<a ui-sref=".settlement({clientMoniker:partner.client_moniker})">Settlement</a> <a ui-sref=".settlement({clientMoniker:partner.client_moniker})">Settlement</a>
</li> </li>
<li ui-sref-active="active" ng-if="partner.show_all_permission && partner.is_valid==1 && partner.surcharge_mode=='distributed'"> <li ui-sref-active="active"
ng-if="partner.show_all_permission && partner.is_valid==1 && partner.surcharge_mode=='distributed'">
<a ui-sref=".surcharge_account({clientMoniker:partner.client_moniker})">Surcharge Account</a> <a ui-sref=".surcharge_account({clientMoniker:partner.client_moniker})">Surcharge Account</a>
</li> </li>
@ -298,7 +316,8 @@
<a ui-sref="partners.detail({clientMoniker:partner.parent_client.client_moniker})" <a ui-sref="partners.detail({clientMoniker:partner.parent_client.client_moniker})"
ng-bind="partner.parent_client.client_moniker"></a>) ng-bind="partner.parent_client.client_moniker"></a>)
</span> </span>
<span ng-if="partner.is_valid==0" ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span> <span ng-if="partner.is_valid==0"
ng-class="{pass_timeout:partner.is_valid==0}">(已禁用)</span>
</p> </p>
</div> </div>
</div> </div>
@ -307,7 +326,8 @@
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static pull-left" ng-bind="partner.company_name"></p> <p class="form-control-static pull-left" ng-bind="partner.company_name"></p>
<p class="form-control-static pull-left" ng-if="isComplianceOfCompanyName && partner.open_status" <p class="form-control-static pull-left"
ng-if="isComplianceOfCompanyName && partner.open_status"
style="margin-left: 10px;font-weight: 700;color: red;"> style="margin-left: 10px;font-weight: 700;color: red;">
注意:(微信渠道可能不合规) 注意:(微信渠道可能不合规)
</p> </p>
@ -318,7 +338,8 @@
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static pull-left" ng-bind="partner.short_name"></p> <p class="form-control-static pull-left" ng-bind="partner.short_name"></p>
<p class="form-control-static pull-left" ng-if="isComplianceOfShortName && partner.open_status" <p class="form-control-static pull-left"
ng-if="isComplianceOfShortName && partner.open_status"
style="margin-left: 10px;font-weight: 700;color: red;"> style="margin-left: 10px;font-weight: 700;color: red;">
注意:(微信渠道可能不合规) 注意:(微信渠道可能不合规)
</p> </p>
@ -335,7 +356,8 @@
<label class="control-label col-sm-2">Store Name</label> <label class="control-label col-sm-2">Store Name</label>
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static pull-left" ng-bind="partner.store_name"></p> <p class="form-control-static pull-left" ng-bind="partner.store_name"></p>
<p class="form-control-static pull-left" ng-if="isComplianceOfShortName && partner.open_status" <p class="form-control-static pull-left"
ng-if="isComplianceOfShortName && partner.open_status"
style="margin-left: 10px;font-weight: 700;color: red;"> style="margin-left: 10px;font-weight: 700;color: red;">
注意:(微信渠道可能不合规) 注意:(微信渠道可能不合规)
</p> </p>
@ -348,7 +370,8 @@
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static pull-left" <p class="form-control-static pull-left"
ng-bind="partner.business_structure|business_structure"></p> ng-bind="partner.business_structure|business_structure"></p>
<p class="form-control-static pull-left" ng-if="isComplianceOfBusinessStructure && partner.open_status" <p class="form-control-static pull-left"
ng-if="isComplianceOfBusinessStructure && partner.open_status"
style="margin-left: 10px;font-weight: 700;color: red;"> style="margin-left: 10px;font-weight: 700;color: red;">
注意:(微信渠道可能不合规) 注意:(微信渠道可能不合规)
</p> </p>
@ -399,7 +422,7 @@
<div class="col-sm-3 col-xs-5" ng-if="partner.store_photo"><em>2:</em>&nbsp; <div class="col-sm-3 col-xs-5" ng-if="partner.store_photo"><em>2:</em>&nbsp;
<div> <div>
<a class="thumbnail" target="_blank" ng-href="{{partner.store_photo}}" > <a class="thumbnail" target="_blank" ng-href="{{partner.store_photo}}">
<img ng-src="{{partner.store_photo}}" style="max-height: 100px"> <img ng-src="{{partner.store_photo}}" style="max-height: 100px">
</a> </a>
</div> </div>
@ -470,7 +493,8 @@
<th>End Date</th> <th>End Date</th>
<th>BD Name</th> <th>BD Name</th>
<th>Proportion</th> <th>Proportion</th>
<th ng-if="('00010'|withRole) || (('1000000000000'|withRole) && partner.show_all_permission)">Operation <th ng-if="('00010'|withRole) || (('1000000000000'|withRole) && partner.show_all_permission)">
Operation
</th> </th>
</tr> </tr>
</thead> </thead>
@ -501,9 +525,568 @@
</div> </div>
</div> </div>
<!--end 商户基本资料--> <!--end 商户基本资料-->
<div class="panel panel-default">
<div class="panel-heading">Merchant Payment Scenario</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Payment Scenario Type</label>
<div class="col-sm-8">
<p class="form-control-static"
ng-bind="partner.client_pay_type">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Merchant Payment Scenario Description</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.client_pay_desc"></p>
</div>
</div>
<!--<div ng-if="partner.client_pay_type=='online' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Website</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_website">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--公众号名称</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_public_account">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Mini Program Name</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_mini_program">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--APP Name</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_app">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div ng-if="partner.client_pay_type=='offline' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">Offline Scene Of Merchants</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.client_offline_desc | partner_offline_desc">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em>
</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">
Business Hours</label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.business_hours">
<p class="small text-info">
eg:Monday-Friday 09:00-20:00,Saturday-Sunday 10:00-22:00</p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Tag<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.merchant_tag">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Introduction<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<textarea class="form-control"
ng-model="partner.merchant_introduction"></textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Video Introduction<br><em class="small">(youtube link)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control"
ng-model="partner.merchant_video_url">
<p class="small text-info">eg:https://www.baidu.com</p>
</div>
</div>
</div>
</div>
</div>
<!--支付宝资料--> <!--支付宝资料-->
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em></div> <div class="panel-heading">Contact Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_person.$invalid && partnerForm.contact_person.$dirty}">
<label class="control-label col-sm-2" for="contact_person-input">*
Contact Person
Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_person"
required
name="contact_person"
id="contact_person-input" maxlength="50">
<div ng-messages="partnerForm.contact_person.$error"
ng-if="partnerForm.contact_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}">
<label class="control-label col-sm-2" for="contact-phone-p-input">*
Phone</label>
<!-- <div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.contact_phone" required
name="contact_phone" id="contact-phone-input" maxlength="20">
</div>
<div ng-messages="partnerForm.contact_phone.$error"
ng-if="partnerForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p>
</div>-->
<div class="col-sm-2">
<div class="input-group">
<div class="input-group-addon">+</div>
<input class="form-control" required type="text"
ng-model="partner.contact_phone_c"
name="contact_phone_c" id="contact-phone-c-input"
maxlength="3" minlength="1"
placeholder="country code">
</div>
<div ng-messages="partnerForm.contact_phone_c.$error"
ng-if="partnerForm.contact_phone_c.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 20 Characters</p>
</div>
</div>
<div class="col-sm-2">
<input class="form-control" type="text"
ng-model="partner.contact_phone_a"
title="eg:3,当为手机号、服务电话时,可以不填"
name="contact_phone_a" id="contact-phone-a-input"
maxlength="2" placeholder="area code">
<div ng-messages="partnerForm.contact_phone_a.$error"
ng-if="partnerForm.contact_phone_a.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 2 Characters</p>
</div>
</div>
<div class="col-sm-4">
<input class="form-control" required type="text"
ng-model="partner.contact_phone_p"
name="contact_phone_p" id="contact-phone-p-input"
maxlength="11" placeholder="phone number">
<div ng-messages="partnerForm.contact_phone_p.$error"
ng-if="partnerForm.contact_phone_p.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 11 Characters</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_email.$invalid && partnerForm.contact_email.$dirty}">
<label class="control-label col-sm-2" for="contact-email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_email"
required
name="contact_email" id="contact-email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.contact_email.$error"
ng-if="partnerForm.contact_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
<div class="panel panel-default">
<div class="panel-heading">Address Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="address-input">*
Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.address"
name="address"
id="address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.address.$error"
ng-if="partnerForm.address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.suburb.$invalid && partnerForm.suburb.$dirty}">
<label class="control-label col-sm-4" for="suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.suburb"
name="suburb"
id="suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.suburb.$error"
ng-if="partnerForm.suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--</div>-->
<!--<select class="form-control" name="suburb" required ng-model="partner.suburb"-->
<!--id="suburb-input"-->
<!--ng-options="t2c.key as t2c.value for t2c in t2city_map">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.suburb.$error" ng-if="partnerForm.suburb.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.postcode.$invalid && partnerForm.postcode.$dirty}">
<label class="control-label col-sm-4" for="postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.postcode"
name="postcode"
id="postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.postcode.$error"
ng-if="partnerForm.postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.state.$invalid && partnerForm.state.$dirty}">
<label class="control-label col-sm-4" for="state-input">*
State</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="partner.state" name="state" id="state-input"-->
<!--maxlength="20">-->
<!--<div ng-messages="partnerForm.state.$error" ng-if="partnerForm.state.$dirty">-->
<!--<p class="small text-danger" ng-message="maxlength">Less Than 20-->
<!--Characters(including symbols and spaces)</p>-->
<!--</div>-->
<select class="form-control" name="state" required
ng-model="partner.state"
id="state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.state.$error"
ng-if="partnerForm.state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.country.$invalid && partnerForm.country.$dirty}">
<label class="control-label col-sm-4" for="country-input">*
Country</label>
<div class="col-sm-8">
<input class="form-control"
ng-init="partner.country=partner.country||'AUS'"
ng-model="partner.country" name="country"
id="country-input" maxlength="20" required
placeholder="AUS" readonly="readonly">
<div ng-messages="partnerForm.country.$error"
ng-if="partnerForm.country.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 20
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--选择框-->
<!--<select class="form-control" name="country" required ng-model="partner.country"-->
<!--id="country-input"-->
<!--ng-options="country.value as country.label for country in countries">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.country.$error" ng-if="partnerForm.country.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2"
for="tz-select">TimeZone</label>
<div class="col-sm-9">
<select class="form-control" name="timezone"
ng-model="partner.timezone"
id="tz-select"
ng-options="tz.key as tz.detail for tz in timezones">
</select>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" style="font-size: larger">Location
<span id="editmap" hidden>true</span>
<span id="add_view" hidden>true</span>
</div>
<div class="form-group">
<div class="embed-responsive" style="height: 300px;">
<iframe id="merchant_detail" name="merchant_detail" class="embed-responsive-item"
src="one_locations.html"></iframe>
</div>
</div>
</div>
<!--<div class="panel panel-info">
<div class="panel-heading">Alipay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-4"
for="alipay_category">*Category</label>
<div class="col-sm-8" >
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipay_category"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#62b900">wechat Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#d82d2d">JD Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustry.$error"
ng-if="partnerForm.jdindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#f06010;color: #f6f6f6;">RoyalPay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpayindustry.$invalid && partnerForm.royalpayindustry.$dirty}">
<label class="control-label col-sm-2" for="royalpayindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="royalpayindustry"
ng-model="partner.royalpayindustry"
id="royalpayindustry-input" required
ng-options="industry.value as industry.label for industry in royalpayindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.royalpayindustry.$error"
ng-if="partnerForm.royalpayindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>-->
<div class="panel panel-default">
<div class="panel-heading"
style="color: #333;background-color: #f5f5f5;border-color: #ddd;">
Industry
</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpay_label.$invalid && partnerForm.royalpay_label.$dirty}">
<label class="control-label col-sm-2"
for="royalpayindustry">*RoyalPay Industry</label>
<div class="col-sm-8">
<input class="form-control" id="royalpayindustry" required
name="royalpayindustry" readonly
ng-model="partner.royalpayindustry|partner_royalpay_industry"
multi-level-select-popup="royalpayindustry"
on-select="onRoyalPayIndustrySelect($selected)">
<div ng-messages="partnerForm.royalpay_label.$error"
ng-if="partnerForm.royalpay_label.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*JDPay Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustryindustry.$error"
ng-if="partnerForm.jdindustryindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2"
for="alipay_category">*Alipay Category</label>
<div class="col-sm-8">
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipayindustry|partner_alipay_industry"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="('10'|withRole) || ('1'|withRole)">
<label class="control-label col-sm-2"
for="hf_category">HF Industry</label>
<div class="col-sm-8">
<input class="form-control" id="hf_category" required
name="hf_label" readonly
ng-model="partner.hfindustry|partner_hf_industry"
multi-level-select-popup="hfindustry"
on-select="onHfIndustrySelect($selected)">
</div>
</div>
</div>
</div>
</div>
<!--支付宝资料-->
<div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em>
</div>
<div class="panel-body"> <div class="panel-body">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group"> <div class="form-group">
@ -561,13 +1144,16 @@
<div class="col-sm-8"> <div class="col-sm-8">
<p class="form-control-static"> <p class="form-control-static">
<span ng-bind="partner.contact_email"></span> <span ng-bind="partner.contact_email"></span>
<a ng-if="(partner.approve_result==1) || (partner.approve_result == 2 && (partner.source==1 || partner.source==2))" role="button" <a ng-if="(partner.approve_result==1) || (partner.approve_result == 2 && (partner.source==1 || partner.source==2))"
role="button"
ng-click="resendApproveEmail()"> ng-click="resendApproveEmail()">
<i class="fa fa-envelope"></i> Resend Email <i class="fa fa-envelope"></i> Resend Email
</a> </a>
<span ng-if="('10'|withRole)"> <span ng-if="('10'|withRole)">
<i style="cursor: pointer" ng-click="addSub()" ng-if="!partner.unsubscribe" class="fa fa-star text-yellow"></i> <i style="cursor: pointer" ng-click="addSub()" ng-if="!partner.unsubscribe"
<i style="cursor: pointer" ng-click="removeSub()" ng-if="partner.unsubscribe" class="fa fa-star-o text-yellow"></i> class="fa fa-star text-yellow"></i>
<i style="cursor: pointer" ng-click="removeSub()"
ng-if="partner.unsubscribe" class="fa fa-star-o text-yellow"></i>
</span> </span>
</p> </p>
</div> </div>
@ -751,7 +1337,7 @@
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-2">Alipay Category</label> <label class="control-label col-sm-2">Alipay Category</label>
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static industry-p"ng-if="partner.alipayindustry"> <p class="form-control-static industry-p" ng-if="partner.alipayindustry">
{{partner.alipayindustry|partner_alipay_industry}} {{partner.alipayindustry|partner_alipay_industry}}
&nbsp;&nbsp;&nbsp;({{partner.alipayindustry}}) &nbsp;&nbsp;&nbsp;({{partner.alipayindustry}})
</p> </p>
@ -763,7 +1349,7 @@
<div class="form-group" ng-if="partner.hfindustry&&(('10'|withRole) || ('1'|withRole))"> <div class="form-group" ng-if="partner.hfindustry&&(('10'|withRole) || ('1'|withRole))">
<label class="control-label col-sm-2">HF Industry</label> <label class="control-label col-sm-2">HF Industry</label>
<div class="col-sm-10"> <div class="col-sm-10">
<p class="form-control-static industry-p"ng-if="partner.hfindustry"> <p class="form-control-static industry-p" ng-if="partner.hfindustry">
{{partner.hfindustry| partner_hf_industry}} {{partner.hfindustry| partner_hf_industry}}
&nbsp;&nbsp;&nbsp;({{partner.hfindustry}}) &nbsp;&nbsp;&nbsp;({{partner.hfindustry}})
</p> </p>

@ -362,6 +362,596 @@
</div> </div>
</div> </div>
<!--end 商户基本资料--> <!--end 商户基本资料-->
<div class="panel panel-default">
<div class="panel-heading">Merchant Payment Scenario</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_type.$invalid && partnerForm.client_pay_type.$dirty}">
<label class="control-label col-sm-2" for="client-pay-type-select">*
Merchant Payment Scenario Type</label>
<div class="col-sm-8">
<select class="form-control" ng-model="partner.client_pay_type"
id="client-pay-type-select"
name="client_pay_type">
<option value="">Please Choose</option>
<option value="all">All</option>
<option value="online">线上</option>
<option value="offline">线下</option>
</select>
<div ng-messages="partnerForm.client_pay_type.$error"
ng-if="partnerForm.client_pay_type.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_desc.$invalid && partnerForm.client_pay_desc.$dirty}">
<label class="control-label col-sm-2" for="client-pay-desc-input">*
Merchant Payment Scenario Description</label>
<div class="col-sm-8">
<textarea class="form-control" required
ng-model="partner.client_pay_desc"
name="client_pay_desc" id="client-pay-desc-input"
maxlength="200"></textarea>
<p class="small text-info">
<i class="fa fa-info"></i> 例如线下场景门店立牌、POS、收银系统选择品牌名称【ipos、银豹、aupos、其他】、无门店</p>
<div ng-messages="partnerForm.client_pay_desc.$error"
ng-if="partnerForm.client_pay_desc.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<!--<div ng-if="partner.client_pay_type=='online' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Website</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_website">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--公众号名称</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_public_account">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Mini Program Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_mini_program">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--APP Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_app">-->
<!--<p class="small text-info">-->
<!--<i class="fa fa-info"></i> 线上支付场景至少选择填一项</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div ng-if="partner.client_pay_type=='offline' || partner.client_pay_type=='all'">-->
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">-->
<!--<label class="control-label col-sm-2"-->
<!--for="client-offline-desc">*Offline Scene Of Merchants</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" id="client-offline-desc" required-->
<!--name="client_offline" readonly-->
<!--ng-model="partner.client_offline_desc | partner_offline_desc"-->
<!--multi-level-select-popup="client_offline_select"-->
<!--on-select="onOfflineDescSelect($selected)">-->
<!--<div ng-messages="partnerForm.client_offline.$error"-->
<!--ng-if="partnerForm.client_offline.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required-->
<!--Field</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em></div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">
Business Hours</label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.business_hours">
<p class="small text-info">
eg:Monday-Friday 09:00-20:00,Saturday-Sunday 10:00-22:00</p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Tag<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.merchant_tag">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Introduction<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.merchant_introduction"></textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Video Introduction<br><em class="small">(youtube link)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.merchant_video_url">
<p class="small text-info">eg:https://www.baidu.com</p>
</div>
</div>
</div>
</div>
</div>
<!--支付宝资料-->
<div class="panel panel-default">
<div class="panel-heading">Contact Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_person.$invalid && partnerForm.contact_person.$dirty}">
<label class="control-label col-sm-2" for="contact_person-input">*
Contact Person
Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_person"
required
name="contact_person"
id="contact_person-input" maxlength="50">
<div ng-messages="partnerForm.contact_person.$error"
ng-if="partnerForm.contact_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}">
<label class="control-label col-sm-2" for="contact-phone-p-input">*
Phone</label>
<!-- <div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.contact_phone" required
name="contact_phone" id="contact-phone-input" maxlength="20">
</div>
<div ng-messages="partnerForm.contact_phone.$error"
ng-if="partnerForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p>
</div>-->
<div class="col-sm-2">
<div class="input-group">
<div class="input-group-addon">+</div>
<input class="form-control" required type="text"
ng-model="partner.contact_phone_c"
name="contact_phone_c" id="contact-phone-c-input"
maxlength="3" minlength="1"
placeholder="country code">
</div>
<div ng-messages="partnerForm.contact_phone_c.$error"
ng-if="partnerForm.contact_phone_c.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 20 Characters</p>
</div>
</div>
<div class="col-sm-2">
<input class="form-control" type="text"
ng-model="partner.contact_phone_a"
title="eg:3,当为手机号、服务电话时,可以不填"
name="contact_phone_a" id="contact-phone-a-input"
maxlength="2" placeholder="area code">
<div ng-messages="partnerForm.contact_phone_a.$error"
ng-if="partnerForm.contact_phone_a.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 2 Characters</p>
</div>
</div>
<div class="col-sm-4">
<input class="form-control" required type="text"
ng-model="partner.contact_phone_p"
name="contact_phone_p" id="contact-phone-p-input"
maxlength="11" placeholder="phone number">
<div ng-messages="partnerForm.contact_phone_p.$error"
ng-if="partnerForm.contact_phone_p.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 11 Characters</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_email.$invalid && partnerForm.contact_email.$dirty}">
<label class="control-label col-sm-2" for="contact-email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_email"
required
name="contact_email" id="contact-email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.contact_email.$error"
ng-if="partnerForm.contact_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
<div class="panel panel-default">
<div class="panel-heading">Address Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="address-input">*
Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.address"
name="address"
id="address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.address.$error"
ng-if="partnerForm.address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.suburb.$invalid && partnerForm.suburb.$dirty}">
<label class="control-label col-sm-4" for="suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.suburb"
name="suburb"
id="suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.suburb.$error"
ng-if="partnerForm.suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--</div>-->
<!--<select class="form-control" name="suburb" required ng-model="partner.suburb"-->
<!--id="suburb-input"-->
<!--ng-options="t2c.key as t2c.value for t2c in t2city_map">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.suburb.$error" ng-if="partnerForm.suburb.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.postcode.$invalid && partnerForm.postcode.$dirty}">
<label class="control-label col-sm-4" for="postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.postcode"
name="postcode"
id="postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.postcode.$error"
ng-if="partnerForm.postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.state.$invalid && partnerForm.state.$dirty}">
<label class="control-label col-sm-4" for="state-input">*
State</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="partner.state" name="state" id="state-input"-->
<!--maxlength="20">-->
<!--<div ng-messages="partnerForm.state.$error" ng-if="partnerForm.state.$dirty">-->
<!--<p class="small text-danger" ng-message="maxlength">Less Than 20-->
<!--Characters(including symbols and spaces)</p>-->
<!--</div>-->
<select class="form-control" name="state" required
ng-model="partner.state"
id="state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.state.$error"
ng-if="partnerForm.state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.country.$invalid && partnerForm.country.$dirty}">
<label class="control-label col-sm-4" for="country-input">*
Country</label>
<div class="col-sm-8">
<input class="form-control"
ng-init="partner.country=partner.country||'AUS'"
ng-model="partner.country" name="country"
id="country-input" maxlength="20" required
placeholder="AUS" readonly="readonly">
<div ng-messages="partnerForm.country.$error"
ng-if="partnerForm.country.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 20
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--选择框-->
<!--<select class="form-control" name="country" required ng-model="partner.country"-->
<!--id="country-input"-->
<!--ng-options="country.value as country.label for country in countries">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.country.$error" ng-if="partnerForm.country.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2"
for="tz-select">TimeZone</label>
<div class="col-sm-9">
<select class="form-control" name="timezone"
ng-model="partner.timezone"
id="tz-select"
ng-options="tz.key as tz.detail for tz in timezones">
</select>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" style="font-size: larger">Location
<span id="editmap" hidden>true</span>
<span id="add_view" hidden>true</span>
</div>
<div class="form-group">
<div class="embed-responsive" style="height: 300px;">
<iframe id="merchant_detail" name="merchant_detail" class="embed-responsive-item"
src="one_locations.html"></iframe>
</div>
</div>
</div>
<!--<div class="panel panel-info">
<div class="panel-heading">Alipay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-4"
for="alipay_category">*Category</label>
<div class="col-sm-8" >
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipay_category"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#62b900">wechat Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#d82d2d">JD Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustry.$error"
ng-if="partnerForm.jdindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#f06010;color: #f6f6f6;">RoyalPay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpayindustry.$invalid && partnerForm.royalpayindustry.$dirty}">
<label class="control-label col-sm-2" for="royalpayindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="royalpayindustry"
ng-model="partner.royalpayindustry"
id="royalpayindustry-input" required
ng-options="industry.value as industry.label for industry in royalpayindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.royalpayindustry.$error"
ng-if="partnerForm.royalpayindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>-->
<div class="panel panel-default">
<div class="panel-heading" style="color: #333;background-color: #f5f5f5;border-color: #ddd;">
Industry
</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpay_label.$invalid && partnerForm.royalpay_label.$dirty}">
<label class="control-label col-sm-2"
for="royalpayindustry">*RoyalPay Industry</label>
<div class="col-sm-8">
<input class="form-control" id="royalpayindustry" required
name="royalpayindustry" readonly
ng-model="partner.royalpayindustry|partner_royalpay_industry"
multi-level-select-popup="royalpayindustry"
on-select="onRoyalPayIndustrySelect($selected)">
<div ng-messages="partnerForm.royalpay_label.$error"
ng-if="partnerForm.royalpay_label.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*JDPay Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustryindustry.$error"
ng-if="partnerForm.jdindustryindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2"
for="alipay_category">*Alipay Category</label>
<div class="col-sm-8">
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipayindustry|partner_alipay_industry"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="('10'|withRole) || ('1'|withRole)">
<label class="control-label col-sm-2"
for="hf_category">HF Industry</label>
<div class="col-sm-8">
<input class="form-control" id="hf_category" required
name="hf_label" readonly
ng-model="partner.hfindustry|partner_hf_industry"
multi-level-select-popup="hfindustry"
on-select="onHfIndustrySelect($selected)">
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp; <em class="small"><b>(Optional)</b></em></div> <div class="panel-heading">Alipay Information &nbsp; <em class="small"><b>(Optional)</b></em></div>
<div class="panel-body"> <div class="panel-body">

Loading…
Cancel
Save