add 卡支付商户进件、修改、合规文件

master
luoyang 5 years ago
parent cb08cd7546
commit db974f69e2

@ -5,7 +5,7 @@
<parent> <parent>
<groupId>au.com.royalpay.payment</groupId> <groupId>au.com.royalpay.payment</groupId>
<artifactId>payment-parent</artifactId> <artifactId>payment-parent</artifactId>
<version>2.1.26</version> <version>2.1.28</version>
</parent> </parent>
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<artifactId>manage</artifactId> <artifactId>manage</artifactId>

@ -0,0 +1,19 @@
package au.com.royalpay.payment.manage.mappers.system;
import com.alibaba.fastjson.JSONObject;
import com.yixsoft.support.mybatis.autosql.annotations.AutoMapper;
import com.yixsoft.support.mybatis.autosql.annotations.AutoSql;
import com.yixsoft.support.mybatis.autosql.annotations.SqlType;
import org.apache.ibatis.annotations.Param;
@AutoMapper(tablename = "sys_client_upay_profile", pkName = "client_id")
public interface SysClientUpayProfileMapper {
@AutoSql(SqlType.INSERT)
void save(JSONObject info);
@AutoSql(SqlType.UPDATE)
void update(JSONObject info);
@AutoSql(SqlType.SELECT)
JSONObject findInfo(@Param("client_id") int clientId);
}

