版本管理梳理

This commit is contained in:
red-deng-deng 2022-03-10 15:17:20 +08:00
parent 67969d5d1d
commit 9855984715
13 changed files with 2266 additions and 1265 deletions

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
api1_1_0.js
homepage1_1_0.css
.vscode/settings.json

View File

@ -1,37 +1,6 @@
### 3 分钟了解如何进入开发
test_1_1_0 白名单测试环境
V1_1_0 白名单正式环境(即将正式发版)
欢迎使用云效 Codeup通过阅读以下内容你可以快速熟悉 Codeup ,并立即开始今天的工作。
### 提交**文件**
首先,你需要了解在 Codeup 中如何提交代码文件,跟着文档「[__提交第一行代码__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e7546fd9001aee81fd)」一起操作试试看吧。
### 开启扫描
开发过程中为了更好的管理你的代码资产Codeup 内置了「[__代码规约扫描__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e8546fd9001aee821c)」和「[__敏感信息检测__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e8546fd9001aee821b)」服务,你可以在代码库设置-集成与服务中一键开启,开启后提交或合并请求的变更将自动触发扫描,并及时提供结果反馈。
![](https://img.alicdn.com/tfs/TB1nRDatoz1gK0jSZLeXXb9kVXa-1122-380.png "")
![](https://img.alicdn.com/tfs/TB1PrPatXY7gK0jSZKzXXaikpXa-1122-709.png "")
### 代码评审
功能开发完毕后,通常你需要发起「[__代码合并和评审__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e8546fd9001aee8216)」Codeup 支持多人协作的代码评审服务,你可以通过「[__保护分支__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e9546fd9001aee8221)」策略及「[__合并请求设置__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e9546fd9001aee8224)」对合并过程进行流程化管控,同时提供 WebIDE 在线代码评审及冲突解决能力,让你的评审过程更加流畅。
![](https://img.alicdn.com/tfs/TB1XHrctkP2gK0jSZPxXXacQpXa-1432-887.png "")
![](https://img.alicdn.com/tfs/TB1V3fctoY1gK0jSZFMXXaWcVXa-1432-600.png "")
### 编写文档
项目推进过程中,你的经验和感悟可以直接记录到 Codeup 代码库的「[__文档__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e8546fd9001aee8213)」内,让智慧可视化。
![](https://img.alicdn.com/tfs/TB1BN2ateT2gK0jSZFvXXXnFXXa-1432-700.png "")
### 成员协作
是时候邀请成员一起编写卓越的代码工程了,请点击右上角「成员」邀请你的小伙伴开始协作吧!
### 更多
Git 使用教学、高级功能指引等更多说明,参见[__Codeup帮助文档__](https://thoughts.aliyun.com/sharespace/5e8c37eb546fd9001aee8242/docs/5e8c37e6546fd9001aee81fa)。
index.html: 入口文件
homepage.html: 商品列表页面
exchange.html 兑换页面

414
V1_1_0/exchange.html Normal file
View File

@ -0,0 +1,414 @@
<!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,viewport-fit=cover">
<title>权益兑换页</title>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/vue.min.js?v=1367936144322" 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/siteqiexchange/js/swiper.min.js"></script>
<link href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/css/swiper.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1_0.js"></script>
<style>
* {
margin: 0 auto;
padding: 0;
font-family: HYQiHei;
}
html {
font-size: 26.66666667vw;
}
body {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
</style>
</head>
<body>
<div id="exchangePage">
<div v-if="!suspension">
<div class="about-good">
<span>
<img @click="backgoodsFn" v-if="backAble"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
</span>
<img :src="goodsShow[0]" alt="" v-if="goodsShow.length<=1">
<div class="swiper-container" v-else>
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(item,i) in goodsShow" :key="i">
<img :src="item" alt="">
</div>
</div>
<div class="swiper-pagination"></div>
</div>
</div>
<div class="ipt-acc" style="position: relative;z-index: 999;">
<p v-if="acctype=='tel'"><span>账号:</span><input :type="acctype"
onkeyup="this.value=this.value.replace(/\D/g,'')"
onKeypress="return(/[\d]/.test(String.fromCharCode(event.keyCode)))" :maxlength="maxlen" v-model="account"
:placeholder="placeholder" @focus="(e)=>focusFn(e)"></p>
<p v-if="acctype=='tel'"><span>再次输入:</span> <input :type="acctype"
onkeyup="this.value=this.value.replace(/\D/g,'')"
onKeypress="return(/[\d]/.test(String.fromCharCode(event.keyCode)))" :maxlength="maxlen" v-model="reaccount"
placeholder="请再次输入" @focus="(e)=>focusFn(e)"></p>
<p v-if="acctype!='tel'"><span>账号:</span> <input :type="acctype" :maxlength="maxlen" v-model="account"
:placeholder="placeholder" @focus="(e)=>focusFn(e)"></p>
<p v-if="acctype!='tel'"><span>再次输入:</span><input :type="acctype" :maxlength="maxlen" v-model="reaccount"
placeholder="请再次输入" @focus="(e)=>focusFn(e)"></p>
</div>
<div class="bottom" id="bottom" v-show="describe.type||detailUrl">
<img :src="detailUrl" v-show="detailUrl">
<img :src="describe.bg_image" v-show="describe.type==1&&describe.bg_image">
<div v-html="describe.content" class="goodsTip" v-show="describe.type==3&&describe.content"></div>
</div>
<button class="exchange-btn" :class="exchangeOpen?bgcolor:''"
:style="{'background': exchangeOpen?bgcolor:'#D7D7D7','color':exchangeOpen?ftcolor:'#333'}"
@click="exchangeGoodsFn">立即兑换</button>
</div>
<!-- 单条弹出框 -->
<div class="prompt" :class="promtshow?'proactive':''">
{{this.promttip}}
</div>
<!-- 弹出框 -->
<div class="mask" v-if="maskshow">
</div>
<!-- 悬浮提示 -->
<div v-if="suspension" class="suspensionDom">
<img @click="closeTip" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png"
alt="">
<h4>活动规则</h4>
<div v-html="describe.content">
</div>
</div>
<img class="susTip" @click="susTipFn" v-if="describe.type==2&&describe.content&&!suspension"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/acticeTextTip.png" alt="">
<!-- 弹出框 -->
<!-- 询问 -->
<div class="popboxshow" v-if="popboxshow&&popboxtype=='兑换'" :class="popboxshow?'active':''">
<div>
<p v-if="acctype=='tel'">是否为账号{{this.account}}兑换{{this.proname}}会员?</p>
<p v-if="acctype=='text'">是否兑换{{this.proname}}会员?</p>
<span @click="surexchangeBtn">确认兑换</span>
</div>
</div>
<!-- 弹出提示 -->
<div class="popboxshow" v-if="popboxshow&&popboxtype=='提示'" :class="popboxshow?'active':''">
<div class="tip">
<p>{{tiptext}}</p>
<span @click="successchangeBtn">知道了</span>
</div>
</div>
<!-- 成功 -->
<div class="popboxshow successbox" v-if="popboxshow&&popboxtype=='成功'" :class="popboxshow?'active':''">
<div>
<p>{{this.successTip}}</p>
<span @click="successchangeBtnFn">我知道啦</span>
</div>
</div>
<img v-if="popboxshow&&popboxtype!='成功'" class="closed"
src="http://lsxd-customcard-h5.oss-cn-hangzhou.aliyuncs.com/cardpwd/img/commimgs/close.png" alt=""
@click="closeBtn()">
</div>
</body>
<script>
new Vue({
el: '#exchangePage',
data() {
return {
account: '',
reaccount: '',
maxlen: 11,
acctype: 'tel',
promttip: '',
promtshow: false,
productType: 0,
proname: '',
placeholder: '',
maskshow: false,
popboxshow: false,
exchangeOpen: false,
suspension: false,
popboxtype: '',
describe: {},
detailUrl:'',
successTip: '',
goodInfo: '',
bgcolor: '',
ftcolor: '',
backAble:true,
goodsShow: [
'https://lsxd-yunshanfu.oss-cn-hangzhou.aliyuncs.com/common_image/20220120/9bedd7af6a8a570be8f2858564f9ec6d.png'
]
}
},
created() {
let self = this;
document.title = sessionStorage.getItem('title');
let detailsConfig = JSON.parse(sessionStorage.getItem('product_detail'));
let goodsCount=sessionStorage.getItem('goodsCount');
this.backAble=goodsCount>1;
this.bgcolor = detailsConfig.button_color;
this.bgcolor = '#f00'
this.ftcolor = detailsConfig.font_color;
this.describe = detailsConfig.describe;
let goodsInform=JSON.parse(sessionStorage.getItem('goodsInfo'));//商品信息
this.goodInfo = goodsInform;
let goods_desc=goodsInform.describe_url;
this.goodsShow = goods_desc.length>0?goods_desc:[JSON.parse(sessionStorage.getItem('goodsInfo')).show_url];
this.detailUrl=goodsInform.detail_url?goodsInform.detail_url:'';
this.productType = JSON.parse(sessionStorage.getItem('goodsInfo')).account_type;
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
loop: true, // 循环模式选项
autoplay: 3000, //可选选项,自动滑动
pagination: '.swiper-pagination',
})
console.log(123, document.querySelector('.swiper-container'));
})
},
methods: {
backgoodsFn() {
let goodsCount=sessionStorage.getItem('goodsCount');
if(goodsCount>1){
// window.location.replace(document.referrer);
window.location.replace('./homepage.html');
}else{
history.go(-2);
}
// window.location.replace(document.referrer);
},
closeTip() {
this.suspension = false;
},
susTipFn() {
this.suspension = true;
},
// 单条弹框
openDialog() {
this.promtshow = true;
setTimeout(() => {
this.promtshow = false;
this.promttip = '';
}, 3000)
},
//刷新页面
successchangeBtnFn() {
console.log(window);
window.location.replace(document.referrer);
},
//兑换商品
exchangeGoodsFn() {
if (!this.account) {
this.promttip = '请输入兑换账号!'
this.openDialog();
return false;
} else {
let namereg = /\w{4}/.test(this.account);
let phonereg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(this.account);
let qqreg = /^[1-9][0-9]{4,9}$/.test(this.account);
let emailsreg = /^[A-Za-z0-9\u4e00-\u9fa5\.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(this.account);
let weixinreg = /^[a-zA-Z][a-zA-Z\d_-]{5,19}$/.test(this.account);
let regflag = true;
if (this.productType == 0) {
this.placeholder = "请输入昵称";
regflag = namereg;
} else if (this.productType == 1) {
regflag = phonereg;
} else if (this.productType == 2) {
regflag = emailsreg;
} else if (this.productType == 3) {
regflag = phonereg || emailsreg;
} else if (this.productType == 4) {
regflag = qqreg;
} else if (this.productType == 5) {
regflag = phonereg || qqreg;
} else if (this.productType == 6) {
regflag = emailsreg || qqreg;
} else if (this.productType == 7) {
regflag = phonereg || emailsreg || qqreg;
} else if (this.productType == 8) {
regflag = weixinreg;
} else if (this.productType == 9) {
regflag = phonereg || weixinreg;
} else if (this.productType == 10) {
regflag = emailsreg || weixinreg;
} else if (this.productType == 11) {
regflag = phonereg || emailsreg || weixinreg;
} else if (this.productType == 12) {
regflag = qqreg || weixinreg;;
} else if (this.productType == 13) {
regflag = phonereg || qqreg || weixinreg;
} else if (this.productType == 14) {
this.placeholder = "请输入邮箱/QQ号/微信号";
regflag = emailsreg || qqreg || weixinreg;
} else {
this.placeholder = "请输入手机号/邮箱/QQ号/微信号";
regflag = phonereg || emailsreg || qqreg || weixinreg;
}
if (!regflag) {
this.promttip = "充值账号格式不正确!"
this.openDialog();
return false;
}
}
if (this.reaccount == "") {
this.promttip = "请再次输入账号!";
this.openDialog();
return false;
}
if (this.account != this.reaccount) {
this.promttip = "两次输入的账号必须一致!";
this.reaccount == ""
this.openDialog();
return false;
}
this.maskshow = true;
this.popboxshow = true;
this.popboxtype = '兑换';
},
//确定兑换
surexchangeBtn() {
let self = this;
let data = {
"key": sessionStorage.getItem('key'),
"product_id": this.goodInfo.product_id,
"account": this.account,
"code_batch_id": this.goodInfo.code_batch_id,
"token": sessionStorage.getItem('token')
}
req.axiosPostusage('/key/usage', data).then(res => {
sessionStorage.setItem('lastid', self.goodInfo.product_id);
if (res.code == 200) {
// 查询订单接口
this.popboxtype = '成功';
this.popboxshow = true;
this.successTip = '兑换成功请直接登录app使用';
} else {
this.popboxtype = '提示';
this.popboxshow = true;
this.tiptext = res.message;
if (res.code == -1) {
let goodsCount=sessionStorage.getItem('goodsCount');
if(goodsCount>1){
setTimeout(() => {
// window.location.replace(document.referrer);
window.location.replace('./homepage.html');
}, 3000);
}else{
let backUrl=window.history.length;
if(backUrl){
history.go(-backUrl+1);
}
}
}
}
}).catch(err => {
});
},
//关闭弹出框,仅关闭弹框
successchangeBtn() {
this.maskshow = false;
this.popboxshow = false;
this.account = "";
this.reaccount = "";
},
focusFn(a) {
let ele = document.querySelector('.ipt-acc');
setTimeout(function () {
ele.scrollIntoView(false);
// console.log(123,ele.scrollHeight);
document.body.scrollTop = ele.scrollHeight;
document.documentElement.scrollTop = ele.scrollHeight;
}, 400);
},
//关闭,关闭弹框
closeBtn() {
this.popboxshow = false;
this.maskshow = false;
this.account = "";
this.reaccount = "";
},
},
watch: {
account() {
if (this.account == this.reaccount) {
this.exchangeOpen = true;
}
},
reaccount() {
if (this.account == this.reaccount) {
this.exchangeOpen = true;
}
},
productType: {
immediate: true,
handler(newVal) {
this.maxlen = 50;
this.acctype = "text";
if (newVal == 0) {
this.placeholder = "请输入昵称";
} else if (newVal == 1) {
this.acctype = "tel";
this.placeholder = "请输入手机号";
this.maxlen = 11;
} else if (newVal == 2) {
this.placeholder = "请输入邮箱";
} else if (newVal == 3) {
this.placeholder = "请输入手机号或邮箱";
} else if (newVal == 4) {
this.placeholder = "请输入QQ号";
this.acctype = "tel";
this.maxlen = 10;
} else if (newVal == 5) {
this.placeholder = "请输入手机号或QQ号";
this.maxlen = 11;
this.acctype = "tel";
} else if (newVal == 6) {
this.placeholder = "请输入邮箱或QQ号";
} else if (newVal == 7) {
this.placeholder = "请输入手机号/邮箱/QQ号";
} else if (newVal == 8) {
this.placeholder = "请输入微信号";
this.maxlen = 20;
} else if (newVal == 9) {
this.placeholder = "请输入手机号或微信";
this.maxlen = 20;
} else if (newVal == 10) {
this.placeholder = "请输入邮箱或微信号";
} else if (newVal == 11) {
this.placeholder = "请输入手机号/邮箱/微信号";
} else if (newVal == 12) {
this.placeholder = "请输入QQ号或微信号";
this.maxlen = 20;
} else if (newVal == 13) {
this.placeholder = "请输入手机号/QQ号/微信号";
this.maxlen = 20;
} else if (newVal == 14) {
this.placeholder = "请输入邮箱/QQ号/微信号";
} else {
this.placeholder = "请输入手机号/邮箱/QQ号/微信号";
}
}
}
}
})
</script>
</html>

View File

@ -12,10 +12,9 @@
</script>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/js/swiper.min.js"></script>
<link href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/css/swiper.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<!-- <script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1.js"></script> -->
<script src="./api1_1.js"></script>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1_0.js"></script>
</head>
<style scoped>
* {
@ -63,7 +62,7 @@
<div id="rotation" v-if="layout=='2'">
<!-- 顶部banner -->
<div class="topBanner">
<img class="backpresty" @click="backgoodsFn"
<img class="backpresty" @click="backgoodsFn" v-if="goodsShow&&!iskey"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img :src="topImg" alt="">
</div>
@ -99,15 +98,15 @@
</div>
</div>
<!-- 立即兑换 -->
<div class="exchangeBtn" :class="gstatus!=1?'noexchangeBtn':describe.type?'bottomBtn':''" :style="{'background': bgcolor,'color':ftcolor}"
@click="exchangeBtn()">
<div class="exchangeBtn" :class="gstatus!=1?'noexchangeBtn':describe.type&&describe.type!=2?'bottomBtn':''"
:style="{'background': bgcolor,'color':ftcolor}" @click="exchangeBtn()">
立即兑换
</div>
</div>
<!-- 列表 -->
<div id="list" v-if="layout=='1'">
<div class="topBanner">
<img class="backpresty" @click="backgoodsFn"
<img class="backpresty" @click="backgoodsFn" v-if="goodsShow&&!iskey"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img :src="topImg" alt="">
</div>
@ -132,7 +131,7 @@
<!-- 矩阵 -->
<div id="matrix" v-if="layout=='3'">
<div class="topBanner">
<img class="backpresty" @click="backgoodsFn"
<img class="backpresty" @click="backgoodsFn" v-if="goodsShow&&!iskey"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img :src="topImg" alt="">
@ -161,14 +160,15 @@
</li>
</ul>
</div>
<div class="bottom" id="bottom" :class="layout==2?'tipset':''" v-show="describe.type">
<div class="bottom" id="bottom" :class="layout==2?'tipset':''" v-show="describe.type">
<img :src="describe.bg_image" v-show="describe.type==1&&describe.bg_image">
<div v-html="describe.content" class="goodsTip" v-show="describe.type==3&&describe.content"></div>
</div>
</div>
<!-- 悬浮提示 -->
<!-- 悬浮提示 -->
<div v-if="suspension" class="suspensionDom">
<img @click="closeTip" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img @click="closeTip" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png"
alt="">
<h4>活动规则</h4>
<div v-html="describe.content">
@ -177,7 +177,8 @@
<!-- 弹出框 -->
<div class="mask" v-if="maskshow">
</div>
<img class="susTip" @click="susTipFn" v-if="describe.type==2&&describe.content&&!suspension&&!loading" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/acticeTextTip.png" alt="">
<img class="susTip" @click="susTipFn" v-if="describe.type==2&&describe.content&&!suspension&&!loading"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/acticeTextTip.png" alt="">
<!-- 单条弹出框 -->
<div class="prompt" :class="promtshow?'proactive':''">
{{this.promttip}}
@ -215,7 +216,7 @@
loading: true,
lastid: 0,
gstatus: 1,
suspension:false,
suspension: false,
popboxshow: false,
popboxtype: '兑换',
topImg: '',
@ -225,7 +226,9 @@
bgcolor: '',
describe: {},
ftcolor: '',
allgoods:[],
iskey:true,
allgoods: [],
showType:0,
tiptext: '还没开始哟兑换时间为2021-12-05 12:12:12至2021-01-01 12:12:12',
successTip: '兑换成功请直接登录app使用'
}
@ -238,23 +241,26 @@
this.topImg = productConfig.top_image;
document.title = sessionStorage.getItem('title');
this.layout = productConfig.list;
this.iskey=sessionStorage.getItem('haskey');
this.describe = productConfig.describe;
},
methods: {
closeTip(){
this.suspension=false;
closeTip() {
this.suspension = false;
},
susTipFn(){
this.suspension=true;
susTipFn() {
this.suspension = true;
},
onSelected(item) {
this.exchangeCommity = item;
this.gstatus = item.available;
},
backgoodsFn() {
window.history.back();
let backUrl=window.history.length;
if(window.history.length){
history.go(-backUrl+1);
}
},
// 单条弹框
openDialog() {
this.promtshow = true;
@ -264,248 +270,158 @@
}, 3000)
},
//根据token获取商品信息
getGoods() {
async getGoods() {
let self = this;
let showType=sessionStorage.getItem('showType');
let showType = sessionStorage.getItem('showType');
this.showType=showType;
let data = {
"last_product_id": sessionStorage.getItem('lastid') | 0,
}
if(showType==1){//白名单
let tokenList=JSON.parse(sessionStorage.getItem('getTokenList'));
// let goodsList=[];
tokenList.forEach(item=>{
data.token=item.token;
req.axiosPostproducts('/key/products', data).then(res => {
if (res.code == 200) {
res.data.forEach(it=>{
it.token=item.token;
});
// goodsList=goodsList.concat(res.data);
}
});
});
let duplicate=[];
setTimeout(() => {
// this.allgoods=goodsList;
let goodsArr=[];
let goodsList=[
{
"code_batch_id": 1440,
"available":2,
"product_id": 104,
"product_type": 1,
"product_name": "优酷年卡第一",
"map_product_name": "优酷年卡",
"account_type": 5,
"contract_price": "100.0000",
"official_price": "198.0000",
"quantity": 20,
"stock": 20,
"show_url": "https://lsxdemall.oss-cn-beijing.aliyuncs.com/commonproductlogo/youku.png",
"describe_url": "",
"begin_time": "2022-01-18 09:39:35",
"end_time": "2022-01-18 23:59:59",
"exchange": 0,
"key": "AAAAUERhrBvgg8B1",
"token": "03cbdaf3d9e29212a1552ec0f4daab32"
},
{
"code_batch_id": 1441,
"available": 1,
"product_id": 103,
"product_type": 1,
"product_name": "优酷季卡",
"map_product_name": "优酷季卡",
"account_type": 15,
"contract_price": "60.0000",
"official_price": "56.0000",
"quantity": 40,
"stock": 40,
"show_url": "https://lsxdemall.oss-cn-beijing.aliyuncs.com/commonproductlogo/youku.png",
"describe_url": "",
"begin_time": "2022-01-18 09:39:35",
"end_time": "2022-01-18 23:59:59",
"exchange": 0,
"key": "AAAAUERhrBvgg8B1",
"token": "03cbdaf3d9e29212a1552ec0f4daab32"
},
{
"code_batch_id": 1442,
"available": 1,
"product_id": 107,
"product_type": 1,
"product_name": "爱奇艺黄金会员月卡",
"map_product_name": "爱奇艺黄金会员月卡",
"account_type": 15,
"contract_price": "60.0000",
"official_price": "19.8000",
"quantity": 20,
"stock": 20,
"show_url": "https://lsxd-yunshanfu.oss-cn-hangzhou.aliyuncs.com/common_image/20220118/ade7159cee476f41323f64ecaf87127a.png",
"describe_url": "",
"begin_time": "2022-01-18 09:39:35",
"end_time": "2022-01-18 23:59:59",
"exchange": 0,
"key": "AAAAUERhrBvgg8B1",
"token": "03cbdaf3d9e29212a1552ec0f4daab32"
},
{
"code_batch_id": 1442,
"available": 1,
"product_id": 116,
"product_type": 1,
"product_name": "腾讯视频会员季卡",
"map_product_name": "腾讯视频会员季卡",
"account_type": 5,
"contract_price": "50.0000",
"official_price": "58.0000",
"quantity": 20,
"stock": 20,
"show_url": "https://lsxdemall.oss-cn-beijing.aliyuncs.com/commonproductlogo/tenxun.png",
"describe_url": "",
"begin_time": "2022-01-18 09:39:35",
"end_time": "2022-01-18 23:59:59",
"exchange": 0,
"key": "AAAAUERhrBvgg8B1",
"token": "03cbdaf3d9e29212a1552ec0f4daab32"
},{
"code_batch_id": 1440,
"available":5,
"product_id": 104,
"product_type": 1,
"product_name": "优酷年卡第一基带升级的",
"map_product_name": "优酷年卡",
"account_type": 5,
"contract_price": "100.0000",
"official_price": "198.0000",
"quantity": 20,
"stock": 20,
"show_url": "https://lsxdemall.oss-cn-beijing.aliyuncs.com/commonproductlogo/youku.png",
"describe_url": "",
"begin_time": "2022-01-18 09:39:35",
"end_time": "2022-01-18 23:59:59",
"exchange": 0,
"key": "AAAAUERhrBvgg8B1",
"token": "03cbdaf3d9e29212a1552ec0f4daab32"
}
];
goodsList.forEach(item=>{
if(duplicate.indexOf(item.product_id)==-1){
duplicate.push(item.product_id);
}
});
let result=[]
duplicate.forEach(it=>{
result=goodsList.filter(iten=>{//goodshow为去重后的数据
return iten.product_id==it;
});
console.log('结果集合',result);
let flag=[1,2,6,8,7,5,4,3];
let minIndex = 7;
result.forEach(item=>{
let flagIndex=flag.indexOf(item.available);
if(flagIndex > -1)
{
if(flagIndex < minIndex)
minIndex = flagIndex;
}
})
let obj = result.find((o)=>{return o.available ==flag[minIndex] })
console.log("查找",obj)
goodsArr.push(obj);
});
console.log(537,goodsArr);
}, 1000);
// self.maskshow = true;
// self.popboxtype = '提示';
// self.popboxshow = true;
// self.tiptext = res.message;
// if (res.code == -1) {
// let haskey = sessionStorage.getItem('haskey');
// if (haskey) {
// setTimeout(() => {
// // window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId')+'&';
// window.history.back();
// // sessionStorage.clear();
// }, 3000);
// } else {
// setTimeout(() => {
// window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId');
// // sessionStorage.clear();
// }, 3000);
// }
// }
// }
// }).catch(err => {
}else{
data.token=sessionStorage.getItem('token')
req.axiosPostproducts('/key/products', data).then(res => {
if (res.code == 200) {
self.swiperDataList = res.data;
self.goodsShow = res.data.length > 1;
if (res.data && res.data.length == 1) {
window.location.href = "./exchange.html";
sessionStorage.setItem('goodsInfo', JSON.stringify(res.data[0]));
return false;
}
if (res.data && res.data.length > 1) {
self.goodsNum = true;
self.onSelected(res.data[0])
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
slidesPerView: "auto",
loopAdditionalSlides: 1000,
centeredSlides: true,
observer: true,
observeParents: true,
loop: self.goodsShow,
onSlideChangeEnd: function (swiper) {
let row = res.data[swiper.realIndex];
self.onSelected(res.data[swiper.realIndex])
}
})
})
setTimeout(() => {
self.loading = false;
}, 100);
} else {
self.goodsNum = false;
}
} else {
self.maskshow = true;
self.popboxtype = '提示';
self.popboxshow = true;
self.tiptext = res.message;
if (res.code == -1) {
let haskey = sessionStorage.getItem('haskey');
if (haskey) {
if (showType == 1) { //白名单
let tokenList = JSON.parse(sessionStorage.getItem('getTokenList'));
let goodsList = [];
for (item of tokenList) {
let goodsItem = [];
data.token = item;
let waitGoods = await req.axiosPostproducts('/key/products', data).then(res => {
if (res.code == 200) {
res.data.forEach(it => {
it.token = item;
});
goodsItem = res.data;
}else{
self.maskshow = true;
self.popboxtype = '提示';
self.popboxshow = true;
self.tiptext = res.message;
if (res.code == -1) {
setTimeout(() => {
// window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId')+'&';
window.history.back();
// sessionStorage.clear();
}, 3000);
} else {
setTimeout(() => {
window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId');
// sessionStorage.clear();
window.location.href = sessionStorage.getItem('white_link');
}, 3000);
}
}
});
goodsList = goodsList.concat(goodsItem);
};
let duplicate = []; //去重
let goodsArr = []; //最终的商品集合
goodsList.forEach(item => {
if (duplicate.indexOf(item.product_id) == -1) {
duplicate.push(item.product_id);
}
}
}).catch(err => {
});
let similar = []
duplicate.forEach(it => {
similar = goodsList.filter(iten => { //goodshow为去重后的数据
return iten.product_id == it;
});
let flag = [1, 2, 6, 8, 7, 5, 4, 3]; //显示的avarivble规则
let minIndex = 7;
similar.forEach(item => {
let flagIndex = flag.indexOf(item.available);
if (flagIndex > -1) {
if (flagIndex < minIndex)
minIndex = flagIndex;
}
})
let obj = similar.find((o) => {
return o.available == flag[minIndex]
})
goodsArr.push(obj);
});
});
self.swiperDataList = goodsArr;
self.goodsShow = goodsArr.length > 1;
sessionStorage.setItem('goodsCount', goodsArr.length);
if (goodsArr && goodsArr.length == 1&&goodsArr[0].available==1) {
sessionStorage.setItem('goodsInfo', JSON.stringify(goodsArr[0]));
sessionStorage.setItem('key',goodsArr[0].key);
sessionStorage.setItem('token',goodsArr[0].token);
// window.location.href = "./exchange.html";
window.location.replace("./exchange.html");
return false;
}else if(goodsArr && goodsArr.length >= 1) {
self.goodsNum = true;
self.onSelected(goodsArr[0])
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
slidesPerView: "auto",
loopAdditionalSlides: 1000,
centeredSlides: true,
observer: true,
observeParents: true,
loop: self.goodsShow,
onSlideChangeEnd: function (swiper) {
let row = goodsArr[swiper.realIndex];
self.onSelected(goodsArr[swiper.realIndex])
}
})
})
setTimeout(() => {
self.loading = false;
}, 100);
} else {
self.goodsNum = false;
}
}else {//兑换码
data.token = sessionStorage.getItem('token')
req.axiosPostproducts('/key/products', data).then(res => {
if (res.code == 200) {
self.swiperDataList = res.data;
sessionStorage.setItem('goodsCount',res.data.length);
self.goodsShow = res.data.length > 1;
if (res.data && res.data.length == 1&&res.data[0].available==1) {
sessionStorage.setItem('goodsInfo', JSON.stringify(res.data[0]));
// window.location.href = "./exchange.html";
window.location.replace("./exchange.html");
return false;
}else if(res.data && res.data.length >= 1) {
self.goodsNum = true;
self.onSelected(res.data[0])
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
slidesPerView: "auto",
loopAdditionalSlides: 1000,
centeredSlides: true,
observer: true,
observeParents: true,
loop: self.goodsShow,
onSlideChangeEnd: function (swiper) {
let row = res.data[swiper.realIndex];
self.onSelected(res.data[swiper.realIndex])
}
})
})
setTimeout(() => {
self.loading = false;
}, 100);
}
} else {
self.maskshow = true;
self.popboxtype = '提示';
self.popboxshow = true;
self.tiptext = res.message;
if (res.code == -1) {
let haskey = sessionStorage.getItem('haskey');
if (haskey) {
setTimeout(() => {
// window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId')+'&';
window.history.back();
// sessionStorage.clear();
}, 3000);
} else {
setTimeout(() => {
window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId');
// sessionStorage.clear();
}, 3000);
}
}
}
}).catch(err => {
});
}
},
//选择商品点击兑换
exchangeBtn(row = this.exchangeCommity) {
@ -513,8 +429,13 @@
this.gstatus = gstatus;
if (gstatus == 1) {
// 跳转商品详情页面
if(this.showType==1){//白名单
sessionStorage.setItem('token',row.token);
sessionStorage.setItem('key',row.key);
}
sessionStorage.setItem('goodsInfo', JSON.stringify(row));
window.location.href = './exchange.html';
// window.location.href = './exchange.html';
window.location.replace("./exchange.html");
// this.maskshow = true;
// this.proname = row.product_name;

377
V1_1_0/index.html Normal file
View File

@ -0,0 +1,377 @@
<!DOCTYPE html>
<html>
<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,viewport-fit=cover">
<title>权益兑换页</title>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/vue.min.js?v=1367936144322" 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>
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1_0.js"></script>
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
</head>
<style scoped>
html {
font-size: 26.66666667vw;
height: 100%;
}
body {
padding: 0;
font-size: .14rem;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
* {
padding: 0;
margin: 0;
}
</style>
<body>
<div id="app" :style={background:bgcolor}>
<!-- 单条弹出框 -->
<div class="prompt" :class="promtshow?'proactive':''">
{{this.promttip}}
</div>
<!-- 弹出提示 -->
<div class="mask" v-if="maskshow"></div>
<div class="popboxshow" v-if="popboxshow" :class="popboxshow?'active':''">
<div class="tip">
<p class="yettip">{{tiptext}}</p>
<span @click="successchangeBtn" class="yetexchange">知道了</span>
</div>
</div>
<div class="um-content" v-if="loading">
<div class="spinner">
<div class="spinner-container container1">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
<div class="spinner-container container2">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
<div class="spinner-container container3">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
</div>
</div>
<div v-show="!loading">
<div class="top">
<img :src="topImg" id="top">
</div>
<div class="center" id="center">
<img :src="middleImg" style="position: absolute;z-index: 1;" id="center_img">
<input class="key" :maxlength="16" v-if="pageType==3" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入兑换码"
v-model="key" />
<input class="code" :maxlength="5" v-if="pageType==3" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入验证码"
v-model="code" />
<input class="key" :maxlength="11" v-if="pageType==1" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入手机号"
v-model="key" />
<input class="code" :maxlength="6" v-if="pageType==1" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入验证码"
v-model="code" />
<img src="#" alt="" class="codeimg" v-if="pageType==3" id="captcha_img" @click="changeyzmFn()" />
<button class="codeimg" :class="disabled?'disabledstyle':'active'" v-if="pageType==1" @click="getcode()"
:disabled="disabled">{{codetip}}</button>
<div class="submit" @click="submit"></div>
</div>
<div class="bottom" id="bottom">
<img :src="describe.bg_image" v-show="describe.type&&describe.bg_image">
<div v-html="describe.content" class="tipBottomtext" v-show="describe.type==2&&describe.content"></div>
</div>
</div>
</div>
</body>
<script>
new Vue({
el: '#app',
data() {
return {
loading: false,
pageType: 1,
key: '',
code: '',
disabled: true,
codetip: '获取验证码',
topImg: '',
middleImg: '',
describe: {},
ftcolor: '',
bgcolor: '#333',
promttip: '',
promtshow: false,
popboxshow: false,
tiptext: '提示信息',
plan_id: '',
maskshow: false
}
},
created() {
let self = this;
//获取链接携带的参数
let linkId = this.getQueryString('id');
let keyCode = this.getQueryString('key');
if (!linkId) {
let path = window.location.pathname;
let parmas = path.split('/');
let parmasResult = parmas.filter(n => n);
linkId = parmasResult.length > 0 ? parmasResult[0] : null; //链接携带落地页渲染id
keyCode = parmasResult.length > 1 ? parmasResult[1] : null; //链接携带key
}
if(linkId.length>10){
req.axiosGetplan('/plan/plan_theme/' + linkId).then(res => {
if(res.code==200){
// window.location.href=res.data;
window.location.replace(res.data);
return;
}
})
}
req.axiosGetplan('/plan/plan_theme/' + linkId).then(res => {
if (res.code == 200) {
//内置页顶图
document.title = res.data.title;
self.plan_id = res.data.plan_id
this.pageType = res.data.page;
sessionStorage.setItem('title', res.data.title);
if (res.data.page == 3) {
sessionStorage.setItem('product_list', JSON.stringify(res.data['exchange'].product_list));
sessionStorage.setItem('product_detail', JSON.stringify(res.data['exchange'].product_detail));
} else if (res.data.page == 1) {
sessionStorage.setItem('product_list', JSON.stringify(res.data['access_conf'].product_list));
sessionStorage.setItem('product_detail', JSON.stringify(res.data['access_conf'].product_detail));
}
sessionStorage.setItem('linkId', linkId);
//是否携带token
if (keyCode) {
let data = {
key: keyCode
}
req.axiosPostTogppds('/key/loginFromLink', data).then(res => {
if (res.code == 200) {
sessionStorage.setItem('key', keyCode);
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('haskey', keyCode);
this.promttip = '正在加载商品...';
this.openDialog();
window.location.replace("/homepage.html");
} else {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
}).catch(err => {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
});
} else {
let keyName;
if (this.pageType == 3) {
captchaimg();
keyName = 'exchange';
} else if (this.pageType == 1) {
keyName = 'access_conf';
}
self.bgcolor = res.data[keyName].land.bg_color;
self.ftcolor = res.data[keyName].land.font_color;
self.topImg = res.data[keyName].land.top_image;
self.middleImg = res.data[keyName].land.middle_image;
self.describe = res.data[keyName].land.describe;
self.loading = false;
}
}
}).catch(err => {});
},
mounted() {
this.$nextTick(() => {
let img = document.getElementById("center_img")
let center = document.getElementById("center")
img.onload = function (e) {
center.style.height = img.clientHeight + "px";
}
})
},
methods: {
successchangeBtn() {
this.popboxshow = false;
this.maskshow = false;
},
getcode() {
let self = this;
let data = {
'mobile': this.key,
'plan_id': this.plan_id
}
req.axiosPostsendMobile('/sms/sendMobileExchangeCode', data).then(res => {
if (res.code == 200) {
let timeId = 60;
let timer = setInterval(() => {
timeId--;
if (timeId > 0) {
self.codetip = timeId + 's';
self.disabled = true;
} else {
clearInterval(timer);
self.codetip = '获取验证码';
self.disabled = false;
}
}, 1000);
} else {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
}).catch(err => {});
},
submit() {
let self = this;
if (!this.key) {
this.promttip = '请输入兑换码';
this.openDialog();
} else {
if (!this.code) {
this.promttip = '请输入验证码';
this.openDialog();
} else {
if (this.pageType == 3) { //兑换码
let data = {
"key": this.key,
"code": this.code,
"code_unique_str": sessionStorage.getItem('unique_str')
}
req.axiosPostKey('/key/login', data).then(res => {
if (res.code == 200) {
sessionStorage.setItem('key', self.key);
sessionStorage.setItem('token', res.data.token);
this.promttip = '正在加载商品...';
this.openDialog();
setTimeout(() => {
window.location.href = './homepage.html';
}, 2000);
} else {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
}).catch(err => {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
});
} else if (this.pageType == 1) { //白名单
let par = {
"code": this.code,
"mobile": this.key,
"plan_id": this.plan_id
}
let getTokenList = [];
req.axiosPostgetKey('/key/getKeyByMobile', par).then(async res => {
if (res.data.code == 200) {
sessionStorage.setItem('key', self.key);
sessionStorage.setItem('token', res.data.data);
sessionStorage.setItem('showType', 1);
sessionStorage.setItem('white_link', window.location.href);
let tokenArr = res.data.data;
let istoGoods = false;
for (item of tokenArr) {
let obj = {}
let data = {
"code_unique_str": res.headers['unique-str'],
"key": item
}
let wait = await req.axiosPostKey('/key/loginFromMobileKey', data).then(res => {
if (res.code == 200) {
getTokenList.push(res.data.token);
istoGoods = true;
} else {
if(res.message=='活动暂停中'){
self.tiptext = res.message;
istoGoods = false;
}else{
self.tiptext = res.message;
}
}
}).catch(err => {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
});
};
if (istoGoods) {
sessionStorage.setItem('getTokenList', JSON.stringify(getTokenList));
this.promttip = '正在加载商品...';
this.openDialog();
setTimeout(() => {
window.location.href = './homepage.html';
}, 2000);
}else{
self.maskshow = true;
self.tiptext = self.tiptext;
self.popboxshow = true;
}
} else {
self.maskshow = true;
self.tiptext = res.data.message;
self.popboxshow = true;
}
}).catch(err => {});
}
}
}
},
getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
},
// 单条弹框
openDialog() {
this.promtshow = true;
setTimeout(() => {
this.promtshow = false;
this.promttip = '';
}, 3000)
},
changeyzmFn() {
captchaimg()
}
},
components: {
},
watch: {
key(val) {
if (this.pageType == 1) {
if (val.length == 11) {
this.disabled = false;
} else {
this.disabled = true;
}
}
}
}
});
</script>
</html>

175
api1_1.js
View File

@ -1,175 +0,0 @@
let baseurl = 'http://192.168.6.75';
let testZyg = 'http://192.168.6.81:8056';
let pathname=document.location.href;
//开发环境
if(pathname.includes('1688sup')||pathname.includes('83323')||pathname.includes('86885')||pathname.includes('22233')){//正式
baseurl = 'https://marketapi.1688sup.com'
}
if(pathname.includes('test')){
baseurl = 'http://192.168.6.75';
}
axios.interceptors.request.use((config) => {
config.headers.Version = 'v1.0.3';
return config
})
const req = {
//获取落地页信息
axiosGetplan(url, params){
var result = axios({
method: 'get',
url: baseurl + url,
params,
}).then(function(res) {
if(res.data.code!=200){
alert(res.data.message);
return false;
}
return res.data;
}).catch(function(error) {
return "exception=" + error;
});
return result;
},
//发送key手机号核销验证码
axiosPostsendMobile(url, data) {
let result = axios({
method: 'post',
url: baseurl + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res.data;
}).catch(error => {
return "exception=" + error;
});
return result;
},
//获取key列表
axiosPostgetKey(url, data) {
let result = axios({
method: 'post',
url: testZyg + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res;
}).catch(error => {
return "exception=" + error;
});
return result;
},
//免验证登录
axiosPostTogppds(url, data) {
let result = axios({
method: 'post',
url: baseurl + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res.data;
}).catch(error => {
return "exception=" + error;
});
return result;
},
//验证key信息
axiosPostKey(url, data) {
let result = axios({
method: 'post',
url: baseurl + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res.data;
}).catch(error => {
return "exception=" + error;
});
return result;
},
//获取key相关的商品信息
axiosPostproducts(url, data) {
let result = axios({
method: 'post',
url: baseurl + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res.data;
}).catch(error => {
return "exception=" + error;
});
return result;
},
//key核销生成订单
axiosPostusage(url, data) {
let result = axios({
method: 'post',
url: baseurl + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res.data;
}).catch(error => {
return "exception=" + error;
});
return result;
},
//查询兑换订单接口
axiosPostResult(url, data) {
let result = axios({
method: 'post',
url: baseurl + url,
data: data,
header: {
'Content-type': 'application/x-www-form-urlencoded'
}
}).then(res => {
return res.data;
}).catch(error => {
return "exception=" + error;
});
return result;
},
}
//图形验证码
function captchaimg(){
let self = this;
let parmas = {}
let customsessionid="";
const xhr = new XMLHttpRequest()
xhr.open('GET', baseurl + '/auth/login/verify')
xhr.setRequestHeader('Version','v1.0.3');
xhr.responseType = "arraybuffer";
xhr.onreadystatechange = function (response) {
response.header = {
'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8',
}
var img = document.getElementById('captcha_img')
var byteArray = new Uint8Array(response.target.response);
var binary = '';
for (var i = 0; i < byteArray.byteLength; i++) {
binary += String.fromCharCode(byteArray[i]);
}
let str = 'data:image/png;base64,' + window.btoa(binary)
img.src = str;
customsessionid = xhr.getResponseHeader('Unique-Str');
sessionStorage.setItem('unique_str',customsessionid);
}
xhr.send()
}

View File

@ -14,8 +14,8 @@
<link href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/css/swiper.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1_0.js"></script>
<style>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/test1_1_0.js"></script>
<style>
* {
margin: 0 auto;
padding: 0;

View File

@ -14,7 +14,7 @@
<link href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/css/swiper.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1_0.js"></script>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/test1_1_0.js"></script>
</head>
<style scoped>
* {

View File

@ -1,795 +0,0 @@
html {
background: #F4F6F9;
}
body{
height:100%;
}
.top {
width: 100%;
height: auto;
padding: 0;
margin: 0;
}
#app{
height: 100%;
}
img {
width: 100%;
vertical-align: middle;
}
.main-body{
overflow: scroll;
height: 100%;
}
.center {
width: 100%;
padding: 0;
margin: 0;
position: relative;
overflow: hidden;
}
.bottom {
width: 100%;
height: auto;
position: relative;
}
.tipBottomtext{
position: absolute;
top:0.7rem;
padding:0 0.25rem;
box-sizing: border-box;
line-height: 0.24rem;
text-align: justify;
left: 0;
}
.key {
position: absolute;
top: 0.4rem;
left: 50%;
width: 2rem;
height: 0.25rem;
z-index: 2;
margin-left: -0.72rem;
background-color: transparent;
border: none;
outline: none;
font-size: 0.14rem;
}
.code {
position: absolute;
top: 0.935rem;
left: 50%;
width: 1rem;
height: 0.25rem;
z-index: 2;
margin-left: -0.72rem;
background-color: transparent;
border: none;
outline: none;
font-size: 0.14rem;
}
.codeimg {
position: absolute;
top: 0.82rem;
right: 0.3rem;
width: 0.84rem;
height: 0.42rem;
border-radius: 0.21rem;
z-index: 2;
background-color: #f1f2f3;
color: #ccc;
display: flex;
justify-content: center;
outline: none;
border: none;
align-items: center;
font-size:0.13rem;
}
.codeimg.active{
color: rgb(42, 126, 236);
font-weight: bold;
}
.codeimg.disabledstyle{
color: #999;
}
.submit {
position: absolute;
top: 1.5rem;
left: 50%;
width: 3rem;
height: 0.4rem;
margin-left: -1.5rem;
z-index: 2;
background-color: transparent;
}
@media screen and (min-width:900px){
html{
transform: scale(0.3);
background: #fff;
transform-origin: 50% 0px 0px;
height: calc(100vh);
}
#homepage,#exchangePage{
height: 6rem!important;
background: #F4F6F9;
overflow-y: scroll;
}
.mask{
height: 6rem!important;
}
#matrix,#rotation, #list{
height:6rem!important;
overflow-y: auto;
}
.exchange-btn{
top: 5.5rem!important;
}
}
#homepage {
width: 100%;
font-size: 0.14rem;
height: 100%;
position: relative;
overflow: hidden;
}
.swiper-container{
height: 2rem;
}
/* 鏉烆喗鎸<E59697> */
.topBanner {
width: 100%;
height: 1.83rem;
position: relative;
}
.topBanner .backpresty{
position: absolute;
top: 0.1rem;
left: 0.1rem;
width: 0.4rem;
height: 0.4rem;
z-index: 877;
}
.topBanner img {
width: 100%;
height: 1.83rem;
position: absolute;
top: 0;
left: 0;
}
#homepage h2 {
position: relative;
text-align: center;
top: 0.58rem;
color: #fff;
font-size: 0.21rem;
letter-spacing: 0.03rem;
padding-left: 0.03rem;
}
#homepage .bottom{
width: 94%;
margin-top: 0.1rem;
font-size: 0.14rem;
}
#homepage .goodsTip,#exchangePage .goodsTip{
width: 100%;
background: #fff;
padding: 0.26rem;
line-height: 0.24rem;
box-sizing: border-box;
text-align: justify;
}
#homepage .tipset{
margin-bottom: 0.5rem;
}
#homepage .bottom>img{
border-radius: 0.05rem;
}
#rotation .commodity {
width: 94%;
height: 1.96rem;
background: #FFFFFF;
border-radius: 0.05rem;
position: relative;
margin-top: -0.45rem;
display: flex;
align-items: center;
}
#rotation .swiper-wrapper {
display: flex;
align-items: center;
}
#rotation .swiper-slide {
width: 0.85rem;
height: 1rem;
background: #F3F5F7;
display: flex;
flex-direction: column;
justify-content: center;
box-shadow: 0px 3px 4px 1px rgba(181, 187, 193, 0.41);
transition: 300ms;
transform: scale(0.90);
margin: 0 0.15rem;
padding: 0 0.14rem;
box-sizing: border-box;
border-radius: 0.05rem;
}
#rotation .swiper-slide-active,
#rotation .swiper-slide-duplicate-active {
transform: scale(1.4) !important;
box-shadow: 0px 3px 4px 1px rgba(181, 187, 193, 0.41);
/* height: 1.43rem; */
background: linear-gradient(0deg, #F3F5F7, #F3F5F7);
}
.swiper-slide-active .item-content,
.swiper-slide-duplicate-active .item-content {
color: #B98E3E;
}
#rotation .imgbox {
display: flex;
align-items: center;
}
#rotation .swiper-slide .le-img {
width: 0.5rem;
height: 0.5rem;
}
#rotation .item-name {
color: #242533;
font-size: 0.08rem;
text-align: center;
margin-top: 0.1rem;
}
/* 閸忔垶宕查幐澶愭尦 */
#rotation .exchangeBtn {
width: 3.49rem;
height: 0.42rem;
background: #F98F5B;
border-radius: 0.21rem;
margin-top: 0.24rem;
margin-bottom: 0.24rem;
color: #AAAAAA;
font-size: 0.19rem;
display: flex;
align-items: center;
justify-content: center;
letter-spacing: 0.04rem;
padding-left: 0.04rem;
}
#rotation .noexchangeBtn{
background: #cacccc!important;
}
.listcommity {
list-style: none;
}
/* 閸掓銆冮幒鎺斿 */
#list .listcommity {
width: 94%;
/* height: 100px; */
position: relative;
margin-top: -0.45rem;
}
#list .listcommity li {
width: 100%;
height: 0.6rem;
border-radius: 0.05rem;
padding: 0.14rem;
box-sizing: border-box;
background: #fff;
margin-bottom: 0.07rem;
display: flex;
justify-content: space-between;
align-items: center;
position: relative;
}
#list .listcommity li div {
display: flex;
align-items: center;
justify-content: flex-start;
margin: 0;
}
#list .listcommity li img {
width: 0.5rem;
height: 0.5rem;
margin-right: 0.23rem;
border-radius: 0.25rem;
box-shadow: 0rem .01rem .1rem rgba(181, 187, 193, 0.41);
}
#list .listcommity li font {
font-size: 0.15rem;
color: #151515;
max-width: 2rem;
margin-right: 0.14rem;
}
#list .listcommity li span {
width: 0.72rem;
height: 0.29rem;
line-height: 0.29rem;
border-radius: 0.145rem;
margin: 0;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
}
#list .listcommity li .begin{
font-size: 0.12rem;
color: #AAAAAA;
}
#list .listcommity .bindexchange{
background: #EBEBEB;
color: #AAAAAA;
}
.changegray{
-webkit-filter: grayscale(1); /* Webkit */
filter: gray; /* IE6-9 */
filter: grayscale(1);
color: #c5c4c4!important;
}
.changegray img{
opacity: 0.6;
}
img.changegray{
opacity: 0.6;
}
.changegray font{
color: #c5c4c4!important;
}
#matrix,#list,#rotation{
/* height:calc(100vh); */
/* overflow-y: auto; */
}
/* 閻晠妯€閹烘帞澧<E5B89E> */
#matrix .listcommity {
width: 94%;
position: relative;
margin-top: -0.45rem;
display: flex;
flex-wrap: wrap;
justify-content: flex-start;
background: #fff;
padding: 0.23rem;
box-sizing: border-box;
border-radius: 0.05rem;
}
#matrix .listcommity li {
width: 0.92rem;
display: flex;
flex-direction: column;
margin: 0 0 0.17rem 0;
border-radius: 0.05rem;
position: relative;
}
/* //鍟嗗搧鐭╅樀鍥捐緣 */
#matrix .listcommity li:nth-child(3n+2) {
margin-right:calc((100% - 0.92*3rem)/2);
margin-left:calc((100% - 0.92*3rem)/2);
}
#matrix .listcommity li img {
width: 0.58rem;
height: 0.58rem;
}
#matrix .listcommity li div {
width: 100%;
height: 0.89rem;
padding: 0.16rem;
box-sizing: border-box;
background: #F9FAFA;
display: flex;
position: relative;
}
#matrix .listcommity li .goodsIcon{
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
display: flex;
justify-content: flex-end;
}
#matrix .listcommity li .goodsIcon>img{
position: absolute;
right: 0;
z-index: 88;
}
#matrix .listcommity li font {
color: #242533;
padding-top: 8px;
font-size: 0.12rem;
line-height: 0.18rem;
text-align: center;
}
/* 瀵懓鍤锟<EE9BBC> */
.mask {
background: rgba(0, 0, 0, 0.3);
position: fixed;
top: 0;
left: 0;
bottom: 0;
z-index: 99;
right: 0;
}
.ipt_frame {
width: 100%;
background: #fff;
position: absolute;
bottom: -20px;
opacity:0;
left: 0;
max-height: 70%;
overflow-y: auto;
z-index: -1;
padding: 0.37rem 0.29rem;
box-sizing: border-box;
transition: all .4s;
}
.ipt_frame.active{
bottom: 0;
opacity: 1;
z-index: 999;
overflow-y: auto;
}
.ipt_frame img{
width: 0.2rem;
height: 0.2rem;
position: absolute;
top:0.24rem;
right:0.25rem;
}
.ipt_frame h3 {
font-size: 0.23rem;
font-weight: bold;
color: #060606;
padding-bottom: 0.28rem;
}
.bottomBtn{
position: fixed;
bottom: 0rem;
z-index: 88;
left:50%;
margin-left: -1.745rem;
}
.ipt_frame>div {
display: flex;
flex-direction: column;
}
.ipt_frame>div input {
width: 100%;
height: 0.42rem;
border-radius: 0.42rem;
outline: none;
border: 0;
background: #F3F5F7;
margin-bottom: 0.18rem;
padding-left: 0.25rem;
padding-right: 0.25rem;
line-height: 0.42rem;
font-size: 0.15rem;
box-sizing: border-box;
}
.ipt_frame>div input::placeholder {
color: #242533;
}
.sureBtn {
width: 100%;
height: 0.42rem;
line-height: 0.42rem;
background: #F98F5B;
display: flex;
justify-content: center;
align-items: center;
border-radius: 0.42rem;
margin-top: 0.15rem;
font-size: 0.18rem;
color: #FFFFFF;
}
/* 閸楁洘娼幓鎰仛 */
.prompt{
display: inline-block;
min-width: 50%;
padding: 0.08rem;
background: rgba(0, 0, 0, 0);
border-radius: 0.2rem;
color: #fff;
position: fixed;
top: 20%;
left: -150%;
margin-left: -25%;
text-align: center;
transition: left .2s;
z-index: 99999;
}
.proactive{
left: 50%;
background: rgba(0, 0, 0, 0.7);
}
.saleNull{
width: 90%;
height: calc(100% - 1.6rem);
position: absolute;
z-index: 666;
background: #f4f6f9;
margin-top: -0.45rem;
box-shadow: 0rem .01rem .1rem rgba(181, 187, 193, 0.41);
border-radius:5px;
margin-left: 5%;
}
@media screen and (min-width:600px){
height: 6rem;
}
.saleNull img{
width:2.5rem;
margin: 50% 0% 50% 10%;
}
/* 瀵懓鍤锟<EE9BBC> */
.popboxshow{
width: 2.45rem;
height: 2.27rem;
background: url('https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/fail.png') no-repeat;
background-size: contain;
position: fixed;
top: 500%;
left: 50%;
z-index: 99;
transition: all 0.2s;
}
.successbox{
background: url('https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/success.png') no-repeat;
background-size: contain;
}
.popboxshow.active{
top: 25%;
margin-left: -1.225rem;
}
.popboxshow>div{
position: absolute;
top:1rem;
width: 80%;
left: 10%;
font-size: 0.15rem;
color: #57300D;
line-height: 0.23rem;
text-align: center;
height: 1rem;
}
.popboxshow>.tip{
position: absolute;
top: 0.93rem;
width: 90%;
left: 5%;
height: 1.15rem;
font-size: 0.14rem;
color: #57300D;
line-height: 0.23rem;
text-align: center;
}
.errbox>div,.successbox>div{
top: 1.15rem;
height: 0.9rem;
}
.popboxshow>div span{
display: inline-block;
width: 100%;
height: 0.31rem;
background: linear-gradient(0deg, #DAA66E 0%, #F8D2AE 100%);
border-radius: 0.31rem;
line-height: .31rem;
color: #fff;
margin-top: 0.2rem;
/* background: #ff0; */
position: absolute;
bottom:0;
left: 0;
}
.errbox>div span,.successbox>div span{
margin-top: 0.2rem;
}
.popboxshow>.tip .yettip{
margin-top: 0.1rem;
}
.popboxshow>.tip .yetexchange{
margin-top: 0.42rem;
}
.closed{
width: 0.26rem;
height: 0.26rem;
position: fixed;
z-index: 999;
left: 50%;
margin-left: -.13rem;
top: 25%;
margin-top: 2.6rem;
}
.imgitemMask{
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
display: flex;
justify-content: center;
align-items: center;
font-weight: bold;
}
#rotation .imgitemMask span{
position: absolute;
width: 100%;
height: 100%;
top: 0;
right: 0;
display: flex;
justify-content: flex-end;
}
.oneItem{
overflow: visible!important;
}
#rotation .imgitemMask span img{
width: 0.56rem;
height: 0.56rem;
position: absolute;
right: 0;
z-index: 88;
top: 0;
}
/* 立即兑换页 */
#exchangePage{
font-size: 0.14rem;
height: 100vh;
background: #fff;
}
#exchangePage .about-good{
width: 100%;
height:100vw;
background:rgb(218, 223, 226);
font-size: 0.14rem;
position: relative;
}
#exchangePage .about-good>span{
position: absolute;
top: 0.1rem;
left:0.1rem;
}
#exchangePage .about-good>span>img{
width: 0.4rem;
}
#exchangePage .about-good>img{
width: 100%;
height: 100%;
}
#exchangePage .ipt-acc{
font-size: 0.15rem;
width: 100%;
padding: 0.3rem 0;
display:flex;
justify-content:space-between;
flex-direction:column;
background: rgba(255,255,255,1);
border-top: 0.08rem solid #F3F5F7;
border-bottom: 0.08rem solid #F3F5F7;
}
#exchangePage .ipt-acc>p{
display:flex;
width: 90%;
padding: 0.05rem 0.2rem;
justify-content:space-between;
align-items:center;
box-sizing: border-box;
background: #F3F5F7;
border-radius: 0.2rem;
}
#exchangePage .ipt-acc>p>span{
width:0.8rem;
}
#exchangePage .ipt-acc input{
flex: 1;
height:0.32rem;
outline:none;
padding-right:0.1rem;
border:none;
background: #F3F5F7;
font-size: 0.15rem;
}
#exchangePage .ipt-acc input::placeholder{
color:#BAC2CA;
}
/* BAC2CA */
#exchangePage .ipt-acc>p:last-child{
margin-top: 0.15rem;
}
#exchangePage .desc-img{
width:100%;
}
#exchangePage .exchange-btn{
outline:none;
border: 0;
width:90%;
position: fixed;
height: 0.36rem;
z-index: 8;
bottom: 0.1rem;
left: 5%;
background: #D7D7D7;
font-size: 0.15rem;
border-radius:0.36rem;
}
.suspensionDom{
width: 100%;
height:100vh;
background: #fff;
position: relative;
}
.susTip{
position: fixed;
width: 0.6rem;
right: 0.2rem;
top: 0.2rem;
z-index: 12;
}
.suspensionDom>h4{
height: 0.5rem;
font-size: 0.16rem;
background: #f7f8f9;
display: flex;
justify-content: center;
align-items: center;
}
.suspensionDom>img{
width: 0.3rem;
position: absolute;
left: 0.1rem;
top:0.1rem;
}
.suspensionDom>div{
padding: 0.25rem;
box-sizing: border-box;
line-height: 0.25rem;
text-align: justify;
}
#exchangePage .swiper-container{
width: 100%;
height: 100%;
}
#exchangePage .swiper-slide>img{
height: 100%;
}

