提交 475b8cf3 authored 作者: matian's avatar matian

commit:签到h5代码提交

上级 8cf10436
VITE_LOGIN_URL=https://login.ezijing.com/auth/login/index
VITE_LOGIN_URL=https://login2.ezijing.com/auth/login/index
......@@ -10,7 +10,9 @@
"axios": "^0.21.1",
"element-ui": "^2.15.5",
"query-string": "^7.0.1",
"swiper": "^5.4.5",
"vue": "^2.6.14",
"vue-awesome-swiper": "^4.1.1",
"vue-router": "^3.5.2",
"vuex": "^3.6.2"
},
......@@ -2102,6 +2104,14 @@
"node": ">= 0.8.0"
}
},
"node_modules/dom7": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.5.tgz",
"integrity": "sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA==",
"dependencies": {
"ssr-window": "^2.0.0"
}
},
"node_modules/ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
......@@ -3651,6 +3661,11 @@
"node": ">=6"
}
},
"node_modules/ssr-window": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-2.0.0.tgz",
"integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A=="
},
"node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
......@@ -3738,6 +3753,23 @@
"integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
"dev": true
},
"node_modules/swiper": {
"version": "5.4.5",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-5.4.5.tgz",
"integrity": "sha512-7QjA0XpdOmiMoClfaZ2lYN6ICHcMm72LXiY+NF4fQLFidigameaofvpjEEiTQuw3xm5eksG5hzkaRsjQX57vtA==",
"hasInstallScript": true,
"dependencies": {
"dom7": "^2.1.5",
"ssr-window": "^2.0.0"
},
"engines": {
"node": ">= 4.7.0"
},
"funding": {
"type": "patreon",
"url": "https://www.patreon.com/vladimirkharlampidi"
}
},
"node_modules/thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
......@@ -3988,6 +4020,18 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
"integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
},
"node_modules/vue-awesome-swiper": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/vue-awesome-swiper/-/vue-awesome-swiper-4.1.1.tgz",
"integrity": "sha512-50um10t6N+lJaORkpwSi1wWuMmBI1sgFc9Znsi5oUykw2cO5DzLaBHcO2JNX21R+Ue4TGoIJDhhxjBHtkFrTEQ==",
"engines": {
"node": ">=8"
},
"peerDependencies": {
"swiper": "^5.2.0",
"vue": "2.x"
}
},
"node_modules/vue-router": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
......@@ -5838,6 +5882,14 @@
}
}
},
"dom7": {
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.5.tgz",
"integrity": "sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA==",
"requires": {
"ssr-window": "^2.0.0"
}
},
"ee-first": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
......@@ -7049,6 +7101,11 @@
"resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
"integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw=="
},
"ssr-window": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-2.0.0.tgz",
"integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A=="
},
"statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
......@@ -7120,6 +7177,15 @@
"integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
"dev": true
},
"swiper": {
"version": "5.4.5",
"resolved": "https://registry.npmjs.org/swiper/-/swiper-5.4.5.tgz",
"integrity": "sha512-7QjA0XpdOmiMoClfaZ2lYN6ICHcMm72LXiY+NF4fQLFidigameaofvpjEEiTQuw3xm5eksG5hzkaRsjQX57vtA==",
"requires": {
"dom7": "^2.1.5",
"ssr-window": "^2.0.0"
}
},
"thenify": {
"version": "3.3.1",
"resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
......@@ -7326,6 +7392,12 @@
"resolved": "https://registry.npmjs.org/vue/-/vue-2.6.14.tgz",
"integrity": "sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ=="
},
"vue-awesome-swiper": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/vue-awesome-swiper/-/vue-awesome-swiper-4.1.1.tgz",
"integrity": "sha512-50um10t6N+lJaORkpwSi1wWuMmBI1sgFc9Znsi5oUykw2cO5DzLaBHcO2JNX21R+Ue4TGoIJDhhxjBHtkFrTEQ==",
"requires": {}
},
"vue-router": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.5.2.tgz",
......
......@@ -13,7 +13,9 @@
"axios": "^0.21.1",
"element-ui": "^2.15.5",
"query-string": "^7.0.1",
"swiper": "^5.4.5",
"vue": "^2.6.14",
"vue-awesome-swiper": "^4.1.1",
"vue-router": "^3.5.2",
"vuex": "^3.6.2"
},
......
......@@ -27,3 +27,11 @@ export function uploadFile(data) {
headers: { 'Content-Type': 'multipart/form-data' }
})
}
// 签到
export const signIn=(id)=> {
return httpRequest.post(`/api/marketing/api/v1/activity/${id}/sign-in`)
}
//签到详情
export const signInDetail = (id) => {
return httpRequest.get(`/api/marketing/api/v1/activity/${id}/sign-in-detail`)
}
; (function (win, doc) {
var resize = 'orientationchange' in window ? 'orientationchange' : 'resize'
/* 使用rem 动态计算跟font-size值 */
function resizeRoot() {
var wWidth = (win.screen.width > 0)
? ((win.innerWidth >= win.screen.width || win.innerWidth === 0) ? win.screen.width : win.innerWidth)
: win.innerWidth
var wFsize = (wWidth > 750 ? 750 : wWidth) / 750 * 100
doc.documentElement.style.fontSize = wFsize + 'px'
}
win.addEventListener(resize, resizeRoot, false)
doc.addEventListener('DOMContentLoaded', resizeRoot, false)
})(window, document)
......@@ -6,12 +6,18 @@ import beforeEnter from './utils/beforeEnter'
// 公共css
import '@/assets/css/base.css'
import './assets/rem/rem.js'
// Element-UI
import '@/assets/theme/index.css'
import ElementUI from 'element-ui'
Vue.use(ElementUI)
import VueAwesomeSwiper from 'vue-awesome-swiper'
Vue.use(VueAwesomeSwiper, /* { default options with global component } */)
// 路由钩子函数
router.beforeEach(beforeEnter)
......
import Vue from 'vue'
import Vuex from 'vuex'
import { getUser, logout } from '@/api/base'
import { getUser, logout} from '@/api/base'
Vue.use(Vuex)
......
<template>
<div>sign</div>
<div class="sign_content">
<transition name="fade">
<swiper id="swiperBox" v-bind:options="swiperOption" ref="mySwiper">
<!-- 第一页 -->
<swiper-slide class="swiper-slide1">
<div class="top">
<img :src="signInfo.market_background_img || defaultImg" alt="" />
<div class="sign_state">
{{ status === true ? "签到成功" : "未签到" }}
</div>
<!-- <div class="remark">{{ signInfo.student.remark }}</div> -->
</div>
<div class="bottom" v-if="signInfo.market_other_img !== ''">
<img :src="detail_icon" alt="" />
<div class="detail_text">查看详情</div>
</div>
</swiper-slide>
<!-- 第二页 -->
<swiper-slide class="swiper-slide2" v-if="signInfo.market_other_img !== ''">
<img :src="signInfo.market_other_img" alt="" class="detailPage" />
</swiper-slide>
</swiper>
</transition>
</div>
</template>
<script>
export default {}
import { signInDetail, signIn } from "@/api/base.js";
import { Swiper, SwiperSlide } from "vue-awesome-swiper";
export default {
components: {
Swiper,
SwiperSlide,
},
data() {
return {
swiperOption: {
notNextTick: true,
direction: "vertical",
grabCursor: true,
setWrapperSize: true,
autoHeight: true,
slidesPerView: 1,
mousewheel: false,
mousewheelControl: false,
height: window.innerHeight,
resistanceRatio: 0,
observeParents: true,
debugger: true,
},
signInfo:{},//签到详情
status: false, //签到状态
defaultImg: "https://webapp-pub.ezijing.com/marketing/signIn_img.png", //默认签到背景图
detail_icon: "https://webapp-pub.ezijing.com/marketing/detail_img.png", //查看详情图标
};
},
computed: {
user() {
return this.$store.state.user;
},
swiper() {
return this.$refs.mySwiper.swiper;
},
},
mounted() {
this.getSignInDetail(); //获取页面详情
},
methods: {
getSignInDetail() {
let id = this.$route.query.id;
signInDetail(id).then((res) => {
//调用签到详情接口
if (res.code == 0) {
this.signInfo = res.data;//获取签到详情数据
let time = new Date().getTime();
this.signInfo.sign_start_time = new Date(this.signInfo.sign_start_time).getTime();
this.signInfo.sign_end_time = new Date(this.signInfo.sign_end_time).getTime();
if(time - this.signInfo.sign_end_time >= 0){
this.$message.error(`该活动签到时间已于${this.signInfo.sign_end_time}结束`)
}else if(time - this.signInfo.sign_start_time < 0){
this.$message.error(`该活动尚未到开始签到时间, 请于${this.signInfo.sign_start_time}之后签到`);
}else if((time - this.signInfo.sign_start_time > 0 && time - this.signInfo.sign_end_time < 0) ||time - this.sign_start_time == 0){
signIn(id).then((res) => {
//调用签到接口
if (res.code == 0) {
this.status = res.data.status; //签到状态
if(this.status = true){
this.$message.success('签到成功')
}else{
this.$message.error('签到失败')
}
}
});
}
}
});
}
},
};
</script>
<style></style>
<style lang="scss" scoped>
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.5s;
}
.fade-enter,
.fade-leave-to {
opacity: 0;
}
.sign_content {
width: 100%;
height: 100%;
background-color: #f2f2f2;
overflow: -Scroll;
overflow-y: hidden;
.top {
width: 6.89rem;
height: 10.52rem;
background-color: #fff;
border-radius: 20px;
position: absolute;
margin-top: 0.38rem;
left: 50%;
transform: translateX(-50%);
text-align: center;
img {
width: 4.59rem;
height: 1.81rem;
margin-top: 1.99rem;
}
.sign_state {
margin: auto;
font-size: 0.42rem;
font-weight: bold;
color: #333333;
margin-bottom: 0.96rem;
}
.remark {
margin: auto;
font-size: 0.28rem;
font-weight: 400;
color: #666666;
margin-bottom: 2.39rem;
}
}
.bottom {
position: absolute;
left: 50%;
transform: translateX(-50%);
text-align: center;
margin-top: 10.63rem;
img {
width: 0.48rem;
height: 0.34rem;
}
.detail_text {
font-size: 0.24rem;
font-weight: 400;
color: #666666;
margin: auto;
}
}
.detailPage {
width: 100%;
height: 100%;
line-height: 100%;
}
}
</style>
......@@ -14,7 +14,7 @@ export default defineConfig({
cert: fs.readFileSync(path.join(__dirname, './certs/dev.ezijing.com.pem'))
},
proxy: {
'/api': 'https://shop-admin.ezijing.com'
'/api': 'https://marketing2.ezijing.com'
}
},
resolve: {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论