@ -3,6 +3,7 @@ package au.com.royalpay.payment.manage.merchants.beans;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField; import com.alibaba.fastjson.annotation.JSONField;
import org.apache.commons.lang3.StringUtils;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Pattern; import javax.validation.constraints.Pattern;
@ -114,8 +115,24 @@ public class ClientRegisterInfo {
private String client_pay_desc; private String client_pay_desc;
@JSONField(name = "it_contact_person_email") @JSONField(name = "it_contact_person_email")
private String itContactPersonEmail; private String itContactPersonEmail;
@JSONField(name = "client_type")
private String clientType;
@JSONField(name = "acceptor_name")
private String acceptorName;
@JSONField(name = "expected_card_revenue")
private String expectCardRevenue;
@JSONField(name = "average_card_transaction")
private String averageCardTransaction;
@JSONField(name = "mw_industry")
private String mwIndustry;
@JSONField(name = "enable_international_card")
private boolean enableInternaltionCard;
public JSONObject insertObject() { public JSONObject insertObject() {
if (industry == null) {
setIndustry("331");
}
JSONObject res = (JSONObject) JSON.toJSON(this); JSONObject res = (JSONObject) JSON.toJSON(this);
if (client_apply_id==null){ if (client_apply_id==null){
res.remove("client_apply_id"); res.remove("client_apply_id");
@ -123,6 +140,10 @@ public class ClientRegisterInfo {
return res; return res;
} }
public boolean enableCardPayment() {
return StringUtils.equalsIgnoreCase("card-payment", clientType) || StringUtils.equalsIgnoreCase("all", clientType);
}
public JSONObject updateObject() { public JSONObject updateObject() {
JSONObject obj = insertObject(); JSONObject obj = insertObject();
obj.remove("client_moniker"); obj.remove("client_moniker");
@ -560,4 +581,52 @@ public class ClientRegisterInfo {
public void setItContactPersonEmail(String itContactPersonEmail) { public void setItContactPersonEmail(String itContactPersonEmail) {
this.itContactPersonEmail = itContactPersonEmail; this.itContactPersonEmail = itContactPersonEmail;
} }
public void setAcceptorName(String acceptorName) {
this.acceptorName = acceptorName;
}
public String getAcceptorName() {
return acceptorName;
}
public boolean isEnableInternaltionCard() {
return enableInternaltionCard;
}
public String getAverageCardTransaction() {
return averageCardTransaction;
}
public String getExpectCardRevenue() {
return expectCardRevenue;
}
public String getMwIndustry() {
return mwIndustry;
}
public void setAverageCardTransaction(String averageCardTransaction) {
this.averageCardTransaction = averageCardTransaction;
}
public void setEnableInternaltionCard(boolean enableInternaltionCard) {
this.enableInternaltionCard = enableInternaltionCard;
}
public void setExpectCardRevenue(String expectCardRevenue) {
this.expectCardRevenue = expectCardRevenue;
}
public void setMwIndustry(String mwIndustry) {
this.mwIndustry = mwIndustry;
}
public String getClientType() {
return clientType;
}
public void setClientType(String clientType) {
this.clientType = clientType;
}
} }

@ -326,8 +326,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
private RPayPaymentCardSvcApi rPayPaymentCardSvcApi; private RPayPaymentCardSvcApi rPayPaymentCardSvcApi;
@Resource @Resource
private RPayMerchantMapper rPayMerchantMapper; private RPayMerchantMapper rPayMerchantMapper;
@Resource
private SysClientUpayProfileMapper sysClientUpayProfileMapper;
@Resource @Resource
private SmsSender smsSender; private SmsSender smsSender;
private static final String SOURCE_AGREE_FILE = "source_agree_file"; private static final String SOURCE_AGREE_FILE = "source_agree_file";
@ -433,6 +433,8 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
clientConfig.put("ext_params",client.getString("ext_params")); clientConfig.put("ext_params",client.getString("ext_params"));
} }
client.putAll(clientConfig); client.putAll(clientConfig);
JSONObject upayInfo = sysClientUpayProfileMapper.findInfo(client.getIntValue("client_id"));
client.putAll(upayInfo);
client.put("unsubscribe", mailUnsubMapper.findOneByClientMoniker(clientMoniker) == null ? false : true); client.put("unsubscribe", mailUnsubMapper.findOneByClientMoniker(clientMoniker) == null ? false : true);
client.put("show_all_permission", true); client.put("show_all_permission", true);
int role = manager != null ? manager.getIntValue("role") : 0; int role = manager != null ? manager.getIntValue("role") : 0;
@ -782,10 +784,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
partner.put("ali_sub_merchant_id", registery.getClientMoniker()); partner.put("ali_sub_merchant_id", registery.getClientMoniker());
partner.put("credential_code", RandomStringUtils.random(32, true, true)); partner.put("credential_code", RandomStringUtils.random(32, true, true));
partner.put("creator", manager.getString("manager_id")); partner.put("creator", manager.getString("manager_id"));
// if (manager.getIntValue("org_id") == 0) {
// throw new ForbiddenException("You were not belong to any organizations so that you cannot create new
// client");
// }
partner.put("org_id", manager.getIntValue("org_id")); partner.put("org_id", manager.getIntValue("org_id"));
if (StringUtils.isNotEmpty(registery.getLogoId())) { if (StringUtils.isNotEmpty(registery.getLogoId())) {
partner.put("logo_url", attachmentClient.getFileUrl(registery.getLogoId())); partner.put("logo_url", attachmentClient.getFileUrl(registery.getLogoId()));
@ -807,7 +805,6 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
//isRiskyMerchant(partner, null); //isRiskyMerchant(partner, null);
try { try {
clientMapper.save(partner); clientMapper.save(partner);
JSONObject clientConfig = new JSONObject(); JSONObject clientConfig = new JSONObject();
clientConfig.put("client_id", partner.getIntValue("client_id")); clientConfig.put("client_id", partner.getIntValue("client_id"));
@ -817,33 +814,13 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
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"));
saveLegalAndMarketingInfo(partner);
if (registery.enableCardPayment()) {
sysClientUpayProfileMapper.save(partner);
}
} catch (Exception e) { } catch (Exception e) {
throw new BadRequestException("error.partner.valid.dumplicate_client_moniker"); throw new BadRequestException("error.partner.valid.dumplicate_client_moniker");
} }
try {
JSONObject representativeInfo = new JSONObject();
representativeInfo.put("client_id", partner.getIntValue("client_id"));
representativeInfo.put("representative_person", partner.getString("legal_representative_person"));
representativeInfo.put("phone", partner.getString("legal_representative_phone"));
representativeInfo.put("email", partner.getString("legal_representative_email"));
representativeInfo.put("job_title", partner.getString("legal_representative_job"));
representativeInfo.put("address", partner.getString("registered_address"));
representativeInfo.put("suburb", partner.getString("registered_suburb"));
representativeInfo.put("postcode", partner.getString("registered_postcode"));
representativeInfo.put("state", partner.getString("registered_state"));
representativeInfo.put("legal_representative_wechatid", partner.getString("legal_representative_wechatid"));
// marking联系人
representativeInfo.put("marketing_person", partner.getString("marketing_person"));
representativeInfo.put("marketing_phone", partner.getString("marketing_phone"));
representativeInfo.put("marketing_email", partner.getString("marketing_email"));
representativeInfo.put("marketing_job_title", partner.getString("marketing_job"));
representativeInfo.put("marketing_wechatid", partner.getString("marketing_wechatid"));
sysClientLegalPersonMapper.save(representativeInfo);
} catch (Exception e) {
throw new BadRequestException("error.partner.valid.dumplicate_client_moniker");
}
if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) { if (ManagerRole.BD_USER.hasRole(manager.getIntValue("role"))) {
JSONObject client_bd = new JSONObject(); JSONObject client_bd = new JSONObject();
client_bd.put("client_id", partner.getIntValue("client_id")); client_bd.put("client_id", partner.getIntValue("client_id"));
@ -917,6 +894,16 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
sysClientLegalPersonMapper.save(representativeInfo); sysClientLegalPersonMapper.save(representativeInfo);
} }
if (info.enableCardPayment()) {
JSONObject upay = sysClientUpayProfileMapper.findInfo(clientId);
if (upay == null) {
sysClientUpayProfileMapper.save(updateInfo);
}else {
upay.putAll(updateInfo);
sysClientUpayProfileMapper.update(upay);
}
}
int originReferrerId = client.getIntValue("referrer_id"); int originReferrerId = client.getIntValue("referrer_id");
int updateReferrerId = Integer.parseInt(info.getReferrer_id() == null ? "0" : info.getReferrer_id()); int updateReferrerId = Integer.parseInt(info.getReferrer_id() == null ? "0" : info.getReferrer_id());
if (originReferrerId == 0 && updateReferrerId != 0) { if (originReferrerId == 0 && updateReferrerId != 0) {
@ -7128,4 +7115,24 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
return day+" "+ months[month]+" "+ year; return day+" "+ months[month]+" "+ year;
} }
public void saveLegalAndMarketingInfo(JSONObject partner) {
JSONObject representativeInfo = new JSONObject();
representativeInfo.put("client_id", partner.getIntValue("client_id"));
representativeInfo.put("representative_person", partner.getString("legal_representative_person"));
representativeInfo.put("phone", partner.getString("legal_representative_phone"));
representativeInfo.put("email", partner.getString("legal_representative_email"));
representativeInfo.put("job_title", partner.getString("legal_representative_job"));
representativeInfo.put("address", partner.getString("registered_address"));
representativeInfo.put("suburb", partner.getString("registered_suburb"));
representativeInfo.put("postcode", partner.getString("registered_postcode"));
representativeInfo.put("state", partner.getString("registered_state"));
representativeInfo.put("legal_representative_wechatid", partner.getString("legal_representative_wechatid"));
representativeInfo.put("marketing_person", partner.getString("marketing_person"));
representativeInfo.put("marketing_phone", partner.getString("marketing_phone"));
representativeInfo.put("marketing_email", partner.getString("marketing_email"));
representativeInfo.put("marketing_job_title", partner.getString("marketing_job"));
representativeInfo.put("marketing_wechatid", partner.getString("marketing_wechatid"));
sysClientLegalPersonMapper.save(representativeInfo);
}
} }

@ -1,15 +1,15 @@
spring: spring:
datasource: datasource:
master: master:
host: 119.28.3.196:3310 host: 192.168.0.84:3306
jdbc-url: jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false jdbc-url: jdbc:mysql://${spring.datasource.master.host}/${spring.datasource.master.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
password: read0nly password: rpayplus
schema-name: royalpay_production schema-name: royalpay
username: readonly username: root
slave: slave:
host: 119.28.3.196:3310 host: 192.168.0.84:3306
jdbc-url: jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false jdbc-url: jdbc:mysql://${spring.datasource.slave.host}/${spring.datasource.slave.schema-name}?useUnicode=true&characterEncoding=utf8&useSSL=false
password: read0nly password: rpayplus
schema-name: royalpay_production schema-name: royalpay
username: readonly username: root
type: com.zaxxer.hikari.HikariDataSource type: com.zaxxer.hikari.HikariDataSource

@ -13,6 +13,7 @@ define(['./app',
'./services/yeepayIndustryMap', './services/yeepayIndustryMap',
'./services/stateMap', './services/stateMap',
'./services/industryMap', './services/industryMap',
'./services/upayIndustryMap',
'./services/wechatGoodMcc', './services/wechatGoodMcc',
'./services/sectorMap', './services/sectorMap',
'./services/countryMap', './services/countryMap',

@ -0,0 +1,81 @@
define(['../app'], function (app) {
'use strict';
var upayIndustry = [
{
"label": "Professional Services",
"value": "Professional Services"
},
{
"label": "Mail/Telephone Order",
"value": "Mail/Telephone Order"
},
{
"label": "Business Services",
"value": "Business Services"
},
{
"label": "Retail Store",
"value": "Retail Store"
},
{
"label": "Airline Services",
"value": "Airline Services"
},
{
"label": "Entertainment",
"value": "Entertainment"
},
{
"label": "Automobiles",
"value": "Automobiles"
},
{
"label": "Clothing",
"value": "Clothing"
},
{
"label": "Contracted Services",
"value": "Contracted Services"
},
{
"label": "Government",
"value": "Government"
},
{
"label": "Hotel",
"value": "Hotel"
},
{
"label": "Personal Services",
"value": "Personal Services"
},
{
"label": "Repair Services",
"value": "Repair Services"
},
{
"label": "Transportation",
"value": "Transportation"
},
{
"label": "Utilities",
"value": "Utilities"
},
{
"label": "Wholesale",
"value": "Wholesale"
},
{
"label": "Other",
"value": "Other"
}
];
app.factory('upayIndustryMap', function () {
return {
configs: function () {
return upayIndustry;
}
}
});
});

@ -0,0 +1,884 @@
/**
* Created by yixian on 2016-06-29.
*/
define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter', 'ngBootSwitch', 'ngFileUpload', 'uiSelect'], function (angular, Decimal) {
'use strict';
var removeClientPayDesc = function (items, key) {
for (var i = 0; i < items.length; i++) {
var item = items[i];
if (item.indexOf(key) >= 0) {
items.splice(items.indexOf(item), 1);
i = i - 1;
}
}
};
var app = angular.module('addPartnerApp', ['ui.bootstrap', 'ui.router', 'frapontillo.bootstrap-switch', 'ui.select', 'ngFileUpload']);
app.config(['$stateProvider', function ($stateProvider) {
$stateProvider.state('newPartners', {
url: '/partners/new',
templateUrl: '/static/payment/partner/templates/add_partner.html',
controller: 'addPartnerCtrl'
}).state('partners.edit', {
url: '/{clientMoniker}/edit',
templateUrl: '/static/payment/partner/templates/partner_edit.html',
controller: 'partnerEditCtrl',
resolve: {
partner: ['$http', '$stateParams', function ($http, $stateParams) {
return $http.get('/sys/partners/' + $stateParams.clientMoniker);
}]
}
})
}]);
app.controller('addPartnerCtrl', ['$rootScope', '$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'businessStructuresMap', 'upayIndustryMap', 'industryMap', 'stateMap', 'sectorMap', 'countryMap', function ($rootScope, $scope, $http, $state, Upload, commonDialog, timezone, businessStructuresMap, upayIndustryMap, industryMap, stateMap, sectorMap, countryMap) {
if ($scope.partner_application) {
$scope.partner = angular.copy($scope.partner_application);
delete $rootScope.partner_application;
} else {
$scope.partner = {timezone: 'Australia/Melbourne'};
}
$scope.partner.client_type = 'cross-border';
$scope.initMerchantCode = function () {
$http.get('/sys/partners/init/merchant_code').then(function (response) {
$scope.partner.client_moniker = response.data.partner_code;
$scope.merchantCodeChecked = true;
$scope.merchantIsValid = true;
});
};
$scope.initMerchantCode();
$scope.partner.company_phone_c = 61;
$scope.partner.contact_phone_c = 61;
$scope.partner.client_pay_type = [];
$scope.partner.client_pay_desc = [];
var resetClientPayDescByTpey = function (type) {
type = parseInt(type);
if (type == 1) {
removeClientPayDesc($scope.partner.client_pay_desc, '10');
}
if (type == 2) {
removeClientPayDesc($scope.partner.client_pay_desc, '20');
}
};
$scope.partner.sameAsContactPerson = false;
$scope.checkboxOnclick = function (){
$scope.partner.sameAsContactPerson = !($scope.partner.sameAsContactPerson);
if($scope.partner.sameAsContactPerson) {
$scope.partner.legal_representative_person = $scope.partner.contact_person;
$scope.partner.legal_representative_phone_a = $scope.partner.contact_phone_a;
$scope.partner.legal_representative_phone_c = $scope.partner.contact_phone_c;
$scope.partner.legal_representative_phone_p = $scope.partner.contact_phone_p;
$scope.partner.legal_representative_email = $scope.partner.contact_email;
$scope.partner.legal_representative_job = $scope.partner.contact_job;
$scope.partner.legal_representative_wechatid = $scope.partner.contact_wechatid;
}
}
$scope.partner.marketingSameAsContact = false;
$scope.checkMarketingSameAsContact = function (){
$scope.partner.marketingSameAsContact = !($scope.partner.marketingSameAsContact);
if($scope.partner.marketingSameAsContact) {
$scope.partner.marketing_person = $scope.partner.contact_person;
$scope.partner.marketing_phone_a = $scope.partner.contact_phone_a;
$scope.partner.marketing_phone_c = $scope.partner.contact_phone_c;
$scope.partner.marketing_phone_p = $scope.partner.contact_phone_p;
$scope.partner.marketing_email = $scope.partner.contact_email;
$scope.partner.marketing_job = $scope.partner.contact_job;
$scope.partner.marketing_wechatid = $scope.partner.contact_wechatid;
}
}
$scope.partner.sameAsAddress=false;
$scope.sameAddress = function (){
$scope.partner.sameAsAddress = !($scope.partner.sameAsAddress);
if($scope.partner.sameAsAddress) {
$scope.partner.registered_address = $scope.partner.address;
$scope.partner.registered_suburb = $scope.partner.suburb;
$scope.partner.registered_postcode = $scope.partner.postcode;
$scope.partner.registered_state = $scope.partner.state;
}
}
var compare = function (x, y) {
x = parseInt(x);
y = parseInt(y);
if (x < y) {
return -1;
} else if (x > y) {
return 1;
} else {
return 0;
}
}
$scope.toggleClientPayType = function (type) {
if ($scope.partner.client_pay_type == null || $scope.partner.client_pay_type == undefined) {
$scope.partner.client_pay_type = [];
}
var $idx = $scope.partner.client_pay_type.indexOf(type);
if ($idx >= 0) {
$scope.partner.client_pay_type.splice($idx, 1);
resetClientPayDescByTpey(type);
} else {
$scope.partner.client_pay_type.push(type);
$scope.partner.client_pay_type.sort(compare);
}
};
$scope.toggleClientPayDesc = function (type) {
if ($scope.partner.client_pay_desc == null || $scope.partner.client_pay_desc == undefined) {
$scope.partner.client_pay_desc = [];
}
var $idx = $scope.partner.client_pay_desc.indexOf(type);
if ($idx >= 0) {
if (type == '203') {
removeClientPayDesc($scope.partner.client_pay_desc, '2030')
}
$scope.partner.client_pay_desc.splice($idx, 1);
} else {
$scope.partner.client_pay_desc.push(type);
$scope.partner.client_pay_desc.sort(compare);
}
};
$scope.pagination = {};
$scope.industries = industryMap.configs();
$scope.upayIndustrys = upayIndustryMap.configs();
$scope.states = stateMap.configs();
$scope.countries = countryMap.configs();
$scope.sectors = sectorMap.configs();
$scope.business_structures = businessStructuresMap.configs();
$scope.params = {textType: 'all', org_name: 'ALL'};
$scope.merchantIsValid = false;
$scope.merchantCodeChecked = false;
function remove(arr, val) {
if (angular.isArray(arr)) {
for (var i = arr.length; i--;) {
if (arr[i].value == val) {
arr.splice(i, 1);
break;
}
}
}
return arr;
}
var industries = angular.copy($scope.industries);
$scope.industries = remove(industries, 331);
$scope.listReferrers = function () {
$http.get('/sys/orgs/referrer').then(function (resp) {
$scope.referrers = resp.data;
})
};
$scope.listReferrers();
$scope.loadAlipayCategory = function () {
$http.get('/static/data/alipayMcc.json').then(function (resp) {
$scope.alipayMccCategory = resp.data;
})
};
$scope.loadAlipayCategory();
$scope.loadJDindustry = function () {
$http.get('/static/data/jdindustry.json').then(function (resp) {
$scope.jdindustry = resp.data;
})
};
$scope.loadJDindustry();
$scope.loadLakalaPayindustry = function () {
$http.get('/static/data/lakalapayindustry.json').then(function (resp) {
$scope.lakalapayindustry = resp.data;
})
};
$scope.loadLakalaPayindustry();
$scope.loadLakalaPaySettle = function () {
$http.get('/static/data/lakalapaysettle.json').then(function (resp) {
$scope.lakalapaysettle = resp.data;
})
};
$scope.loadLakalaPaySettle();
$scope.loadLakalaPayGoods = function () {
$http.get('/static/data/lakalapaygoods.json').then(function (resp) {
$scope.lakalapaygoods = resp.data;
})
};
$scope.loadLakalaPayGoods();
$scope.loadRoyalpayindustry = function () {
$http.get('/static/data/royalpayindustry.json').then(function (resp) {
$scope.royalpayindustry = resp.data;
})
};
$scope.loadRoyalpayindustry();
$scope.loadHfindustry = function () {
$http.get('/static/data/hfindustry.json').then(function (resp) {
$scope.hfindustry = resp.data;
})
};
$scope.loadHfindustry();
$scope.onAlipayMccSelect = function (selectedItem) {
$scope.partner.alipay_category = selectedItem.label;
$scope.partner.alipayindustry = selectedItem.mccCode;
};
$scope.onRoyalPayIndustrySelect = function (selectedItem) {
$scope.partner.royalpay_label = selectedItem.label;
$scope.partner.royalpayindustry = selectedItem.mccCode;
};
$scope.onHfIndustrySelect = function (selectedItem) {
$scope.partner.hf_label = selectedItem.label;
$scope.partner.hfindustry = selectedItem.mccCode;
};
// $scope.t2city_map = angular.copy(t2city_map);
$scope.timezones = timezone.configs();
$scope.checkMerchantCodeIsValid = function (code) {
if (code.length != 4) {
$scope.merchantCodeChecked = false;
$scope.merchantIsValid = false;
return;
}
$http.get('/sys/partners/init/check_code_isvalid', {params: {clientMoniker: code}}).then(function (response) {
$scope.merchantIsValid = response.data;
$scope.merchantCodeChecked = true;
});
};
$scope.save = function (form) {
if (form.$invalid) {
angular.forEach(form, function (item, key) {
if (key.indexOf('$') < 0) {
item.$dirty = true;
}
});
return;
}
if ($scope.partner.company_name.indexOf("Migration") != -1) {
alert("Company Name包含敏感词汇请检查后重新提交");
return;
}
if ($scope.partner.company_phone_a && ('' + $scope.partner.company_phone_a != '')) {
if ($scope.partner.company_phone_a.indexOf('0') == 0) {
alert("Please remove the first character '0' of area code");
return;
}
}
if ($scope.partner.contact_phone && ('' + $scope.partner.contact_phone != '')) {
if ($scope.partner.contact_phone.indexOf('0') == 0) {
alert("Please remove the first character '0' of area code");
return;
}
}
$scope.partner.company_phone = '+' + $scope.partner.company_phone_c + ($scope.partner.company_phone_a || '') + $scope.partner.company_phone_p;
$scope.partner.contact_phone = '+' + $scope.partner.contact_phone_c + ($scope.partner.contact_phone_a || '') + $scope.partner.contact_phone_p;
$scope.partner.legal_representative_phone = '+' + $scope.partner.legal_representative_phone_c + ( $scope.partner.legal_representative_phone_a || '') + $scope.partner.legal_representative_phone_p;
$scope.partner.marketing_phone = '+' + $scope.partner.marketing_phone_c + ( $scope.partner.marketing_phone_a || '') + $scope.partner.marketing_phone_p;
if ($scope.partner.company_phone.indexOf(' ') != -1) {
alert('Company Phone can not contain space character');
return;
}
if ($scope.partner.contact_phone.indexOf(' ') != -1) {
alert('Contact Phone can not contain space character');
return;
}
if ($scope.partner.legal_representative_phone.indexOf(' ') != -1) {
alert('Representative phone can not contain space character');
return;
}
if ($scope.partner.marketing_phone.indexOf(' ') != -1) {
alert('Marketing phone can not contain space character');
return;
}
if ($scope.partner.contact_email.indexOf(' ') != -1) {
alert('Contact email Phone can not contain space character');
return;
}
if ($scope.partner.legal_representative_email.indexOf(' ') != -1) {
alert('Representative email Phone can not contain space character');
return;
}
if ($scope.partner.marketing_email && $scope.partner.marketing_email.indexOf(' ') != -1) {
alert('Marketing email Phone can not contain space character');
return;
}
if ($scope.partner.suburb.indexOf(' ') != -1) {
alert('suburb can not contain two and more continuous space characters');
return;
}
if ($scope.partner.registered_suburb.indexOf(' ') != -1) {
alert('Registered suburb can not contain two and more continuous space characters');
return;
}
if ($scope.partner.acn && $scope.partner.business_structure == 'Company') {
if ($scope.partner.acn.length != 9) {
alert('Acn is not valid');
return;
}
}
if (!$scope.partner.logo_url) {
alert("Logo is necessary!");
return;
}
if ($scope.partner.client_pay_type.indexOf('2') >= 0) {
if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary');
return;
}
if (!$scope.partner.store_photo) {
alert('Shop Photo2 is necessary');
return;
}
}
if ($scope.partner.referrer_id) {
$scope.referrers.forEach(function (e) {
if ($scope.partner.referrer_id == e.org_id) {
$scope.partner.referrer_name = e.name;
return;
}
})
}
if ($scope.partner.client_pay_type.length == 0) {
alert('请选择商户支付场景')
return;
}
if ($scope.partner.client_pay_desc.length == 0) {
alert('请选择商户支付方式')
return;
}
if (typeof ($scope.partner.client_pay_type) == 'string' || typeof ($scope.partner.client_pay_desc) == 'string') {
$scope.partner.client_pay_type = $scope.partner.client_pay_type.split(",");
$scope.partner.client_pay_desc = $scope.partner.client_pay_desc.split(",");
}
if ($scope.partner.client_pay_type.indexOf('1') >= 0) {
if ($scope.partner.client_pay_desc.join(',').indexOf('10') < 0) {
alert("请检查线上支付场景是否已选择支付方式");
return;
}
}
if ($scope.partner.client_pay_type.indexOf('2') >= 0) {
if ($scope.partner.client_pay_desc.join(',').indexOf('20') < 0) {
alert("请检查线下支付场景是否已选择支付方式");
return;
}
}
if ($scope.partner.client_pay_desc.join(',').indexOf('203') >= 0) {
if ($scope.partner.client_pay_desc.join(',').indexOf('2030') < 0 && $scope.partner.client_pay_desc.join(',').indexOf('20399') < 0) {
alert("请检查线下支付是否已选择收银系统类型");
return;
}
}
$scope.partner.client_pay_type = $scope.partner.client_pay_type.join(',');
$scope.partner.client_pay_desc = $scope.partner.client_pay_desc.join(',');
$http.post('/sys/partners', $scope.partner).then(function (resp) {
commonDialog.alert({title: 'Success', content: 'Register new partner successfully', type: 'success'});
$scope.updateMerchantLocation();
// $scope.loadPartners();
$state.go('partners.detail', {clientMoniker: resp.data.client_moniker})
}, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'});
});
};
$scope.uploadLogo = function (file) {
if (file != null) {
if (file.size > 1 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过1MB请压缩后重试', type: 'error'})
} else {
$scope.logoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.logoProgress;
$scope.partner.logo_id = resp.data.fileid;
$scope.partner.logo_url = resp.data.url;
}, function (resp) {
delete $scope.logoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.logoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.uploadShopPhoto = function (file) {
if (file != null) {
if (file.size > 2 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过2MB请压缩后重试', type: 'error'})
} else {
$scope.shopPhotoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.shopPhotoProgress;
$scope.partner.company_photo = resp.data.url;
}, function (resp) {
delete $scope.shopPhotoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.shopPhotoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.uploadStorePhoto = function (file) {
if (file != null) {
if (file.size > 2 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过2MB请压缩后重试', type: 'error'})
} else {
$scope.storePhotoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.storePhotoProgress;
$scope.partner.store_photo = resp.data.url;
}, function (resp) {
delete $scope.storePhotoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.storePhotoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.updateMerchantLocation = function () {
var params = window.frames['merchant_detail'].merchant_location;
if (params) {
$http.put('/sys/partners/modify/' + $scope.partner.client_moniker + '/location', params).then(function () {
});
}
}
}]);
app.controller('partnerEditCtrl', ['$scope', '$http', '$state', 'Upload', 'commonDialog', 'timezone', 'partner','upayIndustryMap',
function ($scope, $http, $state, Upload, commonDialog, timezone, partner,upayIndustryMap) {
$scope.upayIndustrys = upayIndustryMap.configs();
$scope.timezones = timezone.configs();
$scope.partner = partner.data;
if (!$scope.partner.client_type) {
$scope.partner.client_type = 'cross-border';
}
if($scope.partner.representativeInfo != null)
{
$scope.partner.registered_address = $scope.partner.representativeInfo.address;
$scope.partner.registered_suburb = $scope.partner.representativeInfo.suburb;
$scope.partner.registered_postcode = $scope.partner.representativeInfo.postcode;
$scope.partner.registered_state = $scope.partner.representativeInfo.state;
$scope.partner.legal_representative_person = $scope.partner.representativeInfo.representative_person;
$scope.partner.legal_representative_phone = $scope.partner.representativeInfo.phone;
$scope.partner.legal_representative_email = $scope.partner.representativeInfo.email;
$scope.partner.legal_representative_job = $scope.partner.representativeInfo.job_title;
$scope.partner.marketing_person = $scope.partner.representativeInfo.marketing_person;
$scope.partner.marketing_phone = $scope.partner.representativeInfo.marketing_phone;
$scope.partner.marketing_email = $scope.partner.representativeInfo.marketing_email;
$scope.partner.marketing_job = $scope.partner.representativeInfo.marketing_job_title;
$scope.partner.legal_representative_wechatid = $scope.partner.representativeInfo.legal_representative_wechatid;
$scope.partner.marketing_wechatid = $scope.partner.representativeInfo.marketing_wechatid;
}
function hasRole() {
var rolenum;
switch (sessionStorage.getItem('role')) {
case "administrator":
rolenum = 1;
break;
case "bduser":
rolenum = 4;
break;
case "salesmanager":
rolenum = 8192;
break;
case "accountant":
rolenum = 8;
break;
case "sitemanager":
rolenum = 128;
break;
case "director":
rolenum = 64;
break;
case "developer":
rolenum = 256;
break;
case "compliance":
rolenum = 2;
break;
case "guest":
rolenum = 2048;
break;
case "orgmanager":
rolenum = 4096;
break;
case "riskmanager":
rolenum = 1024;
break;
default:
break;
}
if ((window.currentUser.role & rolenum) >0) {
return true;
}else {
sessionStorage.removeItem('role');
return false;
}
}
if (hasRole()) {
$scope.role = sessionStorage.getItem('role');
}
var origin_referrer_id = angular.copy($scope.partner.referrer_id);
var resetClientPayDescByTpey = function (type) {
type = parseInt(type);
if (type == 1) {
removeClientPayDesc($scope.partner.client_pay_desc, '10');
}
if (type == 2) {
removeClientPayDesc($scope.partner.client_pay_desc, '20');
}
};
var compare = function (x, y) {
x = parseInt(x);
y = parseInt(y);
if (x < y) {
return -1;
} else if (x > y) {
return 1;
} else {
return 0;
}
}
$scope.toggleClientPayType = function (type) {
if (!$scope.partner.client_pay_type) {
$scope.partner.client_pay_type = [];
}
var $idx = $scope.partner.client_pay_type.indexOf(type);
if ($idx >= 0) {
$scope.partner.client_pay_type.splice($idx, 1);
resetClientPayDescByTpey(type);
} else {
$scope.partner.client_pay_type.push(type);
$scope.partner.client_pay_type.sort(compare);
}
};
$scope.toggleClientPayDesc = function (type) {
if (!$scope.partner.client_pay_desc) {
$scope.partner.client_pay_desc = [];
}
var $idx = $scope.partner.client_pay_desc.indexOf(type);
if ($idx >= 0) {
if (type == '203') {
removeClientPayDesc($scope.partner.client_pay_desc, '2030')
}
$scope.partner.client_pay_desc.splice($idx, 1);
} else {
$scope.partner.client_pay_desc.push(type);
$scope.partner.client_pay_desc.sort(compare);
}
};
$scope.partner.sameAsContactPerson = false;
$scope.checkboxOnclick = function (){
$scope.partner.sameAsContactPerson = !($scope.partner.sameAsContactPerson);
if($scope.partner.sameAsContactPerson) {
$scope.partner.legal_representative_person = $scope.partner.contact_person;
$scope.partner.legal_representative_phone = $scope.partner.contact_phone;
$scope.partner.legal_representative_email = $scope.partner.contact_email;
$scope.partner.legal_representative_job = $scope.partner.contact_job;
$scope.partner.legal_representative_wechatid = $scope.partner.contact_wechatid;
}
}
$scope.partner.marketingSameAsContact = false;
$scope.checkMarketingSameAsContact = function (){
$scope.partner.marketingSameAsContact = !($scope.partner.marketingSameAsContact);
if($scope.partner.marketingSameAsContact) {
$scope.partner.marketing_person = $scope.partner.contact_person;
$scope.partner.marketing_phone = $scope.partner.contact_phone;
$scope.partner.marketing_email = $scope.partner.contact_email;
$scope.partner.marketing_job = $scope.partner.contact_job;
$scope.partner.marketing_wechatid = $scope.partner.contact_wechatid;
}
}
$scope.partner.sameAsAddress=false;
$scope.sameAddress = function (){
$scope.partner.sameAsAddress=!($scope.partner.sameAsAddress);
if($scope.partner.sameAsAddress) {
$scope.partner.registered_address = $scope.partner.address;
$scope.partner.registered_suburb = $scope.partner.suburb;
$scope.partner.registered_postcode = $scope.partner.postcode;
$scope.partner.registered_state = $scope.partner.state;
}
}
$scope.listReferrers = function () {
$http.get('/sys/orgs/referrer').then(function (resp) {
$scope.referrers = resp.data;
})
};
$scope.listReferrers();
$scope.loadAlipayCategory = function () {
$http.get('/static/data/alipayMcc.json').then(function (resp) {
$scope.alipayMccCategory = resp.data;
})
};
$scope.loadAlipayCategory();
$scope.loadJDindustry = function () {
$http.get('/static/data/jdindustry.json').then(function (resp) {
$scope.jdindustry = resp.data;
})
};
$scope.loadJDindustry();
$scope.loadLakalaPayindustry = function () {
$http.get('/static/data/lakalapayindustry.json').then(function (resp) {
$scope.lakalapayindustry = resp.data;
})
};
$scope.loadLakalaPayindustry();
$scope.loadLakalaPaySettle = function () {
$http.get('/static/data/lakalapaysettle.json').then(function (resp) {
$scope.lakalapaysettle = resp.data;
})
};
$scope.loadLakalaPaySettle();
$scope.loadLakalaPayGoods = function () {
$http.get('/static/data/lakalapaygoods.json').then(function (resp) {
$scope.lakalapaygoods = resp.data;
})
};
$scope.loadLakalaPayGoods();
$scope.loadRoyalpayindustry = function () {
$http.get('/static/data/royalpayindustry.json').then(function (resp) {
$scope.royalpayindustry = resp.data;
})
};
$scope.loadRoyalpayindustry();
$scope.loadHfindustry = function () {
$http.get('/static/data/hfindustry.json').then(function (resp) {
$scope.hfindustry = resp.data;
})
};
$scope.loadHfindustry();
$scope.onAlipayMccSelect = function (selectedItem) {
$scope.partner.alipay_category = selectedItem.label;
$scope.partner.alipayindustry = selectedItem.mccCode;
};
$scope.onRoyalPayIndustrySelect = function (selectedItem) {
$scope.partner.royalpay_label = selectedItem.label;
$scope.partner.royalpayindustry = selectedItem.mccCode;
};
$scope.onHfIndustrySelect = function (selectedItem) {
$scope.partner.hf_label = selectedItem.label;
$scope.partner.hfindustry = selectedItem.mccCode;
};
$scope.updatePartner = function (form) {
if (form.$invalid) {
angular.forEach(form, function (item, key) {
if (key.indexOf('$') < 0) {
item.$dirty = true;
}
});
return;
}
if ($scope.partner.company_name.indexOf("Migration") != -1) {
alert("Company Name包含敏感词汇请检查后重新提交");
return;
}
if ($scope.partner.company_phone.indexOf(' ') != -1) {
alert('Company Phone can not contain space character');
return;
}
if ($scope.partner.contact_email.indexOf(' ') != -1) {
alert('Contact email Phone can not contain space character');
return;
}
if ($scope.partner.suburb.indexOf(' ') != -1) {
alert('suburb can not contain two and more continuous space characters');
return;
}
if ($scope.partner.client_pay_type.indexOf('2') >= 0) {
if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary');
return;
}
if (!$scope.partner.store_photo) {
alert('Shop Photo2 is necessary');
return;
}
}
if ($scope.partner.acn && $scope.partner.business_structure == 'Company') {
if ($scope.partner.acn.length != 9) {
alert('Acn is not valid');
}
}
if ($scope.partner.referrer_id) {
$scope.referrers.forEach(function (e) {
if ($scope.partner.referrer_id == e.org_id) {
$scope.partner.referrer_name = e.name;
return;
}
})
}
var content = '';
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!';
}
if ($scope.partner.client_pay_type.length == 0) {
alert('请选择商户支付场景')
return;
}
if ($scope.partner.client_pay_desc.length == 0) {
alert('请选择商户支付方式')
return;
}
if ($scope.partner.client_pay_type.indexOf('1') >= 0) {
if ($scope.partner.client_pay_desc.join(',').indexOf('10') < 0) {
alert("请检查线上支付场景是否已选择支付方式");
return;
}
}
if ($scope.partner.client_pay_type.indexOf('2') >= 0) {
if ($scope.partner.client_pay_desc.join(',').indexOf('20') < 0) {
alert("请检查线下支付场景是否已选择支付方式");
return;
}
}
if ($scope.partner.client_pay_desc.join(',').indexOf('203') >= 0) {
if ($scope.partner.client_pay_desc.join(',').indexOf('2030') < 0 && $scope.partner.client_pay_desc.join(',').indexOf('20399') < 0) {
alert("请检查线下支付是否已选择收银系统类型");
return;
}
}
$scope.partner.client_pay_type = $scope.partner.client_pay_type.join(',');
$scope.partner.client_pay_desc = $scope.partner.client_pay_desc.join(',');
$http.put('/sys/partners/' + $scope.partner.client_moniker, $scope.partner).then(function () {
if (content != '') {
commonDialog.alert({
title: 'Warning',
content: content,
type: 'error'
});
} else {
commonDialog.alert({
title: 'Success',
content: 'Update partner information successfully',
type: 'success'
});
}
$scope.updateMerchantLocation();
$scope.loadPartners();
$state.go('^.detail', {clientMoniker: $scope.partner.client_moniker}, {reload: true});
}, function (resp) {
commonDialog.alert({title: 'Error', content: resp.data.message, type: 'error'})
});
};
$scope.uploadLogo = function (file) {
if (file != null) {
if (file.size > 1 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过1MB请压缩后重试', type: 'error'})
} else {
$scope.logoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.logoProgress;
$scope.partner.logo_id = resp.data.fileid;
$scope.partner.logo_url = resp.data.url;
}, function (resp) {
delete $scope.logoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.logoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.uploadShopPhoto = function (file) {
if (file != null) {
if (file.size > 2 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过2MB请压缩后重试', type: 'error'})
} else {
$scope.shopPhotoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.shopPhotoProgress;
$scope.partner.company_photo = resp.data.url;
}, function (resp) {
delete $scope.shopPhotoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.shopPhotoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.uploadStorePhoto = function (file) {
if (file != null) {
if (file.size > 2 * 1024 * 1024) {
commonDialog.alert({title: 'Error', content: '文件大小不能超过2MB请压缩后重试', type: 'error'})
} else {
$scope.storePhotoProgress = {value: 0};
Upload.upload({
url: '/attachment/files',
data: {file: file}
}).then(function (resp) {
delete $scope.storePhotoProgress;
$scope.partner.store_photo = resp.data.url;
}, function (resp) {
delete $scope.storePhotoProgress;
commonDialog.alert({title: 'Upload Failed', content: resp.data.message, type: 'error'})
}, function (evt) {
$scope.storePhotoProgress.value = parseInt(100 * evt.loaded / evt.total);
})
}
}
};
$scope.getMerchantLocation = function () {
$http.get('/sys/partners/' + $scope.partner.client_moniker + '/location').then(function (resp) {
$scope.merchant_location = resp.data;
});
};
$scope.getMerchantLocation();
$scope.updateMerchantLocation = function () {
var params = window.frames['merchant_detail'].merchant_location;
if (params) {
$http.put('/sys/partners/modify/' + $scope.partner.client_moniker + '/location', params).then(function () {
});
}
}
}]);
return app;
});

File diff suppressed because it is too large Load Diff

@ -16,6 +16,13 @@
background-color: #f7bf90; background-color: #f7bf90;
border-color: #adadad; border-color: #adadad;
} }
.form-control-float {
float: left;
width: 93%; !important;
}
.form-control-span{
height: 34px;
}
</style> </style>
<section class="content-header"> <section class="content-header">
<h1>New Partner</h1> <h1>New Partner</h1>
@ -26,11 +33,25 @@
<li class="active">New Partner</li> <li class="active">New Partner</li>
</ol> </ol>
</section> </section>
<div class="content"> <div class="content">
<form novalidate name="partnerForm"> <form novalidate name="partnerForm">
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="row">
<div class="col-sm-12 analysis-nav">
<ul class="nav nav-pills">
<li ng-class="{active:partner.client_type=='cross-border'}" style="cursor: pointer">
<a ng-click="partner.client_type='cross-border';partner.client_pay_type=[]"><span>跨境支付|Cross-border Payment</span></a>
</li>
<li ng-class="{active:partner.client_type=='card-payment'}" style="cursor: pointer">
<a ng-click="partner.client_type='card-payment';partner.client_pay_type=['1']"> <span>卡支付|Card Payment</span></a>
</li>
<li ng-class="{active:partner.client_type=='all'}" style="cursor: pointer">
<a ng-click="partner.client_type='all';partner.client_pay_type=['1']"> <span>同时开通|All Payment</span></a>
</li>
</ul>
</div>
</div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">Partner Basic Information</div> <div class="panel-heading">Partner Basic Information</div>
<div class="panel-body"> <div class="panel-body">
@ -112,21 +133,40 @@
</div> </div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.business_name.$invalid && partnerForm.business_name.$dirty}"> ng-class="{'has-error':partnerForm.business_name.$invalid && partnerForm.business_name.$dirty}">
<label class="control-label col-sm-2" for="business-name-input">Business <label class="control-label col-sm-2" for="business-name-input">*Business
Name</label> Name</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input id="business-name-input" ng-model="partner.business_name" <input id="business-name-input" ng-model="partner.business_name"
class="form-control" class="form-control" required
type="text" name="business_name" maxlength="100"> type="text" name="business_name" maxlength="100">
<div ng-messages="partnerForm.business_name.$error" <div ng-messages="partnerForm.business_name.$error"
ng-if="partnerForm.business_name.$dirty"> ng-if="partnerForm.business_name.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less <p class="small text-danger" ng-message="maxlength">Less
Than 100 Than 100
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type=='card-payment' || partner.client_type=='all'"
ng-class="{'has-error':partnerForm.acceptor_name.$invalid && partnerForm.acceptor_name.$dirty}">
<label class="control-label col-sm-2" for="card-acceptor-input">* Card Acceptor Name</label>
<div class="col-sm-8">
<input id="card-acceptor-input" ng-model="partner.acceptor_name" required
class="form-control"
type="text" name="acceptor_name" maxlength="19">
<div ng-messages="partnerForm.acceptor_name.$error"
ng-if="partnerForm.acceptor_name.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 19
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.store_name.$invalid && partnerForm.store_name.$dirty}"> ng-class="{'has-error':partnerForm.store_name.$invalid && partnerForm.store_name.$dirty}">
<label class="control-label col-sm-2" for="store-name-input">* Store <label class="control-label col-sm-2" for="store-name-input">* Store
Name</label> Name</label>
@ -148,7 +188,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.business_structure.$invalid && partnerForm.business_structure.$dirty}"> ng-class="{'has-error':partnerForm.business_structure.$invalid && partnerForm.business_structure.$dirty}">
<label class="control-label col-sm-2" <label class="control-label col-sm-2"
for="business-structure-input">Business Structure</label> for="business-structure-input">Business Structure</label>
@ -176,31 +216,19 @@
<img ng-src="{{partner.logo_url}}" ng-if="partner.logo_url" style="height: 100px;"> <img ng-src="{{partner.logo_url}}" ng-if="partner.logo_url" style="height: 100px;">
</div> </div>
</div> </div>
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}">-->
<!--<label class="control-label col-sm-2" for="abn-input">* ABN</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.abn" type="text" name="abn"-->
<!--id="abn-input"-->
<!--required maxlength="20">-->
<!--<div ng-messages="partnerForm.abn.$error" ng-if="partnerForm.abn.$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>-->
<!--</div>-->
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}" ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}"
ng-if="partner.business_structure != 'Company'"> ng-if="partner.business_structure != 'Company' || partner.client_type=='card-payment' || partner.client_type=='all'">
<label class="control-label col-sm-2" for="abn-input">ABN</label> <label class="control-label col-sm-2" for="abn-input"><span ng-if="partner.client_type=='card-payment' ||partner.client_type=='all'">*</span>ABN</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.abn" type="text" <input class="form-control" ng-model="partner.abn" type="text"
name="abn" name="abn" required
id="abn-input" id="abn-input"
maxlength="20"> maxlength="20">
<div ng-messages="partnerForm.abn.$error" <div ng-messages="partnerForm.abn.$error"
ng-if="partnerForm.abn.$dirty"> ng-if="partnerForm.abn.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less <p class="small text-danger" ng-message="maxlength">Less
Than 20 Than 20
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
@ -209,7 +237,7 @@
</div> </div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.acn.$invalid && partnerForm.acn.$dirty}" ng-class="{'has-error':partnerForm.acn.$invalid && partnerForm.acn.$dirty}"
ng-if="partner.business_structure == 'Company'"> ng-if="partner.business_structure == 'Company' && partner.client_type!='card-payment'">
<label class="control-label col-sm-2" for="acn-input">ACN</label> <label class="control-label col-sm-2" for="acn-input">ACN</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.acn" type="text" <input class="form-control" ng-model="partner.acn" type="text"
@ -223,36 +251,10 @@
</div> </div>
</div> </div>
</div> </div>
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.sector.$invalid && partnerForm.sector.$dirty}">-->
<!--<label class="control-label col-sm-2" for="sector-input">* Sector</label>-->
<!--<div class="col-sm-8">-->
<!--&lt;!&ndash;<input class="form-control" type="text" ng-model="partner.sector" name="sector"&ndash;&gt;-->
<!--&lt;!&ndash;id="sector-input">&ndash;&gt;-->
<!--<select class="form-control" name="sector" required ng-model="partner.sector"-->
<!--id="sector-input"-->
<!--ng-options="sector.value as sector.label for sector in sectors">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.sector.$error" ng-if="partnerForm.sector.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.company_phone_p.$invalid && partnerForm.company_phone_p.$dirty}"> ng-class="{'has-error':partnerForm.company_phone_p.$invalid && partnerForm.company_phone_p.$dirty}">
<label class="control-label col-sm-2" for="service-phone-p-input">* <label class="control-label col-sm-2" for="service-phone-p-input">*
Service Phone</label> Service Phone</label>
<!--<div class="col-sm-8">
<input class="form-control" required type="text" ng-model="partner.company_phone"
name="company_phone" id="service-phone-input" maxlength="20">
<div ng-messages="partnerForm.company_phone.$error"
ng-if="partnerForm.company_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</p>
</div>
</div>-->
<div class="col-sm-2"> <div class="col-sm-2">
<div class="input-group"> <div class="input-group">
<div class="input-group-addon">+</div> <div class="input-group-addon">+</div>
@ -296,7 +298,6 @@
Than 11 Characters</p> Than 11 Characters</p>
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.description.$invalid && partnerForm.description.$dirty}"> ng-class="{'has-error':partnerForm.description.$invalid && partnerForm.description.$dirty}">
@ -353,7 +354,7 @@
ng-click="toggleClientPayType('1')"> ng-click="toggleClientPayType('1')">
<i class="fa fa-mixcloud"></i> <i class="fa fa-mixcloud"></i>
线上</button> 线上</button>
<button class="btn btn-default" <button class="btn btn-default" ng-if="partner.client_type!='card-payment'"
ng-class="{active:partner.client_pay_type.indexOf('2')>=0}" ng-class="{active:partner.client_pay_type.indexOf('2')>=0}"
ng-click="toggleClientPayType('2')"> ng-click="toggleClientPayType('2')">
<i class="fa fa-shopping-basket"></i> <i class="fa fa-shopping-basket"></i>
@ -392,7 +393,7 @@
小程序</button> 小程序</button>
</div> </div>
</div> </div>
<div ng-if="partner.client_pay_type.indexOf('2')>=0"> <div ng-if="partner.client_pay_type.indexOf('2')>=0 && partner.client_type!='card-payment'" >
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}"> ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">*Offline</label> <label class="control-label col-sm-2">*Offline</label>
@ -420,7 +421,7 @@
</div> </div>
</div> </div>
</div> </div>
<div ng-if="partner.client_pay_desc.join(',').indexOf('203')>=0"> <div ng-if="partner.client_pay_desc.join(',').indexOf('203')>=0 && partner.client_type!='card-payment'" >
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}"> ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">* POS</label> <label class="control-label col-sm-2">* POS</label>
@ -491,7 +492,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0"> <div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0 && partner.client_type!='card-payment'">
<label class="control-label col-sm-2">* Shop Photo</label> <label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form-control-static"><em>1:</em>&nbsp; <div class="form-control-static"><em>1:</em>&nbsp;
@ -503,9 +504,9 @@
<uib-progressbar value="shopPhotoProgress.value" <uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar> ng-if="shopPhotoProgress"></uib-progressbar>
<a target="_blank" ng-if="partner.company_photo" ng-href="{{partner.company_photo}}"> <a target="_blank" ng-if="partner.company_photo" ng-href="{{partner.company_photo}}">
<img ng-src="{{partner.company_photo}}" <img ng-src="{{partner.company_photo}}"
ng-if="partner.company_photo" ng-if="partner.company_photo"
class="thumbnail img-size col-sm-9"> class="thumbnail img-size col-sm-9">
</a> </a>
</div> </div>
<div class="col-sm-4"> <div class="col-sm-4">
@ -518,16 +519,48 @@
<uib-progressbar value="storePhotoProgress.value" <uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar> ng-if="storePhotoProgress"></uib-progressbar>
<a target="_blank" ng-if="partner.store_photo" ng-href="{{partner.store_photo}}"> <a target="_blank" ng-if="partner.store_photo" ng-href="{{partner.store_photo}}">
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo" <img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo"
class="thumbnail img-size col-sm-9"> class="thumbnail img-size col-sm-9">
</a> </a>
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_type=='card-payment' ||partner.client_type=='all'"
ng-class="{'has-error':partnerForm.expected_card_revenue.$invalid && partnerForm.expected_card_revenue.$dirty}">
<label class="control-label col-sm-2" for="expected_card_revenue-input">*
Expected credit card monthly revenue ($)</label>
<div class="col-sm-8">
<input type="number" name="expected_card_revenue" class="form-control form-control-float"
ng-model="partner.expected_card_revenue"
id="expected_card_revenue-input" required min="0">
<span class="input-group-addon form-control-span">$</span>
<div ng-messages="partnerForm.expected_card_revenue.$error"
ng-if="partnerForm.expected_card_revenue.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_type=='card-payment' ||partner.client_type=='all'"
ng-class="{'has-error':partnerForm.average_card_transaction.$invalid && partnerForm.average_card_transaction.$dirty}">
<label class="control-label col-sm-2" for="average_card_transaction-input">*
Average credit card transaction value ($)</label>
<div class="col-sm-8">
<input type="number" name="average_card_transaction" class="form-control form-control-float"
ng-model="partner.average_card_transaction"
id="average_card_transaction-input" required min="0">
<span class="input-group-addon form-control-span">$</span>
<div ng-messages="partnerForm.average_card_transaction.$error"
ng-if="partnerForm.average_card_transaction.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default" ng-if="partner.client_type!='card-payment'">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em> <div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em>
</div> </div>
<div class="panel-body"> <div class="panel-body">
@ -669,16 +702,6 @@
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
</div> </div>
<!-- IT联系人信息 -->
<div class="form-group">
<label class="control-label col-sm-2" for="it-contact-person-email-id">
IT Contact Person E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.it_contact_person_email"
name="it_contact_person_email" id="it-contact-person-email-id"
maxlength="50">
</div>
</div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.contact_job.$invalid && partnerForm.contact_job.$dirty}"> ng-class="{'has-error':partnerForm.contact_job.$invalid && partnerForm.contact_job.$dirty}">
<label class="control-label col-sm-2" for="contact_job-id">* <label class="control-label col-sm-2" for="contact_job-id">*
@ -697,7 +720,6 @@
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-2" for="contact_wechatid-id"> <label class="control-label col-sm-2" for="contact_wechatid-id">
Wechat ID</label> Wechat ID</label>
@ -707,16 +729,26 @@
maxlength="50"> maxlength="50">
</div> </div>
</div> </div>
<!-- IT联系人信息 -->
<div class="form-group">
<label class="control-label col-sm-2" for="it-contact-person-email-id">
IT Contact E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.it_contact_person_email"
name="it_contact_person_email" id="it-contact-person-email-id"
maxlength="50">
</div>
</div>
<div class="from-group"> <div class="from-group">
<div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div>
<div> <div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div>
<div ng-if="partner.client_type!='card-payment'">
<label><input type="checkbox" ng-click="checkMarketingSameAsContact(this)">Marketing Person Same As Contact Information</label> <label><input type="checkbox" ng-click="checkMarketingSameAsContact(this)">Marketing Person Same As Contact Information</label>
</div> </div>
</div> </div>
</div><hr/> </div><hr/>
</div> </div>
<div>&nbsp;&nbsp;Legal Representative</div> <div>&nbsp;&nbsp;Legal Representative</div>
<div class="panel-body"> <div class="panel-body">
@ -791,7 +823,7 @@
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.legal_representative_email.$invalid && partnerForm.legal_representative_email.$dirty}"> ng-class="{'has-error':partnerForm.legal_representative_email.$invalid && partnerForm.legal_representative_email.$dirty}">
<label class="control-label col-sm-2" for="legal_representative_email-id">* <label class="control-label col-sm-2" for="legal_representative_email-id">*
E-mail</label> E-mail</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input class="form-control" ng-model="partner.legal_representative_email" <input class="form-control" ng-model="partner.legal_representative_email"
required required
@ -837,9 +869,9 @@
</div> </div>
</div> </div>
<hr/> <hr ng-if="partner.client_type!='card-payment'" />
<div>&nbsp;&nbsp;Marketing Person</div> <div ng-if="partner.client_type!='card-payment'">&nbsp;&nbsp;Marketing Person</div>
<div class="panel-body"> <div class="panel-body" ng-if="partner.client_type!='card-payment'">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.marketing_person.$invalid && partnerForm.marketing_person.$dirty}"> ng-class="{'has-error':partnerForm.marketing_person.$invalid && partnerForm.marketing_person.$dirty}">
@ -1195,105 +1227,6 @@
</div> </div>
</div> </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)"
chose-one-level="false">
<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 panel-default">
<div class="panel-heading" style="color: #333;background-color: #f5f5f5;border-color: #ddd;"> <div class="panel-heading" style="color: #333;background-color: #f5f5f5;border-color: #ddd;">
Industry Industry
@ -1318,7 +1251,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}"> ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input"> <label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label> *Wechat Industry</label>
@ -1337,7 +1270,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
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>
@ -1356,6 +1289,44 @@
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_type=='card-payment'"
ng-class="{'has-error':partnerForm.mw-industry.$invalid && partnerForm.mw-industry.$dirty}">
<label class="control-label col-sm-2" for="mw-industry-input">
*Merchant Warrior Industry</label>
<div class="col-sm-8">
<select class="form-control" name="mw-industry"
ng-model="partner.mw_industry" required
id="mw-industry-input"
ng-options="industry.value as industry.label for industry in upayIndustrys">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.mw-industry.$error"
ng-if="partnerForm.mw-industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_type=='card-payment' || partner.client_type=='all'">
<label class="control-label col-sm-2" for="mw-industry-input">
*Card Service Selection</label>
<div class="col-sm-8">
<span class="checkbox-inline">
<label>
<input type="checkbox" checked disabled
id="approving-check">
Australia Credit Card Payment|澳大利亚信用卡支付
</label>
</span>
<span class="checkbox-inline">
<label>
<input type="checkbox" ng-model="partner.enable_international_card">
International Credit Card Payment|国际信用卡支付
</label>
</span>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>