View File

@ -11,7 +11,7 @@
<script type="text/javascript" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/axios.js?v=1367936144322">
</script>
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api1_1_0.js"></script>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/test1_1_0.js"></script>
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
</head>
@ -137,7 +137,6 @@
if(linkId.length>10){
req.axiosGetplan('/plan/plan_theme/' + linkId).then(res => {
if(res.code==200){
window.location.href=res.data;
window.location.replace(res.data);
return;
}else{
@ -201,7 +200,9 @@
self.loading = false;
}
}
}).catch(err => {});
}).catch(err => {
});
},

414
test_1_1_0/exchange.html Normal file
View File

@ -0,0 +1,414 @@
<!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,viewport-fit=cover">
<title>权益兑换页</title>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/vue.min.js?v=1367936144322" 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/siteqiexchange/js/swiper.min.js"></script>
<link href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/css/swiper.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/test1_1_0.js"></script>
<style>
* {
margin: 0 auto;
padding: 0;
font-family: HYQiHei;
}
html {
font-size: 26.66666667vw;
}
body {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
</style>
</head>
<body>
<div id="exchangePage">
<div v-if="!suspension">
<div class="about-good">
<span>
<img @click="backgoodsFn" v-if="backAble"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
</span>
<img :src="goodsShow[0]" alt="" v-if="goodsShow.length<=1">
<div class="swiper-container" v-else>
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(item,i) in goodsShow" :key="i">
<img :src="item" alt="">
</div>
</div>
<div class="swiper-pagination"></div>
</div>
</div>
<div class="ipt-acc" style="position: relative;z-index: 999;">
<p v-if="acctype=='tel'"><span>账号:</span><input :type="acctype"
onkeyup="this.value=this.value.replace(/\D/g,'')"
onKeypress="return(/[\d]/.test(String.fromCharCode(event.keyCode)))" :maxlength="maxlen" v-model="account"
:placeholder="placeholder" @focus="(e)=>focusFn(e)"></p>
<p v-if="acctype=='tel'"><span>再次输入:</span> <input :type="acctype"
onkeyup="this.value=this.value.replace(/\D/g,'')"
onKeypress="return(/[\d]/.test(String.fromCharCode(event.keyCode)))" :maxlength="maxlen" v-model="reaccount"
placeholder="请再次输入" @focus="(e)=>focusFn(e)"></p>
<p v-if="acctype!='tel'"><span>账号:</span> <input :type="acctype" :maxlength="maxlen" v-model="account"
:placeholder="placeholder" @focus="(e)=>focusFn(e)"></p>
<p v-if="acctype!='tel'"><span>再次输入:</span><input :type="acctype" :maxlength="maxlen" v-model="reaccount"
placeholder="请再次输入" @focus="(e)=>focusFn(e)"></p>
</div>
<div class="bottom" id="bottom" v-show="describe.type||detailUrl">
<img :src="detailUrl" v-show="detailUrl">
<img :src="describe.bg_image" v-show="describe.type==1&&describe.bg_image">
<div v-html="describe.content" class="goodsTip" v-show="describe.type==3&&describe.content"></div>
</div>
<button class="exchange-btn" :class="exchangeOpen?bgcolor:''"
:style="{'background': exchangeOpen?bgcolor:'#D7D7D7','color':exchangeOpen?ftcolor:'#333'}"
@click="exchangeGoodsFn">立即兑换</button>
</div>
<!-- 单条弹出框 -->
<div class="prompt" :class="promtshow?'proactive':''">
{{this.promttip}}
</div>
<!-- 弹出框 -->
<div class="mask" v-if="maskshow">
</div>
<!-- 悬浮提示 -->
<div v-if="suspension" class="suspensionDom">
<img @click="closeTip" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png"
alt="">
<h4>活动规则</h4>
<div v-html="describe.content">
</div>
</div>
<img class="susTip" @click="susTipFn" v-if="describe.type==2&&describe.content&&!suspension"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/acticeTextTip.png" alt="">
<!-- 弹出框 -->
<!-- 询问 -->
<div class="popboxshow" v-if="popboxshow&&popboxtype=='兑换'" :class="popboxshow?'active':''">
<div>
<p v-if="acctype=='tel'">是否为账号{{this.account}}兑换{{this.proname}}会员?</p>
<p v-if="acctype=='text'">是否兑换{{this.proname}}会员?</p>
<span @click="surexchangeBtn">确认兑换</span>
</div>
</div>
<!-- 弹出提示 -->
<div class="popboxshow" v-if="popboxshow&&popboxtype=='提示'" :class="popboxshow?'active':''">
<div class="tip">
<p>{{tiptext}}</p>
<span @click="successchangeBtn">知道了</span>
</div>
</div>
<!-- 成功 -->
<div class="popboxshow successbox" v-if="popboxshow&&popboxtype=='成功'" :class="popboxshow?'active':''">
<div>
<p>{{this.successTip}}</p>
<span @click="successchangeBtnFn">我知道啦</span>
</div>
</div>
<img v-if="popboxshow&&popboxtype!='成功'" class="closed"
src="http://lsxd-customcard-h5.oss-cn-hangzhou.aliyuncs.com/cardpwd/img/commimgs/close.png" alt=""
@click="closeBtn()">
</div>
</body>
<script>
new Vue({
el: '#exchangePage',
data() {
return {
account: '',
reaccount: '',
maxlen: 11,
acctype: 'tel',
promttip: '',
promtshow: false,
productType: 0,
proname: '',
placeholder: '',
maskshow: false,
popboxshow: false,
exchangeOpen: false,
suspension: false,
popboxtype: '',
describe: {},
detailUrl:'',
successTip: '',
goodInfo: '',
bgcolor: '',
ftcolor: '',
backAble:true,
goodsShow: [
'https://lsxd-yunshanfu.oss-cn-hangzhou.aliyuncs.com/common_image/20220120/9bedd7af6a8a570be8f2858564f9ec6d.png'
]
}
},
created() {
let self = this;
document.title = sessionStorage.getItem('title');
let detailsConfig = JSON.parse(sessionStorage.getItem('product_detail'));
let goodsCount=sessionStorage.getItem('goodsCount');
this.backAble=goodsCount>1;
this.bgcolor = detailsConfig.button_color;
this.bgcolor = '#f00'
this.ftcolor = detailsConfig.font_color;
this.describe = detailsConfig.describe;
let goodsInform=JSON.parse(sessionStorage.getItem('goodsInfo'));//商品信息
this.goodInfo = goodsInform;
let goods_desc=goodsInform.describe_url;
this.goodsShow = goods_desc.length>0?goods_desc:[JSON.parse(sessionStorage.getItem('goodsInfo')).show_url];
this.detailUrl=goodsInform.detail_url?goodsInform.detail_url:'';
this.productType = JSON.parse(sessionStorage.getItem('goodsInfo')).account_type;
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
loop: true, // 循环模式选项
autoplay: 3000, //可选选项,自动滑动
pagination: '.swiper-pagination',
})
console.log(123, document.querySelector('.swiper-container'));
})
},
methods: {
backgoodsFn() {
let goodsCount=sessionStorage.getItem('goodsCount');
if(goodsCount>1){
// window.location.replace(document.referrer);
window.location.replace('./homepage.html');
}else{
history.go(-2);
}
// window.location.replace(document.referrer);
},
closeTip() {
this.suspension = false;
},
susTipFn() {
this.suspension = true;
},
// 单条弹框
openDialog() {
this.promtshow = true;
setTimeout(() => {
this.promtshow = false;
this.promttip = '';
}, 3000)
},
//刷新页面
successchangeBtnFn() {
console.log(window);
window.location.replace(document.referrer);
},
//兑换商品
exchangeGoodsFn() {
if (!this.account) {
this.promttip = '请输入兑换账号!'
this.openDialog();
return false;
} else {
let namereg = /\w{4}/.test(this.account);
let phonereg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/.test(this.account);
let qqreg = /^[1-9][0-9]{4,9}$/.test(this.account);
let emailsreg = /^[A-Za-z0-9\u4e00-\u9fa5\.]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/.test(this.account);
let weixinreg = /^[a-zA-Z][a-zA-Z\d_-]{5,19}$/.test(this.account);
let regflag = true;
if (this.productType == 0) {
this.placeholder = "请输入昵称";
regflag = namereg;
} else if (this.productType == 1) {
regflag = phonereg;
} else if (this.productType == 2) {
regflag = emailsreg;
} else if (this.productType == 3) {
regflag = phonereg || emailsreg;
} else if (this.productType == 4) {
regflag = qqreg;
} else if (this.productType == 5) {
regflag = phonereg || qqreg;
} else if (this.productType == 6) {
regflag = emailsreg || qqreg;
} else if (this.productType == 7) {
regflag = phonereg || emailsreg || qqreg;
} else if (this.productType == 8) {
regflag = weixinreg;
} else if (this.productType == 9) {
regflag = phonereg || weixinreg;
} else if (this.productType == 10) {
regflag = emailsreg || weixinreg;
} else if (this.productType == 11) {
regflag = phonereg || emailsreg || weixinreg;
} else if (this.productType == 12) {
regflag = qqreg || weixinreg;;
} else if (this.productType == 13) {
regflag = phonereg || qqreg || weixinreg;
} else if (this.productType == 14) {
this.placeholder = "请输入邮箱/QQ号/微信号";
regflag = emailsreg || qqreg || weixinreg;
} else {
this.placeholder = "请输入手机号/邮箱/QQ号/微信号";
regflag = phonereg || emailsreg || qqreg || weixinreg;
}
if (!regflag) {
this.promttip = "充值账号格式不正确!"
this.openDialog();
return false;
}
}
if (this.reaccount == "") {
this.promttip = "请再次输入账号!";
this.openDialog();
return false;
}
if (this.account != this.reaccount) {
this.promttip = "两次输入的账号必须一致!";
this.reaccount == ""
this.openDialog();
return false;
}
this.maskshow = true;
this.popboxshow = true;
this.popboxtype = '兑换';
},
//确定兑换
surexchangeBtn() {
let self = this;
let data = {
"key": sessionStorage.getItem('key'),
"product_id": this.goodInfo.product_id,
"account": this.account,
"code_batch_id": this.goodInfo.code_batch_id,
"token": sessionStorage.getItem('token')
}
req.axiosPostusage('/key/usage', data).then(res => {
sessionStorage.setItem('lastid', self.goodInfo.product_id);
if (res.code == 200) {
// 查询订单接口
this.popboxtype = '成功';
this.popboxshow = true;
this.successTip = '兑换成功请直接登录app使用';
} else {
this.popboxtype = '提示';
this.popboxshow = true;
this.tiptext = res.message;
if (res.code == -1) {
let goodsCount=sessionStorage.getItem('goodsCount');
if(goodsCount>1){
setTimeout(() => {
// window.location.replace(document.referrer);
window.location.replace('./homepage.html');
}, 3000);
}else{
let backUrl=window.history.length;
if(backUrl){
history.go(-backUrl+1);
}
}
}
}
}).catch(err => {
});
},
//关闭弹出框,仅关闭弹框
successchangeBtn() {
this.maskshow = false;
this.popboxshow = false;
this.account = "";
this.reaccount = "";
},
focusFn(a) {
let ele = document.querySelector('.ipt-acc');
setTimeout(function () {
ele.scrollIntoView(false);
// console.log(123,ele.scrollHeight);
document.body.scrollTop = ele.scrollHeight;
document.documentElement.scrollTop = ele.scrollHeight;
}, 400);
},
//关闭,关闭弹框
closeBtn() {
this.popboxshow = false;
this.maskshow = false;
this.account = "";
this.reaccount = "";
},
},
watch: {
account() {
if (this.account == this.reaccount) {
this.exchangeOpen = true;
}
},
reaccount() {
if (this.account == this.reaccount) {
this.exchangeOpen = true;
}
},
productType: {
immediate: true,
handler(newVal) {
this.maxlen = 50;
this.acctype = "text";
if (newVal == 0) {
this.placeholder = "请输入昵称";
} else if (newVal == 1) {
this.acctype = "tel";
this.placeholder = "请输入手机号";
this.maxlen = 11;
} else if (newVal == 2) {
this.placeholder = "请输入邮箱";
} else if (newVal == 3) {
this.placeholder = "请输入手机号或邮箱";
} else if (newVal == 4) {
this.placeholder = "请输入QQ号";
this.acctype = "tel";
this.maxlen = 10;
} else if (newVal == 5) {
this.placeholder = "请输入手机号或QQ号";
this.maxlen = 11;
this.acctype = "tel";
} else if (newVal == 6) {
this.placeholder = "请输入邮箱或QQ号";
} else if (newVal == 7) {
this.placeholder = "请输入手机号/邮箱/QQ号";
} else if (newVal == 8) {
this.placeholder = "请输入微信号";
this.maxlen = 20;
} else if (newVal == 9) {
this.placeholder = "请输入手机号或微信";
this.maxlen = 20;
} else if (newVal == 10) {
this.placeholder = "请输入邮箱或微信号";
} else if (newVal == 11) {
this.placeholder = "请输入手机号/邮箱/微信号";
} else if (newVal == 12) {
this.placeholder = "请输入QQ号或微信号";
this.maxlen = 20;
} else if (newVal == 13) {
this.placeholder = "请输入手机号/QQ号/微信号";
this.maxlen = 20;
} else if (newVal == 14) {
this.placeholder = "请输入邮箱/QQ号/微信号";
} else {
this.placeholder = "请输入手机号/邮箱/QQ号/微信号";
}
}
}
}
})
</script>
</html>

