Merge branch 'develop'

master
luoyang 6 years ago
commit 663edb9e6c

@ -190,6 +190,8 @@ public interface ClientManager {
void writeAggregateQrCodeBoard(JSONObject manager, String clientMoniker, QRCodeConfig config, OutputStream ous,String plantform); void writeAggregateQrCodeBoard(JSONObject manager, String clientMoniker, QRCodeConfig config, OutputStream ous,String plantform);
void writeCBBankAggregateQrCodeBoard(JSONObject manager, String clientMoniker, OutputStream ous,String plantform);
void writeQrCodeBoard(JSONObject manager, String clientMoniker, QRCodeConfig config, OutputStream ous,String plantform); void writeQrCodeBoard(JSONObject manager, String clientMoniker, QRCodeConfig config, OutputStream ous,String plantform);
void writePoster(JSONObject manager, String clientMoniker, OutputStream ous); void writePoster(JSONObject manager, String clientMoniker, OutputStream ous);

@ -2020,6 +2020,36 @@ public class ClientManagerImpl implements ClientManager, ManagerTodoNoticeProvid
} }
} }
@Override
public void writeCBBankAggregateQrCodeBoard(JSONObject manager, String clientMoniker, OutputStream ous, String plantform) {
JSONObject client = clientDetail(manager, clientMoniker);
try {
JSONObject qrboardConfig = new JSONObject();
qrboardConfig.put("src", PlatformEnvironment.getEnv().concatUrl("/static/images/aggregate_qr_board.png"));
qrboardConfig.put("type", "royalpay");
qrboardConfig.put("x", "835");
qrboardConfig.put("y", "1290");
qrboardConfig.put("size", "770");
qrboardConfig.put("fontsize", "50");
qrboardConfig.put("fontx", "1235");
qrboardConfig.put("fonty", "2051");
qrboardConfig.put("snsize", "50");
qrboardConfig.put("snx", "1215");
qrboardConfig.put("sny", "1320");
qrboardConfig.put("brandx", "930");
qrboardConfig.put("brandy", "1060");
qrboardConfig.put("brandw", "600");
qrboardConfig.put("brandh", "200");
String type = qrboardConfig.getString("type");
// QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client,
// config,mongoTemplate,manager,plantform);
QRBoard board = QRBoardProvider.getQRBoard(type, qrboardConfig, client, new QRCodeConfig());
board.drawCBBankBoardImage(ous);
} catch (Exception e) {
throw new ServerErrorException("QR board config not set for current organize", e);
}
}
@Override @Override
public void writeQrCodeBoard(JSONObject manager, String clientMoniker, QRCodeConfig config, OutputStream ous, String plantform) { public void writeQrCodeBoard(JSONObject manager, String clientMoniker, QRCodeConfig config, OutputStream ous, String plantform) {
JSONObject client = clientDetail(manager, clientMoniker); JSONObject client = clientDetail(manager, clientMoniker);

@ -107,6 +107,15 @@ public class PartnerManageController {
clientManager.writeAggregateQrCodeBoard(manager, clientMoniker, config, ous,"PC"); clientManager.writeAggregateQrCodeBoard(manager, clientMoniker, config, ous,"PC");
} }
@ManagerMapping(value = "/{clientMoniker}/qrcode_board/CBBankAggregate", method = RequestMethod.GET)
public void getCBBankAggregateQRCodeBoardImage(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager,
HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream;");
response.addHeader("Content-Disposition", "attachment; filename=qr_board.jpg");
OutputStream ous = response.getOutputStream();
clientManager.writeCBBankAggregateQrCodeBoard(manager, clientMoniker, ous,"PC");
}
@ManagerMapping(value = "/{clientMoniker}/poster", method = RequestMethod.GET) @ManagerMapping(value = "/{clientMoniker}/poster", method = RequestMethod.GET)
public void getPosterImage(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, HttpServletResponse response) throws IOException { public void getPosterImage(@PathVariable String clientMoniker, @ModelAttribute(CommonConsts.MANAGER_STATUS) JSONObject manager, HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream;"); response.setContentType("application/octet-stream;");

@ -104,6 +104,15 @@ public class PartnerViewController {
clientManager.writeAggregateQrCodeBoard(null, account.getString("client_moniker"), config, ous,"pc"); clientManager.writeAggregateQrCodeBoard(null, account.getString("client_moniker"), config, ous,"pc");
} }
@PartnerMapping(value = "/qrcode_board/CBBankAggregate", method = RequestMethod.GET)
public void getCBBankAggregateQRCodeBoardImage(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account,
HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream");
response.addHeader("Content-Disposition", "attachment; filename=qr_board.jpg");
OutputStream ous = response.getOutputStream();
clientManager.writeCBBankAggregateQrCodeBoard(null, account.getString("client_moniker"), ous,"pc");
}
@PartnerMapping(value = "/poster", method = RequestMethod.GET) @PartnerMapping(value = "/poster", method = RequestMethod.GET)
public void getPosterImage(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account, HttpServletResponse response) throws IOException { public void getPosterImage(@ModelAttribute(CommonConsts.PARTNER_STATUS) JSONObject account, HttpServletResponse response) throws IOException {
response.setContentType("application/octet-stream;"); response.setContentType("application/octet-stream;");

@ -998,11 +998,11 @@ margin-bottom: 10%;"/>
<!--<i class="fa fa-users"></i> -->Client Details <!--<i class="fa fa-users"></i> -->Client Details
</a> </a>
</li> </li>
<li> <!--<li>-->
<a ui-sref="payment_materials"> <!--<a ui-sref="payment_materials">-->
<!--<i class="fa fa-file-image-o"></i> -->Marketing Materials <!--&lt;!&ndash;<i class="fa fa-file-image-o"></i> &ndash;&gt;Marketing Materials-->
</a> <!--</a>-->
</li> <!--</li>-->
<li ng-if="(currentUser.client.client_id!=9 && currentUser.client.parent_client_id!=9)&&([1]|withRole)"> <li ng-if="(currentUser.client.client_id!=9 && currentUser.client.parent_client_id!=9)&&([1]|withRole)">
<a ui-sref="accounts"> <a ui-sref="accounts">
<!--<i class="fa fa-users"></i> -->Accounts <!--<i class="fa fa-users"></i> -->Accounts

@ -233,7 +233,11 @@
<label class="col-sm-2 control-label">CB Bank Pay QR Code</label> <label class="col-sm-2 control-label">CB Bank Pay QR Code</label>
<div style="text-align: center"> <div style="text-align: center">
<img ng-src="{{partner.cbBankPayQrcodeUrl}}" class="img-responsive" /> <img ng-src="{{partner.cbBankPayQrcodeUrl}}" class="img-responsive" />
<!--<span style="font-size:9px;">仅支持微信客户端扫描</span>--> <p class="col-md-12">
<a ng-href="/client/partner_info/qrcode_board/CBBankAggregate"
target="_blank"><i class="fa fa-download"></i>Download Aggregate QR Board Image (聚合支付水晶立牌:支持支付宝、微信、翼支付)
</a>
</p>
</div> </div>
<!--<div style="padding-top: 30px;padding-left: 20%;text-align: center">--> <!--<div style="padding-top: 30px;padding-left: 20%;text-align: center">-->

@ -593,494 +593,6 @@
<!--</div>--> <!--</div>-->
</div> </div>
</div> </div>
<div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em>
</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">
Business Hours</label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.business_hours">
<p class="small text-info">
eg:Monday-Friday 09:00-20:00,Saturday-Sunday 10:00-22:00</p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Tag<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.merchant_tag">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Introduction<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<textarea class="form-control"
ng-model="partner.merchant_introduction"></textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Video Introduction<br><em class="small">(youtube link)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control"
ng-model="partner.merchant_video_url">
<p class="small text-info">eg:https://www.baidu.com</p>
</div>
</div>
</div>
</div>
</div>
<!--支付宝资料-->
<div class="panel panel-default">
<div class="panel-heading">Contact Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_person.$invalid && partnerForm.contact_person.$dirty}">
<label class="control-label col-sm-2" for="contact_person-input">*
Contact Person
Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_person"
required
name="contact_person"
id="contact_person-input" maxlength="50">
<div ng-messages="partnerForm.contact_person.$error"
ng-if="partnerForm.contact_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}">
<label class="control-label col-sm-2" for="contact-phone-p-input">*
Phone</label>
<!-- <div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.contact_phone" required
name="contact_phone" id="contact-phone-input" maxlength="20">
</div>
<div ng-messages="partnerForm.contact_phone.$error"
ng-if="partnerForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p>
</div>-->
<div class="col-sm-2">
<div class="input-group">
<div class="input-group-addon">+</div>
<input class="form-control" required type="text"
ng-model="partner.contact_phone_c"
name="contact_phone_c" id="contact-phone-c-input"
maxlength="3" minlength="1"
placeholder="country code">
</div>
<div ng-messages="partnerForm.contact_phone_c.$error"
ng-if="partnerForm.contact_phone_c.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 20 Characters</p>
</div>
</div>
<div class="col-sm-2">
<input class="form-control" type="text"
ng-model="partner.contact_phone_a"
title="eg:3,当为手机号、服务电话时,可以不填"
name="contact_phone_a" id="contact-phone-a-input"
maxlength="2" placeholder="area code">
<div ng-messages="partnerForm.contact_phone_a.$error"
ng-if="partnerForm.contact_phone_a.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 2 Characters</p>
</div>
</div>
<div class="col-sm-4">
<input class="form-control" required type="text"
ng-model="partner.contact_phone_p"
name="contact_phone_p" id="contact-phone-p-input"
maxlength="11" placeholder="phone number">
<div ng-messages="partnerForm.contact_phone_p.$error"
ng-if="partnerForm.contact_phone_p.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 11 Characters</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_email.$invalid && partnerForm.contact_email.$dirty}">
<label class="control-label col-sm-2" for="contact-email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_email"
required
name="contact_email" id="contact-email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.contact_email.$error"
ng-if="partnerForm.contact_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
<div class="panel panel-default">
<div class="panel-heading">Address Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="address-input">*
Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.address"
name="address"
id="address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.address.$error"
ng-if="partnerForm.address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.suburb.$invalid && partnerForm.suburb.$dirty}">
<label class="control-label col-sm-4" for="suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.suburb"
name="suburb"
id="suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.suburb.$error"
ng-if="partnerForm.suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--</div>-->
<!--<select class="form-control" name="suburb" required ng-model="partner.suburb"-->
<!--id="suburb-input"-->
<!--ng-options="t2c.key as t2c.value for t2c in t2city_map">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.suburb.$error" ng-if="partnerForm.suburb.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.postcode.$invalid && partnerForm.postcode.$dirty}">
<label class="control-label col-sm-4" for="postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.postcode"
name="postcode"
id="postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.postcode.$error"
ng-if="partnerForm.postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.state.$invalid && partnerForm.state.$dirty}">
<label class="control-label col-sm-4" for="state-input">*
State</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="partner.state" name="state" id="state-input"-->
<!--maxlength="20">-->
<!--<div ng-messages="partnerForm.state.$error" ng-if="partnerForm.state.$dirty">-->
<!--<p class="small text-danger" ng-message="maxlength">Less Than 20-->
<!--Characters(including symbols and spaces)</p>-->
<!--</div>-->
<select class="form-control" name="state" required
ng-model="partner.state"
id="state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.state.$error"
ng-if="partnerForm.state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.country.$invalid && partnerForm.country.$dirty}">
<label class="control-label col-sm-4" for="country-input">*
Country</label>
<div class="col-sm-8">
<input class="form-control"
ng-init="partner.country=partner.country||'AUS'"
ng-model="partner.country" name="country"
id="country-input" maxlength="20" required
placeholder="AUS" readonly="readonly">
<div ng-messages="partnerForm.country.$error"
ng-if="partnerForm.country.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 20
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--选择框-->
<!--<select class="form-control" name="country" required ng-model="partner.country"-->
<!--id="country-input"-->
<!--ng-options="country.value as country.label for country in countries">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.country.$error" ng-if="partnerForm.country.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2"
for="tz-select">TimeZone</label>
<div class="col-sm-9">
<select class="form-control" name="timezone"
ng-model="partner.timezone"
id="tz-select"
ng-options="tz.key as tz.detail for tz in timezones">
</select>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" style="font-size: larger">Location
<span id="editmap" hidden>true</span>
<span id="add_view" hidden>true</span>
</div>
<div class="form-group">
<div class="embed-responsive" style="height: 300px;">
<iframe id="merchant_detail" name="merchant_detail" class="embed-responsive-item"
src="one_locations.html"></iframe>
</div>
</div>
</div>
<!--<div class="panel panel-info">
<div class="panel-heading">Alipay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-4"
for="alipay_category">*Category</label>
<div class="col-sm-8" >
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipay_category"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#62b900">wechat Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#d82d2d">JD Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustry.$error"
ng-if="partnerForm.jdindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#f06010;color: #f6f6f6;">RoyalPay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpayindustry.$invalid && partnerForm.royalpayindustry.$dirty}">
<label class="control-label col-sm-2" for="royalpayindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="royalpayindustry"
ng-model="partner.royalpayindustry"
id="royalpayindustry-input" required
ng-options="industry.value as industry.label for industry in royalpayindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.royalpayindustry.$error"
ng-if="partnerForm.royalpayindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>-->
<div class="panel panel-default">
<div class="panel-heading"
style="color: #333;background-color: #f5f5f5;border-color: #ddd;">
Industry
</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpay_label.$invalid && partnerForm.royalpay_label.$dirty}">
<label class="control-label col-sm-2"
for="royalpayindustry">*RoyalPay Industry</label>
<div class="col-sm-8">
<input class="form-control" id="royalpayindustry" required
name="royalpayindustry" readonly
ng-model="partner.royalpayindustry|partner_royalpay_industry"
multi-level-select-popup="royalpayindustry"
on-select="onRoyalPayIndustrySelect($selected)">
<div ng-messages="partnerForm.royalpay_label.$error"
ng-if="partnerForm.royalpay_label.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*JDPay Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustryindustry.$error"
ng-if="partnerForm.jdindustryindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2"
for="alipay_category">*Alipay Category</label>
<div class="col-sm-8">
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipayindustry|partner_alipay_industry"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="('10'|withRole) || ('1'|withRole)">
<label class="control-label col-sm-2"
for="hf_category">HF Industry</label>
<div class="col-sm-8">
<input class="form-control" id="hf_category" required
name="hf_label" readonly
ng-model="partner.hfindustry|partner_hf_industry"
multi-level-select-popup="hfindustry"
on-select="onHfIndustrySelect($selected)">
</div>
</div>
</div>
</div>
</div> </div>
<!--支付宝资料--> <!--支付宝资料-->

