add 商户场景选择

master
luoyang 6 years ago
parent 7ffee061f0
commit 9ec7d35e21

@ -16,4 +16,6 @@ public interface AliforexcelService {
JSONObject registerAlipayMerchant();
JSONObject getLessPartnerInfo();
void initClientPayType(int begin,int end);
}

@ -4,9 +4,12 @@ import au.com.royalpay.payment.channels.alipay.config.AlipayConfig;
import au.com.royalpay.payment.channels.alipay.config.AlipayEnvironment;
import au.com.royalpay.payment.channels.alipay.runtime.AlipayClient;
import au.com.royalpay.payment.core.exceptions.InvalidShortIdException;
import au.com.royalpay.payment.core.mappers.PmtOrderMapper;
import au.com.royalpay.payment.manage.dev.bean.AliExcel;
import au.com.royalpay.payment.manage.dev.core.AliforexcelService;
import au.com.royalpay.payment.manage.mappers.payment.OrderMapper;
import au.com.royalpay.payment.manage.mappers.payment.TransactionMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientConfigMapper;
import au.com.royalpay.payment.manage.mappers.system.ClientMapper;
import au.com.royalpay.payment.tools.exceptions.BadRequestException;
import au.com.royalpay.payment.tools.exceptions.ServerErrorException;
@ -26,6 +29,7 @@ import java.io.IOException;
import java.io.OutputStream;
import java.security.InvalidParameterException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Service
@ -33,9 +37,13 @@ public class AliforexcelServiceImpl implements AliforexcelService {
@Resource
private ClientMapper clientMapper;
@Resource
private ClientConfigMapper clientConfigMapper;
@Resource
private TransactionMapper transactionMapper;
@Resource
private AlipayClient alipayClient;
@Resource
private OrderMapper orderMapper;
@Override
public JSONObject listClients(HttpServletResponse httpResponse,JSONObject manager, AliExcel query) {
@ -239,4 +247,76 @@ public class AliforexcelServiceImpl implements AliforexcelService {
throw new InvalidParameterException("Alipay Industry can't be null");
}
}
@Override
public void initClientPayType(int begin,int end) {
List<JSONObject> merchants = clientMapper.clientPayTypeInfoByClientIdRange(begin, end);
for (JSONObject partner : merchants) {
JSONObject clientConfig = new JSONObject();
List<String> types = new ArrayList<>();
List<String> descs = new ArrayList<>();
clientConfig.put("client_id", partner.getIntValue("client_id"));
clientConfig.put("client_moniker", partner.getString("client_moniker"));
List<Integer> gateways = orderMapper.listGatewayByClientId(partner.getIntValue("client_id"));
if (gateways.size() == 0) {
unOrdersPartner(partner, clientConfig);
continue;
}
if (gateways.contains(0) || gateways.contains(1) || gateways.contains(2)) {
descs.add("6");
}
if (gateways.contains(3) || gateways.contains(9) || gateways.contains(14)) {
descs.add("1");
}
if (gateways.contains(4) || gateways.contains(7)) {
descs.add("4");
}
if (gateways.contains(5) || gateways.contains(6) || gateways.contains(11)) {
descs.add("8");
descs.add("12");
}
if (gateways.contains(8)) {
descs.add("2");
}
if (gateways.contains(10)) {
descs.add("3");
}
if (gateways.contains(12)) {
descs.add("5");
}
if (gateways.contains(13)) {
descs.add("6");
}
if (descs.contains("1") || descs.contains("2") || descs.contains("3") || descs.contains("4") ||
descs.contains("5")) {
types.add("1");
}
if (descs.contains("6") || descs.contains("7") || descs.contains("8") || descs.contains("9") ||
descs.contains("10") || descs.contains("11") || descs.contains("12") ||descs.contains("13")) {
types.add("2");
}
clientConfig.put("client_pay_type", StringUtils.join(types, ','));
clientConfig.put("client_pay_desc", StringUtils.join(descs, ','));
clientConfigMapper.update(clientConfig);
}
}
private void unOrdersPartner(JSONObject partner,JSONObject clientConfig) {
if (StringUtils.isBlank(partner.getString("client_pay_type"))) {
clientConfig.put("client_pay_type", "2");
clientConfig.put("client_pay_desc", "6");
} else {
String[] types = partner.getString("client_pay_type").split(",");
List<String> descs = new ArrayList<>();
if (Arrays.asList(types).contains("1")) {
descs.add("3");
}
if (Arrays.asList(types).contains("2")) {
descs.add("6");
}
clientConfig.put("client_pay_desc", StringUtils.join(descs, ','));
}
clientConfigMapper.update(clientConfig);
}
}

