dl_uniapp/pages/index.vue

342 lines
69 KiB
Vue
Raw Normal View History

2025-03-18 17:41:45 +08:00
<template>
2025-03-21 17:57:53 +08:00
<view class="content">
<!-- 主体区域 -->
2025-03-31 14:31:41 +08:00
<view class="content-body">
2025-03-21 17:57:53 +08:00
<!-- 通告列表页 -->
2025-05-08 16:20:41 +08:00
<notice-index ref="noticeIndex" :nowUserType="nowUserType" v-if="'home'==menuCode"
@openVip="openVip"></notice-index>
2025-05-09 16:48:02 +08:00
<mine-index ref="minePageCus" :key="nowUserType" :nowUserType="nowUserType" v-if="'my'==menuCode"
2025-04-11 15:08:25 +08:00
@refreshUserType="refreshUserType()"></mine-index>
2025-05-09 16:48:02 +08:00
<subscribe ref="subscribe" :nowUserType="nowUserType" v-if="'dingyue'==menuCode"></subscribe>
2025-05-08 16:56:52 +08:00
<my-notice ref="myNotice" :nowUserType="nowUserType"
v-if="'myNotice'==menuCode && '02'==nowUserType"></my-notice>
<my-notice-tg ref="myNoticeTg" :nowUserType="nowUserType"
v-if="'myNotice'==menuCode && '01'==nowUserType"></my-notice-tg>
2025-03-21 17:57:53 +08:00
</view>
2025-04-11 15:08:25 +08:00
<tabBarVue :menuCode="menuCode" :nowUserType="nowUserType" ref="tarBar" @changeMenu="changeMenu"></tabBarVue>
2025-04-21 13:57:36 +08:00
<!-- 普通弹窗 -->
<uni-popup ref="popup">
<view class="popup-content" @click="goVip">
<image src="@/static/VIP.png" mode="widthFix"></image>
</view>
</uni-popup>
2025-05-06 16:51:20 +08:00
<!-- 普通弹窗 -->
<uni-popup ref="popupNew">
<view class="popup-content" @click="getGift()">
<view class="dl-popup-content">
<view class="dl-title-1">新用户领好礼</view>
<view class="dl-title-2">5 <text>次报名</text></view>
<view class="dl-title-3">限注册新用户领取</view>
</view>
</view>
</uni-popup>
2025-03-21 17:57:53 +08:00
</view>
2025-03-18 17:41:45 +08:00
</template>
<script>
2025-04-07 13:53:10 +08:00
import {
changeUserType,
getUserType,
formatNumberWithUnits,
calculateTimeDifference
} from '@/utils/common.js'
2025-03-21 17:57:53 +08:00
import tabBarVue from '@/components/tabbar/tabBar.vue'
2025-04-02 11:34:12 +08:00
import noticeIndex from '@/pages/components/notice-index.vue'
import subscribe from '@/pages/components/subscribe.vue'
import mineIndex from '@/pages/mine/mine-index.vue'
2025-04-03 16:46:51 +08:00
import myNotice from '@/pages/components/my-notice.vue'
2025-04-10 14:41:14 +08:00
import myNoticeTg from '@/pages/components/my-notice-tg.vue'
2025-04-08 11:07:05 +08:00
import {
getSiteConfig
} from '@/api/system/config.js'
import constant from '@/utils/constant'
import {
2025-05-06 14:49:49 +08:00
setStrData,
getToken
2025-04-08 11:07:05 +08:00
} from '@/utils/auth.js'
2025-04-18 14:00:19 +08:00
import {
toast,
hasRights
} from '@/utils/common.js'
import rightsCode from '@/utils/rightsCode'
2025-04-25 21:43:22 +08:00
import {
2025-05-06 14:49:49 +08:00
getMemberDetail,
2025-05-06 16:51:20 +08:00
isGetGift,
sendNewGift
2025-04-25 21:43:22 +08:00
} from '@/api/business/member.js'
2025-03-21 17:57:53 +08:00
export default {
2025-03-31 14:31:41 +08:00
components: {
2025-03-21 17:57:53 +08:00
tabBarVue,
noticeIndex,
2025-04-02 11:34:12 +08:00
subscribe,
2025-04-03 16:46:51 +08:00
mineIndex,
2025-04-10 14:41:14 +08:00
myNotice,
myNoticeTg
2025-03-21 17:57:53 +08:00
},
data() {
return {
2025-04-07 13:53:10 +08:00
//当前用户类型
2025-04-18 14:00:19 +08:00
nowUserType: 'bz',
2025-03-31 14:31:41 +08:00
menus: ['全部', '最新', '高奖励', '急招', '品牌置换'],
2025-03-21 17:57:53 +08:00
menuIndex: 0,
2025-03-31 14:31:41 +08:00
dataList: ['1', '2', '2', '2'],
2025-03-21 17:57:53 +08:00
queryParams: {
pageNo: 1,
pageSize: 10,
},
total: 0,
//下来刷新状态
isTriggered: false,
2025-04-02 18:34:15 +08:00
menuCode: "home",
2025-03-21 17:57:53 +08:00
}
},
2025-04-10 14:41:14 +08:00
watch: {
nowUserType(newVal, oldVal) {
console.log(newVal, "newVal")
console.log(oldVal, "oldVal")
this.nowUserType = newVal;
},
},
2025-05-06 16:51:20 +08:00
onReady() {
2025-05-09 16:48:02 +08:00
this.$refs.minePageCus.getDetail()
2025-05-06 17:46:54 +08:00
this.$refs.myNotice.search()
this.$refs.myNoticeTg.search()
2025-05-06 16:51:20 +08:00
},
2025-04-10 14:41:14 +08:00
mounted() {
2025-04-11 15:08:25 +08:00
this.refreshUserType()
2025-04-10 14:41:14 +08:00
},
onShow() {
2025-05-09 16:48:02 +08:00
this.$nextTick(() => {
if (this.$refs.minePageCus) {
this.$refs.minePageCus.getDetail();
} else {
console.error('Component not found');
}
if (this.$refs.subscribe) {
this.$refs.subscribe.onRefresherrefresh();
} else {
console.error('Component not found');
}
});
2025-04-11 15:08:25 +08:00
this.refreshUserType()
2025-05-07 12:51:35 +08:00
setTimeout(() => {
this.checkUserIfLogin()
}, 1000)
2025-04-10 14:41:14 +08:00
},
2025-04-21 12:26:33 +08:00
onLoad(param) {
if (param.menuCode) {
this.menuCode = param.menuCode
}
2025-04-08 11:07:05 +08:00
this.selectSiteConfig("platform_tel")
2025-05-08 16:20:41 +08:00
this.selectSiteConfig("join_community")
2025-05-06 16:51:20 +08:00
let that = this
2025-05-07 12:51:35 +08:00
2025-03-21 17:57:53 +08:00
},
methods: {
2025-05-06 16:51:20 +08:00
/**
* 领取礼物
*/
getGift() {
sendNewGift().then(res => {
uni.showToast({
title: '领取成功',
icon: 'none',
duration: 1000
})
this.$refs.popupNew.close()
})
},
2025-05-06 14:49:49 +08:00
/**
* 判断用户是否登录
*/
checkUserIfLogin() {
2025-05-06 16:51:20 +08:00
let that = this
2025-05-06 14:49:49 +08:00
if (getToken() && "" != getToken() && null != getToken()) {
//已登录。查后台判断是否已领取过新人礼
isGetGift().then(res => {
if (res.code == 200 && "1" == res.data) {
//已经领取过
} else {
//没领取,弹窗
2025-05-06 16:51:20 +08:00
that.$refs.popupNew.open('center')
2025-05-06 14:49:49 +08:00
}
})
}
},
2025-04-21 13:57:36 +08:00
/**
* 打开VIP弹窗
*/
openVip() {
this.$refs.popup.open('center')
},
/**
* 去VIP开通页
*/
goVip() {
this.$tab.navigateTo('/pages/mine/member/member-card?userType=' + this.nowUserType)
},
2025-04-11 15:08:25 +08:00
/**
* 重新获取当前角色
*/
refreshUserType() {
this.nowUserType = getUserType()
2025-04-18 14:00:19 +08:00
console.log(this.nowUserType, 90);
2025-04-11 15:08:25 +08:00
},
2025-04-07 13:53:10 +08:00
updateParams(newVal) {
this.nowUserType = newVal;
},
2025-03-21 17:57:53 +08:00
itemClick(index, item) {
this.menuIndex = index
},
/**
* 菜单切换
* @param {Object} code
*/
2025-04-24 17:10:07 +08:00
async changeMenu(code) {
2025-04-10 14:41:14 +08:00
this.nowUserType = getUserType()
2025-05-06 16:51:20 +08:00
this.$refs.popupNew.close()
2025-04-11 15:08:25 +08:00
if ("fabu" == code) {
2025-04-25 21:43:22 +08:00
getMemberDetail().then(res => {
if (!res.data.identityType) {
uni.showToast({
title: '暂未通告主认证,请先认证',
icon: 'none',
duration: 1000
})
} else {
this.$tab.navigateTo('/pages/notice/public-notice')
}
})
2025-04-11 15:18:48 +08:00
} else {
2025-04-18 14:00:19 +08:00
if (code == 'dingyue') {
2025-04-24 17:10:07 +08:00
if (!await this.checkIfHasRights(rightsCode.subscribeSelect)) {
2025-04-18 14:00:19 +08:00
return
}
}
2025-04-11 15:18:48 +08:00
this.menuCode = code
2025-04-11 15:08:25 +08:00
}
2025-03-21 17:57:53 +08:00
},
2025-04-18 14:00:19 +08:00
/**
* 鉴权通用方法
* @param {Object} rigthsCode
*/
async checkIfHasRights(rigthsCode) {
let res = await hasRights(rigthsCode)
if (!res) {
2025-04-24 17:10:07 +08:00
this.openVip()
2025-04-18 14:00:19 +08:00
return false
}
return true
},
2025-03-21 17:57:53 +08:00
/**
* 上滑加载数据
*/
onReachBottomCus() {
//判断 如果页码*页容量大于等于总条数,提示该页数据加载完毕
if (this.queryParams.pageNo * this.queryParams.pageSize >= this.total) {
uni.$u.toast('没有更多数据了')
return
}
//页码+1,调用获取数据的方法获取第二页数据
this.queryParams.pageNo++
},
/**
* 下拉刷新数据
*/
onRefresherrefresh() {
this.isTriggered = true
this.queryParams.pageNo = 1
this.total = 0
},
2025-04-08 11:07:05 +08:00
/**
* 查询平台配置
*/
selectSiteConfig(code) {
getSiteConfig({
code: code
}).then(res => {
let jsonArray = JSON.parse(res.data)
jsonArray.map((item) => {
if (constant.customer_service == item.name) {
setStrData(constant.customer_service, item.value)
} else if (constant.wechat_img == item.name) {
setStrData(constant.wechat_img, item.value)
2025-05-08 14:41:46 +08:00
} else if (constant.join_str == item.name) {
2025-05-08 16:20:41 +08:00
setStrData(constant.join_str, item.value)
}
2025-04-08 11:07:05 +08:00
})
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
}
2025-03-21 17:57:53 +08:00
}
}
</script>
2025-03-18 17:41:45 +08:00
2025-03-21 17:57:53 +08:00
<style lang="scss">
.content {
width: 100%;
color: #363636;
2025-03-31 14:31:41 +08:00
background-color: #F6F6F6;
2025-03-21 17:57:53 +08:00
font-size: 38rpx;
2025-04-02 18:34:15 +08:00
height: calc(100vh - var(--window-bottom) - 117rpx);
2025-03-31 14:31:41 +08:00
}
.content-body {
width: 100%;
2025-04-02 18:34:15 +08:00
height: 100%;
2025-03-31 14:31:41 +08:00
background-color: white;
2025-04-02 18:34:15 +08:00
// padding-bottom: calc(var(--window-bottom) + 127rpx);
2025-04-21 13:57:36 +08:00
}
2025-05-06 16:51:20 +08:00
.dl-popup-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: start;
width: 570rpx !important;
height: 670rpx !important;
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjoAAAKeCAMAAACbG0EKAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6OTVCOTIxODYyQTNCMTFGMDkzN0RBNDE5NEE4ODg4NTQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OTVCOTIxODcyQTNCMTFGMDkzN0RBNDE5NEE4ODg4NTQiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo5NUI5MjE4NDJBM0IxMUYwOTM3REE0MTk0QTg4ODg1NCIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo5NUI5MjE4NTJBM0IxMUYwOTM3REE0MTk0QTg4ODg1NCIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpAc9qIAAAGAUExURbEBAfEFMf/TbP/srv10aP24j/xSTP/exvwoOcwEBf80OP/Yj/9GMv+LcP5vVv/okv3WsPQtRP9SMf/XNf/32/ioJv+8F//HRv/HIv/IVeweM9ZIT9wuJWUICv/v584iFvWZNP/YWPddZf/3yuk1Iv/YJv/qNPdIKv/YR//IFpVSE/uwUN0RI/9XLP/OLvy6a/GSQ+5CKOkcJ/p3gegPFP/5P8eTI+woEf/fd+/t67lSSec3PNtvbN+wJ7qFHdhJL/hnPeJZYcaOFtyMgtlnVNNGD+lEQ/qSGOrCJu/j2/Q5K+zGM+pUPN10MsA1O9+GRvchLrmAcdZjGdunHPFtHO1IG+lTJ+K+LuvbzeSjgOrLl+zHY+q9u/XcM//37/fv7//nzv/////v3v//9//n1v/35//v1v/nxv/39///7///5f/vwf/vzvf39//m3/fmxPf37/f///fnzv/3//Xv3vbv1vf35Pf/9/f/7/fvzvfm1vfvw/Xj4vf/3/f3/////+ONuXgAAACAdFJOU/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////8AOAVLZwAAsU5JREFUeNrsvYtX2tje/69CQIeC0NrpVF1o48ypZ8nUjrp+o8WzisuWeZxjbWee8/QrloNcFbTgbaqtnRn/9d/+7PvOBQKEiy073BKSELJfeX8ueycZuhmUQWmpDA12QdMlV12Dsl8doDMoTkt1bT+nluo+gmiAzqDULWtVYKUgg8NHkA5VB+gMiiU3RG4KpFQLhkK+/LoEaICOU8HBuJT5i6HQaWi+069FgAboOAKH4FHGL+j1FL+W+WuZf01FCBmw/QE6X71rfIpcGhCUaiaTKRQygEimksEFiU0mA+TAe6EswQMmrPxl688AnUaSgxUnUymUM6JUMg2Koj8DdL5KycG2qnxqRKNEC3wi4zb8ZMCn/jLxGaBTV3Kg8k8LpxUjMjZFhksAlAGATr844zVAp05BXs5ppYKs1WUjZuqwVMpU0EoqIEFflus8QMe27EPIfYrrnqMw0TQ8FSFHiJ/yF6Q9A3TqGavKqWSjJibgaV3y+bwYUdDJlyoySBVkuQbofPGaUyhd0hr/YMsMQ+cgj4uZowlQqjys5JLCUy6sDdD5kkOrHPKPsV5MAAiIhoMD4ONA5cJSfw4ODhhNEx8UMQKEwHv6IuDpe3SquG16v7s9HJDkVDLYtQEG0PPApkxgTJQJaHTiYI5Mm5OZQjDRj0eVXGVtgE7HXI010lKdy5G3M/hU7U4D41qVeMa0pg/sy3t44hc60Ic0AxtDAnQwhyULzNZpbn+ATgeEhvWKqapdHHhZW8t12EHOMG4wGm2Xg7k5eD3Iz81h5bmcwPQM0HFZbaD7QpX2hcG5fPpSZZ1kCtCotL/WOXIqWHHyE01Qc4wf7+nrseU8c3OfwLwdhwPaYiq1qPkH6LjoY6wBNqz9pyp1izE1Thegf9V+ZzSH+DiUnGOn5b14fc8ebOoxMlzZ93PHn8PaUyjBpwupxfDuAB3XXAwEDusRI3o4FEjTdLlwSuEp45kIV2unLm/EabkiuDl2sczNnewtvH76GqOTAnRSt5ud/kFnjZinKiaDdITBLYjlDICSKZ9Cf4cMjGdIsyIBKFd213KVK5elDxgcN7n5PHe8t/D0NeGGltSCFh6g075nvI/BwcpShh4wct+GCn5WlK4OBdxbplzBlsvFBO1pAciZswPHQ59242jEQ6eIT6iEF58ywaFlIfUUmawBOu26OKfATUXtE+O4AD5XLsGzBtbqgIIDle8hRX5nn63G1ankeewJGPSGwjObCp8O0GnTxcE9W9QeC6LlWWmGtuodU6lUcu4kaNdOKxNMcjwNy7Fp5FgePaYf9p5acIN95YWB6rSlOFXsGFcyDrvE2HSRKcAJCe2bK0SOU3AcghV4+svTp7PW7CzsDdBpA5wcF5xSWyWTgWi9XXM18WnuvSvgeDzj+HXBRnEwOU8HqtOyc3wKbnHmNFNxyEe97jKZy1Ihd9pOU9daATTnc2vkjFuNL1oAM8tfnu7tD9BpqeT2y8jFVeRmgibjJhp1cjB0akDlCL8W2gnVkYsM1orX/fg4PD104B/oiHGScS60hgUOyuysSs8s/uJWi04P0VmDmApxU7kssTZq0XHBGTXyfHnal6rQ8pH8R2XugBkrxsY4e2VvjA42iSPDvuXzeUaevp4V1MxKAxlf2Btkk1sDJ4fIuWSdqWjfhgncY+qA906QelLhb2i/BfpKes/gryY+4CEP7FRbM1r7p5yccaUEDOMyShIz4vO4JzAOkjNLyZEBmhXCM3urneReobNWxY3TUseGBp0bTP1koMyJRWiPGGzAKq1lCE8n5oi1GndQAvw9IEbYNzAemH2N4OAyIz4I5bnlotMbdE4zFJyJUjPUvDeP8G4yEkETlUwL7KxV5j4pkhOQkQgonwKWk2WIRgCSWaY55BOTHzq6cMtFpxfoYCeHWSkGgjuFdsurtNAH73Li+DPVnAAd+IeAPNEwNi5e8YcAvC4QebEp5Atta4BOk3HVaa5AuMkfTLgHDS+f3mN4mmVnqzIH5DAJWYUhsDrOh4DyKbCKZgngdzI+LsbHx1cXniqQWNKzd9tFp+voQD+qyxI3UaKrlNzLpc7DNC71l4EpRHwmJgqXzW1XaQ4amwg4q44GPJ9pZjRh9ekvs7P/W092UFnQbgboNE1OngoO6U537G45IRB9mqs0xc7
background-size: 100% 100%;
background-position: center;
/* 图片居中显示 */
background-repeat: no-repeat;
padding-top: 200rpx;
.dl-title-1 {
color: #FC1F3E;
font-size: 20pt;
}
.dl-title-2 {
color: #FC1F3E;
font-size: 28pt;
text {
color: #FC1F3E;
font-size: 11pt;
}
}
.dl-title-3 {
color: #FC1F3E;
font-size: 11pt;
}
}
2025-04-21 13:57:36 +08:00
.popup-content {
padding: 0 !important;
background-color: transparent;
image {
width: 70vw;
}
2025-03-21 17:57:53 +08:00
}
2025-04-25 15:59:26 +08:00
</style>