商品详情系列

master
tangyi 2022-04-11 18:01:23 +08:00
parent a72b414409
commit c3b56397cd
7 changed files with 1159 additions and 22 deletions

View File

@ -49,5 +49,4 @@
@import url("./commons/animate.min.css");
/* 动画样式 end */
page {background-color: #f7f7f7;}
</style>

View File

@ -1,14 +1,12 @@
{
"pages": [ {
"path" : "pages/index/index",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
"pages": [{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
],
}],
"subPackages": [{ //A
"root": "pagesA",
"pages": [{
@ -22,7 +20,30 @@
{ //B
"root": "pagesB",
"pages": [{
"path" : "signin/signin",
"path": "signin/signin",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}, {
"path": "integralMall/integralMall",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
, {
"path": "search/search",
"style": {
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
,{
"path" : "commodityDetails/commodityDetails",
"style" :
{
"navigationBarTitleText": "",
@ -31,7 +52,16 @@
}
,{
"path" : "integralMall/integralMall",
"path" : "order/order",
"style" :
{
"navigationBarTitleText": "",
"enablePullDownRefresh": false
}
}
,{
"path" : "myPrize/myPrize",
"style" :
{
"navigationBarTitleText": "",

View File

@ -7,9 +7,9 @@
<view class="text">
<text class="num">0</text> 积分
</view>
<view class="button">
<navigator url="/pagesB/integralMall/integralMall" class="button">
去兑换>
</view>
</navigator>
</view>
<view class="li">
<view class="text">
@ -22,12 +22,12 @@
</view>
<view class="function-list">
<view class="li" v-for="(item,index) in dataFunction">
<navigator :url="item.url" class="li" v-for="(item,index) in dataFunction">
<image src="" class="icon" mode=""></image>
<view class="text">
{{item.title}}
</view>
</view>
</navigator>
</view>
<view class="main">
@ -158,15 +158,18 @@
ifReturn: false,
dataFunction: [{
src: "",
title: "天天签到"
title: "天天签到",
url:"/pagesB/signin/signin"
},
{
src: "",
title: "积分商城"
title: "积分商城",
url:"/pagesB/signin/signin"
},
{
src: "",
title: "惊喜盲盒"
title: "惊喜盲盒",
url:"/pagesB/signin/signin"
},
],
dataChoiceness: [{
@ -190,9 +193,9 @@
}
},
onLoad() {
uni.navigateTo({
url:"/pagesB/integralMall/integralMall"
})
// uni.navigateTo({
// url:"/pagesB/myPrize/myPrize"
// })
},
methods: {

View File

@ -0,0 +1,452 @@
<template>
<view class="content">
<statusNav returnColor="#141414" fontWeight="800" titleColor="#141414" backgroudColor="#ffffff"
navBarTitle="商品详情">
</statusNav>
<view class="head">
<view class="text">
<view class="money-signin">
65.00+100积分
</view>
<view class="money">
125.00
</view>
<view class="sales-volume">
月销5.5
</view>
</view>
</view>
<view class="main">
<view class="title">
SAN BENEDTTO 圣碧涛 自由携带瓶装矿
泉水500ml 4瓶装
</view>
<view class="text">
<view class="tit">
兑换说明
</view>
<view class="text-content">
<view class="li">
1.兑换成功后可获得3.00元抵用券
</view>
<view class="li">
2.券后仅需65.00元即可购买以购买页实时价格为准
</view>
<view class="li">
3.请在适用范围内使用数量有限兑换即止
</view>
</view>
</view>
<view class="brief-introduction">
<view class="brief-introduction-title">
图文详情
</view>
<view class="img">
</view>
</view>
<view class="recommend">
<view class="recommend-title">
推荐商品
</view>
<view class="mall">
<view class="li" v-for="(item,index) in 2">
<image src="" class="img" mode=""></image>
<view class="name">
现金红包666元独宠一人
</view>
<view class="num">
30.00+20积分
</view>
</view>
</view>
</view>
</view>
<view class="button" @click="buyButton()">
立即兑换
</view>
<view class="make" @click="buyMakeButton" v-if="isbuy">
</view>
<view class="buy-make" :class="isbuy?'buy-make-b':''">
<view class="one">
<image src="" class="img" mode=""></image>
<view class="text">
<view class="name">
法国品牌兰蔻抗皱精
华水200ml
</view>
<view class="money-signin">
1236.00+2000积分
</view>
</view>
</view>
<view class="specification">
<view class="title">
规格
</view>
<view class="money-signin">
200ml+220g
</view>
</view>
<view class="quantity">
<view class="title">
数量 <text class="cor">每个人限购25件</text>
</view>
<view class="btn">
<view class="subtract">
</view>
<input type="text" v-model="inputNum" class="input" value="" />
<view class="add">
</view>
</view>
</view>
<view class="buy-make-button" @click="buyMakeButton()">
立即购买
</view>
</view>
</view>
</template>
<script>
import statusNav from '../../components/status-nav.vue';
export default {
components: {
statusNav
},
data() {
return {
inputNum: 1,
isbuy:false
}
},
methods: {
buyButton(){
this.isbuy=true
},
buyMakeButton(){
this.isbuy=false
}
}
}
</script>
<style>
.content {
padding-bottom: 180rpx;
}
.head {
width: 100%;
margin-top: 40rpx;
background-color: rgb(232, 232, 232);
height: 518rpx;
position: relative;
}
.head .text {
position: absolute;
bottom: 0rpx;
left: 0rpx;
display: flex;
box-sizing: border-box;
width: 100%;
padding: 20rpx 24rpx;
}
.head .text .money-signin {
color: rgba(244, 47, 47, 100);
font-size: 40rpx;
margin-right: 12rpx;
}
.head .text .money {
position: relative;
color: rgba(208, 208, 208, 100);
font-size: 28rpx;
}
.head .text .money::after {
content: "";
width: 120rpx;
display: block;
position: absolute;
height: 2rpx;
top: 40%;
left: 0rpx;
background-color: rgba(208, 208, 208, 100);
}
.head .text .sales-volume {
position: absolute;
top: 20rpx;
right: 24rpx;
color: rgba(208, 208, 208, 100);
font-size: 28rpx;
}
.main {
padding: 0 24rpx;
}
.main .title {
color: rgba(16, 16, 16, 100);
font-size: 36rpx;
font-weight: 600;
line-height: 60rpx;
padding: 30rpx 0rpx;
border-bottom: 2rpx solid rgba(187, 187, 187, 100);
}
.main .text {
color: rgba(16, 16, 16, 100);
font-size: 30rpx;
padding: 30rpx 0 30rpx;
border-bottom: 2rpx solid rgba(187, 187, 187, 100);
}
.main .text .text-content .li {
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
margin-top: 16rpx;
}
.brief-introduction-title {
margin-top: 30rpx;
color: rgba(16, 16, 16, 100);
font-size: 30rpx;
margin-bottom: 20rpx;
}
.brief-introduction .img {
background-color: rgb(232, 232, 232);
width: 100%;
height: 1106rpx;
}
.recommend-title {
color: rgba(16, 16, 16, 100);
font-size: 36rpx;
font-weight: 600;
margin-top: 40rpx;
margin-bottom: 16rpx;
}
.mall {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.mall .li {
width: 340rpx;
height: 440rpx;
border-radius: 20rpx;
margin-bottom: 22rpx;
box-shadow: 0px 0px 12rpx 0px rgba(0, 0, 0, 0.1);
}
.mall .li .img {
background-color: rgba(236, 236, 236, 100);
width: 100%;
height: 310rpx;
border-radius: 20rpx 20rpx 0px 0px;
}
.mall .li .name {
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
padding: 14rpx 14rpx;
font-family: PingFangSC-regular;
}
.mall .li .num {
color: rgba(243, 122, 97, 100);
font-size: 28rpx;
padding: 0 14rpx;
font-weight: normal;
}
.button {
width: 694rpx;
height: 110rpx;
border-radius: 20rpx;
background-color: rgba(243, 122, 97, 100);
text-align: center;
line-height: 110rpx;
position: fixed;
bottom: 18rpx;
left: 50%;
color: rgba(255, 255, 255, 100);
font-size: 32rpx;
margin-left: -347rpx;
}
.make {
width: 100%;
z-index: 66;
height: 100%;
position: fixed;
left: 0rpx;
top: 0rpx;
background-color: rgba(0, 0, 0, 0.5)
}
.buy-make {
width: 100%;
height: 476rpx;
border-radius: 40rpx 40rpx 0px 0px;
background-color: #FFFFFF;
position: fixed;
z-index: 100;
left: 0rpx;
transition: 0.5s all;
bottom: -576rpx;
padding-left: 38rpx;
padding-right: 28rpx;
box-sizing: border-box;
}
.buy-make-b{
bottom: 0rpx;
}
.buy-make .one {
display: flex;
}
.buy-make .one .img {
width: 290rpx;
margin-right: 18rpx;
height: 290rpx;
margin-top: -100rpx;
border-radius: 20rpx;
box-shadow: 0px 4rpx 12rpx 0px rgba(0, 0, 0, 0.11);
background-color: #FFFFFF;
}
.buy-make .one .name {
color: rgba(16, 16, 16, 100);
padding-top: 22rpx;
font-size: 36rpx;
width: 324rpx;
font-weight: 600;
line-height: 60rpx;
}
.buy-make .one .money-signin {
color: rgba(249, 70, 70, 100);
font-size: 28rpx;
margin-top: 16rpx;
}
.specification {
display: flex;
margin-top: 26rpx;
justify-content: space-between;
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
}
.quantity {
display: flex;
justify-content: space-between;
margin-top: 36rpx;
}
.quantity .title {
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
}
.quantity .title .cor {
color: rgb(156, 156, 156);
}
.quantity .btn {
display: flex;
}
.quantity .btn .subtract {
width: 52rpx;
position: relative;
height: 52rpx;
line-height: 45rpx;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
border: 2rpx solid rgba(187, 187, 187, 100);
}
.quantity .btn .subtract::after {
content: "";
width: 28rpx;
display: block;
height: 4rpx;
background-color: #bbbbbb;
}
.quantity .btn .input {
width: 118rpx;
height: 52rpx;
text-align: center;
border-top: 2rpx solid rgba(187, 187, 187, 100);
border-bottom: 2rpx solid rgba(187, 187, 187, 100);
}
.quantity .btn .add {
width: 52rpx;
height: 52rpx;
position: relative;
display: flex;
align-items: center;
justify-content: center;
flex-direction: column;
line-height: 52rpx;
text-align: center;
border: 2rpx solid rgba(187, 187, 187, 100);
}
.quantity .btn .add::after {
content: "";
width: 28rpx;
display: block;
height: 5rpx;
margin-top: -5rpx;
transform: rotateZ(90deg);
background-color: #141414;
}
.quantity .btn .add::before {
content: "";
width: 28rpx;
display: block;
height: 5rpx;
background-color: #141414;
}
.buy-make-button{
width: 686rpx;
height: 92rpx;
line-height: 92rpx;
border-radius: 20rpx;
background-color: rgba(243, 122, 97, 100);
text-align: center;
margin-top: 24rpx;
font-size: 28rpx;
text-align: center;
color: #FFFFFF;
}
</style>

165
pagesB/myPrize/myPrize.vue Normal file
View File

@ -0,0 +1,165 @@
<template>
<view>
<statusNav returnColor="#141414" fontWeight="800" titleColor="#141414" backgroudColor="#ffffff"
navBarTitle="我的奖品">
</statusNav>
<view class="main">
<view class="li">
<image src="" class="img" mode=""></image>
<button @click="isMyprizeFun()" class="button" :class="true?'':'buttonCss'" type="default">立即兑换</button>
</view>
<view class="li">
<image src="" class="img" mode=""></image>
<button class="button" :class="false?'':'buttonCss'" type="default">立即兑换</button>
</view>
</view>
<view class="make" v-if="isMyprize">
<view class="make-content">
<view class="title">
确定兑换此奖品
</view>
<view class="text">
:该奖品需要邮寄请填写收货地址
</view>
<view class="button-content">
<view class="button" @click="isMyprizeFun()">
暂不兑换
</view>
<view class="button buttonCss" @click="isMyprizeFun()">
立即兑换
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import statusNav from '../../components/status-nav.vue';
export default {
components: {
statusNav
},
data() {
return {
isMyprize: true
}
},
methods: {
isMyprizeFun() {
this.isMyprize=!this.isMyprize
}
}
}
</script>
<style>
.main {
margin-top: 46rpx;
}
.main .li {
width: 710rpx;
height: 468rpx;
margin: auto;
padding-top: 40rpx;
margin-bottom: 20rpx;
box-sizing: border-box;
border-radius: 20rpx;
text-align: center;
box-shadow: 0px 0px 12rpx 0px rgba(0, 0, 0, 0.13);
}
.main .li .img {
width: 290rpx;
height: 290rpx;
margin-bottom: 20rpx;
background-color: rgb(232, 232, 232)
}
.main .li .button {
width: 630rpx;
height: 74rpx;
border-radius: 20rpx;
font-size: 28rpx;
color: #FFFFFF;
background-color: rgba(243, 122, 97, 100);
text-align: center;
}
.main .li .buttonCss {
width: 630rpx;
height: 74rpx;
border-radius: 20rpx;
font-size: 28rpx;
color: #FFFFFF;
background-color: rgba(227, 227, 227, 100);
text-align: center;
}
.make {
width: 100%;
height: 100%;
position: fixed;
left: 0rpx;
z-index: 50;
top: 0rpx;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.5)
}
.make-content {
width: 646rpx;
height: 432rpx;
background-color: #FFFFFF;
border-radius: 20rpx;
text-align: center;
position: relative;
box-sizing: border-box;
padding-top: 94rpx;
border: 2rpx solid rgba(187, 187, 187, 100);
}
.make-content .title {
color: rgba(16, 16, 16, 100);
font-size: 32rpx;
margin-bottom: 60rpx;
}
.make-content .text {
font-size: 24rpx;
color: rgba(156, 156, 156, 100);
}
.button-content {
display: flex;
padding: 24rpx;
justify-content: space-between;
position: absolute;
left: 0rpx;
bottom: 0rpx;
width: 100%;
box-sizing: border-box;
}
.button-content .button {
width: 242rpx;
height: 84rpx;
color: rgba(255, 255, 255, 100);
font-size: 28rpx;
line-height: 84rpx;
border-radius: 20rpx;
background-color: rgba(185, 185, 185, 100);
}
.button-content .buttonCss {
background-color: rgba(243, 122, 97, 100);
}
</style>

278
pagesB/order/order.vue Normal file
View File

@ -0,0 +1,278 @@
<template>
<view>
<statusNav returnColor="#141414" fontWeight="800" titleColor="#141414" backgroudColor="#ffffff"
navBarTitle="确认订单">
</statusNav>
<view class="main">
<view class="address-content">
<image src="" class="icon" mode=""></image>
<view class="text">
请填写收货地址
</view>
</view>
<view class="address-list">
<view class="li">
<view class="li-content">
<view class="name">
小灰灰
</view>
<view class="tel">
188****8888
</view>
</view>
<image src="" class="icon" mode=""></image>
</view>
<view class="address">
四川省成都市成华区中环路双店路段奥园广场3期6栋1314
</view>
</view>
<view class="order-content">
<view class="order-content-commodity">
<image src="" class="img" mode=""></image>
<view class="text">
<view class="name-content">
<view class="name">
杏仁酸抗痘套组杏仁酸精华8%
</view>
<view class="num">
x1
</view>
</view>
<view class="selected">
已选200ml+220g
</view>
<view class="money-signin">
1236.00+2000积分
</view>
</view>
</view>
<view class="quantity-commodity">
<view class="">
商品数量
</view>
<view class="">
1
</view>
</view>
<view class="quantity-commodity">
<view class="">
总价
</view>
<view class="cor">
1300.00
</view>
</view>
<view class="quantity-commodity">
<view class="">
积分抵扣
</view>
<view class="cor">
-2000
</view>
</view>
<view class="quantity-commodity">
<view class="">
快递邮费
</view>
<view class="">
10.00
</view>
</view>
</view>
</view>
<view class="order-bottom">
<view class="">
合计<text class="cor">1246.00+2000积分</text>
</view>
<view class="btn">
去支付
</view>
</view>
</view>
</template>
<script>
import statusNav from '../../components/status-nav.vue';
export default {
components: {
statusNav
},
data() {
return {
}
},
methods: {
}
}
</script>
<style>
page {
background-color: #f4f4f4;
}
.main {
background-color: #FFFFFF;
padding-top: 66rpx;
padding-bottom: 106rpx;
}
.address-content {
width: 692rpx;
border-bottom: 2rpx solid rgba(229, 229, 229, 100);
display: flex;
margin: auto;
justify-content: center;
align-items: center;
padding-bottom: 38rpx;
}
.address-list {
width: 692rpx;
margin: auto;
padding-bottom: 38rpx;
padding-top: 38rpx;
border-bottom: 2rpx solid rgba(229, 229, 229, 100);
}
.address-list .address {
font-size: 24rpx;
color: rgba(16, 16, 16, 100);
}
.address-list .li {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 20rpx;
}
.address-list .li .li-content {
display: flex;
}
.address-list .li .li-content .name {
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
font-weight: bold;
margin-right: 48rpx;
}
.address-list .li .li-content .tel {
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
}
.address-list .li .icon {
width: 46rpx;
height: 46rpx;
background-color: #E3E3E3;
margin-right: 16rpx;
}
.address-content .icon {
width: 46rpx;
height: 46rpx;
background-color: #E3E3E3;
margin-right: 16rpx;
}
.order-content {
padding: 0 20rpx;
padding-top: 28rpx;
}
.order-content-commodity {
display: flex;
}
.order-content-commodity .text {
flex: 1;
}
.order-content-commodity .text .name-content {
display: flex;
justify-content: space-between;
}
.order-content-commodity .img {
width: 196rpx;
margin-right: 20rpx;
height: 196rpx;
background-color: #E3E3E3;
}
.order-content-commodity .text .name {
font-size: 28rpx;
width: 364rpx;
line-height: 45rpx;
}
.order-content-commodity .text .num {
font-size: 28rpx;
color: #9C9C9C;
}
.order-content-commodity .text .selected {
color: rgba(185, 185, 185, 100);
font-size: 24rpx;
margin-top: 16rpx;
margin-bottom: 14rpx;
}
.order-content-commodity .text .money-signin {
color: rgba(185, 185, 185, 100);
font-size: 28rpx;
margin-top: 16rpx;
margin-bottom: 17rpx;
color: rgba(249, 70, 70, 100);
font-size: 28rpx;
}
.quantity-commodity {
display: flex;
justify-content: space-between;
margin-top: 60rpx;
color: rgba(16, 16, 16, 100);
font-size: 14px;
}
.quantity-commodity .cor {
color: #F94646;
}
.order-bottom {
width: 100%;
height: 110rpx;
display: flex;
justify-content: space-between;
position: fixed;
padding-left: 20rpx;
bottom: 0rpx;
align-items: center;
left: 0rpx;
background-color: rgba(255, 255, 255, 100);
}
.order-bottom .btn {
width: 290rpx;
height: 110rpx;
background-color: rgba(249, 70, 70, 100);
text-align: center;
color: rgba(255, 255, 255, 100);
font-size: 28rpx;
line-height: 110rpx;
}
.order-bottom .cor {
color: #F94646;
font-weight: 600;
}
</style>

210
pagesB/search/search.vue Normal file
View File

@ -0,0 +1,210 @@
<template>
<view>
<statusNav returnColor="#141414" fontWeight="800" titleColor="#141414" backgroudColor="#ffffff"
navBarTitle="积分商城">
</statusNav>
<view class="search-input">
<input class="input" @input="isInputFun()" v-model="inputValue" type="text" value="" placeholder="输入商品名称" />
<view class="text">
取消
</view>
</view>
<view class="search-main">
<view v-if="isInput">
<view class="hot">
<view class="title">
历史搜索
</view>
<view class="hot-content">
<view class="li" v-for="(item,index) in 6">
生活用品
</view>
</view>
</view>
<view class="hot">
<view class="title">
热门搜索
</view>
<view class="hot-content">
<view class="li" v-for="(item,index) in 6">
生活
</view>
</view>
</view>
</view>
<view class="search-list" v-if="!isInput">
<view class="nav">
<view class="li on">
<view class="">
综合
</view>
</view>
<view class="li">
<view class="">
价格
</view>
</view>
<view class="li">
<view class="">
销量
</view>
</view>
</view>
<view class="mall">
<view class="li" v-for="(item,index) in 6">
<image src="" class="img" mode=""></image>
<view class="name">
现金红包666元独宠一人
</view>
<view class="num">
30.00+20积分
</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
import footTabOne from "../../components/foot-tabs/foot-tab-one.vue"
import statusNav from '../../components/status-nav.vue';
export default {
components: {
footTabOne,
statusNav
},
data() {
return {
isInput: true,
inputValue: ""
}
},
methods: {
isInputFun() {
if (this.inputValue) {
this.isInput = false
} else {
this.isInput = true
}
}
}
}
</script>
<style>
/* page {
background-color: #F5F5F5;
}
*/
.search-input {
display: flex;
align-items: center;
padding: 30rpx 30rpx;
background-color: #FFFFFF;
}
.search-input .input {
width: 612rpx;
height: 72rpx;
font-size: 28rpx;
padding-left: 36rpx;
box-sizing: border-box;
border-radius: 10rpx;
background-color: rgba(236, 236, 236, 100);
}
.search-input .text {
color: rgba(113, 113, 113, 100);
font-size: 28rpx;
margin-left: 22rpx;
}
.search-main {}
.search-main .hot {
margin-bottom: 20rpx;
padding: 0 30rpx;
}
.search-main .hot .title {
font-size: 32rpx;
color: rgba(16, 16, 16, 100);
margin-bottom: 20rpx;
}
.hot-content {
display: flex;
flex-wrap: wrap;
}
.hot-content .li {
color: rgba(113, 113, 113, 100);
font-size: 28rpx;
border-radius: 10rpx;
margin-right: 20rpx;
margin-bottom: 20rpx;
padding: 12rpx 24rpx;
background-color: rgba(236, 236, 236, 100);
text-align: center;
}
.search-list {}
.search-list .nav {
display: flex;
justify-content: space-between;
padding: 0rpx 60rpx;
padding-bottom: 32rpx;
background-color: #FFFFFF;
}
.search-list .nav .on {
font-size: 28rpx;
color: #F37A61;
}
.mall {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
padding: 0 30rpx;
background-color: #F5F5F5;
padding-top: 20rpx;
}
.mall .li {
width: 340rpx;
height: 440rpx;
border-radius: 20rpx;
margin-bottom: 22rpx;
margin-bottom: 22rpx;
box-shadow: 0px 0px 12rpx 0px rgba(0, 0, 0, 0.1);
}
.mall .li .img {
background-color: rgba(236, 236, 236, 100);
width: 100%;
height: 310rpx;
border-radius: 20rpx 20rpx 0px 0px;
}
.mall .li .name {
color: rgba(16, 16, 16, 100);
font-size: 28rpx;
padding: 14rpx 14rpx;
font-family: PingFangSC-regular;
}
.mall .li .num {
color: rgba(243, 122, 97, 100);
font-size: 28rpx;
padding: 0 14rpx;
font-weight: normal;
}
</style>