@ -464,4 +464,9 @@ public class TestController implements ApplicationEventPublisherAware {
public JSONObject getLessPartnerInfo() {
return aliforexcelService.getLessPartnerInfo();
}
@ManagerMapping(value = "/init/client_pay_type", role = ManagerRole.DEVELOPER, method = RequestMethod.GET)
public void initClientPayType(@RequestParam int begin,@RequestParam int end) {
aliforexcelService.initClientPayType(begin,end);
}
}

@ -70,5 +70,5 @@ public interface OrderMapper {
@AdvanceSelect(addonWhereClause = "status in (5,6,7) AND channel in('Wechat','Alipay')")
List<JSONObject> listNewYearOrdersByOpenId(@Param("customer_id") String open_id,@Param("transaction_date") String date);
List<Integer> listGatewayByClientId(@Param("client_id") int clientId);
}

@ -120,4 +120,6 @@ public interface ClientMapper {
List<Integer> childClientId(@Param("parent_client_id") int parent_client_id);
List<JSONObject> createClientsByGroup(@Param("start_date") Date start_date,@Param("end_date") Date end_date,@Param("start_date_month") Date start_date_month);
List<JSONObject> clientPayTypeInfoByClientIdRange(@Param("begin") int begin, @Param("end") int end);
}

@ -409,6 +409,11 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
String cbBankPayQrcodeUrl = PlatformEnvironment.getEnv().concatUrl("/sys/partners/" + client.getString("client_moniker") + "/cb_bankpay/link");
client.put("cbBankPayQrcodeUrl", QRCodeUtils.qrcodeImageCode(cbBankPayQrcodeUrl, 250, true));
}
//商户支付场景
if (StringUtils.isNotBlank(client.getString("client_pay_type"))) {
client.put("client_pay_type",client.getString("client_pay_type").split(","));
client.put("client_pay_desc",client.getString("client_pay_desc").split(","));
}
return client;
}

@ -0,0 +1,47 @@
package au.com.royalpay.payment.manage.merchants.enums;
/**
* @Author: luoyang
* @Date: 2019-05-29 10:30
*/
public enum paymentScenarioEnum {
PC_WEB(1, "PC网站"),
MOBILE_WEB(2, "手机端网站"),
APP(3, "APP"),
WECHAT_ALIPAY_WEB(4, "微信内、支付宝内网站"),
MINIPROGRAM(5, "小程序"),
QRCODE_BOARD(6, "二维码立牌"),
ROYALPAY_POS(7,"Royalpay POS"),
CASHIER_POS(8,"收银系统"),
IPOS(9,"ipos"),
POSPAL(10,"pospal"),
AUPOS(11,"aupos"),
OTHER(12,"other"),
VENDING_MACHINE(13,"无人售货机");
private final int scenarioTypeId;
private final String desc;
public int getScenarioTypeId() {
return scenarioTypeId;
}
public String getDesc() {
return desc;
}
paymentScenarioEnum(int scenarioTypeId, String desc) {
this.scenarioTypeId = scenarioTypeId;
this.desc = desc;
}}

@ -846,4 +846,10 @@
and t.clearing_amount >= 1.99
]]>
</select>
<select id="listGatewayByClientId" resultType="java.lang.Integer">
SELECT gateway FROM pmt_orders
WHERE status>=5
AND client_id = #{client_id}
GROUP BY gateway
</select>
</mapper>

@ -591,4 +591,12 @@
WHERE
t1.bd_type IN ( 1, 2, 6, 7 )
</select>
<select id="clientPayTypeInfoByClientIdRange" resultType="com.alibaba.fastjson.JSONObject">
SELECT p.client_id,p.client_moniker,c.client_pay_type,c.client_pay_desc FROM sys_clients p
INNER JOIN sys_client_config c ON c.client_id=p.client_id
WHERE p.is_valid=1
AND p.client_id >= #{begin}
AND p.client_id &lt; #{end}
</select>
</mapper>

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

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

