From 4c63525525e2b1940b78b7c4a8af587e075072ae Mon Sep 17 00:00:00 2001
From: yfx <1249361928@.com>
Date: Fri, 13 Mar 2026 14:41:59 +0800
Subject: [PATCH] Ui
---
pages/quanyi/add.vue | 757 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 369 insertions(+), 388 deletions(-)
diff --git a/pages/quanyi/add.vue b/pages/quanyi/add.vue
index f101df3..9924a78 100644
--- a/pages/quanyi/add.vue
+++ b/pages/quanyi/add.vue
@@ -95,8 +95,8 @@
uni.request({
url: _this.$webHost+'/api/v2/customer/getCstAddress',
data:{
- customerId: uni.getStorageSync('ygxLogin').customerId,
- sourceId: uni.getStorageSync('ygxLogin').appId
+ customerId: uni.getStorageSync('qxgLogin').customerId,
+ sourceId: uni.getStorageSync('qxgLogin').appId
},
success: function (res) {
_this.addressDetail = res.data.data;
@@ -105,7 +105,7 @@
uni.request({
- url: _this.$webHost+'/api/v2/xinheyuan/bank/list/fake/'+uni.getStorageSync('ygxLogin').customerId,
+ url: _this.$webHost+'/api/v2/xinheyuan/bank/list/fake/'+uni.getStorageSync('qxgLogin').customerId,
success(res){
console.log(res.data.data);
this.bankList = res.data.data;
@@ -116,7 +116,7 @@
uni.setStorageSync('windowHeight',uni.getSystemInfoSync().windowHeight)
uni.request({
- url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`,
+ url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`,
method:'get',
success:function(res){
const dy = res.data.data[0];
@@ -162,7 +162,7 @@
uni.request({
- url: _this.$webHost+'/api/v2/sign/signed/'+uni.getStorageSync('ygxLogin').customerId,
+ url: _this.$webHost+'/api/v2/sign/signed/'+uni.getStorageSync('qxgLogin').customerId,
method:'POST',
})
@@ -170,7 +170,7 @@
url: _this.$webHost+'/api/v2/pay/memberPurchaseBenefitsPays',
method:'POST',
data:{
- customerId: uni.getStorageSync('ygxLogin').customerId,
+ customerId: uni.getStorageSync('qxgLogin').customerId,
memberPeriodConfigId: uni.getStorageSync('memberPeriodConfigInfo').id
},
success(){
@@ -285,7 +285,7 @@
uni.request({
- url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`,
+ url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`,
method:'get',
success:function(res){
_this.getPayBindCardInfo = res.data.data;
@@ -299,7 +299,7 @@
data:{
..._this.bindCardId,
- "customerId": uni.getStorageSync('ygxLogin').customerId,
+ "customerId": uni.getStorageSync('qxgLogin').customerId,
"cardPhone" : _this.cardPhone, //手机号
"cardNumber": _this.cardNumber, //卡号
@@ -313,13 +313,12 @@
},
success(e){
if(e.data.code!==200){
-
- uni.showTips({
+ _this.$util.Tips({
title: e.data.data
});
}
uni.request({
- url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`,
+ url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`,
method:'get',
success:function(res){
const ls = res.data.data;
@@ -328,13 +327,13 @@
- if(ls.length && !ls[1].bindStatus){
+ if(ls.length>1 && !ls[1].bindStatus){
_this.$refs.codeUi.open()
_this.isCounting = false;
_this.countText = '';
return;
}
- if(ls.length && !ls[2].bindStatus){
+ if(ls.length>2 && !ls[2].bindStatus){
_this.$refs.setUi.open();
_this.isCounting = false;
_this.countText = '';
@@ -343,8 +342,6 @@
if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;}
-
- _this.kk()
@@ -356,426 +353,410 @@
},
- getSmsCode(){
- const that = this;
- console.log(that.getPayBindCardInfo[0].paymentMethod);
- if(this.isCounting){
+ getSmsCode(){
+ const that = this;
+ console.log(that.getPayBindCardInfo[0].paymentMethod);
+ if(this.isCounting){
+ return
+ }
+ if(that.getPayBindCardInfo[0].bindStatus){
+ if(!that.getPayBindCardInfo[1].bindStatus){
+ that.$refs.codeUi.open();
return
}
- if(that.getPayBindCardInfo[0].bindStatus){
- if(!that.getPayBindCardInfo[1].bindStatus){
- that.$refs.codeUi.open();
- return
- }
- if(!that.getPayBindCardInfo[2].bindStatus){
- that.$refs.setUi.open();
- }
- return
+ if(!that.getPayBindCardInfo[2].bindStatus){
+ that.$refs.setUi.open();
}
+ return
+ }
- if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.cardPhone)) return uni.showToast({title: '请输入正确的手机号码', icon: 'none'});
+ if (!/^1(3|4|5|7|8|9|6)\d{9}$/i.test(that.cardPhone)) return that.$util.Tips({
+ title: '请输入正确的手机号码'
+ });
- that.isCounting = true;
+ that.isCounting = true;
- uni.request({
- url: that.$webHost+'/api/v2/xinheyuan/bankcard/save',
- method:'POST',
- data:{
- "customerId": uni.getStorageSync('ygxLogin').customerId,
- "nameReal": that.cardName, // 名字
- "cardNo":that.cardNumber,
- "idCard": that.idCardNo,
+ uni.request({
+ url: that.$webHost+'/api/v2/xinheyuan/bankcard/save',
+ method:'POST',
+ data:{
+ "customerId": uni.getStorageSync('qxgLogin').customerId,
+ "nameReal": that.cardName, // 名字
+ "cardNo":that.cardNumber,
+ "idCard": that.idCardNo,
- "bankPhoneNo":that.cardPhone,
- "bankCode": that.bankCode,
- "bankName": that.bankName,
- "phone": that.cardPhone, //手机号
- "paymentMethod": that.getPayBindCardInfo[0].paymentMethod ,
+ "bankPhoneNo":that.cardPhone,
+ "bankCode": that.bankCode,
+ "bankName": that.bankName,
+ "phone": that.cardPhone, //手机号
+ "paymentMethod": that.getPayBindCardInfo[0].paymentMethod ,
- "preBindType": "prebc",
- "bankId": "1",
+ "preBindType": "prebc",
+ "bankId": "1",
- },
- success(){
- uni.request({
- url: that.$webHost+'/api/v2/pay/bindCardToCodes',
- method:'POST',
- data:{
- "customerId": uni.getStorageSync('ygxLogin').customerId,
- "cardName": that.cardName, // 名字
- "cardIdNo": that.idCardNo,
+ },
+ success(){
+ uni.request({
+ url: that.$webHost+'/api/v2/pay/bindCardToCodes',
+ method:'POST',
+ data:{
+ "customerId": uni.getStorageSync('qxgLogin').customerId,
+ "cardName": that.cardName, // 名字
+ "cardIdNo": that.idCardNo,
- "cardNumber":that.cardNumber,
- "bankPhoneNo":that.cardPhone,
- "bankCode": that.bankCode,
- "bankName": that.bankName,
- "cardPhone": that.cardPhone, //手机号
- "paymentMethod": that.getPayBindCardInfo[0].paymentMethod ,
+ "cardNumber":that.cardNumber,
+ "bankPhoneNo":that.cardPhone,
+ "bankCode": that.bankCode,
+ "bankName": that.bankName,
+ "cardPhone": that.cardPhone, //手机号
+ "paymentMethod": that.getPayBindCardInfo[0].paymentMethod ,
- "preBindType": "prebc",
- "bankId": "1",
+ "preBindType": "prebc",
+ "bankId": "1",
- },
- success(res){
- if(res.data.code === 401){
- that.getUserInfo()
- return;
- }
-
- if(res.data.code !==200){
- uni.showToast({
- title: res.data.data,
- icon: 'none'
- })
- return;
- }
-
- if(res.data.code === 200){
- that.bindCardId = res.data.data;
- } else {
- that.isCounting = false;
- that.countText = '';
- uni.showToast({
- title: res.data.data,
- icon: 'none'
- });
-
- if(!that.getPayBindCardInfo[0].bindStatus){
-
- return;
- }
-
-
- if(!that.getPayBindCardInfo[1].bindStatus){
- that.$refs.codeUi.open()
- that.isCounting = false;
- that.countText = '';
- return
- } if(!that.getPayBindCardInfo[2].bindStatus){
- that.isCounting = false;
- that.countText = '';
- that.$refs.setUi.open()
- return
- }
- }
-
+ },
+ success(res){
+ if(res.data.code === 401){
+ that.getUserInfo()
+ return;
}
- })
- let count = 60;
- that.countText = `${count}s秒后重新获取`;
+ if(res.data.code !==200){
+ uni.showToast({
+ title: res.data.data,
+ icon: 'none'
+ })
+ return;
+ }
-
- const timer = setInterval(() => {
- count--;
- that.countText = `${count}s秒后重新获取`;
- if (count <= 0) {
- clearInterval(timer);
+ if(res.data.code === 200){
+ that.bindCardId = res.data.data;
+ } else {
that.isCounting = false;
that.countText = '';
- }
- },1000)
- },
- fail(err){
- that.isCounting = false;
- that.countText = '';
- uni.showToast({
- title: err,
- icon: 'none'
- })
- }
- })
+ uni.showToast({
+ title: res.data.data,
+ icon: 'none'
+ });
+ if(!that.getPayBindCardInfo[0].bindStatus){
-
-
-
-
-
-
-
-
- },
-// 二次获取
- getCode(){
- if (this.isCounting_A) {
- return;
- }
- const paymentMethod = this.getPayBindCardInfo[1]['paymentMethod'];
- const _this = this;
- const pro = uni.getStorageSync('ygxLogin')
- pro['userName'] = _this.cardName;
- uni.request({
- url: _this.$webHost+'/api/v2/pay/bindCardToCodes',
- method:'POST',
- data:{
- cardIdNo: _this.idCardNo,
- customerId: pro.customerId,
- cardName: _this.cardName,
- cardNo: _this.cardIdNo,
- cardPhone: _this.cardPhone,
- cardNumber: _this.cardNumber,
- bankName: _this.bankName,
- preBindType: "prebc",
- paymentMethod:paymentMethod,
- againType : true
- },
- success(dt){
- if(dt.data.code === 401){
- _this.getUserInfo()
- return;
- }
- const res = dt.data.data;
- if(!res){
- return;
- }
- _this.callbackData = res;
- _this.bindCardId = res;
- uni.showToast({
- title: "验证码已发送",
- icon: "none",
- });
- // 设置倒计时功能
- let count = 60;
-
- const timer = setInterval(() => {
- count--;
- if (count <= 0) {
- clearInterval(timer);
- _this.$set(_this, "isCounting_A", false);
- } else {
- _this.$set(_this, "isCounting_A", true);
- _this.$set(_this, "countText_A", `${count}秒后重新获取`);
- }
- }, 1000);
- }
- })
- },
-
- submitPlan(){
-
- const _this = this;
-
- if (!this.verificationCodeT) {
- uni.showToast({
- title: "请输入验证码",
- icon: "none",
- });
- return;
- }
-
- const callbackData = _this.callbackData;
- const paymentMethod = _this.getPayBindCardInfo[1]['paymentMethod'];
-
-
- uni.request({
- url: _this.$webHost+'/api/v2/pay/verifySMSCodes',
- method:'POST',
- data:{
- ...callbackData,
-
- "customerId": uni.getStorageSync('ygxLogin').customerId,
- "cardPhone" : _this.cardPhone, //手机号
-
- "cardNumber": _this.cardNumber, //卡号
- paymentMethod:paymentMethod,
- "cardName" : _this.cardName, // 名字
- "cardIdNo" : _this.cardIdNo,
- "bankName" : _this.bankName,
- "cardNo" : _this.cardNumber,
-
- "verificationCode": _this.verificationCodeT,
- },
- success(dts){
- if(dts.data.code!==200){
-
- uni.showTips({
- title: dts.data.data
- });
- return
- }
-
- uni.request({
- url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`,
- method:'get',
- success:function(res){
- const ls = res.data.data;
- _this.getPayBindCardInfo = res.data.data;
- if(ls.length>2 && !ls[2].bindStatus){
- _this.isCounting_A = false;
- _this.countText_A = '';
- _this.$refs.codeUi.close()
- _this.$refs.setUi.open()
+ return;
}
- if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;}
-
-
-
-
+ if(!that.getPayBindCardInfo[1].bindStatus){
+ that.$refs.codeUi.open()
+ that.isCounting = false;
+ that.countText = '';
+ return
+ } if(!that.getPayBindCardInfo[2].bindStatus){
+ that.isCounting = false;
+ that.countText = '';
+ that.$refs.setUi.open()
+ return
+ }
}
- })
- }
- })
-
- },
-// 三次
- getCode_san(){
- if (this.isCounting_B) {
- return;
- }
- const paymentMethod = this.getPayBindCardInfo[2]['paymentMethod'];
- const _this = this;
- const pro = uni.getStorageSync('ygxLogin')
- pro['userName'] = _this.cardName;
- uni.request({
- url: _this.$webHost+'/api/v2/pay/bindCardToCodes',
- method:'POST',
- data:{
- cardIdNo: _this.idCardNo,
- customerId: pro.customerId,
- cardName: _this.cardName,
- cardNo: _this.cardIdNo,
- cardPhone: _this.cardPhone,
- cardNumber: _this.cardNumber,
- bankName: _this.bankName,
- preBindType: "prebc",
- paymentMethod:paymentMethod,
- againType : true
- },
- success(dt){
- if(dt.data.code ==401){
- _this.getUserInfo()
- return;
}
+ })
- if(dt.data.code !==200){
- uni.showToast({
- title: dt.data.data,
- icon: 'none'
- })
- return;
+ let count = 60;
+ that.countText = `${count}s秒后重新获取`;
+
+
+ const timer = setInterval(() => {
+ count--;
+ that.countText = `${count}s秒后重新获取`;
+ if (count <= 0) {
+ clearInterval(timer);
+ that.isCounting = false;
+ that.countText = '';
}
-
- const res = dt.data.data;
- if(!res){
- return;
- }
- _this.callbackData = res;
- _this.bindCardId = res;
- uni.showToast({
- title: "验证码已发送",
- icon: "none",
- });
- // 设置倒计时功能
- let count = 60;
-
- const timer = setInterval(() => {
- count--;
- if (count <= 0) {
- clearInterval(timer);
- _this.$set(_this, "isCounting_B", false);
- } else {
- _this.$set(_this, "isCounting_B", true);
- _this.$set(_this, "countText_B", `${count}秒后重新获取`);
- }
- }, 1000);
- }
- })
- },
- submitPlan_san(){
-
- const _this = this;
-
-
- if (!this.verificationCodeS) {
+ },1000)
+ },
+ fail(err){
+ that.isCounting = false;
+ that.countText = '';
uni.showToast({
- title: "请输入验证码",
+ title: err,
+ icon: 'none'
+ })
+ }
+ })
+
+
+
+
+
+
+
+
+
+
+ },
+// 二次获取
+ getCode(){
+ if (this.isCounting_A) {
+ return;
+ }
+ const paymentMethod = this.getPayBindCardInfo[1]['paymentMethod'];
+ const _this = this;
+ const pro = uni.getStorageSync('qxgLogin')
+ pro['userName'] = _this.cardName;
+ uni.request({
+ url: _this.$webHost+'/api/v2/pay/bindCardToCodes',
+ method:'POST',
+ data:{
+ cardIdNo: _this.idCardNo,
+ customerId: pro.customerId,
+ cardName: _this.cardName,
+ cardNo: _this.cardIdNo,
+ cardPhone: _this.cardPhone,
+ cardNumber: _this.cardNumber,
+ bankName: _this.bankName,
+ preBindType: "prebc",
+ paymentMethod:paymentMethod,
+ againType : true
+ },
+ success(dt){
+ if(dt.data.code === 401){
+ _this.getUserInfo()
+ return;
+ }
+ const res = dt.data.data;
+ if(!res){
+ return;
+ }
+ _this.callbackData = res;
+ _this.bindCardId = res;
+ uni.showToast({
+ title: "验证码已发送",
icon: "none",
});
- return;
+ // 设置倒计时功能
+ let count = 60;
+
+ const timer = setInterval(() => {
+ count--;
+ if (count <= 0) {
+ clearInterval(timer);
+ _this.$set(_this, "isCounting_A", false);
+ } else {
+ _this.$set(_this, "isCounting_A", true);
+ _this.$set(_this, "countText_A", `${count}秒后重新获取`);
+ }
+ }, 1000);
}
+ })
+ },
- const callbackData = _this.callbackData;
- const paymentMethod = _this.getPayBindCardInfo[2]['paymentMethod'];
+ submitPlan(){
+
+ const _this = this;
+
+ if (!this.verificationCodeT) {
+ uni.showToast({
+ title: "请输入验证码",
+ icon: "none",
+ });
+ return;
+ }
+
+ const callbackData = _this.callbackData;
+ const paymentMethod = _this.getPayBindCardInfo[1]['paymentMethod'];
- uni.request({
- url: _this.$webHost+'/api/v2/pay/verifySMSCodes',
- method:'POST',
- data:{
- ...callbackData,
+ uni.request({
+ url: _this.$webHost+'/api/v2/pay/verifySMSCodes',
+ method:'POST',
+ data:{
+ ...callbackData,
- "customerId": uni.getStorageSync('ygxLogin').customerId,
- "cardPhone" : _this.cardPhone, //手机号
+ "customerId": uni.getStorageSync('qxgLogin').customerId,
+ "cardPhone" : _this.cardPhone, //手机号
- "cardNumber": _this.cardNumber, //卡号
- paymentMethod:paymentMethod,
- "cardName" : _this.cardName, // 名字
- "cardIdNo" : _this.cardIdNo,
- "bankName" : _this.bankName,
- "cardNo" : _this.cardNumber,
+ "cardNumber": _this.cardNumber, //卡号
+ paymentMethod:paymentMethod,
+ "cardName" : _this.cardName, // 名字
+ "cardIdNo" : _this.cardIdNo,
+ "bankName" : _this.bankName,
+ "cardNo" : _this.cardNumber,
- "verificationCode": _this.verificationCodeS,
- },
- success(dts){
- if(dts.data.code!==200){
- uni.showTitle({
- title: dts.data.data
- });
+ "verificationCode": _this.verificationCodeT,
+ },
+ success(dts){
+ if(dts.data.code!==200){
+ return
+ }
+
+ uni.request({
+ url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`,
+ method:'get',
+ success:function(res){
+ const ls = res.data.data;
+ _this.getPayBindCardInfo = res.data.data;
+ if(ls.length>2 && !ls[2].bindStatus){
+ _this.isCounting_A = false;
+ _this.countText_A = '';
+ _this.$refs.codeUi.close()
+ _this.$refs.setUi.open()
+ return;
+ }
+
+ if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;}
}
- uni.request({
- url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('ygxLogin').customerId}`,
- method:'get',
- success:function(res){
- const ls = res.data.data;
- _this.getPayBindCardInfo = res.data.data;
- _this.isCounting_B = false;
- _this.countText_B = '';
- _this.$refs.setUi.close()
- _this.$refs.codeUi.close()
- if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;}
+ })
+ }
+ })
-
- }
-
- })
- }
- })
-
- },
-
-
-
- getUserInfo() {
-
- const data = uni.getStorageSync('LOGING_DATA')
- console.log(data);
- this.$store.commit("LOGIN", {
- 'token': data.token
- });
- this.$store.commit('UPDATE_USERINFO', {
- avatar: data.avatar,
- nickname: data.nickname,
- phone: data.phone
- });
- this.$store.commit("SETUID", data.id)
-
- uni.reLaunch({
- url: '/pages/index/index'
- });
- },
},
- onUnload() {
+// 三次
+ getCode_san(){
+ if (this.isCounting_B) {
+ return;
+ }
+ const paymentMethod = this.getPayBindCardInfo[2]['paymentMethod'];
+ const _this = this;
+ const pro = uni.getStorageSync('qxgLogin')
+ pro['userName'] = _this.cardName;
+ uni.request({
+ url: _this.$webHost+'/api/v2/pay/bindCardToCodes',
+ method:'POST',
+ data:{
+ cardIdNo: _this.idCardNo,
+ customerId: pro.customerId,
+ cardName: _this.cardName,
+ cardNo: _this.cardIdNo,
+ cardPhone: _this.cardPhone,
+ cardNumber: _this.cardNumber,
+ bankName: _this.bankName,
+ preBindType: "prebc",
+ paymentMethod:paymentMethod,
+ againType : true
+ },
+ success(dt){
+ if(dt.data.code ==401){
+ _this.getUserInfo()
+ return;
+ }
+
+ if(dt.data.code !==200){
+ uni.showToast({
+ title: dt.data.data,
+ icon: 'none'
+ })
+ return;
+ }
+
+ const res = dt.data.data;
+ if(!res){
+ return;
+ }
+ _this.callbackData = res;
+ _this.bindCardId = res;
+ uni.showToast({
+ title: "验证码已发送",
+ icon: "none",
+ });
+ // 设置倒计时功能
+ let count = 60;
+
+ const timer = setInterval(() => {
+ count--;
+ if (count <= 0) {
+ clearInterval(timer);
+ _this.$set(_this, "isCounting_B", false);
+ } else {
+ _this.$set(_this, "isCounting_B", true);
+ _this.$set(_this, "countText_B", `${count}秒后重新获取`);
+ }
+ }, 1000);
+ }
+ })
+ },
+ submitPlan_san(){
+
+ const _this = this;
+
+
+ if (!this.verificationCodeS) {
+ uni.showToast({
+ title: "请输入验证码",
+ icon: "none",
+ });
+ return;
+ }
+
+ const callbackData = _this.callbackData;
+ const paymentMethod = _this.getPayBindCardInfo[2]['paymentMethod'];
+
+
+ uni.request({
+ url: _this.$webHost+'/api/v2/pay/verifySMSCodes',
+ method:'POST',
+ data:{
+ ...callbackData,
+
+ "customerId": uni.getStorageSync('qxgLogin').customerId,
+ "cardPhone" : _this.cardPhone, //手机号
+
+ "cardNumber": _this.cardNumber, //卡号
+ paymentMethod:paymentMethod,
+ "cardName" : _this.cardName, // 名字
+ "cardIdNo" : _this.cardIdNo,
+ "bankName" : _this.bankName,
+ "cardNo" : _this.cardNumber,
+
+ "verificationCode": _this.verificationCodeS,
+ },
+ success(dts){
+ if(dts.data.code!==200){
+ _this.showToast({
+ title: dts.data.data
+ });
+ }
+
+ uni.request({
+ url:_this.$webHost+`/api/v2/pay/getPayBindCardInfo/${uni.getStorageSync('qxgLogin').customerId}`,
+ method:'get',
+ success:function(res){
+ const ls = res.data.data;
+ _this.getPayBindCardInfo = res.data.data;
+ _this.isCounting_B = false;
+ _this.countText_B = '';
+ _this.$refs.setUi.close()
+ _this.$refs.codeUi.close()
+ if(!ls || !ls.some(item => item.bindStatus == 0)) {_this.kk();return;}
+
+
+ }
+
+ })
+ }
+ })
+
+ },
+
+
+
+ getUserInfo() {
+
+
+
+ uni.reLaunch({
+ url: '/pages/index/index'
+ });
+ },
+ },
+ onUnload() {
clearInterval(this.interval);
},
}
--
Gitblit v1.9.3