@ -466,490 +466,6 @@
</div> </div>
</div> </div>
<div class="panel panel-default">
<div class="panel-heading">Alipay Information &nbsp;<em class="small"><b>(Optional)</b></em></div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group">
<label class="control-label col-sm-2">
Business Hours</label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.business_hours">
<p class="small text-info">
eg:Monday-Friday 09:00-20:00,Saturday-Sunday 10:00-22:00</p>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Tag<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.merchant_tag">
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Merchant Introduction<em class="small">(Chinese)</em></label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.merchant_introduction"></textarea>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2">
Video Introduction<br><em class="small">(youtube link)</em></label>
<div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.merchant_video_url">
<p class="small text-info">eg:https://www.baidu.com</p>
</div>
</div>
</div>
</div>
</div>
<!--支付宝资料-->
<div class="panel panel-default">
<div class="panel-heading">Contact Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_person.$invalid && partnerForm.contact_person.$dirty}">
<label class="control-label col-sm-2" for="contact_person-input">*
Contact Person
Name</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_person"
required
name="contact_person"
id="contact_person-input" maxlength="50">
<div ng-messages="partnerForm.contact_person.$error"
ng-if="partnerForm.contact_person.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_phone_p.$invalid && partnerForm.contact_phone_p.$dirty}">
<label class="control-label col-sm-2" for="contact-phone-p-input">*
Phone</label>
<!-- <div class="col-sm-8">
<input type="text" class="form-control" ng-model="partner.contact_phone" required
name="contact_phone" id="contact-phone-input" maxlength="20">
</div>
<div ng-messages="partnerForm.contact_phone.$error"
ng-if="partnerForm.contact_phone.$dirty">
<p class="small text-danger" ng-message="required">Required Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 20
Characters(including symbols and spaces)</p>
</div>-->
<div class="col-sm-2">
<div class="input-group">
<div class="input-group-addon">+</div>
<input class="form-control" required type="text"
ng-model="partner.contact_phone_c"
name="contact_phone_c" id="contact-phone-c-input"
maxlength="3" minlength="1"
placeholder="country code">
</div>
<div ng-messages="partnerForm.contact_phone_c.$error"
ng-if="partnerForm.contact_phone_c.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 20 Characters</p>
</div>
</div>
<div class="col-sm-2">
<input class="form-control" type="text"
ng-model="partner.contact_phone_a"
title="eg:3,当为手机号、服务电话时,可以不填"
name="contact_phone_a" id="contact-phone-a-input"
maxlength="2" placeholder="area code">
<div ng-messages="partnerForm.contact_phone_a.$error"
ng-if="partnerForm.contact_phone_a.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 2 Characters</p>
</div>
</div>
<div class="col-sm-4">
<input class="form-control" required type="text"
ng-model="partner.contact_phone_p"
name="contact_phone_p" id="contact-phone-p-input"
maxlength="11" placeholder="phone number">
<div ng-messages="partnerForm.contact_phone_p.$error"
ng-if="partnerForm.contact_phone_p.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less
Than 11 Characters</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.contact_email.$invalid && partnerForm.contact_email.$dirty}">
<label class="control-label col-sm-2" for="contact-email-id">*
E-mail</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.contact_email"
required
name="contact_email" id="contact-email-id"
maxlength="50">
</div>
<div ng-messages="partnerForm.contact_email.$error"
ng-if="partnerForm.contact_email.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
<p class="small text-danger" ng-message="maxlength">Less Than 50
Characters(including symbols and spaces)</p>
</div>
</div>
</div>
</div>
</div>
<!--end 商户联系资料-->
<div class="panel panel-default">
<div class="panel-heading">Address Information</div>
<div class="panel-body">
<div class="form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.address.$invalid && partnerForm.address.$dirty}">
<label class="control-label col-sm-4" for="address-input">*
Address</label>
<div class="col-sm-8">
<textarea class="form-control" ng-model="partner.address"
name="address"
id="address-input" maxlength="200" required></textarea>
<div ng-messages="partnerForm.address.$error"
ng-if="partnerForm.address.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 200
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.suburb.$invalid && partnerForm.suburb.$dirty}">
<label class="control-label col-sm-4" for="suburb-input">*
Suburb</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.suburb"
name="suburb"
id="suburb-input" maxlength="50" required>
<div ng-messages="partnerForm.suburb.$error"
ng-if="partnerForm.suburb.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 50
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--</div>-->
<!--<select class="form-control" name="suburb" required ng-model="partner.suburb"-->
<!--id="suburb-input"-->
<!--ng-options="t2c.key as t2c.value for t2c in t2city_map">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.suburb.$error" ng-if="partnerForm.suburb.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.postcode.$invalid && partnerForm.postcode.$dirty}">
<label class="control-label col-sm-4" for="postcode-input">*
PostCode</label>
<div class="col-sm-8">
<input class="form-control" ng-model="partner.postcode"
name="postcode"
id="postcode-input" maxlength="10" required>
<div ng-messages="partnerForm.postcode.$error"
ng-if="partnerForm.postcode.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 10
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.state.$invalid && partnerForm.state.$dirty}">
<label class="control-label col-sm-4" for="state-input">*
State</label>
<div class="col-sm-8">
<!--<input class="form-control" ng-model="partner.state" name="state" id="state-input"-->
<!--maxlength="20">-->
<!--<div ng-messages="partnerForm.state.$error" ng-if="partnerForm.state.$dirty">-->
<!--<p class="small text-danger" ng-message="maxlength">Less Than 20-->
<!--Characters(including symbols and spaces)</p>-->
<!--</div>-->
<select class="form-control" name="state" required
ng-model="partner.state"
id="state-input"
ng-options="state.value as state.label for state in states">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.state.$error"
ng-if="partnerForm.state.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.country.$invalid && partnerForm.country.$dirty}">
<label class="control-label col-sm-4" for="country-input">*
Country</label>
<div class="col-sm-8">
<input class="form-control"
ng-init="partner.country=partner.country||'AUS'"
ng-model="partner.country" name="country"
id="country-input" maxlength="20" required
placeholder="AUS" readonly="readonly">
<div ng-messages="partnerForm.country.$error"
ng-if="partnerForm.country.$dirty">
<p class="small text-danger" ng-message="maxlength">Less
Than 20
Characters(including symbols and spaces)</p>
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
<!--选择框-->
<!--<select class="form-control" name="country" required ng-model="partner.country"-->
<!--id="country-input"-->
<!--ng-options="country.value as country.label for country in countries">-->
<!--<option value="">Please Choose</option>-->
<!--</select>-->
<!--<div ng-messages="partnerForm.country.$error" ng-if="partnerForm.country.$dirty">-->
<!--<p class="small text-danger" ng-message="required">Required Field</p>-->
<!--</div>-->
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2"
for="tz-select">TimeZone</label>
<div class="col-sm-9">
<select class="form-control" name="timezone"
ng-model="partner.timezone"
id="tz-select"
ng-options="tz.key as tz.detail for tz in timezones">
</select>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" style="font-size: larger">Location
<span id="editmap" hidden>true</span>
<span id="add_view" hidden>true</span>
</div>
<div class="form-group">
<div class="embed-responsive" style="height: 300px;">
<iframe id="merchant_detail" name="merchant_detail" class="embed-responsive-item"
src="one_locations.html"></iframe>
</div>
</div>
</div>
<!--<div class="panel panel-info">
<div class="panel-heading">Alipay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group col-sm-6"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-4"
for="alipay_category">*Category</label>
<div class="col-sm-8" >
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipay_category"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#62b900">wechat Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#d82d2d">JD Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustry.$error"
ng-if="partnerForm.jdindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" style="background:#f06010;color: #f6f6f6;">RoyalPay Parameters</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpayindustry.$invalid && partnerForm.royalpayindustry.$dirty}">
<label class="control-label col-sm-2" for="royalpayindustry-input">
*Industry</label>
<div class="col-sm-8">
<select class="form-control" name="royalpayindustry"
ng-model="partner.royalpayindustry"
id="royalpayindustry-input" required
ng-options="industry.value as industry.label for industry in royalpayindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.royalpayindustry.$error"
ng-if="partnerForm.royalpayindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
</div>
</div>-->
<div class="panel panel-default">
<div class="panel-heading" style="color: #333;background-color: #f5f5f5;border-color: #ddd;">
Industry
</div>
<div class="panel-body form-horizontal">
<div class="form-group"
ng-class="{'has-error':partnerForm.royalpay_label.$invalid && partnerForm.royalpay_label.$dirty}">
<label class="control-label col-sm-2"
for="royalpayindustry">*RoyalPay Industry</label>
<div class="col-sm-8">
<input class="form-control" id="royalpayindustry" required
name="royalpayindustry" readonly
ng-model="partner.royalpayindustry|partner_royalpay_industry"
multi-level-select-popup="royalpayindustry"
on-select="onRoyalPayIndustrySelect($selected)">
<div ng-messages="partnerForm.royalpay_label.$error"
ng-if="partnerForm.royalpay_label.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.jdindustry.$invalid && partnerForm.jdindustry.$dirty}">
<label class="control-label col-sm-2" for="jdindustry-input">
*JDPay Industry</label>
<div class="col-sm-8">
<select class="form-control" name="jdindustry"
ng-model="partner.jdindustry"
id="jdindustry-input" required
ng-options="industry.value as industry.label for industry in jdindustry">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.jdindustryindustry.$error"
ng-if="partnerForm.jdindustryindustry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.industry.$invalid && partnerForm.industry.$dirty}">
<label class="control-label col-sm-2" for="industry-input">
*Wechat Industry</label>
<div class="col-sm-8">
<select class="form-control" name="industry"
ng-model="partner.industry"
id="industry-input" required
ng-options="industry.value as industry.label for industry in industries">
<option value="">Please Choose</option>
</select>
<div ng-messages="partnerForm.industry.$error"
ng-if="partnerForm.industry.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group"
ng-class="{'has-error':partnerForm.alipay_category.$invalid && partnerForm.alipay_category.$dirty}">
<label class="control-label col-sm-2"
for="alipay_category">*Alipay Category</label>
<div class="col-sm-8">
<input class="form-control" id="alipay_category" required
name="alipay_category" readonly
ng-model="partner.alipayindustry|partner_alipay_industry"
multi-level-select-popup="alipayMccCategory"
on-select="onAlipayMccSelect($selected)">
<div ng-messages="partnerForm.alipay_category.$error"
ng-if="partnerForm.alipay_category.$dirty">
<p class="small text-danger" ng-message="required">Required
Field</p>
</div>
</div>
</div>
<div class="form-group" ng-if="('10'|withRole) || ('1'|withRole)">
<label class="control-label col-sm-2"
for="hf_category">HF Industry</label>
<div class="col-sm-8">
<input class="form-control" id="hf_category" required
name="hf_label" readonly
ng-model="partner.hfindustry|partner_hf_industry"
multi-level-select-popup="hfindustry"
on-select="onHfIndustrySelect($selected)">
</div>
</div>
</div>
</div>
</div> </div>
<div class="panel panel-default"> <div class="panel panel-default">