@ -3,366 +3,18 @@
width: 100%; width: 100%;
} }
</style> </style>
<div class="panel panel-default"> <div class="row">
<div class="panel-heading">Audit Files &nbsp;&nbsp;&nbsp; <div class="col-sm-12 analysis-nav">
<a class="btn-group btn btn-success" ng-if="file" ng-href="{{downloadAsZip()}}" target="_blank"> <ul class="nav nav-pills">
<i class="fa fa-cloud-download">一键下载</i> <li ui-sref-active-eq="active">
</a> <a ui-sref="partners.detail.files.CP_files"><span>跨境支付合规文件|Cross-border Payment Compliance Files</span></a>
</li>
<li ui-sref-active="active">
<a ui-sref="partners.detail.files.MW_files"> <span>卡支付合规文件|Card Payment Compliance Files</span></a>
</li>
</ul>
</div> </div>
<div class="panel-body"> </div>
<div class="form-horizontal"> <div class="panel panel-default" ui-view>
<div class="panel panel-info">
<div class="panel-heading"><h4>
ID描述信息
<a class="small" role="button" ng-if="!id_info_form.edit" ng-click="id_info_form.edit=true">
<i class="fa fa-edit"></i></a>
</h4></div>
<div class="panel-body">
<div class="row form-horizontal">
<div class="form-group" ng-if="id_info_form.edit">
<label class="control-label col-sm-2">* Choose ID Type </label>
<div class="col-sm-4">
<div class="form-control-static">
<select class="form-control"
ng-model="file.id_type" style="width: 250px" ng-change="setIDTypeSession(file.id_type)">
<option value="">Please Choose</option>
<option value="passport" >Passport</option>
<option value="driver_license">Driver license</option>
</select>
</div>
</div>
</div>
<div class="form-group" ng-if="id_info_form.edit">
<label class="control-label col-sm-2">* ID Title</label>
<div class="col-sm-6">
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Ultimate beneficiary owner'}"
ng-click="toggleIdTitle('Ultimate beneficiary owner')">
Ultimate beneficiary owner</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='CEO'}"
ng-click="toggleIdTitle('CEO')">
CEO</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Director'}"
ng-click="toggleIdTitle('Director')">
Director</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='General Manager'}"
ng-click="toggleIdTitle('General Manager')">
General Manager</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Other'}"
ng-click="toggleIdTitle('Other')">
Other</button>
</div>
</div>
<div class="form-group" ng-if="id_info_form.edit && file.beneficiary_id_title!='Ultimate beneficiary owner'">
<label class="control-label col-sm-2">* 请简要告知为何无法提供受益股东的资料</label>
<div class="col-sm-4">
<div class="form-control-static">
<textarea class="form-control" ng-model="file.other_id_title_desc" style="height: 100px"></textarea>
</div>
</div>
</div>
<div class="form-group" ng-if="!id_info_form.edit">
<label class="control-label col-sm-2">ID Type </label>
<div class="col-sm-4">
<div class="form-control-static">
<span>{{file.id_type}}</span>
</div>
</div>
</div>
<div class="form-group" ng-if="!id_info_form.edit">
<label class="control-label col-sm-2">ID Title</label>
<div class="col-sm-6">
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Ultimate beneficiary owner'}">
Ultimate beneficiary owner</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='CEO'}">
CEO</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Director'}">
Director</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='General Manager'}">
General Manager</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Other'}">
Other</button>
</div>
</div>
<div class="form-group" ng-if="!id_info_form.edit && file.beneficiary_id_title!='Ultimate beneficiary owner'">
<label class="control-label col-sm-2">请简要告知为何无法提供受益股东的资料</label>
<div class="col-sm-4">
<div class="form-control-static">
<textarea class="form-control" ng-model="file.other_id_title_desc" style="height: 100px" disabled></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer" ng-if="id_info_form.edit">
<button class="btn btn-success" ng-click="saveIdInfo()">保存</button>
<button class="btn btn-danger" ng-click="cancelIdInfo()">取消</button>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* bank statement</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadBankFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="bankFileProgress.value" ng-if="bankFileProgress"></uib-progressbar>
<!-- <a ng-if="bankIsImage" target="_blank" ng-repeat="src in file.client_bank_file" ng-href="{{src}}">
<img ng-src="{{src}}" class="col-sm-8">
</a>--> </div>
<table>
<tbody>
<tr ng-repeat="file_src in file.client_bank_file track by $index">
<td ng-bind="$index+1+'.'" ALIGN="left" VALIGN="top" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}"class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file_src.file_value}}" ><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488859920633_5ruVtDa30yY2ytBSDAAqxg0Ob2nreh.jpeg">
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Certificate of Registration</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadCompanyFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="companyFileProgress.value" ng-if="companyFileProgress"></uib-progressbar>
<!-- <a ng-if="companyIsImage" ng-repeat="src in file.client_company_file" ng-href="{{src}}" target="_blank">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table><tbody>
<tr ng-repeat="file_src in file.client_company_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="companyIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank" ><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-6">
<p>Example公司请提供以下文件图片</p>
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488865011738_mW91ylSb5V1NJYu8jxvBPGNN49Zyel.jpeg">
<!--<img class="col-sm-12" src="https://file.royalpay.com.au/open/2017/03/07/1488864017622_BppIfz1yhMeoF0Z49rHt2gZIfVOihA.jpeg">-->
</div>
<div class="col-sm-6">
<p>sole trade个体户),partnership合伙,trust信托请在http://abr.business.gov.au将查询结果截图上传</p>
<img class="col-sm-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488860564017_37spL6phUySM27oRtO4cQ7FOJblYJ6.jpeg">
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* ID </label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadIDFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="idFileProgress.value" ng-if="idFileProgress"></uib-progressbar>
<!--<a ng-if="idIsImage" ng-repeat="src in file.client_id_file" ng-href="{{src}}" target="_blank">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_id_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank"><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-6">
<p>Example请保证图片(护照或驾照)信息清晰可见,如下图</p>
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/29/1498725651779_OPiqOP1dGnTpaxPsCR3P9lVrp4384b.jpg">
</div>
<div class="col-sm-6">
<br/>
<br/>
<img class="col-sm-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/29/1498725678615_Bv2tzUtihY5U6YK9ScveXzKkVWOnrF.jpg">
</div>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* Agreement</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadAgreementFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="agreementFileProgress.value" ng-if="agreementFileProgress"></uib-progressbar>
<!-- <a ng-if="agreeIsImage" target="_blank" ng-repeat="src in file.client_agree_file" ng-href="{{src}}">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_agree_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank"><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/15/1497454561900_5mf5KC4WGkXyFynv025JlTukAq8BqX.png">
</div>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Application Form(optional)</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadApplyFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="bankFileProgress.value" ng-if="applyFileProgress"></uib-progressbar>
<!-- <a ng-if="applyIsImage" target="_blank" ng-repeat="src in file.client_apply_file" ng-href="{{src}}">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_apply_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}"class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank"><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/15/1497454548133_uSn0TP2uQNLEfnMB57CMrxG2jTOWHG.png">
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2"> Utility Bill Files</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadBillFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<p class="text-info">
<i class="fa fa-info"></i> One utility bill (water, electricity or gas) that shows the residential address (*Mandatory if your uploaded ID is a passport)<br>
<i class="fa fa-info"></i> 一份显示常住居所地址的账单(水费、电费或煤气费)(*必须上传 - 如您上传的ID是护照)<br>
</p>
<i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="billFileProgress.value" ng-if="billFileProgress"></uib-progressbar>
<table>
<tbody>
<tr ng-repeat="file_src in file.kyc_utility_bill_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="billIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8"
onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button"
ng-click="deleteComplianceFiles(file_src.file_id)">
X
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-12">
<p class="col-sm-6">Example请提供水电煤账单文件图片,如示例
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2019/12/16/1576491226098_Ho29fpS08rNP9AvPTZQfyoIrNa9bcB.png" title="" alt="水费.png"/>
<br/><img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2019/12/16/1576491263193_hqD9DkQOZvqx8Qaw1ABIkqL21aSNrd.jpg" title="" alt="电费.jpg"/>
</p>
<p class="col-sm-6">
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2019/12/16/1576491285195_C8oXVU4QIJ3ADDEMghaNXTt3cXUhtd.png" title="" alt="煤气.png"/>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="text-align: center">
<a role="button" style="margin-bottom: 25px;" class="btn btn-success btn-sm ng-scope" ng-if="('10'|withRole)" ng-click="complianceCheck()">check</a>
</div>
</div>
<!--<div class="margin-bottom margin-top">-->
<!--<button class="btn-group btn btn-success" type="button" ng-click="updateFile()">Save-->
<!--</button>-->
<!--</div>-->

