ZZ 1 mesiac pred
rodič
commit
ddb8592da9

+ 13 - 0
mer_uniapp/pages.json

@@ -1055,6 +1055,19 @@
 							// #endif
 						}
 					}
+				},
+				{
+					"path": "stage_address/index",
+					"style": {
+						"navigationBarTitleText": "驿站地址",
+						"app-plus": {
+							// #ifdef APP-PLUS
+							"titleNView": {
+								"type": "default"
+							}
+							// #endif
+						}
+					}
 				}
 			]
 			// "plugins": {

+ 374 - 0
mer_uniapp/pages/address/stage_address/index.vue

@@ -0,0 +1,374 @@
+<template>
+	<view class="section" :data-theme="theme">
+		<view class='line'>
+			<image src='../static/images/line.png' v-if="addressList.length"></image>
+		</view>
+		<view class='address-management' :class='addressList.length < 1 && page > 1 ? "fff":""'>
+			<radio-group class="radio-group" @change="radioChange" v-if="addressList.length">
+				<view class='item borRadius14' v-for="(item,index) in addressList" :key="index">
+					<view class='address' @click='goOrder(item.id, item)'>
+						<view class='consignee'>驿站名称:{{item.name}}</view>
+						<view>驿站地址:{{item.address}}</view>
+					</view>
+					<view class='operation acea-row row-between-wrapper'>
+						<!-- #ifndef MP -->
+						<radio class="radio" :value="index.toString()" :checked="item.isDefault">
+							<text>设为默认</text>
+						</radio>
+						<!-- #endif -->
+						<!-- #ifdef MP -->
+						<radio class="radio" :value="index" :checked="item.isDefault">
+							<text>设为默认</text>
+						</radio>
+						<!-- #endif -->
+						<view class='acea-row row-middle'>
+							<view @click='editAddress(item)'><text class='iconfont icon-bianji'></text>编辑</view>
+							<view @click='delAddress(index)'><text class='iconfont icon-shanchu'></text>删除</view>
+						</view>
+					</view>
+				</view>
+			</radio-group>
+			<view class='loadingicon acea-row row-center-wrapper'>
+				<text class='loading iconfont icon-jiazai' :hidden='loading==false'></text>
+			</view>
+			<emptyPage v-if="addressList.length == 0 && !loading" title="暂无添加地址~" :imgSrc="urlDomain+'crmebimage/presets/noAddress.png'"></emptyPage>
+			<view style='height:120rpx;'></view>
+		</view>
+		<view class='footer acea-row row-between-wrapper'>
+			<!-- #ifdef APP-PLUS -->
+			<view class='addressBnt bg_color on' @click='addAddress'><text class='iconfont icon-tianjiadizhi'></text>添加新地址</view>
+			<!-- #endif -->
+			<!-- #ifdef MP-->
+			<view class='addressBnt bg_color' @click='addAddress'><text class='iconfont icon-tianjiadizhi'></text>添加新地址
+			</view>
+			<!-- #endif -->
+			<!-- #ifdef H5-->
+			<view class='addressBnt bg_color' :class="this.$wechat.isWeixin()?'':'on'" @click='addAddress'><text class='iconfont icon-tianjiadizhi'></text>添加新地址</view>
+			<!-- #endif -->
+		</view>
+
+		<!-- #ifdef MP -->
+		<atModel v-if="locationStatus" :locationType="true" @closeModel="modelCancel" @confirmModel="confirmModel" :content="locationContent"></atModel>
+		<!-- #endif -->
+	</view>
+</template>
+
+<script>
+	// +----------------------------------------------------------------------
+	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+	// +----------------------------------------------------------------------
+	// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+	// +----------------------------------------------------------------------
+	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+	// +----------------------------------------------------------------------
+	// | Author: CRMEB Team <admin@crmeb.com>
+	// +----------------------------------------------------------------------
+	import {
+		getAddressList,
+		setAddressDefault,
+		delAddress,
+		editAddress,
+		postAddress
+	} from '@/api/user.js';
+	import emptyPage from '@/components/emptyPage.vue';
+	import atModel from '@/components/accredit/index.vue';
+	import {
+		toLogin
+	} from '@/libs/login.js';
+	import {
+		mapGetters
+	} from "vuex";
+	let app = getApp();
+	export default {
+		components: {
+			emptyPage,
+			atModel
+		},
+		data() {
+			return {
+				urlDomain: this.$Cache.get("imgHost"),
+				addressList: [],
+				cartId: '',
+				pinkId: 0,
+				couponId: 0,
+				loading: false,
+				loadend: false,
+				loadTitle: '加载更多',
+				page: 1,
+				limit: 20,
+				theme: app.globalData.theme,
+				locationContent: '授权位置信息,提供完整服务',
+				locationStatus: false
+			};
+		},
+		computed: mapGetters(['isLogin']),
+		watch: {
+			isLogin: {
+				handler: function(newV, oldV) {
+					if (newV) {
+						this.getUserAddress(true);
+					}
+				},
+				deep: true
+			}
+		},
+		onLoad(options) {
+			if (this.isLogin) {
+				this.orderNo = options.orderNo || 0;
+				this.getAddressList(true);
+			} else {
+				toLogin();
+			}
+		},
+		onShow: function() {
+			let that = this;
+			that.getAddressList(true);
+		},
+		methods: {
+			modelCancel() {
+				this.locationStatus = false;
+			},
+			chooseLocation: function(item) {
+				this.$util.$L.getLocation().then(res=>{
+					uni.chooseLocation({
+						latitude: item ? item.latitude : uni.getStorageSync('user_latitude'),
+						longitude: item ? item.longitude : uni.getStorageSync('user_longitude'),
+						success: (res) => {
+							console.log(res)
+						}
+					})
+				})
+			},
+			confirmModel() {
+				uni.getLocation({
+					type: 'gcj02',
+					altitude: true,
+					geocode: true,
+					success: function(res) {
+						try {
+							uni.setStorageSync('user_latitude', res.latitude);
+							uni.setStorageSync('user_longitude', res.longitude);
+						} catch {}
+					}
+				});
+				this.locationStatus = false;
+			},
+			/**
+			 * 获取地址列表
+			 *
+			 */
+			getAddressList: function(isPage) {
+				let that = this;
+				if (that.loading) return;
+				that.loading = true;
+				getAddressList().then(res => {
+					that.addressList = res.data;
+					that.loading = false;
+				}).catch(err => {
+					that.loading = false;
+				});
+			},
+			/**
+			 * 设置默认地址
+			 */
+			radioChange: function(e) {
+				let index = parseInt(e.detail.value),
+					that = this;
+				let address = this.addressList[index];
+				if (address == undefined) return that.$util.Tips({
+					title: '您设置的默认地址不存在!'
+				});
+				setAddressDefault(address.id).then(res => {
+					for (let i = 0, len = that.addressList.length; i < len; i++) {
+						if (i == index) that.addressList[i].isDefault = true;
+						else that.addressList[i].isDefault = false;
+					}
+					that.$util.Tips({
+						title: '设置成功',
+						icon: 'success'
+					}, function() {
+						that.$set(that, 'addressList', that.addressList);
+					});
+				}).catch(err => {
+					return that.$util.Tips({
+						title: err
+					});
+				});
+			},
+			/**
+			 * 编辑地址
+			 */
+			editAddress: function(item) {
+				this.chooseLocation(item)
+			},
+			/**
+			 * 删除地址
+			 */
+			delAddress: function(index) {
+				let that = this,
+					address = this.addressList[index];
+				if (address == undefined) return that.$util.Tips({
+					title: '您删除的地址不存在!'
+				});
+				uni.showModal({
+					content: '确定删除该地址',
+					cancelText: "取消", // 取消按钮的文字
+					confirmText: "确定", // 确认按钮文字
+					showCancel: true, // 是否显示取消按钮,默认为 true
+					confirmColor: '#f55850',
+					success: (res) => {
+						if (res.confirm) {
+							delAddress(address.id).then(res => {
+								that.addressList.splice(index, 1);
+								that.$set(that, 'addressList', that.addressList);
+								that.$util.Tips({
+									title: '删除成功',
+									icon: 'success'
+								});
+							}).catch(err => {
+								return that.$util.Tips({
+									title: err
+								});
+							});
+						} else {
+
+						}
+					},
+				})
+			},
+			/**
+			 * 新增地址
+			 */
+			addAddress: function() {
+				this.chooseLocation()
+			},
+			goOrder: function(id, item) {
+				uni.navigateBack({
+					delta: 1,
+					success(res) {
+						uni.$emit('addressItem', item)
+					}
+				})
+			},
+		},
+		onReachBottom: function() {
+			this.getAddressList();
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.address-management {
+		padding: 20rpx 30rpx;
+	}
+
+	.address-management.fff {
+		background-color: #fff;
+		height: 1300rpx
+	}
+
+	.bg_color {
+		@include main_bg_color(theme);
+	}
+
+	.line {
+		width: 100%;
+		height: 3rpx;
+
+		image {
+			width: 100%;
+			height: 100%;
+			display: block;
+		}
+	}
+
+	.address-management .item {
+		background-color: #fff;
+		padding: 0 20rpx;
+		margin-bottom: 20rpx;
+	}
+
+	.address-management .item .address {
+		padding: 35rpx 0;
+		border-bottom: 1rpx solid #eee;
+		font-size: 28rpx;
+		color: #282828;
+	}
+
+	.address-management .item .address .consignee {
+		font-size: 28rpx;
+		font-weight: bold;
+		margin-bottom: 8rpx;
+	}
+
+	.address-management .item .address .consignee .phone {
+		margin-left: 25rpx;
+	}
+
+	.address-management .item .operation {
+		height: 83rpx;
+		font-size: 28rpx;
+		color: #282828;
+	}
+
+	.address-management .item .operation .radio text {
+		margin-left: 13rpx;
+	}
+
+	.address-management .item .operation .iconfont {
+		color: #2c2c2c;
+		font-size: 35rpx;
+		vertical-align: -2rpx;
+		margin-right: 10rpx;
+	}
+
+	.address-management .item .operation .iconfont.icon-shanchu {
+		margin-left: 35rpx;
+		font-size: 38rpx;
+	}
+
+	.footer {
+		position: fixed;
+		width: 100%;
+		background-color: #fff;
+		bottom: 0;
+		height: 106rpx;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+	}
+
+	.footer .addressBnt {
+		width: 100%;
+		height: 76rpx;
+		border-radius: 50rpx;
+		text-align: center;
+		line-height: 76rpx;
+		font-size: 30rpx;
+		color: #fff;
+	}
+
+	.footer .addressBnt.on {
+		width: 690rpx;
+		margin: 0 auto;
+	}
+
+	.footer .addressBnt .iconfont {
+		font-size: 35rpx;
+		margin-right: 8rpx;
+		vertical-align: -1rpx;
+	}
+
+	.footer .addressBnt.wxbnt {
+		@include left_color(theme);
+	}
+
+	/deep/ radio .wx-radio-input.wx-radio-input-checked {
+		@include main_bg_color(theme);
+		@include coupons_border_color(theme);
+	}
+
+	/deep/ radio .uni-radio-input.uni-radio-input-checked {
+		@include main_bg_color(theme);
+		border: none !important;
+	}
+</style>

+ 9 - 2
mer_uniapp/pages/address/user_address_list/index.vue

@@ -6,7 +6,7 @@
 		<view class='address-management' :class='addressList.length < 1 && page > 1 ? "fff":""'>
 			<radio-group class="radio-group" @change="radioChange" v-if="addressList.length">
 				<view class='item borRadius14' v-for="(item,index) in addressList" :key="index">
-					<view class='address' @click='goOrder(item.id)'>
+					<view class='address' @click='goOrder(item.id, item)'>
 						<view class='consignee'>收货人:{{item.realName}}<text class='phone'>{{item.phone}}</text></view>
 						<view>收货地址:{{item.province}}{{item.city}}{{item.district}}{{ item.street}}{{item.detail}}</view>
 					</view>
@@ -241,12 +241,19 @@
 					url: '/pages/address/user_address/index?orderNo=' + this.orderNo
 				})
 			},
