删除、修改
This commit is contained in:
parent
8da5ac8b62
commit
caa18dffcb
|
|
@ -118,7 +118,7 @@ export default {
|
||||||
if (item.ttype == 2) {
|
if (item.ttype == 2) {
|
||||||
/* 一番赏 */
|
/* 一番赏 */
|
||||||
this.to({
|
this.to({
|
||||||
url: '/pages/shouye/detail',
|
url: '/pages/main/detail',
|
||||||
query: {
|
query: {
|
||||||
goods_id: item.goods_id
|
goods_id: item.goods_id
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +128,7 @@ export default {
|
||||||
/* 无限赏 */
|
/* 无限赏 */
|
||||||
if (item.ttype == 3) {
|
if (item.ttype == 3) {
|
||||||
this.to({
|
this.to({
|
||||||
url: '/pages/shouye/detail_wuxian',
|
url: '/pages/main/detail_wuxian',
|
||||||
query: {
|
query: {
|
||||||
goods_id: item.goods_id
|
goods_id: item.goods_id
|
||||||
}
|
}
|
||||||
|
|
@ -492,7 +492,7 @@ export default {
|
||||||
routerNavigateBack(delta)
|
routerNavigateBack(delta)
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
// 如果返回失败,则回到首页
|
// 如果返回失败,则回到首页
|
||||||
routerNavigateTo('/pages/shouye/index', {}, 'switchTab');
|
routerNavigateTo('/pages/main/index', {}, 'switchTab');
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -516,7 +516,7 @@ export default {
|
||||||
routerNavigateBack(num)
|
routerNavigateBack(num)
|
||||||
.catch(() => {
|
.catch(() => {
|
||||||
// 如果返回失败,则回到首页
|
// 如果返回失败,则回到首页
|
||||||
routerNavigateTo('/pages/shouye/index', {}, 'reLaunch');
|
routerNavigateTo('/pages/main/index', {}, 'reLaunch');
|
||||||
});
|
});
|
||||||
}, time * 1000)
|
}, time * 1000)
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -12,24 +12,24 @@ const wx_version = "117";
|
||||||
|
|
||||||
// 白名单页面(不需要登录即可访问)
|
// 白名单页面(不需要登录即可访问)
|
||||||
export const whiteList = [
|
export const whiteList = [
|
||||||
"pages/shouye/index", // 首页
|
"pages/main/index", // 首页
|
||||||
"pages/index/index",
|
"pages/index/index",
|
||||||
"pages/shouye/detail", // 详情页
|
"pages/main/detail", // 详情页
|
||||||
"pages/shouye/huanxiang", // 换箱页面
|
"pages/main/huanxiang", // 换箱页面
|
||||||
"pages/mall/index", // 商城首页
|
"pages/shangcheng/index", // 商城首页
|
||||||
"pages/shouye/detail_wuxian", // 无限详情页
|
"pages/main/detail_wuxian", // 无限详情页
|
||||||
"pages/kit/kit", // 盒柜页面
|
"pages/kit/kit", // 盒柜页面
|
||||||
"pages/infinite/index", // 福利首页
|
"pages/infinite/index", // 福利首页
|
||||||
"pages/user/index", // 用户中心
|
"pages/users/index", // 用户中心
|
||||||
"pages/infinite/daily_check_in", // 每日签到
|
"pages/infinite/daily_check_in", // 每日签到
|
||||||
"pages/infinite/bonus_house", // 福利屋
|
"pages/infinite/bonus_house", // 福利屋
|
||||||
"pages/other/prize_draw", // 每日奖品抽取
|
"pages/other/prize_draw", // 每日奖品抽取
|
||||||
"pages/shouye/danye", // 单页
|
"pages/main/danye", // 单页
|
||||||
"pages/guize/guize", // 规则页面
|
"pages/guize/guize", // 规则页面
|
||||||
"pages/shouye/dada_ranking", // 达达排行榜
|
"pages/main/dada_ranking", // 达达排行榜
|
||||||
"pages/shouye/invite_ranking", // 邀请排行榜
|
"pages/main/invite_ranking", // 邀请排行榜
|
||||||
"pages/user/login", // 登录页面
|
"pages/users/login", // 登录页面
|
||||||
"pages/shouye/slots",
|
"pages/main/slots",
|
||||||
"pages/other/web-pay-order", // 网页支付订单
|
"pages/other/web-pay-order", // 网页支付订单
|
||||||
"pages/other/web-pay-success", // 网页支付成功
|
"pages/other/web-pay-success", // 网页支付成功
|
||||||
"pages/other/about"// 其它页面
|
"pages/other/about"// 其它页面
|
||||||
|
|
@ -259,7 +259,7 @@ class ConfigManager {
|
||||||
if (res.confirm) {
|
if (res.confirm) {
|
||||||
console.log('开始重启');
|
console.log('开始重启');
|
||||||
wx.restartMiniProgram({
|
wx.restartMiniProgram({
|
||||||
path: "/pages/shouye/index"
|
path: "/pages/main/index"
|
||||||
});
|
});
|
||||||
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
// 新的版本已经下载好,调用 applyUpdate 应用新版本并重启
|
||||||
//updateManager.applyUpdate();
|
//updateManager.applyUpdate();
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,7 @@ const testing = {
|
||||||
|
|
||||||
|
|
||||||
// 根据环境变量选择对应配置
|
// 根据环境变量选择对应配置
|
||||||
let currentEnv = production;//production;//testing;//production_wz;
|
let currentEnv = testing;//production;//testing;//production_wz;
|
||||||
// 衍生配置
|
// 衍生配置
|
||||||
const config = {
|
const config = {
|
||||||
...currentEnv,
|
...currentEnv,
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ const tabBarLinks = [
|
||||||
'/pages/index/index',
|
'/pages/index/index',
|
||||||
'/pages/product/category',
|
'/pages/product/category',
|
||||||
'/pages/cart/cart',
|
'/pages/cart/cart',
|
||||||
'/pages/user/index/index',
|
'/pages/users/index/index',
|
||||||
'/pages/shop/index'
|
'/pages/shop/index'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -15,7 +15,7 @@ const tabBarLinks = [
|
||||||
const shareLinks = [
|
const shareLinks = [
|
||||||
'/pages/plus/assemble/fight-group-detail/fight-group-detail',
|
'/pages/plus/assemble/fight-group-detail/fight-group-detail',
|
||||||
'/pages/plus/bargain/haggle/haggle',
|
'/pages/plus/bargain/haggle/haggle',
|
||||||
'/pages/user/invite/invite',
|
'/pages/users/invite/invite',
|
||||||
'/pages/product/detail/detail',
|
'/pages/product/detail/detail',
|
||||||
'/pages/plus/seckill/detail/detail',
|
'/pages/plus/seckill/detail/detail',
|
||||||
'/pages/plus/assemble/detail/detail',
|
'/pages/plus/assemble/detail/detail',
|
||||||
|
|
|
||||||
|
|
@ -45,7 +45,7 @@ class AppPlatform extends BasePlatform {
|
||||||
});
|
});
|
||||||
// uni.showTabBar({})
|
// uni.showTabBar({})
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/mall/index'
|
url: '/pages/shangcheng/index'
|
||||||
});
|
});
|
||||||
// uni.tos
|
// uni.tos
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -58,7 +58,7 @@ class AppPlatform extends BasePlatform {
|
||||||
visible: true,
|
visible: true,
|
||||||
});
|
});
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
@ -219,7 +219,7 @@ class AppPlatform extends BasePlatform {
|
||||||
show: true,
|
show: true,
|
||||||
title: '商品退换货',
|
title: '商品退换货',
|
||||||
icon: 'my/huan.svg',
|
icon: 'my/huan.svg',
|
||||||
path: '/pages/shouye/danye?advert=29',
|
path: '/pages/main/danye?advert=29',
|
||||||
handler: this.navigateToPath.bind(this)
|
handler: this.navigateToPath.bind(this)
|
||||||
};
|
};
|
||||||
for (let i = 0; i < baseMenuList.length; i++) {
|
for (let i = 0; i < baseMenuList.length; i++) {
|
||||||
|
|
@ -227,10 +227,12 @@ class AppPlatform extends BasePlatform {
|
||||||
if (menu.id == 3) {
|
if (menu.id == 3) {
|
||||||
if (!this.getIsCheck("user_menu_3")) {
|
if (!this.getIsCheck("user_menu_3")) {
|
||||||
menuList.push(menu);
|
menuList.push(menu);
|
||||||
|
|
||||||
}
|
}
|
||||||
} if (menu.id == 5) {
|
} else if (menu.id == 5) {
|
||||||
if (!this.getIsCheck("user_menu_5")) {
|
if (!this.getIsCheck("user_menu_5")) {
|
||||||
menuList.push(menu);
|
menuList.push(menu);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
menuList.push(menu);
|
menuList.push(menu);
|
||||||
|
|
@ -336,11 +338,11 @@ class AppPlatform extends BasePlatform {
|
||||||
console.log("AppLaunch", res);
|
console.log("AppLaunch", res);
|
||||||
if (!res.isCheck) {
|
if (!res.isCheck) {
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/mall/index'
|
url: '/pages/shangcheng/index'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ class BasePlatform {
|
||||||
async appData() {
|
async appData() {
|
||||||
await this.loadCacheData();
|
await this.loadCacheData();
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -138,7 +138,7 @@ class BasePlatform {
|
||||||
show: true,
|
show: true,
|
||||||
title: '我的收藏',
|
title: '我的收藏',
|
||||||
icon: 'my/s3.png',
|
icon: 'my/s3.png',
|
||||||
path: '/package/mine/collect',
|
path: '/pages/users/collect',
|
||||||
handler: this.navigateToPath.bind(this)
|
handler: this.navigateToPath.bind(this)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -146,7 +146,7 @@ class BasePlatform {
|
||||||
show: true,
|
show: true,
|
||||||
title: '优惠券',
|
title: '优惠券',
|
||||||
icon: 'my/s4.png',
|
icon: 'my/s4.png',
|
||||||
path: '/pages/user/coupon',
|
path: '/pages/users/coupon',
|
||||||
handler: this.navigateToPath.bind(this)
|
handler: this.navigateToPath.bind(this)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -154,7 +154,7 @@ class BasePlatform {
|
||||||
show: true,
|
show: true,
|
||||||
title: '邀请好友',
|
title: '邀请好友',
|
||||||
icon: 'my/s5.png',
|
icon: 'my/s5.png',
|
||||||
path: '/pages/user/tui-guang',
|
path: '/pages/users/tui-guang',
|
||||||
handler: this.navigateToPath.bind(this)
|
handler: this.navigateToPath.bind(this)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -182,7 +182,7 @@ class BasePlatform {
|
||||||
show: true,
|
show: true,
|
||||||
title: '注销账号',
|
title: '注销账号',
|
||||||
icon: 'my/s10.png',
|
icon: 'my/s10.png',
|
||||||
path: '/pages/user/cancel-account-page',
|
path: '/pages/users/cancel-account-page',
|
||||||
handler: this.navigateToPath.bind(this)
|
handler: this.navigateToPath.bind(this)
|
||||||
}),
|
}),
|
||||||
m.push({
|
m.push({
|
||||||
|
|
|
||||||
|
|
@ -172,7 +172,7 @@ class H5Platform extends BasePlatform {
|
||||||
|
|
||||||
// if (window.location.pathname == "/" || window.location.pathname == "/pages/index/index") {
|
// if (window.location.pathname == "/" || window.location.pathname == "/pages/index/index") {
|
||||||
// uni.switchTab({
|
// uni.switchTab({
|
||||||
// url: '/pages/shouye/index'
|
// url: '/pages/main/index'
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -219,7 +219,7 @@ class MiniProgramPlatform extends BasePlatform {
|
||||||
|
|
||||||
// if (options != null && options.path == "pages/index/index") {
|
// if (options != null && options.path == "pages/index/index") {
|
||||||
// uni.switchTab({
|
// uni.switchTab({
|
||||||
// url: '/pages/shouye/index'
|
// url: '/pages/main/index'
|
||||||
// });
|
// });
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
@ -228,7 +228,7 @@ class MiniProgramPlatform extends BasePlatform {
|
||||||
console.log("getAccountInfoSync",t);
|
console.log("getAccountInfoSync",t);
|
||||||
await this.loadCacheData();
|
await this.loadCacheData();
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
// this.getConfig().then(res => {
|
// this.getConfig().then(res => {
|
||||||
// console.log(res, 'res');
|
// console.log(res, 'res');
|
||||||
|
|
@ -296,7 +296,7 @@ class MiniProgramPlatform extends BasePlatform {
|
||||||
uni.removeStorageSync('token');
|
uni.removeStorageSync('token');
|
||||||
uni.removeStorageSync('userinfo');
|
uni.removeStorageSync('userinfo');
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -266,12 +266,12 @@ class RequestManager {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// #ifdef H5
|
// #ifdef H5
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/user/bangdingweb'
|
url: '/pages/users/bangdingweb'
|
||||||
})
|
})
|
||||||
// #endif
|
// #endif
|
||||||
// #ifdef MP-WEIXIN
|
// #ifdef MP-WEIXIN
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/user/bangding'
|
url: '/pages/users/bangding'
|
||||||
})
|
})
|
||||||
// #endif
|
// #endif
|
||||||
}, 1500)
|
}, 1500)
|
||||||
|
|
@ -305,7 +305,7 @@ class RequestManager {
|
||||||
var currentParams = currentPage.options || {};
|
var currentParams = currentPage.options || {};
|
||||||
|
|
||||||
// 只有非登录页面才保存重定向信息
|
// 只有非登录页面才保存重定向信息
|
||||||
if (currentRoute && currentRoute !== 'pages/user/login') {
|
if (currentRoute && currentRoute !== 'pages/users/login') {
|
||||||
// 构建完整的重定向URL
|
// 构建完整的重定向URL
|
||||||
var redirectPath = '/' + currentRoute;
|
var redirectPath = '/' + currentRoute;
|
||||||
|
|
||||||
|
|
@ -337,7 +337,7 @@ class RequestManager {
|
||||||
uni.removeStorageSync('token');
|
uni.removeStorageSync('token');
|
||||||
uni.removeStorageSync('userinfo');
|
uni.removeStorageSync('userinfo');
|
||||||
// 使用新的路由守卫方法进行跳转
|
// 使用新的路由守卫方法进行跳转
|
||||||
RouterManager.navigateTo('/pages/user/login', {}, 'navigateTo')
|
RouterManager.navigateTo('/pages/users/login', {}, 'navigateTo')
|
||||||
.catch(err => {
|
.catch(err => {
|
||||||
console.error('登录页面跳转失败:', err);
|
console.error('登录页面跳转失败:', err);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,13 @@ export function navigateBack(delta = 1) {
|
||||||
|
|
||||||
// 如果页面栈不足,直接返回首页
|
// 如果页面栈不足,直接返回首页
|
||||||
if (pages.length <= 1) {
|
if (pages.length <= 1) {
|
||||||
return navigateTo('/pages/shouye/index', {}, 'reLaunch')
|
return navigateTo('/pages/main/index', {}, 'reLaunch')
|
||||||
.then(resolve)
|
.then(resolve)
|
||||||
.catch(reject);
|
.catch(reject);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 查看前一个页面是否是登录页
|
// 查看前一个页面是否是登录页
|
||||||
if (pages.length > 1 && pages[pages.length - 2].route === 'pages/user/login') {
|
if (pages.length > 1 && pages[pages.length - 2].route === 'pages/users/login') {
|
||||||
// 如果前一个页面是登录页,则返回两步
|
// 如果前一个页面是登录页,则返回两步
|
||||||
uni.navigateBack({
|
uni.navigateBack({
|
||||||
delta: 2,
|
delta: 2,
|
||||||
|
|
@ -108,7 +108,7 @@ export function routerTo(options) {
|
||||||
|
|
||||||
// 使用navigateTo而非redirectTo,保留页面栈
|
// 使用navigateTo而非redirectTo,保留页面栈
|
||||||
uni.navigateTo({
|
uni.navigateTo({
|
||||||
url: '/pages/user/login',
|
url: '/pages/users/login',
|
||||||
success: () => {
|
success: () => {
|
||||||
console.log('跳转到登录页面成功,保存的重定向地址:', url);
|
console.log('跳转到登录页面成功,保存的重定向地址:', url);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -91,7 +91,7 @@
|
||||||
var data = {
|
var data = {
|
||||||
title: `快来领取${userInfo.nickname}分享的${this.ruleData.num}赏币的${this.ruleData.title}`,
|
title: `快来领取${userInfo.nickname}分享的${this.ruleData.num}赏币的${this.ruleData.title}`,
|
||||||
imageUrl: this.ruleData.level_img,
|
imageUrl: this.ruleData.level_img,
|
||||||
path: '/pages/user/index' +
|
path: '/pages/users/index' +
|
||||||
this.$c.qs({
|
this.$c.qs({
|
||||||
ou_coupon_id: this.ruleData.id
|
ou_coupon_id: this.ruleData.id
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ export default {
|
||||||
// 空状态显示的图片,默认使用kong.png
|
// 空状态显示的图片,默认使用kong.png
|
||||||
imageSrc: {
|
imageSrc: {
|
||||||
type: String,
|
type: String,
|
||||||
default: '/static/common/kong.png'
|
default: '/static/app-plus/no-data.png'
|
||||||
},
|
},
|
||||||
// 空状态显示的文本
|
// 空状态显示的文本
|
||||||
message: {
|
message: {
|
||||||
|
|
|
||||||
|
|
@ -1,510 +0,0 @@
|
||||||
<template>
|
|
||||||
<view class="marquee_box" @touchstart='touchstartFn' @touchend='touchendFn'>
|
|
||||||
<block v-show="isShow">
|
|
||||||
<view class="" v-if="direction=='right'||direction=='left'">
|
|
||||||
<view v-if="broadcastType=='text'" class="marquee_container"
|
|
||||||
:style="'background:'+broadcastStylees.back_color+';'">
|
|
||||||
<view v-if="broadcastIconIsDisplay" class="broadIcon"
|
|
||||||
:style="'background:'+broadcastStylees.back_color+';font-size:28rpx;'">
|
|
||||||
<text class="iconfont icon-guangbozheng-"></text>
|
|
||||||
<text style="margin-left:12rpx;">{{broadcast_tit}}:</text>
|
|
||||||
</view>
|
|
||||||
<view class="boradcast_text_left_rig"
|
|
||||||
:class='[direction=="left"?"marquee_text_left":direction=="right"?"marquee_text_right":"",animation_paused?"animation_pausedcss":""]'
|
|
||||||
:style="'--marqueeWidth--:'+(-broadcastStylees.width_mal)+'px;--speed--:'+broadcastStylees.time+'s;width:'+broadcastStylees.width_mal+'px;'">
|
|
||||||
<view v-for="(item,index) in broadcastDataes" @click.stop="click_event(index)" :key="index"
|
|
||||||
:style="'color:'+broadcastStylees.text_color+';margin-left:'+(index!=0?item.starspos:0)+'px;font-size:'+broadcastStylees.font_size+'rpx;'">
|
|
||||||
{{item.text}}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view v-if="broadcastType=='mould'" class="mould">
|
|
||||||
<view class="" style="width: 100%;position: relative;overflow: hidden;"
|
|
||||||
:style="'height:'+viewHeight+'rpx;'">
|
|
||||||
<view class="broadcastTopBtm dsf"
|
|
||||||
:class="[direction=='left' && doamini?'broadcastDataTopBtmDatacss_let':direction=='right'?'broadcastDataTopBtmDatacss_rig':'',animation_paused?'animation_pausedcss':'']"
|
|
||||||
:style="'--scrollWidth--:'+(-(scrlloWidth/2))+'px;--scrollSpeed2--:'+(scrlloWidth/broadcastStyle.speed)+'s;width:'+(scrlloWidth*2)+'px;'">
|
|
||||||
<view ref="mouldRef" class="bml01" style="display: flex;justify-content: space-between;">
|
|
||||||
<slot />
|
|
||||||
<!-- <slot /> -->
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view v-if="direction=='top'||direction=='bottom'" class="broadcastTopBtm"
|
|
||||||
:style="'font-size:'+broadcastStyle.font_size+'rpx;color:'+broadcastStyle.text_color+';background:'+broadcastStyle.back_color+';height:'+viewHeight+'rpx;--scrollHeight--:'+(-broadcastTopBtmHeight/2)+'px;--scrollSpeed--:'+((broadcastTopBtmHeight/2)/broadcastStyle.speed)+'s;'">
|
|
||||||
<view v-if="broadcastType=='text'"
|
|
||||||
:class="[direction=='top'?'broadcastDataTopBtmDatacss_top':direction=='bottom'?'broadcastDataTopBtmDatacss_bottom':'',animation_paused?'animation_pausedcss':'']">
|
|
||||||
<view v-for="(item,index) in broadcastDataTopBtmDataes" :key="index" @click.stop="click_event()"
|
|
||||||
class="bdbd_item">
|
|
||||||
{{item}}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<view v-if="broadcastType=='mould'"
|
|
||||||
:class="[direction=='top'?'broadcastDataTopBtmDatacss_top':direction=='bottom'?'broadcastDataTopBtmDatacss_bottom':'',animation_paused?'animation_pausedcss':'']">
|
|
||||||
<slot />
|
|
||||||
<!-- <slot /> -->
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
</block>
|
|
||||||
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
/**
|
|
||||||
* author:G.bro
|
|
||||||
* date:20200513
|
|
||||||
* * **/
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
broadcastDataes: [],
|
|
||||||
broadcastDataTopBtmDataes: [],
|
|
||||||
broadcastStylees: {},
|
|
||||||
broadcastTopBtmHeight: 0,
|
|
||||||
scrlloWidth: 0,
|
|
||||||
animation_paused: false,
|
|
||||||
qualifications: true,
|
|
||||||
isShow: false,
|
|
||||||
doamini:false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
doamin:{
|
|
||||||
type: Boolean
|
|
||||||
},
|
|
||||||
broadcastType: {
|
|
||||||
type: String,
|
|
||||||
default: 'text' //mould
|
|
||||||
},
|
|
||||||
imgdata: {
|
|
||||||
type: Array
|
|
||||||
},
|
|
||||||
broadcastData: {
|
|
||||||
type: Array
|
|
||||||
},
|
|
||||||
broadcastStyle: {
|
|
||||||
type: Object,
|
|
||||||
default () {
|
|
||||||
return {
|
|
||||||
speed: 90, //滚动速度,每秒3个字
|
|
||||||
font_size: "28", //字体大小(rpx)
|
|
||||||
text_color: "#fff", //字体颜色
|
|
||||||
back_color: "#815CD4", //背景色
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
broadcastIconIsDisplay: { //图标是否显示
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
// broadcast_icon: {
|
|
||||||
// type: String,
|
|
||||||
// default: ''
|
|
||||||
// },
|
|
||||||
broadcast_tit: {
|
|
||||||
type: String,
|
|
||||||
default: '今日热点'
|
|
||||||
},
|
|
||||||
direction: {
|
|
||||||
type: String,
|
|
||||||
default: 'left'
|
|
||||||
},
|
|
||||||
viewHeight: {
|
|
||||||
type: Number,
|
|
||||||
default: 200
|
|
||||||
},
|
|
||||||
touchEvent: {
|
|
||||||
type: true,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
broadcastData(v) {
|
|
||||||
console.log(v, '---')
|
|
||||||
if (v.length) {
|
|
||||||
this.isShow = true;
|
|
||||||
this.initialization();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
imgdata(v) {
|
|
||||||
console.log(v, '---')
|
|
||||||
this.isShow = true;
|
|
||||||
this.initialization();
|
|
||||||
},
|
|
||||||
doamin(v){
|
|
||||||
let that = this
|
|
||||||
console.log(v)
|
|
||||||
setTimeout(()=>{
|
|
||||||
that.doamini = v
|
|
||||||
},1000)
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
created() {
|
|
||||||
this.initialization();
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
|
|
||||||
// if(this.broadcastType=='text'){有偏差
|
|
||||||
// let assist = { ...this.broadcastStyle};
|
|
||||||
// const querys = uni.createSelectorQuery().in(this)
|
|
||||||
// querys.select('.boradcast_text_left_rig').boundingClientRect(rect => {
|
|
||||||
// assist.width_mal = rect.width;
|
|
||||||
// assist.time = rect.width/assist.speed;
|
|
||||||
// that.broadcastStylees=assist;
|
|
||||||
// }).exec()
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
initialization() {
|
|
||||||
let that = this;
|
|
||||||
|
|
||||||
if (that.broadcastType == "text") {
|
|
||||||
if (that.direction == "right" || that.direction == "left") {
|
|
||||||
that.initial_let_rig();
|
|
||||||
} else {
|
|
||||||
let arr = [...that.broadcastData];
|
|
||||||
arr = arr.concat(arr);
|
|
||||||
that.broadcastDataTopBtmDataes = arr;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (that.direction == "top" || that.direction == "bottom") {
|
|
||||||
that.$nextTick(() => {
|
|
||||||
let dir = `.broadcastDataTopBtmDatacss_${that.direction}`
|
|
||||||
const query2 = uni.createSelectorQuery().in(that);
|
|
||||||
query2.select(dir).boundingClientRect(rect => {
|
|
||||||
that.broadcastTopBtmHeight = rect.height;
|
|
||||||
console.log(rect, '==rect.height')
|
|
||||||
|
|
||||||
if (that.viewHeight - rect.height > 10) {
|
|
||||||
that.qualifications = false;
|
|
||||||
that.animation_paused = true;
|
|
||||||
that.broadcastDataTopBtmDataes.splice(that.broadcastDataTopBtmDataes
|
|
||||||
.length / 2, that.broadcastDataTopBtmDataes
|
|
||||||
.length - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
}).exec();
|
|
||||||
})
|
|
||||||
|
|
||||||
}
|
|
||||||
if (that.direction == "left" || that.direction == "right") {
|
|
||||||
this.$nextTick(() => {
|
|
||||||
try {
|
|
||||||
if (that.broadcastType == 'mould') {
|
|
||||||
const query = uni.createSelectorQuery().in(that)
|
|
||||||
query.select('.bml01').boundingClientRect(rect => {
|
|
||||||
// console.log(rect)
|
|
||||||
that.scrlloWidth = rect.width;
|
|
||||||
// console.log(rect, '===================rect.width')
|
|
||||||
}).exec()
|
|
||||||
}
|
|
||||||
} catch (e) {
|
|
||||||
that.scrlloWidth = that.$refs.mouldRef.$el.clientWidth * 2
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
},
|
|
||||||
touchendFn(e) {
|
|
||||||
if (this.touchEvent && this.qualifications) {
|
|
||||||
this.animation_paused = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
touchstartFn(e) {
|
|
||||||
if (this.touchEvent && this.qualifications) {
|
|
||||||
this.animation_paused = true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
initial_let_rig() {
|
|
||||||
let broadcastData = [...this.broadcastData];
|
|
||||||
console.log(this.direction, 'this.direction')
|
|
||||||
if (this.direction == "right") {
|
|
||||||
broadcastData.reverse();
|
|
||||||
}
|
|
||||||
|
|
||||||
let ititdata = broadcastData.map((item) => {
|
|
||||||
return {
|
|
||||||
"text": item,
|
|
||||||
"starspos": uni.getSystemInfoSync().windowWidth - 103
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
assist = {
|
|
||||||
...this.broadcastStyle
|
|
||||||
},
|
|
||||||
this_width = 0,
|
|
||||||
spacing = 0,
|
|
||||||
speed = (assist.speed * assist.font_size); //m每秒行走的距离
|
|
||||||
|
|
||||||
for (let i in ititdata) {
|
|
||||||
this_width += ititdata[i].text.length * assist.font_size;
|
|
||||||
if (i != ititdata.length - 1) {
|
|
||||||
spacing += ititdata[i].starspos
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let total_length = (this_width / 2) + spacing; //总长
|
|
||||||
assist.time = total_length / speed; /**滚动时间*/
|
|
||||||
assist.width_mal = total_length;
|
|
||||||
this.broadcastDataes = ititdata;
|
|
||||||
this.broadcastStylees = assist;
|
|
||||||
},
|
|
||||||
click_event(index) {
|
|
||||||
let i;
|
|
||||||
if (index > ((broadcastDataTopBtmDataes.length / 2) - 1)) {
|
|
||||||
i = index - (broadcastDataTopBtmDataes.length / 2);
|
|
||||||
} else {
|
|
||||||
i = index
|
|
||||||
}
|
|
||||||
this.$emit("changeEvent", {
|
|
||||||
i,
|
|
||||||
msg: `你点击了${i+1}条`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
/* app端有可能要加上 */
|
|
||||||
/* page {
|
|
||||||
overflow: hidden;
|
|
||||||
width: 100%;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.marquee_box {
|
|
||||||
width: 100%;
|
|
||||||
overflow: hidden;
|
|
||||||
position: inherit;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mould {
|
|
||||||
width: 750rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
position: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dsf {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
}
|
|
||||||
|
|
||||||
.broadIcon {
|
|
||||||
/* width: 60rpx; */
|
|
||||||
padding: 0 22rpx;
|
|
||||||
height: 60rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
color: #fff;
|
|
||||||
z-index: 999;
|
|
||||||
line-height: 60rpx;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.marquee_container {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
height: 60rpx;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.marquee_text_left {
|
|
||||||
display: flex;
|
|
||||||
white-space: nowrap;
|
|
||||||
animation-name: around_left;
|
|
||||||
animation-duration: var(--speed--);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
line-height: 60rpx;
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes around_left {
|
|
||||||
from {
|
|
||||||
left: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
left: var(--marqueeWidth--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.marquee_text_right {
|
|
||||||
display: flex;
|
|
||||||
white-space: nowrap;
|
|
||||||
animation-name: around_right;
|
|
||||||
animation-duration: var(--speed--);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
line-height: 60rpx;
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes around_right {
|
|
||||||
from {
|
|
||||||
right: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
right: var(--marqueeWidth--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.marquee_tit {
|
|
||||||
height: 60rpx;
|
|
||||||
line-height: 60rpx;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.broadcastTopBtm {
|
|
||||||
padding: 12rx;
|
|
||||||
overflow: hidden;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.broadcastDataTopBtmDatacss_top {
|
|
||||||
width: 100%;
|
|
||||||
animation-name: around_top;
|
|
||||||
animation-duration: var(--scrollSpeed--);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes around_top {
|
|
||||||
from {
|
|
||||||
top: 0%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
top: var(--scrollHeight--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.broadcastDataTopBtmDatacss_bottom {
|
|
||||||
width: 100%;
|
|
||||||
animation-name: around_Bottom;
|
|
||||||
animation-duration: var(--scrollSpeed--);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes around_Bottom {
|
|
||||||
from {
|
|
||||||
bottom: 0%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
bottom: var(--scrollHeight--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.broadcastDataTopBtmDatacss_let {
|
|
||||||
width: 100%;
|
|
||||||
animation-name: around_let;
|
|
||||||
animation-duration: var(--scrollSpeed2--);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.broadcastDataTopBtmDatacss_rig {
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
animation-name: around_rig;
|
|
||||||
animation-duration: var(--scrollSpeed2--);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-timing-function: linear;
|
|
||||||
position: absolute;
|
|
||||||
right: 0%;
|
|
||||||
top: 0;
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
}
|
|
||||||
|
|
||||||
.animation_pausedcss {
|
|
||||||
animation-play-state: paused;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes around_let {
|
|
||||||
from {
|
|
||||||
left: 0%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
left: var(--scrollWidth--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes around_rig {
|
|
||||||
from {
|
|
||||||
right: 0%;
|
|
||||||
}
|
|
||||||
|
|
||||||
to {
|
|
||||||
right: var(--scrollWidth--);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.bdbd_item {
|
|
||||||
padding: 0 12rpx;
|
|
||||||
line-height: 60rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
white-space: nowrap;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
|
|
||||||
@font-face {
|
|
||||||
font-family: "iconfont";
|
|
||||||
src: url('//at.alicdn.com/t/font_1686137_9el2ov99ag.eot?t=1589197045289');
|
|
||||||
/* IE9 */
|
|
||||||
src: url('//at.alicdn.com/t/font_1686137_9el2ov99ag.eot?t=1589197045289#iefix') format('embedded-opentype'),
|
|
||||||
/* IE6-IE8 */
|
|
||||||
url('data:application/x-font-woff2;charset=utf-8;base64,d09GMgABAAAAAANIAAsAAAAAByAAAAL7AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHEIGVgCCcAqCJIIbATYCJAMICwYABCAFhG0HNxtIBhHVmxnIfiTYMS7bb8koPCedCeJJj2/e7iZfYqkjkZzk9lw0oCspm5uha1SEYUrOg//lO9IN4UL4FQBGHE6b4vPv8pzmojHnedQFGG8NaG9cCySQAgnMG8ZuIniA2yGAP8kUIg0ateiALwbQTwAZMXRwX3wLLgzGifoi2A1TDbIKC1+1WF0CVvLvy0fKxRcUlgYkthnUcAB13sA47XgOPSgBwXIGwJkFGigEDEiHRlMrtAwVovGPQoZ0OFa2wJs6nkf5h/3jgYDYgMxAABJ1/jMJsPBRMxUARq/vB7iTzgYmPjQ5vv+S6E4b/P2XXBBxLwYELI3pvDFm/XqMs27QknXgrK82yepoddiXOXTJhi3NTe/e7XznTqcNG7ZujLoN2Drexulwy99hXacl0UZCzNW77p1WfV52MOpyx+O3nVuFt1qs+xziN+DL8Q0BU2N17J84FTs1YMOXE/2dXf8DTwV62/5bne0/dmdranzv25uGonfvtepore/p0pXugqw9N2SpuKsuTSuYO7vtjzV1oka1azMqsm50/SYtYxvHNug6blqbRuGpQccDpjYpGzCwauyCmnETJpadjJjwO6teaETz1uHNQjPqfmhPHQC8q/q2Lvj3vyF17cvZvUOqvvkGGAAePO36jTu8q4ZhFvC9Q7PAnxYMzDOxCKjUI/MNs6JfzoECneta8QC2cJ5MVUe9VkzwJerlLD4kZdD4kkk01EJYBFAJG19q4U8BjWcHEME4NGL8gHzmaxBCOQlFMBehCeUy0VAfwyKaz7AJFQ1/OknEkgFki5dUfUYt6MD8IFnaPdKKEtk3DFfVnBdx2gv5TF4Yu6EcXXFHXmLE+Q6TiAfPtMGi7Ya1EhxMGa10UeSY+943XamztDWK+oxa0IH5QbK0e1pcVOXzNwxX1dyRM+J8IZ+pcRi7YQBxle+Dch5ln/MdJhEPnmmDRTNghSGCo7lTRitdnBA45t4o5IfKu+2V298tAfwBGiWwuSZo8KX3YOgfkRnbpgEA') format('woff2'),
|
|
||||||
url('//at.alicdn.com/t/font_1686137_9el2ov99ag.woff?t=1589197045289') format('woff'),
|
|
||||||
url('//at.alicdn.com/t/font_1686137_9el2ov99ag.ttf?t=1589197045289') format('truetype'),
|
|
||||||
/* chrome, firefox, opera, Safari, Android, iOS 4.2+ */
|
|
||||||
url('//at.alicdn.com/t/font_1686137_9el2ov99ag.svg?t=1589197045289#iconfont') format('svg');
|
|
||||||
/* iOS 4.1- */
|
|
||||||
}
|
|
||||||
|
|
||||||
.iconfont {
|
|
||||||
font-family: "iconfont" !important;
|
|
||||||
font-size: 16px;
|
|
||||||
font-style: normal;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon-guangbozheng-:before {
|
|
||||||
content: "\e640";
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,286 +0,0 @@
|
||||||
<template>
|
|
||||||
<view style="" class="zcq">
|
|
||||||
<view class="danmu-li" v-for="(item,index) in listData" :class="item.type" :style="[item.style]" :key="index">
|
|
||||||
<view class="danmu-inner">
|
|
||||||
<view class="user-box">
|
|
||||||
<view class="user-img">
|
|
||||||
<view class="img-box">
|
|
||||||
<image :src="item.headimg"></image>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
<!-- <view class="user-text cl1">
|
|
||||||
人名
|
|
||||||
</view> -->
|
|
||||||
<view class="user-status cl1">
|
|
||||||
{{item.item}}
|
|
||||||
<!-- <span :style="'color:'+ item.color"> {{item.title}}</span> -->
|
|
||||||
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
//rightToLeft leftToRight leftBottom
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: 'rightToLeft'
|
|
||||||
},
|
|
||||||
minTime: {
|
|
||||||
type: Number,
|
|
||||||
default: 5
|
|
||||||
},
|
|
||||||
maxTime: {
|
|
||||||
type: Number,
|
|
||||||
default: 10
|
|
||||||
},
|
|
||||||
minTop: {
|
|
||||||
type: Number,
|
|
||||||
default: 0
|
|
||||||
},
|
|
||||||
maxTop: {
|
|
||||||
type: Number,
|
|
||||||
default: 50
|
|
||||||
},
|
|
||||||
hrackH: { //轨道高度
|
|
||||||
type: Number,
|
|
||||||
default: 40
|
|
||||||
},
|
|
||||||
noStacked: { //不允许堆叠(暂不可用)
|
|
||||||
type: Array,
|
|
||||||
default () {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
listData: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.hrackNum = Math.floor((this.maxTop - this.minTop) / this.hrackH);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
add(obj) {
|
|
||||||
let data = {
|
|
||||||
item: obj.item,
|
|
||||||
title: obj.title,
|
|
||||||
color: obj.color,
|
|
||||||
id: Date.parse(new Date()),
|
|
||||||
time: Math.ceil(Math.floor(Math.random() * (this.maxTime - this.minTime + 1) + this.minTime)),
|
|
||||||
type: this.type,
|
|
||||||
headimg: obj.headimg
|
|
||||||
}
|
|
||||||
if (this.type === 'leftBottom') {
|
|
||||||
let objData = {
|
|
||||||
item: data.item,
|
|
||||||
title: data.title,
|
|
||||||
color: data.color,
|
|
||||||
type: 'leftBottomEnter',
|
|
||||||
style: {
|
|
||||||
transition: `all 0.5s`,
|
|
||||||
animationDuration: `0.5s`,
|
|
||||||
transform: `translateX(0%)`,
|
|
||||||
bottom: `${this.minTop}px`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
let listLen = this.listData.length;
|
|
||||||
let hrackNum = this.hrackNum;
|
|
||||||
for (let i in this.listData) {
|
|
||||||
if (this.listData[i].status === 'reuse') { //重用
|
|
||||||
this.$set(this.listData, i, objData);
|
|
||||||
} else if (this.listData[i].status === 'reset') { //重置
|
|
||||||
this.listData[i].style.transition = 'none';
|
|
||||||
this.listData[i].style.bottom = 0;
|
|
||||||
this.listData[i].status = 'reuse';
|
|
||||||
} else if (this.listData[i].status === 'recycle') { //回收
|
|
||||||
this.listData[i].type = 'leftBottomExit';
|
|
||||||
this.listData[i].status = 'reset';
|
|
||||||
} else {
|
|
||||||
this.listData[i].style.bottom = parseInt(this.listData[i].style.bottom) + this.hrackH + 'px';
|
|
||||||
}
|
|
||||||
if (parseInt(this.listData[i].style.bottom) >= (this.maxTop - this.hrackH) && this.listData[i]
|
|
||||||
.status !== 'reset') { //需要回收
|
|
||||||
this.listData[i].status = 'recycle';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (listLen < hrackNum + 2) {
|
|
||||||
this.listData.push(objData);
|
|
||||||
}
|
|
||||||
} else if (this.type === 'rightToLeft' || this.type === 'leftToRight') {
|
|
||||||
let objData = this.horStacked(data);
|
|
||||||
for (let i in this.listData) {
|
|
||||||
if (this.listData[i].delTime <= Date.parse(new Date())) {
|
|
||||||
this.repaint(i, objData.type);
|
|
||||||
objData.type = '';
|
|
||||||
this.$set(this.listData, i, objData);
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.listData.push(objData);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
horStacked(data) {
|
|
||||||
// console.log(data)
|
|
||||||
return {
|
|
||||||
item: data.item,
|
|
||||||
type: this.type,
|
|
||||||
title: data.title,
|
|
||||||
color: data.color,
|
|
||||||
style: {
|
|
||||||
animationDuration: `${data.time}s`,
|
|
||||||
top: `${Math.ceil(Math.random() * (this.maxTop - this.minTop + 1) + this.minTop)}px`,
|
|
||||||
opacity: 1
|
|
||||||
},
|
|
||||||
delTime: Date.parse(new Date()) + data.time * 1200,
|
|
||||||
headimg: data.headimg
|
|
||||||
}
|
|
||||||
},
|
|
||||||
repaint(index, type) {
|
|
||||||
setTimeout(() => {
|
|
||||||
this.listData[index].type = type;
|
|
||||||
}, 100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
<style>
|
|
||||||
|
|
||||||
</style>
|
|
||||||
<style lang="scss">
|
|
||||||
.zcq {
|
|
||||||
|
|
||||||
top: 0rpx;
|
|
||||||
z-index: 99;
|
|
||||||
left: 0rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
// font-family: 'zcq';
|
|
||||||
// border: 1px solid red;
|
|
||||||
position: absolute;
|
|
||||||
width: 750rpx;
|
|
||||||
height: 300rpx;
|
|
||||||
pointer-events: none;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes leftBottomEnter {
|
|
||||||
0% {
|
|
||||||
transform: translateY(100%);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateY(0%);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes leftBottomExit {
|
|
||||||
0% {
|
|
||||||
transform: translateY(0%);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateY(-200%);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes leftToRight {
|
|
||||||
0% {
|
|
||||||
transform: translateX(-100%);
|
|
||||||
// opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateX(100%);
|
|
||||||
// opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes rightToLeft {
|
|
||||||
0% {
|
|
||||||
transform: translateX(100%);
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
100% {
|
|
||||||
transform: translateX(-100%);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.danmu-li {
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
opacity: 0;
|
|
||||||
transform: translateX(100%);
|
|
||||||
animation-timing-function: linear;
|
|
||||||
|
|
||||||
&.leftBottomEnter {
|
|
||||||
animation-name: leftBottomEnter;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.leftBottomExit {
|
|
||||||
animation-name: leftBottomExit;
|
|
||||||
animation-fill-mode: forwards;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.rightToLeft {
|
|
||||||
animation-name: rightToLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.leftToRight {
|
|
||||||
animation-name: leftToRight;
|
|
||||||
}
|
|
||||||
|
|
||||||
.danmu-inner {
|
|
||||||
display: inline-block;
|
|
||||||
|
|
||||||
.user-box {
|
|
||||||
display: flex;
|
|
||||||
padding: 3rpx 40rpx 3rpx 10rpx;
|
|
||||||
background: linear-gradient(90deg, #5CEFE3 0%, rgba(92,239,227,0) 100%);
|
|
||||||
border-radius: 32rpx;
|
|
||||||
align-items: center;
|
|
||||||
// border: 1px solid rgba(204, 204, 204, 1);
|
|
||||||
|
|
||||||
.user-img {
|
|
||||||
.img-box {
|
|
||||||
display: flex;
|
|
||||||
|
|
||||||
image {
|
|
||||||
width: 58rpx;
|
|
||||||
height: 58rpx;
|
|
||||||
background: rgba(55, 55, 55, 1);
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-status {
|
|
||||||
margin-left: 10rpx;
|
|
||||||
white-space: nowrap;
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-weight: 400;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.user-text {
|
|
||||||
margin-left: 10rpx;
|
|
||||||
// white-space: nowrap;
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-weight: 400;
|
|
||||||
width: 80rpx;
|
|
||||||
color: rgba(255, 255, 255, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
#如何使用
|
|
||||||
###js
|
|
||||||
```javascript
|
|
||||||
import lffBarrage from '@/components/lff-barrage/lff-barrage.vue'
|
|
||||||
components:{lffBarrage},
|
|
||||||
methods:{
|
|
||||||
colrdo(){ //插入一条弹幕
|
|
||||||
this.$refs.lffBarrage.add({item:'你好呀小伙子'});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
###HTML
|
|
||||||
```html
|
|
||||||
<lff-barrage ref="lffBarrage"></lff-barrage>
|
|
||||||
```
|
|
||||||
|
|
@ -219,7 +219,7 @@ export default {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/index', {}, 'switchTab');
|
this.$customRouter.navigateTo('/pages/main/index', {}, 'switchTab');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@
|
||||||
icon: '/static/tabbar/chousang.png',
|
icon: '/static/tabbar/chousang.png',
|
||||||
actIcon: '/static/tabbar/chousang_sel.png',
|
actIcon: '/static/tabbar/chousang_sel.png',
|
||||||
title: '首页',
|
title: '首页',
|
||||||
path: '/pages/shouye/index'
|
path: '/pages/main/index'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
|
|
@ -85,7 +85,7 @@
|
||||||
icon: '/static/tabbar/mine.png',
|
icon: '/static/tabbar/mine.png',
|
||||||
actIcon: '/static/tabbar/mine_sel.png',
|
actIcon: '/static/tabbar/mine_sel.png',
|
||||||
title: '我的',
|
title: '我的',
|
||||||
path: '/pages/user/index'
|
path: '/pages/users/index'
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
@ -95,7 +95,7 @@
|
||||||
icon: '/static/tabbar/chousang.png',
|
icon: '/static/tabbar/chousang.png',
|
||||||
actIcon: '/static/tabbar/chousang_sel.png',
|
actIcon: '/static/tabbar/chousang_sel.png',
|
||||||
title: '首页',
|
title: '首页',
|
||||||
path: '/pages/shouye/index'
|
path: '/pages/main/index'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 2,
|
id: 2,
|
||||||
|
|
@ -123,7 +123,7 @@
|
||||||
icon: '/static/tabbar/mine.png',
|
icon: '/static/tabbar/mine.png',
|
||||||
actIcon: '/static/tabbar/mine_sel.png',
|
actIcon: '/static/tabbar/mine_sel.png',
|
||||||
title: '我的',
|
title: '我的',
|
||||||
path: '/pages/user/index'
|
path: '/pages/users/index'
|
||||||
}
|
}
|
||||||
|
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
Component({
|
|
||||||
data: {
|
|
||||||
selected: 0,
|
|
||||||
color: "#C6C6C6",
|
|
||||||
selectedColor: "#333333",
|
|
||||||
list: [{
|
|
||||||
"index": 0,
|
|
||||||
"pagePath": "/pages/shouye/index",
|
|
||||||
"iconPath": "/static/tab/n1.png",
|
|
||||||
"selectedIconPath": "/static/tab/s1.png",
|
|
||||||
"text": "首页"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 2,
|
|
||||||
"pagePath": "/pages/mall/index",
|
|
||||||
"iconPath": "/static/tab/n5.png",
|
|
||||||
"selectedIconPath": "/static/tab/s5.png",
|
|
||||||
"text": "商城"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 3,
|
|
||||||
"pagePath": "/pages/kit/kit",
|
|
||||||
"iconPath": "/static/tab/n3.png",
|
|
||||||
"selectedIconPath": "/static/tab/s3.png",
|
|
||||||
"text": "盒柜"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 1,
|
|
||||||
"pagePath": "/pages/infinite/index",
|
|
||||||
"iconPath": "/static/tab/n2.png",
|
|
||||||
"selectedIconPath": "/static/tab/s2.png",
|
|
||||||
"text": "福利"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"index": 4,
|
|
||||||
"pagePath": "/pages/user/index",
|
|
||||||
"iconPath": "/static/tab/n4.png",
|
|
||||||
"selectedIconPath": "/static/tab/s4.png",
|
|
||||||
"text": "我的"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
attached() {},
|
|
||||||
methods: {
|
|
||||||
switchTab(e) {
|
|
||||||
const data = e.currentTarget.dataset
|
|
||||||
const url = data.path
|
|
||||||
console.log(e, data, url, data.index)
|
|
||||||
wx.switchTab({
|
|
||||||
url
|
|
||||||
})
|
|
||||||
// console.log('aaaaaaaa', this.selected, data.index);
|
|
||||||
this.setData({
|
|
||||||
selected: data.index
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
@ -1,3 +0,0 @@
|
||||||
{
|
|
||||||
"component": true
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
<!--miniprogram/custom-tab-bar/index.wxml-->
|
|
||||||
<view class="tab-bar">
|
|
||||||
<view class="tab-bar-border"></view>
|
|
||||||
<view wx:for="{{list}}" wx:key="index" class="tab-bar-item" data-path="{{item.pagePath}}" data-index="{{item.index}}" bindtap="switchTab"
|
|
||||||
style="display: {{item.index === -1 ? 'none' : 'flex'}}">
|
|
||||||
<image src="{{selected === item.index ? item.selectedIconPath : item.iconPath}}"></image>
|
|
||||||
<view style="color: {{selected === item.index ? selectedColor : color}}">{{item.text}}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
.tab-bar {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
box-sizing: content-box;
|
|
||||||
height: 44px;
|
|
||||||
background: #FFFFFF;
|
|
||||||
display: flex;
|
|
||||||
padding-top: 10px;
|
|
||||||
box-shadow: 10px 10px 5px rgba(0, 0, 0, 0.5);
|
|
||||||
padding-bottom: env(safe-area-inset-bottom);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-bar-border {
|
|
||||||
background-color: #404241;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0;
|
|
||||||
width: 100%;
|
|
||||||
height: 1px;
|
|
||||||
transform: scaleY(0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-bar-item {
|
|
||||||
flex: 1;
|
|
||||||
text-align: center;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
flex-direction: column;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-bar-item image {
|
|
||||||
width: 48rpx;
|
|
||||||
height: 48rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tab-bar-item view {
|
|
||||||
font-size: 10px;
|
|
||||||
}
|
|
||||||
|
|
@ -1,213 +0,0 @@
|
||||||
<!--
|
|
||||||
* @Date: 2024-01-17 11:00:11
|
|
||||||
* @LastEditTime: 2024-01-17 17:28:11
|
|
||||||
* @Description: content
|
|
||||||
-->
|
|
||||||
<template>
|
|
||||||
<view class="content">
|
|
||||||
<uni-nav-bar
|
|
||||||
left-icon="left"
|
|
||||||
title="领券中心"
|
|
||||||
color="#fff"
|
|
||||||
backgroundColor="transparent"
|
|
||||||
:fixed="true"
|
|
||||||
:statusBar="true"
|
|
||||||
:border="false"
|
|
||||||
@clickLeft="$c.back"
|
|
||||||
></uni-nav-bar>
|
|
||||||
|
|
||||||
<mescroll-body
|
|
||||||
ref="mescrollRef"
|
|
||||||
@init="mescrollInit"
|
|
||||||
@down="downCallback"
|
|
||||||
@up="getList"
|
|
||||||
:down="downOption"
|
|
||||||
:up="upOption"
|
|
||||||
>
|
|
||||||
<view
|
|
||||||
class="list-item common_bg"
|
|
||||||
v-for="(item, i) in listData"
|
|
||||||
:key="i"
|
|
||||||
:style="{
|
|
||||||
backgroundImage: ``
|
|
||||||
}"
|
|
||||||
:class="{
|
|
||||||
dis: item.is_find == 1
|
|
||||||
}"
|
|
||||||
>
|
|
||||||
<view class="money">
|
|
||||||
¥
|
|
||||||
<text>{{ item.price }}</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="info">
|
|
||||||
<view class="title">{{ item.title }}</view>
|
|
||||||
|
|
||||||
<view class="time">领取后有效期{{ item.effective_day }}天</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view
|
|
||||||
v-if="item.is_find != 1"
|
|
||||||
class="btn"
|
|
||||||
@click="$c.noDouble(getCoupon, item)"
|
|
||||||
>
|
|
||||||
立即领取
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view v-else class="btn">已领取</view>
|
|
||||||
</view>
|
|
||||||
</mescroll-body>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 下拉刷新的配置(可选, 绝大部分情况无需配置)
|
|
||||||
downOption: {
|
|
||||||
auto: false
|
|
||||||
},
|
|
||||||
// 上拉加载的配置(可选, 绝大部分情况无需配置)
|
|
||||||
upOption: {
|
|
||||||
auto: true,
|
|
||||||
page: {
|
|
||||||
size: 10 // 每页数据的数量,默认10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
listData: [],
|
|
||||||
optData: ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onLoad(options) {
|
|
||||||
this.optData = options
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
getCoupon(item) {
|
|
||||||
this.req({
|
|
||||||
url: 't_coupon_ling',
|
|
||||||
data: {
|
|
||||||
coupon_id: item.id
|
|
||||||
},
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
this.$c.toast({
|
|
||||||
title: res.msg,
|
|
||||||
duration: 500,
|
|
||||||
success: () => {
|
|
||||||
this.mescroll.resetUpScroll()
|
|
||||||
this.mescroll.scrollTo(0, 0)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 获取列表
|
|
||||||
* @param {*} num
|
|
||||||
* @param {*} size
|
|
||||||
* @return {*}
|
|
||||||
*/
|
|
||||||
getList({ num, size }) {
|
|
||||||
this.req({
|
|
||||||
url: 't_coupon_list',
|
|
||||||
data: {
|
|
||||||
page: num,
|
|
||||||
coupon_id: this.optData.coupon_id
|
|
||||||
},
|
|
||||||
Loading: true,
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
if (num == 1) {
|
|
||||||
this.listData = []
|
|
||||||
}
|
|
||||||
|
|
||||||
this.listData = this.listData.concat(res.data.list)
|
|
||||||
this.mescroll.endByPage(res.data.list.length, res.data.last_page)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.content {
|
|
||||||
padding: 0 0 30rpx;
|
|
||||||
|
|
||||||
.list-item {
|
|
||||||
width: 710rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 40rpx 30rpx 40rpx 10rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
margin: 0 auto 20rpx;
|
|
||||||
|
|
||||||
.money {
|
|
||||||
width: 160rpx;
|
|
||||||
text-align: center;
|
|
||||||
// background: #f00;
|
|
||||||
|
|
||||||
font-size: 26rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
|
|
||||||
text {
|
|
||||||
font-size: 42rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.info {
|
|
||||||
flex: 1;
|
|
||||||
padding-left: 20rpx;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
|
|
||||||
font-size: 24rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #dddddd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
width: 130rpx;
|
|
||||||
height: 50rpx;
|
|
||||||
background: linear-gradient(90deg, #2dcbff 0%, #ff95fb 100%);
|
|
||||||
border-radius: 25rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #222222;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.dis {
|
|
||||||
filter: grayscale(1);
|
|
||||||
|
|
||||||
.btn {
|
|
||||||
color: #ccc;
|
|
||||||
background: none;
|
|
||||||
border: 1px solid #ccc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -1,312 +0,0 @@
|
||||||
<!--
|
|
||||||
* @Date: 2023-11-14 10:09:45
|
|
||||||
* @LastEditTime: 2023-12-08 16:50:43
|
|
||||||
* @Description: content
|
|
||||||
-->
|
|
||||||
<template>
|
|
||||||
<view class="content">
|
|
||||||
<uni-nav-bar title="签到任务" color="#000000" left-icon="left" backgroundColor="transparent" :border="false"
|
|
||||||
:statusBar="true" :fixed="true" @clickLeft="$c.back()"></uni-nav-bar>
|
|
||||||
|
|
||||||
<view class="" style="width: 686rpx; height: 328rpx; background-color: #D8D8D8; border-radius: 16rpx; margin: 56rpx auto 0;">
|
|
||||||
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="page-hd">
|
|
||||||
<view class="title">签到任务</view>
|
|
||||||
|
|
||||||
<view class="icon" @click="$refs.rulePop.getRule(16, '签到规则')">
|
|
||||||
<image :src="$img('/static/img/info.png')" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view v-if="signData" class="sign-box common_bg" :style="{
|
|
||||||
backgroundImage: `url(${$img('/static/img/1_sign_bg.png')})`
|
|
||||||
}">
|
|
||||||
<template v-for="(item, i) in signData.sign_info">
|
|
||||||
<view v-if="i < 6" class="sign-item" :key="i" :class="{
|
|
||||||
act: i + 1 <= signData.days
|
|
||||||
}">
|
|
||||||
<view class="day">{{ i + 1 }}天</view>
|
|
||||||
|
|
||||||
<view class="icon">
|
|
||||||
<!-- <image
|
|
||||||
v-if="i + 1 <= signData.days"
|
|
||||||
:src="$img('/static/img/1_coin.png')"
|
|
||||||
lazy-load
|
|
||||||
></image> -->
|
|
||||||
|
|
||||||
<image src="/static/common/signImg.png" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="num">{{ item }}{{$config.getAppSetting('currency1_name')}}</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view v-else class="sign-item large" :key="i" :class="{
|
|
||||||
act: i + 1 <= signData.days
|
|
||||||
}">
|
|
||||||
<view class="item-l column justify-center">
|
|
||||||
<view class="day">第七天</view>
|
|
||||||
|
|
||||||
<view class="num">{{ item }}{{$config.getAppSetting('currency1_name')}}</view>
|
|
||||||
</view>
|
|
||||||
<view class="icon relative">
|
|
||||||
<image src="/static/common/signImg.png" lazy-load></image>
|
|
||||||
<image src="/static/common/signImg.png" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="sign-btn" :class="!is_sign ? 'signYes' : 'signNo'" @click="doSign">
|
|
||||||
<template v-if="!is_sign">立即签到</template>
|
|
||||||
<template v-else>已签到</template>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<uni-popup ref="sucPop" type="center" mask-background-color="rgba(0,0,0,0.8)">
|
|
||||||
<view v-if="sucData" class="suc-pop common_bg center" :style="{
|
|
||||||
backgroundImage: `url(${$img('/static/img/signBg.png')})`
|
|
||||||
|
|
||||||
}">
|
|
||||||
<image class="coin-img" :src="$img('/static/img/signJinbi.png')" mode=""></image>
|
|
||||||
<view class="coin-num">恭喜获得 {{ sucData.num }} {{$config.getAppSetting('currency1_name')}}</view>
|
|
||||||
<view class="close icon" @click="$refs.sucPop.close()">
|
|
||||||
<image :src="$img('/static/img/zdl.png')" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</uni-popup>
|
|
||||||
|
|
||||||
<rule-pop ref="rulePop"></rule-pop>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
signData: [],
|
|
||||||
sucData: '',
|
|
||||||
is_sign: 0
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onLoad(options) {
|
|
||||||
this.getData()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
doSign() {
|
|
||||||
this.req({
|
|
||||||
url: 'sign_add',
|
|
||||||
data: {},
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
this.sucData = res.data
|
|
||||||
|
|
||||||
this.$refs.sucPop.open()
|
|
||||||
|
|
||||||
this.getData()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
getData() {
|
|
||||||
this.req({
|
|
||||||
url: 'sign',
|
|
||||||
data: {},
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
this.signData = res.data.sign
|
|
||||||
this.is_sign = res.data.sign.is_sign
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.content {
|
|
||||||
min-height: 100vh;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 1rpx 0 40rpx;
|
|
||||||
|
|
||||||
.page-hd {
|
|
||||||
padding: 20rpx 30rpx 0;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 60rpx;
|
|
||||||
font-family: YouSheBiaoTiHei;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
text-shadow: 0rpx 0rpx 12rpx rgba(255, 135, 58, 0.8);
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 40rpx;
|
|
||||||
height: 40rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sign-box {
|
|
||||||
width: 710rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 30rpx 40rpx 40rpx;
|
|
||||||
margin: 30rpx auto 0;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: row wrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
.sign-item {
|
|
||||||
width: 150rpx;
|
|
||||||
height: 165rpx;
|
|
||||||
background: #ff873a;
|
|
||||||
border-radius: 20rpx;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 10rpx;
|
|
||||||
border: 2rpx solid #FFFFFF;
|
|
||||||
|
|
||||||
.day {
|
|
||||||
font-size: 24rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #dddddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 50rpx;
|
|
||||||
height: 50rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.num {
|
|
||||||
font-size: 20rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.act {
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
content: '已签';
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
font-family: Alimama ShuHeiTi;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #FFFFFF;
|
|
||||||
background: rgba(0, 0, 0, 0.4);
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.large {
|
|
||||||
width: 310rpx;
|
|
||||||
height: 165rpx;
|
|
||||||
flex-flow: row nowrap;
|
|
||||||
justify-content: space-around;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.item-l {
|
|
||||||
height: 120rpx;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.num {
|
|
||||||
margin-top: 20rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 120rpx;
|
|
||||||
height: 100rpx;
|
|
||||||
|
|
||||||
>image:nth-child(1) {
|
|
||||||
width: 34rpx;
|
|
||||||
height: 34rpx;
|
|
||||||
position: absolute;
|
|
||||||
left: 10rpx;
|
|
||||||
bottom: 10rpx;
|
|
||||||
transform: rotate(-28deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
>image:nth-child(2) {
|
|
||||||
width: 72rpx;
|
|
||||||
height: 72rpx;
|
|
||||||
position: absolute;
|
|
||||||
top: 10rpx;
|
|
||||||
right: 10rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.sign-btn {
|
|
||||||
margin: 40rpx auto 0;
|
|
||||||
width: 400rpx;
|
|
||||||
height: 122rpx;
|
|
||||||
border-radius: 40rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
background: url($imgurl+'common/jixuchou.png') no-repeat 0 0 / 100% 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.signYes {
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.signNo {
|
|
||||||
color: #FFFFFF;
|
|
||||||
filter: grayscale(100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.suc-pop {
|
|
||||||
width: 100vw;
|
|
||||||
height: 642rpx;
|
|
||||||
position: relative;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column nowrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
|
|
||||||
.coin-img {
|
|
||||||
width: 345rpx;
|
|
||||||
height: 345rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.coin-num {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close {
|
|
||||||
width: 378rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
position: absolute;
|
|
||||||
left: 50%;
|
|
||||||
bottom: 40rpx;
|
|
||||||
transform: translate(-50%, 200%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,399 +0,0 @@
|
||||||
<template>
|
|
||||||
<view class="content">
|
|
||||||
<uni-nav-bar
|
|
||||||
left-icon="left"
|
|
||||||
title="我的收藏"
|
|
||||||
color="#000000"
|
|
||||||
backgroundColor="transparent"
|
|
||||||
:fixed="true"
|
|
||||||
:statusBar="true"
|
|
||||||
:border="false"
|
|
||||||
@clickLeft="$c.back"
|
|
||||||
></uni-nav-bar>
|
|
||||||
|
|
||||||
<!-- 顶部标签栏 -->
|
|
||||||
<scroll-view class="tab" scroll-x>
|
|
||||||
<view
|
|
||||||
class="tab-item"
|
|
||||||
v-for="(item, i) in tabList"
|
|
||||||
:key="i"
|
|
||||||
:class="{ active: tabCur === i }"
|
|
||||||
@click="tabChange(i)"
|
|
||||||
>
|
|
||||||
{{ item.title }}
|
|
||||||
</view>
|
|
||||||
</scroll-view>
|
|
||||||
|
|
||||||
<!-- 列表区域 -->
|
|
||||||
<mescroll-body
|
|
||||||
ref="mescrollRef"
|
|
||||||
@init="mescrollInit"
|
|
||||||
@down="downCallback"
|
|
||||||
@up="getList"
|
|
||||||
:down="downOption"
|
|
||||||
:up="upOption"
|
|
||||||
>
|
|
||||||
<view class="list" v-if="listData.length > 0">
|
|
||||||
<view
|
|
||||||
class="list-item"
|
|
||||||
v-for="(item, i) in listData"
|
|
||||||
:key="i"
|
|
||||||
@click="toDetail(item)"
|
|
||||||
>
|
|
||||||
<view class="pic">
|
|
||||||
<image
|
|
||||||
class="pic-img"
|
|
||||||
:src="item.imgurl"
|
|
||||||
mode="aspectFill"
|
|
||||||
lazy-load
|
|
||||||
></image>
|
|
||||||
</view>
|
|
||||||
<view
|
|
||||||
class="tag"
|
|
||||||
:style="{ backgroundImage: `url(${$img1('common/label1.png')})` }"
|
|
||||||
>
|
|
||||||
<text>{{ tabList[tabCur].title }}</text>
|
|
||||||
</view>
|
|
||||||
<view class="title ellipsis">{{ item.goods_title }}</view>
|
|
||||||
|
|
||||||
<view class="price-box">
|
|
||||||
<view class="price">
|
|
||||||
¥<text>{{ item.goods_price }}</text>
|
|
||||||
</view>
|
|
||||||
<view v-if="item.stock" class="stock">
|
|
||||||
<view class="stock-num"
|
|
||||||
>{{ item.surplus_stock }}/{{ item.stock }}</view
|
|
||||||
>
|
|
||||||
<image
|
|
||||||
class="stock-icon"
|
|
||||||
:src="$img1('index/box.png')"
|
|
||||||
lazy-load
|
|
||||||
></image>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- 空状态 -->
|
|
||||||
<view class="empty-state" v-if="listData.length === 0 && !isLoading">
|
|
||||||
<image
|
|
||||||
class="empty-image"
|
|
||||||
:src="$img1('common/empty.png')"
|
|
||||||
mode="aspectFit"
|
|
||||||
></image>
|
|
||||||
<text class="empty-text">暂无收藏内容</text>
|
|
||||||
</view>
|
|
||||||
</mescroll-body>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 下拉刷新配置
|
|
||||||
downOption: {
|
|
||||||
auto: false,
|
|
||||||
},
|
|
||||||
// 上拉加载配置
|
|
||||||
upOption: {
|
|
||||||
auto: true,
|
|
||||||
page: {
|
|
||||||
size: 10, // 每页数据数量
|
|
||||||
},
|
|
||||||
noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据
|
|
||||||
empty: {
|
|
||||||
use: false, // 使用自定义的空状态
|
|
||||||
},
|
|
||||||
},
|
|
||||||
tabList: [], // 标签列表
|
|
||||||
tabCur: 0, // 当前选中标签索引
|
|
||||||
listData: [], // 列表数据
|
|
||||||
isLoading: true, // 是否正在加载
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
created() {
|
|
||||||
// 获取商品类型列表
|
|
||||||
this.initTabList();
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
/**
|
|
||||||
* 初始化标签列表
|
|
||||||
*/
|
|
||||||
initTabList() {
|
|
||||||
const tabList = this.$config.getGoodType();
|
|
||||||
// 过滤掉id为0的选项
|
|
||||||
this.tabList = tabList.filter((item) => item.id !== 0);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 初始化mescroll对象
|
|
||||||
* @param {Object} mescroll mescroll实例
|
|
||||||
*/
|
|
||||||
mescrollInit(mescroll) {
|
|
||||||
this.mescroll = mescroll;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 下拉刷新回调
|
|
||||||
*/
|
|
||||||
downCallback() {
|
|
||||||
this.mescroll.resetUpScroll();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 跳转到详情页
|
|
||||||
* @param {Object} item 商品项
|
|
||||||
*/
|
|
||||||
toDetail(item) {
|
|
||||||
let url = "/pages/shouye/detail";
|
|
||||||
|
|
||||||
// 根据商品类型跳转到不同详情页
|
|
||||||
if (item.type === 2 || item.type === 8) {
|
|
||||||
url = "/pages/shouye/detail_wuxian";
|
|
||||||
} else if (item.type === 9) {
|
|
||||||
url = "/package/index/lian-ji";
|
|
||||||
}
|
|
||||||
|
|
||||||
this.$c.to({
|
|
||||||
url,
|
|
||||||
query: {
|
|
||||||
goods_id: item.goods_id,
|
|
||||||
type_text: this.tabList[this.tabCur].title,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 切换标签
|
|
||||||
* @param {Number} index 标签索引
|
|
||||||
*/
|
|
||||||
tabChange(index) {
|
|
||||||
if (this.tabCur === index) return;
|
|
||||||
|
|
||||||
this.tabCur = index;
|
|
||||||
this.listData = [];
|
|
||||||
this.isLoading = true;
|
|
||||||
|
|
||||||
// 重置列表并滚动到顶部
|
|
||||||
this.mescroll.resetUpScroll();
|
|
||||||
this.mescroll.scrollTo(0, 0);
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取收藏列表数据
|
|
||||||
* @param {Object} params 分页参数
|
|
||||||
*/
|
|
||||||
getList({ num, size }) {
|
|
||||||
this.isLoading = true;
|
|
||||||
|
|
||||||
// 使用Promise方式调用API
|
|
||||||
this.$request
|
|
||||||
.post("listCollect", {
|
|
||||||
page: num,
|
|
||||||
type: this.tabList[this.tabCur].id,
|
|
||||||
})
|
|
||||||
.then((res) => {
|
|
||||||
this.isLoading = false;
|
|
||||||
|
|
||||||
if (res.status === 1) {
|
|
||||||
// 第一页时清空数据
|
|
||||||
if (num === 1) {
|
|
||||||
this.listData = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
// 追加数据
|
|
||||||
this.listData = this.listData.concat(res.data.data || []);
|
|
||||||
|
|
||||||
// 更新分页状态
|
|
||||||
this.mescroll.endByPage(
|
|
||||||
res.data.data ? res.data.data.length : 0,
|
|
||||||
res.data.last_page || 1
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this.mescroll.endErr();
|
|
||||||
uni.showToast({
|
|
||||||
title: res.msg || "加载失败",
|
|
||||||
icon: "none",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
this.isLoading = false;
|
|
||||||
this.mescroll.endErr();
|
|
||||||
uni.showToast({
|
|
||||||
title: "网络请求失败",
|
|
||||||
icon: "none",
|
|
||||||
});
|
|
||||||
console.error(err);
|
|
||||||
});
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.content {
|
|
||||||
background-color: #f7f7f7;
|
|
||||||
min-height: 100vh;
|
|
||||||
|
|
||||||
// 顶部标签栏
|
|
||||||
.tab {
|
|
||||||
white-space: nowrap;
|
|
||||||
padding: 15rpx 0;
|
|
||||||
|
|
||||||
.tab-item {
|
|
||||||
width: 88rpx;
|
|
||||||
height: 40rpx;
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
margin-left: 30rpx;
|
|
||||||
background-color: #ffffff;
|
|
||||||
font-size: 20rpx;
|
|
||||||
border-radius: 8rpx;
|
|
||||||
color: #333333;
|
|
||||||
transition: all 0.2s;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-right: 30rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.active {
|
|
||||||
background-color: #e6f791;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 商品列表
|
|
||||||
.list {
|
|
||||||
padding: 15rpx 30rpx 30rpx;
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
justify-content: space-between;
|
|
||||||
|
|
||||||
.list-item {
|
|
||||||
width: 330rpx;
|
|
||||||
height: 487rpx;
|
|
||||||
margin-top: 30rpx;
|
|
||||||
position: relative;
|
|
||||||
background-color: #ffffff;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
overflow: hidden;
|
|
||||||
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);
|
|
||||||
|
|
||||||
.pic {
|
|
||||||
width: 100%;
|
|
||||||
height: 332rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-color: #f5f5f5;
|
|
||||||
border-radius: 16rpx 16rpx 0 0;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.pic-img {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
border-radius: 16rpx 16rpx 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tag {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
top: 12rpx;
|
|
||||||
left: 12rpx;
|
|
||||||
width: 68rpx;
|
|
||||||
height: 32rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
background-size: 100% 100%;
|
|
||||||
|
|
||||||
text {
|
|
||||||
font-size: 14rpx;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.title {
|
|
||||||
padding: 20rpx 20rpx 0;
|
|
||||||
font-size: 20rpx;
|
|
||||||
color: #333333;
|
|
||||||
line-height: 1.4;
|
|
||||||
height: 56rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.price-box {
|
|
||||||
padding: 20rpx 20rpx 10rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
|
|
||||||
.price {
|
|
||||||
font-size: 16rpx;
|
|
||||||
color: #333333;
|
|
||||||
|
|
||||||
text {
|
|
||||||
font-size: 24rpx;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.stock-num {
|
|
||||||
font-size: 24rpx;
|
|
||||||
color: #cccccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.stock-icon {
|
|
||||||
width: 26rpx;
|
|
||||||
height: 26rpx;
|
|
||||||
margin-left: 6rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 空状态
|
|
||||||
.empty-state {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 100rpx 0;
|
|
||||||
|
|
||||||
.empty-image {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 200rpx;
|
|
||||||
margin-bottom: 20rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.empty-text {
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 公共类
|
|
||||||
.ellipsis {
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
display: -webkit-box;
|
|
||||||
-webkit-line-clamp: 2;
|
|
||||||
-webkit-box-orient: vertical;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,146 +0,0 @@
|
||||||
<!--
|
|
||||||
* @Date: 2023-11-17 11:44:58
|
|
||||||
* @LastEditTime: 2023-11-30 18:08:33
|
|
||||||
* @Description: content
|
|
||||||
-->
|
|
||||||
<template>
|
|
||||||
<view class="content">
|
|
||||||
<uni-nav-bar
|
|
||||||
left-icon="left"
|
|
||||||
title="道具卡"
|
|
||||||
color="#fff"
|
|
||||||
backgroundColor="transparent"
|
|
||||||
:fixed="true"
|
|
||||||
:statusBar="true"
|
|
||||||
:border="false"
|
|
||||||
@clickLeft="$c.back"
|
|
||||||
></uni-nav-bar>
|
|
||||||
|
|
||||||
<mescroll-body
|
|
||||||
ref="mescrollRef"
|
|
||||||
@init="mescrollInit"
|
|
||||||
@down="downCallback"
|
|
||||||
@up="getList"
|
|
||||||
:down="downOption"
|
|
||||||
:up="upOption"
|
|
||||||
>
|
|
||||||
<view
|
|
||||||
class="card-item"
|
|
||||||
v-for="(item, i) in listData"
|
|
||||||
:key="i">
|
|
||||||
<view class="icon">
|
|
||||||
<image src="/static/common/cardIcon.png"></image>
|
|
||||||
</view>
|
|
||||||
<view class="card-r">
|
|
||||||
<view class="title">{{item.title}}</view>
|
|
||||||
<view class="desc">抽赏时可选择重新抽赏</view>
|
|
||||||
</view>
|
|
||||||
<view class="card-num">×1</view>
|
|
||||||
</view>
|
|
||||||
</mescroll-body>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 下拉刷新的配置(可选, 绝大部分情况无需配置)
|
|
||||||
downOption: {
|
|
||||||
auto: false
|
|
||||||
},
|
|
||||||
// 上拉加载的配置(可选, 绝大部分情况无需配置)
|
|
||||||
upOption: {
|
|
||||||
auto: true,
|
|
||||||
page: {
|
|
||||||
size: 10 // 每页数据的数量,默认10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
listData: []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
/**
|
|
||||||
* @description: 获取列表
|
|
||||||
* @param {*} num
|
|
||||||
* @param {*} size
|
|
||||||
* @return {*}
|
|
||||||
*/
|
|
||||||
getList({ num, size }) {
|
|
||||||
this.req({
|
|
||||||
url: 'item_card_list',
|
|
||||||
data: {
|
|
||||||
page: num
|
|
||||||
},
|
|
||||||
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
if (num == 1) {
|
|
||||||
this.listData = []
|
|
||||||
}
|
|
||||||
|
|
||||||
this.listData = this.listData.concat(res.data.list)
|
|
||||||
this.mescroll.endByPage(res.data.list.length, res.data.last_page)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.content {
|
|
||||||
padding: 0 0 30rpx;
|
|
||||||
|
|
||||||
.card-item {
|
|
||||||
width: 710rpx;
|
|
||||||
margin: 20rpx auto 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 30rpx 40rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
background: #3B3941;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 100rpx;
|
|
||||||
height: 58rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-r {
|
|
||||||
width: 300rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin-left: 30rpx;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 40rpx;
|
|
||||||
color: #B07AF3;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desc {
|
|
||||||
margin-top: 10rpx;
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
|
|
||||||
font-size: 26rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #dddddd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.card-num {
|
|
||||||
flex: 1;
|
|
||||||
text-align: right;
|
|
||||||
font-size: 36rpx;
|
|
||||||
font-family: YouSheBiaoTiHei;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.common_bg {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -1,622 +0,0 @@
|
||||||
<!--
|
|
||||||
* @Date: 2023-12-20 17:33:04
|
|
||||||
* @LastEditTime: 2024-01-17 11:30:11
|
|
||||||
* @Description: content
|
|
||||||
-->
|
|
||||||
<template>
|
|
||||||
<view class="content">
|
|
||||||
<uni-nav-bar
|
|
||||||
title="提取记录"
|
|
||||||
color="#fff"
|
|
||||||
leftIcon="left"
|
|
||||||
backgroundColor="transparent"
|
|
||||||
:border="false"
|
|
||||||
:statusBar="true"
|
|
||||||
:fixed="true"
|
|
||||||
@clickLeft="$c.back()"
|
|
||||||
></uni-nav-bar>
|
|
||||||
|
|
||||||
<mescroll-body
|
|
||||||
ref="mescrollRef"
|
|
||||||
@init="mescrollInit"
|
|
||||||
@down="downCallback"
|
|
||||||
@up="getList"
|
|
||||||
:down="downOption"
|
|
||||||
:up="upOption"
|
|
||||||
>
|
|
||||||
<!-- <view class="row">
|
|
||||||
<view class="left">
|
|
||||||
<view class="title-color">提取金额</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="input-box">
|
|
||||||
<input v-model.number="money" placeholder="输入提取金额" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="tip">
|
|
||||||
荷包金额剩余: {{ userInfo.money2 }}元
|
|
||||||
<text @click="doAll">全部提出</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="row">
|
|
||||||
<view class="left">
|
|
||||||
<view class="title-color">提取方式</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="right">
|
|
||||||
<view
|
|
||||||
class="type"
|
|
||||||
v-for="(item, i) in tiType"
|
|
||||||
:key="i"
|
|
||||||
@click="changeTiType(i)"
|
|
||||||
>
|
|
||||||
<view class="check icon">
|
|
||||||
<image
|
|
||||||
v-if="tiTypeCur == i"
|
|
||||||
:src="$img('/static/img/check1_act.png')"
|
|
||||||
lazy-load
|
|
||||||
></image>
|
|
||||||
|
|
||||||
<image
|
|
||||||
v-else
|
|
||||||
:src="$img('/static/img/check1.png')"
|
|
||||||
lazy-load
|
|
||||||
></image>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
{{ item.title }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<template v-if="tiType[tiTypeCur].id == 2">
|
|
||||||
<view class="input-box">
|
|
||||||
<view class="label">姓名:</view>
|
|
||||||
|
|
||||||
<input v-model="name" placeholder="请输入姓名" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="input-box">
|
|
||||||
<view class="label">账号:</view>
|
|
||||||
|
|
||||||
<input v-model="account" placeholder="请输入账号" />
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<template v-if="tiType[tiTypeCur].id == 3">
|
|
||||||
<view class="input-box">
|
|
||||||
<view class="label">开户行:</view>
|
|
||||||
|
|
||||||
<input v-model="bank" placeholder="请输入开户行" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="input-box">
|
|
||||||
<view class="label">姓名:</view>
|
|
||||||
|
|
||||||
<input v-model="name" placeholder="请输入姓名" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="input-box">
|
|
||||||
<view class="label">账号:</view>
|
|
||||||
|
|
||||||
<input v-model="account" placeholder="请输入账号" />
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<view v-if="pageData" class="tip">
|
|
||||||
<text>{{ pageData.withdraw_money }}</text>
|
|
||||||
起提,每笔手续费需付
|
|
||||||
<text>{{ pageData.withdraw_money_sxf }}</text>
|
|
||||||
荷包金额,当日最高可提取
|
|
||||||
<text>{{ pageData.max_money }}</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view @click="isAgree = !isAgree" class="agree">
|
|
||||||
<view class="icon">
|
|
||||||
<image
|
|
||||||
v-if="isAgree"
|
|
||||||
:src="$img1('common/check_act.png')"
|
|
||||||
lazy-load
|
|
||||||
></image>
|
|
||||||
|
|
||||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="agree-r">
|
|
||||||
我已阅读并同意
|
|
||||||
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=4' })">
|
|
||||||
《用户协议》
|
|
||||||
</text>
|
|
||||||
和
|
|
||||||
<text @click.stop="$c.to({ url: '/pages/guize/guize?type=5' })">
|
|
||||||
《隐私政策》
|
|
||||||
</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="submit" @click="$c.noDouble(doSubmit)">立即提取</view>
|
|
||||||
|
|
||||||
<view class="row">
|
|
||||||
<view class="left">
|
|
||||||
<view class="title-color">提取记录</view>
|
|
||||||
</view>
|
|
||||||
</view> -->
|
|
||||||
|
|
||||||
<view class="log">
|
|
||||||
<view class="log-item" v-for="(item, i) in listData" :key="i">
|
|
||||||
<view class="item-l">
|
|
||||||
<view class="title">
|
|
||||||
{{ item.status_text }}
|
|
||||||
|
|
||||||
<text v-if="item.reason">({{ item.reason }})</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="time">{{ item.addtime }}</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="item-money">{{ item.tal_money }}元</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</mescroll-body>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
// 下拉刷新的配置(可选, 绝大部分情况无需配置)
|
|
||||||
downOption: {
|
|
||||||
auto: false
|
|
||||||
},
|
|
||||||
// 上拉加载的配置(可选, 绝大部分情况无需配置)
|
|
||||||
upOption: {
|
|
||||||
auto: true,
|
|
||||||
page: {
|
|
||||||
size: 15 // 每页数据的数量,默认10
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
money: '',
|
|
||||||
qrCode: '',
|
|
||||||
name: '',
|
|
||||||
account: '',
|
|
||||||
bank: '',
|
|
||||||
|
|
||||||
listData: [],
|
|
||||||
userInfo: uni.getStorageSync('userinfo'),
|
|
||||||
qrCodePath: '',
|
|
||||||
tiType: [
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
title: '支付宝'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 3,
|
|
||||||
title: '银行卡'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
tiTypeCur: 0,
|
|
||||||
pageData: '',
|
|
||||||
lastTi: {},
|
|
||||||
isAgree: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onShow() {
|
|
||||||
this.getUserInfo()
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
changeTiType(i) {
|
|
||||||
this.tiTypeCur = i
|
|
||||||
|
|
||||||
const curId = this.tiType[i].id
|
|
||||||
const target = this.lastTi[curId]
|
|
||||||
|
|
||||||
if (target) {
|
|
||||||
this.name = target.name
|
|
||||||
this.account = target.number
|
|
||||||
this.bank = target.bank
|
|
||||||
} else {
|
|
||||||
this.name = ''
|
|
||||||
this.account = ''
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
downCallback() {
|
|
||||||
this.money = ''
|
|
||||||
|
|
||||||
this.mescroll.resetUpScroll()
|
|
||||||
this.mescroll.scrollTo(0, 0)
|
|
||||||
this.getUserInfo()
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description: 获取列表
|
|
||||||
* @param {*} num
|
|
||||||
* @param {*} size
|
|
||||||
* @return {*}
|
|
||||||
*/
|
|
||||||
getList({ num, size }) {
|
|
||||||
this.req({
|
|
||||||
url: 'withdraw_log',
|
|
||||||
data: {
|
|
||||||
page: num
|
|
||||||
},
|
|
||||||
Loading: true,
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
if (num == 1) {
|
|
||||||
this.listData = []
|
|
||||||
}
|
|
||||||
|
|
||||||
this.pageData = res.data
|
|
||||||
this.listData = this.listData.concat(res.data.list)
|
|
||||||
this.mescroll.endByPage(res.data.list.length, res.data.last_page)
|
|
||||||
|
|
||||||
let lastTi = {}
|
|
||||||
if (res.data.zhifubao)
|
|
||||||
lastTi[res.data.zhifubao.type] = res.data.zhifubao
|
|
||||||
if (res.data.yinhangka)
|
|
||||||
lastTi[res.data.yinhangka.type] = res.data.yinhangka
|
|
||||||
|
|
||||||
this.lastTi = lastTi
|
|
||||||
|
|
||||||
this.changeTiType(this.tiTypeCur)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
doSubmit() {
|
|
||||||
if (!this.money) {
|
|
||||||
this.$c.toast({
|
|
||||||
title: '请输入金额'
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.name) {
|
|
||||||
this.$c.toast({
|
|
||||||
title: '姓名不能为空'
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.account) {
|
|
||||||
this.$c.toast({
|
|
||||||
title: '账号不能为空'
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.tiType[this.tiTypeCur].id == 3) {
|
|
||||||
if (!this.bank) {
|
|
||||||
this.$c.toast({
|
|
||||||
title: '开户行不能为空'
|
|
||||||
})
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.isAgree) {
|
|
||||||
return this.$c.toast({
|
|
||||||
title: '请阅读并同意《用户协议》和《隐私政策》'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
this.req({
|
|
||||||
url: 'withdraw',
|
|
||||||
data: {
|
|
||||||
money: this.money,
|
|
||||||
type: this.tiType[this.tiTypeCur].id,
|
|
||||||
name: this.name,
|
|
||||||
number: this.account,
|
|
||||||
bank: this.bank
|
|
||||||
},
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
this.$c.toast({
|
|
||||||
title: res.msg,
|
|
||||||
duration: 1500,
|
|
||||||
success: () => {
|
|
||||||
this.getUserInfo()
|
|
||||||
|
|
||||||
this.downCallback()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
upImg() {
|
|
||||||
let that = this
|
|
||||||
|
|
||||||
uni.chooseImage({
|
|
||||||
sizeType: ['original', 'compressed'],
|
|
||||||
sourceType: ['album', 'camera'],
|
|
||||||
count: 1,
|
|
||||||
success: ({ tempFilePaths, tempFiles }) => {
|
|
||||||
uni.uploadFile({
|
|
||||||
url: that.siteBaseUrl + 'picture',
|
|
||||||
filePath: tempFilePaths[0],
|
|
||||||
name: 'file',
|
|
||||||
success: e => {
|
|
||||||
let res = JSON.parse(e.data)
|
|
||||||
if (res.status == 1) {
|
|
||||||
this.qrCode = res.data.imgurl
|
|
||||||
this.qrCodePath = res.data.path
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
fail: error => {}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
doAll() {
|
|
||||||
this.money = this.userInfo.money2 * 1
|
|
||||||
},
|
|
||||||
|
|
||||||
getUserInfo() {
|
|
||||||
this.req({
|
|
||||||
url: 'user',
|
|
||||||
data: {},
|
|
||||||
success: res => {
|
|
||||||
if (res.status == 1) {
|
|
||||||
this.userInfo = res.data.userinfo
|
|
||||||
|
|
||||||
uni.setStorageSync('userinfo', res.data.userinfo)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.content {
|
|
||||||
padding: 0 30rpx 30rpx;
|
|
||||||
|
|
||||||
.row {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
margin-top: 30rpx;
|
|
||||||
|
|
||||||
.left {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
|
|
||||||
.title-color {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #FFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
.desc {
|
|
||||||
font-size: 26rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #dddddd;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
font-size: 24rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
|
|
||||||
.to-rule {
|
|
||||||
font-size: 24rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #d0d1ff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right-icon {
|
|
||||||
width: 32rpx;
|
|
||||||
height: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.type {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.check {
|
|
||||||
width: 40rpx;
|
|
||||||
height: 32rpx;
|
|
||||||
margin-right: 10rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.type + .type {
|
|
||||||
margin-left: 40rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.input-box {
|
|
||||||
margin-top: 30rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
border: 1px solid #d0d1ff;
|
|
||||||
box-sizing: border-box;
|
|
||||||
padding: 0 20rpx;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.label {
|
|
||||||
padding: 0 20rpx;
|
|
||||||
// border-right: 1rpx solid #ccc;
|
|
||||||
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
flex: 1;
|
|
||||||
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.tip {
|
|
||||||
margin-top: 10rpx;
|
|
||||||
|
|
||||||
font-size: 24rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #dddddd;
|
|
||||||
|
|
||||||
text {
|
|
||||||
padding: 0 10rpx;
|
|
||||||
|
|
||||||
color: #d0d1ff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.pic {
|
|
||||||
margin-top: 30rpx;
|
|
||||||
width: 200rpx;
|
|
||||||
height: 200rpx;
|
|
||||||
border-radius: 20rpx;
|
|
||||||
border: 1rpx solid #d0d1ff;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
.up {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
position: relative;
|
|
||||||
|
|
||||||
&::before,
|
|
||||||
&::after {
|
|
||||||
content: '';
|
|
||||||
width: 4rpx;
|
|
||||||
height: 40rpx;
|
|
||||||
background: #d0d1ff;
|
|
||||||
position: absolute;
|
|
||||||
left: 50%;
|
|
||||||
top: 50%;
|
|
||||||
transform: translate(-50%, -50%);
|
|
||||||
}
|
|
||||||
|
|
||||||
&::after {
|
|
||||||
transform: translate(-50%, -50%) rotate(90deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.agree {
|
|
||||||
display: flex;
|
|
||||||
padding: 40rpx 0 0;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 32rpx;
|
|
||||||
height: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.agree-r {
|
|
||||||
flex: 1;
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
padding-left: 20rpx;
|
|
||||||
line-height: 32rpx;
|
|
||||||
|
|
||||||
font-size: 26rpx;
|
|
||||||
color: #9d9d9d;
|
|
||||||
|
|
||||||
text {
|
|
||||||
color: #d0d1ff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.submit {
|
|
||||||
margin: 30rpx 0 0;
|
|
||||||
|
|
||||||
width: 100%;
|
|
||||||
height: 80rpx;
|
|
||||||
background: linear-gradient(90deg, #2dcbff 0%, #ff95fb 100%);
|
|
||||||
border-radius: 40rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #222222;
|
|
||||||
}
|
|
||||||
|
|
||||||
.log {
|
|
||||||
padding: 1rpx 10rpx 0;
|
|
||||||
|
|
||||||
.log-item {
|
|
||||||
padding: 30rpx 0;
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border-bottom: 1rpx solid #333;
|
|
||||||
|
|
||||||
.item-l {
|
|
||||||
flex: 1;
|
|
||||||
padding-right: 30rpx;
|
|
||||||
|
|
||||||
.title {
|
|
||||||
font-size: 28rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
|
|
||||||
text {
|
|
||||||
font-size: 24rpx;
|
|
||||||
padding-left: 20rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.time {
|
|
||||||
margin-top: 6rpx;
|
|
||||||
|
|
||||||
font-size: 25rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #cccccc;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.item-money {
|
|
||||||
font-size: 32rpx;
|
|
||||||
font-family: Source Han Sans CN;
|
|
||||||
font-weight: 400;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
174
pages.json
174
pages.json
|
|
@ -7,27 +7,29 @@
|
||||||
"^detail-preview-popup$": "@/components/detail-preview-popup/detail-preview-popup.vue",
|
"^detail-preview-popup$": "@/components/detail-preview-popup/detail-preview-popup.vue",
|
||||||
"^banner$": "@/components/banner/banner.vue"
|
"^banner$": "@/components/banner/banner.vue"
|
||||||
},
|
},
|
||||||
"pages": [{
|
"pages": [
|
||||||
|
{
|
||||||
"path": "pages/index/index",
|
"path": "pages/index/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
"path": "pages/shouye/index",
|
{
|
||||||
|
"path": "pages/main/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTextStyle": "black"
|
"navigationBarTextStyle": "black"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/detail",
|
"path": "pages/main/detail",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTextStyle": "black"
|
"navigationBarTextStyle": "black"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/detail_wuxian",
|
"path": "pages/main/detail_wuxian",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarBackgroundColor": "#222222",
|
"navigationBarBackgroundColor": "#222222",
|
||||||
|
|
@ -35,7 +37,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/rili",
|
"path": "pages/main/rili",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "预售日历",
|
"navigationBarTitleText": "预售日历",
|
||||||
"navigationBarBackgroundColor": "#161616",
|
"navigationBarBackgroundColor": "#161616",
|
||||||
|
|
@ -43,16 +45,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/bangdan",
|
"path": "pages/main/bangdan",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarBackgroundColor": "#161616",
|
"navigationBarBackgroundColor": "#161616",
|
||||||
"navigationBarTextStyle": "black"
|
"navigationBarTextStyle": "black"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/huanxiang",
|
"path": "pages/main/huanxiang",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "换箱",
|
"navigationBarTitleText": "换箱",
|
||||||
"navigationBarBackgroundColor": "#222222",
|
"navigationBarBackgroundColor": "#222222",
|
||||||
|
|
@ -61,7 +62,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/login",
|
"path": "pages/users/login",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "登录",
|
"navigationBarTitleText": "登录",
|
||||||
"navigationBarBackgroundColor": "#FFFFFF",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
|
|
@ -69,7 +70,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/bangding",
|
"path": "pages/users/bangding",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "绑定手机号",
|
"navigationBarTitleText": "绑定手机号",
|
||||||
"navigationBarBackgroundColor": "#FFFFFF",
|
"navigationBarBackgroundColor": "#FFFFFF",
|
||||||
|
|
@ -77,14 +78,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/index",
|
"path": "pages/users/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTextStyle": "black"
|
"navigationBarTextStyle": "black"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/xfjl",
|
"path": "pages/users/xfjl",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTitleText": "消费记录",
|
"navigationBarTitleText": "消费记录",
|
||||||
|
|
@ -92,7 +93,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/hsjl",
|
"path": "pages/users/hsjl",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTitleText": "打包记录",
|
"navigationBarTitleText": "打包记录",
|
||||||
|
|
@ -100,7 +101,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/fhjl",
|
"path": "pages/users/fhjl",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTitleText": "发货记录",
|
"navigationBarTitleText": "发货记录",
|
||||||
|
|
@ -108,7 +109,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/order",
|
"path": "pages/users/order",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarBackgroundColor": "#222222",
|
"navigationBarBackgroundColor": "#222222",
|
||||||
"navigationBarTitleText": "订单详情",
|
"navigationBarTitleText": "订单详情",
|
||||||
|
|
@ -117,7 +118,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/jf_jl",
|
"path": "pages/users/jf_jl",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTitleText": "积分记录",
|
"navigationBarTitleText": "积分记录",
|
||||||
|
|
@ -125,14 +126,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/vip",
|
"path": "pages/users/vip",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTitleText": "会员中心",
|
"navigationBarTitleText": "会员中心",
|
||||||
"navigationBarTextStyle": "black"
|
"navigationBarTextStyle": "black"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "pages/guize/guize",
|
"path": "pages/guize/guize",
|
||||||
"style": {
|
"style": {
|
||||||
|
|
@ -142,7 +142,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/my_coupon",
|
"path": "pages/users/my_coupon",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "欧气券",
|
"navigationBarTitleText": "欧气券",
|
||||||
"navigationBarBackgroundColor": "#222222",
|
"navigationBarBackgroundColor": "#222222",
|
||||||
|
|
@ -151,13 +151,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/bi_jl",
|
"path": "pages/users/bi_jl",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/wuliu_detail",
|
"path": "pages/users/wuliu_detail",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "查看物流",
|
"navigationBarTitleText": "查看物流",
|
||||||
"navigationBarBackgroundColor": "#222222",
|
"navigationBarBackgroundColor": "#222222",
|
||||||
|
|
@ -166,16 +166,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/tui-guang",
|
"path": "pages/users/tui-guang",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "邀请好友",
|
"navigationBarTitleText": "邀请好友",
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarTextStyle": "black"
|
"navigationBarTextStyle": "black"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "pages/user/change",
|
"path": "pages/users/change",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom",
|
"navigationStyle": "custom",
|
||||||
"navigationBarBackgroundColor": "#222222",
|
"navigationBarBackgroundColor": "#222222",
|
||||||
|
|
@ -191,7 +190,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/mall/index",
|
"path": "pages/shangcheng/index",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "",
|
"navigationBarTitleText": "",
|
||||||
"enablePullDownRefresh": false,
|
"enablePullDownRefresh": false,
|
||||||
|
|
@ -199,7 +198,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/coupon",
|
"path": "pages/users/coupon",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "",
|
"navigationBarTitleText": "",
|
||||||
"enablePullDownRefresh": false,
|
"enablePullDownRefresh": false,
|
||||||
|
|
@ -207,7 +206,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/ranking",
|
"path": "pages/main/ranking",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "",
|
"navigationBarTitleText": "",
|
||||||
"enablePullDownRefresh": false,
|
"enablePullDownRefresh": false,
|
||||||
|
|
@ -215,14 +214,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/bangdingweb",
|
"path": "pages/users/bangdingweb",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "绑定手机号"
|
"navigationBarTitleText": "绑定手机号"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/invite_ranking",
|
"path": "pages/main/invite_ranking",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationBarTitleText": "",
|
"navigationBarTitleText": "",
|
||||||
"enablePullDownRefresh": false,
|
"enablePullDownRefresh": false,
|
||||||
|
|
@ -252,8 +250,9 @@
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
}, {
|
},
|
||||||
"path": "pages/shouye/dada_ranking",
|
{
|
||||||
|
"path": "pages/main/dada_ranking",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
|
@ -265,7 +264,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/danye",
|
"path": "pages/main/danye",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
|
@ -289,7 +288,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/slots",
|
"path": "pages/main/slots",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
|
@ -307,7 +306,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/recharge-page",
|
"path": "pages/users/recharge-page",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
|
@ -319,13 +318,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/prize-wheel-demo",
|
"path": "pages/main/prize-wheel-demo",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/shouye/canvas-prize-demo",
|
"path": "pages/main/canvas-prize-demo",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
|
@ -349,7 +348,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/cancel-account-page",
|
"path": "pages/users/cancel-account-page",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
|
|
@ -361,82 +360,31 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"path": "pages/user/yetx",
|
"path": "pages/users/yetx",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/users/collect",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/users/equity",
|
||||||
|
"style": {
|
||||||
|
"navigationStyle": "custom"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "pages/other/qy-rule",
|
||||||
"style": {
|
"style": {
|
||||||
"navigationStyle": "custom"
|
"navigationStyle": "custom"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"subPackages": [{
|
"subPackages": [],
|
||||||
"root": "package/index",
|
|
||||||
"pages": [{
|
|
||||||
"path": "sign",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "lian-ji",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "coupon-center",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "leitai",
|
|
||||||
"style": {
|
|
||||||
"navigationBarTitleText": "",
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"root": "package/mine",
|
|
||||||
"pages": [{
|
|
||||||
"path": "collect",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "skill-card",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "equity",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "qy-rule",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "coupon-detail",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"path": "ti-qu",
|
|
||||||
"style": {
|
|
||||||
"navigationStyle": "custom"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"globalStyle": {
|
"globalStyle": {
|
||||||
"navigationBarTextStyle": "black",
|
"navigationBarTextStyle": "black",
|
||||||
"navigationBarTitleText": "友达赏",
|
"navigationBarTitleText": "友达赏",
|
||||||
|
|
@ -456,13 +404,13 @@
|
||||||
"iconHeight": "24px",
|
"iconHeight": "24px",
|
||||||
"list": [
|
"list": [
|
||||||
{
|
{
|
||||||
"pagePath": "pages/shouye/index",
|
"pagePath": "pages/main/index",
|
||||||
"iconPath": "static/tab/n1.png",
|
"iconPath": "static/tab/n1.png",
|
||||||
"selectedIconPath": "static/tab/c1.png",
|
"selectedIconPath": "static/tab/c1.png",
|
||||||
"text": "首页"
|
"text": "首页"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/mall/index",
|
"pagePath": "pages/shangcheng/index",
|
||||||
"iconPath": "static/tab/n5.png",
|
"iconPath": "static/tab/n5.png",
|
||||||
"selectedIconPath": "static/tab/c5.png",
|
"selectedIconPath": "static/tab/c5.png",
|
||||||
"text": "商城"
|
"text": "商城"
|
||||||
|
|
@ -480,7 +428,7 @@
|
||||||
"text": "福利"
|
"text": "福利"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"pagePath": "pages/user/index",
|
"pagePath": "pages/users/index",
|
||||||
"iconPath": "static/tab/n4.png",
|
"iconPath": "static/tab/n4.png",
|
||||||
"selectedIconPath": "static/tab/c4.png",
|
"selectedIconPath": "static/tab/c4.png",
|
||||||
"text": "我的"
|
"text": "我的"
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ export default {
|
||||||
toHome() {
|
toHome() {
|
||||||
// #ifdef H5 || MP
|
// #ifdef H5 || MP
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
// #endif
|
// #endif
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -52,13 +52,13 @@ export default {
|
||||||
return {
|
return {
|
||||||
imageUrl: imageUrl,
|
imageUrl: imageUrl,
|
||||||
title: "友达上线,来就送!",
|
title: "友达上线,来就送!",
|
||||||
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
|
path: '/pages/main/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
items(item) {
|
items(item) {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/shouye/detail',
|
url: '/pages/main/detail',
|
||||||
query: {
|
query: {
|
||||||
goods_id: item.id,
|
goods_id: item.id,
|
||||||
type_text: '积分赏'
|
type_text: '积分赏'
|
||||||
|
|
|
||||||
|
|
@ -693,7 +693,7 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
toHome() {
|
toHome() {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/index', {}, 'reLaunch');
|
this.$customRouter.navigateTo('/pages/main/index', {}, 'reLaunch');
|
||||||
},
|
},
|
||||||
|
|
||||||
applyPageTransitions() {
|
applyPageTransitions() {
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
imageUrl: imageUrl,
|
imageUrl: imageUrl,
|
||||||
title: "友达上线,来就送!",
|
title: "友达上线,来就送!",
|
||||||
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
|
path: '/pages/main/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
|
|
||||||
|
|
@ -525,7 +525,7 @@ export default {
|
||||||
|
|
||||||
toExpress(item) {
|
toExpress(item) {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/user/wuliu_detail',
|
url: '/pages/users/wuliu_detail',
|
||||||
query: {
|
query: {
|
||||||
id: item.id
|
id: item.id
|
||||||
}
|
}
|
||||||
|
|
@ -534,7 +534,7 @@ export default {
|
||||||
|
|
||||||
toOrder(item) {
|
toOrder(item) {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/user/order',
|
url: '/pages/users/order',
|
||||||
query: {
|
query: {
|
||||||
id: item.id
|
id: item.id
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -256,9 +256,9 @@ export default {
|
||||||
var pages = getCurrentPages()
|
var pages = getCurrentPages()
|
||||||
// console.log(pages)
|
// console.log(pages)
|
||||||
|
|
||||||
if (pages.length == 1 && pages[0].route == 'pages/shouye/bangdan') {
|
if (pages.length == 1 && pages[0].route == 'pages/main/bangdan') {
|
||||||
uni.redirectTo({
|
uni.redirectTo({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
uni.navigateBack()
|
uni.navigateBack()
|
||||||
|
|
@ -249,7 +249,7 @@ export default {
|
||||||
title: this.$config.getAppSetting("app_name") +
|
title: this.$config.getAppSetting("app_name") +
|
||||||
`${this.pageData.goods.title}系列 第${this.pageData.goods.num}套`,
|
`${this.pageData.goods.title}系列 第${this.pageData.goods.num}套`,
|
||||||
imageUrl: this.pageData.goods.imgurl_detail,
|
imageUrl: this.pageData.goods.imgurl_detail,
|
||||||
path: "/pages/shouye/detail" +
|
path: "/pages/main/detail" +
|
||||||
this.$c.qs({
|
this.$c.qs({
|
||||||
goods_id: this.pageData.goods.id,
|
goods_id: this.pageData.goods.id,
|
||||||
goods_num: this.pageData.goods.num,
|
goods_num: this.pageData.goods.num,
|
||||||
|
|
@ -365,7 +365,7 @@ export default {
|
||||||
|
|
||||||
toCoupon() {
|
toCoupon() {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: "/pages/user/coupon",
|
url: "/pages/users/coupon",
|
||||||
query: {
|
query: {
|
||||||
type: 2,
|
type: 2,
|
||||||
total_price: this.orderData.order_total,
|
total_price: this.orderData.order_total,
|
||||||
|
|
@ -572,7 +572,7 @@ export default {
|
||||||
|
|
||||||
changeBox() {
|
changeBox() {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: "/pages/shouye/huanxiang",
|
url: "/pages/main/huanxiang",
|
||||||
query: {
|
query: {
|
||||||
id: this.pageData.goods.id,
|
id: this.pageData.goods.id,
|
||||||
type_text: this.optData.type_text,
|
type_text: this.optData.type_text,
|
||||||
|
|
@ -314,7 +314,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
title: this.$config.getAppSetting("app_name") + `${this.pageData.goods.title}系列`,
|
title: this.$config.getAppSetting("app_name") + `${this.pageData.goods.title}系列`,
|
||||||
imageUrl: this.pageData.goods.imgurl_detail,
|
imageUrl: this.pageData.goods.imgurl_detail,
|
||||||
path: '/pages/shouye/detail_wuxian' +
|
path: '/pages/main/detail_wuxian' +
|
||||||
this.$c.qs({
|
this.$c.qs({
|
||||||
goods_id: this.pageData.goods.id,
|
goods_id: this.pageData.goods.id,
|
||||||
goods_num: this.pageData.goods.num,
|
goods_num: this.pageData.goods.num,
|
||||||
|
|
@ -476,7 +476,7 @@ export default {
|
||||||
|
|
||||||
toCoupon() {
|
toCoupon() {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/user/coupon',
|
url: '/pages/users/coupon',
|
||||||
query: {
|
query: {
|
||||||
type: 2,
|
type: 2,
|
||||||
total_price: this.orderData.order_total
|
total_price: this.orderData.order_total
|
||||||
|
|
@ -121,7 +121,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import lffBarrage from "@/components/lff-barrage/lff-barrage.vue";
|
|
||||||
import FloatBall from "@/components/float-ball/FloatBall.vue";
|
import FloatBall from "@/components/float-ball/FloatBall.vue";
|
||||||
import {
|
import {
|
||||||
getAdvert,
|
getAdvert,
|
||||||
|
|
@ -129,7 +129,7 @@
|
||||||
} from "../../common/server/config";
|
} from "../../common/server/config";
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
lffBarrage,
|
|
||||||
FloatBall
|
FloatBall
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -207,7 +207,7 @@
|
||||||
imageUrl: imageUrl,
|
imageUrl: imageUrl,
|
||||||
title: this.$config.getAppSetting("app_name") + ",正版潮玩手办一番赏",
|
title: this.$config.getAppSetting("app_name") + ",正版潮玩手办一番赏",
|
||||||
|
|
||||||
path: "/pages/shouye/index?pid=" + uni.getStorageSync("userinfo").ID,
|
path: "/pages/main/index?pid=" + uni.getStorageSync("userinfo").ID,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
|
@ -340,14 +340,14 @@
|
||||||
},
|
},
|
||||||
todetails(e) {
|
todetails(e) {
|
||||||
// 无限赏
|
// 无限赏
|
||||||
let url = "/pages/shouye/detail";
|
let url = "/pages/main/detail";
|
||||||
let params = {
|
let params = {
|
||||||
goods_id: e.id,
|
goods_id: e.id,
|
||||||
// type_text: e.type_text
|
// type_text: e.type_text
|
||||||
};
|
};
|
||||||
|
|
||||||
if (e.type == 2 || e.type == 8 || e.type == 16) {
|
if (e.type == 2 || e.type == 8 || e.type == 16) {
|
||||||
url = "/pages/shouye/detail_wuxian";
|
url = "/pages/main/detail_wuxian";
|
||||||
}
|
}
|
||||||
|
|
||||||
if (e.type == 9) {
|
if (e.type == 9) {
|
||||||
|
|
@ -369,10 +369,10 @@
|
||||||
},
|
},
|
||||||
|
|
||||||
toRanking() {
|
toRanking() {
|
||||||
this.$customRouter.navigateTo("/pages/shouye/ranking");
|
this.$customRouter.navigateTo("/pages/main/ranking");
|
||||||
},
|
},
|
||||||
toyaqingRanking() {
|
toyaqingRanking() {
|
||||||
this.$customRouter.navigateTo("/pages/shouye/invite_ranking");
|
this.$customRouter.navigateTo("/pages/main/invite_ranking");
|
||||||
},
|
},
|
||||||
|
|
||||||
jumapSlots() {
|
jumapSlots() {
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="bottom-btn">
|
<view class="bottom-btn">
|
||||||
<view class="invite-btn" @click="$c.nav('/pages/user/tui-guang')">
|
<view class="invite-btn" @click="$c.nav('/pages/users/tui-guang')">
|
||||||
<text>立即邀请</text>
|
<text>立即邀请</text>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -206,7 +206,7 @@ export default {
|
||||||
uni.removeStorageSync('userinfo');
|
uni.removeStorageSync('userinfo');
|
||||||
// uni.removeStorageSync('test_mode_status');
|
// uni.removeStorageSync('test_mode_status');
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
} else if (res.cancel) {
|
} else if (res.cancel) {
|
||||||
console.log('用户点击取消');
|
console.log('用户点击取消');
|
||||||
|
|
|
||||||
|
|
@ -148,7 +148,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
imageUrl: imageUrl,
|
imageUrl: imageUrl,
|
||||||
title: "友达上线,来就送!",
|
title: "友达上线,来就送!",
|
||||||
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
|
path: '/pages/main/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
|
|
@ -1,569 +0,0 @@
|
||||||
<template>
|
|
||||||
<view class="all">
|
|
||||||
<!-- 小程序登录界面 -->
|
|
||||||
<view v-if="isCanUse && isMpWeixin">
|
|
||||||
<view>
|
|
||||||
<view class="header">
|
|
||||||
<image :src="$img1('common/logo.png?x=1')"></image>
|
|
||||||
</view>
|
|
||||||
<view class="content">
|
|
||||||
<view>申请获取以下权限</view>
|
|
||||||
<text style="color: #979797;">获得你的公开信息</text>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view @click="isAgree = !isAgree" class="agree">
|
|
||||||
<view class="icon">
|
|
||||||
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
|
|
||||||
|
|
||||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="agree-r">
|
|
||||||
我已阅读并同意
|
|
||||||
<text @click.stop="$customRouter.navigateTo('/pages/guize/guize', {type: 4})">
|
|
||||||
《用户协议》
|
|
||||||
</text>
|
|
||||||
和
|
|
||||||
<text @click.stop="$customRouter.navigateTo('/pages/guize/guize', {type: 5})">
|
|
||||||
《隐私政策》
|
|
||||||
</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="btn-list">
|
|
||||||
<view @click="navigateBack()" class="cancel">
|
|
||||||
拒绝
|
|
||||||
</view>
|
|
||||||
<button class="bottom center" type="primary" withCredentials="true" lang="zh_CN"
|
|
||||||
@click="getUserProfile">
|
|
||||||
<text>授权登录</text>
|
|
||||||
</button>
|
|
||||||
</view>
|
|
||||||
<view style="font-size: 20rpx;color: #979797;position: fixed;bottom: 20rpx;right:47rpx;">version:v1.0.3
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<!-- H5手机号登录界面 -->
|
|
||||||
<view v-if="isCanUse && !isMpWeixin">
|
|
||||||
<view>
|
|
||||||
<view class="header">
|
|
||||||
<image :src="$img1('common/logo.png?x=1')"></image>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="h5-login-form">
|
|
||||||
<view class="input-item">
|
|
||||||
<input type="number" v-model="mobile" placeholder="请输入手机号" maxlength="11" class="phone-input" />
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="input-item code-item">
|
|
||||||
<input type="number" v-model="verifyCode" placeholder="请输入验证码" maxlength="6"
|
|
||||||
class="code-input" />
|
|
||||||
<view @click="sendVerifyCode" class="send-code-btn" :class="{ disabled: countdown > 0 }">
|
|
||||||
{{ countdown > 0 ? countdown + '秒' : '发送验证码' }}
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view @click="isAgree = !isAgree" class="agree">
|
|
||||||
<view class="icon">
|
|
||||||
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
|
|
||||||
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
|
||||||
</view>
|
|
||||||
<view class="agree-r">
|
|
||||||
我已阅读并同意
|
|
||||||
<text @click.stop="$platform.getUserAgreement()">
|
|
||||||
《用户协议》
|
|
||||||
</text>
|
|
||||||
和
|
|
||||||
<text @click.stop="$platform.getPrivacyAgreement()">
|
|
||||||
《隐私政策》
|
|
||||||
</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view class="btn-list">
|
|
||||||
<view @click="navigateBack()" class="cancel">
|
|
||||||
拒绝
|
|
||||||
</view>
|
|
||||||
<view class="bottom center" @click="phoneLogin">
|
|
||||||
<text>登录</text>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
|
|
||||||
<view style="font-size: 20rpx;color: #979797;position: fixed;bottom: 20rpx;right:47rpx;">version:v1.0.3
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</view>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
export default {
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
z_imgPath: this.$z_img2,
|
|
||||||
SessionKey: '',
|
|
||||||
OpenId: '',
|
|
||||||
nickName: null,
|
|
||||||
avatarUrl: null,
|
|
||||||
isCanUse: uni.getStorageSync('isCanUse') || true, //默认为true
|
|
||||||
code: '',
|
|
||||||
isAgree: false,
|
|
||||||
// H5手机号登录相关数据
|
|
||||||
isMpWeixin: false, // 是否为小程序环境
|
|
||||||
mobile: '', // 手机号
|
|
||||||
verifyCode: '', // 验证码
|
|
||||||
countdown: 0, // 发送验证码倒计时
|
|
||||||
timer: null, // 倒计时定时器
|
|
||||||
codeSent: false // 是否已发送验证码
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onLoad(option) {
|
|
||||||
// 判断当前环境
|
|
||||||
// #ifdef MP
|
|
||||||
this.isMpWeixin = true;
|
|
||||||
// #endif
|
|
||||||
|
|
||||||
//默认加载
|
|
||||||
if (option != null) {
|
|
||||||
if (option.code != null) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
onUnload() {
|
|
||||||
// 清除定时器
|
|
||||||
if (this.timer) {
|
|
||||||
clearInterval(this.timer);
|
|
||||||
this.timer = null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
//返回上一页
|
|
||||||
navigateBack() {
|
|
||||||
uni.navigateBack({
|
|
||||||
delta: 1,
|
|
||||||
fail: () => {
|
|
||||||
// 如果没有上一页,则跳转到首页
|
|
||||||
this.$customRouter.navigateTo('/pages/shouye/index', {}, 'switchTab');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
//第一授权获取用户信息===》按钮触发
|
|
||||||
getUserProfile(e) {
|
|
||||||
if (!this.isAgree) {
|
|
||||||
return uni.showToast({
|
|
||||||
title: '请阅读并同意《用户协议》和《隐私政策》',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// #ifdef MP
|
|
||||||
this.wxUserProfile();
|
|
||||||
// #endif
|
|
||||||
},
|
|
||||||
// 发送验证码
|
|
||||||
async sendVerifyCode() {
|
|
||||||
// 如果正在倒计时,不允许重复发送
|
|
||||||
if (this.countdown > 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查是否同意协议
|
|
||||||
if (!this.isAgree) {
|
|
||||||
return uni.showToast({
|
|
||||||
title: '请阅读并同意《用户协议》和《隐私政策》',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 验证手机号
|
|
||||||
if (!this.mobile || !/^1\d{10}$/.test(this.mobile)) {
|
|
||||||
return uni.showToast({
|
|
||||||
title: '请输入正确的手机号',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发送验证码请求
|
|
||||||
try {
|
|
||||||
const res = await this.$request.post('v2/account/sendSms', {
|
|
||||||
phone: this.mobile
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res.status == 1) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '验证码已发送',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
|
|
||||||
// 标记已发送验证码(仅当前会话有效)
|
|
||||||
this.codeSent = true;
|
|
||||||
|
|
||||||
// 开始倒计时,使用接口返回的时间
|
|
||||||
this.countdown = res.data || 60; // 使用返回的秒数,默认60秒
|
|
||||||
this.timer = setInterval(() => {
|
|
||||||
this.countdown--;
|
|
||||||
if (this.countdown <= 0) {
|
|
||||||
clearInterval(this.timer);
|
|
||||||
this.timer = null;
|
|
||||||
}
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
uni.showToast({
|
|
||||||
title: res.msg || '发送失败,请稍后重试',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
uni.showToast({
|
|
||||||
title: '发送验证码失败,请稍后重试',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
console.error('发送验证码失败:', error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
// 手机号登录
|
|
||||||
async phoneLogin() {
|
|
||||||
// 验证表单
|
|
||||||
if (!this.isAgree) {
|
|
||||||
return uni.showToast({
|
|
||||||
title: '请阅读并同意《用户协议》和《隐私政策》',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.mobile || !/^1\d{10}$/.test(this.mobile)) {
|
|
||||||
return uni.showToast({
|
|
||||||
title: '请输入正确的手机号',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!this.verifyCode) {
|
|
||||||
return uni.showToast({
|
|
||||||
title: '请输入验证码',
|
|
||||||
icon: 'none'
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// 检查当前会话中是否发送过验证码
|
|
||||||
// if (!this.codeSent) {
|
|
||||||
// return uni.showToast({
|
|
||||||
// title: '请先发送验证码',
|
|
||||||
// icon: 'none'
|
|
||||||
// });
|
|
||||||
// }
|
|
||||||
|
|
||||||
// 发送登录请求
|
|
||||||
try {
|
|
||||||
const res = await this.$request.post('mobileLogin', {
|
|
||||||
mobile: this.mobile,
|
|
||||||
code: this.verifyCode,
|
|
||||||
pid: uni.getStorageSync('pid')
|
|
||||||
});
|
|
||||||
|
|
||||||
if (res.status == 1) {
|
|
||||||
uni.setStorageSync('token', res.data);
|
|
||||||
this.$c.msg("登录成功");
|
|
||||||
|
|
||||||
// 检查重定向URL
|
|
||||||
const redirectUrl = uni.getStorageSync('redirect');
|
|
||||||
|
|
||||||
if (redirectUrl) {
|
|
||||||
// 清除重定向信息
|
|
||||||
uni.removeStorageSync('redirect');
|
|
||||||
// 使用公共方法处理重定向
|
|
||||||
this.handleRedirect(redirectUrl);
|
|
||||||
} else {
|
|
||||||
// 无重定向页面,检查是否需要绑定手机号
|
|
||||||
setTimeout(() => {
|
|
||||||
this.getdata();
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.$c.msg("登录失败!" + res.msg);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
// this.$c.msg("登录请求失败,请稍后重试");
|
|
||||||
console.error('登录失败:', error);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
/**
|
|
||||||
* 处理登录成功后的重定向逻辑
|
|
||||||
* @param {String} redirectUrl 重定向URL
|
|
||||||
*/
|
|
||||||
handleRedirect(redirectUrl) {
|
|
||||||
let that = this;
|
|
||||||
|
|
||||||
// 获取当前页面栈
|
|
||||||
const pages = getCurrentPages();
|
|
||||||
|
|
||||||
// 检查是否有上一页,以及redirect URL是否与上一页相同
|
|
||||||
if (pages.length > 1) {
|
|
||||||
const prevPage = pages[pages.length - 2];
|
|
||||||
// 构建完整的上一页路径(带参数)
|
|
||||||
let prevPageUrl = '/' + prevPage.route;
|
|
||||||
if (prevPage.options && Object.keys(prevPage.options).length > 0) {
|
|
||||||
const paramStr = Object.keys(prevPage.options)
|
|
||||||
.map(key => `${key}=${prevPage.options[key]}`)
|
|
||||||
.join('&');
|
|
||||||
prevPageUrl += '?' + paramStr;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 比较redirect URL和上一页URL
|
|
||||||
const redirectUrlPath = redirectUrl.split('?')[0];
|
|
||||||
const prevPageUrlPath = prevPageUrl.split('?')[0];
|
|
||||||
|
|
||||||
if (redirectUrlPath === prevPageUrlPath) {
|
|
||||||
// 如果路径相同,直接返回上一页
|
|
||||||
console.log('重定向URL与上一页相同,直接返回');
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.navigateBack();
|
|
||||||
}, 1000);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 重定向到指定URL
|
|
||||||
setTimeout(() => {
|
|
||||||
that.$customRouter.navigateTo(redirectUrl).catch(err => {
|
|
||||||
console.error('重定向跳转失败:', err)
|
|
||||||
// 失败时跳转到首页
|
|
||||||
that.$customRouter.navigateTo('/pages/user/index')
|
|
||||||
})
|
|
||||||
}, 1000);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
async wxUserProfile() {
|
|
||||||
try {
|
|
||||||
const profileRes = await new Promise((resolve, reject) => {
|
|
||||||
uni.getUserProfile({
|
|
||||||
desc: '用于向用户发送商品',
|
|
||||||
lang: 'zh_CN',
|
|
||||||
success: resolve,
|
|
||||||
fail: reject,
|
|
||||||
complete: (e) => {
|
|
||||||
console.log(e, '用于向用户发送商品');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
const loginRes = await new Promise((resolve, reject) => {
|
|
||||||
uni.login({
|
|
||||||
provider: 'weixin',
|
|
||||||
success: resolve,
|
|
||||||
fail: (e) => {
|
|
||||||
this.$c.msg("登录失败,网络错误!" + e.msg);
|
|
||||||
console.log(e, '登录失败', e);
|
|
||||||
reject(e);
|
|
||||||
},
|
|
||||||
complete: (e) => {
|
|
||||||
console.log(e, '登录');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
|
||||||
const res = await this.$request.post('login', {
|
|
||||||
code: loginRes.code,
|
|
||||||
nickname: '',
|
|
||||||
headimg: '',
|
|
||||||
pid: uni.getStorageSync('pid')
|
|
||||||
});
|
|
||||||
console.log(res, '登录成功');
|
|
||||||
|
|
||||||
if (res.status == 1) {
|
|
||||||
uni.setStorageSync('token', res.data);
|
|
||||||
this.$c.msg("登录成功");
|
|
||||||
|
|
||||||
// 检查重定向URL
|
|
||||||
const redirectUrl = uni.getStorageSync('redirect');
|
|
||||||
|
|
||||||
if (redirectUrl) {
|
|
||||||
// 清除重定向信息
|
|
||||||
uni.removeStorageSync('redirect');
|
|
||||||
|
|
||||||
// 使用公共方法处理重定向
|
|
||||||
this.handleRedirect(redirectUrl);
|
|
||||||
} else {
|
|
||||||
// 无重定向页面,检查是否需要绑定手机号
|
|
||||||
setTimeout(() => {
|
|
||||||
this.getdata();
|
|
||||||
}, 1000);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.$c.msg("登录失败!" + res.msg);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('请求登录失败:', error);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('微信登录失败:', error);
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
this.$c.msg("登录失败,申请获取微信用户数据失败");
|
|
||||||
console.log(error, '获取微信用户数据失败');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
async getdata() {
|
|
||||||
try {
|
|
||||||
const res = await this.$request.post('user');
|
|
||||||
if (res.status == 1 && res.data.userinfo != null && res.data.userinfo.mobile_is == 0) {
|
|
||||||
console.log("判断用户有没有手机号", res.data.userinfo.mobile_is);
|
|
||||||
// 使用新的路由守卫方法跳转到绑定页面
|
|
||||||
this.$customRouter.navigateTo('/pages/user/bangding', {}, 'navigateTo');
|
|
||||||
} else {
|
|
||||||
// 使用新的路由守卫方法跳转到用户首页
|
|
||||||
this.$customRouter.navigateTo('/pages/user/index', {}, 'navigateTo');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error('获取用户数据失败:', error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
.all {
|
|
||||||
min-height: 100vh;
|
|
||||||
background-color: #FFFFFF;
|
|
||||||
// background: url($imgurl+'common/pageBg1.png') no-repeat 0 0 / 100% auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header {
|
|
||||||
margin: 0 0 90rpx 50rpx;
|
|
||||||
padding: 90rpx 0 0;
|
|
||||||
border-bottom: 1px solid #E8E8E8;
|
|
||||||
text-align: center;
|
|
||||||
width: 650rpx;
|
|
||||||
height: 300rpx;
|
|
||||||
line-height: 450rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.header image {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 200rpx;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content {
|
|
||||||
margin-left: 50rpx;
|
|
||||||
margin-bottom: 90rpx;
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content text {
|
|
||||||
display: block;
|
|
||||||
margin-top: 28rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
// H5登录表单样式
|
|
||||||
.h5-login-form {
|
|
||||||
padding: 0 50rpx;
|
|
||||||
|
|
||||||
.input-item {
|
|
||||||
height: 90rpx;
|
|
||||||
border-bottom: 1px solid #E8E8E8;
|
|
||||||
margin-bottom: 40rpx;
|
|
||||||
|
|
||||||
input {
|
|
||||||
height: 100%;
|
|
||||||
width: 100%;
|
|
||||||
font-size: 28rpx;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.code-item {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
.code-input {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.send-code-btn {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 70rpx;
|
|
||||||
background-color: #333333;
|
|
||||||
color: #CDEF27;
|
|
||||||
font-size: 24rpx;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
border-radius: 12rpx;
|
|
||||||
|
|
||||||
&.disabled {
|
|
||||||
background-color: #cccccc;
|
|
||||||
color: #ffffff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.agree {
|
|
||||||
display: flex;
|
|
||||||
padding: 0 50rpx;
|
|
||||||
margin: 40rpx 0;
|
|
||||||
|
|
||||||
.icon {
|
|
||||||
width: 32rpx;
|
|
||||||
height: 32rpx;
|
|
||||||
}
|
|
||||||
|
|
||||||
.agree-r {
|
|
||||||
flex: 1;
|
|
||||||
word-wrap: break-word;
|
|
||||||
word-break: break-all;
|
|
||||||
padding-left: 20rpx;
|
|
||||||
line-height: 32rpx;
|
|
||||||
|
|
||||||
font-size: 20rpx;
|
|
||||||
color: #999999;
|
|
||||||
|
|
||||||
text {
|
|
||||||
color: #333333;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-list {
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-evenly;
|
|
||||||
padding: 50rpx 0 0;
|
|
||||||
|
|
||||||
.cancel {
|
|
||||||
width: 200rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #333333;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
background-color: #CDEF27;
|
|
||||||
// filter: grayscale(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bottom {
|
|
||||||
background: #333333;
|
|
||||||
margin: 0;
|
|
||||||
width: 416rpx;
|
|
||||||
height: 80rpx;
|
|
||||||
text-align: center;
|
|
||||||
box-sizing: border-box;
|
|
||||||
border-radius: 16rpx;
|
|
||||||
font-size: 28rpx;
|
|
||||||
color: #CDEF27;
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
@ -44,7 +44,7 @@ export default {
|
||||||
uni.navigateBack({
|
uni.navigateBack({
|
||||||
fail: function() {
|
fail: function() {
|
||||||
// 如果返回失败,表示没有上一页,则跳转到首页
|
// 如果返回失败,表示没有上一页,则跳转到首页
|
||||||
that.$customRouter.navigateTo('/pages/user/index', {}, 'reLaunch');
|
that.$customRouter.navigateTo('/pages/users/index', {}, 'reLaunch');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -79,7 +79,7 @@ export default {
|
||||||
uni.navigateBack({
|
uni.navigateBack({
|
||||||
fail: function() {
|
fail: function() {
|
||||||
// 如果返回失败,表示没有上一页,则跳转到首页
|
// 如果返回失败,表示没有上一页,则跳转到首页
|
||||||
that.$customRouter.navigateTo('/pages/user/index', {}, 'reLaunch');
|
that.$customRouter.navigateTo('/pages/users/index', {}, 'reLaunch');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 1000)
|
}, 1000)
|
||||||
|
|
@ -83,7 +83,7 @@
|
||||||
}
|
}
|
||||||
this.closePop();
|
this.closePop();
|
||||||
uni.switchTab({
|
uni.switchTab({
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
357
pages/users/collect.vue
Normal file
357
pages/users/collect.vue
Normal file
|
|
@ -0,0 +1,357 @@
|
||||||
|
<template>
|
||||||
|
<view class="content">
|
||||||
|
<uni-nav-bar left-icon="left" title="我的收藏" color="#000000" backgroundColor="transparent" :fixed="true"
|
||||||
|
:statusBar="true" :border="false" @clickLeft="$c.back"></uni-nav-bar>
|
||||||
|
|
||||||
|
<!-- 顶部标签栏 -->
|
||||||
|
<scroll-view class="tab" scroll-x>
|
||||||
|
<view class="tab-item" v-for="(item, i) in tabList" :key="i" :class="{ active: tabCur === i }"
|
||||||
|
@click="tabChange(i)">
|
||||||
|
{{ item.title }}
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
|
||||||
|
<!-- 列表区域 -->
|
||||||
|
<mescroll-body ref="mescrollRef" @init="mescrollInit" @down="downCallback" @up="getList" :down="downOption"
|
||||||
|
:up="upOption">
|
||||||
|
<view class="list" v-if="listData.length > 0">
|
||||||
|
<view class="list-item" v-for="(item, i) in listData" :key="i" @click="toDetail(item)">
|
||||||
|
<view class="pic">
|
||||||
|
<image class="pic-img" :src="item.imgurl" mode="aspectFill" lazy-load></image>
|
||||||
|
</view>
|
||||||
|
<view class="tag" :style="{ backgroundImage: `url(${$img1('common/label1.png')})` }">
|
||||||
|
<text>{{ tabList[tabCur].title }}</text>
|
||||||
|
</view>
|
||||||
|
<view class="title ellipsis">{{ item.goods_title }}</view>
|
||||||
|
|
||||||
|
<view class="price-box">
|
||||||
|
<view class="price">
|
||||||
|
¥<text>{{ item.goods_price }}</text>
|
||||||
|
</view>
|
||||||
|
<view v-if="item.stock" class="stock">
|
||||||
|
<view class="stock-num">{{ item.surplus_stock }}/{{ item.stock }}</view>
|
||||||
|
<image class="stock-icon" :src="$img1('index/box.png')" lazy-load></image>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- 空状态 -->
|
||||||
|
<view class="empty-state" v-if="listData.length === 0 && !isLoading">
|
||||||
|
<image class="empty-image" :src="$img1('common/empty.png')" mode="aspectFit"></image>
|
||||||
|
<text class="empty-text">暂无收藏内容</text>
|
||||||
|
</view>
|
||||||
|
</mescroll-body>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
// 下拉刷新配置
|
||||||
|
downOption: {
|
||||||
|
auto: false,
|
||||||
|
},
|
||||||
|
// 上拉加载配置
|
||||||
|
upOption: {
|
||||||
|
auto: true,
|
||||||
|
page: {
|
||||||
|
size: 10, // 每页数据数量
|
||||||
|
},
|
||||||
|
noMoreSize: 5, // 如果列表已无数据,可设置列表的总数量要大于等于5条才显示无更多数据
|
||||||
|
empty: {
|
||||||
|
use: false, // 使用自定义的空状态
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tabList: [], // 标签列表
|
||||||
|
tabCur: 0, // 当前选中标签索引
|
||||||
|
listData: [], // 列表数据
|
||||||
|
isLoading: true, // 是否正在加载
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
created() {
|
||||||
|
// 获取商品类型列表
|
||||||
|
this.initTabList();
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
/**
|
||||||
|
* 初始化标签列表
|
||||||
|
*/
|
||||||
|
initTabList() {
|
||||||
|
const tabList = this.$config.getGoodType();
|
||||||
|
// 过滤掉id为0的选项
|
||||||
|
this.tabList = tabList.filter((item) => item.id !== 0);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化mescroll对象
|
||||||
|
* @param {Object} mescroll mescroll实例
|
||||||
|
*/
|
||||||
|
mescrollInit(mescroll) {
|
||||||
|
this.mescroll = mescroll;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 下拉刷新回调
|
||||||
|
*/
|
||||||
|
downCallback() {
|
||||||
|
this.mescroll.resetUpScroll();
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 跳转到详情页
|
||||||
|
* @param {Object} item 商品项
|
||||||
|
*/
|
||||||
|
toDetail(item) {
|
||||||
|
let url = "/pages/main/detail";
|
||||||
|
|
||||||
|
// 根据商品类型跳转到不同详情页
|
||||||
|
if (item.type === 2 || item.type === 8) {
|
||||||
|
url = "/pages/main/detail_wuxian";
|
||||||
|
} else if (item.type === 9) {
|
||||||
|
url = "/package/index/lian-ji";
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$c.to({
|
||||||
|
url,
|
||||||
|
query: {
|
||||||
|
goods_id: item.goods_id,
|
||||||
|
type_text: this.tabList[this.tabCur].title,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 切换标签
|
||||||
|
* @param {Number} index 标签索引
|
||||||
|
*/
|
||||||
|
tabChange(index) {
|
||||||
|
if (this.tabCur === index) return;
|
||||||
|
|
||||||
|
this.tabCur = index;
|
||||||
|
this.listData = [];
|
||||||
|
this.isLoading = true;
|
||||||
|
|
||||||
|
// 重置列表并滚动到顶部
|
||||||
|
this.mescroll.resetUpScroll();
|
||||||
|
this.mescroll.scrollTo(0, 0);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取收藏列表数据
|
||||||
|
* @param {Object} params 分页参数
|
||||||
|
*/
|
||||||
|
getList({ num, size }) {
|
||||||
|
this.isLoading = true;
|
||||||
|
|
||||||
|
// 使用Promise方式调用API
|
||||||
|
this.$request
|
||||||
|
.post("listCollect", {
|
||||||
|
page: num,
|
||||||
|
type: this.tabList[this.tabCur].id,
|
||||||
|
})
|
||||||
|
.then((res) => {
|
||||||
|
this.isLoading = false;
|
||||||
|
|
||||||
|
if (res.status === 1) {
|
||||||
|
// 第一页时清空数据
|
||||||
|
if (num === 1) {
|
||||||
|
this.listData = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 追加数据
|
||||||
|
this.listData = this.listData.concat(res.data.data || []);
|
||||||
|
|
||||||
|
// 更新分页状态
|
||||||
|
this.mescroll.endByPage(
|
||||||
|
res.data.data ? res.data.data.length : 0,
|
||||||
|
res.data.last_page || 1
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
this.mescroll.endErr();
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg || "加载失败",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
this.isLoading = false;
|
||||||
|
this.mescroll.endErr();
|
||||||
|
uni.showToast({
|
||||||
|
title: "网络请求失败",
|
||||||
|
icon: "none",
|
||||||
|
});
|
||||||
|
console.error(err);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.content {
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
min-height: 100vh;
|
||||||
|
|
||||||
|
// 顶部标签栏
|
||||||
|
.tab {
|
||||||
|
white-space: nowrap;
|
||||||
|
padding: 15rpx 0;
|
||||||
|
|
||||||
|
.tab-item {
|
||||||
|
width: 88rpx;
|
||||||
|
height: 40rpx;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin-left: 30rpx;
|
||||||
|
background-color: #ffffff;
|
||||||
|
font-size: 20rpx;
|
||||||
|
border-radius: 8rpx;
|
||||||
|
color: #333333;
|
||||||
|
transition: all 0.2s;
|
||||||
|
|
||||||
|
&:last-child {
|
||||||
|
margin-right: 30rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.active {
|
||||||
|
background-color: #e6f791;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 商品列表
|
||||||
|
.list {
|
||||||
|
padding: 15rpx 30rpx 30rpx;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
|
.list-item {
|
||||||
|
width: 330rpx;
|
||||||
|
height: 487rpx;
|
||||||
|
margin-top: 30rpx;
|
||||||
|
position: relative;
|
||||||
|
background-color: #ffffff;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
overflow: hidden;
|
||||||
|
box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.05);
|
||||||
|
|
||||||
|
.pic {
|
||||||
|
width: 100%;
|
||||||
|
height: 332rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background-color: #f5f5f5;
|
||||||
|
border-radius: 16rpx 16rpx 0 0;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
|
.pic-img {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
border-radius: 16rpx 16rpx 0 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.tag {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 12rpx;
|
||||||
|
left: 12rpx;
|
||||||
|
width: 68rpx;
|
||||||
|
height: 32rpx;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
background-size: 100% 100%;
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 14rpx;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.title {
|
||||||
|
padding: 20rpx 20rpx 0;
|
||||||
|
font-size: 20rpx;
|
||||||
|
color: #333333;
|
||||||
|
line-height: 1.4;
|
||||||
|
height: 56rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.price-box {
|
||||||
|
padding: 20rpx 20rpx 10rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
|
||||||
|
.price {
|
||||||
|
font-size: 16rpx;
|
||||||
|
color: #333333;
|
||||||
|
|
||||||
|
text {
|
||||||
|
font-size: 24rpx;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.stock {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.stock-num {
|
||||||
|
font-size: 24rpx;
|
||||||
|
color: #cccccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.stock-icon {
|
||||||
|
width: 26rpx;
|
||||||
|
height: 26rpx;
|
||||||
|
margin-left: 6rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 空状态
|
||||||
|
.empty-state {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 100rpx 0;
|
||||||
|
|
||||||
|
.empty-image {
|
||||||
|
width: 200rpx;
|
||||||
|
height: 200rpx;
|
||||||
|
margin-bottom: 20rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.empty-text {
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 公共类
|
||||||
|
.ellipsis {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
display: -webkit-box;
|
||||||
|
-webkit-line-clamp: 2;
|
||||||
|
-webkit-box-orient: vertical;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -137,7 +137,7 @@
|
||||||
return {
|
return {
|
||||||
title: `快来领取${userInfo.nickname}分享的${this.pageData.num}赏币的${this.pageData.level_text}`,
|
title: `快来领取${userInfo.nickname}分享的${this.pageData.num}赏币的${this.pageData.level_text}`,
|
||||||
imageUrl: this.pageData.level_img,
|
imageUrl: this.pageData.level_img,
|
||||||
path: '/pages/user/index' +
|
path: '/pages/users/index' +
|
||||||
this.$c.qs({
|
this.$c.qs({
|
||||||
ou_coupon_id: this.pageData.id
|
ou_coupon_id: this.pageData.id
|
||||||
})
|
})
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
<!--
|
|
||||||
* @Date: 2023-06-30 09:27:33
|
|
||||||
* @LastEditTime: 2023-12-21 11:05:07
|
|
||||||
* @Description: content
|
|
||||||
-->
|
|
||||||
<template>
|
<template>
|
||||||
<view class="content">
|
<view class="content">
|
||||||
<uni-nav-bar left-icon="left" color="#000000" backgroundColor="transparent" :fixed="true" :statusBar="true"
|
<uni-nav-bar left-icon="left" color="#000000" backgroundColor="transparent" :fixed="true" :statusBar="true"
|
||||||
|
|
@ -106,7 +102,7 @@
|
||||||
methods: {
|
methods: {
|
||||||
toUse(item) {
|
toUse(item) {
|
||||||
if (this.pageType == 1) {
|
if (this.pageType == 1) {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/index', {}, 'switchTab');
|
this.$customRouter.navigateTo('/pages/main/index', {}, 'switchTab');
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.pageType == 2) {
|
if (this.pageType == 2) {
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="buy" @click="$c.to({ type: 3, url: '/pages/shouye/index' })">
|
<view class="buy" @click="$c.to({ type: 3, url: '/pages/main/index' })">
|
||||||
<text>去购买</text>
|
<text>去购买</text>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
|
@ -237,7 +237,7 @@
|
||||||
uni.setStorageSync('_qy_rule', this.pageData.danye_list)
|
uni.setStorageSync('_qy_rule', this.pageData.danye_list)
|
||||||
|
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/package/mine/qy-rule'
|
url: '/pages/other/qy-rule'
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -337,12 +337,12 @@
|
||||||
toPage(id) {
|
toPage(id) {
|
||||||
if (id == 1) {
|
if (id == 1) {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/user/tui-guang'
|
url: '/pages/users/tui-guang'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
type: 3,
|
type: 3,
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -219,13 +219,13 @@ export default {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
toorder(e) {
|
toorder(e) {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/detail', {
|
this.$customRouter.navigateTo('/pages/main/detail', {
|
||||||
goods_id: e,
|
goods_id: e,
|
||||||
goods_num: 1
|
goods_num: 1
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
towuliu(e) {
|
towuliu(e) {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/wuliu_detail', { id: e })
|
this.$customRouter.navigateTo('/pages/main/wuliu_detail', { id: e })
|
||||||
},
|
},
|
||||||
getlist(v) {
|
getlist(v) {
|
||||||
this.show = v
|
this.show = v
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view v-if="userinfo && getIsCheck()" class="lv-box align-center justify-between"
|
<view v-if="userinfo && getIsCheck()" class="lv-box align-center justify-between"
|
||||||
@click="$c.to({ url: '/package/mine/equity' })">
|
@click="$c.to({ url: '/pages/users/equity' })">
|
||||||
<text class="lv-box-dengji">LV.{{ userinfo.quan_yi_level.level }}</text>
|
<text class="lv-box-dengji">LV.{{ userinfo.quan_yi_level.level }}</text>
|
||||||
<view class="lv-box-ouqi column">
|
<view class="lv-box-ouqi column">
|
||||||
<text>
|
<text>
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
:strokeWidth="3"></cmd-progress>
|
:strokeWidth="3"></cmd-progress>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<text class="lv-box-detail center" @click="$c.to({ url: '/package/mine/equity' })">查看详情</text>
|
<text class="lv-box-detail center" @click="$c.to({ url: '/pages/users/equity' })">查看详情</text>
|
||||||
<image style="width: 206rpx; height: 206rpx; position: absolute; top: -40rpx; right: 8rpx;"
|
<image style="width: 206rpx; height: 206rpx; position: absolute; top: -40rpx; right: 8rpx;"
|
||||||
:src="$img1('my/ou.png')">
|
:src="$img1('my/ou.png')">
|
||||||
</image>
|
</image>
|
||||||
|
|
@ -51,22 +51,22 @@
|
||||||
|
|
||||||
<view v-if="getIsCheck('user_money')" class="money-card">
|
<view v-if="getIsCheck('user_money')" class="money-card">
|
||||||
<view class="other-num">
|
<view class="other-num">
|
||||||
<view v-if="zuanshi" class="other-item" @click="$c.to({ url: '/pages/user/yetx' })">
|
<view v-if="zuanshi" class="other-item" @click="$c.to({ url: '/pages/users/yetx' })">
|
||||||
<view class="title">{{ $config.getAppSetting('balance_name') }}</view>
|
<view class="title">{{ $config.getAppSetting('balance_name') }}</view>
|
||||||
<view class="flex row">
|
<view class="flex row">
|
||||||
<view class="num" style="">{{ formatNumber(userinfo.money) }}</view>
|
<view class="num" style="">{{ formatNumber(userinfo.money) }}</view>
|
||||||
<image @click.stop="$c.to({ url: '/pages/user/recharge-page' })"
|
<image @click.stop="$c.to({ url: '/pages/users/recharge-page' })"
|
||||||
:src="$img1('my/ic_recharge.png')" style="width: 83rpx; height: 48rpx; margin-left: 10rpx;"
|
:src="$img1('my/ic_recharge.png')" style="width: 83rpx; height: 48rpx; margin-left: 10rpx;"
|
||||||
mode=""></image>
|
mode=""></image>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="other-item" @click="$c.to({ url: '/pages/user/bi_jl' })">
|
<view class="other-item" @click="$c.to({ url: '/pages/users/bi_jl' })">
|
||||||
<view class="title">{{ $config.getAppSetting('currency1_name') }}</view>
|
<view class="title">{{ $config.getAppSetting('currency1_name') }}</view>
|
||||||
<view class="num" style="color: #333333;">{{ formatNumber(userinfo.integral) }}
|
<view class="num" style="color: #333333;">{{ formatNumber(userinfo.integral) }}
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="other-item" @click="$c.to({ url: '/pages/user/jf_jl' })">
|
<view class="other-item" @click="$c.to({ url: '/pages/users/jf_jl' })">
|
||||||
<view class="title">{{ $config.getAppSetting('currency2_name') }}</view>
|
<view class="title">{{ $config.getAppSetting('currency2_name') }}</view>
|
||||||
<view class="num" style="color: #333333;">{{ formatNumber(userinfo.money2) }}
|
<view class="num" style="color: #333333;">{{ formatNumber(userinfo.money2) }}
|
||||||
</view>
|
</view>
|
||||||
|
|
@ -187,7 +187,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
imageUrl: imageUrl,
|
imageUrl: imageUrl,
|
||||||
title: "友达赏,正版潮玩手办一番赏",
|
title: "友达赏,正版潮玩手办一番赏",
|
||||||
path: '/pages/user/index?pid=' + uni.getStorageSync('userinfo').ID
|
path: '/pages/users/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onShow() {
|
onShow() {
|
||||||
|
|
@ -209,13 +209,13 @@ export default {
|
||||||
toChange() {
|
toChange() {
|
||||||
var user = uni.getStorageSync('userinfo');
|
var user = uni.getStorageSync('userinfo');
|
||||||
if (user == null || user == "" || this.userinfo == '') {
|
if (user == null || user == "" || this.userinfo == '') {
|
||||||
uni.setStorageSync('redirect', '/pages/user/index');
|
uni.setStorageSync('redirect', '/pages/users/index');
|
||||||
this.$c.nav("/pages/user/login")
|
this.$c.nav("/pages/users/login")
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/user/change'
|
url: '/pages/users/change'
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
getIsCheck(tag) {
|
getIsCheck(tag) {
|
||||||
|
|
@ -238,7 +238,7 @@ export default {
|
||||||
duration: 500,
|
duration: 500,
|
||||||
success: () => {
|
success: () => {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/package/mine/coupon-detail',
|
url: '/pages/users/coupon-detail',
|
||||||
query: {
|
query: {
|
||||||
id: coupon_id
|
id: coupon_id
|
||||||
}
|
}
|
||||||
|
|
@ -247,7 +247,7 @@ export default {
|
||||||
})
|
})
|
||||||
} else if (res.status == 2222) {
|
} else if (res.status == 2222) {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/package/mine/coupon-detail',
|
url: '/pages/users/coupon-detail',
|
||||||
query: {
|
query: {
|
||||||
id: coupon_id
|
id: coupon_id
|
||||||
}
|
}
|
||||||
|
|
@ -300,11 +300,11 @@ export default {
|
||||||
},
|
},
|
||||||
todetail(a) {
|
todetail(a) {
|
||||||
if (a.type == 2) {
|
if (a.type == 2) {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/detail_wuxian', {
|
this.$customRouter.navigateTo('/pages/main/detail_wuxian', {
|
||||||
goods_id: a.goods_id
|
goods_id: a.goods_id
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.$customRouter.navigateTo('/pages/shouye/detail', {
|
this.$customRouter.navigateTo('/pages/main/detail', {
|
||||||
goods_id: a.goods_id,
|
goods_id: a.goods_id,
|
||||||
goods_num: a.num
|
goods_num: a.num
|
||||||
});
|
});
|
||||||
|
|
@ -334,12 +334,12 @@ export default {
|
||||||
toPage(id) {
|
toPage(id) {
|
||||||
if (id == 1) {
|
if (id == 1) {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/pages/user/tui-guang'
|
url: '/pages/users/tui-guang'
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
type: 3,
|
type: 3,
|
||||||
url: '/pages/shouye/index'
|
url: '/pages/main/index'
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
562
pages/users/login.vue
Normal file
562
pages/users/login.vue
Normal file
|
|
@ -0,0 +1,562 @@
|
||||||
|
<template>
|
||||||
|
<view class="all">
|
||||||
|
<!-- 小程序登录界面 -->
|
||||||
|
<view v-if="isCanUse && isMpWeixin">
|
||||||
|
<view>
|
||||||
|
<view class="header">
|
||||||
|
<image :src="$img1('common/logo.png?x=1')"></image>
|
||||||
|
</view>
|
||||||
|
<view class="content">
|
||||||
|
<view>申请获取以下权限</view>
|
||||||
|
<text style="color: #979797;">获得你的公开信息</text>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view @click="isAgree = !isAgree" class="agree">
|
||||||
|
<view class="icon">
|
||||||
|
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
|
||||||
|
|
||||||
|
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="agree-r">
|
||||||
|
我已阅读并同意
|
||||||
|
<text @click.stop="$customRouter.navigateTo('/pages/guize/guize', { type: 4 })">
|
||||||
|
《用户协议》
|
||||||
|
</text>
|
||||||
|
和
|
||||||
|
<text @click.stop="$customRouter.navigateTo('/pages/guize/guize', { type: 5 })">
|
||||||
|
《隐私政策》
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="btn-list">
|
||||||
|
<view @click="navigateBack()" class="cancel">
|
||||||
|
拒绝
|
||||||
|
</view>
|
||||||
|
<button class="bottom center" type="primary" withCredentials="true" lang="zh_CN"
|
||||||
|
@click="getUserProfile">
|
||||||
|
<text>授权登录</text>
|
||||||
|
</button>
|
||||||
|
</view>
|
||||||
|
<view style="font-size: 20rpx;color: #979797;position: fixed;bottom: 20rpx;right:47rpx;">version:v1.0.3
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<!-- H5手机号登录界面 -->
|
||||||
|
<view v-if="isCanUse && !isMpWeixin">
|
||||||
|
<view>
|
||||||
|
<view class="header">
|
||||||
|
<image :src="$img1('common/logo.png?x=1')"></image>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="h5-login-form">
|
||||||
|
<view class="input-item">
|
||||||
|
<input type="number" v-model="mobile" placeholder="请输入手机号" maxlength="11" class="phone-input" />
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="input-item code-item">
|
||||||
|
<input type="number" v-model="verifyCode" placeholder="请输入验证码" maxlength="6"
|
||||||
|
class="code-input" />
|
||||||
|
<view @click="sendVerifyCode" class="send-code-btn" :class="{ disabled: countdown > 0 }">
|
||||||
|
{{ countdown > 0 ? countdown + '秒' : '发送验证码' }}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view @click="isAgree = !isAgree" class="agree">
|
||||||
|
<view class="icon">
|
||||||
|
<image v-if="isAgree" :src="$img1('common/check_act.png')" lazy-load></image>
|
||||||
|
<image v-else :src="$img1('common/check.png')" lazy-load></image>
|
||||||
|
</view>
|
||||||
|
<view class="agree-r">
|
||||||
|
我已阅读并同意
|
||||||
|
<text @click.stop="$platform.getUserAgreement()">
|
||||||
|
《用户协议》
|
||||||
|
</text>
|
||||||
|
和
|
||||||
|
<text @click.stop="$platform.getPrivacyAgreement()">
|
||||||
|
《隐私政策》
|
||||||
|
</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view class="btn-list">
|
||||||
|
<view @click="navigateBack()" class="cancel">
|
||||||
|
拒绝
|
||||||
|
</view>
|
||||||
|
<view class="bottom center" @click="phoneLogin">
|
||||||
|
<text>登录</text>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
<view style="font-size: 20rpx;color: #979797;position: fixed;bottom: 20rpx;right:47rpx;">version:v1.0.3
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
z_imgPath: this.$z_img2,
|
||||||
|
SessionKey: '',
|
||||||
|
OpenId: '',
|
||||||
|
nickName: null,
|
||||||
|
avatarUrl: null,
|
||||||
|
isCanUse: uni.getStorageSync('isCanUse') || true, //默认为true
|
||||||
|
code: '',
|
||||||
|
isAgree: false,
|
||||||
|
// H5手机号登录相关数据
|
||||||
|
isMpWeixin: false, // 是否为小程序环境
|
||||||
|
mobile: '', // 手机号
|
||||||
|
verifyCode: '', // 验证码
|
||||||
|
countdown: 0, // 发送验证码倒计时
|
||||||
|
timer: null, // 倒计时定时器
|
||||||
|
codeSent: false // 是否已发送验证码
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onLoad(option) {
|
||||||
|
// 判断当前环境
|
||||||
|
// #ifdef MP
|
||||||
|
this.isMpWeixin = true;
|
||||||
|
// #endif
|
||||||
|
|
||||||
|
//默认加载
|
||||||
|
if (option != null) {
|
||||||
|
if (option.code != null) {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
onUnload() {
|
||||||
|
// 清除定时器
|
||||||
|
if (this.timer) {
|
||||||
|
clearInterval(this.timer);
|
||||||
|
this.timer = null;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
//返回上一页
|
||||||
|
navigateBack() {
|
||||||
|
uni.navigateBack({
|
||||||
|
delta: 1,
|
||||||
|
fail: () => {
|
||||||
|
// 如果没有上一页,则跳转到首页
|
||||||
|
this.$customRouter.navigateTo('/pages/main/index', {}, 'switchTab');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
},
|
||||||
|
//第一授权获取用户信息===》按钮触发
|
||||||
|
getUserProfile(e) {
|
||||||
|
if (!this.isAgree) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请阅读并同意《用户协议》和《隐私政策》',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// #ifdef MP
|
||||||
|
this.wxUserProfile();
|
||||||
|
// #endif
|
||||||
|
},
|
||||||
|
// 发送验证码
|
||||||
|
async sendVerifyCode() {
|
||||||
|
// 如果正在倒计时,不允许重复发送
|
||||||
|
if (this.countdown > 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 检查是否同意协议
|
||||||
|
if (!this.isAgree) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请阅读并同意《用户协议》和《隐私政策》',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 验证手机号
|
||||||
|
if (!this.mobile || !/^1\d{10}$/.test(this.mobile)) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请输入正确的手机号',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 发送验证码请求
|
||||||
|
try {
|
||||||
|
const res = await this.$request.post('v2/account/sendSms', {
|
||||||
|
phone: this.mobile
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.status == 1) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '验证码已发送',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
|
||||||
|
// 标记已发送验证码(仅当前会话有效)
|
||||||
|
this.codeSent = true;
|
||||||
|
|
||||||
|
// 开始倒计时,使用接口返回的时间
|
||||||
|
this.countdown = res.data || 60; // 使用返回的秒数,默认60秒
|
||||||
|
this.timer = setInterval(() => {
|
||||||
|
this.countdown--;
|
||||||
|
if (this.countdown <= 0) {
|
||||||
|
clearInterval(this.timer);
|
||||||
|
this.timer = null;
|
||||||
|
}
|
||||||
|
}, 1000);
|
||||||
|
} else {
|
||||||
|
uni.showToast({
|
||||||
|
title: res.msg || '发送失败,请稍后重试',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
uni.showToast({
|
||||||
|
title: '发送验证码失败,请稍后重试',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
console.error('发送验证码失败:', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// 手机号登录
|
||||||
|
async phoneLogin() {
|
||||||
|
// 验证表单
|
||||||
|
if (!this.isAgree) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请阅读并同意《用户协议》和《隐私政策》',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.mobile || !/^1\d{10}$/.test(this.mobile)) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请输入正确的手机号',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.verifyCode) {
|
||||||
|
return uni.showToast({
|
||||||
|
title: '请输入验证码',
|
||||||
|
icon: 'none'
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 发送登录请求
|
||||||
|
try {
|
||||||
|
const res = await this.$request.post('mobileLogin', {
|
||||||
|
mobile: this.mobile,
|
||||||
|
code: this.verifyCode,
|
||||||
|
pid: uni.getStorageSync('pid')
|
||||||
|
});
|
||||||
|
|
||||||
|
if (res.status == 1) {
|
||||||
|
uni.setStorageSync('token', res.data);
|
||||||
|
this.$c.msg("登录成功");
|
||||||
|
|
||||||
|
// 检查重定向URL
|
||||||
|
const redirectUrl = uni.getStorageSync('redirect');
|
||||||
|
|
||||||
|
if (redirectUrl) {
|
||||||
|
// 清除重定向信息
|
||||||
|
uni.removeStorageSync('redirect');
|
||||||
|
// 使用公共方法处理重定向
|
||||||
|
this.handleRedirect(redirectUrl);
|
||||||
|
} else {
|
||||||
|
// 无重定向页面,检查是否需要绑定手机号
|
||||||
|
setTimeout(() => {
|
||||||
|
this.getdata();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$c.msg("登录失败!" + res.msg);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
// this.$c.msg("登录请求失败,请稍后重试");
|
||||||
|
console.error('登录失败:', error);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* 处理登录成功后的重定向逻辑
|
||||||
|
* @param {String} redirectUrl 重定向URL
|
||||||
|
*/
|
||||||
|
handleRedirect(redirectUrl) {
|
||||||
|
let that = this;
|
||||||
|
|
||||||
|
// 获取当前页面栈
|
||||||
|
const pages = getCurrentPages();
|
||||||
|
|
||||||
|
// 检查是否有上一页,以及redirect URL是否与上一页相同
|
||||||
|
if (pages.length > 1) {
|
||||||
|
const prevPage = pages[pages.length - 2];
|
||||||
|
// 构建完整的上一页路径(带参数)
|
||||||
|
let prevPageUrl = '/' + prevPage.route;
|
||||||
|
if (prevPage.options && Object.keys(prevPage.options).length > 0) {
|
||||||
|
const paramStr = Object.keys(prevPage.options)
|
||||||
|
.map(key => `${key}=${prevPage.options[key]}`)
|
||||||
|
.join('&');
|
||||||
|
prevPageUrl += '?' + paramStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 比较redirect URL和上一页URL
|
||||||
|
const redirectUrlPath = redirectUrl.split('?')[0];
|
||||||
|
const prevPageUrlPath = prevPageUrl.split('?')[0];
|
||||||
|
|
||||||
|
if (redirectUrlPath === prevPageUrlPath) {
|
||||||
|
// 如果路径相同,直接返回上一页
|
||||||
|
console.log('重定向URL与上一页相同,直接返回');
|
||||||
|
setTimeout(() => {
|
||||||
|
uni.navigateBack();
|
||||||
|
}, 1000);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重定向到指定URL
|
||||||
|
setTimeout(() => {
|
||||||
|
that.$customRouter.navigateTo(redirectUrl).catch(err => {
|
||||||
|
console.error('重定向跳转失败:', err)
|
||||||
|
// 失败时跳转到首页
|
||||||
|
that.$customRouter.navigateTo('/pages/users/index')
|
||||||
|
})
|
||||||
|
}, 1000);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
async wxUserProfile() {
|
||||||
|
try {
|
||||||
|
const profileRes = await new Promise((resolve, reject) => {
|
||||||
|
uni.getUserProfile({
|
||||||
|
desc: '用于向用户发送商品',
|
||||||
|
lang: 'zh_CN',
|
||||||
|
success: resolve,
|
||||||
|
fail: reject,
|
||||||
|
complete: (e) => {
|
||||||
|
console.log(e, '用于向用户发送商品');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const loginRes = await new Promise((resolve, reject) => {
|
||||||
|
uni.login({
|
||||||
|
provider: 'weixin',
|
||||||
|
success: resolve,
|
||||||
|
fail: (e) => {
|
||||||
|
this.$c.msg("登录失败,网络错误!" + e.msg);
|
||||||
|
console.log(e, '登录失败', e);
|
||||||
|
reject(e);
|
||||||
|
},
|
||||||
|
complete: (e) => {
|
||||||
|
console.log(e, '登录');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
const res = await this.$request.post('login', {
|
||||||
|
code: loginRes.code,
|
||||||
|
nickname: '',
|
||||||
|
headimg: '',
|
||||||
|
pid: uni.getStorageSync('pid')
|
||||||
|
});
|
||||||
|
console.log(res, '登录成功');
|
||||||
|
|
||||||
|
if (res.status == 1) {
|
||||||
|
uni.setStorageSync('token', res.data);
|
||||||
|
this.$c.msg("登录成功");
|
||||||
|
|
||||||
|
// 检查重定向URL
|
||||||
|
const redirectUrl = uni.getStorageSync('redirect');
|
||||||
|
|
||||||
|
if (redirectUrl) {
|
||||||
|
// 清除重定向信息
|
||||||
|
uni.removeStorageSync('redirect');
|
||||||
|
|
||||||
|
// 使用公共方法处理重定向
|
||||||
|
this.handleRedirect(redirectUrl);
|
||||||
|
} else {
|
||||||
|
// 无重定向页面,检查是否需要绑定手机号
|
||||||
|
setTimeout(() => {
|
||||||
|
this.getdata();
|
||||||
|
}, 1000);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
this.$c.msg("登录失败!" + res.msg);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('请求登录失败:', error);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('微信登录失败:', error);
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
this.$c.msg("登录失败,申请获取微信用户数据失败");
|
||||||
|
console.log(error, '获取微信用户数据失败');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
async getdata() {
|
||||||
|
try {
|
||||||
|
const res = await this.$request.post('user');
|
||||||
|
if (res.status == 1 && res.data.userinfo != null && res.data.userinfo.mobile_is == 0) {
|
||||||
|
console.log("判断用户有没有手机号", res.data.userinfo.mobile_is);
|
||||||
|
// 使用新的路由守卫方法跳转到绑定页面
|
||||||
|
this.$customRouter.navigateTo('/pages/users/bangding', {}, 'navigateTo');
|
||||||
|
} else {
|
||||||
|
// 使用新的路由守卫方法跳转到用户首页
|
||||||
|
this.$customRouter.navigateTo('/pages/users/index', {}, 'navigateTo');
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('获取用户数据失败:', error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
.all {
|
||||||
|
min-height: 100vh;
|
||||||
|
background-color: #FFFFFF;
|
||||||
|
// background: url($imgurl+'common/pageBg1.png') no-repeat 0 0 / 100% auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header {
|
||||||
|
margin: 0 0 90rpx 50rpx;
|
||||||
|
padding: 90rpx 0 0;
|
||||||
|
border-bottom: 1px solid #E8E8E8;
|
||||||
|
text-align: center;
|
||||||
|
width: 650rpx;
|
||||||
|
height: 300rpx;
|
||||||
|
line-height: 450rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.header image {
|
||||||
|
width: 200rpx;
|
||||||
|
height: 200rpx;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-left: 50rpx;
|
||||||
|
margin-bottom: 90rpx;
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content text {
|
||||||
|
display: block;
|
||||||
|
margin-top: 28rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
// H5登录表单样式
|
||||||
|
.h5-login-form {
|
||||||
|
padding: 0 50rpx;
|
||||||
|
|
||||||
|
.input-item {
|
||||||
|
height: 90rpx;
|
||||||
|
border-bottom: 1px solid #E8E8E8;
|
||||||
|
margin-bottom: 40rpx;
|
||||||
|
|
||||||
|
input {
|
||||||
|
height: 100%;
|
||||||
|
width: 100%;
|
||||||
|
font-size: 28rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-item {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.code-input {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.send-code-btn {
|
||||||
|
width: 200rpx;
|
||||||
|
height: 70rpx;
|
||||||
|
background-color: #333333;
|
||||||
|
color: #CDEF27;
|
||||||
|
font-size: 24rpx;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
border-radius: 12rpx;
|
||||||
|
|
||||||
|
&.disabled {
|
||||||
|
background-color: #cccccc;
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.agree {
|
||||||
|
display: flex;
|
||||||
|
padding: 0 50rpx;
|
||||||
|
margin: 40rpx 0;
|
||||||
|
|
||||||
|
.icon {
|
||||||
|
width: 32rpx;
|
||||||
|
height: 32rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.agree-r {
|
||||||
|
flex: 1;
|
||||||
|
word-wrap: break-word;
|
||||||
|
word-break: break-all;
|
||||||
|
padding-left: 20rpx;
|
||||||
|
line-height: 32rpx;
|
||||||
|
|
||||||
|
font-size: 20rpx;
|
||||||
|
color: #999999;
|
||||||
|
|
||||||
|
text {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-list {
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
padding: 50rpx 0 0;
|
||||||
|
|
||||||
|
.cancel {
|
||||||
|
width: 200rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #333333;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
background-color: #CDEF27;
|
||||||
|
// filter: grayscale(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bottom {
|
||||||
|
background: #333333;
|
||||||
|
margin: 0;
|
||||||
|
width: 416rpx;
|
||||||
|
height: 80rpx;
|
||||||
|
text-align: center;
|
||||||
|
box-sizing: border-box;
|
||||||
|
border-radius: 16rpx;
|
||||||
|
font-size: 28rpx;
|
||||||
|
color: #CDEF27;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
@ -166,7 +166,7 @@
|
||||||
return {
|
return {
|
||||||
title: `快来领取${userInfo.nickname}分享的${item.num}赏币的${item.title}`,
|
title: `快来领取${userInfo.nickname}分享的${item.num}赏币的${item.title}`,
|
||||||
imageUrl: item.level_img,
|
imageUrl: item.level_img,
|
||||||
path: '/pages/user/index' +
|
path: '/pages/users/index' +
|
||||||
this.$c.qs({
|
this.$c.qs({
|
||||||
ou_coupon_id: item.id
|
ou_coupon_id: item.id
|
||||||
})
|
})
|
||||||
|
|
@ -189,7 +189,7 @@
|
||||||
var data = {
|
var data = {
|
||||||
title: `快来领取${userInfo.nickname}分享的${item.num}赏币的${item.title}`,
|
title: `快来领取${userInfo.nickname}分享的${item.num}赏币的${item.title}`,
|
||||||
imageUrl: item.level_img,
|
imageUrl: item.level_img,
|
||||||
path: '/pages/user/index' +
|
path: '/pages/users/index' +
|
||||||
this.$c.qs({
|
this.$c.qs({
|
||||||
ou_coupon_id: item.id
|
ou_coupon_id: item.id
|
||||||
})
|
})
|
||||||
|
|
@ -349,7 +349,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$c.to({
|
this.$c.to({
|
||||||
url: '/package/mine/coupon-detail',
|
url: '/pages/users/coupon-detail',
|
||||||
query: {
|
query: {
|
||||||
id: item.id
|
id: item.id
|
||||||
}
|
}
|
||||||
|
|
@ -149,7 +149,7 @@ export default {
|
||||||
return {
|
return {
|
||||||
imageUrl: imageUrl,
|
imageUrl: imageUrl,
|
||||||
title: "友达上线,来就送!",
|
title: "友达上线,来就送!",
|
||||||
path: '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
|
path: '/pages/main/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onLoad() {
|
onLoad() {
|
||||||
|
|
@ -179,7 +179,7 @@ export default {
|
||||||
methods: {
|
methods: {
|
||||||
yaoaing() {
|
yaoaing() {
|
||||||
uni.setClipboardData({
|
uni.setClipboardData({
|
||||||
data: window.location.origin + '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID
|
data: window.location.origin + '/pages/main/index?pid=' + uni.getStorageSync('userinfo').ID
|
||||||
});
|
});
|
||||||
this.$c.msg("链接已复制,快去分享吧~")
|
this.$c.msg("链接已复制,快去分享吧~")
|
||||||
},
|
},
|
||||||
|
|
@ -214,7 +214,7 @@ export default {
|
||||||
},
|
},
|
||||||
fenxiang() {
|
fenxiang() {
|
||||||
var image = this.$baseUrl + "/storage/topic/20240617/30a73c0d5061f700a66f653deeb60f6d.jpg";
|
var image = this.$baseUrl + "/storage/topic/20240617/30a73c0d5061f700a66f653deeb60f6d.jpg";
|
||||||
var path = '/pages/shouye/index?pid=' + uni.getStorageSync('userinfo').ID;
|
var path = '/pages/main/index?pid=' + uni.getStorageSync('userinfo').ID;
|
||||||
this.$c.$fenxiang('友达赏,正版潮玩手办一番赏', '', path, image);
|
this.$c.$fenxiang('友达赏,正版潮玩手办一番赏', '', path, image);
|
||||||
|
|
||||||
},
|
},
|
||||||
BIN
static/app-plus/no-data.png
Normal file
BIN
static/app-plus/no-data.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.6 KiB |
|
|
@ -35,7 +35,7 @@ export default {
|
||||||
computed: {
|
computed: {
|
||||||
// 图标
|
// 图标
|
||||||
icon() {
|
icon() {
|
||||||
return '/static/common/kong.png'
|
return '/static/app-plus/no-data.png'
|
||||||
if (this.option.icon != null) { // 此处不使用短路求值, 用于支持传空串不显示图标
|
if (this.option.icon != null) { // 此处不使用短路求值, 用于支持传空串不显示图标
|
||||||
return this.option.icon
|
return this.option.icon
|
||||||
} else{
|
} else{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user