mobileclient/goods-v2/ysf-reduce.html

308 lines
13 KiB
HTML
Raw Normal View History

2024-04-28 16:10:00 +08:00
<!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="../ysf.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/common/modelPop.js"></script>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/api2_0.js?v=1000"></script>
<script src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/js/libs.js?v=sdfhksdfklwrwer"></script>
</head>
<body>
<div id="ysf">
随便测试一下,勿动
2024-05-08 17:57:58 +08:00
<!-- <img @click="backGoodsFn" v-if="!isMini" class="backIcon"
src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/backprepageBtn.png" alt=""> -->
2024-04-28 16:10:00 +08:00
<div class="prompt" :class="promptShow?'proactive':''">
{{prompt_text}}
</div>
<!-- 弹出提示 -->
<model-pop @backFunction="backGoodsFn" :show_close="is" :show.sync="popShow" title="温馨提示" :status="popStatus"
:text="popText"></model-pop>
<!-- 单条弹出框 -->
<img class="bubble" src="https://lsxdemall.oss-cn-beijing.aliyuncs.com/MarketingSystem/img/ysf-logo.png" alt="">
2024-04-29 15:37:18 +08:00
<div class="content" v-if="ysf">
2024-04-28 16:10:00 +08:00
<p class="title">{{ysf.entity.batch_goods_name}}
<span class="send_num" v-if="ysf.entity.send_num>1">x{{ysf.entity.send_num}}</span>
</p>
<div class="countdown" v-if="this.outTime.length>0">
<p>{{this.outTime[0]}}</p>
<p>{{this.outTime[1]}}</p>
<p>{{this.outTime[2]}}</p>
</div>
<div class="information">
<p class="information-p1" :style="{fontSize:fonts().a}">
满{{parseFloat(ysf.entity.denomination)}}元减{{parseFloat(ysf.entity.reduce_amount)}}元
</p>
<p class="information-p2" v-if="receive_time.timer_show!=2">请在
{{receive_time.effect_time.start_time}} ~ {{receive_time.effect_time.end_time}} 内领取 </p>
<div class="card">
<p class="type">
{{ysf.entity.card_type|cardType}}
</p>
</div>
</div>
<div class="form">
<div v-show="ysf.available!==9">
<p class="form-label">云闪付账号</p>
<input class="form-input" maxlength="11" v-model="account" type="text" placeholder="请输入手机号" />
<input class="form-input mt0" maxlength="11" v-model="confirmAccount" type="text"
placeholder="请再次输入手机号" />
<p class="form-note">
温馨提示:单笔交易大于{{parseFloat(ysf.entity.denomination)}}元可立减{{parseFloat(ysf.entity.reduce_amount)}}元
</p>
</div>
2024-06-18 14:02:23 +08:00
<button :class="ysf.available ===9 ?'disable':''" class="form-button"
2024-04-28 16:10:00 +08:00
@click="submit">{{ysf.available===9?buttonTextFun(ysf.type,'received'):buttonTextFun(ysf.type,'receive')}}</button>
</div>
<div class="segmentation">
<i class="left"></i>
<i class="middle"></i>
<i class="right"></i>
</div>
<div class="illustrate">
<p class="illustrate-title">可用时间</p>
<p class="received-fiexd" v-if="receive_time.use_time.type=='received'">
领取后{{receive_time.use_time.effect_date_type==0?'立即':'次日凌晨'}}生效,有效期
{{receive_time.use_time.effect_day}} 天
</p>
<p class="received-fiexd" v-if="receive_time.use_time.type=='fiexd'">
可用时间:{{receive_time.use_time.fiexd_time.start_time}} ~ {{receive_time.use_time.fiexd_time.end_time}}
</p>
<div class="available_time" v-if="receive_time.use_time.type=='week'">
<ul class="timeList">
<li v-for="(item,index) in sortWeeks(receive_time.use_time.week)" :key="index">
<p>{{item}}</p>
<div>
<p v-for="(item2,index2) in receive_time.use_time.time" :key="index2">
{{item2[0]}}~{{item2[1]}}
</p>
</div>
</li>
</ul>
</div>
<div class="available_time" v-if="receive_time.use_time.type=='irregular'">
<ul class="timeList">
<li v-for="(item,index) in receive_time.use_time.day" :key="index">
<p>{{item[0]}}至{{item[1]}}</p>
<div>
<p v-for="(item2,index2) in receive_time.use_time.time" :key="index2">
{{item2[0]}}~{{item2[1]}}
</p>
</div>
</li>
</ul>
</div>
<p class="illustrate-title">活动说明</p>
<p class="illustrate-text" v-html="ysf.instruction"></p>
</div>
</div>
</div>
</body>
<script>
const phoneReg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/;
new Vue({
el: "#ysf",
data() {
return {
2024-04-29 15:37:18 +08:00
ysf: null,
2024-04-28 16:10:00 +08:00
account: null,
confirmAccount: null,
backAble: (~~sessionStorage.getItem('goodsCount')) > 1,
promptShow: false,
popShow: false,
popText: '',
popStatus: 1, /*1 成功 2提示 3失败 */
prompt_text: '',
cls: null,
2024-04-29 15:37:18 +08:00
receive_time: null,
2024-04-28 16:10:00 +08:00
isMini: false,
is: false,
loading: false,
outTime: []
};
},
components: {
modelPop
},
2024-04-29 15:37:18 +08:00
created() {
let token = localStorage.getItem('token');
if (token) {
req.axiosPost('/key/products', { token }).then(res => {
if (res.code === 200) {
this.ysf = res.data[0];
this.receive_time = res.data[0].entity.time_limit;
2024-06-18 15:52:57 +08:00
/* 初始弹窗 */
if (this.ysf && ![1, 9].includes(this.ysf.available)) {
this.is = true;
this.tip(product_status(this.ysf.available, this.ysf), 2);
}
2024-04-29 15:37:18 +08:00
}
})
}
},
2024-04-28 16:10:00 +08:00
mounted() {
document.title = localStorage.getItem('title');
/* 判断是否是微信小程序内 */
let ua = window.navigator.userAgent.toLowerCase();
this.isMini = /miniProgram/i.test(ua);
/* 倒计时 */
const key_expiration_time = sessionStorage.getItem('key_expiration_time');
if (key_expiration_time != 0) {
const cls = setInterval(() => {
const time = pageOutTime(key_expiration_time);
if (time) {
this.outTime = time;
} else {
this.outTime = ['00', '00', '00'];
clearInterval(cls);
}
}, 1000);
} else {
this.outTime = [];
}
},
filters: {
cardType(val) {
return val.map((item) => {
return item == 1 ? "借记卡" : "信用卡" + " ";
}).join(" ");
},
},
methods: {
/* 立即领取 */
submit() {
2024-06-18 13:44:05 +08:00
if ([1, 11].includes(this.ysf.available)) {
if (phoneReg.test(this.account) && this.confirmAccount) {
if (this.account === this.confirmAccount) {
this.finalSubmit();
} else {
this.tips('手机号输入不一致');
}
2024-04-28 16:10:00 +08:00
} else {
2024-06-18 13:44:05 +08:00
this.tips('请输入正确的手机号');
2024-04-28 16:10:00 +08:00
}
}
},
/* 验证后 最终提交 */
finalSubmit() {
if (this.loading) return;
this.loading = true;
const self = this;
let data = {
key: localStorage.getItem("key"),
goods_id: this.ysf.entity.goods_id,
code_batch_id: this.ysf.code_batch_id,
token: localStorage.getItem("token"),
account: this.account
};
/* 创建订单 */
req.axiosPost("/key/usage", data)
.then(({ code, data, message }) => {
this.loading = false;
if (code == 200) {
this.verificationYsf(data);
} else {
this.axiosErrorFun(code, message, 2);
}
})
.catch((err) => { this.loading = false; });
},
/* 核销云闪付立减金 */
verificationYsf({ order_number }) {
let params = {
order_number: order_number,
channel: "3", //立减金发放渠道1支付宝2微信 3云闪付
channel_user_id: this.account,
receive_mode: 1,
};
req.axiosPost("/voucher/grant", params)
.then(({ code, message }) => {
if (code === 200) {
this.is = false;
this.ysf.available = 9;
this.tip('领取成功,请前往【云闪付】-【卡包】中查看', 1);
} else {
this.axiosErrorFun(code, message, 2);
}
})
.catch((err) => { });
},
/* 返回 */
backGoodsFn() {
/* 判断是否web-view打开 则不返回 */
if (this.isMini) return;
2024-05-08 17:26:18 +08:00
history.go(-3);
2024-04-28 16:10:00 +08:00
},
/* 触发提示 */
tip(text, status) {
this.popText = text;
this.popStatus = status; /*1 成功 2提示 3失败 */
this.popShow = true;
},
/* 接口异常处理 */
axiosErrorFun(code, message, status) {
this.is = false;
if (code == 403) {
if (this.backAble) {
this.tip(message, status);
setTimeout(() => {
window.location.href = localStorage.getItem('entryLink');
}, 3000);
} else {
this.tip(message, status);
}
} else {
this.tip(message, status);
}
},
/* 触发提示 */
tips(text) {
this.cls && clearTimeout(this.cls);
this.prompt_text = text;
this.promptShow = true;
this.cls = setTimeout(() => {
this.promptShow = false;
}, 3000);
},
/* 动态font */
fonts() {
const { denomination, reduce_amount } = this.ysf.entity;
const defaultCss = { a: '0.34rem' };
const count = String(parseFloat(denomination)).length + String(parseFloat(reduce_amount)).length + 4;
if (count > 12) {
return {
a: 0.34 - ((count - 12) / 100 * 1.8) + 'rem',
};
} else {
return defaultCss;
}
}
}
})
</script>
</html>