2 Commits

Author SHA1 Message Date
zcx
9e24edad28 活动接口 2024-01-26 20:50:31 +08:00
zcx
67b3e63de9 活动接口 2024-01-26 20:41:25 +08:00
16 changed files with 495 additions and 610 deletions

View File

@@ -8,5 +8,3 @@ VITE_APP_ENV = 'development'
VITE_APP_BASE_API = 'https://jwl.ahduima.com/' VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
# #
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com' VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
# 资源地址
VITE_RESOURSE_URL = 'http://huodong.ahduima.com'

View File

@@ -9,6 +9,3 @@ VITE_APP_BASE_API = 'https://jwl.ahduima.com/'
# #
VITE_WEB_BASE_URL = 'https://jwl.ahduima.com' VITE_WEB_BASE_URL = 'https://jwl.ahduima.com'
# 资源地址
VITE_RESOURSE_URL = 'http://huodong.ahduima.com'

View File

@@ -4,10 +4,8 @@
"scripts": { "scripts": {
"dev:h5": "uni", "dev:h5": "uni",
"dev": "uni -p mp-weixin", "dev": "uni -p mp-weixin",
"dev:dy": "uni -p mp-toutiao",
"build:h5": "uni build", "build:h5": "uni build",
"build": "uni build -p mp-weixin", "build": "uni build -p mp-weixin",
"build:dy": "uni build -p mp-toutiao",
"build-test:mp-weixin": "uni --mode test -p mp-weixin" "build-test:mp-weixin": "uni --mode test -p mp-weixin"
}, },
"dependencies": { "dependencies": {
@@ -16,7 +14,6 @@
"@dcloudio/uni-components": "3.0.0-alpha-3060420220922001", "@dcloudio/uni-components": "3.0.0-alpha-3060420220922001",
"@dcloudio/uni-h5": "3.0.0-alpha-3060420220922001", "@dcloudio/uni-h5": "3.0.0-alpha-3060420220922001",
"@dcloudio/uni-mp-weixin": "3.0.0-alpha-3060420220922001", "@dcloudio/uni-mp-weixin": "3.0.0-alpha-3060420220922001",
"@dcloudio/uni-mp-toutiao": "3.0.0-alpha-3060420220922001",
"jsencrypt-plus": "^0.1.0", "jsencrypt-plus": "^0.1.0",
"pinia": "2.0.36", "pinia": "2.0.36",
"pinia-plugin-persist-uni": "^1.2.0", "pinia-plugin-persist-uni": "^1.2.0",

28
project.config.json Normal file
View File

@@ -0,0 +1,28 @@
{
"appid": "wx24c1b58020a5ce66",
"compileType": "miniprogram",
"libVersion": "3.3.3",
"packOptions": {
"ignore": [],
"include": []
},
"setting": {
"coverView": true,
"es6": true,
"postcss": true,
"minified": true,
"enhance": true,
"showShadowRootInWxmlPanel": true,
"packNpmRelationList": [],
"babelSetting": {
"ignore": [],
"disablePlugins": [],
"outputPath": ""
}
},
"condition": {},
"editorSetting": {
"tabIndent": "insertSpaces",
"tabSize": 2
}
}

View File

@@ -0,0 +1,7 @@
{
"description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html",
"projectname": "jwl-applet",
"setting": {
"compileHotReLoad": true
}
}

View File

@@ -63,13 +63,3 @@ export function getLuckyRecord(data) {
noToken: true noToken: true
}); });
} }
//查询中奖记录
export function canRecieveGift(data) {
return request({
url: 'activity/applet/activity/receive/user',
method: 'get',
data,
noToken: true
});
}

View File