@ -370,8 +370,52 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
$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) {
while (parseInt($scope.partner.client_pay_desc[0]) < 6) {
$scope.partner.client_pay_desc.splice(0, 1);
}
}
if (type == 2) {
while (parseInt($scope.partner.client_pay_desc[$scope.partner.client_pay_desc.length-1]) > 5) {
$scope.partner.client_pay_desc.splice($scope.partner.client_pay_desc.length-1, 1);
}
}
};
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) {
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) {
var $idx = $scope.partner.client_pay_desc.indexOf(type);
if ($idx >= 0) {
$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.states = stateMap.configs();
@ -382,12 +426,6 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.bd_citys = angular.copy(bd_city_map);
$scope.params = {textType: 'all', org_name: 'ALL'};
$scope.onOfflineDescSelect = function (selectedItem) {
$scope.partner.offline_label = selectedItem.label;
$scope.partner.client_offline_desc = selectedItem.value;
};
function remove(arr, val) {
if (angular.isArray(arr)) {
for (var i = arr.length; i--;) {
@ -400,13 +438,6 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
return arr;
}
$scope.loadOfflineDesc = function () {
$http.get('/static/data/client_offline_desc.json').then(function (resp) {
$scope.client_offline_select = resp.data;
})
};
$scope.loadOfflineDesc();
var industries = angular.copy($scope.industries);
$scope.industries = remove(industries, 331);
@ -538,7 +569,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
alert("Logo is necessary!");
return;
}
if ($scope.partner.partner_type == 'photo') {
if ($scope.partner.client_pay_type.indexOf('2')>=0) {
if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary');
return;
@ -557,20 +588,32 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
})
}
// if ($scope.partner.client_pay_type =='online' || $scope.partner.client_pay_type =='all') {
// if (!$scope.partner.online_website && !$scope.partner.online_public_account && !$scope.partner.online_mini_program && !$scope.partner.online_app) {
// alert('线上支付场景至少填写一种方式');
// return;
// }
// }
// if(!window.frames['merchant_detail'].merchant_location){
// alert("Please Locate Merchant's Location");
// return;
// }
if ($scope.params.client_pay_type == '') {
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 && $scope.partner.client_pay_type.indexOf('2') >= 0) {
var fristDesc = $scope.partner.client_pay_desc[0];
var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)];
if (parseInt(fristDesc) > 5 || parseInt(lastDesc) < 6) {
alert("请检查线上/线下支付场景是否已选择支付方式")
return;
}
}
if ($scope.partner.client_pay_desc.indexOf('8') >= 0) {
var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)];
if (parseInt(lastDesc) < 10) {
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();
@ -1130,18 +1173,48 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
$scope.timezones = timezone.configs();
$scope.partner = partner.data;
var origin_referrer_id = angular.copy($scope.partner.referrer_id);
$scope.partner.partner_type = $scope.partner.website ? 'website' : 'photo';
$scope.loadOfflineDesc = function () {
$http.get('/static/data/client_offline_desc.json').then(function (resp) {
$scope.client_offline_select = resp.data;
})
var resetClientPayDescByTpey = function (type) {
type = parseInt(type);
if (type == 1) {
while (parseInt($scope.partner.client_pay_desc[0]) < 6) {
$scope.partner.client_pay_desc.splice(0, 1);
}
}
if (type == 2) {
while (parseInt($scope.partner.client_pay_desc[$scope.partner.client_pay_desc.length-1]) > 5) {
$scope.partner.client_pay_desc.splice($scope.partner.client_pay_desc.length-1, 1);
}
}
};
$scope.loadOfflineDesc();
$scope.onOfflineDescSelect = function (selectedItem) {
$scope.partner.offline_label = selectedItem.label;
$scope.partner.client_offline_desc = selectedItem.value;
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) {
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) {
var $idx = $scope.partner.client_pay_desc.indexOf(type);
if ($idx >= 0) {
$scope.partner.client_pay_desc.splice($idx, 1);
} else {
$scope.partner.client_pay_desc.push(type);
$scope.partner.client_pay_desc.sort(compare);
}
};
$scope.listReferrers = function () {
@ -1239,7 +1312,7 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
alert('suburb can not contain two and more continuous space characters');
return;
}
if ($scope.partner.partner_type == 'photo') {
if ($scope.partner.client_pay_type.indexOf('2') >= 0) {
if (!$scope.partner.company_photo) {
alert('Shop Photo1 is necessary');
return;
@ -1277,9 +1350,31 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
// alert("Please Locate Merchant Location!");
// return;
// }
if ($scope.params.client_pay_type == '') {
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 && $scope.partner.client_pay_type.indexOf('2') >= 0) {
var fristDesc = $scope.partner.client_pay_desc[0];
var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)];
if (parseInt(fristDesc) > 5 || parseInt(lastDesc) < 6) {
alert("请检查线上/线下支付场景是否已选择支付方式")
return;
}
}
if ($scope.partner.client_pay_desc.indexOf('8') >= 0) {
var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)];
if (parseInt(lastDesc) < 10) {
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({
@ -2624,6 +2719,52 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
}
$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) {
while (parseInt($scope.partner.client_pay_desc[0]) < 6) {
$scope.partner.client_pay_desc.splice(0, 1);
}
}
if (type == 2) {
while (parseInt($scope.partner.client_pay_desc[$scope.partner.client_pay_desc.length-1]) > 5) {
$scope.partner.client_pay_desc.splice($scope.partner.client_pay_desc.length-1, 1);
}
}
};
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) {
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) {
var $idx = $scope.partner.client_pay_desc.indexOf(type);
if ($idx >= 0) {
$scope.partner.client_pay_desc.splice($idx, 1);
} else {
$scope.partner.client_pay_desc.push(type);
$scope.partner.client_pay_desc.sort(compare);
}
};
$scope.business_structures = businessStructuresMap.configs();
$scope.industries = industryMap.configs();
@ -2776,9 +2917,31 @@ define(['angular', 'decimal', 'static/commons/commons', 'uiBootstrap', 'uiRouter
// alert("Please Locate Merchant Location!");
// return;
// }
if ($scope.partner.client_pay_type == '') {
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 && $scope.partner.client_pay_type.indexOf('2') >= 0) {
var fristDesc = $scope.partner.client_pay_desc[0];
var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)];
if (parseInt(fristDesc) > 5 || parseInt(lastDesc) < 6) {
alert("请检查线上/线下支付场景是否已选择支付方式")
return;
}
}
if ($scope.partner.client_pay_desc.indexOf('8') >= 0) {
var lastDesc = $scope.partner.client_pay_desc[($scope.partner.client_pay_desc.length - 1)];
if (parseInt(lastDesc) < 10) {
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/' + clientMoniker + '/sub_clients', $scope.partner).then(function () {
$scope.updateMerchantLocation();
$scope.$close();

@ -179,67 +179,6 @@
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group"
ng-class="{'has-error':partnerForm.partner_type.$invalid && partnerForm.partner_type.$dirty}">
<label class="control-label col-sm-2" for="partner-type-select">* Photo/Website</label>
<div class="col-sm-8">
<select class="form-control" ng-model="partner.partner_type"
id="partner-type-select"
name="partner_type">
<option value="">Please Choose</option>
<option value="photo">Photo</option>
<option value="companyWebsite">Website</option>
</select>
<p class="small text-info">If the partner is a offline shop then a photo of shop is
required while an online store shall choose companyWebsite</p>
<p class="small text-info">
只要有可能产生线下交易商户静态码、POS就必须上传照片否则支付宝会禁止交易</p>
<div ng-messages="partnerForm.partner_type.$error"
ng-if="partnerForm.partner_type.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.partner_type == 'photo'">
<label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-4">
<div class="form-control-static"><em>1:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadShopPhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo" class="thumbnail img-size col-sm-9">
</div>
<div class="col-sm-4">
<div class="form-control-static"><em>2:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadStorePhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo" class="thumbnail img-size col-sm-9">
</div>
</div>
<div class="form-group" ng-if="partner.partner_type == 'companyWebsite'"
ng-class="{'has-error':partnerForm.company_website.$invalid && partnerForm.company_website.$dirty}">
<label class="control-label col-sm-2" for="company_website-input">* Website</label>
<div class="col-sm-8">
<input type="text" name="company_website" class="form-control"
ng-model="partner.company_website"
id="company_website-input" required maxlength="200">
<div ng-messages="partnerForm.company_website.$error"
ng-if="partnerForm.company_website.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 200
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
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">* Service Phone</label>
@ -321,95 +260,120 @@
<div class="panel-heading">Merchant Payment Scenario</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_type.$invalid && partnerForm.client_pay_type.$dirty}">
<label class="control-label col-sm-2" for="client-pay-type-select">*
<div class="form-group">
<label class="control-label col-sm-2">*
Merchant Payment Scenario Type</label>
<div class="col-sm-8">
<select class="form-control" ng-model="partner.client_pay_type"
id="client-pay-type-select"
name="client_pay_type">
<option value="">Please Choose</option>
<option value="all">All</option>
<option value="online">线上</option>
<option value="offline">线下</option>
</select>
<div ng-messages="partnerForm.client_pay_type.$error"
ng-if="partnerForm.client_pay_type.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_type.indexOf('1')>=0}"
ng-click="toggleClientPayType('1')">
<i class="fa fa-mixcloud"></i>
线上</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_type.indexOf('2')>=0}"
ng-click="toggleClientPayType('2')">
<i class="fa fa-shopping-basket"></i>
线下</button>
</div>
</div>
<!--<div ng-if="partner.client_pay_type=='online' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Website</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_website">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--公众号名称</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_public_account">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Mini Program Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_mini_program">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--APP Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_app">-->
<!--<p class="small text-info">-->
<!--<i class="fa fa-info"></i> 线上支付场景至少选择填一项</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div ng-if="partner.client_pay_type=='offline' || partner.client_pay_type=='all'">-->
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">-->
<!--<label class="control-label col-sm-2"-->
<!--for="client-offline-desc">*Offline Scene Of Merchants</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" id="client-offline-desc" required-->
<!--name="client_offline" readonly-->
<!--ng-model="partner.client_offline_desc | partner_offline_desc"-->
<!--multi-level-select-popup="client_offline_select"-->
<!--on-select="onOfflineDescSelect($selected)">-->
<!--<div ng-messages="partnerForm.client_offline.$error"-->
<!--ng-if="partnerForm.client_offline.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required-->
<!--Field</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_desc.$invalid && partnerForm.client_pay_desc.$dirty}">
<label class="control-label col-sm-2" for="client-pay-desc-input">*
Merchant Payment Scenario Description</label>
ng-if="partner.client_pay_type.indexOf('1')>=0">
<label class="control-label col-sm-2">
*Online Scene Of Merchants</label>
<div class="col-sm-8">
<textarea class="form-control" required
ng-model="partner.client_pay_desc"
name="client_pay_desc" id="client-pay-desc-input"
maxlength="200"></textarea>
<p class="small text-info">
<i class="fa fa-info"></i> 例如线下场景门店立牌、POS、收银系统选择品牌名称【ipos、银豹、aupos、其他】、无门店</p>
<div ng-messages="partnerForm.client_pay_desc.$error"
ng-if="partnerForm.client_pay_desc.$dirty">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('1')>=0}"
ng-click="toggleClientPayDesc('1')">
<i class="fa fa-desktop"></i>
PC网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('2')>=0}"
ng-click="toggleClientPayDesc('2')">
<i class="fa fa-mobile-phone"></i>
手机端网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('3')>=0}"
ng-click="toggleClientPayDesc('3')">
<i class="fa fa-mobile-phone"></i>
APP</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('4')>=0}"
ng-click="toggleClientPayDesc('4')">
<i class="fa fa-wechat"></i>
微信内、支付宝内网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('5')>=0}"
ng-click="toggleClientPayDesc('5')">
<i class="fa fa-wechat"></i>
小程序</button>
</div>
</div>
<div ng-if="partner.client_pay_type.indexOf('2')>=0">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">*Offline Scene Of Merchants</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('6')>=0}"
ng-click="toggleClientPayDesc('6')">
<i class="fa fa-qrcode"></i>
二维码立牌</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('7')>=0}"
ng-click="toggleClientPayDesc('7')">
<i class="fa fa-user"></i>
RoyalPay POS</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('8')>=0}"
ng-click="toggleClientPayDesc('8')">
<i class="fa fa-laptop"></i>
收银系统</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('9')>=0}"
ng-click="toggleClientPayDesc('9')">
<i class="fa fa-shopping-cart"></i>
无人售货机</button>
</div>
</div>
</div>
<div ng-if="partner.client_pay_desc.indexOf('8')>=0">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">* POS</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('10')>=0}"
ng-click="toggleClientPayDesc('10')">
<i class="fa fa-laptop"></i>
ipos</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('11')>=0}"
ng-click="toggleClientPayDesc('11')">
<i class="fa fa-laptop"></i>
pospal</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('12')>=0}"
ng-click="toggleClientPayDesc('12')">
<i class="fa fa-laptop"></i>
aupos</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('13')>=0}"
ng-click="toggleClientPayDesc('13')">
<i class="fa fa-laptop"></i>
其他</button>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('1')>=0"
ng-class="{'has-error':partnerForm.company_website.$invalid && partnerForm.company_website.$dirty}">
<label class="control-label col-sm-2" for="company_website-input">*
Website</label>
<div class="col-sm-8">
<input type="text" name="company_website" class="form-control"
ng-model="partner.company_website"
id="company_website-input" required maxlength="200">
<div ng-messages="partnerForm.company_website.$error"
ng-if="partnerForm.company_website.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
@ -418,6 +382,33 @@
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0">
<label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-4">
<div class="form-control-static"><em>1:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadShopPhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo"
class="thumbnail img-size col-sm-9">
</div>
<div class="col-sm-4">
<div class="form-control-static"><em>2:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadStorePhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo"
class="thumbnail img-size col-sm-9">
</div>
</div>
</div>
</div>
</div>

