帮忙+新增包裹

This commit is contained in:
2025-01-09 05:43:21 +08:00
parent b8aac68005
commit 871637dfcb
50 changed files with 973 additions and 13 deletions

View File

@ -1,13 +1,51 @@
{
"pages": [
"pages/help/index/index",
"pages/savemoney/index/index",
"pages/order/index/index",
"pages/my/index/index",
"pages/index/index",
"pages/logs/logs"
"pages/login/login",
"pages/logs/logs",
"pages/help/package/index"
],
"window": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "Weixin",
"navigationBarBackgroundColor": "#ffffff"
},
"tabBar": {
"color": "#999999",
"selectedColor": "#4285FF",
"backgroundColor": "#ffffff",
"borderStyle": "white",
"list": [
{
"pagePath": "pages/help/index/index",
"text": "帮忙",
"iconPath": "assets/icon/tabs/tab1@2x.png",
"selectedIconPath": "assets/icon/tabs/tab1-active@2x.png"
},
{
"pagePath": "pages/savemoney/index/index",
"text": "省钱",
"iconPath": "assets/icon/tabs/tab2@2x.png",
"selectedIconPath": "assets/icon/tabs/tab2-active@2x.png"
},
{
"pagePath": "pages/order/index/index",
"text": "订单",
"iconPath": "assets/icon/tabs/tab3@2x.png",
"selectedIconPath": "assets/icon/tabs/tab3-active@2x.png"
},
{
"pagePath": "pages/my/index/index",
"text": "我的",
"iconPath": "assets/icon/tabs/tab4@2x.png",
"selectedIconPath": "assets/icon/tabs/tab4-active@2x.png"
}
]
},
"style": "v2",
"componentFramework": "glass-easel",
"sitemapLocation": "sitemap.json",

View File

@ -1,10 +1,50 @@
/**app.wxss**/
.container {
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
padding: 200rpx 0;
box-sizing: border-box;
page{
font-size:32rpx;
line-height: 1;
background-color:#F5F5F5;
}
button label{
display: inline-block;
margin-left: 10rpx;
}
button .icon,button label{
vertical-align: middle;
}
button:not([size=mini]){
width:auto;
/* height: 108rpx; */
padding:30rpx 25rpx;
font-size: 36rpx;
}
button:not([size=mini]) .icon{
width:32rpx;height:32rpx;
}
button[type=primary]{
background-color:#1A4DEB;
}
button[type=primary]:hover{
background-color:#043eec;
}
button[type=default]{
color: #333333;
font-size:32rpx;
line-height: 1;
}
radio-group label,radio-group radio{
vertical-align: middle;
}
radio-group label{
margin-left:14rpx;
}
.page-container{
background-color: #fff;
border-radius: 20rpx;
padding:30rpx;
margin:20rpx;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 755 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
assets/icon/help/icon1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 858 B

BIN
assets/icon/help/icon2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 981 B

BIN
assets/icon/help/icon3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 621 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@ -0,0 +1,33 @@
// components/navBar.js
Component({
/**
* 组件的属性列表
*/
properties: {
},
/**
* 组件的初始数据
*/
data: {
statusBarHeight:0,
navBarHeight:44
},
lifetimes:{
attached(){
console.log('1212121212');
const windowInfo = wx.getWindowInfo();
this.setData({
statusBarHeight:windowInfo.statusBarHeight
})
}
},
/**
* 组件的方法列表
*/
methods: {
}
})

View File

@ -0,0 +1,4 @@
{
"component": true,
"usingComponents": {}
}

View File

@ -0,0 +1,5 @@
<view class="nav-bar" style="padding-top:{{statusBarHeight}}px;">
<view class="nav-bar-content" style="height:{{navBarHeight}}px;">
<image class="logo" src="/assets/icon/navbar/lanfeng@2x.png"/>
</view>
</view>

View File

@ -0,0 +1,13 @@
/* components/navBar.wxss */
.nav-bar{
text-align: center;
}
.nav-bar-content{
display: flex;
align-items: center;
justify-content: center;
}
.nav-bar .logo{
width:168rpx;
height:42rpx;
}

71
pages/help/index/index.js Normal file
View File

@ -0,0 +1,71 @@
// pages/help/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
index:0,
array:[1,2,3,4]
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
},
goToAddPackage(){
wx.navigateTo({
url: '/pages/help/package/index',
})
}
})

View File

@ -0,0 +1,6 @@
{
"usingComponents": {
"nav-bar":"/components/navbar"
},
"navigationStyle": "custom"
}