@ -0,0 +1,363 @@
<style type="text/css">
img {
width: 100%;
}
</style>
<div class="panel-heading">Audit Files &nbsp;&nbsp;&nbsp;
<a class="btn-group btn btn-success" ng-if="file" ng-href="{{downloadAsZip()}}" target="_blank">
<i class="fa fa-cloud-download">一键下载</i>
</a>
</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="panel panel-info">
<div class="panel-heading"><h4>
ID描述信息
<a class="small" role="button" ng-if="!id_info_form.edit" ng-click="id_info_form.edit=true">
<i class="fa fa-edit"></i></a>
</h4></div>
<div class="panel-body">
<div class="row form-horizontal">
<div class="form-group" ng-if="id_info_form.edit">
<label class="control-label col-sm-2">* Choose ID Type </label>
<div class="col-sm-4">
<div class="form-control-static">
<select class="form-control"
ng-model="file.id_type" style="width: 250px" ng-change="setIDTypeSession(file.id_type)">
<option value="">Please Choose</option>
<option value="passport" >Passport</option>
<option value="driver_license">Driver license</option>
</select>
</div>
</div>
</div>
<div class="form-group" ng-if="id_info_form.edit">
<label class="control-label col-sm-2">* ID Title</label>
<div class="col-sm-6">
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Ultimate beneficiary owner'}"
ng-click="toggleIdTitle('Ultimate beneficiary owner')">
Ultimate beneficiary owner</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='CEO'}"
ng-click="toggleIdTitle('CEO')">
CEO</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Director'}"
ng-click="toggleIdTitle('Director')">
Director</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='General Manager'}"
ng-click="toggleIdTitle('General Manager')">
General Manager</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Other'}"
ng-click="toggleIdTitle('Other')">
Other</button>
</div>
</div>
<div class="form-group" ng-if="id_info_form.edit && file.beneficiary_id_title!='Ultimate beneficiary owner'">
<label class="control-label col-sm-2">* 请简要告知为何无法提供受益股东的资料</label>
<div class="col-sm-4">
<div class="form-control-static">
<textarea class="form-control" ng-model="file.other_id_title_desc" style="height: 100px"></textarea>
</div>
</div>
</div>
<div class="form-group" ng-if="!id_info_form.edit">
<label class="control-label col-sm-2">ID Type </label>
<div class="col-sm-4">
<div class="form-control-static">
<span>{{file.id_type}}</span>
</div>
</div>
</div>
<div class="form-group" ng-if="!id_info_form.edit">
<label class="control-label col-sm-2">ID Title</label>
<div class="col-sm-6">
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Ultimate beneficiary owner'}">
Ultimate beneficiary owner</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='CEO'}">
CEO</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Director'}">
Director</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='General Manager'}">
General Manager</button>
<button class="btn btn-default"
ng-class="{active:file.beneficiary_id_title=='Other'}">
Other</button>
</div>
</div>
<div class="form-group" ng-if="!id_info_form.edit && file.beneficiary_id_title!='Ultimate beneficiary owner'">
<label class="control-label col-sm-2">请简要告知为何无法提供受益股东的资料</label>
<div class="col-sm-4">
<div class="form-control-static">
<textarea class="form-control" ng-model="file.other_id_title_desc" style="height: 100px" disabled></textarea>
</div>
</div>
</div>
</div>
</div>
<div class="panel-footer" ng-if="id_info_form.edit">
<button class="btn btn-success" ng-click="saveIdInfo()">保存</button>
<button class="btn btn-danger" ng-click="cancelIdInfo()">取消</button>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* bank statement</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadBankFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="bankFileProgress.value" ng-if="bankFileProgress"></uib-progressbar>
<!-- <a ng-if="bankIsImage" target="_blank" ng-repeat="src in file.client_bank_file" ng-href="{{src}}">
<img ng-src="{{src}}" class="col-sm-8">
</a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_bank_file track by $index">
<td ng-bind="$index+1+'.'" ALIGN="left" VALIGN="top" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}"class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file_src.file_value}}" ><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488859920633_5ruVtDa30yY2ytBSDAAqxg0Ob2nreh.jpeg">
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Certificate of Registration</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadCompanyFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="companyFileProgress.value" ng-if="companyFileProgress"></uib-progressbar>
<!-- <a ng-if="companyIsImage" ng-repeat="src in file.client_company_file" ng-href="{{src}}" target="_blank">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table><tbody>
<tr ng-repeat="file_src in file.client_company_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="companyIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank" ><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-6">
<p>Example公司请提供以下文件图片</p>
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488865011738_mW91ylSb5V1NJYu8jxvBPGNN49Zyel.jpeg">
<!--<img class="col-sm-12" src="https://file.royalpay.com.au/open/2017/03/07/1488864017622_BppIfz1yhMeoF0Z49rHt2gZIfVOihA.jpeg">-->
</div>
<div class="col-sm-6">
<p>sole trade个体户),partnership合伙,trust信托请在http://abr.business.gov.au将查询结果截图上传</p>
<img class="col-sm-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/03/07/1488860564017_37spL6phUySM27oRtO4cQ7FOJblYJ6.jpeg">
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* ID </label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadIDFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="idFileProgress.value" ng-if="idFileProgress"></uib-progressbar>
<!--<a ng-if="idIsImage" ng-repeat="src in file.client_id_file" ng-href="{{src}}" target="_blank">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_id_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank"><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-6">
<p>Example请保证图片(护照或驾照)信息清晰可见,如下图</p>
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/29/1498725651779_OPiqOP1dGnTpaxPsCR3P9lVrp4384b.jpg">
</div>
<div class="col-sm-6">
<br/>
<br/>
<img class="col-sm-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/29/1498725678615_Bv2tzUtihY5U6YK9ScveXzKkVWOnrF.jpg">
</div>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* Agreement</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadAgreementFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="agreementFileProgress.value" ng-if="agreementFileProgress"></uib-progressbar>
<!-- <a ng-if="agreeIsImage" target="_blank" ng-repeat="src in file.client_agree_file" ng-href="{{src}}">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_agree_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank"><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/15/1497454561900_5mf5KC4WGkXyFynv025JlTukAq8BqX.png">
</div>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">Application Form(optional)</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadApplyFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="bankFileProgress.value" ng-if="applyFileProgress"></uib-progressbar>
<!-- <a ng-if="applyIsImage" target="_blank" ng-repeat="src in file.client_apply_file" ng-href="{{src}}">
<img ng-src="{{src}}" class="col-sm-8"></a>-->
<table>
<tbody>
<tr ng-repeat="file_src in file.client_apply_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}"class="col-sm-6" style="border: 1px solid #ddd" onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button" ng-click="deleteComplianceFiles(file_src.file_id)">X</button>
<a role="button" class="btn-group btn btn-warning" type="button" ng-href="{{file_src.file_value}}" download="" target="_blank"><i class="fa fa-download"></i></a>
</td>
</tr>
</tbody></table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<p>Example请保证图片信息清晰可见,如下图</p>
<img class="col-sm-6" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2017/06/15/1497454548133_uSn0TP2uQNLEfnMB57CMrxG2jTOWHG.png">
</div>
</div>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2"> Utility Bill Files</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadBillFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<p class="text-info">
<i class="fa fa-info"></i> One utility bill (water, electricity or gas) that shows the residential address (*Mandatory if your uploaded ID is a passport)<br>
<i class="fa fa-info"></i> 一份显示常住居所地址的账单(水费、电费或煤气费)(*必须上传 - 如您上传的ID是护照)<br>
</p>
<i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
</div>
<uib-progressbar value="billFileProgress.value" ng-if="billFileProgress"></uib-progressbar>
<table>
<tbody>
<tr ng-repeat="file_src in file.kyc_utility_bill_file track by $index">
<td ng-bind="$index+1+'.'" class="btn">1</td>
<td><a ng-if="billIsImage" target="_blank" ng-href="{{file_src.file_value}}">
<img ng-src="{{file_src.file_value}}" class="col-sm-8"
onerror="this.src='/static/images/file_close.png'">
</a>
<button class="btn btn-danger" type="button"
ng-click="deleteComplianceFiles(file_src.file_id)">
X
</button>
</td>
</tr>
</tbody>
</table>
</div>
<div class="col-sm-6">
<div class="form-control-static">
<div class="col-sm-12">
<p class="col-sm-6">Example请提供水电煤账单文件图片,如示例
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2019/12/16/1576491226098_Ho29fpS08rNP9AvPTZQfyoIrNa9bcB.png" title="" alt="水费.png"/>
<br/><img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2019/12/16/1576491263193_hqD9DkQOZvqx8Qaw1ABIkqL21aSNrd.jpg" title="" alt="电费.jpg"/>
</p>
<p class="col-sm-6">
<img class="col-xs-12" style="border: 1px solid #ddd"
src="https://file.royalpay.com.au/open/2019/12/16/1576491285195_C8oXVU4QIJ3ADDEMghaNXTt3cXUhtd.png" title="" alt="煤气.png"/>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div style="text-align: center">
<a role="button" style="margin-bottom: 25px;" class="btn btn-success btn-sm ng-scope" ng-if="('10'|withRole)" ng-click="complianceCheck()">check</a>
</div>