-			goOrder: function(id) {
+			goOrder: function(id, item) {
 				if (this.orderNo) {
 					uni.redirectTo({
 						url: '/pages/goods/order_confirm/index?is_address=1&orderNo=' + this.orderNo +
 							'&addressId=' + id
 					})
+				} else {
+					uni.navigateBack({
+						delta: 1,
+						success (res) {
+							uni.$emit('addressItem', item)
+						}
+					})
 				}
 			},
 		},

+ 1 - 1
mer_uniapp/pages/rider_index/components/rider_me/index.vue

@@ -43,7 +43,7 @@
 				}, {
 					id: 3,
 					name: '返回用户端',
-					img: '/static/img/run-errands.png',
+					img: '/static/img/ic-rider-app.png',
 					pagePath: ''
 				}],
 			}

+ 182 - 0
mer_uniapp/pages/substitute_fast_mail/components/fast_mail_order/index.vue

@@ -0,0 +1,182 @@
+<template>
+	<view>
+		<view class="cart_nav acea-row">
+			<!-- #ifdef MP-->
+			<view class="mp-header" :style="{top: navH + 'rpx'}">
+				<view class="flex-col flex-center" style="background-color: #fff;">
+					<view class="flex-y-center" style="justify-content: space-between;padding: 10rpx 19rpx 38rpx 19rpx;width: 100%;">
+						<view style="opacity: 0;">1</view>
+						<view style="font-weight: 600;font-size: 27rpx;color: #141414;">订单提交成功</view>
+						<image style="width: 39rpx;height: 39rpx;" src="/static/img/chacha.png" @tap="onCancel"></image>
+					</view>
+					<view class="flex-wrap flex-around-center">
+						<view class="send-item">
+							<view class="flex-between-center">
+								<view class="remark-name">取件地</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">送件地</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">取件时间</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">取件信息</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">规格必选</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">可选附图</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">可选服务</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">小费</view>
+								<view class="flex-y-center">暂无</view>
+							</view>
+							<view class="flex-between-center">
+								<view class="remark-name">备注</view>
+								<view class="flex-y-center"></view>
+							</view>
+						</view>
+					</view>
+					<view class="mark">预计金额 ¥ <text style="font-size: 31rpx;">8.00</text></view>
+					<button class="sub flex-center" @tap="onSure">确定</button>
+				</view>
+			</view>
+			<!-- #endif -->
+		</view>
+	</view>
+</template>
+
+<script>
+	// +----------------------------------------------------------------------
+	// | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
+	// +----------------------------------------------------------------------
+	// | Copyright (c) 2016~2025 https://www.crmeb.com All rights reserved.
+	// +----------------------------------------------------------------------
+	// | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
+	// +----------------------------------------------------------------------
+	// | Author: CRMEB Team <admin@crmeb.com>
+	// +----------------------------------------------------------------------
+	import {
+		mapGetters
+	} from "vuex";
+	export default {
+		data() {
+			return {
+				navH: '',
+				tipIndex: 1,
+				tipValue: 1,
+				tipData: [{
+						id: 1,
+						value: 1
+					},
+					{
+						id: 2,
+						value: 3
+					},
+					{
+						id: 3,
+						value: 5
+					},
+					{
+						id: 4,
+						value: 6
+					},
+					{
+						id: 5,
+						value: 8
+					},
+					{
+						id: 6,
+						value: 10
+					}
+				]
+			}
+		},
+		props: {},
+		computed: mapGetters(['globalData']),
+		created() {
+			// #ifdef MP || APP-PLUS
+			// 获取导航高度;
+			this.navH = this.globalData.navHeight;
+			// #endif
+			// #ifdef H5
+			this.navH = 80;
+			// #endif
+		},
+		methods: {
+			onSure() {
+				this.$emit('tipValue', this.tipValue)
+			},
+			onCancel() {
+				this.$emit('onCancel', false)
+			}
+		}
+	}
+</script>
+
+<style scoped lang="scss">
+	/* #ifdef MP || APP-PLUS */
+	.mp-header {
+		border-bottom-left-radius: 23rpx;
+		position: fixed;
+		z-index: 99999;
+		background: rgba(33, 33, 33, 0.8);
+		width: 100%;
+		height: 100%;
+		/* #ifdef H5 */
+		padding-bottom: 20rpx;
+		/* #endif */
+
+		.tip-box {
+			width: 27%;
+			height: 58rpx;
+			background: rgba(255, 103, 2, 0.1);
+			border-radius: 8rpx;
+			border: 2rpx solid #FF6702;
+			font-size: 23rpx;
+			color: $bg-color-primary;
+			// padding: 12rpx 60rpx;
+		}
+
+		.active-tip {
+			color: #FFFFFF;
+			background: linear-gradient(180deg, #FFAC3D 0%, #FF1E1D 100%) !important;
+			border: none !important;
+		}
+	}
+
+	/* #endif */
+	.cart_nav {
+		z-index: 99999;
+		width: 100%;
+		height: 100%;
+	}
+
+	.sub {
+		background-color: $bg-color-primary;
+		width: 308rpx;
+		height: 77rpx;
+		font-weight: 500;
+		font-size: 31rpx;
+		color: #FFFFFF;
+		margin: 58rpx 0 96rpx 0;
+	}
+	
+	.mark {
+		font-weight: 500;
+		font-size: 23rpx;
+		color: $bg-color-primary;
+	}
+</style>

+ 11 - 8
mer_uniapp/pages/substitute_fast_mail/components/send_fast_mail/index.vue

@@ -2,9 +2,9 @@
 	<view style="background-color: #F5F5F5;" class="flex-col">
 		<view style="padding: 40rpx 24rpx;background-color: #fff;border-bottom-left-radius: 23rpx;">
 			<view class="flex-y-center flex-between-center" style="margin-bottom: 20rpx;">
-				<view class="flex-y-center">
-					<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-message.png"></image>
-					<view style="margin-left: 29rpx;">
+				<view class="flex-y-center" style="flex: 1">
+					<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-shou.png"></image>
+					<view style="margin-left: 29rpx;flex: 1">
 						<view class="send-name">到哪里收</view>
 						<view class="send-tips">请输入收件人信息</view>
 					</view>
@@ -12,12 +12,12 @@
 				<view class='iconfont icon-jiantou' style="font-size: 55rpx;"></view>
 			</view>
 			<view class="flex-y-center flex-between-center" style="margin-bottom: 20rpx">
-				<view class="flex-y-center">
-					<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-message.png"></image>
-					<view style="margin-left: 29rpx;">
-						<view class="send-name">到哪里</view>
+				<view class="flex-y-center" style="flex: 1">
+					<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-ji.png"></image>
+					<view style="margin-left: 29rpx;flex: 1">
+						<view class="send-name">到哪里</view>
 						<view class="send-tips">请输入寄件人信息</view>
-						<view style="font-weight: 500;font-size: 23rpx;color: #FF6702;">可送单时间段00:00——17:00</view>
+						<!-- <view style="font-weight: 500;font-size: 23rpx;color: #FF6702;">可送单时间段00:00——17:00</view> -->
 					</view>
 				</view>
 				<view class="flex-y-center">
@@ -56,6 +56,9 @@
 				</view>
 			</view>
 		</view>
+		<view class="courie flex-y-center">
+			<image src="/static/img/ic-courie.png" mode=""></image><text>当前1名快递员接单</text>
+		</view>
 	</view>
 </template>
 

+ 147 - 19
mer_uniapp/pages/substitute_fast_mail/components/take_fast_mail/index.vue

@@ -14,30 +14,47 @@
 			<view class='list flex-col' style="background-color: #F5F5F5;">
 				<view style="padding: 40rpx 24rpx;background-color: #fff;border-bottom-left-radius: 23rpx;">
 					<view class="flex-y-center flex-between-center" style="margin-bottom: 20rpx;">
-						<view class="flex-y-center">
-							<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-message.png"></image>
-							<view style="margin-left: 29rpx;">
+						<view class="flex-y-center" style="flex: 1">
+							<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-shou.png"></image>
+							<view style="margin-left: 29rpx;flex: 1;">
 								<view class="send-name">送到哪里</view>
-								<view class="send-tips">请输入收件人信息</view>
-								<view style="font-weight: 500;font-size: 23rpx;color: #FF6702;">可送单时间段00:00——23:59</view>
+								<view v-if="!addressObj" class="send-tips">请输入收件人信息</view>
+								<view class="send-info" v-else>
+									<view class='consignee'>收货人:{{addressObj.realName}}<text class='phone'>{{addressObj.phone}}</text></view>
+									<view>收货地址:{{addressObj.province}}{{addressObj.city}}{{addressObj.district}}{{ addressObj.street}}{{addressObj.detail}}</view>
+								</view>
+								<!-- <view style="font-weight: 500;font-size: 23rpx;color: #FF6702;">可送单时间段00:00——23:59</view> -->
 							</view>
 						</view>
-						<view class='iconfont icon-jiantou' style="font-size: 55rpx;margin-left: 29rpx;"></view>
+						<navigator url="/pages/address/user_address_list/index">
+							<view class='iconfont icon-jiantou' style="font-size: 55rpx;margin-left: 29rpx;"></view>
+						</navigator>
 					</view>
-					<view class="flex-y-center flex-between-center" style="margin-bottom: 20rpx" @tap="isPoint = true">
-						<view class="flex-y-center">
-							<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-message.png"></image>
-							<view style="margin-left: 29rpx;">
+					<view class="flex-y-center flex-between-center" style="margin-bottom: 20rpx">
+						<view class="flex-y-center" style="flex: 1">
+							<image style="width: 135rpx; height: 135rpx;border-radius: 50%;" src="/static/img/ic-qu-chengse.png"></image>
+							<view style="margin-left: 29rpx;flex: 1;" @tap="chooseLocation">
 								<view class="send-name">到哪里取</view>
-								<view class="send-tips">请输入寄件人信息</view>
-								<view style="font-weight: 500;font-size: 23rpx;color: #FF6702;">可送单时间段00:00——17:00</view>
+								<view class="send-tips" v-if="!pickUpAddress.name">请输入取货地址</view>
+								<view class="send-info" v-else>
+									<view class='consignee'>取货地:{{pickUpAddress.name}}</view>
+									<view>详细地址:{{pickUpAddress.address}}</view>
+								</view>
+								<!-- <view style="font-weight: 500;font-size: 23rpx;color: #FF6702;">可送单时间段00:00——17:00</view> -->
 							</view>
 						</view>
-						<view class='iconfont icon-jiantou' style="font-size: 55rpx;margin-left: 29rpx;"></view>
+						<view class='iconfont icon-jiantou' style="font-size: 55rpx;margin-left: 29rpx;" @tap="isPoint = true"></view>
 					</view>
 				</view>
 				<view class="send-item">
 					<view class="flex-between-center">
+						<view class="remark-name">送达时间</view>
+						<view class="flex-y-center" v-if="!visible" @tap="visible = true">
+							<view style="color: #17C24B;font-size: 27rpx;">尽快送达</view>
+							<view class='iconfont icon-jiantou' style="font-size: 30rpx;margin: 0 19rpx;"></view>
+						</view>
+					</view>
+					<view class="flex-between-center">
 						<view class="remark-name">取件信息</view>
 						<view class="flex-y-center">
 							<input class="uni-input" focus placeholder="请输入内容" />
@@ -76,8 +93,30 @@
 						</view>
 					</view>
 				</view>
+				<view class="courie flex-y-center">
+					<image src="/static/img/ic-courie.png" mode=""></image><text>当前1名快递员接单</text>
+				</view>
 			</view>
 		</view>
+		<view v-if="visible" class="picker-box">
+			<picker-view :indicator-style="indicatorStyle" class="picker-view" @change="bindChange">
+				<view class="top flex-between-center">
+					<text @tap="visible = false">取消</text>
+					<text>选择送达时间</text>
+					<text @tap="visible = false">确定</text>
+				</view>
+				<picker-view-column>
+					<view class="item-picker flex-center" v-for="(item,index) in days" :key="index">{{item.name}}</view>
+				</picker-view-column>
+				<picker-view-column>
+					<view class="item-picker flex-center" v-for="(item,index) in 24" :key="index">
+						<view v-if="item > 10 || item < 22">
+							{{item}} : 00
+						</view>
+					</view>
+				</picker-view-column>
+			</picker-view>
+		</view>
 		<fast-mail-tip v-if="isTip" @tipValue="onTipValue" @onCancel="onCanCel"></fast-mail-tip>
 		<fast-mail-specs v-if="isSpecs" @specsValue="onSpecsValue" @onCancel="onCanCel"></fast-mail-specs>
 		<fast-mail-figure v-if="isFigure" @figureValue="onFigureValue" @onCancel="onCanCel"></fast-mail-figure>
@@ -108,17 +147,39 @@
 			fastMailFigure,
 			fastMailPoint
 		},
