Browse Source

上传

hfll
前端-胡立永 1 month ago
parent
commit
aba4b73e15
20 changed files with 1041 additions and 113 deletions
  1. +7
    -0
      components/base/tabbar.vue
  2. +257
    -0
      components/product/productItem copy.vue
  3. +118
    -65
      components/product/productItem.vue
  4. +521
    -0
      pages/index/center copy.vue
  5. +84
    -20
      pages/index/center.vue
  6. +1
    -1
      pages_order/auth/wxUserInfo.vue
  7. +12
    -3
      pages_order/components/product/submit.vue
  8. +24
    -22
      pages_order/order/createOrder.vue
  9. +17
    -2
      pages_order/product/productDetail.vue
  10. BIN
      static/image/cart/1.png
  11. BIN
      static/image/center/1.png
  12. BIN
      static/image/center/2.png
  13. BIN
      static/image/center/4.png
  14. BIN
      static/image/center/7.png
  15. BIN
      static/image/center/8.png
  16. BIN
      static/image/center/9.png
  17. BIN
      static/image/center/address.png
  18. BIN
      static/image/center/logout.png
  19. BIN
      static/image/tabbar/cart-active.png
  20. BIN
      static/image/tabbar/cart.png

+ 7
- 0
components/base/tabbar.vue View File