@ -410,32 +410,6 @@
<p class="form-control-static" ng-bind="partner.sector"></p>
</div>
</div>
<div class="form-group" ng-if="partner.company_photo">
<label class="control-label col-sm-2">Shop Photo</label>
<div class="col-sm-3 col-xs-5"><em>1:</em>&nbsp;
<div>
<a class="thumbnail" target="_blank" ng-href="{{partner.company_photo}}">
<img ng-src="{{partner.company_photo}}" style="max-height: 100px">
</a>
</div>
</div>
<div class="col-sm-3 col-xs-5" ng-if="partner.store_photo"><em>2:</em>&nbsp;
<div>
<a class="thumbnail" target="_blank" ng-href="{{partner.store_photo}}">
<img ng-src="{{partner.store_photo}}" style="max-height: 100px">
</a>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.company_website">
<label class="control-label col-sm-2">Website</label>
<div class="col-sm-10">
<a class="form-control-static" target="_blank" ng-bind="partner.company_website"
href="{{partner.company_website}}"></a>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Service Phone</label>
@ -530,67 +504,139 @@
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">
<label class="control-label col-sm-2">*
Merchant Payment Scenario Type</label>
<div class="col-sm-8">
<p class="form-control-static"
ng-bind="partner.client_pay_type">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_type.indexOf('1')>=0}">
<i class="fa fa-mixcloud"></i>
线上</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_type.indexOf('2')>=0}">
<i class="fa fa-shopping-basket"></i>
线下</button>
</div>
</div>
<div class="form-group"
ng-if="partner.client_pay_type.indexOf('1')>=0">
<label class="control-label col-sm-2">
*Online Scene Of Merchants</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('1')>=0}">
<i class="fa fa-desktop"></i>
PC网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('2')>=0}">
<i class="fa fa-mobile-phone"></i>
手机端网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('3')>=0}">
<i class="fa fa-mobile-phone"></i>
APP</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('4')>=0}">
<i class="fa fa-wechat"></i>
微信内、支付宝内网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('5')>=0}">
<i class="fa fa-wechat"></i>
小程序</button>
</div>
</div>
<div ng-if="partner.client_pay_type.indexOf('2')>=0">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">*Offline Scene Of Merchants</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('6')>=0}">
<i class="fa fa-qrcode"></i>
二维码立牌</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('7')>=0}">
<i class="fa fa-user"></i>
RoyalPay POS</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('8')>=0}">
<i class="fa fa-laptop"></i>
收银系统</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('9')>=0}">
<i class="fa fa-shopping-cart"></i>
无人售货机</button>
</div>
</div>
</div>
<div ng-if="partner.client_pay_desc.indexOf('8')>=0">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">* POS</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('10')>=0}">
<i class="fa fa-laptop"></i>
ipos</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('11')>=0}">
<i class="fa fa-laptop"></i>
pospal</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('12')>=0}">
<i class="fa fa-laptop"></i>
aupos</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('13')>=0}">
<i class="fa fa-laptop"></i>
其他</button>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('1')>=0"
ng-class="{'has-error':partnerForm.company_website.$invalid && partnerForm.company_website.$dirty}">
<label class="control-label col-sm-2" for="company_website-input">*
Website</label>
<div class="col-sm-8">
<input type="text" name="company_website" class="form-control"
ng-model="partner.company_website"
id="company_website-input" required maxlength="200">
<div ng-messages="partnerForm.company_website.$error"
ng-if="partnerForm.company_website.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0">
<label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-4">
<div class="form-control-static"><em>1:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadShopPhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo"
class="thumbnail img-size col-sm-9">
</div>
<div class="col-sm-4">
<div class="form-control-static"><em>2:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadStorePhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo"
class="thumbnail img-size col-sm-9">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">Merchant Payment Scenario Description</label>
<div class="col-sm-10">
<p class="form-control-static" ng-bind="partner.client_pay_desc"></p>
</div>
</div>
<!--<div ng-if="partner.client_pay_type=='online' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Website</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_website">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--公众号名称</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_public_account">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Mini Program Name</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_mini_program">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--APP Name</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.online_app">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div ng-if="partner.client_pay_type=='offline' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">Offline Scene Of Merchants</label>-->
<!--<div class="col-sm-8">-->
<!--<p class="form-control-static"-->
<!--ng-bind="partner.client_offline_desc | partner_offline_desc">-->
<!--</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
</div>
</div>
</div>

