上传文件有token的时候,添加token
This commit is contained in:
115
components/coupon-obj/coupon-obj.vue
Normal file
115
components/coupon-obj/coupon-obj.vue
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
<template>
|
||||||
|
<view>
|
||||||
|
<scroll-view style="height: 640rpx;background-color: #F6F6F6" scroll-y="true">
|
||||||
|
<view class="coupon-obj">
|
||||||
|
<view v-for="(item, index) in coupons" :key="index" class="mb20 bg-white" @tap="onSelect(item.id)">
|
||||||
|
<view class="coupon-item row">
|
||||||
|
<view class="price white column-center">
|
||||||
|
<view class="xl">
|
||||||
|
<price-format :subscript-size="34" :first-size="60" :second-size="50" :price="item.money" :weight="500"></price-format>
|
||||||
|
</view>
|
||||||
|
<view class="nr">{{item.use_condition}}</view>
|
||||||
|
</view>
|
||||||
|
<view class="row-between" style="flex: 1">
|
||||||
|
<view class="info ml20">
|
||||||
|
<view class="bold md bold mb10 line1">{{item.name}}</view>
|
||||||
|
<view class="xxs lighter mb10">{{item.coupon_type}}</view>
|
||||||
|
<view class="xxs lighter">{{item.use_time_tips}}</view>
|
||||||
|
</view>
|
||||||
|
<checkbox v-if="type == 0" :checked="selectId == item.id" class="mr20"></checkbox>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view class="xs" v-if="item.tips" style="padding: 14rpx 20rpx">
|
||||||
|
{{item.tips}}
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="coupons.length == 0" class="column-center" style="padding-top: 50rpx">
|
||||||
|
<image class="img-null" :src="`${cloudPath}img/coupon_null.png`"></image>
|
||||||
|
<text class="muted">暂无优惠券~</text>
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
|
||||||
|
<view class="column-center">
|
||||||
|
<view class="bg-default white row-center br60 mb10 lg u-m-t-2" style="width: 710rpx;height: 74rpx" @tap="onConfirmCoupon">
|
||||||
|
确定
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
coupons: [],
|
||||||
|
selectId: ""
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
props: {
|
||||||
|
list: {
|
||||||
|
type: Array,
|
||||||
|
default: () => []
|
||||||
|
},
|
||||||
|
type: {
|
||||||
|
type: Number
|
||||||
|
},
|
||||||
|
couponId: [Number, String]
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
list: {
|
||||||
|
handler(val) {
|
||||||
|
this.coupons = val
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
},
|
||||||
|
couponId: {
|
||||||
|
handler(val) {
|
||||||
|
this.selectId = val
|
||||||
|
},
|
||||||
|
immediate: true,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onSelect(id) {
|
||||||
|
const {
|
||||||
|
coupons,
|
||||||
|
type,
|
||||||
|
selectId
|
||||||
|
} = this;
|
||||||
|
if (type == 1) return;
|
||||||
|
this.selectId = id == selectId ? "" : id
|
||||||
|
|
||||||
|
},
|
||||||
|
onConfirmCoupon() {
|
||||||
|
this.$emit("change", this.selectId)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<style lang="scss">
|
||||||
|
.coupon-obj {
|
||||||
|
padding: 20rpx 24rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon-obj .coupon-item {
|
||||||
|
position: relative;
|
||||||
|
height: 160rpx;
|
||||||
|
background-image: url(#{$cloudPath}img/coupon_bg.png);
|
||||||
|
background-size: 100% 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon-obj .coupon-item .price {
|
||||||
|
width: 200rpx;
|
||||||
|
}
|
||||||
|
|
||||||
|
.coupon-obj .coupon-item .btn {
|
||||||
|
position: absolute;
|
||||||
|
right: 20rpx;
|
||||||
|
bottom: 20rpx;
|
||||||
|
padding: 0 49rpx;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -55,6 +55,10 @@
|
|||||||
value: {
|
value: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
required: true
|
required: true
|
||||||
|
},
|
||||||
|
token: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
@ -74,7 +78,8 @@
|
|||||||
title: "正在上传中...",
|
title: "正在上传中...",
|
||||||
mask: true,
|
mask: true,
|
||||||
});
|
});
|
||||||
uploadFile(avatarUrl).then((res) => {
|
|
||||||
|
uploadFile(avatarUrl, this.token).then((res) => {
|
||||||
uni.hideLoading();
|
uni.hideLoading();
|
||||||
this.avatar = res.url;
|
this.avatar = res.url;
|
||||||
}).catch(() => {
|
}).catch(() => {
|
||||||
|
|||||||
98
components/tab/tab.vue
Normal file
98
components/tab/tab.vue
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
<template>
|
||||||
|
<view :class="{ active, inactive: !active, tab: true }" :style="shouldShow ? '' : 'display: none;'">
|
||||||
|
<slot v-if="shouldRender"></slot>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
props: {
|
||||||
|
dot: {
|
||||||
|
type: Boolean,
|
||||||
|
},
|
||||||
|
info: {
|
||||||
|
type: null,
|
||||||
|
},
|
||||||
|
title: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
titleStyle: {
|
||||||
|
type: String,
|
||||||
|
},
|
||||||
|
name: {
|
||||||
|
type: [Number, String],
|
||||||
|
value: ''
|
||||||
|
}
|
||||||
|
},
|
||||||
|
inject: ['tabs'],
|
||||||
|
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
active: false,
|
||||||
|
shouldShow: false,
|
||||||
|
shouldRender: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.tabs.childrens.push(this)
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.update()
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
getComputedName: function() {
|
||||||
|
if (this.data.name !== '') {
|
||||||
|
return this.data.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.index;
|
||||||
|
},
|
||||||
|
updateRender: function(active, parent) {
|
||||||
|
|
||||||
|
let parentData = parent;
|
||||||
|
this.inited = this.inited || active;
|
||||||
|
this.active = active
|
||||||
|
this.shouldRender = this.inited
|
||||||
|
this.shouldShow = active
|
||||||
|
|
||||||
|
},
|
||||||
|
update: function() {
|
||||||
|
if (this.tabs) {
|
||||||
|
this.tabs.updateTabs();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
changeData() {
|
||||||
|
const {
|
||||||
|
dot,
|
||||||
|
info,
|
||||||
|
title,
|
||||||
|
titleStyle
|
||||||
|
} = this
|
||||||
|
return {
|
||||||
|
dot,
|
||||||
|
info,
|
||||||
|
title,
|
||||||
|
titleStyle
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
changeData(value) {
|
||||||
|
this.update()
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.tab.active {
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab.inactive {
|
||||||
|
height: 0;
|
||||||
|
overflow: visible;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
252
components/tabs/tabs.vue
Normal file
252
components/tabs/tabs.vue
Normal file
@ -0,0 +1,252 @@
|
|||||||
|
<template>
|
||||||
|
<view class="_tab-box" :style="{fontSize: defaultConfig.fontSize + 'rpx', color: defaultConfig.color,}">
|
||||||
|
<scroll-view id="_scroll" :scroll-x="true" class="scroll-view-h" scroll-with-animation :scroll-left="slider.scrollLeft" :style="{ backgroundColor: defaultConfig.bgColor}">
|
||||||
|
<view class="_scroll-content">
|
||||||
|
<view class="_tab-item-box" :class="[defaultConfig.itemWidth ? '_clamp' : '_flex']">
|
||||||
|
<block v-for="(item, index) in tabList" :key="index">
|
||||||
|
<view class="_item" :id="'_tab_'+index" :class="{ '_active': tagIndex === index }" :style="{color: tagIndex == index ? '#254062' : defaultConfig.color, 'width': defaultConfig.itemWidth ? defaultConfig.itemWidth + 'rpx' : ''}"
|
||||||
|
@click="tabClick(index)">{{ item.title }}</view>
|
||||||
|
</block>
|
||||||
|
</view>
|
||||||
|
<view class="_underline" :style="{
|
||||||
|
transform: 'translateX(' + slider.left + 'px)',
|
||||||
|
width: slider.width + 'px',
|
||||||
|
height: defaultConfig.underLineHeight + 'rpx',
|
||||||
|
backgroundColor: '#254062',
|
||||||
|
}" />
|
||||||
|
</view>
|
||||||
|
</scroll-view>
|
||||||
|
<view class="tab-content">
|
||||||
|
<view>
|
||||||
|
<slot></slot>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
export default {
|
||||||
|
name: 'tabs',
|
||||||
|
props: {
|
||||||
|
active: {
|
||||||
|
type: Number,
|
||||||
|
default: 0
|
||||||
|
},
|
||||||
|
config: {
|
||||||
|
type: Object,
|
||||||
|
default: () => {
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
provide() {
|
||||||
|
return {
|
||||||
|
tabs: this
|
||||||
|
}
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
tabList: [],
|
||||||
|
tagIndex: 0,
|
||||||
|
slider: {
|
||||||
|
left: 0,
|
||||||
|
width: 0,
|
||||||
|
scrollLeft: 0
|
||||||
|
},
|
||||||
|
scorll: {},
|
||||||
|
defaultConfig: {
|
||||||
|
bgColor: "#fff",
|
||||||
|
// 要显示的key
|
||||||
|
// 字体大小 rpx
|
||||||
|
fontSize: 26,
|
||||||
|
// 字体颜色
|
||||||
|
color: '#333',
|
||||||
|
// 激活字体颜色
|
||||||
|
activeColor: '#FF2C3C',
|
||||||
|
// item宽度 0为自动
|
||||||
|
itemWidth: 0,
|
||||||
|
// 下划线左右边距,文字宽度加边距 rpx
|
||||||
|
underLinePadding: 10,
|
||||||
|
// 下划线宽度 rpx 注意:设置了此值 underLinePadding 失效
|
||||||
|
underLineWidth: 0,
|
||||||
|
// 下划线高度 rpx
|
||||||
|
underLineHeight: 4,
|
||||||
|
// 下划线颜色
|
||||||
|
underLineColor: '#FF2C3C',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
|
||||||
|
watch: {
|
||||||
|
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.childrens = []
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
this.updateTabs();
|
||||||
|
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
updateTabs() {
|
||||||
|
this.tabList = this.childrens.map((item) => {
|
||||||
|
const {
|
||||||
|
title,
|
||||||
|
info,
|
||||||
|
name,
|
||||||
|
dot,
|
||||||
|
titleStyle,
|
||||||
|
active,
|
||||||
|
updateRender
|
||||||
|
} = item
|
||||||
|
return {
|
||||||
|
title,
|
||||||
|
info,
|
||||||
|
name,
|
||||||
|
dot,
|
||||||
|
titleStyle,
|
||||||
|
active,
|
||||||
|
updateRender
|
||||||
|
}
|
||||||
|
})
|
||||||
|
this.updateConfig();
|
||||||
|
this.tagIndex = this.active;
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.calcScrollPosition();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
updateConfig() {
|
||||||
|
this.defaultConfig = Object.assign(this.defaultConfig, this.config);
|
||||||
|
},
|
||||||
|
calcScrollPosition() {
|
||||||
|
const query = uni.createSelectorQuery().in(this);
|
||||||
|
query.select('#_scroll').boundingClientRect((res) => {
|
||||||
|
this.scorll = res;
|
||||||
|
this.updateTabWidth();
|
||||||
|
}).exec();
|
||||||
|
},
|
||||||
|
updateTabWidth(index = 0) {
|
||||||
|
let data = this.tabList;
|
||||||
|
|
||||||
|
if (data.length == 0) return false;
|
||||||
|
|
||||||
|
const query = uni.createSelectorQuery().in(this);
|
||||||
|
|
||||||
|
query.select('#_tab_' + index).boundingClientRect((res) => {
|
||||||
|
data[index]._slider = {
|
||||||
|
width: res.width,
|
||||||
|
left: res.left,
|
||||||
|
scrollLeft: res.left - (data[index - 1] ? data[index - 1]._slider.width : 0),
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this.tagIndex == index) {
|
||||||
|
this.tabToIndex(this.tagIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
index++;
|
||||||
|
if (data.length > index) {
|
||||||
|
this.updateTabWidth(index);
|
||||||
|
}
|
||||||
|
}).exec();
|
||||||
|
},
|
||||||
|
|
||||||
|
tabToIndex(index) {
|
||||||
|
let _slider = this.tabList[index]._slider;
|
||||||
|
let width = uni.upx2px(this.defaultConfig.underLineWidth);
|
||||||
|
|
||||||
|
if (!width) {
|
||||||
|
if (this.defaultConfig.itemWidth) {
|
||||||
|
width = uni.upx2px(this.defaultConfig.itemWidth)/3;
|
||||||
|
} else {
|
||||||
|
width = this.tabList[index]['title'].length * uni.upx2px(this.defaultConfig.fontSize);
|
||||||
|
}
|
||||||
|
width += uni.upx2px(this.defaultConfig.underLinePadding) * 2;
|
||||||
|
}
|
||||||
|
this.childrens.forEach((item, ind) => {
|
||||||
|
let active = ind === index;
|
||||||
|
if (active !== item.active || !item.inited) {
|
||||||
|
item.updateRender(active, this);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let scorll_left = this.scorll.left || 0;
|
||||||
|
this.slider = {
|
||||||
|
left: _slider.left - scorll_left + (_slider.width - width) / 2,
|
||||||
|
width: width,
|
||||||
|
scrollLeft: _slider.scrollLeft - scorll_left,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
tabClick(index) {
|
||||||
|
this.tagIndex = index;
|
||||||
|
this.tabToIndex(index);
|
||||||
|
this.$emit('change', index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
._tab-box {
|
||||||
|
width: 100%;
|
||||||
|
font-size: 26rpx;
|
||||||
|
position: relative;
|
||||||
|
z-index: 10;
|
||||||
|
|
||||||
|
.scroll-view-h {
|
||||||
|
height: 80rpx;
|
||||||
|
line-height: 80rpx;
|
||||||
|
white-space: nowrap;
|
||||||
|
width: 100%;
|
||||||
|
box-sizing: border-box;
|
||||||
|
|
||||||
|
._scroll-content {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
._tab-item-box {
|
||||||
|
height: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
&._flex {
|
||||||
|
display: flex;
|
||||||
|
|
||||||
|
._item {
|
||||||
|
flex: 1;
|
||||||
|
padding: 0 20rpx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&._clamp {
|
||||||
|
._item {
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
._item {
|
||||||
|
height: 100%;
|
||||||
|
display: inline-block;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
color: #333;
|
||||||
|
|
||||||
|
&._active {
|
||||||
|
color: #254062;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
._underline {
|
||||||
|
height: 4rpx;
|
||||||
|
background-color: #254062;
|
||||||
|
border-radius: 6rpx;
|
||||||
|
transition: transform .5s;
|
||||||
|
position: absolute;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@ -42,7 +42,7 @@
|
|||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<mplogin v-model="mpLoginPopup" @close="mpLoginPopup = false" @update="handleSubmitInfo"/>
|
<mplogin v-model="mpLoginPopup" :token="token" @close="mpLoginPopup = false" @update="handleSubmitInfo"/>
|
||||||
<mobile-login v-model="mobilePopup" @close="mobilePopup = false" @update="handleSubmitMobile"/>
|
<mobile-login v-model="mobilePopup" @close="mobilePopup = false" @update="handleSubmitMobile"/>
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
@ -69,7 +69,8 @@
|
|||||||
},
|
},
|
||||||
loginData: {},
|
loginData: {},
|
||||||
mpLoginPopup: false,
|
mpLoginPopup: false,
|
||||||
mobilePopup: false
|
mobilePopup: false,
|
||||||
|
token: ''
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
@ -109,8 +110,11 @@
|
|||||||
if (code == 1) {
|
if (code == 1) {
|
||||||
if (data.is_new_user) {
|
if (data.is_new_user) {
|
||||||
uni.hideLoading()
|
uni.hideLoading()
|
||||||
this.mpLoginPopup = true
|
this.token = data.token
|
||||||
this.loginData = data
|
this.$nextTick(() => {
|
||||||
|
this.mpLoginPopup = true
|
||||||
|
})
|
||||||
|
this.loginData = data
|
||||||
} else {
|
} else {
|
||||||
this.loginHandle(data)
|
this.loginHandle(data)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
<template>
|
<template>
|
||||||
<view class="px32">
|
<view class="px32">
|
||||||
<!-- 收货方式 -->
|
<!-- 收货方式 -->
|
||||||
<view class="bg-white br16 row u-m-t-32">
|
<view class="bg-white br16 row u-m-t-32">
|
||||||
<!-- <u-tabs
|
<!-- <u-tabs
|
||||||
:list="addressTabsList"
|
:list="addressTabsList"
|
||||||
@ -12,11 +12,8 @@
|
|||||||
@change="changeDelivery"
|
@change="changeDelivery"
|
||||||
/> -->
|
/> -->
|
||||||
<!-- 快递配送 -->
|
<!-- 快递配送 -->
|
||||||
<view
|
<view v-show="addressTabsList[addressTabsIndex]['sign'] === 'express'" class="u-flex p24 w-full"
|
||||||
v-show="addressTabsList[addressTabsIndex]['sign'] === 'express'"
|
@click="onAddressExpress">
|
||||||
class="u-flex p24 w-full"
|
|
||||||
@click="onAddressExpress"
|
|
||||||
>
|
|
||||||
<view>
|
<view>
|
||||||
<u-icon name="map" size="48" class="right-icon"></u-icon>
|
<u-icon name="map" size="48" class="right-icon"></u-icon>
|
||||||
</view>
|
</view>
|
||||||
@ -38,7 +35,7 @@
|
|||||||
<view>请选择收货地址</view>
|
<view>请选择收货地址</view>
|
||||||
</template>
|
</template>
|
||||||
</view>
|
</view>
|
||||||
<view >
|
<view>
|
||||||
<u-icon class="ml10" name="arrow-right" />
|
<u-icon class="ml10" name="arrow-right" />
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
@ -76,15 +73,8 @@
|
|||||||
</view> -->
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
<view class="bg-white br16 row u-m-t-32">
|
<view class="bg-white br16 row u-m-t-32">
|
||||||
<order-goods
|
<order-goods :team="{ need: orderInfo.team_need }" :list="goodsLists" :delivery="delivery"
|
||||||
:team="{ need: orderInfo.team_need }"
|
:order_type="orderInfo.order_type" :imageWidth="260" :imageHeight="172" mode="comfirm"></order-goods>
|
||||||
:list="goodsLists"
|
|
||||||
:delivery="delivery"
|
|
||||||
:order_type="orderInfo.order_type"
|
|
||||||
:imageWidth="260"
|
|
||||||
:imageHeight="172"
|
|
||||||
mode="comfirm"
|
|
||||||
></order-goods>
|
|
||||||
<!-- <view>
|
<!-- <view>
|
||||||
<u-image :src="cloudPath + 'img/banner.png'" width="260" height="172"></u-image>
|
<u-image :src="cloudPath + 'img/banner.png'" width="260" height="172"></u-image>
|
||||||
</view>
|
</view>
|
||||||
@ -104,16 +94,29 @@
|
|||||||
</view>
|
</view>
|
||||||
</view> -->
|
</view> -->
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
<view class="item row-between bg-white br16 row u-m-t-32 p24" @tap="showCoupon = true">
|
||||||
|
<view>优惠券</view>
|
||||||
|
<view class="row">
|
||||||
|
<text class="primary" v-if="orderInfo.discount_amount">-¥{{ orderInfo.discount_amount }}</text>
|
||||||
|
<text v-else-if="usableCoupon.length" class="primary">{{
|
||||||
|
usableCoupon.length + '张可用'
|
||||||
|
}}</text>
|
||||||
|
<text v-else class="muted">无优惠券可用</text>
|
||||||
|
<u-icon name="arrow-right" size="32" color="#999"></u-icon>
|
||||||
|
|
||||||
|
</view>
|
||||||
|
</view>
|
||||||
|
|
||||||
<view class="bg-white br16 p24 u-m-t-32">
|
<view class="bg-white br16 p24 u-m-t-32">
|
||||||
<view>
|
<view>
|
||||||
备注
|
备注
|
||||||
</view>
|
</view>
|
||||||
<view class="flex1 u-m-t-16 mask">
|
<view class="flex1 u-m-t-16 mask">
|
||||||
xxxx
|
<u-input v-model="value" type="textarea" :border="border" maxlength="150"/>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="bg-white br16 p24 u-m-t-32 nr row-between" @click="appointmentTime">
|
<view class="bg-white br16 p24 u-m-t-32 nr row-between" @click="appointmentTime">
|
||||||
<view>预约时间</view>
|
<view>预约时间</view>
|
||||||
<view class="row">
|
<view class="row">
|
||||||
@ -121,186 +124,204 @@
|
|||||||
<u-icon name="arrow-right" size="32"></u-icon>
|
<u-icon name="arrow-right" size="32"></u-icon>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<!-- #ifdef MP-WEIXIN -->
|
<!-- #ifdef MP-WEIXIN -->
|
||||||
<view class="bg-white br16 p24 u-m-t-32 nr">
|
<view class="bg-white br16 p24 u-m-t-32 nr">
|
||||||
<view class="row-between">
|
<view class="row-between">
|
||||||
<view class="row-center">
|
<view class="row-center">
|
||||||
<u-icon name="weixin-circle-fill" color="#28C445" size="80"></u-icon>
|
<u-icon name="weixin-circle-fill" color="#28C445" size="80"></u-icon>
|
||||||
<view class="u-m-l-16 lg">微信</view>
|
<view class="u-m-l-16 lg">微信</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="flex1 row-end">
|
<view class="flex1 row-end">
|
||||||
<u-radio-group v-model="pay.weixin">
|
<u-radio-group v-model="pay.weixin">
|
||||||
<u-radio shape="circle" :active-color="themeColor"></u-radio>
|
<u-radio shape="circle" :active-color="themeColor"></u-radio>
|
||||||
</u-radio-group>
|
</u-radio-group>
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
|
|
||||||
<!-- #ifdef MP-ALIPAY -->
|
<!-- #ifdef MP-ALIPAY -->
|
||||||
<view class="bg-white br16 p24 u-m-t-32 nr">
|
<view class="bg-white br16 p24 u-m-t-32 nr">
|
||||||
<view class="row-between">
|
<view class="row-between">
|
||||||
<view class="row-center">
|
<view class="row-center">
|
||||||
<u-icon name="zhifubao-circle-fill" color="#1477FE" size="80"></u-icon>
|
<u-icon name="zhifubao-circle-fill" color="#1477FE" size="80"></u-icon>
|
||||||
<view class="u-m-l-16 lg">支付宝</view>
|
<view class="u-m-l-16 lg">支付宝</view>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
<view class="flex1 row-end">
|
<view class="flex1 row-end">
|
||||||
<u-radio-group v-model="pay.alipay">
|
<u-radio-group v-model="pay.alipay">
|
||||||
<u-radio shape="circle" :active-color="themeColor"></u-radio>
|
<u-radio shape="circle" :active-color="themeColor"></u-radio>
|
||||||
</u-radio-group>
|
</u-radio-group>
|
||||||
</view>
|
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
|
</view>
|
||||||
<!-- #endif -->
|
<!-- #endif -->
|
||||||
|
|
||||||
<view class="fixed bg-white row-between px48 u-padding-top-20 u-padding-bottom-20">
|
<view class="fixed bg-white row-between px48 u-padding-top-20 u-padding-bottom-20">
|
||||||
<view class="column u-text-center">
|
<view class="column u-text-center">
|
||||||
<view class="row-center">
|
<view class="row-center">
|
||||||
<view class="count">共1件</view>
|
<view class="count">共{{orderInfo.total_num}}件</view>
|
||||||
<view class="u-m-l-8">合计:</view>
|
<view class="u-m-l-8">合计:</view>
|
||||||
<view class="primary" style="margin-top: -8rpx;">
|
<view class="primary" style="margin-top: -8rpx;">
|
||||||
<price-format :price="12.9" :subscriptSize="34" :firstSize="56" :secondSize="34"></price-format>
|
<price-format :price="orderInfo.order_amount" :subscriptSize="34" :firstSize="56" :secondSize="34"></price-format>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<view class="u-m-l-64 flex1">
|
<view class="u-m-l-64 flex1">
|
||||||
<u-button hover-class="none"
|
<u-button hover-class="none" @click="onSubmitOrder"
|
||||||
@click="onSubmitOrder"
|
:customStyle="{ height: '92rpx', backgroundColor: themeColor, color: '#fff', border: 'none', paddingTop: '8rpx' }"
|
||||||
:customStyle="{height: '92rpx', backgroundColor: themeColor, color: '#fff', border: 'none', paddingTop: '8rpx'}"
|
:hair-line="false" shape="circle">
|
||||||
:hair-line="false"
|
去支付
|
||||||
shape="circle">
|
|
||||||
去支付
|
|
||||||
</u-button>
|
</u-button>
|
||||||
</view>
|
</view>
|
||||||
</view>
|
</view>
|
||||||
<appointment-time v-model="timePopup" @close="timePopup = false" @update="handleSubmitMobile"/>
|
<u-popup v-model="showCoupon" border-radius="14" mode="bottom" closeable>
|
||||||
|
<view class="pop-title row-between">
|
||||||
|
<view class="title">优惠券</view>
|
||||||
|
</view>
|
||||||
|
<view v-if="showCoupon">
|
||||||
|
<tabs :active="couponTabsIndex" :config="{ underLineWidth: 100 }">
|
||||||
|
<tab :title="'可使用优惠券 (' + usableCoupon.length + ')'">
|
||||||
|
<coupon-obj :list="usableCoupon" :type="0" @change="onSelectCoupon"
|
||||||
|
:coupon-id="couponId"></coupon-obj>
|
||||||
|
</tab>
|
||||||
|
<tab :title="'不可用优惠券 (' + unusableCoupon.length + ')'">
|
||||||
|
<coupon-obj :list="unusableCoupon" :type="1" @change="onSelectCoupon"></coupon-obj>
|
||||||
|
</tab>
|
||||||
|
</tabs>
|
||||||
|
</view>
|
||||||
|
</u-popup>
|
||||||
|
<appointment-time v-model="timePopup" @close="timePopup = false" @update="handleSubmitMobile" />
|
||||||
</view>
|
</view>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import { orderBuy, getOrderCoupon, getDelivery } from '@/api/order'
|
import { orderBuy, getOrderCoupon, getDelivery } from '@/api/order'
|
||||||
export default {
|
export default {
|
||||||
data(){
|
data() {
|
||||||
return {
|
return {
|
||||||
timePopup: false,
|
timePopup: false,
|
||||||
pay: {
|
pay: {
|
||||||
weixin: 0,
|
weixin: 0,
|
||||||
alipay: 0
|
alipay: 0
|
||||||
},
|
|
||||||
showLoading: false, // Loading: 显示 | 隐藏
|
|
||||||
goods: {}, // 商品信息
|
|
||||||
// 地址Tabs列表
|
|
||||||
addressTabsList: [
|
|
||||||
{
|
|
||||||
id: 1,
|
|
||||||
sign: 'express',
|
|
||||||
name: '快递配送'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 2,
|
|
||||||
sign: 'store',
|
|
||||||
name: '门店自提'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
addressTabsIndex: 0, // 地址Tabs索引
|
|
||||||
goodsLists: [], // 商品列表
|
|
||||||
orderInfo: {}, // 订单信息
|
|
||||||
address: {}, // 收货地址信息
|
|
||||||
addressId: '', // 收货地址ID
|
|
||||||
storeInfo: {}, // 门店信息
|
|
||||||
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onLoad(options) {
|
|
||||||
const data = JSON.parse(decodeURIComponent(options.data))
|
|
||||||
console.log("data>>>", data);
|
|
||||||
this.goods = data.goods
|
|
||||||
|
|
||||||
//#ifdef MP-WEIXIN
|
|
||||||
this.pay.weixin = 1
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
//#ifdef MP-ALIPAY
|
|
||||||
this.pay.alipay = 1
|
|
||||||
//#endif
|
|
||||||
|
|
||||||
// 配送方式
|
|
||||||
getDelivery()
|
|
||||||
.then(({ code, data, msg }) => {
|
|
||||||
// 请求结果判断
|
|
||||||
if (code != 1) throw new Error(msg)
|
|
||||||
return data
|
|
||||||
})
|
|
||||||
.then((data) => {
|
|
||||||
// 快递
|
|
||||||
if (!data.is_express) {
|
|
||||||
this.addressTabsList = this.addressTabsList.filter(
|
|
||||||
(item) => item.sign !== 'express'
|
|
||||||
)
|
|
||||||
}
|
|
||||||
// 自提
|
|
||||||
if (!data.is_selffetch) {
|
|
||||||
this.addressTabsList = this.addressTabsList.filter(
|
|
||||||
(item) => item.sign !== 'store'
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// 页面数据初始化
|
|
||||||
.then(() => {
|
|
||||||
this.handleOrderMethods('info')
|
|
||||||
this.initCouponData()
|
|
||||||
})
|
|
||||||
// 监听全局事件
|
|
||||||
.then(() => {
|
|
||||||
uni.$on('selectaddress', (params) => {
|
|
||||||
this.addressId = params.id
|
|
||||||
this.handleOrderMethods('info')
|
|
||||||
})
|
|
||||||
|
|
||||||
uni.$on('payment', (params) => {
|
|
||||||
setTimeout(() => {
|
|
||||||
uni.$off('payment')
|
|
||||||
|
|
||||||
if (params.result) {
|
|
||||||
uni.redirectTo({
|
|
||||||
url: `/pages/pay_result/pay_result?id=${params.order_id}`
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
uni.redirectTo({
|
|
||||||
url: '/pages/user_order/user_order'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}, 500)
|
|
||||||
})
|
|
||||||
|
|
||||||
uni.$on('store', (params) => {
|
|
||||||
this.storeInfo = params
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
console.log(err)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
onUnload() {
|
|
||||||
// 取消全局监听
|
|
||||||
uni.$off(['selectaddress', 'store'])
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
appointmentTime() {
|
|
||||||
this.timePopup = true
|
|
||||||
},
|
},
|
||||||
|
showLoading: false, // Loading: 显示 | 隐藏
|
||||||
|
goods: {}, // 商品信息
|
||||||
|
// 地址Tabs列表
|
||||||
|
addressTabsList: [
|
||||||
|
{
|
||||||
|
id: 1,
|
||||||
|
sign: 'express',
|
||||||
|
name: '快递配送'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id: 2,
|
||||||
|
sign: 'store',
|
||||||
|
name: '门店自提'
|
||||||
|
}
|
||||||
|
],
|
||||||
|
addressTabsIndex: 0, // 地址Tabs索引
|
||||||
|
goodsLists: [], // 商品列表
|
||||||
|
orderInfo: {}, // 订单信息
|
||||||
|
address: {}, // 收货地址信息
|
||||||
|
addressId: '', // 收货地址ID
|
||||||
|
storeInfo: {}, // 门店信息
|
||||||
|
couponId: '', // 优惠券ID
|
||||||
|
couponTabsIndex: 0, // 优惠券Tabs索引
|
||||||
|
usableCoupon: [], // 优惠券--可使用
|
||||||
|
unusableCoupon: [], // 优惠券--不可用
|
||||||
|
showCoupon: false, // 显示优惠券Popup
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// 初始化优惠券数据
|
onLoad(options) {
|
||||||
initCouponData() {
|
const data = JSON.parse(decodeURIComponent(options.data))
|
||||||
getOrderCoupon({
|
console.log("data>>>", data);
|
||||||
goods: this.goods
|
this.goods = data.goods
|
||||||
|
|
||||||
|
//#ifdef MP-WEIXIN
|
||||||
|
this.pay.weixin = 1
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
//#ifdef MP-ALIPAY
|
||||||
|
this.pay.alipay = 1
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
// 配送方式
|
||||||
|
getDelivery()
|
||||||
|
.then(({ code, data, msg }) => {
|
||||||
|
// 请求结果判断
|
||||||
|
if (code != 1) throw new Error(msg)
|
||||||
|
return data
|
||||||
|
})
|
||||||
|
.then((data) => {
|
||||||
|
// 快递
|
||||||
|
if (!data.is_express) {
|
||||||
|
this.addressTabsList = this.addressTabsList.filter(
|
||||||
|
(item) => item.sign !== 'express'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
// 自提
|
||||||
|
if (!data.is_selffetch) {
|
||||||
|
this.addressTabsList = this.addressTabsList.filter(
|
||||||
|
(item) => item.sign !== 'store'
|
||||||
|
)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
// 页面数据初始化
|
||||||
|
.then(() => {
|
||||||
|
this.handleOrderMethods('info')
|
||||||
|
this.initCouponData()
|
||||||
|
})
|
||||||
|
// 监听全局事件
|
||||||
|
.then(() => {
|
||||||
|
uni.$on('selectaddress', (params) => {
|
||||||
|
this.addressId = params.id
|
||||||
|
this.handleOrderMethods('info')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
uni.$on('payment', (params) => {
|
||||||
|
setTimeout(() => {
|
||||||
|
uni.$off('payment')
|
||||||
|
|
||||||
|
if (params.result) {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: `/pages/pay_result/pay_result?id=${params.order_id}`
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
uni.redirectTo({
|
||||||
|
url: '/pages/user_order/user_order'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}, 500)
|
||||||
|
})
|
||||||
|
|
||||||
|
uni.$on('store', (params) => {
|
||||||
|
this.storeInfo = params
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.log(err)
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
onUnload() {
|
||||||
|
// 取消全局监听
|
||||||
|
uni.$off(['selectaddress', 'store'])
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
appointmentTime() {
|
||||||
|
this.timePopup = true
|
||||||
|
},
|
||||||
|
|
||||||
|
// 初始化优惠券数据
|
||||||
|
initCouponData() {
|
||||||
|
getOrderCoupon({
|
||||||
|
goods: this.goods
|
||||||
|
})
|
||||||
.then(({ code, data, msg }) => {
|
.then(({ code, data, msg }) => {
|
||||||
if (code != 1) throw new Error(msg)
|
if (code != 1) throw new Error(msg)
|
||||||
return data
|
return data
|
||||||
@ -312,163 +333,182 @@
|
|||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log(err)
|
console.log(err)
|
||||||
})
|
})
|
||||||
},
|
|
||||||
|
|
||||||
// 点击订单提交
|
|
||||||
onSubmitOrder() {
|
|
||||||
uni.showModal({
|
|
||||||
title: '温馨提示',
|
|
||||||
content: '是否确认下单?',
|
|
||||||
confirmColor: '#FF2C3C',
|
|
||||||
success: ({ confirm }) => {
|
|
||||||
if (!confirm) return
|
|
||||||
|
|
||||||
this.handleOrderMethods('submit')
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
// 订单处理
|
|
||||||
handleOrderMethods(action) {
|
|
||||||
// 订单提交数据
|
|
||||||
const orderFrom = {
|
|
||||||
action,
|
|
||||||
goods: this.goods,
|
|
||||||
delivery_type: this.delivery,
|
|
||||||
use_integral: this.useIntegral,
|
|
||||||
address_id: this.addressId,
|
|
||||||
coupon_id: this.couponId,
|
|
||||||
bargain_launch_id: this.bargainLaunchId == -1 ? '' : this.bargainLaunchId
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (action) {
|
|
||||||
case 'info':
|
|
||||||
this.initPageData(orderFrom)
|
|
||||||
break
|
|
||||||
case 'submit':
|
|
||||||
this.handleOrderSubmit(orderFrom)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 初始化页面数据
|
|
||||||
async initPageData(from) {
|
|
||||||
this.showLoading = true
|
|
||||||
|
|
||||||
try {
|
|
||||||
const { code, data, msg } = await orderBuy(from)
|
|
||||||
|
|
||||||
if (code == 1) {
|
|
||||||
this.address = data.address
|
|
||||||
this.goodsLists = data.goods_lists
|
|
||||||
//TODO
|
|
||||||
if (data.selffetch_info) {
|
|
||||||
this.storeInfo = data.selffetch_info.selffetch_shop
|
|
||||||
? data.selffetch_info.selffetch_shop
|
|
||||||
: {}
|
|
||||||
this.userConsignee = data.selffetch_info.contact
|
|
||||||
this.userMobile = data.selffetch_info.mobile
|
|
||||||
}
|
|
||||||
|
|
||||||
this.orderInfo = data
|
|
||||||
this.$nextTick(() => {
|
|
||||||
this.isFirstLoading = false
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
throw new Error(msg)
|
|
||||||
}
|
|
||||||
} catch (err) {
|
|
||||||
console.log(err)
|
|
||||||
this.$toast({ title: '网络异常,请重新进入页面' })
|
|
||||||
} finally {
|
|
||||||
this.showLoading = false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// 点击选择收货地址
|
|
||||||
onAddressExpress() {
|
|
||||||
uni.navigateTo({
|
|
||||||
url: `/bundle/pages/address/address?type=${1}`
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// 订单处理
|
|
||||||
// handleOrderMethods(action) {
|
|
||||||
// // 订单提交数据
|
|
||||||
// const orderFrom = {
|
|
||||||
// action,
|
|
||||||
// goods: this.goods,
|
|
||||||
// delivery_type: this.delivery,
|
|
||||||
// use_integral: this.useIntegral,
|
|
||||||
// address_id: this.addressId,
|
|
||||||
// coupon_id: this.couponId,
|
|
||||||
// bargain_launch_id: this.bargainLaunchId == -1 ? '' : this.bargainLaunchId
|
|
||||||
// }
|
|
||||||
|
|
||||||
// switch (action) {
|
|
||||||
// case 'info':
|
|
||||||
// this.initPageData(orderFrom)
|
|
||||||
// break
|
|
||||||
// case 'submit':
|
|
||||||
// this.handleOrderSubmit(orderFrom)
|
|
||||||
// break
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
|
|
||||||
// // 订单提交
|
|
||||||
// async handleOrderSubmit(from) {
|
|
||||||
// this.showLoading = true
|
|
||||||
|
|
||||||
// from.remark = this.userRemark
|
|
||||||
// from.type = this.type
|
|
||||||
|
|
||||||
// try {
|
|
||||||
// const { code, data, msg } = this.teamId ? await teamBuy(from) : await orderBuy(from)
|
|
||||||
|
|
||||||
// if (code == 1) {
|
|
||||||
// uni.redirectTo({
|
|
||||||
// url: `/pages/payment/payment?from=${data.type}&order_id=${data.order_id}`
|
|
||||||
// })
|
|
||||||
// } else {
|
|
||||||
// throw new Error(msg)
|
|
||||||
// }
|
|
||||||
// } catch (err) {
|
|
||||||
// console.log(err)
|
|
||||||
// // this.$toast({ title: '下单异常,请重新操作' })
|
|
||||||
// } finally {
|
|
||||||
// this.showLoading = false
|
|
||||||
// }
|
|
||||||
// },
|
|
||||||
},
|
},
|
||||||
computed: {
|
|
||||||
delivery() {
|
// 选择优惠券
|
||||||
return this.addressTabsList[this.addressTabsIndex]['id']
|
onSelectCoupon(value) {
|
||||||
|
this.couponId = value
|
||||||
|
this.showCoupon = false
|
||||||
|
this.handleOrderMethods('info')
|
||||||
|
},
|
||||||
|
|
||||||
|
// 点击订单提交
|
||||||
|
onSubmitOrder() {
|
||||||
|
uni.showModal({
|
||||||
|
title: '温馨提示',
|
||||||
|
content: '是否确认下单?',
|
||||||
|
confirmColor: '#FF2C3C',
|
||||||
|
success: ({ confirm }) => {
|
||||||
|
if (!confirm) return
|
||||||
|
|
||||||
|
this.handleOrderMethods('submit')
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
// 订单处理
|
||||||
|
handleOrderMethods(action) {
|
||||||
|
// 订单提交数据
|
||||||
|
const orderFrom = {
|
||||||
|
action,
|
||||||
|
goods: this.goods,
|
||||||
|
delivery_type: this.delivery,
|
||||||
|
use_integral: this.useIntegral,
|
||||||
|
address_id: this.addressId,
|
||||||
|
coupon_id: this.couponId,
|
||||||
|
bargain_launch_id: this.bargainLaunchId == -1 ? '' : this.bargainLaunchId
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
case 'info':
|
||||||
|
this.initPageData(orderFrom)
|
||||||
|
break
|
||||||
|
case 'submit':
|
||||||
|
this.handleOrderSubmit(orderFrom)
|
||||||
|
break
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
}
|
|
||||||
|
// 初始化页面数据
|
||||||
|
async initPageData(from) {
|
||||||
|
this.showLoading = true
|
||||||
|
|
||||||
|
try {
|
||||||
|
const { code, data, msg } = await orderBuy(from)
|
||||||
|
|
||||||
|
if (code == 1) {
|
||||||
|
this.address = data.address
|
||||||
|
this.goodsLists = data.goods_lists
|
||||||
|
//TODO
|
||||||
|
if (data.selffetch_info) {
|
||||||
|
this.storeInfo = data.selffetch_info.selffetch_shop
|
||||||
|
? data.selffetch_info.selffetch_shop
|
||||||
|
: {}
|
||||||
|
this.userConsignee = data.selffetch_info.contact
|
||||||
|
this.userMobile = data.selffetch_info.mobile
|
||||||
|
}
|
||||||
|
|
||||||
|
this.orderInfo = data
|
||||||
|
this.$nextTick(() => {
|
||||||
|
this.isFirstLoading = false
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
throw new Error(msg)
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
this.$toast({ title: '网络异常,请重新进入页面' })
|
||||||
|
} finally {
|
||||||
|
this.showLoading = false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
// 点击选择收货地址
|
||||||
|
onAddressExpress() {
|
||||||
|
uni.navigateTo({
|
||||||
|
url: `/bundle/pages/address/address?type=${1}`
|
||||||
|
})
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// 订单处理
|
||||||
|
// handleOrderMethods(action) {
|
||||||
|
// // 订单提交数据
|
||||||
|
// const orderFrom = {
|
||||||
|
// action,
|
||||||
|
// goods: this.goods,
|
||||||
|
// delivery_type: this.delivery,
|
||||||
|
// use_integral: this.useIntegral,
|
||||||
|
// address_id: this.addressId,
|
||||||
|
// coupon_id: this.couponId,
|
||||||
|
// bargain_launch_id: this.bargainLaunchId == -1 ? '' : this.bargainLaunchId
|
||||||
|
// }
|
||||||
|
|
||||||
|
// switch (action) {
|
||||||
|
// case 'info':
|
||||||
|
// this.initPageData(orderFrom)
|
||||||
|
// break
|
||||||
|
// case 'submit':
|
||||||
|
// this.handleOrderSubmit(orderFrom)
|
||||||
|
// break
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
|
||||||
|
// // 订单提交
|
||||||
|
// async handleOrderSubmit(from) {
|
||||||
|
// this.showLoading = true
|
||||||
|
|
||||||
|
// from.remark = this.userRemark
|
||||||
|
// from.type = this.type
|
||||||
|
|
||||||
|
// try {
|
||||||
|
// const { code, data, msg } = this.teamId ? await teamBuy(from) : await orderBuy(from)
|
||||||
|
|
||||||
|
// if (code == 1) {
|
||||||
|
// uni.redirectTo({
|
||||||
|
// url: `/pages/payment/payment?from=${data.type}&order_id=${data.order_id}`
|
||||||
|
// })
|
||||||
|
// } else {
|
||||||
|
// throw new Error(msg)
|
||||||
|
// }
|
||||||
|
// } catch (err) {
|
||||||
|
// console.log(err)
|
||||||
|
// // this.$toast({ title: '下单异常,请重新操作' })
|
||||||
|
// } finally {
|
||||||
|
// this.showLoading = false
|
||||||
|
// }
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
delivery() {
|
||||||
|
return this.addressTabsList[this.addressTabsIndex]['id']
|
||||||
|
}
|
||||||
|
},
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.num {
|
.num {
|
||||||
color: #4E5969;
|
color: #4E5969;
|
||||||
}
|
}
|
||||||
|
|
||||||
.mask {
|
.mask {
|
||||||
color: #86909C;
|
color: #86909C;
|
||||||
}
|
}
|
||||||
|
|
||||||
.fixed {
|
.fixed {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0;
|
right: 0;
|
||||||
padding-bottom: env(safe-area-inset-bottom);
|
padding-bottom: env(safe-area-inset-bottom);
|
||||||
}
|
}
|
||||||
|
|
||||||
.count {
|
.count {
|
||||||
color: #86909C;
|
color: #86909C;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pop-title {
|
||||||
|
height: 100rpx;
|
||||||
|
border-bottom: 1rpx solid #f2f2f2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pop-title .title {
|
||||||
|
margin-left: 30rpx;
|
||||||
|
font-size: 34rpx;
|
||||||
|
font-weight: bold;
|
||||||
|
line-height: 36rpx;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
@ -269,14 +269,14 @@ export function menuJump(item) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function uploadFile(path) {
|
export function uploadFile(path, token = '') {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
uni.uploadFile({
|
uni.uploadFile({
|
||||||
url: `${baseURL}/api/file/formimage`,
|
url: `${baseURL}/api/file/formimage`,
|
||||||
filePath: path,
|
filePath: path,
|
||||||
name: "file",
|
name: "file",
|
||||||
header: {
|
header: {
|
||||||
token: store.getters.token,
|
token: store.getters.token || token,
|
||||||
},
|
},
|
||||||
fileType: "image",
|
fileType: "image",
|
||||||
cloudPath: "",
|
cloudPath: "",
|
||||||
|
|||||||
Reference in New Issue
Block a user