261 lines
11 KiB
HTML
261 lines
11 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport"
|
||
content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||
<title>组合立减金</title>
|
||
<link rel="stylesheet" href="./combining.css">
|
||
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/vue.min.js?v=20210302151401"
|
||
type="text/javascript" charset="utf-8"></script>
|
||
<script type="text/javascript" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/axios.js?v=1367936144322">
|
||
</script>
|
||
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api2_0.js"></script>
|
||
</head>
|
||
|
||
<body>
|
||
<div id="app">
|
||
<img @click="backGoodsFn" v-if="backAble" class="backIcon"
|
||
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
|
||
|
||
<div class="prompt" :class="promptShow?'proactive':''">
|
||
{{prompt_text}}
|
||
</div>
|
||
|
||
<div class="mask" @touchmove.prevent @mousewheel.prevent v-show="message">
|
||
<div class="model">
|
||
<p class="m-title">温馨提示</p>
|
||
<p class="m-msg">{{message}}</p>
|
||
<button class="m-but" @click="copyFn" v-if="copyLink">复制</button>
|
||
<button class="m-but" @click="message = ''" v-else>知道了</button>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="content">
|
||
<div class="logo">
|
||
<img :src="goods.group_cover" alt="">
|
||
</div>
|
||
<div class="box">
|
||
<div class="box-top">
|
||
<p class="b-t-t">{{goods.title}}</p>
|
||
<p class="time">生效时间:{{goods.time_limit.effect_time.start_time}} ~
|
||
{{goods.time_limit.effect_time.end_time}}</p>
|
||
<p class="time" v-if="goods.time_limit.receive_time.start_time">
|
||
领取时间:{{goods.time_limit.receive_time.start_time}} ~
|
||
{{goods.time_limit.receive_time.end_time}}</p>
|
||
</div>
|
||
<div class="box-cotent" v-if="goods.channel==3||goods.channel==1&&goods.receive_mode==2">
|
||
<p class="b-c-t">
|
||
<img src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/common_title_sm.png"
|
||
alt="">
|
||
{{goods.channel==3?'云闪付账号':'支付宝账号'}}
|
||
<img src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/common_title_sm.png"
|
||
alt="">
|
||
</p>
|
||
<input type="text" onkeyup="this.value=this.value.replace(/\D/g,'')"
|
||
onKeypress="return(/[\d]/.test(String.fromCharCode(event.keyCode)))" maxlength="11"
|
||
placeholder="请输入账号" v-model="form.confirm">
|
||
<input type="text" onkeyup="this.value=this.value.replace(/\D/g,'')"
|
||
onKeypress="return(/[\d]/.test(String.fromCharCode(event.keyCode)))" maxlength="11"
|
||
placeholder="请再次输入账号" v-model="form.receive_account">
|
||
<p class="tips">{{goods.channel==3?'*温馨提示:单笔交易大于100.1元可减99.99元':'*您可在支付宝的个人信息中查看【支付宝账号】'}}</p>
|
||
<button class="but" @click="submit">立即领取</button>
|
||
</div>
|
||
<div class="flex-but" v-else>
|
||
<button class="but" @click="directSubmit">立即领取</button>
|
||
</div>
|
||
|
||
<div class="box-footer"
|
||
:style="{marginBottom:goods.channel==3||goods.channel==1&&goods.receive_mode==2?'0rem':'0.9rem'}">
|
||
<template v-if="!goods.group_image">
|
||
<p class="b-f-t">
|
||
<img src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/common_title_sm.png"
|
||
alt="">使用须知 <img
|
||
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/common_title_sm.png"
|
||
alt="">
|
||
</p>
|
||
<div class="b-f-i" v-html="goods.instruction">
|
||
</div>
|
||
</template>
|
||
<img :src="goods.group_image" alt="" class="group_image">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
|
||
<script>
|
||
const phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
|
||
const emailReg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
|
||
new Vue({
|
||
el: "#app",
|
||
data () {
|
||
return {
|
||
goods: JSON.parse(sessionStorage.getItem('goodsInfo')).entity,
|
||
backAble: (~~sessionStorage.getItem('goodsCount')) > 1,
|
||
token: localStorage.getItem('token'),
|
||
key: localStorage.getItem('key'),
|
||
promptShow: false,
|
||
popShow: false,
|
||
is: false,
|
||
cls: null,
|
||
prompt_text: '',
|
||
receive_time: '',
|
||
message: '',
|
||
loading: false,
|
||
copyLink: '',
|
||
form: {
|
||
confirm: null,
|
||
receive_account: null
|
||
}
|
||
};
|
||
},
|
||
|
||
mounted () {
|
||
document.title = localStorage.getItem('title');
|
||
},
|
||
|
||
methods: {
|
||
/* ******************************************** 官方领取 ******************************************** */
|
||
/* 直接领取 */
|
||
directSubmit () {
|
||
const data = {
|
||
key: this.key,
|
||
token: this.token,
|
||
code_batch_id: this.goods.code_batch_id,
|
||
receive_mode: 1
|
||
};
|
||
req.axiosPost("/key/couponGroupUsage", data)
|
||
.then((res) => {
|
||
if (res.code == 200) {
|
||
if (this.goods.channel == 1 && this.goods.receive_mode == 1) {
|
||
/* 支付宝官方领取 */
|
||
this.toLinkAlipay();
|
||
} else if (this.goods.channel == 2) {
|
||
/* 微信官方领取 */
|
||
window.location.replace(res.data.redirect_url);
|
||
}
|
||
} else {
|
||
this.axiosErrorFun(res.code, res.message);
|
||
}
|
||
})
|
||
.catch((err) => { this.loading = false; });
|
||
},
|
||
|
||
/* 支付宝官方领取H5跳转 */
|
||
toLinkAlipay () {
|
||
let self = this;
|
||
let banklink = encodeURIComponent(
|
||
window.location.origin +
|
||
`/combiningAlipay.html?codeBatchId=${this.goods.code_batch_id}&token=${this.token}`
|
||
);
|
||
let link = "http://openapi.1688sup.com/alipay/oauth?jump=" + banklink;
|
||
let ua = navigator.userAgent.toLowerCase(); //判断用户打开链接环境
|
||
if (isWx() ||
|
||
(ua.indexOf("android") > -1 &&
|
||
ua.indexOf("baiduboxapp") > -1) ||
|
||
ua.indexOf("windows") > -1) {
|
||
//复制链接地址,提醒去浏览器打开
|
||
this.message = '请点击下方[复制]按钮,复制链接到浏览器打开!';
|
||
this.copyLink = link;
|
||
} else {
|
||
//唤起支付宝
|
||
window.location.replace(link);
|
||
}
|
||
},
|
||
|
||
/* ******************************************** 账号领取 ******************************************** */
|
||
/* 立即领取 */
|
||
submit () {
|
||
const { confirm, receive_account } = this.form;
|
||
if (this.loading) return;
|
||
if (confirm !== receive_account) return this.tips('两次输入账号不一致');
|
||
/* 云闪付校验手机号 支付宝校验手机号/邮箱号 */
|
||
if ((phoneReg.test(receive_account) && this.goods.channel == 3 || this.goods.channel == 1 && (emailReg.test(receive_account) || phoneReg.test(receive_account)))) {
|
||
this.finalSubmit();
|
||
} else {
|
||
this.tips('请输入正确的账号');
|
||
}
|
||
},
|
||
|
||
/* 验证后 最终提交 */
|
||
finalSubmit () {
|
||
this.loading = true;
|
||
const self = this;
|
||
let data = {
|
||
key: this.key,
|
||
code_batch_id: this.goods.code_batch_id,
|
||
token: localStorage.getItem("token"),
|
||
account: this.form.receive_account,
|
||
receive_mode: 2
|
||
};
|
||
|
||
/* 领取立减金 */
|
||
req.axiosPost("/key/couponGroupUsage", data)
|
||
.then(({ code, message }) => {
|
||
if (code == 200) {
|
||
this.loading = false;
|
||
this.message = '领取成功';
|
||
} else {
|
||
this.axiosErrorFun(code, message);
|
||
}
|
||
})
|
||
.catch((err) => { this.loading = false; });
|
||
},
|
||
|
||
/* 返回 */
|
||
backGoodsFn () {
|
||
if (this.backAble) {
|
||
window.location.replace('./homepage.html');
|
||
} else {
|
||
history.go(-2);
|
||
}
|
||
},
|
||
|
||
/* 接口异常处理 */
|
||
axiosErrorFun (code, message) {
|
||
this.loading = false;
|
||
if (code == 403) {
|
||
if (this.backAble) {
|
||
this.message = message;
|
||
setTimeout(() => {
|
||
window.location.href = localStorage.getItem('entryLink');
|
||
}, 3000);
|
||
} else {
|
||
this.message = message;
|
||
}
|
||
} else {
|
||
this.message = message;
|
||
}
|
||
},
|
||
|
||
//复制文本
|
||
copyFn () {
|
||
var textArea = document.createElement("textarea");
|
||
textArea.value = this.copyLink;
|
||
document.body.appendChild(textArea);
|
||
textArea.select();
|
||
document.execCommand("copy");
|
||
this.openDialog("复制成功,请到浏览器打开");
|
||
document.body.removeChild(textArea);
|
||
this.copyshow = false;
|
||
this.maskshow = false;
|
||
this.copyLink = null;
|
||
this.message = '';
|
||
},
|
||
|
||
/* 触发提示 */
|
||
tips (text) {
|
||
this.cls && clearTimeout(this.cls);
|
||
this.prompt_text = text;
|
||
this.promptShow = true;
|
||
this.cls = setTimeout(() => {
|
||
this.promptShow = false;
|
||
}, 3000);
|
||
},
|
||
}
|
||
})
|
||
</script>
|
||
|
||
</html> |