活动
This commit is contained in:
@@ -8,3 +8,5 @@ VITE_APP_ENV = 'development'
|
||||
VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
|
||||
#
|
||||
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
|
||||
# 资源地址
|
||||
VITE_RESOURSE_URL = 'http://huodong.ahduima.com'
|
||||
@@ -9,3 +9,6 @@ VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
|
||||
|
||||
#
|
||||
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
|
||||
|
||||
# 资源地址
|
||||
VITE_RESOURSE_URL = 'http://huodong.ahduima.com'
|
||||
75
src/jtools/api/activity.js
Normal file
75
src/jtools/api/activity.js
Normal file
@@ -0,0 +1,75 @@
|
||||
import request from '../request/index.js';
|
||||
|
||||
//查询活动列表
|
||||
export function queryActivityList(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/list',
|
||||
method: 'get',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
//查询活动详情
|
||||
export function queryActivityDetail(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/detail',
|
||||
method: 'get',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
//查询抽奖次数
|
||||
export function queryLuckyNum(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/lucky/num',
|
||||
method: 'get',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
//查询中奖结果
|
||||
export function queryLuckyResult(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/lucky/result',
|
||||
method: 'get',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
//录入中奖结果
|
||||
export function saveWinner(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/winner/save',
|
||||
method: 'POST',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
//核销
|
||||
export function receiveWinner(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/winner/receive',
|
||||
method: 'POST',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
//查询中奖记录
|
||||
export function getLuckyRecord(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/lucky/record',
|
||||
method: 'get',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
|
||||
//查询中奖记录
|
||||
export function canRecieveGift(data) {
|
||||
return request({
|
||||
url: 'activity/applet/activity/receive/user',
|
||||
method: 'get',
|
||||
data,
|
||||
noToken: true
|
||||
});
|
||||
}
|
||||
@@ -32,7 +32,7 @@ function service(options = {}) {
|
||||
useUserStore().logoutWithoutToken()
|
||||
//请求成功
|
||||
resolved(res.data);
|
||||
} else if(res.data.code != '0000'&&res.data.code !='4001') {
|
||||
} else if(res.data.code != '0000'&&res.data.code !='4001'&&res.data.code != 200) {
|
||||
uni.showToast({
|
||||
title: res?.data?.message || '访问出错',
|
||||
icon: 'none'
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
<template>
|
||||
<view style="padding-bottom: 50px;background-color: #9e0f00;">
|
||||
<image class="wp100" mode="widthFix" src="https://jwl-jiakao-bq.oss-cn-hangzhou.aliyuncs.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/ggl_header.png"></image>
|
||||
<view class="tip">您今日还剩1次刮奖机会,共有999人参加活动</view>
|
||||
<view class="tip">您今日还剩{{actiNum}}次刮奖机会,共有{{total}}人参加活动</view>
|
||||
<view class="scraping">
|
||||
<scraping-card :result="result" watermark="刮一刮" title="刮一刮赢取大奖" ref="reset" ></scraping-card>
|
||||
<view v-if="showBtn" class="gj">
|
||||
<view class="btn" @tap="handleScrap">
|
||||
点我刮奖
|
||||
</view>
|
||||
</view>
|
||||
<scraping-card style="z-index: 20;" :result="result" watermark="刮一刮" title="刮一刮赢取大奖" ref="reset" @complete="handleComplete" >
|
||||
<cover-view v-if="showBtn" class="gj">
|
||||
<cover-view class="btn" @tap="handleScrap">
|
||||
{{btnText}}
|
||||
</cover-view>
|
||||
</cover-view>
|
||||
</scraping-card>
|
||||
</view>
|
||||
<view class="relative mt30 m20lr">
|
||||
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
|
||||
<view class="title">中奖名单</view>
|
||||
<view class="card">
|
||||
<view v-for="(item, index) in winningList" :key="index" class="card-item">
|
||||
<text class="item-text">188****8888</text>
|
||||
<text class="item-text">一等奖</text>
|
||||
<text class="item-text">{{ hidePhoneNumber(item.phone) }}</text>
|
||||
<text class="item-text">{{ item.awards }}</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -24,35 +25,113 @@
|
||||
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
|
||||
<view class="title">活动说明</view>
|
||||
<view class="card">
|
||||
<view class="item-text">1. 中奖率100%</view>
|
||||
<view class="item-text">2. 报名后可获得一次抽奖机会</view>
|
||||
<view class="item-text">3. 中奖用户请于"我的-我的奖品"中查看并核销</view>
|
||||
<u-parse :content="activityRule"></u-parse>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
import ScrapingCard from './scraping.vue'
|
||||
import { queryActivityDetail,queryLuckyNum,queryLuckyResult,saveWinner,getLuckyRecord } from '@/jtools/api/activity'
|
||||
export default {
|
||||
components: {
|
||||
ScrapingCard
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
result: '特等奖',
|
||||
detailId: undefined,
|
||||
result: '',
|
||||
btnText: '点我刮奖',
|
||||
showBtn: true,
|
||||
winningList: [1,2,3,4,5,6,7,8]
|
||||
actiNum: 0,
|
||||
total: 0,
|
||||
winningList: [],
|
||||
activityRule: undefined
|
||||
}
|
||||
},
|
||||
onLoad(op) {
|
||||
this.detailId = op.detailId
|
||||
this.getActivityDetail()
|
||||
this.getActivityNum()
|
||||
this.searchWinningList()
|
||||
},
|
||||
methods: {
|
||||
handleScrap() {
|
||||
if(!this.actiNum) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '暂无抽奖机会'
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
queryLuckyResult({
|
||||
detailId: this.detailId
|
||||
}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
this.result = resp.msg
|
||||
this.showBtn = !this.showBtn
|
||||
this.$refs.reset.init()
|
||||
}
|
||||
})
|
||||
},
|
||||
getActivityDetail() {
|
||||
queryActivityDetail({detailId: this.detailId}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
this.activityRule = resp.data.activity.activityRule
|
||||
}
|
||||
})
|
||||
},
|
||||
hidePhoneNumber(phoneNumber) {
|
||||
// 验证电话号码格式
|
||||
if (!/^\d{11}$/.test(phoneNumber)) {
|
||||
return "无效的电话号码";
|
||||
}
|
||||
|
||||
// 替换中间四位数字为星号
|
||||
return phoneNumber.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
|
||||
},
|
||||
getActivityNum() {
|
||||
queryLuckyNum({
|
||||
detailId: this.detailId,
|
||||
phone: useUserStore().userInfo?.phone || ''
|
||||
}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
this.actiNum = resp.data.drawNum
|
||||
this.total = resp.data.totalPeople
|
||||
}
|
||||
})
|
||||
},
|
||||
searchWinningList() {
|
||||
getLuckyRecord({
|
||||
detailId: this.detailId,
|
||||
pageSize: 8
|
||||
}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
this.winningList = resp.rows
|
||||
}
|
||||
})
|
||||
},
|
||||
handleComplete() {
|
||||
saveWinner({
|
||||
phone: useUserStore().userInfo?.phone || '',
|
||||
detailId: this.detailId,
|
||||
awards: this.result
|
||||
}).then(resp => {
|
||||
this.btnText = '再刮一次!'
|
||||
if(resp.code == 200) {
|
||||
this.getActivityNum()
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: `恭喜获得${this.result}`
|
||||
})
|
||||
this.showBtn = true
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
@@ -1,16 +1,11 @@
|
||||
<template>
|
||||
<view class="scraping-happy" id="container">
|
||||
<canvas
|
||||
canvas-id="scraping-happy"
|
||||
class="scraping__canvas"
|
||||
:disable-scroll="true"
|
||||
@touchstart="touchstart"
|
||||
@touchmove="touchmove"
|
||||
@touchend="touchend"
|
||||
/>
|
||||
<canvas canvas-id="scraping-happy" class="scraping__canvas" :disable-scroll="true" @touchstart="touchstart"
|
||||
@touchmove="touchmove" @touchend="touchend" />
|
||||
<cover-view class="scraping__view">
|
||||
{{ showText }}
|
||||
</cover-view>
|
||||
<slot></slot>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -58,7 +53,7 @@ export default {
|
||||
/** @name 刮开百分之多少直接消除图层,为0的时候不消除 **/
|
||||
percentage: {
|
||||
type: Number,
|
||||
default: 60,
|
||||
default: 40,
|
||||
},
|
||||
result: {
|
||||
type: String,
|
||||
@@ -78,19 +73,25 @@ export default {
|
||||
maskSetting() {
|
||||
return {
|
||||
...MASK,
|
||||
...(typeof this.mask === 'object' ? this.mask : { text: this.mask }),
|
||||
...(typeof this.mask === 'object' ? this.mask : {
|
||||
text: this.mask
|
||||
}),
|
||||
}
|
||||
},
|
||||
watermarkSetting() {
|
||||
return {
|
||||
...WATERMARK,
|
||||
...(typeof this.watermark === 'object' ? this.watermark : { text: this.watermark }),
|
||||
...(typeof this.watermark === 'object' ? this.watermark : {
|
||||
text: this.watermark
|
||||
}),
|
||||
};
|
||||
},
|
||||
titleSetting() {
|
||||
return {
|
||||
...TITLE,
|
||||
...(typeof this.title === 'object' ? this.title : { text: this.title }),
|
||||
...(typeof this.title === 'object' ? this.title : {
|
||||
text: this.title
|
||||
}),
|
||||
};
|
||||
}
|
||||
},
|
||||
@@ -105,7 +106,10 @@ export default {
|
||||
const query = uni.createSelectorQuery().in(this);
|
||||
query
|
||||
.select('#container')
|
||||
.boundingClientRect(({ width, height }) => {
|
||||
.boundingClientRect(({
|
||||
width,
|
||||
height
|
||||
}) => {
|
||||
this.width = width;
|
||||
this.height = height;
|
||||
setTimeout(() => {
|
||||
@@ -117,7 +121,10 @@ export default {
|
||||
},
|
||||
/** @name 初始化canvas状态 **/
|
||||
initCanvas() {
|
||||
const { width, height } = this;
|
||||
const {
|
||||
width,
|
||||
height
|
||||
} = this;
|
||||
// 清空矩形内容
|
||||
ctx.clearRect(0, 0, width, height);
|
||||
// 设置画笔颜色
|
||||
@@ -139,7 +146,10 @@ export default {
|
||||
// 旋转
|
||||
ctx.rotate((-10 * Math.PI) / 180);
|
||||
// 水印具体绘制过程
|
||||
const { width, height } = this;
|
||||
const {
|
||||
width,
|
||||
height
|
||||
} = this;
|
||||
const watermarkWidth = this.watermarkSetting.text.length * this.watermarkSetting.fontSize;
|
||||
let x = 0;
|
||||
let y = 0;
|
||||
@@ -193,6 +203,7 @@ export default {
|
||||
ctx.clearRect(0, 0, this.width, this.height);
|
||||
ctx.stroke();
|
||||
ctx.draw(true);
|
||||
this.$emit('complete')
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -248,6 +259,7 @@ export default {
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.scraping__canvas {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
@@ -256,11 +268,13 @@ export default {
|
||||
/* background-color: red; */
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.scraping__view {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
color: #f29100;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
letter-spacing: 8px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,9 +1,13 @@
|
||||
<template>
|
||||
<view>
|
||||
<view v-if="getLoading" class="wp100 relative" style="height: 100vh;">
|
||||
<image class="wp100" mode="widthFix" src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E8%80%83%E8%AF%95%E6%8F%90%E9%86%92_20230906135037.png"></image>
|
||||
<image class="wp100" mode="widthFix"
|
||||
src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E8%80%83%E8%AF%95%E6%8F%90%E9%86%92_20230906135037.png">
|
||||
</image>
|
||||
<view class="wp100 flex ai-c jc-c" style="position: absolute;bottom: 0;left: 0;padding-bottom: 124rpx;">
|
||||
<image style="width: 452rpx;" src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E9%87%91%E6%AD%A6%E8%81%94_20230831123333.png" mode="widthFix"></image>
|
||||
<image style="width: 452rpx;"
|
||||
src="https://oss-bq.ahduima.com/%E5%B0%8F%E7%A8%8B%E5%BA%8F/%E5%9B%BE%E7%89%87/%E9%87%91%E6%AD%A6%E8%81%94_20230831123333.png"
|
||||
mode="widthFix"></image>
|
||||
</view>
|
||||
</view>
|
||||
<view v-if="!getLoading">
|
||||
@@ -11,8 +15,8 @@
|
||||
<u-sticky bgColor="#fff">
|
||||
<u-tabs :list="categoryList" :current="curTab" :scrollable="false" @change="changeCategory"></u-tabs>
|
||||
</u-sticky>
|
||||
<view class="m10tb">
|
||||
<u-swiper :list="activityList" @click="handleToActivity"></u-swiper>
|
||||
<view class="m10tb" v-if="activityList&&activityList.length">
|
||||
<u-swiper class="acticity" keyName="image" :list="activityList" @click="handleToActivity"></u-swiper>
|
||||
</view>
|
||||
<view style="background-color: rgb(245, 245, 245);">
|
||||
<template v-if="subject=='1' || subject=='4'">
|
||||
@@ -31,12 +35,16 @@
|
||||
mapActions
|
||||
} from 'pinia' //引入映射函数
|
||||
import useQuestionStore from '@/jtools/store/question' //引入store
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
import storage from '@/jtools/storage';
|
||||
import {
|
||||
querySysConfigList,
|
||||
} from '@/jtools/api/question';
|
||||
import Subject1 from "./components/Subject1";
|
||||
import Subject2 from "./components/Subject2";
|
||||
import {
|
||||
queryActivityList
|
||||
} from '@/jtools/api/activity';
|
||||
export default {
|
||||
components: {
|
||||
Subject1,
|
||||
@@ -52,7 +60,7 @@
|
||||
categoryList: [],
|
||||
rightList: storage.get(`rightList_subject${this.subject}`) || [],
|
||||
wrongList: storage.get(`wrongList_subject${this.subject}`) || [],
|
||||
activityList: ['https://cdn.uviewui.com/uview/swiper/swiper1.png']
|
||||
activityList: []
|
||||
};
|
||||
},
|
||||
onShow() {
|
||||
@@ -65,12 +73,15 @@
|
||||
if (this.subject == '2' || this.subject == '3') {
|
||||
this.$refs.subjectRef.getDiverType()
|
||||
}
|
||||
this.queryActivityList()
|
||||
},
|
||||
onHide() {
|
||||
this.show = false
|
||||
},
|
||||
computed: {
|
||||
...mapState(useQuestionStore, ["loading_subject4", "loading_subject1","curSubject","orderQuestion_subject1","orderQuestion_subject4"]), //映射函数,取出tagslist
|
||||
...mapState(useQuestionStore, ["loading_subject4", "loading_subject1", "curSubject", "orderQuestion_subject1",
|
||||
"orderQuestion_subject4"
|
||||
]), //映射函数,取出tagslist
|
||||
getLoading() {
|
||||
return this.loading_subject4 && this.loading_subject1
|
||||
}
|
||||
@@ -119,10 +130,27 @@
|
||||
}, 100)
|
||||
}
|
||||
},
|
||||
//查询活动列表
|
||||
queryActivityList() {
|
||||
queryActivityList({
|
||||
schoolId: useUserStore().userInfo?.schoolId || ''
|
||||
}).then(resp => {
|
||||
this.activityList = resp.data.map(item => ({
|
||||
...item,
|
||||
image: 'https://jwl.ahduima.com' + item.image
|
||||
}));
|
||||
})
|
||||
},
|
||||
// 去活动
|
||||
handleToActivity(index) {
|
||||
let detailId;
|
||||
this.activityList.find((item, index1) => {
|
||||
if (index === index1) {
|
||||
detailId = item.detailId;
|
||||
}
|
||||
})
|
||||
uni.navigateTo({
|
||||
url: '/pages/index/activity'
|
||||
url: '/pages/index/activity?detailId=' + detailId,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
<view class="list">
|
||||
<view class="list-call">
|
||||
<u-input class="sl-input" border="none" v-model="login.phone" type="number" maxlength="11"
|
||||
<u-input class="sl-input" border="none" v-model="loginForm.phone" type="number" maxlength="11"
|
||||
placeholder="输入手机号" />
|
||||
</view>
|
||||
<view class="list-call">
|
||||
<u-input class="sl-input" v-model="login.code" type="text" maxlength="6" border="none" placeholder="输入验证码">
|
||||
<u-input class="sl-input" v-model="loginForm.code" type="text" maxlength="6" border="none" placeholder="输入验证码">
|
||||
<template #suffix>
|
||||
<text class="fs14 mr10" style="color: #05C341;" @tap="getCode">{{ countDown == 0 ? '获取验证码' : countDown }}</text>
|
||||
</template>
|
||||
@@ -39,7 +39,7 @@ import storage from '@/jtools/storage';
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
login: {
|
||||
loginForm: {
|
||||
phone: '',
|
||||
code: ''
|
||||
},
|
||||
@@ -54,9 +54,9 @@ export default {
|
||||
},
|
||||
methods: {
|
||||
getCode() {
|
||||
if (isPhone(this.login.phone) && this.countDown == 0) {
|
||||
if (isPhone(this.loginForm.phone) && this.countDown == 0) {
|
||||
getCode({
|
||||
phone: this.login.phone
|
||||
phone: this.loginForm.phone
|
||||
}).then(resp => {
|
||||
// if (resp.code == '0000') {
|
||||
uni.showToast({
|
||||
@@ -80,8 +80,8 @@ export default {
|
||||
this.countDown = 0
|
||||
},
|
||||
bindLogin() {
|
||||
if (isPhone(this.login.phone) && this.login.code) {
|
||||
let params = { ...this.login }
|
||||
if (isPhone(this.loginForm.phone) && this.loginForm.code) {
|
||||
let params = { ...this.loginForm }
|
||||
if (storage.get('companyId')) {
|
||||
params.id = storage.get('companyId')
|
||||
}
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
</view>
|
||||
<view class="mt5 fs14 cor-666">陪您学车 第{{ user.days }}天</view>
|
||||
</view>
|
||||
<view v-if="canRecieve" class="ml20 p20" @tap="handleScan">
|
||||
<u-icon name="scan" size="40"></u-icon>
|
||||
</view>
|
||||
</view>
|
||||
<view class="info flex ai-c" v-else @tap="toLogin">
|
||||
<u-avatar class="br-p50 overflow-h" :size="64" src="@/static/image/mine/default_avatar.png" shape="circle"></u-avatar>
|
||||
@@ -107,8 +110,8 @@
|
||||
<script>
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
import storage from '@/jtools/storage';
|
||||
import { receiveWinner,canRecieveGift } from '@/jtools/api/activity'
|
||||
export default {
|
||||
components: {},
|
||||
computed: {
|
||||
isLogin() {
|
||||
return useUserStore().isLogin
|
||||
@@ -148,14 +151,25 @@ export default {
|
||||
data() {
|
||||
return {
|
||||
carName: storage.get('carName') || '小车C1/C2/C3',
|
||||
isIOS: true
|
||||
isIOS: true,
|
||||
canRecieve: false
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.isIOS = this.$platform.device().includes('ios')
|
||||
this.carName = storage.get('carName') || '小车C1/C2/C3'
|
||||
this.searchActivityAuth()
|
||||
},
|
||||
methods: {
|
||||
searchActivityAuth() {
|
||||
canRecieveGift({
|
||||
phone: useUserStore().userInfo?.phone || ''
|
||||
}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
this.canRecieve = resp.data
|
||||
}
|
||||
})
|
||||
},
|
||||
// 拨打电话
|
||||
callPhoneNumber() {
|
||||
uni.makePhoneCall({
|
||||
@@ -233,6 +247,25 @@ export default {
|
||||
uni.navigateTo({
|
||||
url: '/pages/me/myGift'
|
||||
})
|
||||
},
|
||||
handleScan() {
|
||||
uni.scanCode({
|
||||
scanType: ['qrCode'],
|
||||
success(res) {
|
||||
console.log('条码内容:' + res.result);
|
||||
receiveWinner({
|
||||
id: res.result,
|
||||
receiveUser: useUserStore().userInfo?.phone || []
|
||||
}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
uni.showToast({
|
||||
icon: 'none',
|
||||
title: '核销成功!'
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,44 +1,66 @@
|
||||
<template>
|
||||
<view class="p10lr p20tb">
|
||||
<view v-for="(item, index) in list" :key="index" class="item">
|
||||
<u-list @scrolltolower="loadmore">
|
||||
<u-list-item v-for="(item, index) in list" :key="index" class="item">
|
||||
<view class="relative">
|
||||
<img src="/static/image/mine/giftitem.png" style="width: 100%;" mode="widthFix" alt="" />
|
||||
<view class="ab_full df ai-c jcc">一等奖</view>
|
||||
<view class="ab_full df ai-c jcc">{{item.awards}}</view>
|
||||
</view>
|
||||
<view class="df ai-c jcsb p20tb p10lr">
|
||||
<view class="item-label">
|
||||
<view>活动名称:幸运刮刮乐开心赢大奖</view>
|
||||
<view>参与时间:2024-01-01 08:00</view>
|
||||
<view>有效期至:2024-03-01 08:00</view>
|
||||
<view>活动名称:{{ item.activityName }}</view>
|
||||
<view>参与时间:{{ item.createTime }}</view>
|
||||
<view>有效期至:{{ item.endTime }}</view>
|
||||
</view>
|
||||
<view class="ml20" style="width: 120rpx;">
|
||||
<img v-if="index%2==0" src="/static/image/mine/writeoff.png" style="width: 120rpx;height: 120rpx;" />
|
||||
<img v-if="item.status" src="/static/image/mine/writeoff.png" style="width: 120rpx;height: 120rpx;" />
|
||||
<view v-else class="btn" @tap="handleWriteoff(item)">核销</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</u-list-item>
|
||||
</u-list>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import useUserStore from '@/jtools/store/user'
|
||||
import { getLuckyRecord } from '@/jtools/api/activity'
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
pageNum: 1,
|
||||
list: []
|
||||
}
|
||||
},
|
||||
onShow() {
|
||||
this.pageNum = 1
|
||||
this.list = []
|
||||
this.handleSearch()
|
||||
},
|
||||
methods: {
|
||||
handleSearch() {
|
||||
this.list = [1,2,3,4,5]
|
||||
getLuckyRecord({
|
||||
phone: useUserStore().userInfo.phone,
|
||||
pageSize: 10,
|
||||
pageNum: this.pageNum
|
||||
}).then(resp => {
|
||||
if(resp.code == 200) {
|
||||
if(resp.rows && resp.rows.length) {
|
||||
this.list = [...this.list, ...resp.rows]
|
||||
} else {
|
||||
this.pageNum = this.pageNum > 1 ? this.pageNum-1 : 1
|
||||
}
|
||||
}
|
||||
})
|
||||
},
|
||||
loadmore() {
|
||||
this.handleSearch(this.pageNum++)
|
||||
},
|
||||
handleWriteoff(item) {
|
||||
uni.navigateTo({
|
||||
url: `/pages/me/qrCode?item=${item}`
|
||||
url: `/pages/me/qrCode?id=${item.id}`
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<view class="df jcc" style="padding-top: 100px;">
|
||||
<qrcode value="123" :size="200"/>
|
||||
<qrcode v-if="value" :value="value" :size="200"/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -16,11 +16,8 @@
|
||||
}
|
||||
},
|
||||
onLoad(option) {
|
||||
this.value = option.item
|
||||
this.value = option.id
|
||||
},
|
||||
methods: {
|
||||
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user