This commit is contained in:
王鹏
2025-08-14 15:04:24 +08:00
commit a47c6dd47a
399 changed files with 66761 additions and 0 deletions

606
pages/index.vue Normal file
View File

@@ -0,0 +1,606 @@
<template>
<view class="">
<image style="position: relative;z-index: 1;" class="fengrui-img" src="https://img.yidaima.cn/feast/index_bj.jpg"
mode="aspectFill"></image>
<view style="position: relative;z-index: 2;" class="index-box">
<view class="notice-box">
<image class="notice-svg" src="https://img.yidaima.cn/feast/zt.svg" mode=""></image>
<view class="notice-text">
<p>{{noticeStr}}</p>
</view>
</view>
<!-- 轮播图 -->
<carousel :img-list="swiperData" url-key="url" @selected="selectedBanner"/>
<!-- <uni-swiper-dot class="uni-swiper-dot-box" :info="swiperData" :current="current" field="content">
<swiper autoplay :circular="true" interval="2000" class="swiper-box" :current="swiperDotIndex"
@change="changeSwiper">
<swiper-item v-for="(item, index) in swiperData" :key="index">
<view class="swiper-item" @click="clickBannerItem(item)">
<image :src="item.image" mode="aspectFill" :draggable="false" />
</view>
</swiper-item>
</swiper>
</uni-swiper-dot> -->
<view class="index-info">
<view class="mt30 grid text-center col-4 bg-white" style="padding: 30rpx 0; border-radius: 15rpx;row-gap: 30rpx;">
<view @click="Jump('/pages/tool/highQualityCode')">
<image class="cell_3_icon flex justify-center align-center" style="height:65rpx;" src="https://img.yidaima.cn/feast/sjbz.png" mode="aspectFit">
</image>
<view>精品源码</view>
</view>
<view @click="Jump('/pages/tool/resource')">
<image class="cell_3_icon flex justify-center align-center" style="height: 65rpx;" src="https://img.yidaima.cn/feast/dnbz.png" mode="aspectFit">
</image>
<view>资源分享</view>
</view>
<view @click="Jump('/pages/tool/video')">
<image class="cell_3_icon flex justify-center align-center" style="height: 65rpx;" src="https://img.yidaima.cn/feast/sp.png" mode="aspectFit">
</image>
<view>演示视频</view>
</view>
<view @click="Jump('/pages/tool/freeCode')">
<image class="cell_3_icon flex justify-center align-center" style="height: 65rpx;" src="https://img.yidaima.cn/feast/sycc.png" mode="aspectFit">
</image>
<view>免费源码</view>
</view>
</view>
<view class="titel-vi">
<view class="titel-vi-q">
<view class="titel-vi-img">
<image class="notice-ioc" src="https://img.yidaima.cn/feast/zxwz.svg" mode="aspectFill"></image>
</view>
<view class="titel-vi-font">最新文章</view>
</view>
<view class="titel-vi-right" @tap="categoryNew()">
查看更多
</view>
</view>
<!-- 文章列表 -->
<view class="blog-box" v-for="(item,index) in blogList" :key="index" @click="blogInfo(item.id)">
<view v-show="false" style="height: 370rpx;background-color: white;overflow: hidden;padding: 25rpx;border-radius: 30rpx;" v-if="item.ad == 1 && adUnitId2">
<view style="height: 325rpx;overflow: hidden;">
<ad-custom style="height: 325rpx !important" :unit-id="adUnitId2" ad-intervals="30" ></ad-custom>
</view>
</view>
<view style="height: 240rpx;" v-else>
<!-- <image class="blog-img" :src="baseUrl+item.showImg"></image> -->
<image class="blog-img" :src="item.showImg"></image>
<view class="info-box">
<view class="ellipsis-multiline">
{{item.title}}
</view>
<view class="info-icon">
<image v-if="item.isAd == 0" class="muen-sld-icon" src="https://img.yidaima.cn/feast/guanggao.svg" mode=""></image>
<image v-if="item.appResourceId" class="muen-sld-icon" src="https://img.yidaima.cn/feast/xiazai.svg" mode=""></image>
<image v-if="item.weight == 999" class="muen-sld-icon2" src="https://img.yidaima.cn/feast/top.svg" mode=""></image>
</view>
<view class="muen-sld-time"><text style="float: left;">{{item.createTime}}</text>
<text class="cuIcon-attention look-number"><text>{{item.lookNumber}}</text></text></view>
</view>
</view>
</view>
</view>
</view>
<!-- 加载动图 -->
<view class="artileload" v-if="showTotal">
<image style="width: 100%;height: 100%;" src="https://img.yidaima.cn/feast/articleload.gif" mode="aspectFit"></image>
</view>
<!-- 文章列表没有数据 -->
<view class="no-list-data" v-else>
--我的底线就到这里了--
</view>
<!--通知弹窗-->
<view class="cu-modal" :class="modalName=='indexModal'?'show':''">
<view style="border-radius: 30rpx;" class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view style="color: black;font-size: 38rpx;margin-top: 50rpx;" class="content">通知</view>
</view>
<view class=" bg-white">
<view style="font-size: 33rpx;color: #6a6a6a;padding: 40rpx 60rpx 60rpx 60rpx;">
{{modalInfo}}
</view>
<button @tap="hideModal" style="margin-bottom: 50rpx;width: 55%;height: 90rpx;font-size: 38rpx;"
class="cu-btn bg-green">确认</button>
</view>
</view>
</view>
<view class="cu-modal" :class="modalName=='Nomini'?'show':''">
<view style="border-radius: 30rpx;" class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view style="color: black;font-size: 38rpx;margin-top: 50rpx;" class="content">提示</view>
</view>
<view class=" bg-white">
<view style="font-size: 33rpx;color: #6a6a6a;padding: 40rpx 60rpx 60rpx 60rpx;">
请您使用手机访问谢谢 !
</view>
<button @tap="offApp" style="margin-bottom: 50rpx;width: 55%;height: 90rpx;font-size: 38rpx;"
class="cu-btn bg-green">知道了</button>
</view>
</view>
</view>
</view>
</template>
<script>
import {
getConfigKey
} from "@/api/app/public.js"
import {
listArticle,newUser,wxLogin,autoLoginWx,getSysSet
} from "@/api/app/index.js"
import {
getQiniuToken
} from "@/utils/qiniu.js"
import {
getToken,setToken
} from '@/utils/auth'
import carousel from '@/components/lun-bo-tu/lun-bo-tu';
import config from '@/config'
let interstitialAd = null
export default {
components: {
carousel
},
data() {
return {
baseUrl: config.baseUrl,
adUnitId:"",
adUnitId2:"",
TabCur: 0,
scrollLeft: 0,
current: 0,
swiperDotIndex: 0,
swiperData: [],
noticeStr:"",
blogList:[],
queryParams: {
pageNum: 1,
pageSize: 6,
isShow: 1
},
total:0,
showTotal:false,
modalName:null,
modalInfo:"",
platform: 0
}
},
onShareAppMessage() {
return {
title: "同学快过来看!这里有一个能搜资源的好东西!",
imageUrl: "",
path: 'pages/index?userid='+this.userid,
}
},
onShareTimeline(){
return {
title:'同学快过来看!这里有一个能搜资源的好东西!',
query:{
},
imageUrl:''
}
},
onLoad(option) {
var that = this;
this.adUnitId2 = uni.getStorageSync("sysSet").computerAd
wx.getSystemInfo({
success: (res) => {
console.log(res.platform)
if (res.platform == 'mac' || res.platform == 'windows') {
this.platform = 1
// that.modalName = 'Nomini'
// return;
}
}
})
//自动登录
uni.login({
provider: 'weixin',
success: loginRes => {
//获取openid
autoLoginWx(loginRes.code).then(response => {
var antoInfo = JSON.parse(response.msg)
var data = {
openId: antoInfo.openid,
oldUserId : 0
}
//邀请用户
if(option.userid && option.userid != 'undefined'){
data.oldUserId = option.userid
}
//登录
wxLogin(data).then(logininfo => {
setToken(logininfo.token)
//设置用户信息
this.$store.dispatch('GetInfo').then(res => {
})
})
})
}
});
//获取系统配置数据
getSysSet().then(setinfo => {
//设置缓存
uni.setStorageSync("sysSet", setinfo)
//公告
that.noticeStr = setinfo.indexNotice
//弹窗通知是否关闭
var isModalOff = setinfo.indexModalInfo.split("#")[0]
//弹窗通知内容
that.modalInfo = setinfo.indexModalInfo.split("#")[1]
//判断弹窗
if(isModalOff == "true" && uni.getStorageSync("isIndexModal") != that.modalInfo){
that.modalName = "indexModal"
uni.setStorageSync("isIndexModal", that.modalInfo)
}
//轮播图
that.swiperData = []
var swiper = setinfo.indexSwiper.split(",")
for(var i=0; i < swiper.length; i++){
that.swiperData.push({image:swiper[i]})
}
})
//获取文章列表
this.getBlogList()
//初始化插屏广告
that.adUnitId = uni.getStorageSync("sysSet").homeAd
this.getWxchaAd()
},
// 上了分页
onReachBottom() {
var that = this;
var allTotal = this.queryParams.pageNum * this.queryParams.pageSize
//this.page为加载次数this.pageSize为每一次加载的数据条数
if (allTotal < this.total) {
//this.total为请求数据的总条数。只要现有条数小于总条数就执行一下代码
this.showTotal = true;
this.queryParams.pageNum++;
//加载次数递加
//请求更多数据列表
listArticle(this.queryParams).then(response => {
if(that.platform == 0 && that.adUnitId2){
that.blogList.push({ad:1})
}
that.blogList = that.blogList.concat(response.rows)
var allTotal2 = this.queryParams.pageNum * this.queryParams.pageSize
if (allTotal2 < this.total) {
//this.total为请求数据的总条数。只要现有条数小于总条数就执行一下代码
this.showTotal = true;
} else {
this.showTotal = false;
}
})
} else {
this.showTotal = false;
}
},
methods: {
offApp(){
uni.exitMiniProgram({
success: function () {
console.log("=")
},
fail: function (err) {
console.log(err)
}
});
},
// 插屏广告数据
getWxchaAd: function() {
var that = this;
//#ifdef MP-WEIXIN
if (this.adUnitId != '') {
// 在页面onLoad回调事件中创建插屏广告实例
if (wx.createInterstitialAd) {
interstitialAd = wx.createInterstitialAd({
adUnitId: this.adUnitId
})
interstitialAd.onLoad(() => {
})
interstitialAd.onError((err) => {})
interstitialAd.onClose(() => {})
}
// 在适合的场景显示插屏广告
if (interstitialAd) {
interstitialAd.show().catch((err) => {
console.error(err)
})
}
} else {
console.log('没有流量主')
}
//#endif
},
categoryNew(){
uni.switchTab({
url: '/pages/search/index'
});
},
getBlogList(){
var that = this;
listArticle(this.queryParams).then(response => {
that.blogList = response.rows
var allTotal = this.queryParams.pageNum * this.queryParams.pageSize
that.total = response.total
if (allTotal < this.total) {
this.showTotal = true;
} else {
this.showTotal = false;
}
if(that.platform == 0 && that.adUnitId2){
that.blogList.splice(3, 0, {ad:1});
}
})
},
tabSelect(e) {
this.TabCur = e.currentTarget.dataset.id;
this.scrollLeft = (e.currentTarget.dataset.id - 1) * 60
},
clickBannerItem(item) {
console.log(item)
},
changeSwiper(e) {
this.current = e.detail.current
},
blogInfo(id){
this.$tab.navigateTo('/pages/blog/bloginfo?id='+id)
},
Jump(url){
this.$tab.navigateTo(url)
},
hideModal() {
this.modalName = null
},
}
}
</script>
<style lang="scss">
/* 列表没有数据 */
.no-list-data {
text-align: center;
margin: 30rpx 0px;
color: #e6e6e6;
font-size: 24upx;
}
/* 加载动图 */
.artileload {
height: 80rpx;
width: 80rpx;
margin: 20rpx auto;
overflow: hidden;
}
.look-number {
font-size: 22rpx;
float: right;
}
.look-number text {
margin-left: 10rpx;
}
.blog-box {
width: 100%;
background-color: white;
border-radius: 18rpx;
margin-bottom: 20rpx;
}
.blog-img {
height: 200rpx;
width: 43%;
margin-top: 20rpx;
margin-left: 25rpx;
border-radius: 18rpx;
display: inline-block;
float: left;
}
.muen-sld-time {
font-size: 22rpx;
margin-top: 20rpx;
margin-left: 25rpx;
float: left;
color: #ADADAD;
width: 100%;
line-height: 20rpx;
}
.muen-sld-icon {
width: 35rpx;
height: 35rpx;
margin-left: 25rpx;
margin-top: 23rpx;
float: left;
}
.muen-sld-icon2 {
width: 43rpx;
height: 43rpx;
margin-left: 25rpx;
margin-top: 20rpx;
float: left;
}
.info-box {
width: 48%;
display: inline-block;
}
.ellipsis-multiline {
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
margin-top: 32rpx;
margin-left: 25rpx;
height: 72rpx;
}
.info-icon {
height: 55rpx;
}
/* 标题 */
.titel-vi-right {
color: #989898;
height: 80upx;
line-height: 80upx;
font-size: 20upx;
}
.titel-vi-font {
font-size: 30upx;
margin-left: 24upx;
}
.titel-vi-img {
width: 36upx;
height: 36upx;
}
.titel-vi {
display: flex;
justify-content: space-between;
align-items: center;
margin: 10upx 30upx 0upx 30upx;
}
.titel-vi-q {
display: flex;
justify-content: flex-start;
align-items: center;
}
.notice-box {
width: 100%;
margin-top: 50rpx;
margin-bottom: 30rpx;
}
.notice-ioc {
height: 40upx;
width: 140upx;
display: inline-block;
float: left;
}
.notice-svg {
height: 50upx;
width: 100upx;
display: inline-block;
float: left;
margin-top: -1rpx;
}
.notice-text {
display: inline-block;
margin-left: 5rpx;
margin-top: 10rpx;
width: 435upx;
overflow: hidden;
white-space: nowrap;
box-sizing: border-box;
border-radius: 20rpx;
}
.notice-text p {
display: inline-block;
padding-left: 100%;
animation: marquee 15s linear infinite;
}
@keyframes marquee {
0% {
transform: translateX(0);
}
100% {
transform: translateX(-100%);
}
}
.index-info {
z-index: 1;
margin-left: 20rpx;
margin-right: 20rpx;
margin-top: 15rpx;
}
.index-box {
z-index: 1;
margin-top: -370rpx;
}
.fengrui-img {
width: 100%;
}
/* #ifndef APP-NVUE */
page {
display: flex;
flex-direction: column;
box-sizing: border-box;
background-color: #F7F7F7;
min-height: 100%;
height: auto;
}
view {
font-size: 14px;
line-height: inherit;
}
/* #endif */
.swiper {
height: 300rpx;
}
.swiper-box {
height: 150px;
overflow: hidden;
border-radius: 30rpx;
transform: translateY(0);
}
.swiper-item {
/* #ifndef APP-NVUE */
display: flex;
/* #endif */
flex-direction: column;
justify-content: center;
align-items: center;
color: #fff;
height: 300rpx;
line-height: 300rpx;
}
@media screen and (min-width: 500px) {
.uni-swiper-dot-box {
width: 400px;
/* #ifndef APP-NVUE */
margin: 0 auto;
/* #endif */
margin-top: 8px;
}
.image {
width: 100%;
}
}
</style>