+		props: {
+			addressObj: {
+				type: Object,
+				default: {}
+			}
+		},
 		data() {
 			return {
 				isTip: false, // 小费弹窗
 				isSpecs: false, // 规格弹窗
 				isFigure: false, // 附图弹窗
 				isPoint: false, // 选择快递点弹窗
+				visible: false, // 送达时间弹窗
+				timeValue: [],
 				fastMailObj: {},
+				hours: new Date().getHours(),
+				minutes: new Date().getMinutes(),
 				tipValue: 0,
 				winHeight: 0,
 				isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
 				autoplay: true,
+				pickUpAddress: {},
+				days: [{
+					id: 1,
+					name: '今天'
+				}, {
+					id: 2,
+					name: '明天'
+				}, {
+					id: 3,
+					name: '后天'
+				}],
+				times: [14, 15, 16, 17, 18, 19, 20],
 				navList: [{
 					id: 1,
 					name: '取单个快递'
@@ -128,9 +189,11 @@
 				}],
 				active: 1,
 				scrollLeft: 0,
+				addressId: 0, //地址id
+				indicatorStyle: `height: 50px;background-color: #F8F8F8;z-index: -1;`
 			};
 		},
-		onLoad() {
+		onLoad(options) {
 			let that = this;
 			uni.getSystemInfo({
 				success: function(res) {
@@ -138,11 +201,28 @@
 				},
 			});
 		},
-		/**
-		 * 生命周期函数--监听页面显示
-		 */
-		onShow: function() {},
+		onShow() {},
+		watch: {
+			addressObj(val) {
+				this.addressObj = val
+			}
+		},
 		methods: {
+			initTime() {
+
+			},
+			//选择定位
+			chooseLocation: function() {
+				this.$util.$L.getLocation().then(res => {
+					uni.chooseLocation({
+						latitude: uni.getStorageSync('user_latitude'),
+						longitude: uni.getStorageSync('user_longitude'),
+						success: (res) => {
+							this.pickUpAddress = res
+						}
+					})
+				})
+			},
 			tabSelect(active, e) {
 				this.active = active;
 				// this.scrollLeft = e * 60;
@@ -172,6 +252,9 @@
 				this.fastMailObj.pointObj = obj
 				this.isPoint = false
 				console.log(obj)
+			},
+			bindChange: function(e) {
+				console.log(e)
 			}
 		}
 	}