@ -277,9 +277,6 @@
<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=".files">Compliance Files</a> <a ui-sref=".files">Compliance Files</a>
</li> </li>
<li ui-sref-active="active" ng-if="partner.show_all_permission && partner.is_valid==1">
<a ui-sref=".MW_files">Merchant Warrior Compliance Files</a>
</li>
<!--<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=".kyc_files">KYC Files</a> <a ui-sref=".kyc_files">KYC Files</a>
</li>--> </li>-->

@ -10,6 +10,13 @@
background-color: #f7bf90; background-color: #f7bf90;
border-color: #adadad; border-color: #adadad;
} }
.form-control-float {
float: left;
width: 93%; !important;
}
.form-control-span{
height: 34px;
}
</style> </style>
<section class="content-header"> <section class="content-header">
<h1 ng-bind="partner.short_name"></h1> <h1 ng-bind="partner.short_name"></h1>
@ -26,6 +33,21 @@
<form novalidate name="partnerForm"> <form novalidate name="partnerForm">
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div class="row">
<div class="col-sm-12 analysis-nav">
<ul class="nav nav-pills">
<li ng-class="{active:partner.client_type=='cross-border'}" style="cursor: pointer">
<a ng-click="partner.client_type='cross-border';partner.client_pay_type=[]"><span>跨境支付|Cross-border Payment</span></a>
</li>
<li ng-class="{active:partner.client_type=='card-payment'}" style="cursor: pointer">
<a ng-click="partner.client_type='card-payment';partner.client_pay_type=['1']"> <span>卡支付|Card Payment</span></a>
</li>
<li ng-class="{active:partner.client_type=='all'}" style="cursor: pointer">
<a ng-click="partner.client_type='all';partner.client_pay_type=['1']"> <span>同时开通|All Payment</span></a>
</li>
</ul>
</div>
</div>
<div class="panel panel-default"> <div class="panel panel-default">
<div class="panel-heading">Partner Basic Information</div> <div class="panel-heading">Partner Basic Information</div>
<div class="panel-body"> <div class="panel-body">
@ -82,7 +104,7 @@
</div> </div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.business_name.$invalid && partnerForm.business_name.$dirty}"> ng-class="{'has-error':partnerForm.business_name.$invalid && partnerForm.business_name.$dirty}">
<label class="control-label col-sm-2" for="business-name-input">Business Name</label> <label class="control-label col-sm-2" for="business-name-input">* Business Name</label>
<div class="col-sm-8"> <div class="col-sm-8">
<input id="business-name-input" ng-model="partner.business_name" class="form-control" <input id="business-name-input" ng-model="partner.business_name" class="form-control"
type="text" name="business_name" maxlength="100"> type="text" name="business_name" maxlength="100">
@ -93,7 +115,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.store_name.$invalid && partnerForm.store_name.$dirty}"> ng-class="{'has-error':partnerForm.store_name.$invalid && partnerForm.store_name.$dirty}">
<label class="control-label col-sm-2" for="store-name-input"> <label class="control-label col-sm-2" for="store-name-input">
* Store Name</label> * Store Name</label>
@ -111,9 +133,7 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div ng-if="!('100'|withRole)"> <div ng-if="!('100'|withRole)">
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.company_name.$invalid && partnerForm.company_name.$dirty}"> ng-class="{'has-error':partnerForm.company_name.$invalid && partnerForm.company_name.$dirty}">
@ -162,7 +182,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.store_name.$invalid && partnerForm.store_name.$dirty}"> ng-class="{'has-error':partnerForm.store_name.$invalid && partnerForm.store_name.$dirty}">
<label class="control-label col-sm-2" for="store-name-input"> <label class="control-label col-sm-2" for="store-name-input">
* Store Name</label> * Store Name</label>
@ -181,8 +201,24 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_type=='card-payment' || partner.client_type=='all'"
<div class="form-group" ng-class="{'has-error':partnerForm.acceptor_name.$invalid && partnerForm.acceptor_name.$dirty}">
<label class="control-label col-sm-2" for="card-acceptor-input">* Card Acceptor Name</label>
<div class="col-sm-8">
<input id="card-acceptor-input" ng-model="partner.acceptor_name" required
class="form-control"
type="text" name="acceptor_name" maxlength="19">
<div ng-messages="partnerForm.acceptor_name.$error"
ng-if="partnerForm.acceptor_name.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 19
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.business_structure.$invalid && partnerForm.business_structure.$dirty}"> ng-class="{'has-error':partnerForm.business_structure.$invalid && partnerForm.business_structure.$dirty}">
<label class="control-label col-sm-2" for="business-structure-input">Business Structure</label> <label class="control-label col-sm-2" for="business-structure-input">Business Structure</label>
<div class="col-sm-8"> <div class="col-sm-8">
@ -206,20 +242,6 @@
<img ng-src="{{partner.logo_url}}" ng-if="partner.logo_url" style="height: 100px;"> <img ng-src="{{partner.logo_url}}" ng-if="partner.logo_url" style="height: 100px;">
</div> </div>
</div> </div>
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}">-->
<!--<label class="control-label col-sm-2" for="abn-input">* ABN</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" ng-model="partner.abn" type="text" name="abn"-->
<!--id="abn-input"-->
<!--required maxlength="20">-->
<!--<div ng-messages="partnerForm.abn.$error" ng-if="partnerForm.abn.$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>-->
<!--</div>-->
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}" ng-if="partner.business_structure != 'Company'"> ng-class="{'has-error':partnerForm.abn.$invalid && partnerForm.abn.$dirty}" ng-if="partner.business_structure != 'Company'">
<label class="control-label col-sm-2" for="abn-input">ABN</label> <label class="control-label col-sm-2" for="abn-input">ABN</label>
@ -319,7 +341,7 @@
ng-click="toggleClientPayType('1')"> ng-click="toggleClientPayType('1')">
<i class="fa fa-mixcloud"></i> <i class="fa fa-mixcloud"></i>
线上</button> 线上</button>
<button class="btn btn-default" <button class="btn btn-default" ng-if="partner.client_type!='card-payment'"
ng-class="{active:partner.client_pay_type.indexOf('2')>=0}" ng-class="{active:partner.client_pay_type.indexOf('2')>=0}"
ng-click="toggleClientPayType('2')"> ng-click="toggleClientPayType('2')">
<i class="fa fa-shopping-basket"></i> <i class="fa fa-shopping-basket"></i>
@ -358,7 +380,7 @@
小程序</button> 小程序</button>
</div> </div>
</div> </div>
<div ng-if="partner.client_pay_type.indexOf('2')>=0"> <div ng-if="partner.client_pay_type.indexOf('2')>=0 && partner.client_type!='card-payment'">
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}"> ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">*Offline Scene Of Merchants</label> <label class="control-label col-sm-2">*Offline Scene Of Merchants</label>
@ -386,7 +408,7 @@
</div> </div>
</div> </div>
</div> </div>
<div ng-if="partner.client_pay_desc.join(',').indexOf('203')>=0"> <div ng-if="partner.client_pay_desc.join(',').indexOf('203')>=0 && partner.client_type!='card-payment'">
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}"> ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">* POS</label> <label class="control-label col-sm-2">* POS</label>
@ -457,7 +479,7 @@
</div> </div>
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0"> <div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0 && partner.client_type!='card-payment'">
<label class="control-label col-sm-2">* Shop Photo</label> <label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form-control-static"><em>1:</em>&nbsp; <div class="form-control-static"><em>1:</em>&nbsp;
@ -488,11 +510,43 @@
</a> </a>
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_type=='card-payment' ||partner.client_type=='all'"
ng-class="{'has-error':partnerForm.expected_card_revenue.$invalid && partnerForm.expected_card_revenue.$dirty}">
<label class="control-label col-sm-2" for="expected_card_revenue-input">*
Expected credit card monthly revenue ($)</label>
<div class="col-sm-8">
<input type="number" name="expected_card_revenue" class="form-control form-control-float"
ng-model="partner.expected_card_revenue"
id="expected_card_revenue-input" required min="0">
<span class="input-group-addon form-control-span">$</span>
<div ng-messages="partnerForm.expected_card_revenue.$error"
ng-if="partnerForm.expected_card_revenue.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_type=='card-payment' ||partner.client_type=='all'"
ng-class="{'has-error':partnerForm.average_card_transaction.$invalid && partnerForm.average_card_transaction.$dirty}">
<label class="control-label col-sm-2" for="average_card_transaction-input">*
Average credit card transaction value ($)</label>
<div class="col-sm-8">
<input type="number" name="average_card_transaction" class="form-control form-control-float"
ng-model="partner.average_card_transaction"
id="average_card_transaction-input" required min="0">
<span class="input-group-addon form-control-span">$</span>
<div ng-messages="partnerForm.average_card_transaction.$error"
ng-if="partnerForm.average_card_transaction.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default" ng-if="partner.client_type!='card-payment'">
<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">
<div class="form-horizontal"> <div class="form-horizontal">
@ -578,16 +632,6 @@
Characters(including symbols and spaces)</p> Characters(including symbols and spaces)</p>
</div> </div>
</div> </div>
<!-- IT联系人信息 -->
<div class="form-group">
<label class="control-label col-sm-2" for="it-contact-person-email-id">
IT Contact Person E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.it_contact_person_email"
name="it_contact_person_email" id="it-contact-person-email-id"
maxlength="50">
</div>
</div>
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.contact_job.$invalid && partnerForm.contact_job.$dirty}"> ng-class="{'has-error':partnerForm.contact_job.$invalid && partnerForm.contact_job.$dirty}">
<label class="control-label col-sm-2" for="contact_job-id">* <label class="control-label col-sm-2" for="contact_job-id">*
@ -614,10 +658,20 @@
maxlength="50"> maxlength="50">
</div> </div>
</div> </div>
<!-- IT联系人信息 -->
<div class="form-group">
<label class="control-label col-sm-2" for="it-contact-person-email-id">
IT Contact Person E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.it_contact_person_email"
name="it_contact_person_email" id="it-contact-person-email-id"
maxlength="50">
</div>
</div>
<div> <div>
<label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label> <label><input type="checkbox" ng-click="checkboxOnclick(this)">Legal Representative Same As Contact Information</label>
</div> </div>
<div> <div ng-if="partner.client_type!='card-payment'">
<label><input type="checkbox" ng-click="checkMarketingSameAsContact(this)">Marketing Person Same As Contact Information</label> <label><input type="checkbox" ng-click="checkMarketingSameAsContact(this)">Marketing Person Same As Contact Information</label>
</div> </div>
</div> </div>
@ -729,8 +783,8 @@
</div> </div>
</div> </div>
<div>&nbsp;&nbsp;Marketing Person</div> <div ng-if="partner.client_type!='card-payment'">&nbsp;&nbsp;Marketing Person</div>
<div class="panel-body"> <div class="panel-body" ng-if="partner.client_type!='card-payment'">
<div class="form-horizontal"> <div class="form-horizontal">
<div class="form-group" <div class="form-group"
ng-class="{'has-error':partnerForm.marketing_person.$invalid && partnerForm.marketing_person.$dirty}"> ng-class="{'has-error':partnerForm.marketing_person.$invalid && partnerForm.marketing_person.$dirty}">
@ -1080,81 +1134,6 @@
</div> </div>
</div> </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.alipayindustry|partner_alipay_industry"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)"
chose-one-level="false">
<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;color: #f6f6f6;">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.jdindustryindustry.$error"
ng-if="partnerForm.jdindustryindustry.$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 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>
@ -1178,7 +1157,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}"> ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input"> <label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label> *Wechat Industry</label>
@ -1197,7 +1176,7 @@
</div> </div>
</div> </div>
<div class="form-group" <div class="form-group" ng-if="partner.client_type!='card-payment'"
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>
@ -1216,6 +1195,42 @@
</div> </div>
</div> </div>
<div class="form-group" ng-if="partner.client_type=='card-payment'"
ng-class="{'has-error':partnerForm.mw-industry.$invalid && partnerForm.mw-industry.$dirty}">
<label class="control-label col-sm-2" for="mw-industry-input">
*Merchant Warrior Industry</label>
<div class="col-sm-8">
<select class="form-control" name="mw-industry"
ng-model="partner.mw_industry" required
id="mw-industry-input"
ng-options="industry.value as industry.label for industry in upayIndustrys">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.mw-industry.$error"
ng-if="partnerForm.mw-industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_type=='card-payment' || partner.client_type=='all'">
<label class="control-label col-sm-2" for="mw-industry-input">
*Card Service Selection</label>
<div class="col-sm-8">
<span class="checkbox-inline">
<label>
<input type="checkbox" checked disabled
id="approving-check">
Australia Credit Card Payment|澳大利亚信用卡支付
</label>
</span>
<span class="checkbox-inline">
<label>
<input type="checkbox" ng-model="partner.enable_international_card">
International Credit Card Payment|国际信用卡支付
</label>
</span>
</div>
</div> </div>
</div> </div>

