Browse Source

888完成

master
luyisha 2 years ago
parent
commit
0a3f46b1c8
  1. 14
      common/js/updateTabBar.js
  2. 6
      pages/goodslist/goodslist.vue
  3. 154
      pages/home/home.vue
  4. 100
      pages/list/agent.vue
  5. 64
      pages/list/team.vue
  6. 3
      pages/login/login.vue
  7. 163
      pages/recordsList/WinningRecord/WinningRecord.vue
  8. 41
      pages/recordsList/recordsList.vue
  9. 50
      pages/scratchCard/readme.md
  10. 35
      pages/scratchCard/scratch.js
  11. 336
      pages/scratchCard/scratchCard.vue
  12. 142
      pages/scratchCard/scratchTools.js
  13. 35
      pages/ucenter/invite/invite.vue
  14. 28
      pages/ucenter/ucenter.vue
  15. BIN
      static/home/fas fa-caret-down@2x.png
  16. BIN
      static/home/stLine-calendar-l@2x.png
  17. BIN
      static/tabbar/jilu.png
  18. BIN
      static/tabbar/jilu_a.png
  19. BIN
      static/user/icon_point.png

14
common/js/updateTabBar.js

@ -16,6 +16,10 @@ export default {
index:3,
visible: false
})
uni.setTabBarItem({
index:4,
visible: false
})
},
changeAgent(){
uni.setTabBarItem({
@ -32,6 +36,10 @@ export default {
})
uni.setTabBarItem({
index:3,
visible: true
})
uni.setTabBarItem({
index:4,
visible: false
})
},
@ -42,7 +50,7 @@ export default {
})
uni.setTabBarItem({
index:1,
visible: false
visible: true
})
uni.setTabBarItem({
index:2,
@ -50,6 +58,10 @@ export default {
})
uni.setTabBarItem({
index:3,
visible: false
})
uni.setTabBarItem({
index:4,
visible: true
})
},

6
pages/goodslist/goodslist.vue