@@ -275,6 +358,17 @@
 		margin-bottom: 4rpx
 	}
 
+	.send-info {
+		font-size: 28rpx;
+		color: #282828;
+
+		.consignee {
+			font-size: 28rpx;
+			font-weight: bold;
+			margin-bottom: 8rpx;
+		}
+	}
+
 	.send-tips {
 		font-weight: 400;
 		font-size: 23rpx;
@@ -286,7 +380,7 @@
 		flex: 1;
 		overflow: hidden;
 		margin-top: 10rpx;
-		padding: 20rpx 0rpx 0 23rpx;
+		padding: 20rpx 0rpx 0 24rpx;
 		background: #FFFFFF;
 		border-radius: 23rpx 23rpx 0rpx 0rpx;
 
@@ -306,4 +400,38 @@
 			}
 		}
 	}
+	
+	.picker-box {
+		width: 100%;
+		height: 100%;
+		position: fixed;
+		z-index: 99999;
+		overflow: hidden;
+		background: rgba(33, 33, 33, 0.8);
+	}
+
+	.picker-view {
+		width: 100%;
+		height: 476rpx;
+		position: fixed;
+		bottom: 0;
+		left: 0;
+		z-index: 99999;
+		background-color: #fff;
+
+		.top {
+			position: absolute;
+			padding: 0 24rpx;
+			height: 100rpx;
+			width: 100%;
+			background-color: #F8F8F8;
+			color: #141414;
+			z-index: 99999;
+		}
+	}
+
+
+	.item-picker {
+		text-align: center;
+	}
 </style>

