侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

uni-app开发小程序实现列表页条件筛选显示功能demo

前端  /  管理员 发布于 3年前   6151

uni-app开发百度小程序,实现首页列表数据根据点击下拉框数据传参展示出来


工具:

HBuilder X

百度开发者工具


后端api:

laravel5.5+ 提供


页面路径:

/pages/index/index.vue

view视图:

<template>
<view>
<view @click="()=>{screenNum=0;}" v-show="screenNum!==0"></view>
<view>
<view :class="['screen',screenNum!==0?'i_search_g':'' ]">
<view>
<view @click="onScreen(1)">
<text :class="['screen_item_font',screenNum===1?'act_col':'' ]">{{navitem.nearby}}</text>
<text :class="['lg' ,'text-gray ','cuIcon-unfold' ,'icon_screen',screenNum===1?'box_overturn':'' ]"></text>
</view>
<view @click="onScreen(2)">
<text :class="['screen_item_font',screenNum===2?'act_col':'' ]">{{navitem.wdbank}}</text>
<text :class="['lg' ,'text-gray ','cuIcon-unfold' ,'icon_screen',screenNum===2?'box_overturn':'' ]"></text>
</view>
<view @click="onScreen(3)">
<text :class="['screen_item_font',screenNum===3?'act_col':'' ]">{{navitem.wdtype}}</text>
<text :class="['lg' ,'text-gray ','cuIcon-unfold' ,'icon_screen',screenNum===3?'box_overturn':'' ]"></text>
</view>
</view>
<view>
<view v-show="screenNum===1">
<!-- <view><view>商圈</view></view> -->
<view>
<view>
<view :class="['screen_li ',col.all_class===0?'act_col':'']" @click="setPlistData('type','','nearby','附近')">附近</view>
<view :class="['screen_li ',col.all_class===index+1?'act_col':'']" @click="setPlistData('type',item,'nearby',item.title)"
v-for="(item,index) in cateData" :key="index">{{item.title}}</view>
</view>
</view>
</view>
<view v-show="screenNum===2">
<view>
<!--<view><view class="screen_li act_col">餐饮美食</view></view> -->
<view>
<view :class="['screen_li ',col.all_class===0?'act_col':'']" @click="setPlistData('type','','wdbank','不限')">不限</view>
<view :class="['screen_li ',col.all_class===index+1?'act_col':'']" @click="setPlistData('type',item,'wdbank',item.name)"
v-for="(item,index) in wdbankData" :key="index">{{item.name}}</view>
</view>
</view>
</view>
<view v-show="screenNum===3">
<view>
<view>
<!-- <view :class="['screen_li ',col.all_class===0?'act_col':'']" @click="setPlistData('type','','wdtype','不限')">不限</view> -->
<view :class="['screen_li ',col.all_class===index+1?'act_col':'']" @click="setPlistData('type',item,'wdtype',item.name)"
v-for="(item,index) in wdtypeData" :key="index">{{item.name}}</view>
</view>
</view>
</view>
</view>
</view>
<view>
<view v-for="(item,index) in shopList" :key="index" :ref="'icon'+index">
<navigator hover-class="none" :url="'../details/details?id='+item.id">
<image @error="failImg()" :src="'https://www.cardbaobao.com/asset/uploads/'+item.img" mode="widthFix"></image>
<view :class="['i_list_box']">
<view>{{item.bankid_name}}{{item.bankname}}</view>
<view>{{item.workdate}}</view>
<view>
<view>
<text>{{item.bankaddress}}</text>
</view>
</view>
</view>
</navigator>
</view>
<view v-if="!no_data">{{card_loading}}</view>
<view v-if="no_data">
<image src="../../static/image/no_data.png" mode="widthFix"></image>
</view>
</view>
</view>
</view>
</template> 

js代码:

<script>
from '@/utils/utils.js'
import {
imgUrl,
} 
from '@/static/image/cbbxcx.png'
let timer;
export default {
data() {
return {
card_loading: '加载中...',
no_data: false,
share: false,
screenNum: 0, //展开索引
navitem: {
nearby: '附近',
wdbank: '银行',
wdtype: '营业厅'
},
wdbankData: {},//网点银行s
wdtypeData: [{id: 1 , name: '营业厅'},{id: 2 , name: 'atm'}],
cateData: {}, //筛选)
shopList: [], //列表数据
getPlistData: { //参数
bankid: '',
sheng: '',
shi: 373,
qu: '',
wdtype:1
},
imgFlag: false, //二维码图片
addressTop: ''
};
},
components: {
},
onReachBottom() {
this.getPlistData.page += 1
this.getShopData(true);
},
onLoad(e:any) {
let that = this;
if (e.id) {
that.getPlistData.kw = e.id;
that.col.search_tit = e.id;
}
//this.cityListData_r = this.distance;
//this.getWeek(); 
//this.getBankData();
this.getCateData(); 
this.getwdbankData(); 
},
onHide() {
clearInterval(timer)
console.log("页面隐藏onHide")
},
onShow() {
let that:any = this;
that.getContactsApi()
console.log("页面onShow")
clearInterval(timer)
timer = setInterval(function() {
that.getContactsApi()
}, 30000)
},
methods: {
getContactsApi():void {
let that:any = this;
that.getData();
},
getData() :void{
this.getShopData(); //列表数据
},
goTop: function() :void{ 
uni.pageScrollTo({
scrollTop: 0
})
},
onShare(flag:boolean) :void{
this.share = flag;
this.imgFlag = false
},
searchClose():void {
if (this.getPlistData.kw) {
this.getPlistData.kw = '';
this.col.search_tit = '输入';
this.getShopData();
}
},
screenNumFn(n:number, className:string):void {
if (this.screenNum === n) {
return className;
}
},
setPlistData(key:string, val:any, itemName:string, itemPor:any):void {
console.log(key, val, itemName, itemPor,'11111111111')
this.getPlistData[key] = val;
if(itemName == 'nearby') {
this.getPlistData.shi = val.pid;
this.getPlistData.qu = val.id;
}
if(itemName == 'wdbank') {
this.getPlistData.bankid = val.id;
}
if(itemName == 'wdtype') {
this.getPlistData.wdtype = itemPor=='atm'?2:1;
}
this.screenNum = 0;
this.navitem[itemName] = itemPor;
this.getShopData();
},
onInserted(data:any, index:number) :void{
data.couponAct = !data.couponAct
this.$set(this.shopList, index, data);
console.log(data)
},
onScreen(m:number):void {
if (this.screenNum === m) {
this.screenNum = 0;
} else {
this.screenNum = m;
}
},
// 区域xxxx
getCateData():void  {
//ptype / wdgetbanks
let that:any = this;
this.$request.get("/api/wdgetvaluecard?code=373").then((res:any) => {
console.log(res.data,'wdgetvaluecard')
this.cateData = res.data;
})
},
//网点银行s wdbankData
getwdbankData():void  {
//ptype / wdgetbanks
this.$request.get("/api/wdgetbanks").then((res:any) => {
console.log(res.data,'wdgetbanks')
this.wdbankData = res.data;
})
},
//列表数据
getShopData(flag:boolean = false):void  {
let that:any = this;
!flag ? this.getPlistData.page = 1 : '';
console.log(JSON.parse(JSON.stringify(this.getPlistData)), '请求前的参数');
//plistdata   wdbankwdlistpage
this.$request.get("/api/wdbankwdlistpage", {
data: this.getPlistData
}).then(res => {
console.log(res.data.res.data, "门店数据1111");
let shop = res.data.res.data;
if (shop.length === 0) {
that.card_loading = "暂无数据";
uni.showToast({
title: "暂无数据",
icon: 'none',
duration: 2000
})
if (!flag) {
that.no_data = true;
that.col.search_tit = '输入';
that.getPlistData.kw = ''
}
} else {
that.no_data = false;
that.card_loading = "加载中..."
}
let shopObj:any = shop.map((item:any, index:number) => {
let b
if(item.s1){
b = item.s1 + '至' + item.s2 + '' + 
(item.s3!=null?item.s3:'') + '' + (item.s4!=null?item.s4:'') + '-' + 
(item.s5!=null?item.s5:'') + '' + (item.s6!=null?item.s6:'') + '' + 
(item.s7!=null?item.s7:'') + '' + (item.s8!=null?item.s8:'') + '' + (item.s9!=null?item.s9:'')
}else{
    if(item.m4){
        b = item.m4 + '-' + item.m5
    }else {
b = '周一至周五09:00-12:00,14:00-17:00' 
}
}
item.workdate = b;
return item;
})
if (flag) {
that.shopList.push(...shopObj);
} else {
that.shopList = shopObj;
}
if (res.data.res.total == that.shopList.length) {
that.card_loading = "暂无数据"
}
})
},
onPageScroll(e:any):void  {
if (e.scrollTop > 500) {
if (this.col.topClass) {
return
}
this.col.topClass = true;
} else {
if (!this.col.topClass) {
return
}
this.col.topClass = false;
}
},
},
computed: {
}
}
</script>

css就不贴了


看看效果图:

1.png

2.png

3.png


完


  • 上一条:
    百度小程序审核未通过,真机审核存在点击返回键退出小程序...解决方式之一tabBar
    下一条:
    Facebook商店的自动Magento扩展功能介绍
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 使用 Alpine.js 排序插件对元素进行排序(0个评论)
    • 在js中使用jszip + file-saver实现批量下载OSS文件功能示例(0个评论)
    • 在vue中实现父页面按钮显示子组件中的el-dialog效果(0个评论)
    • 使用mock-server实现模拟接口对接流程步骤(0个评论)
    • vue项目打包程序实现把项目打包成一个exe可执行程序(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-03
    • 2018-04
    • 2018-05
    • 2018-06
    • 2018-09
    • 2018-11
    • 2018-12
    • 2019-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-04
    • 2021-05
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客