@ -253,69 +253,6 @@
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group" ng-if="!partner.parent_client_id || ('00110'|withRole)"
ng-class="{'has-error':partnerForm.partner_type.$invalid && partnerForm.partner_type.$dirty}">
<label class="control-label col-sm-2" for="partner-type-select">* Photo/Website</label>
<div class="col-sm-8">
<select class="form-control" ng-model="partner.partner_type"
id="partner-type-select"
name="partner_type">
<option value="">Please Choose</option>
<option value="photo">Photo</option>
<option value="companyWebsite">Website</option>
</select>
<p class="small text-info">If the partner is a offline shop then a photo of shop is
required while an online store shall choose company website</p>
<p class="small text-info">
只要有可能产生线下交易商户静态码、POS就必须上传照片否则支付宝会禁止交易</p>
<div ng-messages="partnerForm.partner_type.$error"
ng-if="partnerForm.partner_type.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-if="partner.partner_type == 'photo' && (!partner.parent_client_id || ('00110'|withRole))">
<label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-5">
<div class="form-control-static"><em>1:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadShopPhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo" class="thumbnail img-size col-sm-9">
</div>
<div class="col-sm-5">
<div class="form-control-static"><em>2:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadStorePhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo" class="thumbnail img-size col-sm-9">
</div>
</div>
<div class="form-group"
ng-if="partner.partner_type == 'companyWebsite' && (!partner.parent_client_id || ('00110'|withRole))"
ng-class="{'has-error':partnerForm.company_website.$invalid && partnerForm.company_website.$dirty}">
<label class="control-label col-sm-2" for="company_website-input">* Website</label>
<div class="col-sm-8">
<input type="text" name="company_website" class="form-control"
ng-model="partner.company_website"
id="company_website-input" required maxlength="200">
<div ng-messages="partnerForm.company_website.$error"
ng-if="partnerForm.company_website.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 200
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.company_phone.$invalid && partnerForm.company_phone.$dirty}">
<label class="control-label col-sm-2" for="service-phone-input">* Service Phone</label>
@ -366,39 +303,120 @@
<div class="panel-heading">Merchant Payment Scenario</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_type.$invalid && partnerForm.client_pay_type.$dirty}">
<label class="control-label col-sm-2" for="client-pay-type-select">*
<div class="form-group">
<label class="control-label col-sm-2">*
Merchant Payment Scenario Type</label>
<div class="col-sm-8">
<select class="form-control" ng-model="partner.client_pay_type"
id="client-pay-type-select"
name="client_pay_type">
<option value="">Please Choose</option>
<option value="all">All</option>
<option value="online">线上</option>
<option value="offline">线下</option>
</select>
<div ng-messages="partnerForm.client_pay_type.$error"
ng-if="partnerForm.client_pay_type.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_type.indexOf('1')>=0}"
ng-click="toggleClientPayType('1')">
<i class="fa fa-mixcloud"></i>
线上</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_type.indexOf('2')>=0}"
ng-click="toggleClientPayType('2')">
<i class="fa fa-shopping-basket"></i>
线下</button>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.client_pay_desc.$invalid && partnerForm.client_pay_desc.$dirty}">
<label class="control-label col-sm-2" for="client-pay-desc-input">*
Merchant Payment Scenario Description</label>
ng-if="partner.client_pay_type.indexOf('1')>=0">
<label class="control-label col-sm-2">
*Online Scene Of Merchants</label>
<div class="col-sm-8">
<textarea class="form-control" required
ng-model="partner.client_pay_desc"
name="client_pay_desc" id="client-pay-desc-input"
maxlength="200"></textarea>
<p class="small text-info">
<i class="fa fa-info"></i> 例如线下场景门店立牌、POS、收银系统选择品牌名称【ipos、银豹、aupos、其他】、无门店</p>
<div ng-messages="partnerForm.client_pay_desc.$error"
ng-if="partnerForm.client_pay_desc.$dirty">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('1')>=0}"
ng-click="toggleClientPayDesc('1')">
<i class="fa fa-desktop"></i>
PC网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('2')>=0}"
ng-click="toggleClientPayDesc('2')">
<i class="fa fa-mobile-phone"></i>
手机端网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('3')>=0}"
ng-click="toggleClientPayDesc('3')">
<i class="fa fa-mobile-phone"></i>
APP</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('4')>=0}"
ng-click="toggleClientPayDesc('4')">
<i class="fa fa-wechat"></i>
微信内、支付宝内网站</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('5')>=0}"
ng-click="toggleClientPayDesc('5')">
<i class="fa fa-wechat"></i>
小程序</button>
</div>
</div>
<div ng-if="partner.client_pay_type.indexOf('2')>=0">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">*Offline Scene Of Merchants</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('6')>=0}"
ng-click="toggleClientPayDesc('6')">
<i class="fa fa-qrcode"></i>
二维码立牌</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('7')>=0}"
ng-click="toggleClientPayDesc('7')">
<i class="fa fa-user"></i>
RoyalPay POS</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('8')>=0}"
ng-click="toggleClientPayDesc('8')">
<i class="fa fa-laptop"></i>
收银系统</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('9')>=0}"
ng-click="toggleClientPayDesc('9')">
<i class="fa fa-shopping-cart"></i>
无人售货机</button>
</div>
</div>
</div>
<div ng-if="partner.client_pay_desc.indexOf('8')>=0">
<div class="form-group"
ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">
<label class="control-label col-sm-2">* POS</label>
<div class="col-sm-8">
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('10')>=0}"
ng-click="toggleClientPayDesc('10')">
<i class="fa fa-laptop"></i>
ipos</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('11')>=0}"
ng-click="toggleClientPayDesc('11')">
<i class="fa fa-laptop"></i>
pospal</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('12')>=0}"
ng-click="toggleClientPayDesc('12')">
<i class="fa fa-laptop"></i>
aupos</button>
<button class="btn btn-default"
ng-class="{active:partner.client_pay_desc.indexOf('13')>=0}"
ng-click="toggleClientPayDesc('13')">
<i class="fa fa-laptop"></i>
其他</button>
</div>
</div>
</div>
<div class="form-group" ng-if="partner.client_pay_type.indexOf('1')>=0"
ng-class="{'has-error':partnerForm.company_website.$invalid && partnerForm.company_website.$dirty}">
<label class="control-label col-sm-2" for="company_website-input">*
Website</label>
<div class="col-sm-8">
<input type="text" name="company_website" class="form-control"
ng-model="partner.company_website"
id="company_website-input" required maxlength="200">
<div ng-messages="partnerForm.company_website.$error"
ng-if="partnerForm.company_website.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
@ -407,63 +425,33 @@
</div>
</div>
</div>
<!--<div ng-if="partner.client_pay_type=='online' || partner.client_pay_type=='all'">-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Website</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_website">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--公众号名称</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_public_account">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--Mini Program Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_mini_program">-->
<!--</div>-->
<!--</div>-->
<!--<div class="form-group">-->
<!--<label class="control-label col-sm-2">-->
<!--APP Name</label>-->
<!--<div class="col-sm-8">-->
<!--<input type="text" class="form-control"-->
<!--ng-model="partner.online_app">-->
<!--<p class="small text-info">-->
<!--<i class="fa fa-info"></i> 线上支付场景至少选择填一项</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--<div ng-if="partner.client_pay_type=='offline' || partner.client_pay_type=='all'">-->
<!--<div class="form-group"-->
<!--ng-class="{'has-error':partnerForm.client_offline.$invalid && partnerForm.client_offline.$dirty}">-->
<!--<label class="control-label col-sm-2"-->
<!--for="client-offline-desc">*Offline Scene Of Merchants</label>-->
<!--<div class="col-sm-8">-->
<!--<input class="form-control" id="client-offline-desc" required-->
<!--name="client_offline" readonly-->
<!--ng-model="partner.client_offline_desc | partner_offline_desc"-->
<!--multi-level-select-popup="client_offline_select"-->
<!--on-select="onOfflineDescSelect($selected)">-->
<!--<div ng-messages="partnerForm.client_offline.$error"-->
<!--ng-if="partnerForm.client_offline.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required-->
<!--Field</p>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="form-group" ng-if="partner.client_pay_type.indexOf('2')>=0">
<label class="control-label col-sm-2">* Shop Photo</label>
<div class="col-sm-4">
<div class="form-control-static"><em>1:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadShopPhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo1
</button>
</div>
<uib-progressbar value="shopPhotoProgress.value"
ng-if="shopPhotoProgress"></uib-progressbar>
<img ng-src="{{partner.company_photo}}" ng-if="partner.company_photo"
class="thumbnail img-size col-sm-9">
</div>
<div class="col-sm-4">
<div class="form-control-static"><em>2:</em>&nbsp;
<button class="btn btn-primary" type="button"
ngf-select="uploadStorePhoto($file)" accept="image/*">
<i class="fa fa-upload"></i> Upload Shop Photo2
</button>
</div>
<uib-progressbar value="storePhotoProgress.value"
ng-if="storePhotoProgress"></uib-progressbar>
<img ng-src="{{partner.store_photo}}" ng-if="partner.store_photo"
class="thumbnail img-size col-sm-9">
</div>
</div>
</div>
</div>
</div>

Loading…
Cancel
Save