+ 129 - 5
mer_uniapp/pages/substitute_fast_mail/home/index.vue

@@ -6,7 +6,7 @@
 			</nav-bar>
 		</view>
 		<!-- #endif -->
-		<view class='newsList tui-skeleton' style="background-color: #fff;flex: 1;">
+		<view class='newsList tui-skeleton flex-col' style="background-color: #fff;flex: 1;">
 			<view class='nav'>
 				<scroll-view class="scroll-view_x" scroll-x scroll-with-animation :scroll-left="scrollLeft" style="width:auto;overflow:hidden;">
 					<block v-for="(item,index) in navList" :key="index">
@@ -17,15 +17,26 @@
 					</block>
 				</scroll-view>
 			</view>
-			<view class='list'>
+			<view class='list' style="flex: 1;">
 				<template v-if="active == 1">
-					<take-fast-mail></take-fast-mail>
+					<take-fast-mail ref="takeFastMailRef" :addressObj="addressItem"></take-fast-mail>
 				</template>
 				<template v-if="active == 2">
 					<send-fast-mail></send-fast-mail>
 				</template>
 			</view>
+			<!-- 购物车栏 begin -->
+			<view class="cart-box">
+				<view class="mark-box">
+					<view class="mark">应付 ¥ <text style="font-size: 31rpx;">8.00</text></view>
+					<view class="tips">普通用户 | 查看明细 》</view>
+				</view>
+				<button type="primary" class="pay-btn" @tap="toPay">
+					提交订单
+				</button>
+			</view>
 		</view>