@ -1,6 +1,6 @@
<template>
<view style="padding-top: 10px;">
<view v-for="(item,index) in goodsList" :key="index" class="dis-flex-between-center goods-item">
<view v-for="(item,index) in typeGoodsList" :key="index" class="dis-flex-between-center goods-item">
<view class="">
<image :src="item.cover_image" mode="aspectFill"></image>
</view>
@ -21,7 +21,7 @@
return {
id: '',
type: '20元',
goodsList: [
typeGoodsList: [
// {cover_image:'../../static/home/tem11.png', title: '', "id": 1, "important": "100", "price": "20.00", },
// {cover_image:'../../static/home/tem11.png', title: '', "id": 1, "important": "100", "price": "20.00", },
// {cover_image:'../../static/home/tem11.png', title: '', "id": 1, "important": "100", "price": "20.00", },
@ -38,7 +38,7 @@
getGoodsList(){
API.getGoodsList({zone_id: this.id}, res=>{
console.log(res);
this.goodsList = res.data;
this.typeGoodsList = res.data;
})
}
},

154
pages/home/home.vue

@ -1,8 +1,8 @@
<template>
<view class="homePage">
<view class="nav_area dis-flex-between-center">
<view class="left-btn" v-html="(!isLogin&&userType!=='background')?'请登录':''"
:class="(!isLogin&&userType!=='background')?'haveIcon':''"></view>
<view class="left-btn" v-html="(userType!=='background')?valueType:''"
:class="{'haveIcon':userType!=='background','select':showValueType}" @click="selectType"></view>
<view class="" style="font-size: 18px;color: #101010;" v-html="userType!=='background'?'顶呱刮':'顶呱刮-总平台'"></view>
<view class="right-btn" @click="changeAudio" v-html="userType!=='background'?'音乐':''"
:class="(userType!=='background'&&!isPlay)?'playIcon':(userType!=='background'&&isPlay)?'pauseIcon':''">
@ -22,14 +22,34 @@
<text class="notice_t">公告</text>
{{notice.title}}
</view>
<view class="dis-flex goods_area">
<view class="dis-flex goods_area new" v-if="showValueType">
<view v-for="(item,index) in goodsList" :key="index" class="type_item">
<view class="" @click="selectValueType(item)">
{{item.title}}
</view>
</view>
</view>
<view class="dis-flex goods_area" v-if="0">
<view v-for="(item,index) in goodsList" :key="index" class="goods_item">
<view class="" @click="toUrl(item)">
<view class="" @click="selectValueType(item)">
{{item.title}}
</view>
</view>
</view>
<view class="list_area">
<view class="">
<view v-for="(item,index) in typeGoodsList" :key="index" class="dis-flex-between-center goods-item">
<view class="">
<image :src="item.cover_image" mode="aspectFill"></image>
</view>
<view class="goods-info">
<view class="" style="color: #333;font-size: 16px;">{{item.title}}</view>
<view class="">面值{{item.price}}</view>
<view class="">最高中奖金额{{item.max_awards_amount}}</view>
</view>
<view class="goods-btn" @click="toDetailUrl(item)">立即刮奖</view>
</view>
</view>
<view class="list_area" v-if="0">
<view class="list_title">中奖记录</view>
<view class="dis-flex-between-center t-h">
<view class="" style="flex: 0.4;">ID</view>
@ -127,6 +147,10 @@
userType: 'background',//user|agent|background
bannerList: [],
goodsList: [],
showValueType: false,
valueType: '面值',
valueId: '',
typeGoodsList: [],
recordsList: [],
chartIndex: 1,//12
myChart: null,
@ -281,6 +305,38 @@
}
},
/* 选择面值 */
selectType(){
this.showValueType = !this.showValueType;
},
selectValueType(item){
this.valueId = item.id;
if(item.title=='全部面值'){
this.valueType = '面值';
}else{
this.valueType = item.title;
}
this.getGoodsList();
this.showValueType = false;
},
/* 某一面值的列表 */
getGoodsList(){
let data = {zone_id: this.valueId};
if(this.valueType=="面值"){
data = {};
}
API.getGoodsList(data, res=>{
// console.log(res);
this.typeGoodsList = res.data;
})
},
/* */
toDetailUrl(item){
uni.navigateTo({
url:'/pages/scratchCard/scratchCard?id='+item.id+'&type='+this.valueType
})
},
changeChartIndex(type){
this.chartIndex = type;
this.getUpDownSta(type);
@ -405,6 +461,14 @@
getZoneList(){
API.getZoneList({}, res=>{
this.goodsList = res.data;
this.goodsList.push({
id: '',
title: '全部面值'
})
// this.valueType = this.goodsList[0].title;
// this.valueId = this.goodsList[0].id;
// this.getGoodsList();
})
},
/*记录*/
@ -456,9 +520,10 @@
mounted() {
if(this.userType!=='background'){
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.autoplay = false;
// this.innerAudioContext.autoplay = false;
this.innerAudioContext.loop = true;
this.innerAudioContext.src = '../../static/audio/bgm.mp3';
this.innerAudioContext.autoplay = true;//H5
this.innerAudioContext.onPlay(() => {
console.log('开始播放');
});
@ -469,6 +534,11 @@
console.log(res.errMsg);
console.log(res.errCode);
});
if(!this.isPlay){
this.isPlay = true;
this.innerAudioContext.play();//chrome,,audio/video
}
}
// this.userType='background';
if(this.userType=='background'){
@ -486,7 +556,8 @@
}else if(this.userType=='agent'){
updateTabBar.changeAgent();
}
this.getZoneList();
this.getZoneList();//
this.getGoodsList();//
this.getRotationChart();
this.getAwardRecords();
this.getNotice();
@ -571,17 +642,32 @@
flex: 0.3;
height: 48rpx;
line-height: 48rpx;
color: #E33837;
&.haveIcon::before{
&.haveIcon::after{
content: '';
width: 48rpx;
height: 48rpx;
display: inline-block;
// background-image: url("../../static/home/iconPark-me@2x.png");
background-image: url("../../static/home/fas fa-caret-down@2x.png");
background-size: contain;
vertical-align: middle;
margin-right: 10rpx;
margin-top: -2px;
}
&.haveIcon.select::after{
content: '';
width: 48rpx;
height: 48rpx;
display: inline-block;
background-image: url("../../static/home/iconPark-me@2x.png");
// background-image: url("../../static/home/iconPark-me@2x.png");
background-image: url("../../static/home/fas fa-caret-down@2x.png");
background-size: contain;
vertical-align: middle;
margin-right: 10rpx;
margin-top: -2px;
transform: rotate(-180deg);
}
}
.right-btn{
@ -644,7 +730,24 @@
.goods_area{
flex-wrap: wrap;
justify-content: space-between;
width: 700rpx;
position: fixed;
top: 88rpx;
left: 0px;
z-index: 2;
background: #fff;
padding: 20px 12.5px 0px 12.5px;
box-shadow: 0px 0px 2px 2px rgba(0, 0, 0, 0.05);
&.new{
width: 16vw;
padding: 10px 12.5px 10px 12.5px;
}
.type_item{
color: #E33837;
font-size: 14px;
line-height: 34px;
}
.goods_item{
width: 107px;
height: 54px;
@ -657,6 +760,39 @@
text-align: center;
}
}
.goods-item{
height: 88px;
// padding: 10px 13px;
padding: 10px 0px;
color: #999;
font-size: 14px;
>view{
height: 88px;
}
image{
width: 138px;
height: 88px;
border-radius: 10px;
}
.goods-info{
display: flex;
flex-direction: column;
justify-content: space-between;
margin: 0px 5px;
flex: 1;
}
.goods-btn{
width: 78px;
height: 40px;
background-color: #e33838;
border-radius: 5px;
font-size: 14px;
color: #fff;
line-height: 40px;
text-align: center;
}
}
.list_area{
font-size: 14px;

100
pages/list/agent.vue

@ -3,7 +3,7 @@
<view class="nav_area dis-flex-between-center">
<view style="flex: 0.3;"></view>
<view class="" style="font-size: 18px;color: #101010;">代理</view>
<view style="flex: 0.3;text-align: right;" @click="add">新增代理</view>
<view style="flex: 0.3;text-align: right;" @click="add" v-html="userType=='background'?'新增代理':''"></view>
</view>
<view class="search_area">
<view class="search_box">
@ -14,7 +14,8 @@
<view class="list_area">
<view v-for="(item,index) in listsData" :key="index" class="list-item">
<view class="edit" @click="edit(item, index)"></view>
<view class="delete" @click="remove(item, index)">删除</view>
<view class="delete" @click="remove(item, index)" v-if="userType=='background'">删除</view>
<view class="grade" v-if="item.grade">{{item.grade}}</view>
<view class="info">
<image :src="item.avatar" mode=""></image>
<view class="">ID{{item.id}}</view>
@ -24,6 +25,7 @@
<view class=""><text>电话</text>{{item.phone}}</view>
<view class=""><text>余额</text>{{item.balance}}</view>
<view class=""><text>可提余额</text>{{item.withdrawal_balance}}</view>
<view class=""><text>返点</text>{{item.rebate_ratio}}%</view>
</view>
<view class="amount1">
<view class="red" @click="modifyScore(1, item, index)">上分</view>
@ -46,13 +48,14 @@
<input type="text" placeholder="电话为登陆账号" v-model="editInfo.phone"
:disabled="editType=='edit'" :class="editType=='edit'?'disabled':''">
</view>
<view class="input_box">
<view class="input_box" v-if="userType=='background'">
<view class="" style="text-align: right;margin-right: 30rpx;">密码:</view>
<input placeholder="请输入新密码" v-model="editInfo.password">
</view>
<view class="input_box">
<view class="input_box" style="position: relative;">
<view class="" style="text-align: right;margin-right: 30rpx;">返点比例:</view>
<input type="text" placeholder="请输入百分百" v-model="editInfo.rebate_ratio">
<view style="position: absolute;top: 0px;right:60rpx;line-height: 80rpx;">%</view>
</view>
</view>
<view class="btngroup">
@ -93,6 +96,7 @@
export default {
data(){
return {
userType: '',
listsData: [
{id:111,phone:'135XXXX7777',balance:'1000.00',withdrawal_balance:'1000.00'},
{id:123,phone:'135XXXX7777',balance:'1000.00',withdrawal_balance:'1000.00'},
@ -118,9 +122,22 @@
},
methods: {
getAgentList(){
API.request('/adminAgentTeam/agentList', {
limit: 10,title: this.account,page: this.page
}, res=>{
let url = '', data = {};
if(this.userType==='agent'){
url='/agentTeam/userList';
data = {
limit: 10,
title: this.account,
page: this.page,
identity: 2//
}
}else if(this.userType==='background'){
url='/adminAgentTeam/agentList';
data = {
limit: 10,title: this.account,page: this.page
}
}
API.request(url, data, res=>{
if(res.data.list.length<10){
this.noMore = true;
}
@ -192,11 +209,25 @@
this.showEdit = false;
})
}else if(this.editType=='edit'){
API.request('/adminAgentTeam/editAgent', {
aid: this.editInfo.id,
password: this.editInfo.password,
rebate_ratio: this.editInfo.rebate_ratio
}, res=>{
let url = '', data = {};
if(this.userType==='agent'){
url='/agentTeam/settingRebateRatio';
data = {
user_id: this.editInfo.id,
// password: this.editInfo.password,
rebate_ratio: this.editInfo.rebate_ratio
}
}else if(this.userType==='background'){
url='/adminAgentTeam/editAgent';
data = {
aid: this.editInfo.id,
password: this.editInfo.password,
rebate_ratio: this.editInfo.rebate_ratio
}
}
API.request(url, data, res=>{
uni.showToast({
title: res.msg
})
@ -208,10 +239,12 @@
},
add(){
this.title = "新增代理";
this.editType = "add";
this.showEdit = true;
this.editInfo = this.originInfo;
if(this.userType==='background'){
this.title = "新增代理";
this.editType = "add";
this.showEdit = true;
this.editInfo = this.originInfo;
}
},
//
modifyScore(type, val, i){
@ -235,11 +268,21 @@
})
return;
}
let url = this.modifyType===1?'/adminAgentTeam/agentUpScores':'/adminAgentTeam/agentDownScores'
API.request(url, {
aid: this.scoreInfo.id,
quota: this.limit
}, res=>{
let url, data;
if(this.userType==='background'){
url = this.modifyType===1?'/adminAgentTeam/agentUpScores':'/adminAgentTeam/agentDownScores'
data = {
aid: this.scoreInfo.id,
quota: this.limit
}
}else{
url = this.modifyType===1?'/agentTeam/upScores':'/agentTeam/downScores'
data = {
user_id: this.scoreInfo.id,
quota: this.limit
}
}
API.request(url, data, res=>{
uni.showToast({
title: res.msg
})
@ -256,6 +299,7 @@
}
},
onShow() {
this.userType = uni.getStorageSync('userType');
this.account = '';
this.search();
},
@ -359,6 +403,20 @@
color: #999;
background-color: #f1f1f1;
}
.grade{
position: absolute;
// width: 76rpx;
padding: 4rpx 14rpx;
height: 48rpx;
top: 0px;
left: 0px;
border-radius: 10px 3px 3px 3px;
font-size: 12px;
line-height: 48rpx;
text-align: center;
color: #F14128;
background-color: #f1f1f1;
}
}
.info{
text-align: center;

64
pages/list/team.vue

@ -18,13 +18,18 @@
<view class="amount">
<view class="amount1">
<view class=""><text>余额</text>{{item.balance}}</view>
<view class="red" @click="modifyScore(1, item, index)">上分</view>
</view>
<view class="amount1">
<view class=""><text>可提余额</text>{{item.withdrawal_balance}}</view>
</view>
</view>
<view class="amount2">
<view class="amount1">
<view class="red" @click="modifyScore(1, item, index)">上分</view>
<view class="red" @click="modifyScore(2, item, index)">下分</view>
</view>
</view>
<view class="update" @click="update(item, index)">升级代理</view>
</view>
</view>
<view class="edit_mask" v-if="showScore" @click.stop="">
@ -58,9 +63,9 @@
data(){
return {
listsData: [
{id:111,balance:'1000.00',withdrawal_balance:'1000.00'},
{id:123,balance:'1000.00',withdrawal_balance:'1000.00'},
{id:222,balance:'1000.00',withdrawal_balance:'1000.00'}
{id:111,balance:'1000.00',withdrawal_balance:'1000.00', rebate_ratio: '0'},
{id:123,balance:'1000.00',withdrawal_balance:'1000.00', rebate_ratio: '0'},
{id:222,balance:'1000.00',withdrawal_balance:'1000.00', rebate_ratio: '0'}
],
showScore: false,
scoreTitle: '',
@ -78,7 +83,8 @@
API.request('/agentTeam/userList', {
limit: 10,
title: this.account,
page: this.page
page: this.page,
identity: 3//
}, res=>{
// console.log(res);
@ -134,7 +140,29 @@
this.page = 1;
this.noMore= false;
this.getDataList();
}
},
update(val, i){
let _this = this;
uni.showModal({
title:'温馨提示',
content:"确定该用户是否升级代理",
success(res) {
if(res.confirm){
API.request('/agentTeam/upGradationAgent', {
user_id: val.id,
rebate_ratio: val.rebate_ratio
}, res=>{
uni.showToast({
title: res.msg
})
_this.account = '';
_this.search();
})
}
}
})
},
},
onLoad() {
updateTabBar.changeAgent();
@ -216,6 +244,7 @@
display: flex;
align-items: center;
font-size: 14px;
position: relative;
}
.info{
margin-right: 10px;
@ -225,12 +254,19 @@
justify-content: space-between;
}
.amount{
flex: 1;
flex: 0.65;
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.amount2{
flex: 0.35;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
}
.amount1{
display: flex;
justify-content: space-between;
@ -247,6 +283,20 @@
height: 52rpx;
border-radius: 50%;
}
.update{
position: absolute;
// width: 76rpx;
padding: 0px 5px;
height: 48rpx;
top: 0px;
right: 0px;
border-radius: 3px 10px 3px 3px;
font-size: 12px;
line-height: 48rpx;
text-align: center;
color: #F14128;
background-color: #f1f1f1;
}
}
.edit_mask{
width: 100vw;

3
pages/login/login.vue

@ -148,7 +148,8 @@
this.userType = 'user';
break;
case 2:
newUrl = '/pages/list/team';
newUrl = '/pages/home/home';
// newUrl = '/pages/list/team';
this.userType = 'agent';
break;
case 1:

163
pages/recordsList/WinningRecord/WinningRecord.vue

@ -0,0 +1,163 @@
<template>
<view style="padding-top: 20rpx;">
<view class="nav_area"></view>
<view class="">
<view class="uni-list">
<view class="uni-list-cell" style="padding: 20rpx 40rpx 0px;display: flex;align-items:center;font-size: 14px;">
<image src="../../../static/home/stLine-calendar-l@2x.png" mode="" style="width: 48rpx;height: 48rpx;margin-right: 10px;"></image>
<view class="uni-list-cell-db">
<picker mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
<view class="uni-input">{{date}}</view>
</picker>
</view>
</view>
</view>
</view>
<view style="padding: 20rpx 40rpx 0px;display: flex;font-size: 14px;color: #999;">
今日中奖总金额
<view style="color: #E50000;">{{allToday}}<text style="color: #444;">{{' '+unit}}</text></view>
</view>
<view class="record-head" v-if="recordsList.length>0">
<view style="flex:0.15;">ID</view>
<view style="flex:0.37;">手机号码</view>
<view style="flex:0.2;">时间</view>
<view style="flex:0.28;text-align: right;">中奖金额</view>
</view>
<view v-for="(item,index) in recordsList" :key="index" class="record-item">
<view style="flex:0.15;">{{ item.user_id }}</view>
<view style="flex:0.37;">{{ item.phone }}</view>
<view style="flex:0.2;">{{ item.datetime }}</view>
<view style="flex:0.28;text-align: right;color: #E50000;">{{ item['awards_amount'] }}<text style="color: #444;"></text></view>
</view>
<view class="" v-if="recordsList.length===0" style="color: #999;text-align: center;padding: 40rpx;">
- 暂无记录 -
</view>
</view>
</template>
<script>
import API from '@/common/js/api.js'
export default {
data() {
// const currentDate = this.getDate({
// format: true
// })
return {
userType: '',
startDate: '2023-01-01',
endDate: '2023-10-09',
date: '2023-10-01',
allToday: '',
unit: '',
recordsList:[
// {
// "user_id":"12",
// "phone":"13612349786",
// "datetime":"14:01:19",
// "awards_amount":"100"
// },
// {
// "ID":"12",
// "":"13612349786",
// "":"14:01:19",
// "":"100"
// },
],
page: 1,
noMore: true,
}
},
onLoad(e) {
var date = new Date();
var year = date.getFullYear();
var month = date.getMonth() + 1;
var day = date.getDate();
month = (month > 9) ? month : ('0' + month);
day = (day < 10) ? ('0' + day) : day;
var today = year + '-' + month + '-' + day;
this.date = today;
this.endDate = today;
this.userType = uni.getStorageSync('userType');
this.getZJ();
},
methods: {
getZJ(){
API.request('/adminStatistics/awardRecords', {
page: this.page,
limit: 10,
date: this.date
}, res=>{
this.allToday = res.data.sum_amount;
this.unit = res.data.unit;
let list = res.data.list;
if(this.page===1){
list.length>0 ? this.noMore=false : false;
this.recordsList = list;
}else{
if(res.data.list.length==0){
uni.showToast({
title: '没有更多了',
icon: 'none'
})
this.noMore = true;
}
this.recordsList = this.recordsList.concat(list)
}
})
},
bindDateChange: function(e) {
this.date = e.detail.value;
console.log(this.date);
this.getZJ();
},
},
onReachBottom() {
if(this.noMore) return;
this.page++;
this.getZJ();
}
}
</script>
<style scoped lang="scss">
.nav_area {
position: fixed;
top: 0px;
left: 0px;
z-index: 99;
background-color: #fff;
box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.05);
width: 700rpx;
padding: 0px 25rpx;
/* #ifdef H5 */
height: 88rpx;padding-top: var(--status-bar-height);
/* #endif */
/* #ifdef APP-PLUS */
height: 2px;
/* #endif */
box-sizing: content-box;
color: #b0b0b0;
font-size: 14px;
}
.record-head{
padding: 20rpx 40rpx 0px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
font-size: 14px;
color: #CECECE;
}
.record-item{
padding: 20rpx 40rpx 0px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
font-size: 14px;
color: #999;
}
</style>

41
pages/recordsList/recordsList.vue

@ -8,6 +8,7 @@
<view v-if="type=='UP'||type=='DOWN'">ID{{item.id}}<text v-if="item.type">{{item.type}}</text></view>
<view v-if="type=='CZ'">{{item.trade_type}}</view>
<view v-if="type=='TX'">{{item.trade_type}}</view>
<view v-if="type=='BACK'">{{item.id}}</view>
<view class="" style="color: #CD2731;">
<!-- <text v-if="type=='CZ'||type=='ZJ'||type=='DOWN'">+</text>
<text v-else>-</text> -->
@ -20,6 +21,7 @@
<text v-if="type=='TX'||type=='ZJ'||type=='DOWN'">可提余额</text>
<text v-else-if="type=='CZ'">剩余</text>
<text v-else-if="type=='XF'||type=='UP'">余额</text>
<text v-else-if="type=='BACK'"></text>
{{item.amount2}}
</view>
</view>
@ -76,6 +78,9 @@
case 'DOWN':
title = '下分'
break;
case 'BACK':
title = '返点'
break;
}
uni.setNavigationBarTitle({
title: title+'记录'
@ -287,6 +292,42 @@
}
})
},
getBACK(){
let url = '';
switch(this.userType){
case 'agent':
url = '/agentTeam/getRebateRecordsList'
break;
case 'background':
url = '/adminUser/getRebateRecordsList'
break;
}
API.request(url, {
page: this.page,limit:10
}, res=>{
let list = res.data.list.map(item=>{
return {
amount1: item.amount,
amount2: item.str,
time: item.datetime,
id: item.id
}
});
if(this.page===1){
list.length>0 ? this.noMore=false : false;
this.recordsList = list;
}else{
if(res.data.list.length==0){
uni.showToast({
title: '没有更多了',
icon: 'none'
})
this.noMore = true;
}
this.recordsList = this.recordsList.concat(list)
}
})
}
},
onReachBottom() {

50
pages/scratchCard/readme.md

@ -0,0 +1,50 @@
## 奖券页面类型
- digit_number(你的号码+中奖号码)
> 1080背景图宽(对应735的手机)
> 1700背景图高
> 两区顶部相距720px(250)
> 两区左边相距65px(22.5)
> 刮奖区宽950px(330)
> 刮奖区高866px(300)
- digit_icon(666)(你的号码)
> 1080背景图宽
> 1080背景图高
> 两区顶部相距px528(183.33)
> 两区左边相距px65(22.5)
> 刮奖区宽950px(330)
> 刮奖区高px300(104.16)
- digit_icon(777)(你的号码)
> 1080背景图宽
> 2163背景图高
> 两区顶部相距px1197(415.6)
> 两区左边相距px65(22.5)
> 刮奖区宽px950(330)
> 刮奖区高px696(241.66)
- digit_number_icon(你的号码+中奖号码+中奖图标)
> 1080背景图宽
> 2163背景图高
> >>上下刮板一体
> 两区顶部相距px820(284.7)
> 两区左边相距px65(22.5)
> 刮奖区宽950px(330)
> 刮奖区高1087px(377.4)
> >>上下刮板分体
> >>> 上左
> 距背景顶px927()
> 距背景左px65()
> 刮奖区宽px410()
> 刮奖区高px128()
> >>> 上右
> 距背景顶px927()
> 距左37px()
> 距背景左37+65+410px()
> 刮奖区宽px503()
> 刮奖区高px128()
> >>>下
> 两区顶部相距px1207(1207*375/1080=419.1)
> 两区左边相距px65(22.5)
> 刮奖区宽950px(330)
> 刮奖区高700px(243.05)

35
pages/scratchCard/scratch.js

@ -17,6 +17,9 @@ class Scratch {
this.totalArea = this.width * this.height
this.bgImg = opts.bgImg
this.show = false
this.codeType = opts.codeType
this.direction = opts.direction;//号码行数
this.transverse = opts.transverse;//每行个数
this.init()
}
@ -29,12 +32,34 @@ class Scratch {
}
drawMask () {
let sx, sy, swidth, sheight, x, y, width, height;
// 底图是像素1080的宽
// this.ctx.drawImage(this.bgImg, 64.8, 864, 950.4, 720, 0, 0, 330, 250)
// this.ctx.drawImage(this.bgImg, 64.8, 720, 950.4, 864, 0, 0, 330, 300)
// console.log(this.width, this.height, this.screenWidth, 'drawMask');
console.log(this.bgImg, (this.screenWidth-this.width)/2*1080/this.screenWidth, (this.screenWidth/1.5)*1080/this.screenWidth, this.width*1080/this.screenWidth, this.height*1080/this.screenWidth, 0, 0, this.width, this.height);
this.ctx.drawImage(this.bgImg, (this.screenWidth-this.width)/2*1080/this.screenWidth, (this.screenWidth/1.5)*1080/this.screenWidth, this.width*1080/this.screenWidth, this.height*1080/this.screenWidth, 0, 0, this.width, this.height);
sx = (this.screenWidth-this.width)/2*1080/this.screenWidth;
sy = (this.screenWidth/1.5)*1080/this.screenWidth;//开始剪切的 y 坐标位置
swidth = this.width*1080/this.screenWidth;//被剪切图像的宽度
sheight = this.height*1080/this.screenWidth;//被剪切图像的高度
x = 0;//在画布上放置图像的 x 坐标位置(从画布的左上顶点开始绘制)
y = 0;
width = this.width;//要使用的图像的宽度
height = this.height;
if(this.codeType==='digit_number_icon'){//888
// sy = 820;// 上下刮板一体
sy = 1207;// 上下刮板分体
}
if(this.codeType==='digit_icon'&&this.direction==2){//666
sy = 528;
}
if(this.codeType==='digit_icon'&&this.direction==4){//777
sy = 1197;
}
console.log(sx, sy, swidth, sheight, x, y, width, height);
// 数字计算的稍微会偏0.00几像素
this.ctx.drawImage(this.bgImg, sx, sy, swidth, sheight, x, y, width, height);
// this.ctx.drawImage(this.bgImg, 64.8, 720, 950.4, 864, 0, 0, 330, 300);
this.ctx.setFillStyle(this.maskColor)
this.ctx.fillRect(0, 0, this.width, this.height)
this.ctx.draw()

336
pages/scratchCard/scratchCard.vue

@ -1,24 +1,74 @@
<template>
<view class="prizePage" >
<view class="prizeBg" :style="{'background-image':`url('${ticketInfo.bg_image}')`}"></view>
<view class="prizeContent" :style="{'background-image':`url('${ticketInfo.bg_image}')`}">
<view class="prizeContent" :style="{'background-image':`url('${ticketInfo.bg_image}')`}"
:class="{'type8':code==='digit_number_icon', 'type7':(code==='digit_icon' && direction==4), 'type6':(code==='digit_icon' && direction==2)}" >
<!-- <view class="bg" :style="{'background-image':`url('${ticketInfo.bg_image}')`}" v-if="gai"></view> -->
<view class="scratch">
<!-- 上下刮板分体 -->
<view class="scratchTop" v-if="code && code==='digit_number_icon'">
<!-- 刮奖结果图片 -->
<view class="result_img" :class="showBackboard?'zIndex1':'hide'" style="flex-direction: row;justify-content: space-between;background-color: transparent;">
<view style="display: flex;align-items: center;justify-content: space-around;width:284.72rpx;background-color: #ddd;border-radius: 10px;">
<view v-for="(prizeItem1,prizeIndex1) in prizesIconList[0]" :key="prizeIndex1" class="data_item">
<image :src="prizeItem1" mode="aspectFill"></image>
</view>
</view>
<view style="display: flex;align-items: center;justify-content: space-around;width:349.30rpx;background-color: #ddd;border-radius: 10px;">
<view v-for="(prizeItem2,prizeIndex2) in prizesIconList[1]" :key="prizeIndex2" class="data_item">
<image :src="prizeItem2" mode="aspectFill"></image>
</view>
</view>
</view>
<!-- 刮奖canvas容器 -->
<view class="" style="width: 100%;height: 100%;">
<canvas v-if="!isWin && !isThank" ref="leftCa"
class="canvas-left"
canvas-id="guaguaLeft"
:disable-scroll="true"
@touchstart="$refs.leftCa.touchStart"
@touchmove="$refs.leftCa.touchMove"
@touchend="$refs.leftCa.touchEnd"
></canvas>
<canvas v-if="!isWin && !isThank" ref="rightCa"
class="canvas-right"
canvas-id="guaguaRight"
:disable-scroll="true"
@touchstart="$refs.rightCa.touchStart"
@touchmove="$refs.rightCa.touchMove"
@touchend="$refs.rightCa.touchEnd"
></canvas>
</view>
</view>
<view class="scratch" :class="{'type8':code==='digit_number_icon', 'type7':(code==='digit_icon' && direction==4), 'type6':(code==='digit_icon' && direction==2)}">
<view class="box">
<!-- 刮奖结果图片 -->
<view :class="showBackboard?'zIndex1':'hide'" style="" class="result_img">
<view style="font-size: 12px;text-align: center;margin-top: 8px;">中奖号码</view>
<view class="img_row" style="border-bottom: 1px solid #333;width: 90%;margin: 5px auto;">
<view v-for="(prizeItem,prizeIndex) in prizeList" :key="prizeIndex" class="data_item">
<image :src="prizeItem" mode="aspectFill"></image>
<!-- 上下刮板一体 -->
<!-- <block v-if="code && code==='digit_number_icon'">
<view style="font-size: 12px;text-align: center;margin-top: 8px;">中奖图标</view>
<view style="border-bottom: 1px solid #333;width: 90%;margin: 5px auto;">
<view v-for="(iconListItem,index) in prizesIconList" :key="index" class="img_row">
<view v-for="(prizeItem2,prizeIndex2) in iconListItem" :key="prizeIndex2" class="data_item">
<image :src="prizeItem2" mode="aspectFill"></image>
</view>
</view>
</view>
</block> -->
<!-- -->
<view v-if="code && code!=='digit_icon'" style="font-size: 12px;text-align: center;margin-top: 8px;">中奖号码</view>
<view v-if="code && code!=='digit_icon'" class="img_row" style="border-bottom: 1px solid #333;width: 90%;margin: 5px auto;">
<view v-for="(prizeItem1,prizeIndex1) in prizeList" :key="prizeIndex1" class="data_item">
<image :src="prizeItem1" mode="aspectFill"></image>
</view>
</view>
<view v-for="(item,index) in dataList" :key="index" class="img_row">
<view v-for="(lineItem, lineIndex) in item" :key="lineIndex" class="data_item"
style="border-bottom: 1px dashed #333;">
<image :src="lineItem.image" mode="aspectFill"></image>
<view class="">{{lineItem.amount}}</view>
<view style="font-size: 12px;font-weight: normal;transform: scale(0.8);">{{lineItem.pinyin}}</view>
<view style="line-height: 10px;">{{lineItem.amount}}</view>
<view style="font-size: 12px;font-weight: normal;transform: scale(0.6);line-height: 8px;">{{lineItem.pinyin}}</view>
<view class="circle" :class="(lineItem.is_awards&&awards_amount)?'show':''"></view>
</view>
</view>
@ -65,38 +115,25 @@
<script>
import API from '@/common/js/api.js'
import Scratch from './scratch.js'
import ScratchT from './scratchTools.js'
// import VConsole from './renderjs.js'
export default {
data () {
return {
id: '',
ticketInfo: {
// bg_image: '../../static/home/4.jpg',
bg_image: '',
price: '20',
content: `刮开覆盖膜,如果出现背书标志“1倍”、“2倍”、“5倍”、“10倍”、“20倍”、
50100既中得该标志下方所示的金额乘以该倍数
如果在全中区出现标志即中图刮开区内所示的20个金额之和`
},
awards_amount: 0,
prizeList: ['','',''],
prizesIconList: [],
// dataList: [
// [
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'}
// ],
// [
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'}
// ],
// [
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'},
// {image: '',amount:'100.00'}
// {image: '',amount:'100.00', is_awards: false,pinyin: ''},
// ],
// [],
// [],
// ],
dataList: [],
toDraw: false, // ,
@ -104,17 +141,29 @@ export default {
isWin: false, //
scratchWidth: 330, // -375330
scratchHeight: 300, // -375300
scratchTopWidthL: 0,
scratchTopWidthR: 0,
scratchTopHeight: 0,
scratchSize: 10, //
scratchScale: 0.8, //
prize_img: '', //
isScratching: false, // ,
isThank: false,
guaCanvas: null,
guaCanvasL: null,
guaCanvasR: null,
isShow: false,
isShowLeft: false,
isShowRight: false,
c_r_id: '',
gai: true,
screenWidth: 375,
showBackboard: false,//
code: '',//
direction: '',//
transverse: '',//
showCount: 0,//888
}
},
updated() {
@ -122,24 +171,31 @@ export default {
},
watch: {
isShow(n, o){
console.log(n,o);
// console.log(n,o);
if(n && n!=o){
if(this.code==='digit_number_icon'){
this.changeShowCount();
return;
}
this.showResult = true;
this.gai = false;
this.doPrizeScratchTicketFun();
}
}
},
isShowLeft(n, o){
if(n && n!=o){
this.changeShowCount();
}
},
isShowRight(n, o){
if(n && n!=o){
this.changeShowCount();
}
},
},
created() {
let _this = this;
uni.getSystemInfo({
success(res) {
// console.log(res, '');
_this.screenWidth = res.screenWidth;
_this.scratchWidth = 0.88 * _this.screenWidth || 330;
_this.scratchHeight = 0.8 * _this.screenWidth || 300;
}
})
},
onLoad(e) {
uni.setNavigationBarTitle({
@ -151,16 +207,56 @@ export default {
},
methods: {
initInfo(){
let _this = this;
API.request('/zone/beginInitInfo', {zone_goods_id: this.id}, res=>{
this.ticketInfo = res.data.data;
this.code = res.data.data.code;
this.direction = res.data.data.direction;//
this.transverse = res.data.data.transverse;//
const result = uni.getSystemInfoSync();
_this.screenWidth = result.screenWidth;
_this.scratchWidth = 950/1080 * _this.screenWidth || 330;
_this.scratchHeight = 866/1080 * _this.screenWidth || 300;
if(this.code==='digit_number_icon'){//888
// this.scratchHeight = 1087/1080 * this.screenWidth;//
this.scratchHeight = 700/1080 * this.screenWidth;//
this.scratchTopWidthL = 410/1080 * _this.screenWidth || 330;
this.scratchTopWidthR = 503/1080 * _this.screenWidth || 330;
this.scratchTopHeight = 128/1080 * this.screenWidth;
}
if(this.code==='digit_icon'&&this.direction==2){//666
this.scratchHeight = 300/1080 * this.screenWidth;
}
if(this.code==='digit_icon'&&this.direction==4){//777
this.scratchHeight = 696/1080 * this.screenWidth;
}
// console.log(this.scratchWidth, this.scratchHeight);
let timer = setInterval(()=>{
if(this.guaCanvas && this.guaCanvas.show){
this.isShow = true;
clearInterval(timer);
}
}, 500)
if(_this.code==='digit_number_icon'){
let timer1 = setInterval(()=>{
if(this.guaCanvasL && this.guaCanvasL.show){
this.isShowLeft = true;
clearInterval(timer1);
}
}, 500)
let timer2 = setInterval(()=>{
if(this.guaCanvasR && this.guaCanvasR.show){
this.isShowRight = true;
clearInterval(timer2);
}
}, 500)
}
})
let timer = setInterval(()=>{
if(this.guaCanvas && this.guaCanvas.show){
this.isShow = true;
clearInterval(timer);
}
}, 500)
},
initCanvas () {
// onReadyh5onLoad
@ -171,8 +267,37 @@ export default {
size: this.scratchSize,
scale: this.scratchScale,
bgImg: this.ticketInfo.bg_image,
screenWidth: this.screenWidth
screenWidth: this.screenWidth,
codeType: this.code,
direction: this.direction,//
transverse: this.transverse,//
})
if(this.code==='digit_number_icon'){
this.guaCanvasL = new ScratchT(this.$refs.leftCa, {
canvasId: 'guaguaLeft',
width: this.scratchTopWidthL,
height: this.scratchTopHeight,
size: this.scratchSize,
scale: this.scratchScale,
bgImg: this.ticketInfo.bg_image,
screenWidth: this.screenWidth,
codeType: this.code,
direction: this.direction,//
transverse: this.transverse,//
})
this.guaCanvasR = new ScratchT(this.$refs.rightCa, {
canvasId: 'guaguaRight',
width: this.scratchTopWidthR,
height: this.scratchTopHeight,
size: this.scratchSize,
scale: this.scratchScale,
bgImg: this.ticketInfo.bg_image,
screenWidth: this.screenWidth,
codeType: this.code,
direction: this.direction,//
transverse: this.transverse,//
})
}
},
//
@ -183,6 +308,7 @@ export default {
this.initCanvas();
this.dataList = res.data.list;
this.prizeList = res.data.prizes_data;
this.prizesIconList = res.data.prizes_icon_data;
// console.log(this.dataList, 'dataList----');
setTimeout(()=>{
this.showBackboard = true;
@ -223,8 +349,11 @@ export default {
this.gai = true;
this.isScratching = false;
this.isShow = false;
this.isShowLeft = false;
this.isShowRight = false;
this.showBackboard = false;
this.awards_amount = 0;
this.showCount = 0;
API.request('/zone/beginInitInfo', {zone_goods_id: this.id}, res=>{
this.ticketInfo = res.data.data;
@ -237,6 +366,20 @@ export default {
clearInterval(timer);
}
}, 500)
if(this.code==='digit_number_icon'){
let timer1 = setInterval(()=>{
if(this.guaCanvasL && this.guaCanvasL.show){
this.isShowLeft = true;
clearInterval(timer1);
}
}, 500)
let timer2 = setInterval(()=>{
if(this.guaCanvasR && this.guaCanvasR.show){
this.isShowRight = true;
clearInterval(timer2);
}
}, 500)
}
},
close(type){
if(type===1){
@ -246,6 +389,14 @@ export default {
this.isThank = false;
}
this.showResult = false;
},
changeShowCount(){
this.showCount++;
if(this.showCount===3){
this.showResult = true;
this.gai = false;
this.doPrizeScratchTicketFun();
}
}
},
}
@ -256,15 +407,12 @@ export default {
width: 750rpx;
// min-height: calc(100vh - 88rpx - var(--status-bar-height));
height: calc(100vh - 88rpx - var(--status-bar-height));
// padding-top: calc((100vh - 88rpx - var(--status-bar-height) - (750rpx * 1700 / 1080)) / 2);
// filter: blur(5px);
overflow: hidden;
}
.prizeBg{
width: 750rpx;
min-height: calc(100vh - 88rpx - var(--status-bar-height));
background-repeat: no-repeat;
// background-size: 100% 100%;
background-size: cover;
background-position: center;
filter: blur(5px);
@ -281,13 +429,19 @@ export default {
margin-top: calc((100vh - 88rpx - var(--status-bar-height) - (750rpx * 1700 / 1080)) / 2);
//
// background-size: auto 100%;
// background-color: #fff;
// height: 590px;
// background-position: center top;
// position: fixed;
// top: calc((100vh - 88rpx - var(--status-bar-height) - (750rpx * 1700 / 1080)) / 2 + 88rpx);
// z-index: 4;
&.type8{
height: calc(750rpx * 2163 / 1080);
margin-top: calc((100vh - 88rpx - var(--status-bar-height) - (750rpx * 2163 / 1080)) / 2);
position: relative;
}
&.type7{
height: calc(750rpx * 2163 / 1080);
margin-top: calc((100vh - 88rpx - var(--status-bar-height) - (750rpx * 2163 / 1080)) / 2);
}
&.type6{
height: calc(750rpx * 1080 / 1080);
margin-top: calc((100vh - 88rpx - var(--status-bar-height) - (750rpx * 1080 / 1080)) / 2);
}
}
.bg{
position: fixed;
@ -324,7 +478,8 @@ export default {
opacity: 1;
}
.data_item{
width: 22%;
// width: 22%;
flex: 1;
text-align: center;
font-size: 14px;
font-weight: bold;
@ -357,13 +512,80 @@ export default {
}
}
}
.scratchTop{
position: absolute;
top: 644rpx;
left: 45rpx;
width: 660rpx;
height: 88.88rpx;
// background-color: #fff;
.canvas-left{
position: absolute;
top: 0;
left: 0;
width: 284.72rpx;
height: 100%;
overflow: hidden;
z-index: 2;
// background-color: #bbb;
}
.canvas-right{
position: absolute;
top: 0;
right: 0;
width: 349.30rpx;
height: 100%;
overflow: hidden;
z-index: 2;
// background-color: #ccc;
}
}
.scratch {
position: relative;
padding-top: 500rpx;
// padding-top: 280px;
width: 660rpx;
height: 600rpx;
margin: 0px auto;
&.type8{
// padding-top: 569.4rpx;//readme.md//
// height: 754.8rpx;//readme.md//
padding-top: 838.2rpx;//
height: 486.1rpx;//
.box{
.tip{
.btn {
// margin: 470rpx auto 0;//
margin: 270rpx auto 0;//
}
}
}
}
&.type7{
padding-top: 831.2rpx;
height: 483.32rpx;
.box{
.tip{
.btn {
margin: 190rpx auto 0;
}
}
}
}
&.type6{
padding-top: 366.66rpx;
height: 208.32rpx;
.box{
.tip{
.btn {
margin: 72rpx auto 0;
}
}
}
}
.box {
width: 100%;
height: 100%;
@ -443,6 +665,8 @@ export default {
}
}
}
}
.mask{
width: 100vw;

142
pages/scratchCard/scratchTools.js

@ -0,0 +1,142 @@
class Scratch {
constructor (page, opts) {
opts = opts || {}
console.log(page, '-------');
this.page = page
this.canvasId = opts.canvasId || 'canvas'
this.width = opts.width || 330
this.height = opts.height || 300
this.screenWidth = opts.screenWidth || 375
// this.maskColor = opts.maskColor || '#D2D2D2'
// this.maskColor = '#dddddd'
this.maskColor = 'transparent';
this.size = opts.size || 10
this.r = this.size * 2
this.area = this.r * this.r
this.scale = opts.scale || 0.3
this.totalArea = this.width * this.height
this.bgImg = opts.bgImg
this.show = false
this.codeType = opts.codeType
this.direction = opts.direction;//号码行数
this.transverse = opts.transverse;//每行个数
this.init()
}
init () {
this.clearPoints = []
this.ctx = uni.createCanvasContext(this.canvasId)
this.drawMask()
this.bindTouch()
}
drawMask () {
let sx, sy, swidth, sheight, x, y, width, height;
// 底图是像素1080的宽
swidth = this.width*1080/this.screenWidth;//被剪切图像的宽度
sheight = this.height*1080/this.screenWidth;//被剪切图像的高度
x = 0;//在画布上放置图像的 x 坐标位置(从画布的左上顶点开始绘制)
y = 0;
width = this.width;//要使用的图像的宽度
height = this.height;
if(this.codeType==='digit_number_icon'){//888
sy = 927;//开始剪切的 y 坐标位置
if(this.canvasId=='guaguaLeft'){
sx = 65;
}
if(this.canvasId=='guaguaRight'){
sx = 512;
}
}
console.log(sx, sy, swidth, sheight, x, y, width, height);
// 数字计算的稍微会偏0.00几像素
this.ctx.drawImage(this.bgImg, sx, sy, swidth, sheight, x, y, width, height);
// this.ctx.drawImage(this.bgImg, 64.8, 720, 950.4, 864, 0, 0, 330, 300);
this.ctx.setFillStyle(this.maskColor)
this.ctx.fillRect(0, 0, this.width, this.height)
this.ctx.draw()
}
bindTouch () {
this.page.touchStart = (e) => {
this.eraser(e, true)
}
this.page.touchMove = (e) => {
this.eraser(e, false)
}
this.page.touchEnd = (e) => {
if (this.show) {
this.ctx.clearRect(0, 0, this.width, this.height)
this.ctx.draw()
// console.log('刮奖面积达标');
}
}
}
eraser (e, bool) {
const len = this.clearPoints.length
let count = 0
const x = e.touches[0].x; const y = e.touches[0].y
const x1 = x - this.size
const y1 = y - this.size
if (bool) {
this.clearPoints.push({
x1: x1,
y1: y1,
x2: x1 + this.r,
y2: y1 + this.r
})
}
for (const item of this.clearPoints) {
if (item.x1 > x || item.y1 > y || item.x2 < x || item.y2 < y) {
count++
} else {
break
}
}
if (len === count) {
this.clearPoints.push({
x1: x1,
y1: y1,
x2: x1 + this.r,
y2: y1 + this.r
})
}
if (len && this.r * this.r * len > this.scale * this.totalArea) {
this.show = true;
// console.log('刮奖面积达标');
}
this.clearArcFun(x, y, this.r, this.ctx)
this.ctx.draw(true);
}
clearArcFun (x, y, r, ctx) {
let stepClear = 1
clearArc(x, y, r)
function clearArc (x, y, radius) {
const calcWidth = radius - stepClear
const calcHeight = Math.sqrt(radius * radius - calcWidth * calcWidth)
const posX = x - calcWidth
const posY = y - calcHeight
const widthX = 2 * calcWidth
const heightY = 2 * calcHeight
if (stepClear <= radius) {
ctx.clearRect(posX, posY, widthX, heightY)
stepClear += 1
clearArc(x, y, radius)
}
}
}
}
export default Scratch

35
pages/ucenter/invite/invite.vue

@ -109,16 +109,31 @@
copy(){
API.request('/user/downloadApp', {}, res=>{
let url = res.data.app_url;
uni.setClipboardData({
data: url,
complete: (e) => {
console.log(e);
// uni.hideToast()
/* 以下临时解决setClipboardData h5端样式和键盘弹出端错误解决方案,后续会直接内置*/
document.getElementById("#clipboard").style.top = '-999px';
uni.hideKeyboard()
}
})
// #ifdef H5
let oInput = document.createElement('input')
oInput.value = url
document.body.appendChild(oInput)
oInput.select() //
document.execCommand('Copy') //
uni.showToast({
title: "复制成功!",
duration: 2000,
icon: "none",
});
oInput.remove()
// #endif
// uni.setClipboardData({
// data: url,
// complete: (e) => {
// console.log(e);
// // uni.hideToast()
// /* setClipboardData h5*/
// document.getElementById("#clipboard").style.top = '-999px';
// uni.hideKeyboard()
// }
// })
// H5
})
}

28
pages/ucenter/ucenter.vue

@ -262,6 +262,12 @@
"icon": "compose",
"iconN": "wallet"
},
{
"title": '返点记录',
"to": '/pages/recordsList/recordsList?type=BACK',
"icon": "download",
"iconN": "point"
},
{
"title": '邀请码',
"to": '/pages/ucenter/invite/invite',
@ -293,26 +299,32 @@
{
"title": '上分记录',
"to": '/pages/recordsList/recordsList?type=UP',
"iconN": "gold",
"icon": "download"
"icon": "download",
"iconN": "gold"
},
{
"title": '下分记录',
"to": '/pages/recordsList/recordsList?type=DOWN',
"iconN": "wallet",
"icon": "download"
"icon": "download",
"iconN": "wallet"
},
{
"title": '返点记录',
"to": '/pages/recordsList/recordsList?type=BACK',
"icon": "download",
"iconN": "point"
},
{
"title": '关于',
"to": '/pages/about/about',
"iconN": "list",
"icon": "download"
"icon": "download",
"iconN": "list"
},
{
"title": '清除缓存',
"event": 'clearCache',
"iconN": "clear",
"icon": "download"
"icon": "download",
"iconN": "clear"
},
],
// [

BIN
static/home/fas fa-caret-down@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 B

BIN
static/home/stLine-calendar-l@2x.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

BIN
static/tabbar/jilu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

BIN
static/tabbar/jilu_a.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

BIN
static/user/icon_point.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Loading…
Cancel
Save