@ -3,82 +3,81 @@
width: 100%; width: 100%;
} }
</style> </style>
<div class="panel panel-default"> <div class="panel-heading">Audit Files &nbsp;&nbsp;&nbsp;
<div class="panel-heading">Audit Files &nbsp;&nbsp;&nbsp; <a class="btn-group btn btn-success" ng-if="file" ng-href="{{downloadAsZip()}}" target="_blank">
<a class="btn-group btn btn-success" ng-if="file" ng-href="{{downloadAsZip()}}" target="_blank"> <i class="fa fa-cloud-download">一键下载</i>
<i class="fa fa-cloud-download">一键下载</i> </a>
</a> </div>
</div> <div class="panel-body">
<div class="panel-body"> <div class="form-horizontal">
<div class="form-horizontal"> <div class="panel panel-info">
<div class="panel panel-info"> <div class="panel-heading"><h4>
<div class="panel-heading"><h4> Merchant Warrior商户风险评级
Merchant Warrior商户风险评级 <a class="small" role="button" ng-if="!id_info_form.edit" ng-click="id_info_form.edit=true">
<a class="small" role="button" ng-if="!id_info_form.edit" ng-click="id_info_form.edit=true"> <i class="fa fa-edit"></i></a>
<i class="fa fa-edit"></i></a> </h4></div>
</h4></div> <div class="panel-body">
<div class="panel-body"> <div class="row form-horizontal">
<div class="row form-horizontal"> <div class="form-group" ng-if="id_info_form.edit">
<div class="form-group" ng-if="id_info_form.edit"> <label class="control-label col-sm-2">* 商户风险等级 </label>
<label class="control-label col-sm-2">* 商户风险等级 </label> <div class="col-sm-4">
<div class="col-sm-4"> <div class="form-control-static">
<div class="form-control-static"> <select class="form-control"
<select class="form-control" ng-model="file.upay_risk_level" style="width: 250px">
ng-model="file.upay_risk_level" style="width: 250px"> <option value="">Please Choose</option>
<option value="">Please Choose</option> <option value="low" class="risk-options" style="color: green">低风险</option>
<option value="low" class="risk-options" style="color: green">低风险</option> <option value="medium" class="risk-options" style="color: orange">中风险</option>
<option value="medium" class="risk-options" style="color: orange">中风险</option> <option value="high" class="risk-options" style="color: red">高风险</option>
<option value="high" class="risk-options" style="color: red">高风险</option> </select>
</select>
</div>
</div> </div>
</div> </div>
<div class="form-group" ng-if="id_info_form.edit"> </div>
<label class="control-label col-sm-2">风控备注</label> <div class="form-group" ng-if="id_info_form.edit">
<div class="col-sm-4"> <label class="control-label col-sm-2">风控备注</label>
<div class="form-control-static"> <div class="col-sm-4">
<textarea class="form-control" ng-model="file.upay_risk_remark" style="height: 100px"></textarea> <div class="form-control-static">
</div> <textarea class="form-control" ng-model="file.upay_risk_remark" style="height: 100px"></textarea>
</div> </div>
</div> </div>
<div class="form-group" ng-if="!id_info_form.edit"> </div>
<label class="control-label col-sm-2">商户风险等级 </label> <div class="form-group" ng-if="!id_info_form.edit">
<div class="col-sm-4"> <label class="control-label col-sm-2">商户风险等级 </label>
<div class="form-control-static"> <div class="col-sm-4">
<span ng-if="file.upay_risk_level=='low'" style="color: green">低风险</span> <div class="form-control-static">
<span ng-if="file.upay_risk_level=='medium'" style="color: orange">风险</span> <span ng-if="file.upay_risk_level=='low'" style="color: green">风险</span>
<span ng-if="file.upay_risk_level=='high'" style="color: red">风险</span> <span ng-if="file.upay_risk_level=='medium'" style="color: orange">风险</span>
</div> <span ng-if="file.upay_risk_level=='high'" style="color: red">高风险</span>
</div> </div>
</div> </div>
<div class="form-group" ng-if="!id_info_form.edit"> </div>
<label class="control-label col-sm-2">风控备注</label> <div class="form-group" ng-if="!id_info_form.edit">
<div class="col-sm-4"> <label class="control-label col-sm-2">风控备注</label>
<div class="form-control-static"> <div class="col-sm-4">
<textarea class="form-control" ng-model="file.upay_risk_remark" style="height: 100px" disabled></textarea> <div class="form-control-static">
</div> <textarea class="form-control" ng-model="file.upay_risk_remark" style="height: 100px" disabled></textarea>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div class="panel-footer" ng-if="id_info_form.edit">
<button class="btn btn-success" ng-click="saveIdInfo()">保存</button>
<button class="btn btn-danger" ng-click="cancelIdInfo()">取消</button>
</div>
</div> </div>
<div class="form-group"> <div class="panel-footer" ng-if="id_info_form.edit">
<label class="control-label col-sm-2">* Merchant Warrior申请表</label> <button class="btn btn-success" ng-click="saveIdInfo()">保存</button>
<div class="col-sm-4"> <button class="btn btn-danger" ng-click="cancelIdInfo()">取消</button>
<div class="form-control-static"> </div>
<button class="btn btn-primary" type="button" </div>
ngf-select="uploadApplyFile($file)"> <div class="form-group">
<i class="fa fa-upload"></i> Upload <label class="control-label col-sm-2">* Merchant Warrior申请表</label>
</button> <div class="col-sm-4">
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i> <div class="form-control-static">
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_application_form}}" ><i class="fa fa-download"></i></a> <button class="btn btn-primary" type="button"
</div> ngf-select="uploadApplyFile($file)">
<uib-progressbar value="bankFileProgress.value" ng-if="bankFileProgress"></uib-progressbar> <i class="fa fa-upload"></i> Upload
<table> </button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_application_form}}" ><i class="fa fa-download"></i></a>
</div>
<uib-progressbar value="bankFileProgress.value" ng-if="bankFileProgress"></uib-progressbar>
<table>
<tbody> <tbody>
<tr> <tr>
<td><a ng-if="bankIsImage" target="_blank" ng-href="{{file.upay_application_form}}"> <td><a ng-if="bankIsImage" target="_blank" ng-href="{{file.upay_application_form}}">
@ -87,108 +86,107 @@
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Letter of Offer邀约信 </label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadOfferFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_offer_letter}}" ><i class="fa fa-download"></i></a>
</div> </div>
<uib-progressbar value="idFileProgress.value" ng-if="idFileProgress"></uib-progressbar>
<table>
<tbody>
<tr>
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_offer_letter}}">
<img ng-src="{{file.upay_offer_letter}}"class="col-sm-6"onerror="this.src='/static/images/file_close.png'">
</a>
</td>
</tr>
</tbody></table>
</div> </div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">* Merchant Warrior商户签署协议</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadAgreementFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_agreement_file}}" ><i class="fa fa-download"></i></a>
</div>
<uib-progressbar value="companyFileProgress.value" ng-if="companyFileProgress"></uib-progressbar>
<table><tbody>
<tr>
<td><a ng-if="companyIsImage" target="_blank" ng-href="{{file.upay_agreement_file}}">
<img ng-src="{{file.upay_agreement_file}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
</a>
</td>
</tr>
</tbody></table>
</div>
</div>
<div class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-2">* Letter of Offer邀约信 </label> <label class="control-label col-sm-2">* 最终受益人驾驶执照</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form-control-static"> <div class="form-control-static">
<button class="btn btn-primary" type="button" <button class="btn btn-primary" type="button"
ngf-select="uploadOfferFile($file)"> ngf-select="uploadDriverFile($file)">
<i class="fa fa-upload"></i> Upload <i class="fa fa-upload"></i> Upload
</button> </button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i> <i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_offer_letter}}" ><i class="fa fa-download"></i></a> <a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_driver_license}}" ><i class="fa fa-download"></i></a>
</div> </div>
<uib-progressbar value="idFileProgress.value" ng-if="idFileProgress"></uib-progressbar> <uib-progressbar value="agreementFileProgress.value" ng-if="agreementFileProgress"></uib-progressbar>
<table> <table>
<tbody> <tbody>
<tr> <tr>
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_offer_letter}}"> <td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_driver_license}}">
<img ng-src="{{file.upay_offer_letter}}"class="col-sm-6"onerror="this.src='/static/images/file_close.png'"> <img ng-src="{{file.upay_driver_license}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
</a> </a>
</td> </td>
</tr> </tr>
</tbody></table> </tbody></table>
</div> </div>
</div> </div>
</div>
<div class="form-horizontal">
<div class="form-group"> <div class="form-group">
<label class="control-label col-sm-2">* Merchant Warrior商户签署协议</label> <label class="control-label col-sm-2">* 受益人居住证明文件</label>
<div class="col-sm-4"> <div class="col-sm-4">
<div class="form-control-static"> <div class="form-control-static">
<button class="btn btn-primary" type="button" <button class="btn btn-primary" type="button"
ngf-select="uploadAgreementFile($file)"> ngf-select="uploadResidenceFile($file)">
<i class="fa fa-upload"></i> Upload <i class="fa fa-upload"></i> Upload
</button> </button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i> <i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_agreement_file}}" ><i class="fa fa-download"></i></a> <a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_residence_certificate}}" ><i class="fa fa-download"></i></a>
</div>
<uib-progressbar value="companyFileProgress.value" ng-if="companyFileProgress"></uib-progressbar>
<table><tbody>
<tr>
<td><a ng-if="companyIsImage" target="_blank" ng-href="{{file.upay_agreement_file}}">
<img ng-src="{{file.upay_agreement_file}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
</a>
</td>
</tr>
</tbody></table>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* 最终受益人驾驶执照</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadDriverFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" aria-hidden="true" style="float: none" ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_driver_license}}" ><i class="fa fa-download"></i></a>
</div>
<uib-progressbar value="agreementFileProgress.value" ng-if="agreementFileProgress"></uib-progressbar>
<table>
<tbody>
<tr>
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_driver_license}}">
<img ng-src="{{file.upay_driver_license}}"class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
</a>
</td>
</tr>
</tbody></table>
</div>
</div>
</div>
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">* 受益人居住证明文件</label>
<div class="col-sm-4">
<div class="form-control-static">
<button class="btn btn-primary" type="button"
ngf-select="uploadResidenceFile($file)">
<i class="fa fa-upload"></i> Upload
</button>
<i class="fa fa-check-square-o check-i" style="float: none" aria-hidden="true"ng-if="$root.complianceCheck.authFile"></i>
<a role="button" download="" target="_blank" class="btn-group btn btn-warning" type="button" href="{{file.upay_residence_certificate}}" ><i class="fa fa-download"></i></a>
</div>
<uib-progressbar value="bankFileProgress.value" ng-if="applyFileProgress"></uib-progressbar>
<table>
<tbody>
<tr>
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_residence_certificate}}">
<img ng-src="{{file.upay_residence_certificate}}" class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
</a>
</td>
</tr>
</tbody></table>
</div> </div>
<uib-progressbar value="bankFileProgress.value" ng-if="applyFileProgress"></uib-progressbar>
<table>
<tbody>
<tr>
<td><a ng-if="idIsImage" target="_blank" ng-href="{{file.upay_residence_certificate}}">
<img ng-src="{{file.upay_residence_certificate}}" class="col-sm-6" onerror="this.src='/static/images/file_close.png'">
</a>
</td>
</tr>
</tbody></table>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save