+		<fast-mail-order v-if="isOrder"></fast-mail-order>
 	</view>
 </template>
 
@@ -44,16 +55,22 @@
 	import tuiSkeleton from '@/components/base/tui-skeleton.vue';
 	import sendFastMail from '../components/send_fast_mail/index.vue'
 	import takeFastMail from '../components/take_fast_mail/index.vue'
+	import fastMailOrder from '../components/fast_mail_order/index.vue'
+	import {
+		getAddressList
+	} from '@/api/user.js';
 	let app = getApp();
 	export default {
 		components: {
 			tuiSkeleton,
 			navBar,
 			sendFastMail,
-			takeFastMail
+			takeFastMail,
+			fastMailOrder
 		},
 		data() {
 			return {
+				isOrder: false,
 				winHeight: 0,
 				isNodes: 0, //控制什么时候开始抓取元素节点,只要数值改变就重新抓取
 				autoplay: true,
@@ -66,6 +83,7 @@
 				}],
 				active: 1,
 				scrollLeft: 0,
+				addressItem: {}
 			};
 		},
 		onLoad() {
@@ -75,21 +93,62 @@
 					that.winHeight = res.windowHeight
 				},
 			});
+			this.getaddressInfo()
 		},
 		/**
 		 * 生命周期函数--监听页面显示
 		 */