490
test_1_1_0/homepage.html Normal file
View File

@ -0,0 +1,490 @@
<!DOCTYPE html>
<html>
<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,viewport-fit=cover">
<title>权益兑换页</title>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/vue.min.js?v=1367936144322" 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/siteqiexchange/js/swiper.min.js"></script>
<link href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/siteqiexchange/css/swiper.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/test1_1_0.js"></script>
</head>
<style scoped>
* {
margin: 0 auto;
padding: 0;
font-family: HYQiHei;
}
html {
font-size: 26.66666667vw;
}
body {
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
</style>
<body>
<div id="homepage">
<div v-show="loading">
<div class="spinner">
<div class="spinner-container container1">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
<div class="spinner-container container2">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
<div class="spinner-container container3">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
</div>
</div>
<div v-show="!loading&&!suspension" class="main-body">
<!-- 轮播 -->
<div id="rotation" v-if="layout=='2'">
<!-- 顶部banner -->
<div class="topBanner">
<img class="backpresty" @click="backgoodsFn" v-if="goodsShow&&!iskey"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img :src="topImg" alt="">
</div>
<!-- //轮播 -->
<div class="saleNull" v-if="!goodsNum">
<img src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/saleNull.png" alt="">
</div>
<div class="commodity" v-if="goodsNum">
<div class="swiper-container" :class="swiperDataList.length>1?'':'oneItem'">
<div class="swiper-wrapper">
<div class="swiper-slide" v-for="(item,index) in swiperDataList" :key="index">
<div class="imgitemMask" v-if="item.available!=1">
<span>
<img v-if="item.available==4"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/yet.png" alt="">
<img v-if="item.available==2"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/future.png" alt="">
<img v-if="item.available==3"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/overdue.png" alt="">
<img v-if="item.available==6"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/empty.png" alt="">
</span>
</div>
<div class="imgbox">
<img class="le-img" :src="item.show_url"
:class="item.stock&&item.stock<0||item.available!=1&&item.available!=2?'changegray':''"></img>
</div>
<div class="item-name" v-html="item.product_name"
:class="item.stock&&item.stock<0||item.available!=1&&item.available!=2?'changegray':''">
</div>
</div>
</div>
</div>
</div>
<!-- 立即兑换 -->
<div class="exchangeBtn" :class="gstatus!=1?'noexchangeBtn':describe.type&&describe.type!=2?'bottomBtn':''"
:style="{'background': bgcolor,'color':ftcolor}" @click="exchangeBtn()">
立即兑换
</div>
</div>
<!-- 列表 -->
<div id="list" v-if="layout=='1'">
<div class="topBanner">
<img class="backpresty" @click="backgoodsFn" v-if="goodsShow&&!iskey"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img :src="topImg" alt="">
</div>
<div class="saleNull" v-if="!goodsNum">
<img src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/saleNull.png" alt="">
</div>
<ul class="listcommity" v-if="goodsNum">
<li v-for="(item,i) in swiperDataList" :key="i" @click="exchangeBtn(item)">
<div>
<img :src="item.show_url" alt=""
:class="item.stock&&item.stock<0||item.available!=1&&item.available!=2?'changegray':''">
<font :class="item.stock&&item.stock<0||item.available!=1&&item.available!=2?'changegray':''">
{{item.product_name}}</font>
</div>
<!-- <span v-if="item.available==1" :style="{'background':bgcolor?bgcolor:'#F98F5B'}"
@click="exchangeBtn(item)" >兑换</span>
<span v-if="item.available!=1" class="bindexchange" :class="item.available==2?'begin':''"
@click="exchangeBtn(item)">{{item.available==2?'即将开始':item.available==3?'已过期':item.available==4?'已兑换':'已兑完'}}</span> -->
</li>
</ul>
</div>
<!-- 矩阵 -->
<div id="matrix" v-if="layout=='3'">
<div class="topBanner">
<img class="backpresty" @click="backgoodsFn" v-if="goodsShow&&!iskey"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt="">
<img :src="topImg" alt="">
</div>
<div class="saleNull" v-if="!goodsNum">
<img src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/saleNull.png" alt="">
</div>
<ul class="listcommity" v-if="goodsNum">
<li :class="item.stock&&item.stock<0||item.available!=1&&item.available!=2?'changegray':''"
v-for="(item,i) in swiperDataList" :key="i" @click="exchangeBtn(item)">
<div>
<span class="goodsIcon">
<img v-if="item.available==4"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/yet.png" alt="">
<img v-if="item.available==2"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/future.png" alt="">
<img v-if="item.available==3"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/overdue.png" alt="">
<img v-if="item.available==6"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/empty.png" alt="">
</span>
<img :src="item.show_url" alt="">
</div>
<font>{{item.product_name}}</font>
</li>
</ul>
</div>
<div class="bottom" id="bottom" :class="layout==2?'tipset':''" v-show="describe.type">
<img :src="describe.bg_image" v-show="describe.type==1&&describe.bg_image">
<div v-html="describe.content" class="goodsTip" v-show="describe.type==3&&describe.content"></div>
</div>
</div>
<!-- 悬浮提示 -->
<div v-if="suspension" class="suspensionDom">
<img @click="closeTip" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png"
alt="">
<h4>活动规则</h4>
<div v-html="describe.content">
</div>
</div>
<!-- 弹出框 -->
<div class="mask" v-if="maskshow">
</div>
<img class="susTip" @click="susTipFn" v-if="describe.type==2&&describe.content&&!suspension&&!loading"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/acticeTextTip.png" alt="">
<!-- 单条弹出框 -->
<div class="prompt" :class="promtshow?'proactive':''">
{{this.promttip}}
</div>
<!-- 弹出提示 -->
<div class="popboxshow" v-if="popboxshow&&popboxtype=='提示'" :class="popboxshow?'active':''">
<div class="tip">
<p :class="gstatus==4||gstatus==6?'yettip':''">{{tiptext}}</p>
<span @click="successchangeBtn" :class="gstatus==4||gstatus==6?'yetexchange':''">知道了</span>
</div>
</div>
<!-- 成功 -->
<div class="popboxshow successbox" v-if="popboxshow&&popboxtype=='成功'" :class="popboxshow?'active':''">
<div>
<p>{{this.successTip}}</p>
<span @click="successchangeBtnFn">我知道啦</span>
</div>
</div>
<img v-if="popboxshow&&popboxtype!='成功'" class="closed"
src="http://lsxd-customcard-h5.oss-cn-hangzhou.aliyuncs.com/cardpwd/img/commimgs/close.png" alt=""
@click="closeBtn()">
</div>
</body>
<script>
new Vue({
el: '#homepage',
data() {
return {
swiperDataList: [], //轮播
layout: 1,
maskshow: false,
promtshow: false,
promttip: '',
loading: true,
lastid: 0,
gstatus: 1,
suspension: false,
popboxshow: false,
popboxtype: '兑换',
topImg: '',
goodsShow: true,
goodsNum: false,
exchangeCommity: {}, //兑换选择的商品
bgcolor: '',
describe: {},
ftcolor: '',
iskey:true,
allgoods: [],
showType:0,
tiptext: '还没开始哟兑换时间为2021-12-05 12:12:12至2021-01-01 12:12:12',
successTip: '兑换成功请直接登录app使用'
}
},
created() {
this.getGoods();
let productConfig = JSON.parse(sessionStorage.getItem('product_list'));
this.bgcolor = productConfig.button_color;
this.ftcolor = productConfig.font_color;
this.topImg = productConfig.top_image;
document.title = sessionStorage.getItem('title');
this.layout = productConfig.list;
this.iskey=sessionStorage.getItem('haskey');
this.describe = productConfig.describe;
},
methods: {
closeTip() {
this.suspension = false;
},
susTipFn() {
this.suspension = true;
},
onSelected(item) {
this.exchangeCommity = item;
this.gstatus = item.available;
},
backgoodsFn() {
let backUrl=window.history.length;
if(window.history.length){
history.go(-backUrl+1);
}
},
// 单条弹框
openDialog() {
this.promtshow = true;
setTimeout(() => {
this.promtshow = false;
this.promttip = '';
}, 3000)
},
//根据token获取商品信息
async getGoods() {
let self = this;
let showType = sessionStorage.getItem('showType');
this.showType=showType;
let data = {
"last_product_id": sessionStorage.getItem('lastid') | 0,
}
if (showType == 1) { //白名单
let tokenList = JSON.parse(sessionStorage.getItem('getTokenList'));
let goodsList = [];
for (item of tokenList) {
let goodsItem = [];
data.token = item;
let waitGoods = await req.axiosPostproducts('/key/products', data).then(res => {
if (res.code == 200) {
res.data.forEach(it => {
it.token = item;
});
goodsItem = res.data;
}else{
self.maskshow = true;
self.popboxtype = '提示';
self.popboxshow = true;
self.tiptext = res.message;
if (res.code == -1) {
setTimeout(() => {
window.location.href = sessionStorage.getItem('white_link');
}, 3000);
}
}
});
goodsList = goodsList.concat(goodsItem);
};
let duplicate = []; //去重
let goodsArr = []; //最终的商品集合
goodsList.forEach(item => {
if (duplicate.indexOf(item.product_id) == -1) {
duplicate.push(item.product_id);
}
});
let similar = []
duplicate.forEach(it => {
similar = goodsList.filter(iten => { //goodshow为去重后的数据
return iten.product_id == it;
});
let flag = [1, 2, 6, 8, 7, 5, 4, 3]; //显示的avarivble规则
let minIndex = 7;
similar.forEach(item => {
let flagIndex = flag.indexOf(item.available);
if (flagIndex > -1) {
if (flagIndex < minIndex)
minIndex = flagIndex;
}
})
let obj = similar.find((o) => {
return o.available == flag[minIndex]
})
goodsArr.push(obj);
});
self.swiperDataList = goodsArr;
self.goodsShow = goodsArr.length > 1;
sessionStorage.setItem('goodsCount', goodsArr.length);
if (goodsArr && goodsArr.length == 1&&goodsArr[0].available==1) {
sessionStorage.setItem('goodsInfo', JSON.stringify(goodsArr[0]));
sessionStorage.setItem('key',goodsArr[0].key);
sessionStorage.setItem('token',goodsArr[0].token);
// window.location.href = "./exchange.html";
window.location.replace("./exchange.html");
return false;
}else if(goodsArr && goodsArr.length >= 1) {
self.goodsNum = true;
self.onSelected(goodsArr[0])
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
slidesPerView: "auto",
loopAdditionalSlides: 1000,
centeredSlides: true,
observer: true,
observeParents: true,
loop: self.goodsShow,
onSlideChangeEnd: function (swiper) {
let row = goodsArr[swiper.realIndex];
self.onSelected(goodsArr[swiper.realIndex])
}
})
})
setTimeout(() => {
self.loading = false;
}, 100);
} else {
self.goodsNum = false;
}
}else {//兑换码
data.token = sessionStorage.getItem('token')
req.axiosPostproducts('/key/products', data).then(res => {
if (res.code == 200) {
self.swiperDataList = res.data;
sessionStorage.setItem('goodsCount',res.data.length);
self.goodsShow = res.data.length > 1;
if (res.data && res.data.length == 1&&res.data[0].available==1) {
sessionStorage.setItem('goodsInfo', JSON.stringify(res.data[0]));
// window.location.href = "./exchange.html";
window.location.replace("./exchange.html");
return false;
}else if(res.data && res.data.length >= 1) {
self.goodsNum = true;
self.onSelected(res.data[0])
self.$nextTick(function () {
var swiper = new Swiper('.swiper-container', {
slidesPerView: "auto",
loopAdditionalSlides: 1000,
centeredSlides: true,
observer: true,
observeParents: true,
loop: self.goodsShow,
onSlideChangeEnd: function (swiper) {
let row = res.data[swiper.realIndex];
self.onSelected(res.data[swiper.realIndex])
}
})
})
setTimeout(() => {
self.loading = false;
}, 100);
}
} else {
self.maskshow = true;
self.popboxtype = '提示';
self.popboxshow = true;
self.tiptext = res.message;
if (res.code == -1) {
let haskey = sessionStorage.getItem('haskey');
if (haskey) {
setTimeout(() => {
// window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId')+'&';
window.history.back();
// sessionStorage.clear();
}, 3000);
} else {
setTimeout(() => {
window.location.href = "./index.html?id=" + sessionStorage.getItem('linkId');
// sessionStorage.clear();
}, 3000);
}
}
}
}).catch(err => {
});
}
},
//选择商品点击兑换
exchangeBtn(row = this.exchangeCommity) {
let gstatus = row.available;
this.gstatus = gstatus;
if (gstatus == 1) {
// 跳转商品详情页面
if(this.showType==1){//白名单
sessionStorage.setItem('token',row.token);
sessionStorage.setItem('key',row.key);
}
sessionStorage.setItem('goodsInfo', JSON.stringify(row));
// window.location.href = './exchange.html';
window.location.replace("./exchange.html");
// this.maskshow = true;
// this.proname = row.product_name;
// this.productType = row.account_type;
} else {
this.maskshow = true;
this.popboxshow = true;
this.popboxtype = '提示';
if (gstatus == 2) { //未开始
this.tiptext = '还没开始哟,兑换时间为' + row.begin_time + '至' + row.end_time;
} else if (gstatus == 3) { //已结束
this.tiptext = '兑换已过期,兑换时间为' + row.begin_time + '至' + row.end_time;
} else if (gstatus == 4) { //仅兑换一次
this.tiptext = '亲,仅可兑换一次哦!';
} else if (gstatus == 5) { //累计次数达到上限
this.tiptext = '当前商品兑换次数达到上限';
} else if (gstatus == 6) { //无库存
this.tiptext = '暂无库存,看看其他商品吧~';
} else if (gstatus == 7) { //其他商品处于兑换中
this.tiptext = '当前商品不可兑换';
} else if (gstatus == 8) { //已兑换次数
this.tiptext = '当前商品正在兑换中';
}
}
},
//关闭,关闭弹框
closeBtn() {
this.popboxshow = false;
this.maskshow = false;
if (this.gstatus == 8) {
window.history.go(0);
}
},
//关闭弹出框,仅关闭弹框
successchangeBtn() {
this.maskshow = false;
this.popboxshow = false;
if (this.gstatus == 8) {
window.history.go(0);
}
},
//刷新页面
successchangeBtnFn() {
window.history.go(0);
}
}
})
</script>
</html>

