Files
Goodgame_web/pages/game copy.vue
T
我是个攻城狮 c3f5f13bb3 all
2026-05-27 16:01:15 +08:00

535 lines
13 KiB
Vue

<template>
<Layout :index="-1" :banner="0" :imgs="0" :img="'/static/img/pro.jpg'" :titles="'资产中心'" :title_content="'寻找您心仪的游戏'">
<view class="content-game bgc-02">
<view class="content-games">
<view class="select">
<picker @change="bindPickerChange" :value="index" :range="array">
<view class="select_year">
<text>{{array[index]}}</text>
<image class="xia" src="../static/img/index/xia.png"></image>
</view>
</picker>
</view>
<view class="content-all">
<view class="content-nav">
<view class="year-nav">
<view class="nav_title"><text class="shu">|</text>发行年份</view>
<cj-slider v-model="priceValue" :min="2010" :max="2030" :step="1" :blockWidth="25"
@start="blockStart" @moving="blockMoving" @end="blockEnd" />
<view class="years">年份:{{priceValue[0]}}-{{priceValue[1]}}</view>
<view class="sou" @tap="getGame()">搜索</view>
</view>
<view class="year-navs">
<view class="nav_title"><text class="shu">|</text>发行平台</view>
<checkbox-group @change="checkboxChange" class="d-b-cs">
<label v-for="(item, index) in gameclass" :key="String(item.id)"
:class="item.checked?'game_type_active game_type':'option_default game_type'">
<view class="checkboxHidden">
<checkbox :value="String(item.id)" :checked="item.checked" />
</view>
{{item.name}}
</label>
</checkbox-group>
</view>
<view class="year-navs">
<view class="nav_title"><text class="shu">|</text>游戏类型</view>
<checkbox-group @change="checkboxChanges" class="d-b-cs">
<label v-for="(item, index) in type" :key="String(item.id)"
:class="item.checkeds?'game_type_active game_type':'option_default game_type'">
<view class="checkboxHidden">
<checkbox :value="String(item.id)" :checked="item.checkeds" />
</view>
{{item.name}}
</label>
</checkbox-group>
</view>
</view>
<view class="content-lists">
<view class="content-list">
<view class="game_list" :class="{game_list2:index%3 == 1}" v-for="(item,index) in listData" :key="index" @tap="goPath('/gameDtail?id='+item.id)">
<image class="game_img" :src="item.image[0].file_path" mode="heightFix"></image>
<view class="game_name">
<view>{{item.name}}</view>
<view class="game_status" v-if="item.is_financing==1">需要融资</view>
<view class="game_status" v-else-if="item.is_financing==2">融资待定</view>
<view class="game_status" v-else>无需融资</view>
</view>
<view class="game_spec">{{item.make_company}}</view>
</view>
<view v-if="listData.length==0" class="nocontent">
暂无数据
</view>
</view>
<view style="width: 100%;">
<el-pagination background layout="prev, pager, next" :total="total" :current-page="page" :page-size="list_rows" @size-change="handleSizeChange" @current-change="handleCurrentChange"></el-pagination>
</view>
</view>
</view>
</view>
</view>
</Layout>
</template>
<script>
import Layout from './part/layout.vue';
import cjSlider from '@/components/jxs-slider/jxs-slider.vue'
export default {
components:{
Layout,
cjSlider
},
data(){
return {
array: ['年份最新','评分最高'],
sort: '',
index:0,
priceValue: [2020, 2024], // 可以指定默认值
listData: [],
gameclass: [],
type: [],
page: 1,
list_rows: 9,
total:0,
sclass :[],
stype :[],
hasMore: true,
}
},
created() {
const width = window.innerWidth;
const height = window.innerHeight;
const mobileWidth = 768; // 可以根据需要调整这个值
const isMobile = width <= mobileWidth || height <= mobileWidth;
if(isMobile){
this.list_rows = 30;
}
this.getGame();
this.getTypeList();
},
beforeDestroy() {
},
onPullDownRefresh() {
this.page = 1;
this.listData = [];
this.getGames();
},
onReachBottom() {
if (this.hasMore) {
this.page += 1;
this.getGames();
}
},
methods:{
/*每页多少条*/
handleSizeChange(val){
this.list_rows = val;
this.getGame();
},
/*选择第几页*/
handleCurrentChange(val){
this.page = val;
this.getGame();
},
// 多选题
checkboxChange(e) {
var items = this.gameclass,
values = e.detail.value;
for (var i = 0, lenI = items.length; i < lenI; ++i) {
const item = items[i]
if (values.includes(String(item.id))) {
this.$set(item, 'checked', true)
} else {
this.$set(item, 'checked', false)
}
}
this.stype = values.sort((a, b) => a - b);//将其排个序arr.sort((a, b) => a - b); 类型
console.log(this.stype);
},
checkboxChanges(e) {
var items = this.type,
values = e.detail.value;
for (var i = 0, lenI = items.length; i < lenI; ++i) {
const item = items[i]
if (values.includes(String(item.id))) {
this.$set(item, 'checkeds', true)
} else {
this.$set(item, 'checkeds', false)
}
}
this.sclass = values.sort((a, b) => a - b);//将其排个序arr.sort((a, b) => a - b); 分类
console.log(this.sclass);
},
getGame(){
this._get('game.index/gameList',{
page: this.page,
list_rows: this.list_rows,
order: this.sort,
year:this.priceValue,
stype:this.stype,
sclass:this.sclass,
},res=>{
if(res.code==1){
this.listData = res.data.list.data;
this.total = res.data.list.total;
}
})
},
getGames(){
this._get('game.index/gameList',{
page: this.page,
list_rows: this.list_rows,
order: this.sort,
year:this.priceValue,
stype:this.stype,
sclass:this.sclass,
},res=>{
if(res.code==1){
if(res.data.list.data.length>0){
this.listData = res.data.list.data;
//滚动
uni.pageScrollTo({
scrollTop: 0,
duration: 0 // 动画时长,默认300ms
});
}
this.total = res.data.list.total;
if (this.total >= 100) { // 假设总数据量不会超过100条
this.hasMore = false;
}
uni.stopPullDownRefresh();
}
})
},
getTypeList(){
this._get('game.index/typeList',{
},res=>{
if(res.code==1){
this.gameclass = res.data.class
this.type = res.data.type
console.log(this.gameclass,222)
console.log(this.type,222)
}
})
},
blockStart() {
// console.log('滑动触发')
},
blockMoving() {
console.log('正在滑动中',this.priceValue)
},
blockEnd() {
console.log('滑动结束',this.priceValue)
},
bindPickerChange: function(e) {
// console.log('picker发送选择改变,携带值为', e.detail.value)
this.index = e.detail.value;
if(e.detail.value==1){
this.sort = 'score desc';
this.getGame();
}else{
this.sort = '';
this.getGame();
}
},
// 鼠标移入事件
mouseover(e){
this.is_xuan = false;
},
// 鼠标移出事件
mouseleave(e){
this.is_xuan = true;
},
change(e){
this.currentIndex = e.detail.current;
},
changeSub(){
if(this.currentIndex<=0){
this.currentIndex = this.storeList.length-1;
}else{
this.currentIndex--;
}
},
changeAdd(){
if(this.currentIndex>=(this.storeList.length-1)){
this.currentIndex = 0;
}else{
this.currentIndex++;
}
},
}
}
</script>
<style lang="scss">
// 选中的颜色
.option_active {
background: #D52101;
}
.checkboxHidden {
display: none;
}
.content-game{
width: 100%;
min-height: 800px;
background-image: url(../static/img/index/gbgs.png);
background-size: 100%;
background-repeat: no-repeat;
margin: 0 auto;
.content-games{
width: 1600px;
margin: 0 auto;
}
.select{
margin-top: 21px;
float: right;
width: 349px;
height: 43px;
border: 1px solid #9E9E9E;
border-radius: 5px;
margin-bottom: 15px;
.select_year{
padding: 0 13px;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 21px;
font-weight: 400;
color: #9E9E9E;
line-height: 43px;
}
.xia{
float: right;
width: 24px;
height: 13px;
}
}
.content-all{
width: 1600px;
margin: 0 auto;
display: flex;
justify-content: space-between;
.content-nav{
width: 265px;
.year-nav{
width: 265px;
padding: 30px 19px;
min-height: 251px;
background: #383838;
border-radius: 8px;
margin-bottom: 27px;
.nav_title{
font-size: 21px;
color: #FFFFFF;
.shu{
color: #F48612;
margin-right: 10px;
}
}
.years{
margin-top: 80px;
font-size: 22px;
font-weight: 400;
color: #FFFFFF;
}
.sou{
width: 123px;
height: 37px;
border: 1px solid #F48612;
border-radius: 19px;
margin-top: 30px;
color: #F48612;
text-align: center;
line-height: 37px;
cursor: pointer;
}
}
.year-navs{
width: 265px;
padding: 30px 19px;
min-height: 251px;
background: #383838;
border-radius: 8px;
margin-bottom: 27px;
.nav_title{
font-size: 21px;
color: #FFFFFF;
padding-bottom: 15px;
border-bottom: 1px solid #727272;
.shu{
color: #F48612;
margin-right: 10px;
}
}
.d-b-cs{
flex-wrap: wrap;
margin-top: 20px;
display: flex;
justify-content: space-between;
}
.game_type{
width: 104px;
height: 37px;
border: 1px solid #9E9E9E;
border-radius: 5px;
float: left;
font-size: 19px;
font-weight: 400;
color: #9E9E9E;
text-align: center;
line-height: 37px;
margin-bottom: 18px;
cursor: pointer;
}
.game_type_active{
width: 104px;
background-image: url('../static/img/index/xz.png');
background-size: 100%;
border: 1px solid #383838
}
}
}
.content-lists{
display: flex;
flex-direction: column;
}
.content-list{
width: 1273px;
// padding-bottom: 80px;
.game_list{
width: 389px;
height: 339px;
background: #3C3C3C;
border-radius: 8px;
margin-bottom: 37px;
cursor: pointer;
float: left;
text-align: center;
}
.game_list2{
margin: 0 52px;
}
.game_img{
width: 389px;
height: 219px;
transition: transform 0.3s ease;
}
.game_img:hover {
transform: scale(1.05) translate(0%, 0%);
z-index: 999;
}
.game_name{
margin-top: 12px;
padding:0 23px;
font-size: 24px;
font-weight: 400;
color: #FFFFFF;
line-height: 40px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: flex;
justify-content: space-between;
align-items: center;
.game_status{
width: 77px;
font-size: 19px;
font-weight: 400;
color: #F48715;
}
}
.game_spec{
padding:0 23px;
height: 20px;
font-size: 19px;
font-family: "Source Han Sans CN", sans-serif;
font-weight: 400;
color: #9E9E9E;
line-height: 40px;
text-align: left;
}
}
}
}
@media screen and (max-width: 768px) {
.select{
display: none;
}
.content-nav{
display: none;
}
.el-pagination{
display: none;
}
.content-game{
background-size: 100% 100%;
min-height: 500px !important;
}
.nocontent{
font-size: 12px;
margin-top: 60px;
}
.content-lists{
width: 100%;
margin-top: 20px;
}
.content-list{
margin: 0 auto;
width: 200px !important;
}
.game_list{
width: 100% !important;
height: 160px !important;
}
.game_list2{
margin: 0 auto !important;
margin-bottom: 10px !important;
}
.game_img{
width: 178px !important;
height: 100px !important;
margin-top: 10px;
}
.game_name{
width: 90% !important;
padding:5% !important;
font-size: 13px !important;
}
.game_status{
width: 20% !important;
}
.game_spec{
width: 90% !important;
padding:0 5% !important;
font-size: 10px !important;
}
}
.nocontent{
height: 240px;color: #ffffff;text-align: center;margin-top: 10px;
}
</style>