View File

@ -0,0 +1,53 @@
<view>
<view class="bg"></view>
<nav-bar/>
<picker bindchange="bindPickerChange" value="{{index}}" range="{{array}}">
<view class="choose-community">
<view class="text">选择小区</view>
<image class="arrow" src="/assets/icon/help/arrow-down@2x.png"/>
</view>
</picker>
<view class="address-panel">
<picker>
<view class="ap-item send">
<image class="icon" src="/assets/icon/help/send@2x.png"/>
<view class="text">
<view class="title">朝阳时代西锦12栋1单元2072朝阳时代西锦12栋1单元2072</view>
<view class="sub-title">周先生 13888888888</view>
</view>
<image class="arrow" src="/assets/icon/help/arrow-right@2x.png"/>
</view>
</picker>
<view class="ap-item take" bind:tap="goToAddPackage">
<image class="icon" src="/assets/icon/help/take@2x.png"/>
<view class="text">
<view class="title">送达地址</view>
<view class="sub-title"></view>
</view>
<image class="arrow" src="/assets/icon/help/arrow-right@2x.png"/>
</view>
<view class="line"></view>
<view class="bottom">
<view class="item">
<image class="icon" src="/assets/icon/help/icon1.png"/>
<view class="text">方便快捷</view>
</view>
<view class="item">
<image class="icon" src="/assets/icon/help/icon2.png"/>
<view class="text">方便快捷</view>
</view>
<view class="item">
<image class="icon" src="/assets/icon/help/icon3.png"/>
<view class="text">方便快捷</view>
</view>
</view>
</view>
<button type="primary" class="order-button">立即下单</button>
<view class="promotion-panel">
<view class="text">
<view class="title">您有<label class="spec">2张</label>免费跑腿券待领取</view>
<view class="sub-title">先领券,再下单,立享免费跑腿</view>
</view>
<button class="button" type="primary">领</button>
</view>
</view>

125
pages/help/index/index.wxss Normal file
View File