@ -49,6 +49,13 @@
"title": "订单",
key: 'order',
},
{
"selectedIconPath": "/static/image/tabbar/cart-active.png",
"iconPath": "/static/image/tabbar/cart.png",
"pagePath": "/pages/index/cart",
"title": "购物车",
key: 'cart',
},
{
"selectedIconPath": "/static/image/tabbar/user-center-active.png",
"iconPath": "/static/image/tabbar/user-center.png",


+ 257
- 0
components/product/productItem copy.vue View File

@ -0,0 +1,257 @@
<template>
<view class="item" @click="$emit('click')">
<!-- 商品图片 -->
<view class="item-image">
<image :src="item.image &&
item.image.split(',')[0]" mode="aspectFill">
</image>
</view>
<!-- 商品信息 -->
<view class="info">
<!-- 商品标题 -->
<view class="title">
{{ item.title }}
</view>
<!-- 价格 -->
<!-- <view class="price">
<view class="money">
<text>{{ getPriceByRole(item) }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image v-if="userInfo.role == 1" :src="configList.vip_money_one" mode="aspectFill" class="price-img">
</image>
<image v-if="userInfo.role == 2" :src="configList.vip_money_two" mode="aspectFill" class="price-img">
</image>
<image v-if="userInfo.role == 3" :src="configList.vip_money_three" mode="aspectFill"
class="price-img"></image>
</view>
</view> -->
<view class="price">
<view class="money">
<text>{{ item.price }}</text>
<text class="unit">/元每件</text>
</view>
<view class="oldPrice">
<text>{{ item.oldPrice }}</text>
<text class="unit">/</text>
</view>
</view>
<!-- <view class="oldPrice">
<view class="money">
<text>{{ item.oldPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
</view>
</view> -->
<view class="price">
<view class="money">
<text>{{ item.silverPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_one" mode="aspectFill" class="price-img">
</image>
</view>
</view>
<view class="price">
<view class="money">
<text>{{ item.goldPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_two" mode="aspectFill"
class="price-img"></image>
</view>
</view>
<view class="price">
<view class="money">
<text>{{ item.diamondPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_three" mode="aspectFill" class="price-img">
</image>
</view>
</view>
<!-- 销量 -->
<view class="sales-volume">
<view class="sales-volume-imgbox">
<image src="@/static/image/category/sales-volume-icon.png" mode="widthFix" class="sales-volume-img">
</image>
</view>
<view class="sales-volume-number">
已售出{{ item.payNum }}+
</view>
</view>
<!-- 购买按钮 -->
<view @click.stop="purchase(item.id)" class="buy-btn">
购买
</view>
</view>
</view>
</template>
<script>
import {
mapState
} from 'vuex'
export default {
props: {
item: {
default: {}
}
},
computed: {
...mapState(['userInfo'])
},
data() {
return {
}
},
methods: {
// ()
purchase(id) {
this.$api('getRiceProductDetail', {
id
}, res => {
if (res.code == 200) {
res.result.num = 1
this.$store.commit('setPayOrderProduct', [
res.result
])
this.$utils.navigateTo('/pages_order/order/createOrder')
}
})
},
//
getPriceByRole(item) {
let priceFiledList = ['goldPrice','silverPrice','diamondPrice']
let price = item[priceFiledList[this.userInfo.role - 1]]
return price >= 0 ? price : item.price
}
}
}
</script>
<style scoped lang="scss">
.item {
width: 100%;
padding: 10rpx 20rpx;
align-items: center;
display: flex;
box-sizing: border-box;
border-bottom: 1rpx solid #00000012;
background: white;
border-radius: 20rpx;
margin-bottom: 20rpx;
//
.item-image {
width: 180rpx;
height: 180rpx;
image {
height: 100%;
width: 100%;
}
}
//
.info {
padding: 20rpx 0rpx 20rpx 20rpx;
color: #555;
width: calc(100% - 180rpx);
box-sizing: border-box;
overflow: hidden;
display: flex;
flex-direction: column;
gap: 10rpx;
//
.title {
font-size: 28rpx;
font-weight: bold;
overflow: hidden; //
text-overflow: ellipsis; //
white-space: nowrap; //
}
//
.price {
display: flex;
align-items: center;
color: #f40;
font-size: 26rpx;
align-items: flex-end;
.money {
font-size: 30rpx;
.unit {
font-size: 20rpx;
}
}
.price-imgs {
display: flex;
flex-wrap: wrap;
.price-img {
width: 80rpx;
height: 30rpx;
margin-left: 10rpx;
}
}
}
.oldPrice{
color: #999;
font-size: 18rpx;
text-decoration: line-through;
}
//
.sales-volume {
display: flex;
align-items: center;
flex-wrap: wrap;
.sales-volume-imgbox {
width: 20rpx;
.sales-volume-img {
width: 100%;
}
}
.sales-volume-number {
color: #B8B8B8;
font-size: 26rpx;
padding-left: 10rpx;
}
}
//
.buy-btn {
background: $uni-color;
color: white;
display: inline-block;
padding: 10rpx 20rpx;
border-radius: 10rpx;
width: fit-content;
}
}
}
</style>

+ 118
- 65
components/product/productItem.vue View File

@ -30,56 +30,60 @@
</view>
</view> -->
<view class="price">
<view class="money">
<text>{{ item.price }}</text>
<text class="unit">/元每件</text>
</view>
<view class="oldPrice">
<text>{{ item.oldPrice }}</text>
<text class="unit">/</text>
</view>
</view>
<!-- <view class="oldPrice">
<view class="money">
<text>{{ item.oldPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
</view>
</view> -->
<view class="price">
<view class="money">
<text>{{ item.silverPrice }}</text>
<text class="unit">/元每件</text>
<view class="price-section">
<view class="price">
<view class="money">
<text>{{ item.price }}</text>
<text class="unit">/元每件</text>
</view>
<view class="oldPrice">
<text>{{ item.oldPrice }}</text>
<text class="unit">/</text>
</view>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_one" mode="aspectFill" class="price-img">
</image>
</view>
</view>
<view class="price">
<view class="money">
<text>{{ item.goldPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_two" mode="aspectFill"
class="price-img"></image>
</view>
</view>
<view class="price">
<view class="money">
<text>{{ item.diamondPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_three" mode="aspectFill" class="price-img">
</image>
<!-- <view class="oldPrice">
<view class="money">
<text>{{ item.oldPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
</view>
</view> -->
<view class="member-price">
<view class="price">
<view class="money">
<text>{{ item.silverPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_one" mode="aspectFill" class="price-img">
</image>
</view>
</view>
<view class="price">
<view class="money">
<text>{{ item.goldPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_two" mode="aspectFill"
class="price-img"></image>
</view>
</view>
<view class="price">
<view class="money">
<text>{{ item.diamondPrice }}</text>
<text class="unit">/元每件</text>
</view>
<view class="price-imgs">
<image :src="configList.vip_money_three" mode="aspectFill" class="price-img">
</image>
</view>
</view>
</view>
</view>
@ -151,7 +155,7 @@
<style scoped lang="scss">
.item {
width: 100%;
padding: 10rpx 20rpx;
padding: 15rpx 20rpx;
align-items: center;
display: flex;
box-sizing: border-box;
@ -159,11 +163,14 @@
background: white;
border-radius: 20rpx;
margin-bottom: 20rpx;
box-shadow: 0 2rpx 10rpx rgba(0,0,0,0.05);
//
.item-image {
width: 180rpx;
height: 180rpx;
width: 220rpx;
height: 220rpx;
border-radius: 12rpx;
overflow: hidden;
image {
height: 100%;
@ -173,21 +180,29 @@
//
.info {
padding: 20rpx 0rpx 20rpx 20rpx;
padding: 15rpx 0rpx 15rpx 25rpx;
color: #555;
width: calc(100% - 180rpx);
width: calc(100% - 220rpx);
box-sizing: border-box;
overflow: hidden;
display: flex;
flex-direction: column;
gap: 10rpx;
//
.title {
font-size: 28rpx;
font-size: 30rpx;
font-weight: bold;
overflow: hidden; //
text-overflow: ellipsis; //
white-space: nowrap; //
color: #333;
margin-bottom: 5rpx;
}
.price-section {
display: flex;
flex-direction: column;
gap: 6rpx;
}
//
@ -195,31 +210,63 @@
display: flex;
align-items: center;
color: #f40;
font-size: 26rpx;
font-size: 24rpx;
align-items: flex-end;
.money {
font-size: 30rpx;
font-weight: 600;
.unit {
font-size: 20rpx;
font-size: 18rpx;
font-weight: normal;
margin-left: 2rpx;
}
}
.price-imgs {
display: flex;
flex-wrap: wrap;
align-items: center;
.price-img {
width: 80rpx;
height: 30rpx;
margin-left: 10rpx;
width: 70rpx;
height: 26rpx;
margin-left: 8rpx;
}
}
}
.oldPrice{
color: #999;
font-size: 18rpx;
font-size: 20rpx;
text-decoration: line-through;
margin-left: 8rpx;
}
.member-price {
display: flex;
flex-direction: column;
gap: 4rpx;
margin-top: 4rpx;
padding-top: 6rpx;
border-top: 1rpx dashed #eee;
.money {
font-size: 26rpx;
.unit {
font-size: 18rpx;
}
}
.price-imgs {
display: flex;
flex-wrap: wrap;
.price-img {
width: 70rpx;
height: 26rpx;
margin-left: 8rpx;
}
}
}
//
@ -227,9 +274,10 @@
display: flex;
align-items: center;
flex-wrap: wrap;
margin-top: 2rpx;
.sales-volume-imgbox {
width: 20rpx;
width: 18rpx;
.sales-volume-img {
width: 100%;
@ -238,8 +286,8 @@
.sales-volume-number {
color: #B8B8B8;
font-size: 26rpx;
padding-left: 10rpx;
font-size: 24rpx;
padding-left: 8rpx;
}
}
@ -248,9 +296,14 @@
background: $uni-color;
color: white;
display: inline-block;
padding: 10rpx 20rpx;
padding: 8rpx 18rpx;
border-radius: 10rpx;
width: fit-content;
font-size: 26rpx;
font-weight: 500;
box-shadow: 0 2rpx 6rpx rgba(255,68,0,0.2);
transition: all 0.3s;
margin-top: 4rpx;
}
}
}

+ 521
- 0
pages/index/center copy.vue View File

@ -0,0 +1,521 @@
<template>
<view class="page">
<!-- 导航栏 -->
<navbar title="个人中心"
leftClick
@leftClick="$utils.navigateBack"
bgColor="#E3441A" color="#fff" />
<!-- 头部 -->
<view class="head">
<view class="headImage">
<image :src="userInfo.headImage" mode="aspectFill"></image>
</view>
<view class="user-info">
<view class="user-base-info">
<view class="user-base-top">
<view class="user-name">{{ userInfo.nickName}}</view>
<view class="member-level">
<image v-if="userInfo.role == 1" :src="configList.vip_user" mode="aspectFill" class="level">
</image>
<image v-if="userInfo.role == 2" src="@/static/image/center/gold-min.png" mode="aspectFill"
class="level">
</image>
<image v-if="userInfo.role == 3" src="@/static/image/center/sliver-min.png"
mode="aspectFill" class="level">
</image>
</view>
<view class="user-tag">
{{ userRole[userInfo.isPay] }}
</view>
</view>
<view class="edit-user"
@click="$utils.navigateTo('/pages_order/mine/updateUser?back=true')">
<image src="@/static/image/center/edit-icon.png" mode="aspectFill" class="edit-icon"></image>
<view class="edit-btn">
修改资料
</view>
</view>
</view>
<view class="user-phone">
手机号:{{ userInfo.phone }}
</view>
</view>
</view>
<!-- 会员卡片 -->
<view @click="$utils.navigateTo({url : '/pages_order/mine/memberCenter' })"
v-if="userInfo.role"
class="earnings">
<view v-if="index + 1 == userInfo.role" v-for="(item,index) in vipList" :key="item.id" class="member-item">
<image :src="item.headImage" mode="aspectFill" class="member-image"></image>
<view class="member-info">
<view class="profile-photo">
<image :src="userInfo.headImage" mode="aspectFill" class="pro-img"></image>
<view class="open-status">
开通时间{{ riceInfo.openTime }}
</view>
</view>
<view class="open">
</view>
</view>
</view>
</view>
<!-- 佣金数据 -->
<view @click="$utils.navigateTo('/pages_order/mine/withdraw')" class="brokerage-data"
:class="{'brokerage-data-mt' : !userInfo.role}">
<view class="brokerage">
<image :src="configList.money_image" mode="aspectFill" class="brokerage-img"></image>
<div class="main">
<div class="title">我的佣金</div>
<div class="money">{{ riceInfo.canWithdraw || 0 }}</div>
</div>
</view>
<view class="balance">
<image :src="configList.price_image" mode="aspectFill" class="balance-img"></image>
<div class="main">
<div class="title">我的余额</div>
<div class="money">{{ riceInfo.balance || 0 }}</div>
</div>
</view>
</view>
<!-- 我的服务 -->
<view class="myServer">
<view class="server-title">
我的服务
</view>
<view class="box">
<view class="boxs" @click="$utils.navigateTo('/pages/index/order?type=0')">
<image src="@/static/image/center/1.png" mode="widthFix" />
<view class="title">我的订单</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/partner')">
<image src="@/static/image/center/2.png" mode="widthFix" />
<view class="title">我的团队</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/home/contact')">
<image src="@/static/image/center/3.png" mode="widthFix" />
<view class="title">联系客服</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/promotion')">
<image src="@/static/image/center/4.png" mode="widthFix" />
<view class="title">邀请好友</view>
</view>
</view>
<view class="box">
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/recruit')">
<image src="@/static/image/center/5.png" mode="widthFix" />
<view class="title">合伙人招募</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/memberCenter')">
<image src="@/static/image/center/6.png" mode="widthFix" />
<view class="title">会员权益</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/coupon')">
<image src="@/static/image/center/7.png" mode="widthFix" />
<view class="title">优惠券</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/help')">
<image src="@/static/image/center/8.png" mode="widthFix" />
<view class="title">帮助与反馈</view>
</view>
</view>
<view class="box">
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/address')">
<image src="@/static/image/center/5.png" mode="widthFix" />
<view class="title">我的地址</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/order/giftList')">
<image src="@/static/image/center/6.png" mode="widthFix" />
<view class="title">礼包列表</view>
</view>
<view class="boxs" @click="logout">
<image src="@/static/image/center/6.png" mode="widthFix" />
<view class="title">退出登录</view>
</view>
</view>
</view>
<!-- 广告 -->
<div v-if="showAdvertising" class="ad"
@click="$utils.navigateTo('/pages_order/mine/recruit')">
<swiper class="swiper" circular :indicator-dots="indicatorDots" :autoplay="true" :interval="2000"
:duration="duration">
<swiper-item v-for="(item, index) in adList" :key="index">
<view class="swiper-main">
<view @click="closeAdvertising" class="close">
<image src="@/static/image/center/close.png" mode="aspectFill" class="close-img"></image>
</view>
<image :src="item" mode="aspectFill" class="swiper-main-img"></image>
<div class="ad-tag">
<image src="@/static/image/center/ad-tag.png" mode="aspectFill" class="ad-tag-img"></image>
</div>
</view>
</swiper-item>
</swiper>
</div>
<customerServicePopup ref="customerServicePopup" />
<tabber select="center" />
</view>
</template>
<script>
import tabber from '@/components/base/tabbar.vue'
import {
mapState
} from 'vuex'
import customerServicePopup from '@/components/config/customerServicePopup.vue'
export default {
components: {
tabber,
customerServicePopup,
},
computed: {
...mapState(['riceInfo']),
adList() {
let arr = [];
if (this.configList?.shop_get_image) {
arr = this.configList?.shop_get_image?.split(',')
}
return arr
}
},
data() {
return {
vipType: ['普通会员', '黄金会员', '渠道商'],
vipImage: ['vip_vip', 'vip_user', 'vip_shop'],
vipList: [],
showAdvertising: true,
userRole: ['会员', '用户', '渠道']
}
},
onShow() {
this.$store.commit('getUserInfo')
this.$store.commit('getRiceInfo')
this.getMemberCardData();
},
methods: {
clickNo() {
uni.showModal({
title: '暂未开放',
})
},
logout(){
uni.showModal({
title: '确认退出登录吗',
success : (r) => {
if (r.confirm) {
this.$store.commit('logout', true)
}
}
})
},
//广
closeAdvertising() {
this.showAdvertising = false;
},
//
getMemberCardData() {
this.$api('getRiceVipList', res => {
if (res.code == 200) {
this.vipList = res.result
}
})
}
}
}
</script>
<style scoped lang="scss">
.page {
//
.head {
display: flex;
align-items: center;
padding: 60rpx 20rpx 120rpx 20rpx;
background: $uni-color;
.headImage {
width: 130rpx;
height: 130rpx;
background-image: url(/static/image/center/head-img.png);
background-repeat: no-repeat;
background-position: 50%, 50%;
background-size: 100%;
overflow: hidden;
border-radius: 50%;
margin-right: 20rpx;
image {
width: 100%;
height: 100%;
}
}
.user-info {
width: calc(100% - 130rpx);
.user-base-info {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
.user-base-top {
width: 65%;
display: flex;
align-items: center;
flex-wrap: wrap;
color: white;
.user-name {
max-width: calc(100% - 240rpx);
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
font-size: 34rpx;
}
.member-level {
margin-left: 10rpx;
.level {
width: 120rpx;
height: 60rpx;
}
}
.user-tag {
display: flex;
align-items: center;
justify-content: center;
background: #000;
width: 100rpx;
height: 40rpx;
border-radius: 20rpx;
font-size: 24rpx;
margin-left: 10rpx;
}
}
.edit-user {
width: 35%;
display: flex;
align-items: center;
justify-content: flex-end;
.edit-icon {
width: 30rpx;
height: 30rpx;
}
.edit-btn {
color: white;
margin-left: 10rpx;
}
}
}
.user-phone {
color: white;
font-size: 24rpx;
}
}
}
//
.earnings {
padding: 0rpx 20rpx;
box-sizing: border-box;
margin-top: -18%;
.member-item {
position: relative;
.member-image {
width: 100%;
height: 300rpx;
border-radius: 20rpx;
}
.member-info {
position: absolute;
bottom: 30rpx;
left: 0rpx;
display: flex;
align-items: center;
padding: 0rpx 40rpx;
box-sizing: border-box;
width: 100%;
.profile-photo {
display: flex;
justify-content: center;
align-items: center;
.pro-img {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
}
.open-status {
color: #F8A95F;
border: 1px solid #F8A95F;
border-radius: 30rpx;
padding: 7rpx 20rpx;
margin-left: 10rpx;
}
}
.open {
font-size: 26rpx;
margin-left: 20rpx;
}
}
}
}
//
.brokerage-data {
padding: 20rpx;
background: white;
border-radius: 20rpx;
display: flex;
flex-wrap: wrap;
box-sizing: border-box;
margin: 20rpx 20rpx 20rpx 20rpx;
.brokerage,
.balance {
display: flex;
flex-wrap: wrap;
width: 50%;
.brokerage-img,
.balance-img {
width: 50%;
height: auto;
}
.main {
display: flex;
flex-direction: column;
justify-content: space-around;
width: 50%;
box-sizing: border-box;
padding: 30rpx 0rpx;
.title {
font-size: 34rpx;
}
.money {
font-size: 40rpx;
color: $uni-color;
font-weight: bold;
}
}
}
}
.brokerage-data-mt {
margin-top: 50rpx;
}
//
.myServer {
margin: 0rpx 20rpx 20rpx 20rpx;
background: white;
border-radius: 20rpx;
padding: 20rpx;
box-sizing: border-box;
.server-title {
margin-bottom: 20rpx;
font-size: 34rpx;
}
.box {
display: flex;
width: 100%;
margin-bottom: 20rpx;
.boxs {
width: 25%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
image {
width: 60rpx;
height: 60rpx;
display: block;
margin: 0rpx auto 10rpx auto;
}
}
&:last-child {
margin-bottom: 0rpx;
}
}
}
// 广
.ad {
margin: 0rpx 20rpx;
.swiper {
.swiper-main {
position: relative;
.close {
position: absolute;
top: 20rpx;
right: 20rpx;
.close-img {
width: 40rpx;
height: 40rpx;
}
}
.swiper-main-img {
width: 100%;
height: 200rpx;
border-radius: 20rpx;
}
.ad-tag {
position: absolute;
left: 20rpx;
bottom: 20rpx;
.ad-tag-img {
width: 120rpx;
height: auto;
}
}
}
}
}
}
</style>

+ 84
- 20
pages/index/center.vue View File

@ -96,53 +96,53 @@
<view class="box">
<view class="boxs" @click="$utils.navigateTo('/pages/index/order?type=0')">
<image src="@/static/image/center/1.png" mode="widthFix" />
<image src="@/static/image/center/1.png" mode="aspectFill" />
<view class="title">我的订单</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/partner')">
<image src="@/static/image/center/2.png" mode="widthFix" />
<image src="@/static/image/center/2.png" mode="aspectFill" />
<view class="title">我的团队</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/home/contact')">
<image src="@/static/image/center/3.png" mode="widthFix" />
<image src="@/static/image/center/3.png" mode="aspectFill" />
<view class="title">联系客服</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/promotion')">
<image src="@/static/image/center/4.png" mode="widthFix" />
<image src="@/static/image/center/4.png" mode="aspectFill" />
<view class="title">邀请好友</view>
</view>
</view>
<view class="box">
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/recruit')">
<image src="@/static/image/center/5.png" mode="widthFix" />
<image src="@/static/image/center/5.png" mode="aspectFill" />
<view class="title">合伙人招募</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/memberCenter')">
<image src="@/static/image/center/6.png" mode="widthFix" />
<image src="@/static/image/center/6.png" mode="aspectFill" />
<view class="title">会员权益</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/coupon')">
<image src="@/static/image/center/7.png" mode="widthFix" />
<image src="@/static/image/center/7.png" mode="aspectFill" />
<view class="title">优惠券</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/help')">
<image src="@/static/image/center/8.png" mode="widthFix" />
<image src="@/static/image/center/8.png" mode="aspectFill" />
<view class="title">帮助与反馈</view>
</view>
</view>
<view class="box">
<view class="boxs" @click="$utils.navigateTo('/pages_order/mine/address')">
<image src="@/static/image/center/5.png" mode="widthFix" />
<image src="@/static/image/center/address.png" mode="aspectFill" />
<view class="title">我的地址</view>
</view>
<view class="boxs" @click="$utils.navigateTo('/pages_order/order/giftList')">
<image src="@/static/image/center/6.png" mode="widthFix" />
<image src="@/static/image/center/9.png" mode="aspectFill" />
<view class="title">礼包列表</view>
</view>
<view class="boxs" @click="logout">
<image src="@/static/image/center/6.png" mode="widthFix" />
<image src="@/static/image/center/logout.png" mode="aspectFill" />
<view class="title">退出登录</view>
</view>
</view>
@ -445,31 +445,95 @@
margin: 0rpx 20rpx 20rpx 20rpx;
background: white;
border-radius: 20rpx;
padding: 20rpx;
padding: 30rpx 20rpx;
box-sizing: border-box;
box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.05);
.server-title {
margin-bottom: 20rpx;
font-size: 34rpx;
margin-bottom: 30rpx;
font-size: 36rpx;
font-weight: 600;
color: #333;
position: relative;
padding-left: 20rpx;
&::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 8rpx;
height: 32rpx;
background: $uni-color;
border-radius: 4rpx;
}
}
.box {
display: flex;
width: 100%;
margin-bottom: 20rpx;
margin-bottom: 30rpx;
gap: 20rpx;
.boxs {
width: 25%;
width: 23%;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 20rpx 0;
border-radius: 16rpx;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
&::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(227, 68, 26, 0.05);
opacity: 0;
transition: opacity 0.3s ease;
z-index: 1;
}
&:active {
transform: scale(0.95);
&::after {
opacity: 1;
}
}
image {
width: 60rpx;
height: 60rpx;
width: 70rpx;
height: 70rpx;
display: block;
margin: 0rpx auto 10rpx auto;
margin: 0rpx auto 16rpx auto;
position: relative;
z-index: 2;
transition: transform 0.3s ease;
}
.title {
font-size: 26rpx;
color: #333;
position: relative;
z-index: 2;
transition: color 0.3s ease;
}
&:active {
image {
transform: translateY(-4rpx);
}
.title {
color: $uni-color;
}
}
}


+ 1
- 1
pages_order/auth/wxUserInfo.vue View File

@ -4,7 +4,7 @@
<image :src="configList.logo_image" mode=""></image>
</view> -->
<view class="title">
陌美人
{{ configList.logo_name }}
</view>
<view class="title">
申请获取你的头像昵称


+ 12
- 3
pages_order/components/product/submit.vue View File

@ -12,14 +12,22 @@
<button
open-type="contact"
class="service-icon">
<image src="@/pages_order/static/productDetail/service.png" mode="widthFix" class="service-icon-img">
<image src="@/pages_order/static/productDetail/service.png"
mode="aspectFill" class="service-icon-img">
</image>
</button>
<button
class="service-icon"
@click="$emit('toSend')">
<image src="/static/image/center/9.png"
mode="aspectFill" class="service-icon-img"/>
</button>
<view class="submit-btn">
<view class="l"
@click="$emit('toSend')">
我要送礼
@click="$emit('addCart')">
加入购物车
</view>
<view class="r" @click="$emit('submit')">
{{ submiitTitle }}
@ -74,6 +82,7 @@
display: flex;
flex-direction: column;
justify-content: center;
margin: 0 20rpx;
&::after{
border: 0;
}


+ 24
- 22
pages_order/order/createOrder.vue View File

@ -334,25 +334,27 @@
let data = {}
let api = ''
//
if(this.type != 'give'){
let list = []
this.payOrderProduct.forEach(n => {
list.push({
num: n.num,
shopId: n.shopId || n.id,
})
})
data = {
addressId,
payType : this.payMethod,
list: JSON.stringify(list),
}
api = 'createSumOrder'
// if (this.payOrderProduct[0].shopId || this.payOrderProduct[0].type == 2) { //
// let list = []
// this.payOrderProduct.forEach(n => {
// list.push({
// num: n.num,
// shopId: n.shopId || n.id,
// })
// })
// data = {
// addressId,
// list: JSON.stringify(list),
// }
// api = 'createSumOrder'
// this.deleteCart(this.payOrderProduct.map(n => n.id).join(','))
this.deleteCart(this.payOrderProduct.map(n => n.id).join(','))
// } else { //
} else { //
data = {
addressId,
num: this.payOrderProduct[0].num,
@ -362,7 +364,7 @@
memberNum : 1,
}
api = 'createOrder'
// }
}
if(this.coupon.id){
data.couponId = this.coupon.id
@ -375,10 +377,10 @@
if (res.code == 200) {
if(this.payMethod == 1){
uni.showToast({
title: '下单成功',
icon: 'none'
})
// uni.showToast({
// title: '',
// icon: 'none'
// })
this.paySuccess(res)
return
}


+ 17
- 2
pages_order/product/productDetail.vue View File

@ -1,11 +1,11 @@
<template>
<view class="page">
<!-- 导航栏 -->
<navbar title="商品详情" leftClick @leftClick="$utils.navigateBack" />
<!-- <navbar title="商品详情" leftClick @leftClick="$utils.navigateBack" /> -->
<view class="swipe">
<uv-swiper :list="productDetail.image
&& productDetail.image.split(',')" indicator height="520rpx"></uv-swiper>
&& productDetail.image.split(',')" indicator height="680rpx"></uv-swiper>
</view>
<!-- 商品标题 -->
@ -100,6 +100,7 @@
@service="service"
@toSend="toSend"
@submit="submit"
@addCart="addCart"
:detail="productDetail" />
<!-- 联系客服 -->
@ -137,6 +138,20 @@
//
share() {
},
//
addCart(){
this.$api('addCart', {
shopId : this.id,
num : 1,
}, res => {
if(res.code == 200){
uni.showToast({
title: '加入购物车成功',
icon: 'none'
})
}
})
},
//
submit() {


BIN
static/image/cart/1.png View File

Before After
Width: 36  |  Height: 36  |  Size: 1.9 KiB

BIN
static/image/center/1.png View File

Before After
Width: 60  |  Height: 60  |  Size: 1.0 KiB Width: 200  |  Height: 200  |  Size: 2.5 KiB

BIN
static/image/center/2.png View File

Before After
Width: 60  |  Height: 60  |  Size: 1.7 KiB Width: 200  |  Height: 200  |  Size: 4.8 KiB

BIN
static/image/center/4.png View File

Before After
Width: 60  |  Height: 60  |  Size: 2.1 KiB Width: 200  |  Height: 200  |  Size: 4.1 KiB

BIN
static/image/center/7.png View File

Before After
Width: 60  |  Height: 60  |  Size: 912 B Width: 200  |  Height: 200  |  Size: 2.8 KiB

BIN
static/image/center/8.png View File

Before After
Width: 60  |  Height: 60  |  Size: 2.2 KiB Width: 200  |  Height: 200  |  Size: 4.7 KiB

BIN
static/image/center/9.png View File

Before After
Width: 200  |  Height: 200  |  Size: 4.1 KiB

BIN
static/image/center/address.png View File

Before After
Width: 200  |  Height: 200  |  Size: 4.0 KiB

BIN
static/image/center/logout.png View File

Before After
Width: 200  |  Height: 200  |  Size: 4.0 KiB

BIN
static/image/tabbar/cart-active.png View File

Before After
Width: 200  |  Height: 200  |  Size: 3.5 KiB

BIN
static/image/tabbar/cart.png View File

Before After
Width: 200  |  Height: 200  |  Size: 3.3 KiB

Loading…
Cancel
Save