Commit aae0124a authored by leiqingsong's avatar leiqingsong

Merge branch 'dev_lqs' into 'master'

Dev lqs

See merge request !11
parents d693210f b122638b
//notation: js file can only use this kind of comments
//since comments will cause error when use in webview.loadurl,
//comments will be remove by java use regexp
(function() {
if (window.WebViewJavascriptBridge) {
return;
}
var receiveMessageQueue = [];
var messageHandlers = {};
var responseCallbacks = {};
var uniqueId = 1;
//set default messageHandler 初始化默认的消息线程
function init(messageHandler) {
if (WebViewJavascriptBridge._messageHandler) {
throw new Error('WebViewJavascriptBridge.init called twice');
}
WebViewJavascriptBridge._messageHandler = messageHandler;
var receivedMessages = receiveMessageQueue;
receiveMessageQueue = null;
for (var i = 0; i < receivedMessages.length; i++) {
_dispatchMessageFromNative(receivedMessages[i]);
}
}
// 发送
function send(data, responseCallback) {
_doSend('send', data, responseCallback);
}
// 注册线程 往数组里面添加值
function registerHandler(handlerName, handler) {
messageHandlers[handlerName] = handler;
}
// 调用线程
function callHandler(handlerName, data, responseCallback) {
_doSend(handlerName, data, responseCallback);
}
//sendMessage add message, 触发native处理 sendMessage
function _doSend(handlerName, message, responseCallback) {
var callbackId;
if(typeof responseCallback === 'string'){
callbackId = responseCallback;
} else if (responseCallback) {
callbackId = 'cb_' + (uniqueId++) + '_' + new Date().getTime();
responseCallbacks[callbackId] = responseCallback;
}else{
callbackId = '';
}
try {
var fn = eval('window.android.' + handlerName);
} catch(e) {
console.log(e);
}
if (typeof fn === 'function'){
var responseData = fn.call(this, JSON.stringify(message), callbackId);
if(responseData){
console.log('response message: '+ responseData);
responseCallback = responseCallbacks[callbackId];
if (!responseCallback) {
return;
}
responseCallback(responseData);
delete responseCallbacks[callbackId];
}
}
}
//提供给native使用,
function _dispatchMessageFromNative(messageJSON) {
setTimeout(function() {
var message = JSON.parse(messageJSON);
var responseCallback;
//java call finished, now need to call js callback function
if (message.responseId) {
responseCallback = responseCallbacks[message.responseId];
if (!responseCallback) {
return;
}
responseCallback(message.responseData);
delete responseCallbacks[message.responseId];
} else {
//直接发送
if (message.callbackId) {
var callbackResponseId = message.callbackId;
responseCallback = function(responseData) {
_doSend('response', responseData, callbackResponseId);
};
}
var handler = WebViewJavascriptBridge._messageHandler;
if (message.handlerName) {
handler = messageHandlers[message.handlerName];
}
//查找指定handler
try {
handler(message.data, responseCallback);
} catch (exception) {
if (typeof console != 'undefined') {
console.log("WebViewJavascriptBridge: WARNING: javascript handler threw.", message, exception);
}
}
}
});
}
//提供给native调用,receiveMessageQueue 在会在页面加载完后赋值为null,所以
function _handleMessageFromNative(messageJSON) {
console.log('handle message: '+ messageJSON);
if (receiveMessageQueue) {
receiveMessageQueue.push(messageJSON);
}
_dispatchMessageFromNative(messageJSON);
}
var WebViewJavascriptBridge = window.WebViewJavascriptBridge = {
init: init,
send: send,
registerHandler: registerHandler,
callHandler: callHandler,
_handleMessageFromNative: _handleMessageFromNative
};
var doc = document;
var readyEvent = doc.createEvent('Events');
readyEvent.initEvent('WebViewJavascriptBridgeReady');
readyEvent.bridge = WebViewJavascriptBridge;
doc.dispatchEvent(readyEvent);
})();
...@@ -2,14 +2,14 @@ import request from "@/utils/request"; ...@@ -2,14 +2,14 @@ import request from "@/utils/request";
/** /**
* 获取用户钱包 * 获取用户钱包
* @param {*} params userId * @param {*} params userId
*/ */
export function getMoneyPackage(params) { export function getMoneyPackage(params) {
return request({ return request({
url: "/wallet/getMoneyPackage", url: "/wallet/getMoneyPackage",
method: "get", method: "get",
params params
}) });
} }
/** /**
...@@ -17,11 +17,11 @@ export function getMoneyPackage(params) { ...@@ -17,11 +17,11 @@ export function getMoneyPackage(params) {
* @param {*} params userId * @param {*} params userId
*/ */
export function getWithdrawalAmount(params) { export function getWithdrawalAmount(params) {
return request({ return request({
url: "getWithdrawalAmount", url: "getWithdrawalAmount",
method: "get", method: "get",
params params
}) });
} }
/** /**
...@@ -30,11 +30,11 @@ export function getWithdrawalAmount(params) { ...@@ -30,11 +30,11 @@ export function getWithdrawalAmount(params) {
* @param {*}yearMonth yyyy-MM-dd * @param {*}yearMonth yyyy-MM-dd
*/ */
export function getWithdrawalRecord(params) { export function getWithdrawalRecord(params) {
return request({ return request({
url: "/wallet/getWithdrawalRecord", url: "/wallet/getWithdrawalRecord",
method: "get", method: "get",
params params
}) });
} }
/** /**
...@@ -42,11 +42,11 @@ export function getWithdrawalRecord(params) { ...@@ -42,11 +42,11 @@ export function getWithdrawalRecord(params) {
* @param {*} params userId * @param {*} params userId
*/ */
export function queryIncomeDetail(params) { export function queryIncomeDetail(params) {
return request({ return request({
url: "/wallet/queryIncomeDetail", url: "/wallet/queryIncomeDetail",
method: "get", method: "get",
params params
}) });
} }
/** /**
...@@ -55,9 +55,9 @@ export function queryIncomeDetail(params) { ...@@ -55,9 +55,9 @@ export function queryIncomeDetail(params) {
*/ */
export function showIncomeRecord(params) { export function showIncomeRecord(params) {
return request({ return request({
url: "/wallet/showIncomeRecord", url: "/wallet/showIncomeRecord",
method: "get", method: "get",
params params
}) });
} }
var u = navigator.userAgent; var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android终端 var isAndroid = u.indexOf("Android") > -1 || u.indexOf("Adr") > -1; //android终端
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
// 注册jsbridge // 注册jsbridge
function connectWebViewJavascriptBridge(callback) { function connectWebViewJavascriptBridge(callback) {
if (isAndroid) { if (isAndroid) {
if (window.WebViewJavascriptBridge) { if (window.WebViewJavascriptBridge) {
callback(WebViewJavascriptBridge) callback(WebViewJavascriptBridge);
} else { } else {
document.addEventListener( document.addEventListener(
'WebViewJavascriptBridgeReady', "WebViewJavascriptBridgeReady",
function () { function() {
callback(WebViewJavascriptBridge) callback(WebViewJavascriptBridge);
}, },
false false
); );
} }
return; return;
} }
if (isiOS) { if (isiOS) {
if (window.WebViewJavascriptBridge) { if (window.WebViewJavascriptBridge) {
return callback(WebViewJavascriptBridge); return callback(WebViewJavascriptBridge);
} }
if (window.WVJBCallbacks) { if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback); return window.WVJBCallbacks.push(callback);
} }
window.WVJBCallbacks = [callback]; window.WVJBCallbacks = [callback];
var WVJBIframe = document.createElement('iframe'); var WVJBIframe = document.createElement("iframe");
WVJBIframe.style.display = 'none'; WVJBIframe.style.display = "none";
WVJBIframe.src = 'https://__bridge_loaded__'; WVJBIframe.src = "https://__bridge_loaded__";
document.documentElement.appendChild(WVJBIframe); document.documentElement.appendChild(WVJBIframe);
setTimeout(function () { setTimeout(function() {
document.documentElement.removeChild(WVJBIframe) document.documentElement.removeChild(WVJBIframe);
}, 0) }, 0);
} }
} }
// 调用注册方法 // 调用注册方法
connectWebViewJavascriptBridge(function (bridge) { connectWebViewJavascriptBridge(function(bridge) {
if (isAndroid) { if (isAndroid) {
bridge.init(function (message, responseCallback) { bridge.init(function(message, responseCallback) {
responseCallback(data); responseCallback(data);
}); });
} }
});
});
\ No newline at end of file
...@@ -4,14 +4,13 @@ import { Toast } from "vant"; ...@@ -4,14 +4,13 @@ import { Toast } from "vant";
let loading = null; let loading = null;
const service = axios.create({ const service = axios.create({
baseURL: "http://192.168.204.152:8997", baseURL: "http://8.131.244.76:8997",
timeout: 5000 timeout: 5000
}); });
service.interceptors.request.use( service.interceptors.request.use(
config => { config => {
config.headers["Authorization"] = config.headers["Authorization"] = "b6cd4e221fdc4e46a6825c236c912fa6";
"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJ7XCJpZFwiOjEsXCJpbnZpdGVDb2RlXCI6XCIxXCIsXCJwYXNzd29yZFwiOlwiMTIzXCIsXCJ1c2VySWRcIjpcIjFcIixcInVzZXJMZXZlbFwiOjR9IiwiaWF0IjoxNjE0MzI3OTY0fQ.f9RPBOMo0BMMbWPnQIhvfLe535as60dk_SZoXMYOT3bHYjoYST-mivTcKC-u4grEpYZMax9RgyuHXCYydZPzQw";
if (!config.loading) { if (!config.loading) {
loading = Toast.loading({ loading = Toast.loading({
forbidClick: true, forbidClick: true,
......
...@@ -10,17 +10,16 @@ ...@@ -10,17 +10,16 @@
<span class="nav-title">专属客服</span> <span class="nav-title">专属客服</span>
</div> </div>
<div class="panel-box"> <div class="panel-box">
<div class="panel-content"> <div class="panel-content">
<div class="title">客服二维码</div> <div class="title">客服二维码</div>
<img src="@/assets/images/logo.png" class="qrCode" alt=""> <img src="@/assets/images/logo.png" class="qrCode" alt="" />
<div class="save-code"> <div class="save-code">
<p>保存二维码</p> <p>保存二维码</p>
<p>打开微信扫一扫添加客服</p> <p>打开微信扫一扫添加客服</p>
</div>
<van-button>保存</van-button>
</div> </div>
<van-button>保存</van-button>
</div>
</div> </div>
</div> </div>
</template> </template>
...@@ -28,9 +27,7 @@ ...@@ -28,9 +27,7 @@
export default { export default {
name: "customerService", name: "customerService",
data() { data() {
return { return {};
};
}, },
methods: { methods: {
handleUrl(urlName) { handleUrl(urlName) {
...@@ -70,55 +67,52 @@ $white: #ffffff; ...@@ -70,55 +67,52 @@ $white: #ffffff;
font-size: 16px; font-size: 16px;
} }
} }
.panel-box{ .panel-box {
height: calc(100vh - 86px); height: calc(100vh - 86px);
padding: 0 15px; padding: 0 15px;
margin-top: 15px; margin-top: 15px;
.panel-content{ .panel-content {
width: 100%; width: 100%;
height: 100%; height: 100%;
background-color: #ffffff; background-color: #ffffff;
box-shadow: 0px 2px 12px 0px box-shadow: 0px 2px 12px 0px rgba(6, 0, 1, 0.04);
rgba(6, 0, 1, 0.04); border-radius: 4px;
border-radius: 4px; padding-top: 45px;
padding-top: 45px; box-sizing: border-box;
box-sizing: border-box; .title {
.title{ font-size: 18px;
font-size: 18px; font-weight: normal;
font-weight: normal; font-stretch: normal;
font-stretch: normal; line-height: 26px;
line-height: 26px; letter-spacing: 0px;
letter-spacing: 0px; color: #333333;
color: #333333; text-align: center;
text-align: center; }
} .qrCode {
.qrCode{ width: 128px;
width: 128px; height: 130px;
height: 130px; margin: 80px auto 30px;
margin: 80px auto 30px; display: block;
display: block; }
} .save-code {
.save-code{ font-size: 14px;
font-size: 14px; font-weight: normal;
font-weight: normal; font-stretch: normal;
font-stretch: normal; line-height: 16px;
line-height: 16px; letter-spacing: 0px;
letter-spacing: 0px; color: #999999;
color: #999999; }
} .van-button {
.van-button{ width: 160px;
width: 160px; height: 36px;
height: 36px; background-color: #88c678;
background-color: #88c678; border-radius: 4px;
border-radius: 4px; font-size: 18px;
font-size: 18px; color: #ffffff;
color: #ffffff; margin: 85px auto 0;
margin: 85px auto 0 ; display: block;
display: block; }
}
} }
} }
} }
</style> </style>
<template> <template>
<div class="register-container"> <div class="register-container">
<van-icon name="arrow-left" @click="$router.go(-1)" /> <van-icon name="arrow-left" @click="$router.go(-1)" />
<img src="@/assets/images/logo.png" class="logo-img" alt=""> <img src="@/assets/images/logo.png" class="logo-img" alt="" />
<div class="form-content"> <div class="form-content">
<van-cell-group> <van-cell-group>
<van-field <van-field
:value="value" :value="value"
placeholder="请输入用户名" placeholder="请输入用户名"
:border="hasBorder" :border="hasBorder"
bind:change="onChange" bind:change="onChange"
> >
<img class="icon-user" src="@/assets/images/icon-user.png" slot="left-icon" alt=""> <img
</van-field> class="icon-user"
<van-field src="@/assets/images/icon-user.png"
:value="value" slot="left-icon"
placeholder="请输入验证码" alt=""
:border="hasBorder" />
bind:change="onChange" </van-field>
> <van-field
<img class="icon-user" src="@/assets/images/icon-code.png" slot="left-icon" alt=""> :value="value"
<van-button slot="button" size="small" type="primary" class="verify-code">发送验证码</van-button> placeholder="请输入验证码"
</van-field> :border="hasBorder"
<van-field bind:change="onChange"
:value="value" >
placeholder="请输入推荐人邀请码(非必填)" <img
:border="hasBorder" class="icon-user"
bind:change="onChange" src="@/assets/images/icon-code.png"
> slot="left-icon"
<img class="icon-user" src="@/assets/images/icon-invite-code.png" slot="left-icon" alt=""> alt=""
</van-field> />
</van-cell-group> <van-button
<van-button class="btn-submit" @click="register">注册</van-button> slot="button"
size="small"
type="primary"
class="verify-code"
>发送验证码</van-button
>
</van-field>
<van-field
:value="value"
placeholder="请输入推荐人邀请码(非必填)"
:border="hasBorder"
bind:change="onChange"
>
<img
class="icon-user"
src="@/assets/images/icon-invite-code.png"
slot="left-icon"
alt=""
/>
</van-field>
</van-cell-group>
<van-button class="btn-submit" @click="register">注册</van-button>
</div> </div>
<van-overlay <van-overlay :show="show" class-name="registerEorr" @click="onClickHide">
:show="show" <div class="wrapper" @click.stop>
class-name="registerEorr" <div class="title">{{ title }}</div>
@click="onClickHide"> <div class="error-tip"></div>
<div class="wrapper" @click.stop> <div class="tip">{{ tip }}</div>
<div class="title">{{title}}</div> <van-button>确定</van-button>
<div class="error-tip"></div> </div>
<div class="tip">{{tip}}</div>
<van-button>确定</van-button>
</div>
</van-overlay> </van-overlay>
</div> </div>
</template> </template>
<script> <script>
export default { export default {
name:'register', name: "register",
data(){ data() {
return { return {
value:'', value: "",
hasBorder:false, hasBorder: false,
show: true, show: true,
title:'注册失败', title: "注册失败",
tip:'该推荐人邀请码不存在,请重新填写' tip: "该推荐人邀请码不存在,请重新填写"
} };
}, },
methods: { methods: {
register(){ register() {
// this.show = true // this.show = true
},
}, onClickHide() {
onClickHide(){ this.show = false;
this.show = false }
} }
} };
}
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.register-container{ .register-container {
height: 100vh; height: 100vh;
background-color: #ffffff; background-color: #ffffff;
padding: 54px 15px 0 15px; padding: 54px 15px 0 15px;
box-sizing: border-box; box-sizing: border-box;
overflow: hidden; overflow: hidden;
.van-icon-arrow-left{ .van-icon-arrow-left {
position: absolute; position: absolute;
left: 15px; left: 15px;
top: 9px; top: 9px;
// display: block; // display: block;
// font-size: 25px; // font-size: 25px;
// color: #333; // color: #333;
// margin: 13px 0 0 15px; // margin: 13px 0 0 15px;
}
.logo-img {
width: 102px;
height: 102px;
display: block;
margin: 0 auto 50px;
}
.form-content {
padding: 0 15px;
.van-field__left-icon {
display: flex;
align-items: center;
}
.van-cell-group::after {
display: none;
} }
.logo-img{ .van-cell {
width: 102px; background-color: #f9f9f9;
height: 102px; border-radius: 25px;
display: block; margin-bottom: 20px;
margin: 0 auto 50px;
} }
.form-content{ }
padding: 0 15px; .icon-user {
.van-field__left-icon{ width: 18px;
display: flex; height: 18px;
align-items: center; }
.icon-code {
width: 16px;
height: 18px;
}
.icon-code {
width: 17px;
height: 17px;
}
.btn-submit {
width: 100%;
height: 44px;
background-image: linear-gradient(72deg, #88c678 0%, #95e87f 100%),
linear-gradient(#999999, #999999);
background-blend-mode: normal, normal;
border-radius: 22px;
color: #ffffff;
font-size: 18px;
margin-top: 20px;
}
.verify-code {
background-color: transparent;
border: none;
color: #88c677;
}
.van-overlay.registerEorr {
.wrapper {
width: 315px;
height: 293px;
position: absolute;
background-color: #ffffff;
top: 50%;
left: 50%;
transform: translate(-50%, -60%);
padding: 30px 0;
text-align: center;
box-sizing: border-box;
border-radius: 4px;
.title {
font-size: 20px;
font-weight: normal;
font-stretch: normal;
line-height: 20px;
letter-spacing: 0px;
color: #333333;
}
.error-tip {
width: 72px;
height: 72px;
border: 6px solid #ff0000;
border-radius: 50%;
font-size: 48px;
font-weight: bold;
color: #ff0000;
margin: 25px auto;
position: relative;
&:before,
&:after {
content: "";
display: inline-block;
width: 6px;
height: 30px;
background-color: #ff0000;
border-radius: 4px;
transform-origin: center;
position: absolute;
left: 50%;
top: 50%;
} }
.van-cell-group::after{ &:before {
display: none; transform: translate(-50%, -50%) rotate(45deg);
} }
.van-cell{ &:after {
background-color: #f9f9f9; transform: translate(-50%, -50%) rotate(-45deg);
border-radius: 25px;
margin-bottom: 20px;
} }
} }
.icon-user{ .tip {
width: 18px; font-size: 14px;
height:18px; font-weight: normal;
} font-stretch: normal;
.icon-code{ line-height: 20px;
width: 16px; color: #999999;
height:18px; }
} .van-button {
.icon-code{ width: 160px;
width: 17px; height: 36px;
height:17px; background-color: #88c678;
} border-radius: 18px;
.btn-submit{
width: 100%;
height: 44px;
background-image: linear-gradient(72deg,
#88c678 0%,
#95e87f 100%),
linear-gradient(
#999999,
#999999);
background-blend-mode: normal,
normal;
border-radius: 22px;
color: #ffffff; color: #ffffff;
font-size: 18px; margin-top: 25px;
margin-top: 20px; }
}
.verify-code{
background-color: transparent;
border: none;
color: #88c677;
}
.van-overlay.registerEorr{
.wrapper{
width: 315px;
height: 293px;
position: absolute;
background-color: #ffffff;
top: 50%;
left: 50%;
transform: translate(-50%, -60%);
padding: 30px 0;
text-align: center;
box-sizing: border-box;
border-radius: 4px;
.title{
font-size: 20px;
font-weight: normal;
font-stretch: normal;
line-height: 20px;
letter-spacing: 0px;
color: #333333;
}
.error-tip{
width: 72px;
height: 72px;
border: 6px solid #ff0000;
border-radius: 50%;
font-size: 48px;
font-weight:bold;
color: #ff0000;
margin: 25px auto;
position: relative;
&:before,&:after{
content: "";
display: inline-block;
width: 6px;
height: 30px;
background-color: #ff0000;
border-radius: 4px;
transform-origin:center ;
position: absolute;
left: 50%;
top: 50%;
}
&:before{
transform:translate(-50%,-50%) rotate(45deg);
}
&:after{
transform:translate(-50%,-50%) rotate(-45deg);
}
}
.tip{
font-size: 14px;
font-weight: normal;
font-stretch: normal;
line-height: 20px;
color: #999999;
}
.van-button{
width: 160px;
height: 36px;
background-color: #88c678;
border-radius: 18px;
color: #ffffff;
margin-top: 25px;
}
}
} }
}
} }
</style> </style>
\ No newline at end of file
const name = "西田森App"; const name = "西田森App";
module.exports = { module.exports = {
publicPath: "/font",
css: { css: {
loaderOptions: { loaderOptions: {
postcss: { postcss: {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment