一 vant-app
1.1 集成步骤
https://developers.weixin.qq.com/miniprogram/dev/devtools/npm.html-npm init -y
npm i @vant/weapp -S "packNpmManually": true,"packNpmRelationList": [{"packageJsonPath": "./package.json","miniprogramNpmDistDir": "./"}]
"usingComponents": {"van-button": "@vant/weapp/button/index"
}
<van-imageroundwidth="10rem"height="10rem"src="https://img.yzcdn.cn/vant/cat.jpeg"
/>



二 项目功能描述
-欢迎页面-首页-轮播图-公告-信息采集,社区活动,人脸检测,语音识别,心率检测,积分商城-信息采集页面-采集人数-采集详情页面-采集统计页面-人脸检测页面-语音识别页面-积分商城页面-活动-活动列表-报名活动-加载更多-公告-公告列表-我的-信息展示-登录




三 项目创建
3.1 前端项目创建
3.2 后端项目创建
四 欢迎页面
4.1 wxml
<view class="container"><text bindtap="doJump" class="jump">跳过{{seconds}}秒</text><image class="img" src="/images/bg/splash.png" />
</view>
4.2 js
Page({data: {seconds:3},doJump(e){wx.switchTab({url: '/pages/index/index'})},onLoad(options) {var instance = setInterval(()=>{if(this.data.seconds <= 0){clearInterval(instance)wx.switchTab({url: '/pages/index/index',})}else{this.setData({seconds:this.data.seconds - 1})}},1000)},})
4.3 wxss
page{height: 100%;
}.container {height: 100%;width: 100%;
} .container .img{height: 100%;width: 100%;
}.jump{font-size: 30rpx;position: absolute;left: 600rpx;top: 80rpx;background-color: #dddddd;padding: 10rpx 20rpx;border-radius: 20rpx;
}
4.5 后端加载的欢迎页
4.5.1 表模型
class Welcome(models.Model):img = models.ImageField(upload_to='welcome', default='slash.png')order = models.IntegerField()create_time = models.DateTimeField(auto_now=True)is_delete = models.BooleanField(default=False)
4.5.2 开启media访问
MEDIA_URL = '/media/'
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
path('media/<path:path>', serve, {'document_root': settings.MEDIA_ROOT})
4.5.3 视图函数
from .models import Welcome
from django.http import JsonResponse
def welcome(requesst):welcome=Welcome.objects.all().order_by('order').first()return JsonResponse({'code':100,'msg':'成功','result':{'img':'http://127.0.0.1:8000/media/'+str(welcome.img)}})
4.5.4 微信小程序端
const api = require("../../config/settings.js")
Page({data: {img:'http://127.0.0.1:8000/media/welcome/splash3.png',seconds:3},doJump(e){wx.switchTab({url: '/pages/index/index'})},onLoad(options) {wx.request({url: api.welcome,method:'GET',success:(res)=>{this.setData({img:res.data.result.img})}})var instance = setInterval(()=>{if(this.data.seconds <= 0){clearInterval(instance)wx.switchTab({url: '/pages/index/index',})}else{this.setData({seconds:this.data.seconds - 1})}},1000)},
})
五 首页
5.1 app.json
{"pages": ["pages/welcome/welcome","pages/index/index","pages/my/my","pages/interaction/interaction","pages/neighbor/neighbor","pages/collection/collection","pages/face/face","pages/voice/voice","pages/activity/activity","pages/goods/goods","pages/heart/heart","pages/form/form","pages/statistics/statistics","pages/camera/camera","pages/login/login"],"window": {"navigationBarTitleText": "智慧社区","navigationBarBackgroundColor": "#fff","enablePullDownRefresh": false,"backgroundColor": "#00FFFF","backgroundTextStyle": "light","navigationBarTextStyle": "black"},"tabBar": {"selectedColor": "#1c1c1b","position": "bottom","list": [{"pagePath": "pages/index/index","text": "首页","iconPath": "images/icon/home.png","selectedIconPath": "images/icon/home-o.png"},{"pagePath": "pages/interaction/interaction","text": "活动","iconPath": "images/icon/aid.png","selectedIconPath": "images/icon/aid-o.png"},{"pagePath": "pages/neighbor/neighbor","text": "公告","iconPath": "images/icon/circle.png","selectedIconPath": "images/icon/circle-o.png"},{"pagePath": "pages/my/my","text": "我的","iconPath": "images/icon/my.png","selectedIconPath": "images/icon/my-o.png"}]},"usingComponents": {"van-button": "@vant/weapp/button/index","van-cell-group": "@vant/weapp/cell-group/index","van-nav-bar": "@vant/weapp/nav-bar/index", "van-grid": "@vant/weapp/grid/index","van-grid-item": "@vant/weapp/grid-item/index", "van-cell": "@vant/weapp/cell/index","van-notice-bar": "@vant/weapp/notice-bar/index","van-image": "@vant/weapp/image/index","van-divider": "@vant/weapp/divider/index"},"sitemapLocation": "sitemap.json"
}
5.2 wxml
<view class="container"><view class="banner"><swiper autoplay indicator-dots circular indicator-color='#FFFFF' interval='3000'><swiper-item><image src="/images/banner/banner1.png" mode="widthFix" /></swiper-item><swiper-item><image src="/images/banner/banner2.png" mode="widthFix" /></swiper-item><swiper-item><image src="/images/banner/banner3.png" mode="widthFix" /></swiper-item></swiper>
</view>
<van-notice-barleft-icon="volume-o"text="今天下午广大社区居民在中心小广场集合。"
/><van-grid column-num="3" ><van-grid-item icon="/images/menu/ht.png" text="信息采集" bind:click="gotoCollection"/><van-grid-item icon="/images/menu/wyf.png" text="社区活动" bind:click="gotoActivity"/><van-grid-item icon="/images/menu/wygl.png" text="人脸检测" bind:click="gotoFace"/><van-grid-item icon="/images/menu/wylx.png" text="语音识别" bind:click="gotoVoice"/><van-grid-item icon="https://b.yzcdn.cn/vant/icon-demo-1126.png" text="心率检测" bind:click="gotoHeart"/><van-grid-item icon="/images/menu/ht.png" text="积分商城" bind:click="gotoGoods"/></van-grid><view class="bottom"><view><image src="/images/home/cute_1.jpg" mode="scaleToFill" /></view><view><image src="/images/home/cute_2.jpg" mode="scaleToFill" /></view><view><image src="/images/home/cute_3.jpg" mode="scaleToFill" /></view><view><image src="/images/home/cute_4.jpg" mode="scaleToFill" /></view></view></view>
5.3 wxss
.banner image{width: 100%; height: 100%; object-fit: cover;
}
.bottom{display: flex;justify-content: space-evenly;margin-top: 20rpx;flex-wrap: wrap;
}.bottom>view>image{width: 345rpx;height: 200rpx;
}
5.4 js
Page({gotoCollection(){wx.navigateTo({url: '/pages/collection/collection'})},gotoFace(){wx.navigateTo({url: '/pages/face/face'})},gotoVoice(){wx.navigateTo({url: '/pages/voice/voice'})},gotoActivity(){wx.navigateTo({url: '/pages/activity/activity',})},
gotoHeart(){wx.navigateTo({url: '/pages/heart/heart',})
},
gotoGoods(){wx.navigateTo({url: '/pages/goods/goods',})
},
})
六 个人中心
6.2 wxml
<block wx:if="{{userInfo==null}}"><navigator class="login-area" url="/pages/login/login"><view class="btn">一键登录</view></navigator>
</block>
<block wx:else><view class="container"><view class="top-view"><view class="user"><view class="row"><image class="avatar" src="{{userInfo.avatar}}"></image><view class="name"><view bindtap="logout">{{userInfo.name}}</view></view></view></view><view class="numbers"><view class="row"><text>{{userInfo.score}}</text><text>积分</text></view><view class="row"><text>55</text><text>其他</text></view><view class="row"><text>77</text><text>其他</text></view><view class="row"><text>56</text><text>其他</text></view></view></view><van-list><van-cell title="积分兑换记录" is-link /><van-cell title="我参加的活动" is-link /><van-cell title="分享应用" is-link /><van-cell title="联系客服" is-link /></van-list></view></block>
6.2 wxss
page{height: 100%;
}.login-area{height: 100%;display: flex;flex-direction: column;justify-content: center;align-items: center;
}
.login-area .btn{width: 200rpx;height: 200rpx;border-radius: 500%;background-color: #5cb85c;color: white;display: flex;flex-direction: row;align-items: center;justify-content: center;
}.user-area{height: 100%;display: flex;flex-direction: column;justify-content: center;align-items: center;
}
.user-area image{width: 200rpx;height: 200rpx;border-radius: 500%;
}
.user-area .name{font-size: 30rpx;padding: 30rpx 0;
}.user-area .logout{color: #a94442;
}.top-view{background-color: #01ccb6;color: white;padding: 40rpx;
}.top-view .user{display: flex;flex-direction: row;justify-content: space-between;align-items: center;
}
.top-view .user .row{display: flex;flex-direction: row;justify-content: flex-start;align-items: center;
}
.top-view .user .avatar{width: 100rpx;height: 100rpx;border-radius: 50%;
}.top-view .user .name{display: flex;flex-direction: row;justify-content: flex-start;padding-left: 20rpx;
}
.top-view .user .name navigator{padding: 0 5rpx;
}.top-view .site{background-color: rgba(0, 0, 0, 0.16);padding: 20rpx;border-top-left-radius: 32rpx;border-bottom-left-radius: 32rpx;
}.top-view .numbers{display: flex;flex-direction: row;justify-content: space-between;font-size: 28rpx;padding: 40rpx;padding-bottom: 0rpx;
}.top-view .numbers .row{display: flex;flex-direction: column;align-items: center;
}
6.3 js
Page({data: {userInfo:{avatar:'/images/img/b.jpg',name:'justin',score:100},},
})
6.4 json
{"usingComponents": {},"navigationBarTitleText": "个人中心"
}