382
test_1_1_0/index.html Normal file
View File

@ -0,0 +1,382 @@
<!DOCTYPE html>
<html>
<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,viewport-fit=cover">
<title>权益兑换页</title>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/common/vue.min.js?v=1367936144322" 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>
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/loading.css">
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/test1_1_0.js"></script>
<link rel="stylesheet" href="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/css/homepage1_1_0.css">
</head>
<style scoped>
html {
font-size: 26.66666667vw;
height: 100%;
}
body {
padding: 0;
font-size: .14rem;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
}
* {
padding: 0;
margin: 0;
}
</style>
<body>
<div id="app" :style={background:bgcolor}>
<!-- 单条弹出框 -->
<div class="prompt" :class="promtshow?'proactive':''">
{{this.promttip}}
</div>
<!-- 弹出提示 -->
<div class="mask" v-if="maskshow"></div>
<div class="popboxshow" v-if="popboxshow" :class="popboxshow?'active':''">
<div class="tip">
<p class="yettip">{{tiptext}}</p>
<span @click="successchangeBtn" class="yetexchange">知道了</span>
</div>
</div>
<div class="um-content" v-if="loading">
<div class="spinner">
<div class="spinner-container container1">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
<div class="spinner-container container2">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
<div class="spinner-container container3">
<div class="circle1"></div>
<div class="circle2"></div>
<div class="circle3"></div>
<div class="circle4"></div>
</div>
</div>
</div>
<div v-show="!loading">
<div class="top">
<img :src="topImg" id="top">
</div>
<div class="center" id="center">
<img :src="middleImg" style="position: absolute;z-index: 1;" id="center_img">
<input class="key" :maxlength="16" v-if="pageType==3" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入兑换码"
v-model="key" />
<input class="code" :maxlength="5" v-if="pageType==3" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入验证码"
v-model="code" />
<input class="key" :maxlength="11" v-if="pageType==1" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入手机号"
v-model="key" />
<input class="code" :maxlength="6" v-if="pageType==1" :style={color:ftcolor?ftcolor:'#333'} placeholder="请输入验证码"
v-model="code" />
<img src="#" alt="" class="codeimg" v-if="pageType==3" id="captcha_img" @click="changeyzmFn()" />
<button class="codeimg" :class="disabled?'disabledstyle':'active'" v-if="pageType==1" @click="getcode()"
:disabled="disabled">{{codetip}}</button>
<div class="submit" @click="submit"></div>
</div>
<div class="bottom" id="bottom">
<img :src="describe.bg_image" v-show="describe.type&&describe.bg_image">
<div v-html="describe.content" class="tipBottomtext" v-show="describe.type==2&&describe.content"></div>
</div>
</div>
</div>
</body>
<script>
new Vue({
el: '#app',
data() {
return {
loading: false,
pageType: 1,
key: '',
code: '',
disabled: true,
codetip: '获取验证码',
topImg: '',
middleImg: '',
describe: {},
ftcolor: '',
bgcolor: '#333',
promttip: '',
promtshow: false,
popboxshow: false,
tiptext: '提示信息',
plan_id: '',
maskshow: false
}
},
created() {
let self = this;
//获取链接携带的参数
let linkId = this.getQueryString('id');
let keyCode = this.getQueryString('key');
if (!linkId) {
let path = window.location.pathname;
let parmas = path.split('/');
let parmasResult = parmas.filter(n => n);
linkId = parmasResult.length > 0 ? parmasResult[0] : null; //链接携带落地页渲染id
keyCode = parmasResult.length > 1 ? parmasResult[1] : null; //链接携带key
}
if(linkId.length>10){
req.axiosGetplan('/plan/plan_theme/' + linkId).then(res => {
if(res.code==200){
window.location.replace(res.data);
return;
}else{
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
})
}
req.axiosGetplan('/plan/plan_theme/' + linkId).then(res => {
if (res.code == 200) {
//内置页顶图
document.title = res.data.title;
self.plan_id = res.data.plan_id
this.pageType = res.data.page;
sessionStorage.setItem('title', res.data.title);
if (res.data.page == 3) {
sessionStorage.setItem('product_list', JSON.stringify(res.data['exchange'].product_list));
sessionStorage.setItem('product_detail', JSON.stringify(res.data['exchange'].product_detail));
} else if (res.data.page == 1) {
sessionStorage.setItem('product_list', JSON.stringify(res.data['access_conf'].product_list));
sessionStorage.setItem('product_detail', JSON.stringify(res.data['access_conf'].product_detail));
}
sessionStorage.setItem('linkId', linkId);
//是否携带token
if (keyCode) {
let data = {
key: keyCode
}
req.axiosPostTogppds('/key/loginFromLink', data).then(res => {
if (res.code == 200) {
sessionStorage.setItem('key', keyCode);
sessionStorage.setItem('token', res.data.token);
sessionStorage.setItem('haskey', keyCode);
this.promttip = '正在加载商品...';
this.openDialog();
window.location.replace("/homepage.html");
} else {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
}).catch(err => {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
});
} else {
let keyName;
if (this.pageType == 3) {
captchaimg();
keyName = 'exchange';
} else if (this.pageType == 1) {
keyName = 'access_conf';
}
self.bgcolor = res.data[keyName].land.bg_color;
self.ftcolor = res.data[keyName].land.font_color;
self.topImg = res.data[keyName].land.top_image;
self.middleImg = res.data[keyName].land.middle_image;
self.describe = res.data[keyName].land.describe;
self.loading = false;
}
}
}).catch(err => {
});
},
mounted() {
this.$nextTick(() => {
let img = document.getElementById("center_img")
let center = document.getElementById("center")
img.onload = function (e) {
center.style.height = img.clientHeight + "px";
}
})
},
methods: {
successchangeBtn() {
this.popboxshow = false;
this.maskshow = false;
},
getcode() {
let self = this;
let data = {
'mobile': this.key,
'plan_id': this.plan_id
}
req.axiosPostsendMobile('/sms/sendMobileExchangeCode', data).then(res => {
if (res.code == 200) {
let timeId = 60;
let timer = setInterval(() => {
timeId--;
if (timeId > 0) {
self.codetip = timeId + 's';
self.disabled = true;
} else {
clearInterval(timer);
self.codetip = '获取验证码';
self.disabled = false;
}
}, 1000);
} else {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
}).catch(err => {});
},
submit() {
let self = this;
if (!this.key) {
this.promttip = '请输入兑换码';
this.openDialog();
} else {
if (!this.code) {
this.promttip = '请输入验证码';
this.openDialog();
} else {
if (this.pageType == 3) { //兑换码
let data = {
"key": this.key,
"code": this.code,
"code_unique_str": sessionStorage.getItem('unique_str')
}
req.axiosPostKey('/key/login', data).then(res => {
if (res.code == 200) {
sessionStorage.setItem('key', self.key);
sessionStorage.setItem('token', res.data.token);
this.promttip = '正在加载商品...';
this.openDialog();
setTimeout(() => {
window.location.href = './homepage.html';
}, 2000);
} else {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
}
}).catch(err => {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
});
} else if (this.pageType == 1) { //白名单
let par = {
"code": this.code,
"mobile": this.key,
"plan_id": this.plan_id
}
let getTokenList = [];
req.axiosPostgetKey('/key/getKeyByMobile', par).then(async res => {
if (res.data.code == 200) {
sessionStorage.setItem('key', self.key);
sessionStorage.setItem('token', res.data.data);
sessionStorage.setItem('showType', 1);
sessionStorage.setItem('white_link', window.location.href);
let tokenArr = res.data.data;
let istoGoods = false;
for (item of tokenArr) {
let obj = {}
let data = {
"code_unique_str": res.headers['unique-str'],
"key": item
}
let wait = await req.axiosPostKey('/key/loginFromMobileKey', data).then(res => {
if (res.code == 200) {
getTokenList.push(res.data.token);
istoGoods = true;
} else {
if(res.message=='活动暂停中'){
self.tiptext = res.message;
istoGoods = false;
}else{
self.tiptext = res.message;
}
}
}).catch(err => {
self.maskshow = true;
self.tiptext = res.message;
self.popboxshow = true;
});
};
if (istoGoods) {
sessionStorage.setItem('getTokenList', JSON.stringify(getTokenList));
this.promttip = '正在加载商品...';
this.openDialog();
setTimeout(() => {
window.location.href = './homepage.html';
}, 2000);
}else{
self.maskshow = true;
self.tiptext = self.tiptext;
self.popboxshow = true;
}
} else {
self.maskshow = true;
self.tiptext = res.data.message;
self.popboxshow = true;
}
}).catch(err => {});
}
}
}
},
getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
},
// 单条弹框
openDialog() {
this.promtshow = true;
setTimeout(() => {
this.promtshow = false;
this.promttip = '';
}, 3000)
},
changeyzmFn() {
captchaimg()
}
},
components: {
},
watch: {
key(val) {
if (this.pageType == 1) {
if (val.length == 11) {
this.disabled = false;
} else {
this.disabled = true;
}
}
}
}
});
</script>
</html>