@ -433,9 +433,15 @@
</div> </div>
<div class="form-group" ng-if="paymentInfo.enable_cb_bankpay && paymentInfo.enable_cb_bankpay_link"> <div class="form-group" ng-if="paymentInfo.enable_cb_bankpay && paymentInfo.enable_cb_bankpay_link">
<label class="col-sm-2 control-label">CB Bank Pay QR Code</label> <label class="col-sm-2 control-label">CB Bank Pay QR Code</label>
<div class="col-sm-10">
<img ng-src="{{paymentInfo.cbBankPayQrcodeUrl}}" class="img-responsive" /> <img ng-src="{{paymentInfo.cbBankPayQrcodeUrl}}" class="img-responsive" />
<div> <div>
&nbsp;&nbsp;<span style="padding-left: 19.2%;font-size:9px;">仅支持微信客户端扫描</span> &nbsp;&nbsp;<span style="padding-left: 4.2%;font-size:9px;">仅支持微信客户端扫描</span>
</div>
<p>
<a ng-href="/sys/partners/{{partner.client_moniker}}/qrcode_board/CBBankAggregate"
download><i class="fa fa-download"></i> Download Aggregate QR Board Image (聚合支付水晶立牌:支持支付宝、微信、翼支付)</a>
</p>
</div> </div>
</div> </div>
</div> </div>

Loading…
Cancel
Save