@ -0,0 +1,125 @@
.bg{
background: linear-gradient(180deg, #1A4DEB 62%, #F8F9FB 100%);
height:90vw;
width:100%;
position:absolute;
z-index:-1;
}
.choose-community{
padding:90rpx 40rpx 70rpx;
position: relative;
color:#fff;
font-size:0;
}
.choose-community .text{
font-size:32rpx;
display:inline-block;
vertical-align: middle;
}
.choose-community .arrow{
width:20rpx;
height:10rpx;
vertical-align: middle;
margin-left:20rpx;
}
.address-panel{
background-color: #fff;
box-shadow: 0px 4px 8px 2px rgba(0, 0, 0, 0.05);
border-radius: 20rpx;
margin:0 20rpx;
padding:0 30rpx 0 48rpx;
}
.address-panel .ap-item{
display:flex;
align-items: center;
color:#222222;
line-height: 1.7;
padding:34rpx 0;
}
.address-panel .ap-item .icon{
width:40rpx;height:40rpx;
align-self: flex-start;
margin-top:3px
}
.address-panel .ap-item .text{
flex:1;
margin-left:30rpx;
line-height: 1;
}
.address-panel .ap-item .text .title{
line-height: 48rpx;
}
.address-panel .ap-item .text .sub-title{
color:#7C8695;
font-size: 14px;
margin-top:22rpx;
}
.address-panel .arrow{
width: 30rpx;height:30rpx;
}
.address-panel .line{
border-bottom: 0.5px dashed rgba(124, 134, 149, 0.3);
margin-top:26rpx;
margin-right:10rpx;
}
.address-panel .bottom{
display: flex;
justify-content: space-between;
margin-right:10rpx;
padding:34rpx 0 40rpx 0;
}
.address-panel .bottom .item{
font-size:0;
line-height: 1;
}
.address-panel .bottom .icon{
width:28rpx;height:28rpx;
margin-top:0;
vertical-align: middle;
}
.address-panel .bottom .text{
color: #7C8695;
font-size: 24rpx;
margin-left: 8rpx;
display: inline-block;
vertical-align: middle;
}
.order-button{
margin:40rpx 20rpx!important;
}
.promotion-panel{
display: flex;
border: 1px solid rgba(26, 77, 235, 0.5);
margin:44rpx 20rpx;
border-radius: 20rpx;
padding:32rpx 32rpx 32rpx 40rpx;
align-items: center;
}
.promotion-panel .text{
flex:1;
}
.promotion-panel .text .title{
font-size:34rpx;
font-weight: 500;
}
.promotion-panel .text .title .spec{
color: #1A4DEB;
}
.promotion-panel .text .sub-title{
font-size: 28rpx;
color: #7C8695;
margin-top:26rpx;
}
.promotion-panel .button{
width:100rpx;
height:100rpx;
border-radius: 50%;
padding:0;
line-height: 100rpx;
}

View File

@ -0,0 +1,65 @@
// pages/help/package/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,4 @@
{
"usingComponents": {},
"navigationStyle": "default"
}

View File

@ -0,0 +1,54 @@
<view class="page-container">
<view class="head">
<image class="icon" src="/assets/icon/help/house@2x.png"/>
<view class="text">
<view class="title">妈妈驿站(朝阳时代西锦)</view>
<view class="sub-title">服务时间 10:00-80:30</view>
</view>
</view>
<button type="default" class="button">
<image src="/assets/icon/help/plus@2x.png" class="icon"/>
<label>添加取件码</label>
</button>
</view>
<view class="page-container">
<view class="head">
<image class="icon" src="/assets/icon/help/house@2x.png"/>
<view class="text">
<view class="title">菜鸟驿站(朝阳时代西锦)</view>
<view class="sub-title">服务时间 10:00-21:00</view>
</view>
</view>
<button type="default" class="button">
<image src="/assets/icon/help/plus@2x.png" class="icon"/>
<label>添加取件码</label>
</button>
</view>
<view class="page-container">
<radio-group class="radio" value="1">
<label>
<radio value="1" checked/>
<label>敲门递件</label>
</label>
<label>
<radio value="2"/>
<label>放在门口</label>
</label>
</radio-group>
</view>
<view class="page-container">
<view class="kv-item">
<view class="key">取件量</view>
<view class="value">2</view>
</view>
<view class="kv-item">
<view class="key">跑腿券</view>
<view class="value yellow">0张</view>
</view>
<view class="kv-item">
<view class="key">跑腿费</view>
<view class="value red">¥3.5</view>
</view>
<view class="tips">*基础费3元 (含5件包裹) 超出部分0.5元/件</view>
</view>

View File

@ -0,0 +1,55 @@
.page-container{
}
.page-container .head{
display: flex;
}
.page-container .head .icon{
width:40rpx;height:40rpx;
}
.page-container .head .text{
flex:1;
padding-left:10rpx;
}
.page-container .head .title{
font-size: 34rpx;
}
.page-container .head .sub-title{
font-size:26rpx;
color: #888888;
margin-top:24rpx;
}
.page-container .button{
margin-top:34rpx;
}
.page-container .radio{
display: flex;
justify-content: space-around;
}
.page-container .kv-item{
display:flex;
margin:12rpx 0 50rpx 0;
}
.page-container .kv-item .key{
font-size: 30rpx;
}
.page-container .kv-item .value{
font-weight: 500;
}
.page-container .kv-item .yellow{
color: #FF8400;
}
.page-container .kv-item .red{
color: #EB0000;
}
.page-container .kv-item .key{
flex:1
}
.page-container .tips{
font-size: 26rpx;
color: #888888
}

View File

@ -7,7 +7,7 @@
<image class="avatar" src="{{userInfo.avatarUrl}}"></image>
</button>
<view class="nickname-wrapper">
<text class="nickname-label">昵称</text>
<text class="nickname-label">昵称1</text>
<input type="nickname" class="nickname-input" placeholder="请输入昵称" bind:change="onInputChange" />
</view>
</block>
@ -24,4 +24,10 @@
<text class="user-motto">{{motto}}</text>
</view>
</view>
<view>
<navigator>123</navigator>
<navigator>123</navigator>
<navigator>123</navigator>
</view>
</scroll-view>

28
pages/login/login.js Normal file
View File

@ -0,0 +1,28 @@
Page({
data: {
isAgree: false
},
handleAgreeChange(e) {
this.setData({
isAgree: e.detail.value.length > 0
})
},
handleLogin() {
if (!this.data.isAgree) {
wx.showToast({
title: '请先同意用户协议和隐私政策',
icon: 'none'
})
return
}
wx.login({
success: (res) => {
// 实现登录逻辑
console.log('登录成功', res)
}
})
}
})

4
pages/login/login.json Normal file
View File

@ -0,0 +1,4 @@
{
"navigationStyle": "custom",
"backgroundColor": "#4555FF"
}

34
pages/login/login.wxml Normal file
View File

@ -0,0 +1,34 @@
<view class="login-container">
<!-- 顶部导航区域 -->
<view class="nav-area">
<view class="home-icon">
<image src="/assets/images/home.png" mode="aspectFit"></image>
</view>
<view class="more-icon">
<image src="/assets/images/more.png" mode="aspectFit"></image>
</view>
</view>
<!-- 标题区域 -->
<view class="title-area">
<view class="main-title">闪兔到家</view>
<view class="sub-title">一刻钟便民生活圈</view>
</view>
<!-- 登录区域 -->
<view class="login-area">
<!-- 协议勾选 -->
<view class="agreement">
<checkbox-group bindchange="handleAgreeChange">
<checkbox value="agree" checked="{{isAgree}}"/>
<text>我已阅读并同意</text>
<text class="link">《用户协议》</text>
<text>与</text>
<text class="link">《隐私政策》</text>
</checkbox-group>
</view>
<!-- 登录按钮 -->
<button class="login-btn" hover-class="none" bindtap="handleLogin">手机号快捷登录</button>
</view>
</view>

106
pages/login/login.wxss Normal file
View File

@ -0,0 +1,106 @@
.login-container {
min-height: 100vh;
background-color: #4555FF;
padding: 0 40rpx;
position: relative;
}
.nav-area {
display: flex;
justify-content: space-between;
align-items: center;
padding-top: 120rpx;
}
.home-icon,
.more-icon {
width: 80rpx;
height: 80rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
}
.home-icon image,
.more-icon image {
width: 36rpx;
height: 36rpx;
}
.title-area {
margin-top: 120rpx;
color: #fff;
}
.main-title {
font-size: 72rpx;
font-weight: bold;
margin-bottom: 24rpx;
letter-spacing: 4rpx;
}
.sub-title {
font-size: 36rpx;
opacity: 0.9;
}
.login-area {
position: fixed;
left: 40rpx;
right: 40rpx;
bottom: 80rpx;
}
.agreement {
color: #fff;
font-size: 26rpx;
margin-bottom: 40rpx;
display: flex;
align-items: center;
}
.agreement checkbox-group {
display: flex;
align-items: center;
}
.agreement .link {
color: #fff;
text-decoration: underline;
padding: 0 4rpx;
}
.login-btn {
background: linear-gradient(90deg, #0BBFF5 0%, #4285FF 100%);
color: #fff;
font-size: 32rpx;
font-weight: 500;
border-radius: 45rpx;
height: 100rpx;
line-height: 100rpx;
box-shadow: 0 8rpx 20rpx rgba(66, 133, 255, 0.3);
}
.login-btn::after {
border: none;
}
checkbox .wx-checkbox-input {
width: 32rpx;
height: 32rpx;
border-radius: 50%;
border-color: rgba(255, 255, 255, 0.8);
margin-right: 12rpx;
}
checkbox .wx-checkbox-input.wx-checkbox-input-checked {
background-color: #fff;
border-color: #fff;
}
checkbox .wx-checkbox-input.wx-checkbox-input-checked::before {
color: #4555FF;
font-size: 24rpx;
}

66
pages/my/index/index.js Normal file
View File

@ -0,0 +1,66 @@
// pages/my/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@ -0,0 +1,2 @@
<!--pages/my/index/index.wxml-->
<text>pages/my/index/index.wxml</text>

View File

@ -0,0 +1 @@
/* pages/my/index/index.wxss */

View File

@ -0,0 +1,66 @@
// pages/order/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@ -0,0 +1,2 @@
<!--pages/order/index/index.wxml-->
<text>pages/order/index/index.wxml</text>

View File

@ -0,0 +1 @@
/* pages/order/index/index.wxss */

View File

@ -0,0 +1,66 @@
// pages/savemoney/index/index.js
Page({
/**
* 页面的初始数据
*/
data: {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})

View File

@ -0,0 +1,3 @@
{
"usingComponents": {}
}

View File

@ -0,0 +1,2 @@
<!--pages/savemoney/index/index.wxml-->
<text>pages/savemoney/index/index.wxml</text>

View File

@ -0,0 +1 @@
/* pages/savemoney/index/index.wxss */

View File

@ -24,5 +24,5 @@
"tabIndent": "auto",
"tabSize": 2
},
"appid": "wxede5da1043505ae7"
"appid": "wx3cc5b7dcb28f2756"
}