@@ -32,7 +32,7 @@ function service(options = {}) {
useUserStore().logoutWithoutToken() useUserStore().logoutWithoutToken()
//请求成功 //请求成功
resolved(res.data); resolved(res.data);
} else if(res.data.code != '0000'&&res.data.code !='4001'&&res.data.code != 200) { } else if(res.data.code != '0000'&&res.data.code !='4001') {
uni.showToast({ uni.showToast({
title: res?.data?.message || '访问出错', title: res?.data?.message || '访问出错',
icon: 'none' icon: 'none'

View File

@@ -66,13 +66,7 @@
"usingComponents" : true "usingComponents" : true
}, },
"mp-toutiao" : { "mp-toutiao" : {
"usingComponents" : true, "usingComponents" : true
"appid" : "ttbbd1cd6c24e1c00801",
"setting" : {
"es6" : true,
"postcss" : true,
"minified" : true
}
}, },
"uniStatistics" : { "uniStatistics" : {
"enable" : false "enable" : false

View File

@@ -8,7 +8,7 @@
{ {
"path": "pages/index/index", "path": "pages/index/index",
"style": { "style": {
"navigationBarTitleText": "金武联驾考", "navigationStyle": "custom",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
}, },

View File

@@ -1,23 +1,22 @@
<template> <template>
<view style="padding-bottom: 50px;background-color: #9e0f00;"> <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> <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">您今日还剩{{actiNum}}次刮奖机会共有{{total}}人参加活动</view> <view class="tip">您今日还剩1次刮奖机会共有999人参加活动</view>
<view class="scraping"> <view class="scraping">
<scraping-card style="z-index: 20;" :result="result" watermark="刮一刮" title="刮一刮赢取大奖" ref="reset" @complete="handleComplete" > <scraping-card :result="result" watermark="刮一刮" title="刮一刮赢取大奖" ref="reset" ></scraping-card>
<cover-view v-if="showBtn" class="gj"> <view v-if="showBtn" class="gj">
<cover-view class="btn" @tap="handleScrap"> <view class="btn" @tap="handleScrap">
{{btnText}} 点我刮奖
</cover-view> </view>
</cover-view> </view>
</scraping-card>
</view> </view>
<view class="relative mt30 m20lr"> <view class="relative mt30 m20lr">
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image> <image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
<view class="title">中奖名单</view> <view class="title">中奖名单</view>
<view class="card"> <view class="card">
<view v-for="(item, index) in winningList" :key="index" class="card-item"> <view v-for="(item, index) in winningList" :key="index" class="card-item">
<text class="item-text">{{ hidePhoneNumber(item.phone) }}</text> <text class="item-text">188****8888</text>
<text class="item-text">{{ item.awards }}</text> <text class="item-text">一等奖</text>
</view> </view>
</view> </view>
</view> </view>
@@ -25,113 +24,35 @@
<image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image> <image class="wp100" mode="widthFix" src="/static/image/index/tip.png"></image>
<view class="title">活动说明</view> <view class="title">活动说明</view>
<view class="card"> <view class="card">
<u-parse :content="activityRule"></u-parse> <view class="item-text">1. 中奖率100%</view>
<view class="item-text">2. 报名后可获得一次抽奖机会</view>
<view class="item-text">3. 中奖用户请于"我的-我的奖品"中查看并核销</view>
</view> </view>
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import useUserStore from '@/jtools/store/user'
import ScrapingCard from './scraping.vue' import ScrapingCard from './scraping.vue'
import { queryActivityDetail,queryLuckyNum,queryLuckyResult,saveWinner,getLuckyRecord } from '@/jtools/api/activity'
export default { export default {
components: { components: {
ScrapingCard ScrapingCard
}, },
data() { data() {
return { return {
detailId: undefined, result: '特等奖',
result: '',
btnText: '点我刮奖',
showBtn: true, showBtn: true,
actiNum: 0, winningList: [1,2,3,4,5,6,7,8]
total: 0,
winningList: [],
activityRule: undefined
} }
}, },
onLoad(op) {
this.detailId = op.detailId
this.getActivityDetail()
this.getActivityNum()
this.searchWinningList()
},
methods: { methods: {
handleScrap() { 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.showBtn = !this.showBtn
this.$refs.reset.init()
} }
})
}, },
getActivityDetail() { mounted() {
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
}
})
}
},
} }
</script> </script>

View File

@@ -1,11 +1,16 @@
<template> <template>
<view class="scraping-happy" id="container"> <view class="scraping-happy" id="container">
<canvas canvas-id="scraping-happy" class="scraping__canvas" :disable-scroll="true" @touchstart="touchstart" <canvas
@touchmove="touchmove" @touchend="touchend" /> canvas-id="scraping-happy"
class="scraping__canvas"
:disable-scroll="true"
@touchstart="touchstart"
@touchmove="touchmove"
@touchend="touchend"
/>
<cover-view class="scraping__view"> <cover-view class="scraping__view">
{{ showText }} {{ showText }}
</cover-view> </cover-view>
<slot></slot>
</view> </view>
</template> </template>
@@ -53,7 +58,7 @@
/** @name 刮开百分之多少直接消除图层为0的时候不消除 **/ /** @name 刮开百分之多少直接消除图层为0的时候不消除 **/
percentage: { percentage: {
type: Number, type: Number,
default: 40, default: 60,
}, },
result: { result: {
type: String, type: String,
@@ -73,25 +78,19 @@
maskSetting() { maskSetting() {
return { return {
...MASK, ...MASK,
...(typeof this.mask === 'object' ? this.mask : { ...(typeof this.mask === 'object' ? this.mask : { text: this.mask }),
text: this.mask
}),
} }
}, },
watermarkSetting() { watermarkSetting() {
return { return {
...WATERMARK, ...WATERMARK,
...(typeof this.watermark === 'object' ? this.watermark : { ...(typeof this.watermark === 'object' ? this.watermark : { text: this.watermark }),
text: this.watermark
}),
}; };
}, },
titleSetting() { titleSetting() {
return { return {
...TITLE, ...TITLE,
...(typeof this.title === 'object' ? this.title : { ...(typeof this.title === 'object' ? this.title : { text: this.title }),
text: this.title
}),
}; };
} }
}, },
@@ -106,10 +105,7 @@
const query = uni.createSelectorQuery().in(this); const query = uni.createSelectorQuery().in(this);
query query
.select('#container') .select('#container')
.boundingClientRect(({ .boundingClientRect(({ width, height }) => {
width,
height
}) => {
this.width = width; this.width = width;
this.height = height; this.height = height;
setTimeout(() => { setTimeout(() => {
@@ -121,10 +117,7 @@
}, },
/** @name 初始化canvas状态 **/ /** @name 初始化canvas状态 **/
initCanvas() { initCanvas() {
const { const { width, height } = this;
width,
height
} = this;
// 清空矩形内容 // 清空矩形内容
ctx.clearRect(0, 0, width, height); ctx.clearRect(0, 0, width, height);
// 设置画笔颜色 // 设置画笔颜色
@@ -146,10 +139,7 @@
// 旋转 // 旋转
ctx.rotate((-10 * Math.PI) / 180); ctx.rotate((-10 * Math.PI) / 180);
// 水印具体绘制过程 // 水印具体绘制过程
const { const { width, height } = this;
width,
height
} = this;
const watermarkWidth = this.watermarkSetting.text.length * this.watermarkSetting.fontSize; const watermarkWidth = this.watermarkSetting.text.length * this.watermarkSetting.fontSize;
let x = 0; let x = 0;
let y = 0; let y = 0;
@@ -203,7 +193,6 @@
ctx.clearRect(0, 0, this.width, this.height); ctx.clearRect(0, 0, this.width, this.height);
ctx.stroke(); ctx.stroke();
ctx.draw(true); ctx.draw(true);
this.$emit('complete')
} }
} }
}, },
@@ -259,7 +248,6 @@
justify-content: center; justify-content: center;
align-items: center; align-items: center;
} }
.scraping__canvas { .scraping__canvas {
width: 100%; width: 100%;
height: 100%; height: 100%;
@@ -268,13 +256,11 @@
/* background-color: red; */ /* background-color: red; */
display: inline-block; display: inline-block;
} }
.scraping__view { .scraping__view {
position: absolute; position: absolute;
z-index: 1; z-index: 1;
color: #f29100; color: #f29100;
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
letter-spacing: 8px;
} }
</style> </style>

View File

@@ -1,22 +1,18 @@
<template> <template>
<view> <view>
<!-- <view v-if="getLoading" class="wp100 relative" style="height: 100vh;"> <view v-if="getLoading" class="wp100 relative" style="height: 100vh;">
<image class="wp100" mode="widthFix" <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>
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;"> <view class="wp100 flex ai-c jc-c" style="position: absolute;bottom: 0;left: 0;padding-bottom: 124rpx;">
<image style="width: 452rpx;" <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>
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" </view>
mode="widthFix"></image>
</view> </view>
</view> -->
<view v-if="!getLoading"> <view v-if="!getLoading">
<!-- <j-navbar :isBack="false">金武联驾考</j-navbar> --> <j-navbar :isBack="false">金武联驾考</j-navbar>
<u-sticky bgColor="#fff"> <u-sticky bgColor="#fff">
<u-tabs :list="categoryList" :current="curTab" :scrollable="false" @change="changeCategory"></u-tabs> <u-tabs :list="categoryList" :current="curTab" :scrollable="false" @change="changeCategory"></u-tabs>
</u-sticky> </u-sticky>
<view class="m10tb" v-if="activityList&&activityList.length"> <view class="m10tb">
<u-swiper class="acticity" keyName="image" :list="activityList" @click="handleToActivity"></u-swiper> <u-swiper :list="activityList" @click="handleToActivity"></u-swiper>
</view> </view>
<view style="background-color: rgb(245, 245, 245);"> <view style="background-color: rgb(245, 245, 245);">
<template v-if="subject=='1' || subject=='4'"> <template v-if="subject=='1' || subject=='4'">
@@ -43,7 +39,7 @@
import Subject1 from "./components/Subject1"; import Subject1 from "./components/Subject1";
import Subject2 from "./components/Subject2"; import Subject2 from "./components/Subject2";
import { import {
queryActivityList queryActivityList,
} from '@/jtools/api/activity'; } from '@/jtools/api/activity';
export default { export default {
components: { components: {
@@ -52,7 +48,6 @@
}, },
data() { data() {
return { return {
getLoading: true,
show:false, show:false,
subject: storage.get('curSubject') || '1', subject: storage.get('curSubject') || '1',
curTab: 0, curTab: 0,
@@ -61,14 +56,11 @@
categoryList: [], categoryList: [],
rightList: storage.get(`rightList_subject${this.subject}`) || [], rightList: storage.get(`rightList_subject${this.subject}`) || [],
wrongList: storage.get(`wrongList_subject${this.subject}`) || [], wrongList: storage.get(`wrongList_subject${this.subject}`) || [],
activityList: [] activityList: ['https://cdn.uviewui.com/uview/swiper/swiper1.png']
}; };
}, },
onShow() { onShow() {
setTimeout(() => {
this.getLoading = false
this.show=true this.show=true
}, 100);
this.getSubjectConfig() this.getSubjectConfig()
if (this.subject == '1' || this.subject == '4') { if (this.subject == '1' || this.subject == '4') {
this.rightList = storage.get(`rightList_subject${this.subject}`) || [] this.rightList = storage.get(`rightList_subject${this.subject}`) || []
@@ -77,15 +69,29 @@
if(this.subject=='2'||this.subject=='3'){ if(this.subject=='2'||this.subject=='3'){
this.$refs.subjectRef.getDiverType() this.$refs.subjectRef.getDiverType()
} }
this.queryActivityList() this.queryActivityList();
}, },
onHide(){ onHide(){
this.show=false this.show=false
}, },
computed: { computed: {
...mapState(useQuestionStore, ["loading_subject4", "loading_subject1", "curSubject", "orderQuestion_subject1", ...mapState(useQuestionStore, ["loading_subject4", "loading_subject1","curSubject","orderQuestion_subject1","orderQuestion_subject4"]), //映射函数取出tagslist
"orderQuestion_subject4" getLoading() {
]), //映射函数取出tagslist return this.loading_subject4 && this.loading_subject1
}
},
watch:{
getLoading(newVal){
if(this.show){
if(newVal){
if(this.loading_subject4 && this.loading_subject1){
uni.hideTabBar();
}
}else{
uni.showTabBar()
}
}
}
}, },
methods: { methods: {
...mapActions(useQuestionStore, ['getOrderQuestion_sub4', 'getOrderQuestion_sub1', 'changeSubject']), ...mapActions(useQuestionStore, ['getOrderQuestion_sub4', 'getOrderQuestion_sub1', 'changeSubject']),
@@ -101,7 +107,7 @@
} }
}) })
this.subject=storage.get('curSubject') || '1', this.subject=storage.get('curSubject') || '1',
this.curTab = this.categoryList.findIndex(item => item.configItemCode == this.subject) || 0 this.curTab=this.categoryList.findIndex(item=>item.configItemCode==this.subject)
} }
}) })
}, },
@@ -120,13 +126,26 @@
}, },
//查询活动列表 //查询活动列表
queryActivityList(){ queryActivityList(){
queryActivityList({ // console.log(this.user)
schoolId: useUserStore().userInfo?.schoolId || '' // console.log(useUserStore().userInfo)
}).then(resp => { // this.activityList = null;
this.activityList = resp.data.map(item => ({ // uni.request({
...item, // url: 'http://localhost:8089/applet/activity/list',
image: 'https://jwl.ahduima.com' + item.image // method: 'get',
})); // data: {'schoolId': useUserStore().userInfo.schoolId}
// }).then(resp => {
// console.log(".....")
// console.log(resp)
// if(resp.data.code == 200) {
// this.activityList = resp.data.data
// console.log("*****")
// console.log(resp.data)
// console.log(resp.data.data)
// console.log(this.activityList)
// }
// })
queryActivityList({schoolId: this.user.schoolId}).then(resp => {
this.activityList = resp.data;
}) })
}, },
// 去活动 // 去活动