-		onShow: function() {},
+		onShow: function() {
+			let that = this;
+			uni.$on('addressItem', function(res) {
+				that.$set(that, 'addressItem', res);
+			})
+		},
 		methods: {
 			tabSelect(active, e) {
 				this.active = active;
 				this.scrollLeft = e * 60;
+			},
+			/*
+			 * 获取默认收货地址或者获取某条地址信息
+			 */
+			getaddressInfo: function() {
+				getAddressList().then(res => {
+					console.log('地址', res)
+					if (res.code = 200) {
+						if (res.data.length !== 0) {
+							this.addressItem = res.data.find(item => item.isDefault === true) || {} // this.addressItem = res.data[0];
+						} else {
+							this.addressItem = {}
+						}
+						console.log('默认地址', this.addressItem)
+					}
+				})
+			},
+			toPay() {
+				this.isOrder = true
+				console.log(this.$refs.takeFastMailRef, 'refffffffffffffffffffffffff')
+				console.log(this.formsObj, 1111111)
 			}
 		}
 	}
 </script>
 
 <style lang="scss">
+	.courie {
+		padding: 14rpx 24rpx 0 24rpx;
+		font-weight: 500;
+		font-size: 23rpx;
+		color: $bg-color-primary;
+		background-color: #fff;
+
+		image {
+			width: 46rpx;
+			height: 46rpx;
+			margin-right: 15rpx;
+		}
+	}
+
 	.newsList .swiper {
 		width: 100%;
 		position: relative;
@@ -180,4 +239,69 @@
 	.newsList .nav .item .line1 {
 		color: $bg-color-primary;
 	}
+
+	.cart-box {
+		height: 96rpx;
+		border-radius: 48rpx;
+		box-shadow: 0 0 20rpx rgba(0, 0, 0, 0.2);
+		background-color: #000;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+		z-index: 9999;
+
+		.pay-btn {
+			height: 100%;
+			padding: 0 30rpx;
+			color: #FFFFFF;
+			border-radius: 0 50rpx 50rpx 0;
+			display: flex;
+			align-items: center;
+			font-size: $font-size-base;
+			background-color: $bg-color-primary;
+		}
+
+		.mark-box {
+			padding-left: 46rpx;
+			margin-right: 30rpx;
+			position: relative;
+
+			.mark {
+				font-weight: 500;
+				font-size: 23rpx;
+				color: #FFFFFF;
+			}
+
+			.tips {
+				font-weight: 500;
+				font-size: 27rpx;
+				color: #999999;
+			}
+		}
+	}
+
+	.send-item {
+		flex: 1;
+		overflow: hidden;
+		margin-top: 10rpx;
+		padding: 88rpx 0rpx 0 23rpx;
+		background: #FFFFFF;
+		border-radius: 23rpx 23rpx 0rpx 0rpx;
+
+		.remark-name {
+			font-weight: 600;
+			font-size: 27rpx;
+			color: #141414;
+		}
+
+		.flex-between-center {
+			// padding: 19rpx 0;
+			height: 80rpx;
+			border-bottom: 2rpx solid #D6D7DC;
+
+			.flex-y-center {
+				height: 100%;
+			}
+		}
+	}
 </style>

BIN
mer_uniapp/static/img/ic-courie.png


BIN
mer_uniapp/static/img/ic-ji.png


BIN
mer_uniapp/static/img/ic-qu-chengse.png


BIN
mer_uniapp/static/img/ic-qu-lvse.png


BIN
mer_uniapp/static/img/ic-rider-app.png


BIN
mer_uniapp/static/img/ic-shou.png