View File

@@ -7,11 +7,11 @@
<view class="list"> <view class="list">
<view class="list-call"> <view class="list-call">
<u-input class="sl-input" border="none" v-model="loginForm.phone" type="number" maxlength="11" <u-input class="sl-input" border="none" v-model="login.phone" type="number" maxlength="11"
placeholder="输入手机号" /> placeholder="输入手机号" />
</view> </view>
<view class="list-call"> <view class="list-call">
<u-input class="sl-input" v-model="loginForm.code" type="text" maxlength="6" border="none" placeholder="输入验证码"> <u-input class="sl-input" v-model="login.code" type="text" maxlength="6" border="none" placeholder="输入验证码">
<template #suffix> <template #suffix>
<text class="fs14 mr10" style="color: #05C341;" @tap="getCode">{{ countDown == 0 ? '获取验证码' : countDown }}</text> <text class="fs14 mr10" style="color: #05C341;" @tap="getCode">{{ countDown == 0 ? '获取验证码' : countDown }}</text>
</template> </template>
@@ -39,7 +39,7 @@ import storage from '@/jtools/storage';
export default { export default {
data() { data() {
return { return {
loginForm: { login: {
phone: '', phone: '',
code: '' code: ''
}, },
@@ -54,9 +54,9 @@ export default {
}, },
methods: { methods: {
getCode() { getCode() {
if (isPhone(this.loginForm.phone) && this.countDown == 0) { if (isPhone(this.login.phone) && this.countDown == 0) {
getCode({ getCode({
phone: this.loginForm.phone phone: this.login.phone
}).then(resp => { }).then(resp => {
// if (resp.code == '0000') { // if (resp.code == '0000') {
uni.showToast({ uni.showToast({
@@ -80,8 +80,8 @@ export default {
this.countDown = 0 this.countDown = 0
}, },
bindLogin() { bindLogin() {
if (isPhone(this.loginForm.phone) && this.loginForm.code) { if (isPhone(this.login.phone) && this.login.code) {
let params = { ...this.loginForm } let params = { ...this.login }
if (storage.get('companyId')) { if (storage.get('companyId')) {
params.id = storage.get('companyId') params.id = storage.get('companyId')
} }

View File

@@ -12,9 +12,6 @@
</view> </view>
<view class="mt5 fs14 cor-666">陪您学车 {{ user.days }}</view> <view class="mt5 fs14 cor-666">陪您学车 {{ user.days }}</view>
</view> </view>
<view v-if="canRecieve" class="ml20 p20" @tap="handleScan">
<u-icon name="scan" size="40"></u-icon>
</view>
</view> </view>
<view class="info flex ai-c" v-else @tap="toLogin"> <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> <u-avatar class="br-p50 overflow-h" :size="64" src="@/static/image/mine/default_avatar.png" shape="circle"></u-avatar>
@@ -110,8 +107,8 @@
<script> <script>
import useUserStore from '@/jtools/store/user' import useUserStore from '@/jtools/store/user'
import storage from '@/jtools/storage'; import storage from '@/jtools/storage';
import { receiveWinner,canRecieveGift } from '@/jtools/api/activity'
export default { export default {
components: {},
computed: { computed: {
isLogin() { isLogin() {
return useUserStore().isLogin return useUserStore().isLogin
@@ -151,25 +148,14 @@ export default {
data() { data() {
return { return {
carName: storage.get('carName') || '小车C1/C2/C3', carName: storage.get('carName') || '小车C1/C2/C3',
isIOS: true, isIOS: true
canRecieve: false
} }
}, },
onShow() { onShow() {
this.isIOS = this.$platform.device().includes('ios') this.isIOS = this.$platform.device().includes('ios')
this.carName = storage.get('carName') || '小车C1/C2/C3' this.carName = storage.get('carName') || '小车C1/C2/C3'
this.searchActivityAuth()
}, },
methods: { methods: {
searchActivityAuth() {
canRecieveGift({
phone: useUserStore().userInfo?.phone || ''
}).then(resp => {
if(resp.code == 200) {
this.canRecieve = resp.data
}
})
},
// 拨打电话 // 拨打电话
callPhoneNumber() { callPhoneNumber() {
uni.makePhoneCall({ uni.makePhoneCall({
@@ -247,25 +233,6 @@ export default {
uni.navigateTo({ uni.navigateTo({
url: '/pages/me/myGift' 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: '核销成功!'
})
}
})
}
})
} }
} }
} }

View File

@@ -1,66 +1,44 @@
<template> <template>
<view class="p10lr p20tb"> <view class="p10lr p20tb">
<u-list @scrolltolower="loadmore"> <view v-for="(item, index) in list" :key="index" class="item">
<u-list-item v-for="(item, index) in list" :key="index" class="item">
<view class="relative"> <view class="relative">
<img src="/static/image/mine/giftitem.png" style="width: 100%;" mode="widthFix" alt="" /> <img src="/static/image/mine/giftitem.png" style="width: 100%;" mode="widthFix" alt="" />
<view class="ab_full df ai-c jcc">{{item.awards}}</view> <view class="ab_full df ai-c jcc">一等奖</view>
</view> </view>
<view class="df ai-c jcsb p20tb p10lr"> <view class="df ai-c jcsb p20tb p10lr">
<view class="item-label"> <view class="item-label">
<view>活动名称{{ item.activityName }}</view> <view>活动名称幸运刮刮乐开心赢大奖</view>
<view>参与时间{{ item.createTime }}</view> <view>参与时间2024-01-01 08:00</view>
<view>有效期至{{ item.endTime }}</view> <view>有效期至2024-03-01 08:00</view>
</view> </view>
<view class="ml20" style="width: 120rpx;"> <view class="ml20" style="width: 120rpx;">
<img v-if="item.status" src="/static/image/mine/writeoff.png" style="width: 120rpx;height: 120rpx;" /> <img v-if="index%2==0" src="/static/image/mine/writeoff.png" style="width: 120rpx;height: 120rpx;" />
<view v-else class="btn" @tap="handleWriteoff(item)">核销</view> <view v-else class="btn" @tap="handleWriteoff(item)">核销</view>
</view> </view>
</view> </view>
</u-list-item> </view>
</u-list>
</view> </view>
</template> </template>
<script> <script>
import useUserStore from '@/jtools/store/user'
import { getLuckyRecord } from '@/jtools/api/activity'
export default { export default {
data() { data() {
return { return {
pageNum: 1,
list: [] list: []
} }
}, },
onShow() { onShow() {
this.pageNum = 1
this.list = []
this.handleSearch() this.handleSearch()
}, },
methods: { methods: {
handleSearch() { handleSearch() {
getLuckyRecord({ this.list = [1,2,3,4,5]
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) { handleWriteoff(item) {
uni.navigateTo({ uni.navigateTo({
url: `/pages/me/qrCode?id=${item.id}` url: `/pages/me/qrCode?item=${item}`
}) })
}, }
} }
} }
</script> </script>

View File

@@ -1,6 +1,6 @@
<template> <template>
<view class="df jcc" style="padding-top: 100px;"> <view class="df jcc" style="padding-top: 100px;">
<qrcode v-if="value" :value="value" :size="200"/> <qrcode value="123" :size="200"/>
</view> </view>
</template> </template>
@@ -16,8 +16,11 @@
} }
}, },
onLoad(option) { onLoad(option) {
this.value = option.id this.value = option.item
}, },
methods: {
}
} }
</script> </script>