@ -0,0 +1,18 @@ |
|||
# Mac |
|||
.DS_Store |
|||
**/.DS_Store |
|||
|
|||
# vim/vi |
|||
*.swp |
|||
|
|||
# JavaScript |
|||
node_modules/ |
|||
.node_modules/ |
|||
.eslintcache |
|||
unpackage/dist/build/ |
|||
unpackage/dist/dev/ |
|||
unpackage/cache/ |
|||
unpackage/release/ |
|||
unpackage/debug/ |
|||
# python |
|||
*.pyc |
|||
@ -0,0 +1,24 @@ |
|||
{ // launch.json 配置了启动调试时相关设置,configurations下节点名称可为 app-plus/h5/mp-weixin/mp-baidu/mp-alipay/mp-qq/mp-toutiao/mp-360/ |
|||
// launchtype项可配置值为local或remote, local代表前端连本地云函数,remote代表前端连云端云函数 |
|||
"version": "0.0", |
|||
"configurations": [{ |
|||
"app-plus" : |
|||
{ |
|||
"launchtype" : "local" |
|||
}, |
|||
"default" : |
|||
{ |
|||
"launchtype" : "local" |
|||
}, |
|||
"h5" : |
|||
{ |
|||
"launchtype" : "local" |
|||
}, |
|||
"mp-weixin" : |
|||
{ |
|||
"launchtype" : "local" |
|||
}, |
|||
"type" : "uniCloud" |
|||
} |
|||
] |
|||
} |
|||
@ -0,0 +1,18 @@ |
|||
<script> |
|||
export default { |
|||
onLaunch: function() { |
|||
// console.log('App Launch') |
|||
}, |
|||
onShow: function() { |
|||
// console.log('App Show') |
|||
}, |
|||
onHide: function() { |
|||
// console.log('App Hide') |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
/*每个页面公共css */ |
|||
@import "@/common/common.scss"; |
|||
</style> |
|||
@ -0,0 +1,3 @@ |
|||
{ |
|||
"prompt" : "none" |
|||
} |
|||
@ -0,0 +1,76 @@ |
|||
import httpRequest from './request'; |
|||
|
|||
//默认请求地址
|
|||
export const defaultRequest =query=>{ |
|||
return httpRequest({ |
|||
url:'mapi/api_v2011.php?appcode=DOPE+', |
|||
method:'post', |
|||
data:query, |
|||
errMsg:true, |
|||
isCookies:false, |
|||
isEncryption:false, |
|||
isLoad:true |
|||
}) |
|||
} |
|||
|
|||
//默认请求地址 不显示错误信息
|
|||
export const defaultRequest1 =query=>{ |
|||
return httpRequest({ |
|||
url:'mapi/api_v2011.php?appcode=DOPE+', |
|||
method:'post', |
|||
data:query, |
|||
errMsg:false, |
|||
isCookies:false, |
|||
isEncryption:false, |
|||
isLoad:true |
|||
}) |
|||
} |
|||
//默认请求地址 只用cookies请求数据
|
|||
export const defaultRequest2 =query=>{ |
|||
return httpRequest({ |
|||
url:'mapi/api_v2011.php?appcode=DOPE+', |
|||
method:'post', |
|||
data:query, |
|||
errMsg:true, |
|||
isCookies:true, |
|||
isEncryption:false, |
|||
isLoad:true |
|||
}) |
|||
} |
|||
//默认请求地址 只用cookies请求数据 对里面的对象进行加密
|
|||
export const defaultRequest3 =(query,key)=>{ |
|||
return httpRequest({ |
|||
url:'mapi/api_v2011.php?appcode=DOPE+', |
|||
method:'post', |
|||
data:query, |
|||
errMsg:true, |
|||
isCookies:true, |
|||
isEncryption:true, |
|||
isLoad:true, |
|||
key:key |
|||
}) |
|||
} |
|||
//默认请求地址 不显示等待加载
|
|||
export const defaultRequest4 =query=>{ |
|||
return httpRequest({ |
|||
url:'mapi/api_v2011.php?appcode=DOPE+', |
|||
method:'post', |
|||
data:query, |
|||
errMsg:true, |
|||
isCookies:false, |
|||
isEncryption:false, |
|||
isLoad:false |
|||
}) |
|||
} |
|||
|
|||
export const defaultRequest5 =query=>{ |
|||
return httpRequest({ |
|||
url:'mapi/api_v2011.php?appcode=DOPE+', |
|||
method:'post', |
|||
data:query, |
|||
errMsg:true, |
|||
isCookies:false, |
|||
isEncryption:false, |
|||
isLoad:false |
|||
}) |
|||
} |
|||
@ -0,0 +1,99 @@ |
|||
import config from '../config.js' |
|||
import { encryptDes, decryptDes ,encrypt_by_des } from '@/utils/des.js' |
|||
import Base64 from 'base-64'; |
|||
import cryptoJS from "crypto-js" |
|||
|
|||
const httpRequest = (params) => { |
|||
if(params.isLoad){ |
|||
uni.showLoading({ |
|||
title: "努力加载中..." |
|||
}); |
|||
} |
|||
|
|||
const json_data={ |
|||
appcode:'DOPE+' ,//应用编码
|
|||
appchannel:'FXXXXHUAWEI' ,//应用发布渠道
|
|||
appver: '1.0.0',//应用版本
|
|||
appname:'cnic_buyer' ,//应用名称
|
|||
manufacturer:'HUAWEI' ,//设备生产商
|
|||
phonebrand:'HORNOR' ,//设备品牌
|
|||
phonetype:'X30' ,//设备型号
|
|||
phoneos:'ANDROID'// 设备系统
|
|||
} |
|||
let data=Object.assign(json_data,params.data) |
|||
console.info(data) |
|||
let key=params.key |
|||
if(params.isEncryption){ |
|||
// console.info(JSON.parse(JSON.stringify(data.consignee)))
|
|||
key=encryption(JSON.parse(JSON.stringify(data[params.key]))) |
|||
// console.info(consignee)
|
|||
data=encryption(data) |
|||
data[params.key]=key |
|||
}else{ |
|||
data=encryption(data) |
|||
} |
|||
|
|||
// console.info(data)
|
|||
//进行加密
|
|||
// console.info(encryptDes(JSON.stringify(data),'6780f04cf2e211ec86a8005056c00008'))
|
|||
// console.info(encrypt_by_des(JSON.stringify(data),'6780f04cf2e211ec86a8005056c00008'))
|
|||
// data=Base64.encode(encryptDes(JSON.stringify(data),'6780f04cf2e211ec86a8005056c00008'));
|
|||
data=encryptDes(JSON.stringify(data),'6780f04cf2e211ec86a8005056c00008'); |
|||
// console.info(data)
|
|||
// 解密
|
|||
// let data2 =JSON.parse(decodeURIComponent (decryptDes(Base64.decode(data),'6780f04cf2e211ec86a8005056c00008'))) ;
|
|||
// console.info(data2)
|
|||
|
|||
let data1={data:data} |
|||
|
|||
let httpOptions = { |
|||
url: config.apiUri + params.url, |
|||
data:data1, |
|||
method: params.method, |
|||
header: { |
|||
'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8', |
|||
// 'cookies':uni.getStorageSync('cookies') || ""
|
|||
} |
|||
}; |
|||
return new Promise((resolve, reject) => { |
|||
uni.request({ |
|||
...httpOptions, |
|||
success: res => { |
|||
// console.info(res)
|
|||
uni.hideLoading(); |
|||
// 进行解密
|
|||
res.data=JSON.parse(decryptDes(res.data,'6780f04cf2e211ec86a8005056c00008')) |
|||
// res.data=Base64.decode(decryptDes(res.data,'6780f04cf2e211ec86a8005056c00008'));
|
|||
// console.info(res.data)
|
|||
if(res.data.error!=0 && params.errMsg){ |
|||
uni.showToast({ |
|||
title: res.data.message, |
|||
icon:'none', |
|||
duration: 2000 |
|||
}); |
|||
} |
|||
if(res.data.error!=0 && params.isCookies){ |
|||
let user_info=uni.getStorageSync('user_info') |
|||
user_info.isLogin=false |
|||
uni.setStorageSync('user_info',user_info) |
|||
} |
|||
resolve(res.data); |
|||
}, |
|||
fail: err => { |
|||
|
|||
uni.hideLoading(); |
|||
reject(err); |
|||
} |
|||
}) |
|||
}) |
|||
|
|||
} |
|||
const encryption=(data)=>{ |
|||
for(let key in data){ |
|||
let item= data[key] |
|||
data[key]=encodeURIComponent(item) |
|||
} |
|||
return data |
|||
} |
|||
|
|||
export default httpRequest; |
|||
@ -0,0 +1,645 @@ |
|||
.status_bar { |
|||
height: var(--status-bar-height); |
|||
width: 100%; |
|||
} |
|||
|
|||
|
|||
//地址信息 |
|||
.address{ |
|||
padding-top: 33.33rpx; |
|||
padding-bottom: 36rpx; |
|||
padding-left: 29.33rpx; |
|||
padding-right: 22.67rpx; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
position: relative; |
|||
.address_left{ |
|||
|
|||
.address_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
color: #666666; |
|||
font-size: 24rpx; |
|||
margin-bottom: 30.67rpx; |
|||
|
|||
image{ |
|||
width: 32rpx; |
|||
height: 32rpx; |
|||
} |
|||
.address_title_name{ |
|||
font-size: 28rpx; |
|||
color: black; |
|||
font-weight: bold; |
|||
margin-left: 24rpx; |
|||
margin-right: 38.67rpx; |
|||
} |
|||
} |
|||
.address_content{ |
|||
padding-left: 56rpx; |
|||
color: #666666; |
|||
font-size: 24rpx; |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
|
|||
.address_xian{ |
|||
height: 4rpx; |
|||
width: 100%; |
|||
position: absolute; |
|||
left: 0; |
|||
bottom: 0; |
|||
} |
|||
} |
|||
.address_more{ |
|||
width: 20rpx; |
|||
height: 20rpx; |
|||
} |
|||
|
|||
// 评价 |
|||
.reviews_item{ |
|||
padding: 34rpx 0; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
&:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
.reviews_item_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
|
|||
.reviews_title_user{ |
|||
font-size: 32rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
color: #3D3D3D; |
|||
text{ |
|||
display: inline-block; |
|||
margin-right: 26rpx; |
|||
} |
|||
} |
|||
.reviews_title_time{ |
|||
font-size: 24rpx; |
|||
font-weight: 400; |
|||
color: #909090; |
|||
} |
|||
} |
|||
.reviews_item_color{ |
|||
font-size: 24rpx; |
|||
color: #909090; |
|||
font-weight: 400; |
|||
margin-bottom: 21.33rpx; |
|||
margin-top: 10rpx; |
|||
} |
|||
.reviews_item_content{ |
|||
font-size: 26.67rpx; |
|||
font-weight: 400; |
|||
margin-bottom: 34.67rpx; |
|||
} |
|||
.reviews_item_image{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
.reviews_image_content{ |
|||
width: 233.33rpx; |
|||
height: 233.33rpx; |
|||
margin-left: 16.67rpx; |
|||
background-color: #999999; |
|||
&:first-child{ |
|||
margin-left: 0; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 谈判细节 |
|||
.order_popup{ |
|||
position: fixed; |
|||
z-index: 999; |
|||
background-color: white; |
|||
width: 100%; |
|||
bottom: 0; |
|||
|
|||
.order_popup_title{ |
|||
position: relative; |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
padding-top: 44.67rpx; |
|||
padding-bottom: 30.67rpx; |
|||
|
|||
image{ |
|||
width: 21.33rpx; |
|||
height: 21.33rpx; |
|||
position: absolute; |
|||
right: 26rpx; |
|||
top: 50%; |
|||
margin-top: -5.5rpx; |
|||
} |
|||
.order_popup_title_span{ |
|||
color: #B22234; |
|||
} |
|||
|
|||
} |
|||
.order_popup_commodity{ |
|||
border-bottom:1px solid #E2E2E2 ; |
|||
padding-bottom: 40rpx; |
|||
} |
|||
.order_popup_coupons{ |
|||
padding:0 26.67rpx; |
|||
padding-top: 28rpx; |
|||
padding-bottom: 106.67rpx; |
|||
|
|||
} |
|||
|
|||
.order_popup_pay{ |
|||
padding: 0 26.67rpx; |
|||
padding-bottom: 56.67rpx; |
|||
|
|||
.pay_item{ |
|||
border-bottom: 1px solid #EEEEEE; |
|||
padding: 13.33rpx 0; |
|||
display: flex; |
|||
align-items: center; |
|||
font-size: 28rpx; |
|||
&:nth-child(4){ |
|||
border-bottom: none |
|||
} |
|||
.pay_item_select{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
margin-right: 26rpx; |
|||
|
|||
} |
|||
.pay_item_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 74.67rpx; |
|||
height: 74.67rpx; |
|||
margin-right: 28.67rpx; |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
|||
button{ |
|||
background: black; |
|||
color: white; |
|||
height: 88rpx; |
|||
line-height: 88rpx; |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
margin-top: 33.33rpx; |
|||
} |
|||
} |
|||
.order_popup_points{ |
|||
padding-bottom: 63.33rpx; |
|||
padding-left: 47.33rpx; |
|||
padding-top: 34.67rpx; |
|||
font-size: 28rpx; |
|||
|
|||
.points_item{ |
|||
display: flex; |
|||
align-items: center; |
|||
margin-bottom: 40rpx; |
|||
&:last-child{ |
|||
margin-bottom: 0; |
|||
} |
|||
|
|||
image{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
margin-right: 26rpx; |
|||
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 遮罩层 |
|||
.mask{ |
|||
position: fixed; |
|||
width: 100%; |
|||
height: 100%; |
|||
background-color: black; |
|||
opacity: 0.5; |
|||
z-index: 998; |
|||
top: 0; |
|||
left: 0; |
|||
} |
|||
.wishlist_body{ |
|||
position: relative; |
|||
|
|||
} |
|||
.wishlist{ |
|||
padding: 0 26.67rpx; |
|||
display: flex; |
|||
// justify-content: space-between; |
|||
flex-wrap: wrap; |
|||
|
|||
.wishlist_item{ |
|||
display: flex; |
|||
flex-direction: column; |
|||
font-size: 25.33rpx; |
|||
font-weight: 500; |
|||
width: 33%; |
|||
margin-top: 33.33rpx; |
|||
// margin-right: 18.67rpx; |
|||
&:nth-child(3n+3){ |
|||
margin-right: 0; |
|||
} |
|||
|
|||
.wishlist_item_img{ |
|||
width: 220rpx; |
|||
height: 220rpx; |
|||
margin-bottom: 25.33rpx; |
|||
background-color: #999999; |
|||
position: relative; |
|||
|
|||
.wishlist_item_img_goods{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
.select{ |
|||
position: absolute; |
|||
width: 28rpx; |
|||
height: 28rpx; |
|||
top: 8rpx; |
|||
right: 8rpx; |
|||
} |
|||
} |
|||
.wishlist_item_bottom{ |
|||
display: flex; |
|||
align-items: center; |
|||
padding-left: 22.67rpx; |
|||
justify-content: space-between; |
|||
|
|||
.wishlist_item_bottom_icon{ |
|||
width: 30rpx; |
|||
height: 30rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.wishlist_foot{ |
|||
padding: 33.33rpx 26.67rpx; |
|||
position: fixed; |
|||
bottom: 0; |
|||
width: 100%; |
|||
border-top: 1px solid #F5F6FA; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
box-sizing: border-box; |
|||
|
|||
.wishlist_foot_left{ |
|||
font-size: 36rpx; |
|||
font-weight: 400; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 36rpx; |
|||
height: 36rpx; |
|||
margin-right: 9.33rpx; |
|||
} |
|||
} |
|||
.wishlist_foot_right{ |
|||
width: 164rpx; |
|||
height: 73.33rpx; |
|||
font-weight: bold; |
|||
|
|||
button{ |
|||
font-size: 26.67rpx; |
|||
line-height: 73.33rpx; |
|||
width: 100%; |
|||
height: 100%; |
|||
background-color: #C0C0C0; |
|||
color: #FFFFFF; |
|||
border: none; |
|||
border-radius: 0; |
|||
} |
|||
|
|||
.wishlist_foot_right_button{ |
|||
background-color: black !important; |
|||
} |
|||
} |
|||
|
|||
} |
|||
// 推荐 |
|||
.recommend{ |
|||
padding: 0 26.67rpx; |
|||
padding-top: 54rpx; |
|||
|
|||
.recommend_title{ |
|||
position: relative; |
|||
text-align: center; |
|||
font-size: 29.33rpx; |
|||
font-weight: bold; |
|||
margin-bottom: 64rpx; |
|||
&::after{ |
|||
content: ""; |
|||
position: absolute; |
|||
bottom: -13.33rpx; |
|||
width: 53.33rpx; |
|||
height: 4rpx; |
|||
background-color: black; |
|||
left: 50%; |
|||
margin-left: -26rpx; |
|||
} |
|||
} |
|||
.recommend_content{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
flex-wrap: wrap; |
|||
font-size: 29.33rpx; |
|||
font-weight: 400; |
|||
|
|||
.recommend_content_item{ |
|||
width: 340rpx; |
|||
margin-bottom: 46.67rpx; |
|||
|
|||
.recommend_content_item_image{ |
|||
width: 100%; |
|||
height:340rpx ; |
|||
background-color: #999999; |
|||
margin-bottom: 37.33rpx; |
|||
|
|||
.recommend_content_item_image_name{ |
|||
overflow: hidden; |
|||
white-space: nowrap; |
|||
text-overflow: ellipsis; |
|||
} |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
.recommend_content_item_pric{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
margin-top: 34rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
// 优惠卷 |
|||
.coupons_item{ |
|||
display: flex; |
|||
background-color: #FEF6F4; |
|||
height: 186.67rpx; |
|||
color: #F66C46; |
|||
margin-bottom: 25.33rpx; |
|||
.coupons_item_left{ |
|||
width: 216.67rpx; |
|||
height: 100%; |
|||
position: relative; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: center; |
|||
align-items: center; |
|||
font-size: 20rpx; |
|||
font-weight: 400; |
|||
&:before{ |
|||
content: ""; |
|||
background-color: white; |
|||
z-index: 99; |
|||
position: absolute; |
|||
right: -15rpx; |
|||
top: 0; |
|||
width: 30rpx; |
|||
height: 20rpx; |
|||
border-radius: 0 0 15rpx 15rpx; |
|||
} |
|||
&:after{ |
|||
content: ""; |
|||
background-color: white; |
|||
z-index: 99; |
|||
position: absolute; |
|||
right: -15rpx; |
|||
bottom: 0; |
|||
width: 30rpx; |
|||
height: 20rpx; |
|||
border-radius: 15rpx 15rpx 0 0; |
|||
} |
|||
.item_left_prcie{ |
|||
font-weight: bold; |
|||
font-size: 40rpx; |
|||
// margin-bottom: 13.33rpx; |
|||
} |
|||
.item_left_span{ |
|||
text-align: center; |
|||
} |
|||
} |
|||
.coupons_item_right{ |
|||
width: 480.67rpx; |
|||
height: 100%; |
|||
font-size: 20rpx; |
|||
font-weight: 400; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
position: relative; |
|||
padding-left: 36rpx; |
|||
padding-right: 23.33rpx; |
|||
&:before{ |
|||
content: ""; |
|||
z-index: 99; |
|||
position: absolute; |
|||
left: -5rpx; |
|||
height: 120rpx; |
|||
border: dashed #F66C46 1rpx; |
|||
} |
|||
.coupons_item_right_select{ |
|||
width: 34.67rpx; |
|||
height: 34.67rpx; |
|||
position: absolute; |
|||
top: 12.67rpx; |
|||
right: 15.33rpx; |
|||
} |
|||
.coupons_item_right_bg{ |
|||
width: 82.67rpx; |
|||
height: 60.67rpx; |
|||
position: absolute; |
|||
top: 0; |
|||
right:116.67rpx; |
|||
} |
|||
.coupons_right_info{ |
|||
.coupons_right_info_title{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.coupons_right_info_time{ |
|||
font-size: 16rpx; |
|||
margin-top: 13.33rpx; |
|||
} |
|||
} |
|||
button{ |
|||
background: none; |
|||
border-radius: 0; |
|||
margin: 0; |
|||
border: #F66C46 1px solid; |
|||
font-size: 25.33rpx; |
|||
height: 39.33rpx; |
|||
line-height: 39.33rpx; |
|||
color: #F66C46; |
|||
font-weight: bold; |
|||
white-space:nowrap; |
|||
padding:0 10rpx; |
|||
box-sizing: content-box; |
|||
overflow: inherit; |
|||
&::after{ |
|||
content: none; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
.login{ |
|||
padding: 0 32rpx; |
|||
|
|||
.login_input{ |
|||
height: 97.33rpx; |
|||
border: 1px solid #323333; |
|||
border-radius: 48.67rpx; |
|||
font-size: 22.67rpx; |
|||
padding-left: 33.33rpx; |
|||
margin-bottom: 56rpx; |
|||
} |
|||
.tips{ |
|||
color: #DA0303; |
|||
font-size: 18.67rpx; |
|||
font-weight: bold; |
|||
} |
|||
.forgot{ |
|||
font-size: 22.67rpx; |
|||
color: #666666; |
|||
margin-top: 29.33rpx; |
|||
text-align: right; |
|||
margin-bottom: 34.67rpx; |
|||
} |
|||
.login_submit{ |
|||
width: 100%; |
|||
height: 88rpx; |
|||
line-height: 88rpx; |
|||
background-color: #000000; |
|||
color: white; |
|||
// background-color: #e7e7e7; |
|||
// color: #666666; |
|||
border-radius: 6.67rpx; |
|||
margin-bottom: 52rpx; |
|||
font-weight: bold; |
|||
} |
|||
.login_submit1{ |
|||
background-color: #000000; |
|||
color: white; |
|||
} |
|||
.agreement{ |
|||
display: flex; |
|||
// align-items: center; |
|||
// padding: 0 33.33rpx; |
|||
font-size: 24rpx; |
|||
font-weight: bold; |
|||
|
|||
.agreement_image{ |
|||
width: 24rpx; |
|||
height: 24rpx; |
|||
margin-right: 13.33rpx; |
|||
padding-top: 4rpx; |
|||
} |
|||
.text{ |
|||
color: #4F92F1; |
|||
display: inline-block; |
|||
margin: 0 4px; |
|||
} |
|||
} |
|||
} |
|||
|
|||
// 商品展示 |
|||
.good_info{ |
|||
padding: 40rpx 0; |
|||
font-size: 22.67rpx; |
|||
color: #666666; |
|||
font-weight: bold; |
|||
border-bottom: 2.67rpx solid #F1F1F1; |
|||
&:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
.good_info_left{ |
|||
display: flex; |
|||
align-items: center; |
|||
.good_info_image{ |
|||
width: 200rpx ; |
|||
height: 200rpx; |
|||
background-color: #999999; |
|||
margin-right: 32.67rpx; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
.left_info{ |
|||
|
|||
.info_name{ |
|||
font-size: 26.67rpx; |
|||
font-weight: 400; |
|||
width: 461.33rpx; |
|||
text-overflow: -o-ellipsis-lastline; |
|||
overflow: hidden; //溢出内容隐藏 |
|||
text-overflow: ellipsis; //文本溢出部分用省略号表示 |
|||
display: -webkit-box; //特别显示模式 |
|||
-webkit-line-clamp: 2; //行数 |
|||
line-clamp: 2; |
|||
-webkit-box-orient: vertical; |
|||
} |
|||
.left_info_bottom{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 32rpx; |
|||
color: #909090; |
|||
margin-top: 24rpx; |
|||
.info_lable{ |
|||
padding: 5.33rpx 20rpx; |
|||
font-size: 22.67rpx; |
|||
border-radius: 33.33rpx; |
|||
border: 1px solid #D3D3D3; |
|||
image{ |
|||
width: 17.33rpx; |
|||
height: 17.33rpx; |
|||
margin-left: 14.67rpx; |
|||
} |
|||
} |
|||
} |
|||
.info_price{ |
|||
font-size: 28rpx; |
|||
color: black; |
|||
font-weight: bold; |
|||
margin-top: 43.33rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
|
|||
button{ |
|||
margin: 0; |
|||
height: 45.33rpx; |
|||
line-height: 45.33rpx; |
|||
border: #999999 solid 1px; |
|||
font-size: 17.33rpx; |
|||
color: #999999; |
|||
background: none; |
|||
&::after{ |
|||
content: none; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,261 @@ |
|||
.order_popup_commodity{ |
|||
padding:0 26rpx; |
|||
|
|||
|
|||
} |
|||
|
|||
|
|||
// 订单详情 |
|||
.details_title{ |
|||
height: 176.67rpx; |
|||
background-color: #2C2C38; |
|||
width: 100%; |
|||
color: white; |
|||
font-size: 18.67rpx; |
|||
font-weight: bold; |
|||
border-top: 14.67rpx #F6F5FA solid; |
|||
|
|||
.shipped_right_text{ |
|||
width: 497.33rpx; |
|||
font-size: 33.33rpx; |
|||
overflow: hidden; |
|||
text-overflow: ellipsis; |
|||
white-space: nowrap; |
|||
} |
|||
|
|||
.cancelled{ |
|||
padding-left: 55.33rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
height: 100%; |
|||
justify-content: space-between; |
|||
|
|||
.cancelled_left{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 61.33rpx; |
|||
height: 61.33rpx; |
|||
} |
|||
.cancelled_left_info{ |
|||
margin-left: 52.67rpx; |
|||
} |
|||
} |
|||
.cancelled_right{ |
|||
image{ |
|||
width: 34.67rpx; |
|||
height: 34.67rpx; |
|||
} |
|||
} |
|||
|
|||
} |
|||
.transit{ |
|||
padding-left: 74.67rpx; |
|||
padding-right: 16rpx; |
|||
|
|||
.cancelled_left{ |
|||
|
|||
image{ |
|||
width: 58.67rpx; |
|||
height: 58.67rpx; |
|||
} |
|||
.cancelled_left_info{ |
|||
margin-left: 49.33rpx; |
|||
} |
|||
} |
|||
} |
|||
.completed{ |
|||
padding-right: 20rpx; |
|||
|
|||
} |
|||
.toPaid{ |
|||
padding:0 31.33rpx; |
|||
} |
|||
.shipped{ |
|||
padding-left: 47.33rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
height: 100%; |
|||
|
|||
.shipped_left{ |
|||
background-image: url("@/static/img/order_bg.png"); |
|||
background-size: 100% 100%; |
|||
width: 114rpx; |
|||
height: 158.67rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
margin-right: 30rpx; |
|||
image{ |
|||
width: 62.67rpx; |
|||
height: 62.67rpx; |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|||
.order_popup_commodity{ |
|||
border-bottom: 14.67rpx solid #F6F5FA; |
|||
} |
|||
.summary{ |
|||
border-bottom: 14.67rpx solid #F6F5FA; |
|||
padding:0 26rpx; |
|||
padding-top: 44rpx; |
|||
padding-bottom: 47.33rpx; |
|||
font-size: 28rpx; |
|||
&:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
.summary_title{ |
|||
font-weight: bold; |
|||
margin-bottom: 35.33rpx; |
|||
} |
|||
.summary_item{ |
|||
display: flex; |
|||
align-items: center; |
|||
margin-bottom: 41.33rpx; |
|||
justify-content: space-between; |
|||
width: 100%; |
|||
&:last-child{ |
|||
margin-bottom: 0; |
|||
} |
|||
.summary_item_text{ |
|||
color: #777777; |
|||
} |
|||
.summary_item_text1{ |
|||
color: #3C3B6E; |
|||
} |
|||
.summary_item_right{ |
|||
color: #3C3B6E; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
button{ |
|||
font-size: 20rpx; |
|||
color: black; |
|||
height: 28.67rpx; |
|||
border-radius: 0; |
|||
padding:0 15rpx; |
|||
line-height: 28.67rpx; |
|||
background:none; |
|||
margin-left: 15.33rpx; |
|||
} |
|||
} |
|||
.summary_item_right1{ |
|||
color: #B22234; |
|||
} |
|||
} |
|||
.summary_tips{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: flex-end; |
|||
color: #B22234; |
|||
font-size: 24rpx; |
|||
font-weight: 400; |
|||
image{ |
|||
width: 28rpx; |
|||
height: 28rpx; |
|||
margin-right: 13.33rpx; |
|||
} |
|||
} |
|||
} |
|||
|
|||
.details_footer{ |
|||
padding: 34rpx 26rpx; |
|||
background-color: white; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: flex-end; |
|||
position: fixed; |
|||
bottom: 0; |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
button{ |
|||
height: 62.67rpx; |
|||
line-height:62.67rpx; |
|||
border-radius: 0; |
|||
margin: 0; |
|||
margin-left: 18rpx; |
|||
background-color: white; |
|||
border: none; |
|||
font-size: 22.67rpx; |
|||
&::after{ |
|||
content: none; |
|||
} |
|||
} |
|||
.black{ |
|||
color: white; |
|||
background-color: black; |
|||
} |
|||
.white{ |
|||
border: 1px solid #666666; |
|||
color: #666666; |
|||
|
|||
} |
|||
} |
|||
|
|||
|
|||
// 进度条 |
|||
.logistics_details{ |
|||
border-top: 14.67rpx #F6F5FA solid; |
|||
padding-left: 28rpx; |
|||
padding-right: 24rpx; |
|||
padding-top: 64rpx; |
|||
|
|||
.logistics_step{ |
|||
color: #999999; |
|||
font-size: 26.67rpx; |
|||
font-weight: 400; |
|||
padding-bottom: 74rpx; |
|||
padding-left: 33.33rpx; |
|||
position: relative; |
|||
&:before{ |
|||
content: ""; |
|||
width: 17.33rpx; |
|||
height: 17.33rpx; |
|||
background-color: #EDEDED; |
|||
position: absolute; |
|||
left: 0; |
|||
top: 0; |
|||
border-radius: 50%; |
|||
z-index: 99; |
|||
} |
|||
&::after{ |
|||
content: ""; |
|||
width: 1px; |
|||
height: 95%; |
|||
background-color: #EDEDED; |
|||
position: absolute; |
|||
left: 9.5rpx; |
|||
bottom: 0; |
|||
border-radius: 50%; |
|||
} |
|||
&:last-child{ |
|||
|
|||
&::after{ |
|||
content: none; |
|||
} |
|||
} |
|||
|
|||
.logistics_step_time{ |
|||
|
|||
font-size: 22rpx; |
|||
margin-top: 13.33rpx; |
|||
} |
|||
} |
|||
} |
|||
.step_active{ |
|||
color: #333333 !important; |
|||
|
|||
&:before{ |
|||
background-color:#333333 !important; |
|||
} |
|||
|
|||
} |
|||
.step_active1{ |
|||
&::after{ |
|||
background-color: #333333 !important; |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,5 @@ |
|||
var weburl='en.meixx.com'; |
|||
export default { |
|||
apiUri: 'https://'+weburl+'/', |
|||
imgUri: 'http://'+weburl+'/', |
|||
} |
|||
@ -0,0 +1,20 @@ |
|||
<!DOCTYPE html> |
|||
<html lang="en"> |
|||
<head> |
|||
<meta charset="UTF-8" /> |
|||
<script> |
|||
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || |
|||
CSS.supports('top: constant(a)')) |
|||
document.write( |
|||
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + |
|||
(coverSupport ? ', viewport-fit=cover' : '') + '" />') |
|||
</script> |
|||
<title></title> |
|||
<!--preload-links--> |
|||
<!--app-context--> |
|||
</head> |
|||
<body> |
|||
<div id="app"><!--app-html--></div> |
|||
<script type="module" src="/main.js"></script> |
|||
</body> |
|||
</html> |
|||
@ -0,0 +1,21 @@ |
|||
import App from './App' |
|||
|
|||
// #ifndef VUE3
|
|||
import Vue from 'vue' |
|||
Vue.config.productionTip = false |
|||
App.mpType = 'app' |
|||
const app = new Vue({ |
|||
...App |
|||
}) |
|||
app.$mount() |
|||
// #endif
|
|||
|
|||
// #ifdef VUE3
|
|||
import { createSSRApp } from 'vue' |
|||
export function createApp() { |
|||
const app = createSSRApp(App) |
|||
return { |
|||
app |
|||
} |
|||
} |
|||
// #endif
|
|||
@ -0,0 +1,122 @@ |
|||
{ |
|||
"name" : "DOPE PLUS", |
|||
"appid" : "__UNI__C0E0831", |
|||
"description" : "", |
|||
"versionName" : "1.0.0", |
|||
"versionCode" : "100", |
|||
"transformPx" : false, |
|||
/* 5+App特有相关 */ |
|||
"app-plus" : { |
|||
"usingComponents" : true, |
|||
"nvueStyleCompiler" : "uni-app", |
|||
"compilerVersion" : 3, |
|||
"splashscreen" : { |
|||
"alwaysShowBeforeRender" : true, |
|||
"waiting" : true, |
|||
"autoclose" : true, |
|||
"delay" : 0 |
|||
}, |
|||
/* 模块配置 */ |
|||
"modules" : { |
|||
"Payment" : {} |
|||
}, |
|||
/* 应用发布信息 */ |
|||
"distribute" : { |
|||
/* android打包配置 */ |
|||
"android" : { |
|||
"permissions" : [ |
|||
"<uses-permission android:name=\"android.permission.CHANGE_NETWORK_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>", |
|||
"<uses-permission android:name=\"android.permission.VIBRATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.READ_LOGS\"/>", |
|||
"<uses-permission android:name=\"android.permission.ACCESS_WIFI_STATE\"/>", |
|||
"<uses-feature android:name=\"android.hardware.camera.autofocus\"/>", |
|||
"<uses-permission android:name=\"android.permission.ACCESS_NETWORK_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.CAMERA\"/>", |
|||
"<uses-permission android:name=\"android.permission.GET_ACCOUNTS\"/>", |
|||
"<uses-permission android:name=\"android.permission.READ_PHONE_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>", |
|||
"<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>", |
|||
"<uses-permission android:name=\"android.permission.FLASHLIGHT\"/>", |
|||
"<uses-feature android:name=\"android.hardware.camera\"/>", |
|||
"<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>" |
|||
] |
|||
}, |
|||
/* ios打包配置 */ |
|||
"ios" : {}, |
|||
/* SDK配置 */ |
|||
"sdkConfigs" : { |
|||
"ad" : {}, |
|||
"payment" : { |
|||
"alipay" : { |
|||
"__platform__" : [ "ios", "android" ] |
|||
} |
|||
} |
|||
}, |
|||
"splashscreen" : { |
|||
"androidStyle" : "default", |
|||
"android" : { |
|||
"hdpi" : "unpackage/res/icons/480_8001.9.png", |
|||
"xhdpi" : "unpackage/res/icons/720_1242.9.png", |
|||
"xxhdpi" : "unpackage/res/icons/1080_1882.9.png" |
|||
}, |
|||
"useOriginalMsgbox" : false |
|||
}, |
|||
"icons" : { |
|||
"android" : { |
|||
"hdpi" : "unpackage/res/icons/72x72.png", |
|||
"xhdpi" : "unpackage/res/icons/96x96.png", |
|||
"xxhdpi" : "unpackage/res/icons/144x144.png", |
|||
"xxxhdpi" : "unpackage/res/icons/192x192.png" |
|||
}, |
|||
"ios" : { |
|||
"appstore" : "unpackage/res/icons/1024x1024.png", |
|||
"ipad" : { |
|||
"app" : "unpackage/res/icons/76x76.png", |
|||
"app@2x" : "unpackage/res/icons/152x152.png", |
|||
"notification" : "unpackage/res/icons/20x20.png", |
|||
"notification@2x" : "unpackage/res/icons/40x40.png", |
|||
"proapp@2x" : "unpackage/res/icons/167x167.png", |
|||
"settings" : "unpackage/res/icons/29x29.png", |
|||
"settings@2x" : "unpackage/res/icons/58x58.png", |
|||
"spotlight" : "unpackage/res/icons/40x40.png", |
|||
"spotlight@2x" : "unpackage/res/icons/80x80.png" |
|||
}, |
|||
"iphone" : { |
|||
"app@2x" : "unpackage/res/icons/120x120.png", |
|||
"app@3x" : "unpackage/res/icons/180x180.png", |
|||
"notification@2x" : "unpackage/res/icons/40x40.png", |
|||
"notification@3x" : "unpackage/res/icons/60x60.png", |
|||
"settings@2x" : "unpackage/res/icons/58x58.png", |
|||
"settings@3x" : "unpackage/res/icons/87x87.png", |
|||
"spotlight@2x" : "unpackage/res/icons/80x80.png", |
|||
"spotlight@3x" : "unpackage/res/icons/120x120.png" |
|||
} |
|||
} |
|||
} |
|||
} |
|||
}, |
|||
/* 快应用特有相关 */ |
|||
"quickapp" : {}, |
|||
/* 小程序特有相关 */ |
|||
"mp-weixin" : { |
|||
"appid" : "", |
|||
"setting" : { |
|||
"urlCheck" : false |
|||
}, |
|||
"usingComponents" : true |
|||
}, |
|||
"mp-alipay" : { |
|||
"usingComponents" : true |
|||
}, |
|||
"mp-baidu" : { |
|||
"usingComponents" : true |
|||
}, |
|||
"mp-toutiao" : { |
|||
"usingComponents" : true |
|||
}, |
|||
"uniStatistics" : { |
|||
"enable" : false |
|||
}, |
|||
"vueVersion" : "2" |
|||
} |
|||
@ -0,0 +1,35 @@ |
|||
{ |
|||
"name": "cnic_buyer", |
|||
"lockfileVersion": 2, |
|||
"requires": true, |
|||
"packages": { |
|||
"": { |
|||
"dependencies": { |
|||
"base-64": "^1.0.0", |
|||
"crypto-js": "^4.1.1" |
|||
} |
|||
}, |
|||
"node_modules/base-64": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", |
|||
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" |
|||
}, |
|||
"node_modules/crypto-js": { |
|||
"version": "4.1.1", |
|||
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", |
|||
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" |
|||
} |
|||
}, |
|||
"dependencies": { |
|||
"base-64": { |
|||
"version": "1.0.0", |
|||
"resolved": "https://registry.npmjs.org/base-64/-/base-64-1.0.0.tgz", |
|||
"integrity": "sha512-kwDPIFCGx0NZHog36dj+tHiwP4QMzsZ3AgMViUBKI0+V5n4U0ufTCUMhnQ04diaRI8EX/QcPfql7zlhZ7j4zgg==" |
|||
}, |
|||
"crypto-js": { |
|||
"version": "4.1.1", |
|||
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", |
|||
"integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,6 @@ |
|||
{ |
|||
"dependencies": { |
|||
"base-64": "^1.0.0", |
|||
"crypto-js": "^4.1.1" |
|||
} |
|||
} |
|||
@ -0,0 +1,283 @@ |
|||
{ |
|||
"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages |
|||
{ |
|||
"path": "pages/index/index", |
|||
"style": { |
|||
"navigationBarTitleText": "uni-app", |
|||
"app-plus":{ |
|||
"titleNView":false |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/index/search", |
|||
"style": { |
|||
"app-plus":{ |
|||
"titleNView":false |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/category/index", |
|||
"style": { |
|||
"app-plus":{ |
|||
"titleNView":false |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/index", |
|||
"style": { |
|||
"app-plus":{ |
|||
"titleNView":false |
|||
} |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/myProfile", |
|||
"style": { |
|||
"navigationBarTitleText": "My Profile", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/settings", |
|||
"style": { |
|||
"navigationBarTitleText": "Settings", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/wishlist", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/favorites", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/message", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/login/index", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/login/verifyEmail", |
|||
"style": { |
|||
"navigationBarTitleText": "Verify Email Address", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/login/changePwd", |
|||
"style": { |
|||
"navigationBarTitleText": "Change Password", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/myOrders", |
|||
"style": { |
|||
"navigationBarTitleText": "My orders", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/order/confirmation", |
|||
"style": { |
|||
"navigationBarTitleText": "0rder Confirmation", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/myCoupons", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/index/pickUpCentre", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/order/paySuccess", |
|||
"style": { |
|||
"navigationBarTitleText": "Pay success", |
|||
"navigationBarBackgroundColor":"#FFFFFF", |
|||
"enablePullDownRefresh":true |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/address", |
|||
"style": { |
|||
"navigationBarTitleText": "Shipping Address", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/addAddress", |
|||
"style": { |
|||
"navigationBarTitleText": "Shipping Address", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/pointsDetails", |
|||
"style": { |
|||
"titleNView":false, |
|||
"enablePullDownRefresh":true |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/order/details", |
|||
"style": { |
|||
"navigationBarTitleText": "Order details", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
// "app-plus": { |
|||
// "titleNView": { |
|||
// "splitLine":{ |
|||
// "color":"#F6F5FA", |
|||
// "height":"5px" |
|||
// } |
|||
// } |
|||
// } |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/order/logisticsDetails", |
|||
"style": { |
|||
"navigationBarTitleText": "Logistics details", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/order/refund", |
|||
"style": { |
|||
"navigationBarTitleText": "Refund", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/order/refundDetails", |
|||
"style": { |
|||
"navigationBarTitleText": "Refund Details", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
// { |
|||
// "path": "pages/category/productList", |
|||
// "style": { |
|||
// "titleNView":false, |
|||
// "enablePullDownRefresh":true |
|||
// } |
|||
// }, |
|||
{ |
|||
"path": "pages/shippingCart/index", |
|||
"style": { |
|||
"titleNView":false, |
|||
"enablePullDownRefresh":true |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/productDetails/index", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/account/myReview", |
|||
"style": { |
|||
"navigationBarTitleText": "My Review", |
|||
"navigationBarBackgroundColor":"#FFFFFF" |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/productDetails/review", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
}, |
|||
{ |
|||
"path": "pages/index/flashSale", |
|||
"style": { |
|||
"titleNView":false |
|||
} |
|||
} |
|||
,{ |
|||
"path" : "pages/category/pets", |
|||
"style" : |
|||
{ |
|||
"navigationBarTitleText": "", |
|||
"navigationStyle":"custom", |
|||
"enablePullDownRefresh": true |
|||
} |
|||
|
|||
}, |
|||
{ |
|||
"path" : "pages/account/changeImg", |
|||
"style" : |
|||
{ |
|||
|
|||
"navigationStyle":"custom", |
|||
"enablePullDownRefresh": false |
|||
} |
|||
|
|||
} |
|||
], |
|||
"globalStyle": { |
|||
"navigationBarTextStyle": "black", |
|||
"navigationBarTitleText": "DOPE PLUS", |
|||
"navigationBarBackgroundColor": "#F8F8F8", |
|||
"backgroundColor": "#F8F8F8" |
|||
}, |
|||
"tabBar": { |
|||
"borderStyle": "black", |
|||
"backgroundColor": "#FFFFFF", |
|||
"color": "#999999", |
|||
"selectedColor": "#000000", |
|||
"height":"60px", |
|||
"midButton":{ |
|||
"width": "80px", |
|||
"height":"70px", |
|||
"iconWidth":"60px", |
|||
"iconPath":"static/img/tabbar_img.png" |
|||
}, |
|||
"list": [{ |
|||
"pagePath": "pages/index/index", |
|||
"iconPath": "static/img/home.png", |
|||
"selectedIconPath": "static/img/home1.png", |
|||
"text": "Home" |
|||
}, |
|||
{ |
|||
"pagePath": "pages/category/index", |
|||
"iconPath": "static/img/Category.png", |
|||
"selectedIconPath": "static/img/Category1.png", |
|||
"text": "Category" |
|||
}, |
|||
{ |
|||
"pagePath": "pages/shippingCart/index", |
|||
"iconPath": "static/img/Cart.png", |
|||
"selectedIconPath": "static/img/cart1.png", |
|||
"text": "Cart" |
|||
}, |
|||
{ |
|||
"pagePath": "pages/account/index", |
|||
"iconPath": "static/img/Account.png", |
|||
"selectedIconPath": "static/img/Account1.png", |
|||
"text": "Account" |
|||
} |
|||
] |
|||
} |
|||
} |
|||
@ -0,0 +1,453 @@ |
|||
<template> |
|||
<view> |
|||
<view class="address_serch"> |
|||
<input type="text" placeholder="ADDRESS FINDER:Search by postcode"> |
|||
</view> |
|||
<view class="address_info"> |
|||
<view class="address_info_item address_info_item1"> |
|||
<view class="info_item_title" > |
|||
|
|||
<picker @change="bindPickerChange" :value="index" :range="countryList" range-key="region_name" class="info_item_title_pick"> |
|||
<text>*Country/Region</text> |
|||
<view class="info_item_title_span">{{countryText}}</view> |
|||
</picker> |
|||
<image src="../../static/img/right1.png" mode=""></image> |
|||
|
|||
|
|||
</view> |
|||
</view> |
|||
|
|||
<view class="address_info_item"> |
|||
<view class="info_item_title"> |
|||
<view> |
|||
<text>*Fall name</text> |
|||
</view> |
|||
</view> |
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="query.consignee.consignee"> |
|||
</view> |
|||
</view> |
|||
<view class="address_info_item"> |
|||
<view class="info_item_title"> |
|||
<view> |
|||
<text>*Phone Number</text> |
|||
</view> |
|||
</view> |
|||
<view class="info_item_input"> |
|||
<input type="number" v-model="query.consignee.mobile"> |
|||
</view> |
|||
</view> |
|||
<view class="address_info_item"> |
|||
<view class="info_item_title"> |
|||
<view> |
|||
<text>*Stree adderss or P.O.Box</text> |
|||
</view> |
|||
</view> |
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="address"> |
|||
</view> |
|||
</view> |
|||
<view class="address_info_item"> |
|||
<view class="info_item_title"> |
|||
<view> |
|||
<text>*Appartment,suite,unit,etc.</text> |
|||
</view> |
|||
</view> |
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="query.consignee.sign_building"> |
|||
</view> |
|||
</view> |
|||
<view class="address_info_item address_info_item1"> |
|||
|
|||
<view class="info_item_title" v-if="isSelect1"> |
|||
<picker @change="bindPickerChange2" :value="cityIndex" :range="cityList" range-key="region_name" class="info_item_title_pick"> |
|||
<text >*City/Town</text> |
|||
<view class="info_item_title_span">{{cityText}}</view> |
|||
</picker> |
|||
<image src="../../static/img/right1.png" mode=""></image> |
|||
</view> |
|||
|
|||
<template v-else> |
|||
<view class="info_item_title" > |
|||
<text >*City/Town</text> |
|||
</view> |
|||
|
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="city"> |
|||
</view> |
|||
</template> |
|||
|
|||
<!-- <view class="info_item_title"> |
|||
<view> |
|||
<text>*City/Town</text> |
|||
</view> |
|||
</view> |
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="city"> |
|||
</view> --> |
|||
|
|||
</view> |
|||
|
|||
|
|||
</view> |
|||
|
|||
<view class="address_info"> |
|||
<view class="address_info_item address_info_item1"> |
|||
<view class="info_item_title" v-if="isSelect"> |
|||
<picker @change="bindPickerChange1" :value="provinceIndex" :range="provinceList" range-key="region_name" class="info_item_title_pick"> |
|||
<text >State/Province</text> |
|||
<view class="info_item_title_span">{{provinceText}}</view> |
|||
</picker> |
|||
<image src="../../static/img/right1.png" mode=""></image> |
|||
</view> |
|||
|
|||
<template v-else> |
|||
<view class="info_item_title" > |
|||
<text >State/Province</text> |
|||
</view> |
|||
|
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="province"> |
|||
</view> |
|||
</template> |
|||
|
|||
</view> |
|||
|
|||
<view class="address_info_item"> |
|||
<view class="info_item_title"> |
|||
<view> |
|||
<text>Zip code/Postcode/PLZ/Eircode</text> |
|||
</view> |
|||
</view> |
|||
<view class="info_item_input"> |
|||
<input type="text" v-model="query.consignee.zipcode"> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="address_switch"> |
|||
<text>Make this my default address</text> |
|||
<switch :checked="query.is_default==1" color="#B22234" @change="isDefault"/> |
|||
</view> |
|||
<view class="address_submit"> |
|||
<button @click="save">FINISH</button> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2,defaultRequest3} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isSelect:false, |
|||
isSelect1:false, |
|||
countryList:[], |
|||
index:0, |
|||
countryText:'', |
|||
provinceList:[], |
|||
provinceIndex:0, |
|||
provinceText:'', |
|||
cityList:[], |
|||
cityIndex:0, |
|||
cityText:'', |
|||
query:{ |
|||
_action:'saveconsignee', |
|||
consignee:{ |
|||
address_id:0, |
|||
consignee:'', |
|||
country:0, |
|||
province:0, |
|||
city:0, |
|||
district:0, |
|||
address:'', |
|||
zipcode:'', |
|||
email:'', |
|||
tel:'', |
|||
mobile:'', |
|||
sign_building:'', |
|||
best_time:'' |
|||
}, |
|||
is_default:0 |
|||
}, |
|||
province:'', |
|||
city:'', |
|||
address:'' |
|||
} |
|||
}, |
|||
methods:{ |
|||
// 保存 |
|||
save(){ |
|||
if(this.query.consignee.consignee==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill Fall name' |
|||
}) |
|||
return |
|||
} |
|||
if(this.query.consignee.mobile==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill Phone Number' |
|||
}) |
|||
return |
|||
} |
|||
if(this.address==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill Stree adderss or P.O.Box' |
|||
}) |
|||
return |
|||
} |
|||
if(this.query.consignee.sign_building==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill Appartment,suite,unit,etc.' |
|||
}) |
|||
return |
|||
} |
|||
if(!this.isSelect1){ |
|||
if(this.city==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill in City/Town' |
|||
}) |
|||
return |
|||
} |
|||
this.query.consignee.address=this.city+this.address |
|||
}else{ |
|||
if(this.query.consignee.city==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please Select City/Town' |
|||
}) |
|||
return |
|||
} |
|||
} |
|||
if(!this.isSelect){ |
|||
if(this.province==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill in State/Province' |
|||
}) |
|||
return |
|||
} |
|||
this.query.consignee.address=this.province+this.query.consignee.address |
|||
}else{ |
|||
if(this.query.consignee.province==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please Select State/Province' |
|||
}) |
|||
return |
|||
} |
|||
} |
|||
if(this.query.consignee.zipcode==''){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please fill Zip code/Postcode/PLZ/Eircode' |
|||
}) |
|||
return |
|||
} |
|||
console.info(this.query) |
|||
defaultRequest3(this.query,'consignee').then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:res.message |
|||
}) |
|||
uni.navigateBack() |
|||
} |
|||
this.query.consignee.address='' |
|||
}) |
|||
}, |
|||
// 切换是否默认地址 |
|||
isDefault(e){ |
|||
console.info(e) |
|||
if(e.detail.value){ |
|||
this.query.is_default=1 |
|||
}else{ |
|||
this.query.is_default=0 |
|||
} |
|||
}, |
|||
// 获取国家数据 |
|||
getCountry(){ |
|||
let data={_action:'getregions',parent_region_id:0} |
|||
defaultRequest2(data).then(res=>{ |
|||
// console.info(res) |
|||
if(res.error==0){ |
|||
this.countryList=res.data |
|||
} |
|||
}) |
|||
}, |
|||
// 选择国家 |
|||
bindPickerChange(e){ |
|||
if(this.index!=e.detail.value){ |
|||
this.provinceText='' |
|||
this.cityText='' |
|||
this.query.consignee.city=0 |
|||
this.query.consignee.province=0 |
|||
} |
|||
this.index=e.detail.value |
|||
if(this.countryList[this.index].regions){ |
|||
this.isSelect=true |
|||
this.provinceList=this.countryList[this.index].regions |
|||
}else{ |
|||
this.isSelect=false |
|||
this.isSelect1=false |
|||
} |
|||
|
|||
this.query.consignee.country=this.countryList[this.index].region_id |
|||
this.countryText=this.countryList[this.index].region_name |
|||
}, |
|||
// 选择省份 |
|||
bindPickerChange1(e){ |
|||
if(this.provinceIndex!=e.detail.value){ |
|||
this.cityText='' |
|||
this.query.consignee.city=0 |
|||
} |
|||
this.provinceIndex=e.detail.value |
|||
if(this.provinceList[this.provinceIndex].regions){ |
|||
this.isSelect1=true |
|||
this.cityList=this.provinceList[this.provinceIndex].regions |
|||
}else{ |
|||
this.isSelect1=false |
|||
this.cityText='' |
|||
} |
|||
|
|||
this.query.consignee.province=this.provinceList[this.provinceIndex].region_id |
|||
this.provinceText=this.provinceList[this.provinceIndex].region_name |
|||
}, |
|||
// 选择城市 |
|||
bindPickerChange2(e){ |
|||
this.cityIndex=e.detail.value |
|||
this.query.consignee.city=this.cityList[this.cityIndex].region_id |
|||
this.cityText=this.cityList[this.cityIndex].region_name |
|||
} |
|||
}, |
|||
onLoad(e) { |
|||
console.info(e) |
|||
if(e.type==1){ |
|||
e.data=JSON.parse(e.data) |
|||
this.query.consignee=e.data |
|||
this.address=this.query.consignee.address |
|||
if(e.data.default_address_id==e.data.address_id){ |
|||
this.query.is_default=1 |
|||
} |
|||
this.countryText=e.data.country_name |
|||
if(e.data.city!=0){ |
|||
this.isSelect1=true |
|||
this.cityText=e.data.city_name |
|||
}else{ |
|||
|
|||
} |
|||
if(e.data.province!=0){ |
|||
this.isSelect=true |
|||
this.provinceText=e.data.province_name |
|||
} |
|||
|
|||
} |
|||
this.getCountry() |
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
page{ |
|||
background-color: #F6F5FA; |
|||
padding-bottom: 20rpx; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
|
|||
.address_serch{ |
|||
background-color: white; |
|||
padding: 26.67rpx 24rpx; |
|||
margin-top: 14.67rpx; |
|||
input{ |
|||
font-size: 22.67rpx; |
|||
font-weight: 400; |
|||
border: 1px solid #E2E2E2; |
|||
padding: 23.33rpx 0; |
|||
padding-left: 64.67rpx; |
|||
position: relative; |
|||
&:before{ |
|||
content: ""; |
|||
background-image: url("@/static/img/address1.png"); |
|||
background-size: 100% 100%; |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
position: absolute; |
|||
left: 20.67rpx; |
|||
} |
|||
} |
|||
} |
|||
.address_info{ |
|||
background-color: white; |
|||
padding: 0 26.67rpx; |
|||
margin-top: 14.67rpx; |
|||
.address_info_item{ |
|||
padding-top: 42.67rpx; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
&:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
.info_item_title{ |
|||
font-size: 24rpx; |
|||
color: #888888; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
font-weight: bold; |
|||
margin-bottom: 10rpx; |
|||
|
|||
.info_item_title_pick{ |
|||
width: 100%; |
|||
} |
|||
.info_item_title_span{ |
|||
color: black; |
|||
margin-top: 15.33rpx; |
|||
} |
|||
image{ |
|||
width: 25.33rpx; |
|||
height: 25.33rpx; |
|||
} |
|||
} |
|||
.info_item_input{ |
|||
input{ |
|||
font-size: 24rpx; |
|||
padding-left: 10rpx; |
|||
} |
|||
} |
|||
} |
|||
.address_info_item1{ |
|||
padding-top: 32.67rpx; |
|||
padding-bottom: 27.33rpx; |
|||
} |
|||
} |
|||
.address_switch{ |
|||
margin-top: 14.67rpx; |
|||
background-color: white; |
|||
padding: 17.33rpx 0; |
|||
padding-left: 32rpx; |
|||
padding-right: 52.67rpx; |
|||
font-size: 24rpx; |
|||
font-weight: bold; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
} |
|||
.address_submit{ |
|||
padding: 0 32rpx; |
|||
margin-top: 112rpx; |
|||
|
|||
button{ |
|||
background-color: black; |
|||
color: white; |
|||
font-size: 26.67rpx; |
|||
margin: 0; |
|||
font-weight: bold; |
|||
height: 88rpx; |
|||
line-height: 88rpx; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,197 @@ |
|||
<template> |
|||
<view> |
|||
<view class="address_item" v-for="(item,index) in list" :key="index" @click="selectAddress(item)"> |
|||
<view class="address_info"> |
|||
<view class="address_info_title"> |
|||
<view class="info_title_span">{{item.consignee}}</view> |
|||
<text>{{item.mobile}}</text> |
|||
</view> |
|||
<view class="address_info_content"> |
|||
<view class="info_content_left"> |
|||
<view>{{item.sign_building}} </view> |
|||
<text>{{item.country_name}} {{item.province_name}} {{item.city_name}} {{item.address}} {{item.mobile}}</text> |
|||
</view> |
|||
<image src="../../static/img/update.png" mode="" @click.stop="updateAddress(item)"></image> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="address_default"> |
|||
<view class="address_default_left"> |
|||
<image src="../../static/img/select4.png" mode="" v-if="item.default_address_id==item.address_id"></image> |
|||
<image src="../../static/img/select2.png" mode="" v-else @click.stop="setDefault(item.address_id)"></image> |
|||
<text>Default address</text> |
|||
</view> |
|||
<text @click.stop="deleteAddress(item.address_id)">Delete</text> |
|||
</view> |
|||
|
|||
</view> |
|||
<view class="address_foot"> |
|||
<navigator url="/pages/account/addAddress" > |
|||
<button>ADD ADDRESS</button> |
|||
</navigator> |
|||
</view> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" confirmText="Delete" title="Tips" content="Whether to delete the address?" |
|||
@confirm="dialogConfirm" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
list:[], |
|||
address_id:'', |
|||
type:0 |
|||
} |
|||
}, |
|||
methods:{ |
|||
//确认订单选择地址 |
|||
selectAddress(item){ |
|||
if(this.type==1){ |
|||
uni.$emit('query' , {consignee : item,type:'address'}); |
|||
uni.navigateBack() |
|||
} |
|||
}, |
|||
// 修改地址 |
|||
updateAddress(item){ |
|||
uni.navigateTo({ |
|||
url:'./addAddress?type=1&data='+JSON.stringify(item) |
|||
}) |
|||
}, |
|||
// 删除地址 |
|||
deleteAddress(id){ |
|||
this.address_id=id |
|||
this.$refs.alertDialog.open() |
|||
}, |
|||
dialogConfirm(){ |
|||
let data={_action:'dropconsignee',address_id:this.address_id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:res.message |
|||
}) |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
// 设置默认地址 |
|||
setDefault(id){ |
|||
let data={_action:'setdefaultconsignee',address_id:id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
getList(){ |
|||
let data={_action:'getconsignees'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.list=res.data |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onShow() { |
|||
this.getList() |
|||
}, |
|||
onLoad(e) { |
|||
if(e.type==1){ |
|||
this.type=1 |
|||
} |
|||
} |
|||
|
|||
} |
|||
</script> |
|||
<style> |
|||
page{ |
|||
background-color: #F6F5FA; |
|||
padding-bottom: 160rpx; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
|
|||
.address_foot{ |
|||
padding: 42rpx 24rpx; |
|||
background-color: white; |
|||
border-top: #E2E2E2 solid 1px; |
|||
position: fixed; |
|||
bottom: 0; |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
button{ |
|||
color: white; |
|||
background-color: black; |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
margin: 0; |
|||
} |
|||
} |
|||
.address_item{ |
|||
margin-top: 17.33rpx; |
|||
width: 100%; |
|||
background-color: white; |
|||
padding-top: 32rpx; |
|||
font-size: 24rpx; |
|||
color: #666666; |
|||
font-weight: bold; |
|||
|
|||
.address_info{ |
|||
padding: 0 26.67rpx; |
|||
padding-bottom: 33.33rpx; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
|
|||
.address_info_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
margin-bottom: 37.33rpx; |
|||
.info_title_span{ |
|||
font-size: 28rpx; |
|||
color: black; |
|||
margin-right: 38.67rpx; |
|||
} |
|||
} |
|||
.address_info_content{ |
|||
display: flex; |
|||
align-items: center; |
|||
width: 100%; |
|||
.info_content_left{ |
|||
padding-right: 38.67rpx; |
|||
margin-right: 34rpx; |
|||
min-width: 80%; |
|||
border-right: 1px solid #E2E2E2; |
|||
} |
|||
image{ |
|||
width: 34.67rpx; |
|||
height: 34.67rpx; |
|||
} |
|||
} |
|||
} |
|||
.address_default{ |
|||
padding: 29.33rpx 0; |
|||
padding-left: 26.67rpx; |
|||
padding-right: 52.67rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
|
|||
.address_default_left{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 25.33rpx; |
|||
height: 25.33rpx; |
|||
margin-right: 13.33rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,165 @@ |
|||
<template> |
|||
<view> |
|||
<view class="foot fixed"> |
|||
<uni-section title="左侧文字+右侧文字" subTitle="使用 left-text/right-text 设置左右文字" type="line" |
|||
style="margin-bottom: 3px;"> |
|||
<view class="box-bg"> |
|||
<uni-nav-bar border="false" title="" > |
|||
<block slot="left"> |
|||
<!-- <view ><uni-icons type="back" size="30"></uni-icons></view> --> |
|||
<view class="icon-all"><image class="imgsize"src='../../static/icon/left.png'/></view> |
|||
</block> |
|||
<block slot="right"> |
|||
|
|||
<view class="text-bg" @click="Sub()">submit</view> |
|||
|
|||
</block> |
|||
</uni-nav-bar> |
|||
</view> |
|||
</uni-section> |
|||
</view> |
|||
|
|||
<view class="detail"> |
|||
<view class="contain" v-for="(item,index) in imglist" :key="index"> |
|||
<!-- <view class="icon imgsize" :style="{backgroundImage :'url(' + item +')'}"></view> --> |
|||
|
|||
<view class="icon" @click="tabActive(index,item)"> |
|||
|
|||
<image class="imgsize":src="item"></image> |
|||
<radio class="main-icon-radio" v-show="current>0" :checked="index == current?true:false" /> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
current:-1, |
|||
active_img:'', |
|||
query:{ |
|||
_action:'getinfo' |
|||
|
|||
}, |
|||
query2:{ |
|||
_action:'updateinfo', |
|||
nickname:'', |
|||
sex:'', |
|||
birthday:'', |
|||
user_head:'', |
|||
email:'' |
|||
}, |
|||
imglist:[] |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.getimglist() |
|||
}, |
|||
methods: { |
|||
getimglist(){ |
|||
defaultRequest(this.query).then(res => |
|||
{ |
|||
// console.log(res.data.headicons,'图片') |
|||
this.imglist = res.data.headicons |
|||
console.log(res.data) |
|||
this.query2.nickname = res.data.nickname |
|||
// for(let i of this.imglist) |
|||
// console.log(i) |
|||
}) |
|||
}, |
|||
|
|||
tabActive(index,item){ |
|||
this.current = index |
|||
console.log(index) |
|||
this.active_img = item |
|||
}, |
|||
// 提交图片 |
|||
Sub(){ |
|||
console.log( this.active_img,'选择的图片') |
|||
this.query2.user_head = this.active_img; |
|||
defaultRequest(this.query2).then( res => { |
|||
console.log(res,'yyyy') |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:'succuss', |
|||
duration: 2000, |
|||
icon:'none' |
|||
|
|||
}) |
|||
uni.navigateBack({ |
|||
delta:1 |
|||
}) |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
.foot{ |
|||
height:120rpx; |
|||
width: 100vw; |
|||
padding:50rpx 0 0 0; |
|||
background-color: #fff; |
|||
position: fixed; |
|||
} |
|||
.fixed{ |
|||
position: fixed; |
|||
z-index: 99; |
|||
} |
|||
.icon-all{ |
|||
height: 30rpx; |
|||
width:30rpx ; |
|||
} |
|||
.detail{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin:10rpx 50rpx 10rpx 50rpx; |
|||
padding: 100rpx 0; |
|||
background-color: #fff; |
|||
|
|||
|
|||
} |
|||
.text-bg{ |
|||
background-color: black; |
|||
color: aliceblue; |
|||
padding: 6rpx 10rpx; |
|||
border-radius: 15rpx; |
|||
} |
|||
.contain{ |
|||
width: 180rpx; |
|||
height: 160rpx; |
|||
display: flex; |
|||
flex-direction: column; |
|||
margin: 50rpx 10rpx 10rpx 10rpx; |
|||
padding: 10rpx; |
|||
position: relative; |
|||
justify-content: center; |
|||
align-items: center; |
|||
} |
|||
.icon{ |
|||
height: 160rpx; |
|||
width:160rpx; |
|||
margin: 12rpx; |
|||
display: flex; |
|||
justify-content: flex-end; |
|||
position: absolute; |
|||
align-items: center; |
|||
} |
|||
.imgsize{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
.main-icon-radio { |
|||
position: absolute; |
|||
z-index: 9; |
|||
margin-top: 110rpx; |
|||
margin-left: 20rpx; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,129 @@ |
|||
<template> |
|||
<view class="wishlist_body"> |
|||
<view class="status_bar"></view> |
|||
<uni-nav-bar left-icon="left" :rightText="isDelete?'Done':'Delete'" title="Favorites" color="#000000" @clickLeft="back" @clickRight="$refs.alertDialog.open()"/> |
|||
<view class="wishlist"> |
|||
<view class="wishlist_item" v-for="(item,index) in goodsList" :key="index" > |
|||
<view class="wishlist_item_img"> |
|||
<image :src="item.goods_img" mode="" class="wishlist_item_img_goods"></image> |
|||
<image src="../../static/img/select.png" mode="" class="select" v-show="isDelete"></image> |
|||
</view> |
|||
<view class="wishlist_item_bottom"> |
|||
<text>US${{item.promote_price?item.promote_price:item.shop_price}}</text> |
|||
<image src="/static/img/like.png" mode="" v-show="item.is_attention==0" class="wishlist_item_bottom_icon" @click="addLike(item.id)"></image> |
|||
<image src="../../static/img/like1.png" mode="" v-show="item.is_attention==1" class="wishlist_item_bottom_icon" @click="removeLike(item.id)"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="wishlist_foot" v-show="isDelete"> |
|||
<view class="wishlist_foot_left"> |
|||
<image src="../../static/img/select2.png" mode=""></image> |
|||
<text>All</text> |
|||
</view> |
|||
<view class="wishlist_foot_right"> |
|||
<button>DELETE</button> |
|||
</view> |
|||
</view> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" confirmText="Clear" title="Tips" content="Whether to clear browsing history?" |
|||
@confirm="clearFavorites" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isDelete:false, |
|||
goodsList:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
// 清空浏览记录 |
|||
clearFavorites(){ |
|||
let data={_action:'cleargoodsbrowsehistory'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
// 添加收藏 |
|||
addLike(id){ |
|||
let data={_action:'setfaviouritegoods',goods_id:id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
this.changeImage(id,0) |
|||
} |
|||
}) |
|||
}, |
|||
// 取消收藏 |
|||
removeLike(id){ |
|||
let data={_action:'unsetfaviouritegoods',goods_id:id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
this.changeImage(id,1) |
|||
} |
|||
}) |
|||
}, |
|||
// 切换图片 |
|||
changeImage(id,type){ |
|||
this.goodsList.map(item=>{ |
|||
if(item.id==id){ |
|||
if(type==0){ |
|||
item.is_attention=1 |
|||
}else{ |
|||
item.is_attention=0 |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.navigateBack() |
|||
}, |
|||
getList(){ |
|||
let data={_action:'getgoodsbrowsehistory'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.goodsList=res.data |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
page{ |
|||
|
|||
} |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.wishlist_item_bottom{ |
|||
width: 220rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,304 @@ |
|||
<template> |
|||
<view> |
|||
<view class="status_bar"></view> |
|||
|
|||
<view class="account_info"> |
|||
<image src="../../static/img/logo.png" mode="" class="header_img" v-show="!user_info.isLogin"></image> |
|||
<image :src="user_info.user_head?user_info.user_head:user_info.headicons[5]" mode="" class="header_img" v-if="user_info.isLogin"></image> |
|||
<view class="info_name" v-if="!user_info.isLogin"> |
|||
<navigator url="/pages/login/index" > |
|||
LOGIN / SIGUP> |
|||
</navigator> |
|||
</view> |
|||
<view class="info_name" v-else> |
|||
<navigator url="/pages/account/myProfile" > |
|||
hi,{{user_info.nickname!=''?user_info.nickname:user_info.email}}> |
|||
</navigator> |
|||
</view> |
|||
|
|||
<view class="info_like"> |
|||
<navigator url="/pages/account/myCoupons" class="info_like_item"> |
|||
<text class="info_like_item_img">6</text> |
|||
<text class="info_like_item_span">Coupons</text> |
|||
</navigator> |
|||
<navigator url="/pages/account/pointsDetails" class="info_like_item"> |
|||
<text class="info_like_item_img">25</text> |
|||
<text class="info_like_item_span">Points</text> |
|||
</navigator> |
|||
<navigator url="/pages/account/wishlist" class="info_like_item"> |
|||
<image src="../../static/img/like.png" mode="" class="info_like_item_img"></image> |
|||
<text class="info_like_item_span">Wishlist</text> |
|||
</navigator> |
|||
<navigator url="/pages/account/favorites" class="info_like_item"> |
|||
<image src="../../static/img/favorites.png" mode="" class="info_like_item_img"></image> |
|||
<text class="info_like_item_span">Favorites</text> |
|||
</navigator> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="order"> |
|||
<view class="order_title">My Orders</view> |
|||
<view class="order_info"> |
|||
<navigator url="/pages/account/myOrders" class="order_info_item"> |
|||
<image src="../../static/img/unpaid.png" mode="" class="info_img"></image> |
|||
<text>Unpaid</text> |
|||
</navigator> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/Processing.png" mode="" class="info_img"></image> |
|||
<text>Processing</text> |
|||
</view> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/Shipped.png" class="info_img" mode=""></image> |
|||
<text>Shipped</text> |
|||
</view> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/Returns.png" class="info_img" mode=""></image> |
|||
<text>Returns</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="order"> |
|||
<view class="order_title">My Service</view> |
|||
<view class="order_info"> |
|||
<navigator url="/pages/account/message" class="order_info_item"> |
|||
<image src="../../static/img/msg.png" class="info_img" mode=""></image> |
|||
<text>Message</text> |
|||
</navigator> |
|||
<navigator url="/pages/account/myReview" class="order_info_item"> |
|||
<image src="../../static/img/My Review.png" class="info_img" mode=""></image> |
|||
<text>My Review</text> |
|||
</navigator> |
|||
<navigator url="/pages/account/address" class="order_info_item"> |
|||
<image src="../../static/img/My Address.png" class="info_img" mode=""></image> |
|||
<text>My Address</text> |
|||
</navigator> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/Return Policy.png" class="info_img" mode=""></image> |
|||
<text>Return Policy</text> |
|||
</view> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/Help Center.png" class="info_img" mode=""></image> |
|||
<text>Help Center</text> |
|||
</view> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/Attention CHIC.png" class="info_img" mode=""></image> |
|||
<text>Attention CHIC</text> |
|||
</view> |
|||
<view class="order_info_item"> |
|||
<image src="../../static/img/About CHIC.png" class="info_img" mode=""></image> |
|||
<text>About CHIC</text> |
|||
</view> |
|||
|
|||
<navigator url="/pages/account/settings" class="order_info_item"> |
|||
<!-- <view class="order_info_item"> --> |
|||
<image src="../../static/img/Setting.png" class="info_img" mode=""></image> |
|||
<text>Setting</text> |
|||
<!-- </view> --> |
|||
</navigator> |
|||
</view> |
|||
|
|||
<image src="../../static/img/mine_banner.png" class="mine_banner" mode=""></image> |
|||
<view class="order_title">Recommend</view> |
|||
|
|||
<scroll-view class="spike1" scroll-x="true" :show-scrollbar="false"> |
|||
<view class="spike1_item" v-for="(item,index) in 8" :key="index"> |
|||
<view class="spike1_item_img"></view> |
|||
<view class="spike1_item_bottom1"> |
|||
<view class="spike1_item_text">Adidas Yeezy Boost 350 DazzlingBlue Black</view> |
|||
<text class="spike1_item_text1">US$314.00</text> |
|||
</view> |
|||
|
|||
</view> |
|||
</scroll-view> |
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
user_info:{ |
|||
isLogin:false, |
|||
} |
|||
} |
|||
}, |
|||
methods:{ |
|||
getUserInfo(){ |
|||
let data={_action:'getinfo'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
res.data.isLogin=true |
|||
this.user_info=res.data |
|||
uni.setStorageSync('user_info',this.user_info) |
|||
}else{ |
|||
this.user_info=uni.getStorageSync('user_info') |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onShow() { |
|||
this.user_info=uni.getStorageSync('user_info') |
|||
if(this.user_info){ |
|||
this.getUserInfo() |
|||
} |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.account_info{ |
|||
padding: 0 58rpx; |
|||
padding-top: 50rpx; |
|||
padding-bottom: 30rpx; |
|||
border-bottom: 13.33rpx #F7F7F7 solid; |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
justify-content: center; |
|||
|
|||
.header_img{ |
|||
width: 144rpx; |
|||
height: 144rpx; |
|||
border-radius: 50%; |
|||
margin-bottom: 36.67rpx; |
|||
background-color: #F7F7F7; |
|||
} |
|||
.info_name{ |
|||
font-size: 36rpx; |
|||
font-weight: bold; |
|||
margin-bottom: 74.67rpx; |
|||
} |
|||
.info_like{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
width: 100%; |
|||
.info_like_item{ |
|||
font-size: 40rpx; |
|||
font-weight: 400; |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
justify-content: center; |
|||
|
|||
.info_like_item_img{ |
|||
width: 40rpx; |
|||
height: 40rpx; |
|||
margin-bottom: 14.67rpx; |
|||
display: block; |
|||
} |
|||
.info_like_item_span{ |
|||
font-size: 21.33rpx; |
|||
|
|||
} |
|||
} |
|||
} |
|||
} |
|||
.order{ |
|||
padding: 0 23.33rpx; |
|||
padding-top: 37.33rpx; |
|||
padding-bottom: 43.33rpx; |
|||
border-bottom: 13.33rpx #F7F7F7 solid; |
|||
|
|||
.order_title{ |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
} |
|||
.order_info{ |
|||
width: 100%; |
|||
// padding: 0 35.33rpx; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
box-sizing: border-box; |
|||
flex-wrap: wrap; |
|||
|
|||
.order_info_item{ |
|||
width: 25%; |
|||
font-size: 21.33rpx; |
|||
font-weight: 400; |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
justify-content: center; |
|||
margin-top: 38.67rpx; |
|||
|
|||
} |
|||
.info_img{ |
|||
width: 40rpx; |
|||
height: 40rpx; |
|||
margin-bottom: 20rpx; |
|||
} |
|||
} |
|||
.mine_banner{ |
|||
width: 100%; |
|||
height: 226.67rpx; |
|||
margin: 56rpx 0; |
|||
} |
|||
.spike1{ |
|||
white-space: nowrap; |
|||
width: 100%; |
|||
margin-top: 46.67rpx; |
|||
::-webkit-scrollbar { |
|||
width: 0; |
|||
height: 0; |
|||
background-color: transparent; |
|||
} |
|||
|
|||
.spike1_item{ |
|||
color: #191919; |
|||
font-size: 24.67rpx; |
|||
margin-right: 16.67rpx; |
|||
width: 286.67rpx; |
|||
display: inline-block; |
|||
font-weight: 400; |
|||
|
|||
.spike1_item_img{ |
|||
width: 286.67rpx; |
|||
height: 286.67rpx; |
|||
|
|||
background-color: #999999; |
|||
} |
|||
.spike1_item_bottom{ |
|||
padding-left: 9.33rpx; |
|||
margin-top: 22.67rpx; |
|||
|
|||
.spike1_item_text{ |
|||
color: #9D9D9D; |
|||
font-size: 21.33rpx; |
|||
text-decoration: line-through; |
|||
} |
|||
.spike1_item_text1{ |
|||
// color: #9D9D9D; |
|||
font-size: 27.33rpx !important; |
|||
font-weight: bold !important; |
|||
} |
|||
} |
|||
.spike1_item_bottom1{ |
|||
padding-left: 9.33rpx; |
|||
margin-top: 19.33rpx; |
|||
font-weight: bold; |
|||
|
|||
.spike1_item_text{ |
|||
color: #000000; |
|||
font-size: 16rpx; |
|||
font-weight: 400; |
|||
margin-bottom: 20.67rpx; |
|||
white-space: break-spaces; |
|||
|
|||
} |
|||
} |
|||
|
|||
} |
|||
.spike1_item:last-child{ |
|||
margin-right: 0; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,103 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar left-icon="left" :statusBar="true" title="Message" |
|||
color="#000000" rightIcon="info" @clickLeft="back" @clickRight="isDelete=!isDelete" :border="false"/> |
|||
|
|||
<view class="body"> |
|||
<view class="msg_item" v-for="(item,index) in list" :key="index"> |
|||
<view class="msg_time">{{item.start_time}}~{{item.end_time}}</view> |
|||
<view class="msg_title">{{item.act_name}}</view> |
|||
<view class="msg_content">{{item.act_range}}</view> |
|||
<!-- <view class="msg_img"></view> --> |
|||
</view> |
|||
<!-- <view class="msg_item"> |
|||
<view class="msg_time">21/04/2022 14:42:31</view> |
|||
<view class="msg_title">Message heading</view> |
|||
<view class="msg_content"> |
|||
estimated to be deliverd on estimated to be deliverd on estim |
|||
ated to be deliverd on estimated to be deliverd on |
|||
</view> |
|||
</view> |
|||
<view class="msg_item"> |
|||
<view class="msg_time">21/04/2022 14:42:31</view> |
|||
<view class="msg_title">Message heading</view> |
|||
<view class="msg_content"> |
|||
estimated to be deliverd on estimated to be deliverd on estim |
|||
ated to be deliverd on estimated to be deliverd on |
|||
</view> |
|||
<view class="msg_img"></view> |
|||
</view> --> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
list:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
getList(){ |
|||
let data={_action:'getfavourableactivities'} |
|||
defaultRequest(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.list=res.data |
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.navigateBack() |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.body{ |
|||
border-top: 13.33rpx #F7F7F7 solid; |
|||
padding:0 26.67rpx; |
|||
} |
|||
.msg_item{ |
|||
padding-top: 42.67rpx; |
|||
padding-bottom: 28rpx; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
|
|||
.msg_time{ |
|||
font-size: 25.33rpx; |
|||
font-weight: 400; |
|||
text-align: center; |
|||
margin-bottom: 41.33rpx; |
|||
} |
|||
.msg_title{ |
|||
font-size: 28rpx; |
|||
margin-bottom: 20rpx; |
|||
} |
|||
.msg_content{ |
|||
color: #555555; |
|||
font-size: 25.33rpx; |
|||
font-weight: 400; |
|||
|
|||
} |
|||
.msg_img{ |
|||
margin-top: 37.33rpx; |
|||
background-color: #FEF6F4; |
|||
width: 100%; |
|||
height: 281.33rpx; |
|||
} |
|||
} |
|||
.msg_item:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,67 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar left-icon="left" :statusBar="true" title="My Coupons" color="#000000" rightIcon="info" @clickLeft="back" @clickRight="goPage" :border="false"/> |
|||
<view class="body"> |
|||
<view class="coupons_item" v-for="(item,index) in list " :key="item.bonus_id"> |
|||
<view class="coupons_item_left"> |
|||
<view class="item_left_prcie">${{item.type_money}}</view> |
|||
<text class="item_left_span">Min.spend</text> |
|||
<view>${{item.min_goods_amount}}</view> |
|||
</view> |
|||
<view class="coupons_item_right"> |
|||
<view class="coupons_right_info"> |
|||
<view class="coupons_right_info_title">{{item.type_name}}</view> |
|||
<text>The tide zone is available</text> |
|||
<view class="coupons_right_info_time">{{item.use_start_date}} - {{item.use_end_date}}</view> |
|||
</view> |
|||
<button>Use Now</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
list:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
getList(){ |
|||
let data={_action:'getuserbonus'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.list=res.data |
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.navigateBack() |
|||
}, |
|||
goPage(){ |
|||
uni.navigateTo({ |
|||
url:"/pages/index/pickUpCentre" |
|||
}) |
|||
} |
|||
}, |
|||
onShow() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.body{ |
|||
border-top: 14.67rpx #F7F7F7 solid; |
|||
padding:0 26rpx; |
|||
padding-top: 31.33rpx; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,874 @@ |
|||
<template> |
|||
<view> |
|||
<view class="order_nav"> |
|||
<scroll-view class="scroll-view_H" scroll-x="true" :show-scrollbar="false"> |
|||
<view :class="scroll_active==index?'scroll_active':''" v-for="(item,index) in scrollList" @click="scrollChange(index)" :key="index">{{item.text}}</view> |
|||
</scroll-view> |
|||
</view> |
|||
<view class="body"> |
|||
<!-- 全部订单 --> |
|||
<template v-if="isList==true && scroll_active==0"> |
|||
<view class="" v-for="(item,idnex) in orderList" :key="item.order_id"> |
|||
<view class="order" @click="goDetails(item,item.order_id)"> |
|||
<view class="order_title"> |
|||
<!-- 待支付订单 --> |
|||
<text v-if="item.pay_status_code==0 && item.order_status_code==0">Waiting for payment</text> |
|||
<!-- 已取消订单 --> |
|||
<text v-else-if="item.order_status_code==2">cancelled</text> |
|||
<!-- 待发货订单 --> |
|||
<text v-else-if="item.pay_status_code==2 && item.shipping_status_code==0">To be shipped</text> |
|||
<!-- 运输中订单 --> |
|||
<text v-else-if="item.pay_status_code==2 && item.shipping_status_code==1 || item.shipping_status_code==4">Shipped</text> |
|||
<!-- 已完成订单 --> |
|||
<text v-else-if="item.pay_status_code==2 && item.shipping_status_code==2">Completed</text> |
|||
|
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
|
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
<view class="good_points" v-if="item.pay_status_code==0 && item.order_status_code==0"> |
|||
<image src="/static/img/gantan1.png" mode=""></image> |
|||
<text>Reward 10 points</text> |
|||
</view> |
|||
<view class="order_button"> |
|||
<!-- 待支付订单 --> |
|||
<template v-if="item.pay_status_code==0 && item.order_status_code==0"> |
|||
<button class="cancel" @click.stop="openTips(item.order_id,0)">CANCEL ORDER</button> |
|||
<button class="pay" @click.stop="payNow(item.order_id,0)">PAY NOW</button> |
|||
</template> |
|||
<!-- 已取消订单 --> |
|||
<button v-if="item.order_status_code==2" class="cancel" @click.stop="openTips(item.order_id,1)">DELETE ORDER</button> |
|||
<!-- 待发货订单 --> |
|||
<template v-if="item.pay_status_code==2 && item.shipping_status_code==1 || item.shipping_status_code==4"> |
|||
<button class="cancel" @click.stop="goLogistics(item.order_id)">LOGISTICS</button> |
|||
<button class="pay" @click.stop="openTips(item.order_id,2)">CONFIRM RECEIPT</button> |
|||
</template> |
|||
<!-- 已完成订单 --> |
|||
<template v-if="item.pay_status_code==2 && item.shipping_status_code==2"> |
|||
<button class="cancel" @click.stop="openTips(item.order_id,1)">DELETE ORDER</button> |
|||
<button class="pay" @click.stop="goComment(item)" v-if="item.comment_status_code==0">COMMENT</button> |
|||
</template> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
|
|||
</template> |
|||
<!-- 待支付订单 --> |
|||
<template v-if="isList==true && scroll_active==1"> |
|||
<view class="" v-for="(item,idnex) in orderList" :key="item.order_id"> |
|||
<view class="order" @click="goDetails(item,item.order_id)" v-if="item.pay_status_code==0 && item.order_status_code==0"> |
|||
<view class="order_title"> |
|||
<text >Waiting for payment</text> |
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
<view class="good_points" v-if="item.pay_status_code==0 && item.order_status_code==0"> |
|||
<image src="/static/img/gantan1.png" mode=""></image> |
|||
<text>Reward 10 points</text> |
|||
</view> |
|||
<view class="order_button"> |
|||
<button class="cancel" @click.stop="openTips(item.order_id,0)">CANCEL ORDER</button> |
|||
<button class="pay" @click.stop="payNow(item.order_id,0)">PAY NOW</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</template> |
|||
|
|||
<!-- 待发货订单 --> |
|||
<template v-if="isList==true && scroll_active==2"> |
|||
<view class="order" v-if="item.pay_status_code==2 && item.shipping_status_code==0" @click="goDetails(0,item.order_id)"> |
|||
<view class="order_title"> |
|||
<text>To be shipped</text> |
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<!-- 运输中订单 --> |
|||
<template v-if="isList==true && scroll_active==3"> |
|||
<view class="order" v-if="item.pay_status_code==2 && item.shipping_status_code==1 || item.shipping_status_code==4" @click="goDetails(4,item.order_id)"> |
|||
<view class="order_title"> |
|||
<text>Shipped</text> |
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
<view class="order_button"> |
|||
<button class="cancel" @click.stop="goLogistics(item.order_id)">LOGISTICS</button> |
|||
<button class="pay" @click.stop="openTips(item.order_id,2)">CONFIRM RECEIPT</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<!-- 已完成订单 --> |
|||
<template v-if="isList==true && scroll_active==4"> |
|||
<view class="order " v-if="item.pay_status_code==2 && item.shipping_status_code==2" @click="goDetails(2,item.order_id)"> |
|||
<view class="order_title"> |
|||
<text>Completed</text> |
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
<view class="order_button"> |
|||
<button class="cancel" @click.stop="openTips(item.order_id,1)">DELETE ORDER</button> |
|||
<button class="pay" @click.stop="goComment(item)" v-if="item.comment_status_code==0">COMMENT</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<!-- 退换货订单 --> |
|||
<template v-if="isList==true && scroll_active==5"> |
|||
<view class="order" v-if="item.order_status_code==4" @click="goDetails(2,item.order_id)"> |
|||
<view class="order_title"> |
|||
<text>Return and exchange</text> |
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
<view class="order_button"> |
|||
<button class="pay">CANCEL RETURN</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<!-- 已取消订单 --> |
|||
<template v-if="isList==true && scroll_active==6"> |
|||
<view class="order" v-if="item.order_status_code==2" @click="goDetails(1,item.order_id)"> |
|||
<view class="order_title"> |
|||
<text>cancelled</text> |
|||
<view class="order_title_right"> |
|||
<text>order#{{item.order_sn}}</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="order_content"> |
|||
<template v-if="item.order_goods.length==1"> |
|||
<view class="good_info" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item1.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item1.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>×{{item1.goods_number}}</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-else> |
|||
<view class="good_info" @click.stop="showGoods(item.order_goods,1)"> |
|||
<view class="good_info_left"> |
|||
<view class="good_info_image" v-for="(item1,index1) in item.order_goods" :key="index1"> |
|||
<image :src="item1.goods_img" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="good_info_right"> |
|||
<text>{{item.order_goods.length}} ltems</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<view class="good_price">total:US${{item.total_fee_o}}</view> |
|||
<view class="order_button"> |
|||
<button class="cancel" @click.stop="openTips(item.order_id,1)">DELETE ORDER</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
<template v-if="isList==false"> |
|||
<view class="order1"> |
|||
<image src="../../static/img/order_nodate.png" mode=""></image> |
|||
<text>You made no order yet!</text> |
|||
<button>Continue shopping</button> |
|||
</view> |
|||
</template> |
|||
</view> |
|||
|
|||
|
|||
<view class="mask" v-show="isShow" @click="isShow=false"></view> |
|||
<!-- 支付 --> |
|||
<view class="order_popup" v-if="isShow && showType==0"> |
|||
<view class="order_popup_title"> |
|||
<text> |
|||
Payment Method |
|||
</text> |
|||
<image src="../../static/img/close1.png" mode="" @click="isPay=false"></image> |
|||
</view> |
|||
<view class="order_popup_pay" > |
|||
<view class="pay_item" @click="selectPay(0)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==0"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/pay_pal.png" mode=""></image> |
|||
<text>Pay Pal</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(1)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==1"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/card.png" mode=""></image> |
|||
<text>Credit/Debit Card</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(2)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==2"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/GPay.png" mode=""></image> |
|||
<text>Google Pay</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(3)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==3"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/APay.png" mode=""></image> |
|||
<text>Apple pay</text> |
|||
</view> |
|||
</view> |
|||
<button @click="getPayDate">PAY NOW</button> |
|||
</view> |
|||
</view> |
|||
<!-- 商品信息 --> |
|||
<view class="order_popup" v-show="isShow && showType==1"> |
|||
<view class="order_popup_title"> |
|||
<text>Commodity information</text> |
|||
</text> |
|||
<image src="../../static/img/close1.png" mode="" @click="isShow=false"></image> |
|||
</view> |
|||
<view class="order_popup_commodity" > |
|||
<view class="good_info" v-for="(item,index) in goods_list " :key="index"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>x{{item.goods_number}}</text> |
|||
</view> |
|||
<view class="info_price">US${{item.goods_price}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
<!-- 删除、取消弹框 --> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" :confirmText="tipsBut" title="Tips" :content="tipsInfo" @confirm="dialogConfirm" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
|
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
scrollList:[{text:'All'},{text:'Unpaid'},{text:'Processing'},{text:'Shipped'},{text:'Returns'},{text:'Completed'},{text:'Closed'}], |
|||
scroll_active:0, |
|||
isList:true, |
|||
orderList:[], |
|||
isShow:false, |
|||
// 显示状态 0 为支付 1为商品列表 |
|||
showType:0, |
|||
payQuery:{ |
|||
_action:'payorder', |
|||
order_id:'', |
|||
order_type:'GOODSBUY', |
|||
payment_method:'alipay.native' |
|||
}, |
|||
pay_index:0, |
|||
cancelQuery:{ |
|||
_action:'cancelorder', |
|||
order_id:'' |
|||
}, |
|||
// 弹出提示框的状态 0:取消订单 1、删除订单 2、确认收货 |
|||
tipsType:0, |
|||
tipsInfo:'', |
|||
tipsBut:'', |
|||
goods_list:[], |
|||
query:{_action:'getuserorders',page_index:1,page_size:10,payingstatus:'',status:'',shippingstatus:''} |
|||
} |
|||
}, |
|||
methods:{ |
|||
// 跳转评论页面 |
|||
goComment(item){ |
|||
uni.navigateTo({ |
|||
url:'../productDetails/review?data='+JSON.stringify(item) |
|||
}) |
|||
}, |
|||
showGoods(goodsList,type){ |
|||
this.isShow=true |
|||
this.showType=type |
|||
this.goods_list=goodsList |
|||
}, |
|||
// 查看物流 |
|||
goLogistics(id){ |
|||
uni.navigateTo({ |
|||
url:'../order/logisticsDetails?order_id='+id |
|||
}) |
|||
}, |
|||
// 订单详情 |
|||
goDetails(item,id){ |
|||
let index |
|||
if(item.pay_status_code==0 && item.order_status_code==0){ |
|||
index=3 |
|||
}else if(item.order_status_code==2){ |
|||
index=1 |
|||
}else if(item.pay_status_code==2 && item.shipping_status_code==0){ |
|||
index=0 |
|||
}else if(item.pay_status_code==2 && item.shipping_status_code==1 || item.shipping_status_code==4){ |
|||
index=4 |
|||
}else if(item.pay_status_code==2 && item.shipping_status_code==2){ |
|||
index=2 |
|||
}else if(item.order_status_code==4){ |
|||
// 退货 |
|||
index=5 |
|||
} |
|||
let url='../order/details?details_index='+index+'&id='+id |
|||
if(index==5){ |
|||
url='../order/refundDetails' |
|||
} |
|||
uni.navigateTo({ |
|||
url:url |
|||
}) |
|||
|
|||
|
|||
}, |
|||
// 选择支付方式 |
|||
selectPay(index){ |
|||
this.pay_index=index |
|||
}, |
|||
// 获取调用支付信息数据 |
|||
getPayDate(){ |
|||
defaultRequest2(this.payQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
//订单对象,从服务器获取 |
|||
if(res.data.need_pay_amount==0) return |
|||
uni.requestPayment({ |
|||
provider: 'alipay', |
|||
orderInfo: res.data.prepay_data.order_info, //支付宝订单数据 |
|||
success: function (res) { |
|||
console.log('success:' + JSON.stringify(res)); |
|||
uni.navigateTo({ |
|||
url: 'paySuccess?order_id='+this.payQuery.order_id |
|||
}); |
|||
}, |
|||
fail: function (err) { |
|||
console.log('fail:' + JSON.stringify(err)); |
|||
uni.showToast({ |
|||
title:'Payment failed', |
|||
icon:'none' |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
}) |
|||
}, |
|||
payNow(id,type){ |
|||
this.payQuery.order_id=id |
|||
this.isShow=true |
|||
this.showType=type |
|||
}, |
|||
// 淡出提示 |
|||
openTips(id,type){ |
|||
this.tipsType=type |
|||
if(type==0){ |
|||
this.tipsInfo='Are you sure you want to cancel this order? This order will be regarded as invalid after cancellation' |
|||
this.tipsBut='CancelOrder' |
|||
this.cancelQuery._action='cancelorder' |
|||
}else if(type==1){ |
|||
this.tipsInfo='Are you sure you want to delete this order?' |
|||
this.tipsBut='DeleteOrder' |
|||
this.cancelQuery._action='deleteorder' |
|||
}else if(type==2){ |
|||
this.tipsInfo='Are you sure you have received the products?' |
|||
this.tipsBut='Confirm' |
|||
this.cancelQuery._action='affirmorder' |
|||
} |
|||
this.cancelQuery.order_id=id |
|||
this.$refs.alertDialog.open() |
|||
|
|||
}, |
|||
// 提示框点击确操作 取消订单、删除订单 |
|||
dialogConfirm(){ |
|||
defaultRequest2(this.cancelQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
getList(){ |
|||
defaultRequest2(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.orderList=res.data |
|||
} |
|||
}) |
|||
}, |
|||
scrollChange(index){ |
|||
// {_action:'getuserorders',page_index:1,page_size:10,payingstatus:'',status:'',shippingstatus:''} |
|||
this.scroll_active=index |
|||
// if(index==0){ |
|||
// this.query.payingstatus='' |
|||
// this.query.status='' |
|||
// }else if(index==1){ |
|||
// this.query.payingstatus='1' |
|||
// this.query.status='0' |
|||
// this.query.shippingstatus='1' |
|||
// } |
|||
// this.getList() |
|||
}, |
|||
}, |
|||
onShow() { |
|||
this.getList() |
|||
}, |
|||
filters:{ |
|||
goodsAttr(e){ |
|||
return e.replace(/\s\n/g,';'); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.body{ |
|||
padding-top: 100rpx; |
|||
} |
|||
.order_nav{ |
|||
padding:0 38.67rpx ; |
|||
border-bottom: 13.33rpx #F7F7F7 solid; |
|||
position: fixed; |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
z-index: 99; |
|||
background-color: white; |
|||
.scroll-view_H{ |
|||
white-space: nowrap; |
|||
font-size: 28rpx; |
|||
color: #666666; |
|||
width: 100%; |
|||
|
|||
::-webkit-scrollbar { |
|||
width: 0; |
|||
height: 0; |
|||
background-color: transparent; |
|||
} |
|||
view{ |
|||
margin-left: 37.33rpx; |
|||
display: inline-block; |
|||
padding: 25.33rpx 0; |
|||
} |
|||
view:first-child{ |
|||
margin-left: 0; |
|||
} |
|||
.scroll_active{ |
|||
color: #000000; |
|||
font-size: 28rpx; |
|||
font-weight: bold; |
|||
border-bottom: 2px solid #000000; |
|||
} |
|||
} |
|||
} |
|||
.order{ |
|||
border-bottom: 13.33rpx #F7F7F7 solid; |
|||
padding-bottom: 26.67rpx; |
|||
.order_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
padding-left: 34.67rpx; |
|||
padding-right: 25.33rpx; |
|||
font-size: 28rpx; |
|||
padding-top: 26.67rpx; |
|||
padding-bottom: 20rpx; |
|||
border-bottom: 1px solid #F1F1F1; |
|||
|
|||
.order_title_right{ |
|||
font-size: 22.67rpx; |
|||
font-weight: bold; |
|||
color: #666666; |
|||
|
|||
image{ |
|||
width: 16rpx; |
|||
height: 16rpx; |
|||
margin-left: 14.67rpx; |
|||
} |
|||
} |
|||
} |
|||
.order_content{ |
|||
padding-left: 32rpx; |
|||
padding-right: 26.67rpx; |
|||
|
|||
.good_info{ |
|||
padding: 30.67rpx 0; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 22.67rpx; |
|||
color: #666666; |
|||
font-weight: bold; |
|||
border-bottom: 1px solid #F1F1F1; |
|||
.good_info_left{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
.good_info_image{ |
|||
width: 133.33rpx; |
|||
height: 133.33rpx; |
|||
background-color: #999999; |
|||
margin-right: 8rpx; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
.left_info{ |
|||
margin-left: 24rpx; |
|||
|
|||
.info_name{ |
|||
font-size: 26.67rpx; |
|||
font-weight: 400; |
|||
width: 477.33rpx; |
|||
} |
|||
.left_info_bottom{ |
|||
width: 533.33rpx !important; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 32rpx; |
|||
color: #909090; |
|||
width: 100%; |
|||
margin-top: 24rpx; |
|||
.info_lable{ |
|||
padding: 5.33rpx 20rpx; |
|||
font-size: 22.67rpx; |
|||
border-radius: 33.33rpx; |
|||
border: 1px solid #D3D3D3; |
|||
image{ |
|||
width: 17.33rpx; |
|||
height: 17.33rpx; |
|||
margin-left: 14.67rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.good_info_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
image{ |
|||
width: 16rpx; |
|||
height: 16rpx; |
|||
margin-left: 20rpx; |
|||
} |
|||
} |
|||
} |
|||
.good_price{ |
|||
font-size: 28rpx; |
|||
text-align: right; |
|||
margin: 24rpx 0; |
|||
} |
|||
.good_points{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: flex-end; |
|||
font-size: 24rpx; |
|||
color: #B22234; |
|||
|
|||
image{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
margin-right: 13.33rpx; |
|||
} |
|||
} |
|||
.order_button{ |
|||
margin-top: 33.33rpx; |
|||
display: flex; |
|||
justify-content: flex-end; |
|||
|
|||
button{ |
|||
height: 57.33rpx; |
|||
line-height: 57.33rpx; |
|||
font-weight: bold; |
|||
font-size: 22.67rpx; |
|||
border: none; |
|||
margin: 0; |
|||
border-radius: 0; |
|||
|
|||
&:last-child{ |
|||
margin-right: 0 !important; |
|||
} |
|||
} |
|||
.cancel{ |
|||
color: #666666; |
|||
margin-right: 20rpx; |
|||
background-color: white; |
|||
} |
|||
.pay{ |
|||
color: white; |
|||
background: black; |
|||
} |
|||
|
|||
} |
|||
} |
|||
} |
|||
.order1{ |
|||
padding-top: 90.67rpx; |
|||
font-size: 24rpx; |
|||
font-weight: 400; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: center; |
|||
align-items: center; |
|||
image{ |
|||
width: 146.67rpx; |
|||
height: 146.67rpx; |
|||
margin-bottom: 36rpx; |
|||
} |
|||
button{ |
|||
background-color: #000000; |
|||
font-size: 24rpx; |
|||
color: white; |
|||
border-radius: 13.33rpx; |
|||
height: 63.33rpx; |
|||
margin-top: 20rpx; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,161 @@ |
|||
<template> |
|||
<view> |
|||
<view class="profile_item profile_item1"> |
|||
<text>Photo</text> |
|||
<view class="profile_item_right" @click="gotochange()"> |
|||
<image src="../../static/img/logo.png" mode="" class="head_img" v-show="!user_info.isLogin"></image> |
|||
<image :src="user_info.user_head?user_info.user_head:user_info.headicons[5]" mode="" class="head_img" v-if="user_info.isLogin"></image> |
|||
<image src="../../static/img/right1.png" alt="" class="right_img"></image> |
|||
</view> |
|||
</view> |
|||
<view class="profile_item " @click="$refs.inputDialog.open()"> |
|||
<text>Name</text> |
|||
<view class="profile_item_right"> |
|||
<text>{{user_info.nickname}}</text> |
|||
<image src="../../static/img/right1.png" alt="" class="right_img"></image> |
|||
</view> |
|||
</view> |
|||
<view class="profile_item "> |
|||
<text>Email</text> |
|||
<view class="profile_item_right"> |
|||
<image src="../../static/img/gantan.png" alt="" class="right_img1" v-if="user_info.is_validated==0"></image> |
|||
<text>{{user_info.is_validated==0?'unverified':user_info.email}}</text> |
|||
<image src="../../static/img/right1.png" alt="" class="right_img"></image> |
|||
</view> |
|||
</view> |
|||
<navigator :url="'/pages/login/verifyEmail?type=0&email='+user_info.email" > |
|||
<view class="profile_item "> |
|||
<text>Change Password</text> |
|||
<view class="profile_item_right"> |
|||
<image src="../../static/img/right1.png" alt="" class="right_img"></image> |
|||
</view> |
|||
</view> |
|||
</navigator> |
|||
<view class="profile_item "> |
|||
<text>Ship to</text> |
|||
<view class="profile_item_right"> |
|||
<text>{{addressDate.country_name || 'United States'}}</text> |
|||
<image src="../../static/img/right1.png" alt="" class="right_img"></image> |
|||
</view> |
|||
</view> |
|||
<uni-popup ref="inputDialog" type="dialog"> |
|||
<uni-popup-dialog ref="inputClose" mode="input" title="输入内容" |
|||
placeholder="请输入姓名" @confirm="dialogInputConfirm"></uni-popup-dialog> |
|||
</uni-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
user_info:{ |
|||
isLogin:false, |
|||
}, |
|||
query:{ |
|||
_action:'updateinfo', |
|||
nickname:'' |
|||
}, |
|||
addressDate:{} |
|||
} |
|||
}, |
|||
methods:{ |
|||
//换头像 |
|||
gotochange(){ |
|||
uni.navigateTo({ |
|||
url:'./changeImg' |
|||
}) |
|||
}, |
|||
// 获取默认地址 |
|||
getDefaultAddress(){ |
|||
let data={_action:'getdefaultconsignee'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.addressDate=res.data |
|||
} |
|||
}) |
|||
}, |
|||
getUserInfo(){ |
|||
let data={_action:'getinfo'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
res.data.isLogin=true |
|||
this.user_info=res.data |
|||
uni.setStorageSync('user_info',this.user_info) |
|||
}else{ |
|||
this.user_info=uni.getStorageSync('user_info') |
|||
} |
|||
}) |
|||
}, |
|||
dialogInputConfirm(val){ |
|||
this.query.nickname=val |
|||
defaultRequest2(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:'修改成功', |
|||
icon:'none' |
|||
}) |
|||
this.getUserInfo() |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.user_info=uni.getStorageSync('user_info') |
|||
this.getUserInfo() |
|||
this.getDefaultAddress() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
page{ |
|||
border-top: 13.33rpx #F7F7F7 solid; |
|||
padding-left: 26.67rpx; |
|||
} |
|||
|
|||
</style> |
|||
<style lang="scss" scoped> |
|||
|
|||
.profile_item{ |
|||
width: 100%; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 24rpx; |
|||
font-weight: bold; |
|||
padding: 40rpx 0; |
|||
padding-right: 33.33rpx; |
|||
border-bottom: 1.33rpx #ECECEC solid; |
|||
box-sizing: border-box; |
|||
|
|||
.profile_item_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
.head_img{ |
|||
width: 112rpx; |
|||
height: 112rpx; |
|||
border-radius: 50%; |
|||
} |
|||
.right_img{ |
|||
width: 18.67rpx; |
|||
height: 18.67rpx; |
|||
margin-left: 20rpx; |
|||
} |
|||
.right_img1{ |
|||
width: 25.33rpx; |
|||
height: 25.33rpx; |
|||
margin-right: 9.33rpx; |
|||
} |
|||
} |
|||
|
|||
} |
|||
.profile_item1{ |
|||
padding: 17.33rpx 0; |
|||
padding-right: 33.33rpx; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,74 @@ |
|||
<template> |
|||
<view class="body"> |
|||
<navigator url="/pages/productDetails/review"> |
|||
<view class="reviews_item" v-for="(item,index) in 2" :key="index"> |
|||
<view class="reviews_item_title"> |
|||
<view class="reviews_title_user"> |
|||
<text>e***8</text> |
|||
<uni-rate size="18" :disabled="true" disabledColor="red" :value="4" active-color="red" :is-fill="false"/> |
|||
</view> |
|||
<view class="reviews_title_time">07/03/2022</view> |
|||
</view> |
|||
<view class="reviews_item_color">Color:Multicolor</view> |
|||
<view class="reviews_item_content">So unique! Can’t wait to wear these.</view> |
|||
<view class="reviews_item_image"> |
|||
<view class="reviews_image_content" v-for="(item,index) in 3" :key="index"></view> |
|||
</view> |
|||
<view class="more"> |
|||
<image src="../../static/img/more.png" mode="" @click="isShwo=true"></image> |
|||
<view class="more_delete" v-show="isShwo">delete</view> |
|||
</view> |
|||
</view> |
|||
</navigator> |
|||
<view class="mask" v-show="isShwo" @click="isShwo=false"></view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
isShwo:false |
|||
} |
|||
}, |
|||
methods:{ |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
page{ |
|||
border-top: 14.67rpx #F6F5FA solid; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.body{ |
|||
padding: 0 32rpx; |
|||
} |
|||
.more{ |
|||
text-align: right; |
|||
position: relative; |
|||
// margin-top: 20rpx; |
|||
image{ |
|||
width: 24rpx; |
|||
height: 6.67rpx; |
|||
} |
|||
.more_delete{ |
|||
background-image: url(@/static/img/more_bf.png); |
|||
background-size: 100% 100%; |
|||
width: 102.67rpx; |
|||
height: 67.33rpx; |
|||
position: absolute; |
|||
right: 0; |
|||
bottom: 20rpx; |
|||
line-height: 50rpx; |
|||
text-align: center; |
|||
font-size: 24rpx; |
|||
z-index: 999; |
|||
} |
|||
} |
|||
.mask{ |
|||
background-color: white; |
|||
opacity: 0; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,60 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar left-icon="left" title="Points Details" color="#000000" rightIcon="info" @clickLeft="back" :border="false" :statusBar="true" /> |
|||
<view class="points"> |
|||
<view class="points_item" v-for="(item,index) in 10" :key="index"> |
|||
<view class="points_item_title"> |
|||
<text>Order return</text> |
|||
<text class="item_title_price">+US$314.00</text> |
|||
</view> |
|||
<text>21/04/2022 15:42:31</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
|
|||
} |
|||
}, |
|||
methods:{ |
|||
back(){ |
|||
uni.navigateBack() |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
} |
|||
.points{ |
|||
padding: 0 25.33rpx; |
|||
|
|||
.points_item{ |
|||
padding: 37.33rpx 0; |
|||
color: #999999; |
|||
font-size: 24rpx; |
|||
font-weight: 400; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
.points_item_title{ |
|||
font-size: 28rpx; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
margin-bottom: 18rpx; |
|||
color: black; |
|||
|
|||
.item_title_price{ |
|||
color: #B22234; |
|||
} |
|||
} |
|||
|
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,119 @@ |
|||
<template> |
|||
<view> |
|||
<view class="profile_item "> |
|||
<text>Country</text> |
|||
<image src="../../static/img/right1.png" mode="" class="right_img"></image> |
|||
</view> |
|||
<view class="profile_item "> |
|||
<text>Language</text> |
|||
<image src="../../static/img/right1.png" mode="" class="right_img"></image> |
|||
</view> |
|||
<view class="profile_item "> |
|||
<text>My account</text> |
|||
<image src="../../static/img/right1.png" mode="" class="right_img"></image> |
|||
</view> |
|||
<view class="profile_item "> |
|||
<text>Privacy policy</text> |
|||
<image src="../../static/img/right1.png" mode="" class="right_img"></image> |
|||
</view> |
|||
<view class="profile_item "> |
|||
<text>Legal</text> |
|||
<image src="../../static/img/right1.png" mode="" class="right_img"></image> |
|||
</view> |
|||
<view class="set_button"> |
|||
<button @click="signOut">SIGN OUT</button> |
|||
</view> |
|||
<view class="edition"> |
|||
<view class="edition_title">CHIC BUYER</view> |
|||
<text>Version 1.0</text> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
|
|||
} |
|||
}, |
|||
methods:{ |
|||
signOut(){ |
|||
let data={_action:'logout'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.clearStorageSync() |
|||
uni.reLaunch({ |
|||
url:'../login/index' |
|||
}) |
|||
} |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss"> |
|||
page{ |
|||
border-top: 14.67rpx #F7F7F7 solid; |
|||
padding-left: 26.67rpx; |
|||
box-sizing: border-box; |
|||
|
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
page{ |
|||
|
|||
} |
|||
.profile_item{ |
|||
width: 100%; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 24rpx; |
|||
font-weight: bold; |
|||
padding: 40rpx 0; |
|||
padding-right: 33.33rpx; |
|||
border-bottom: 1.33rpx #ECECEC solid; |
|||
box-sizing: border-box; |
|||
|
|||
.right_img{ |
|||
width: 18.67rpx; |
|||
height: 18.67rpx; |
|||
margin-left: 20rpx; |
|||
} |
|||
|
|||
} |
|||
.profile_item:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
.set_button{ |
|||
width: 686.67rpx; |
|||
height: 73.33rpx; |
|||
margin-top: 133.33rpx; |
|||
|
|||
button{ |
|||
background-color: #191919; |
|||
font-size: 26.67rpx; |
|||
color: white; |
|||
font-weight: bold; |
|||
height: 100%; |
|||
line-height: 73.33rpx; |
|||
border-radius: 0; |
|||
} |
|||
} |
|||
.edition{ |
|||
position: fixed; |
|||
bottom: 0; |
|||
width: 100%; |
|||
text-align: center; |
|||
font-size: 20rpx; |
|||
font-weight: bold; |
|||
margin-bottom: 112rpx; |
|||
.edition_title{ |
|||
font-size: 25.33rpx; |
|||
margin-bottom: 16rpx; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,99 @@ |
|||
<template> |
|||
<view class="wishlist_body"> |
|||
<view class="status_bar"></view> |
|||
<uni-nav-bar left-icon="left" :rightText="isDelete?'Done':'Delete'" title="Wishlist" color="#000000" @clickLeft="back" @clickRight="$refs.alertDialog.open()"/> |
|||
<view class="wishlist"> |
|||
<view class="wishlist_item" v-for="(item,index) in goodsList" :key="index" @click="changeImage(item.id)"> |
|||
<view class="wishlist_item_img"> |
|||
<image :src="item.goods_img" mode="" class="wishlist_item_img_goods"></image> |
|||
<image src="../../static/img/select.png" mode="" class="select" v-show="isDelete && item.is_select==0"></image> |
|||
<image src="../../static/img/select.png" mode="" class="select" v-show="isDelete && item.is_select==1"></image> |
|||
</view> |
|||
<view class="wishlist_item_bottom"> |
|||
<text>US${{item.promote_price?item.promote_price:item.shop_price}}</text> |
|||
<image src="../../static/img/cart2.png" mode="" class="wishlist_item_bottom_icon"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="wishlist_foot" v-show="isDelete"> |
|||
<view class="wishlist_foot_left"> |
|||
<image src="../../static/img/select2.png" mode=""></image> |
|||
<text>All</text> |
|||
</view> |
|||
<view class="wishlist_foot_right"> |
|||
<button @click="removeLike">DELETE</button> |
|||
</view> |
|||
</view> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" confirmText="Delete" title="Tips" content="Whether to delete all favorites?" |
|||
@confirm="removeLike(0)" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isDelete:false, |
|||
goodsList:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
getList(){ |
|||
let data={_action:'getfaviouritegoods',page_index:1,page_size:30} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.goodsList=res.data |
|||
} |
|||
}) |
|||
}, |
|||
// 添加收藏 |
|||
addLike(id){ |
|||
let data={_action:'setfaviouritegoods',goods_id:id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
this.changeImage(id,0) |
|||
} |
|||
}) |
|||
}, |
|||
// 取消收藏 |
|||
removeLike(id){ |
|||
let data={_action:'unsetfaviouritegoods',goods_id:id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.navigateBack() |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
page{ |
|||
|
|||
} |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,213 @@ |
|||
<template> |
|||
<view class="body"> |
|||
|
|||
<view class="search"> |
|||
<view class="status_bar"></view> |
|||
<view class="search1"> |
|||
<navigator url="/pages/index/search"> |
|||
<view class="navigation_seach"> |
|||
<image src="../../static/img/seach.png" mode=""></image> |
|||
<text>search</text> |
|||
</view> |
|||
</navigator> |
|||
<view class="navigation_title_right"> |
|||
<image src="../../static/img/like.png" mode=""></image> |
|||
<uni-badge :text="5" type="error" absolute="rightTop"> |
|||
<image src="../../static/img/shop_cart.png" mode=""></image> |
|||
</uni-badge> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
<view class="category"> |
|||
<view class="category_left"> |
|||
<view class="category_left_item" :class="categoryIndex==item.cat_id?'categoryActive':''" v-for="(item,index) in categoryList" :key="item.cat_id" |
|||
@click="changeCategory(item.cat_id)"> |
|||
{{item.cat_name}} |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="good_body"> |
|||
<view class="good_title">PICKS FOR YOU</view> |
|||
<view class="good_content" v-for="(item,index) in categoryList" :key="item.cat_id" v-show="categoryIndex==item.cat_id"> |
|||
<view class="good_item" v-for="(item1,index1) in item.subcategories" :key="item1.cat_id" @click="goPets(item1.cat_id)"> |
|||
<img :src="item1.first_goods_thumb" alt="" class="good_item_img"> |
|||
<text>{{item1.cat_name}}</text> |
|||
</view> |
|||
</view> |
|||
<!-- <view class="good_title">YOU MAY ALSO LIKE</view> |
|||
<view class="good_content"> |
|||
<view class="good_item" v-for="(item,index) in 5" :key="index"> |
|||
<view class="good_item_img"></view> |
|||
<text>Women Drese</text> |
|||
</view> |
|||
</view> --> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
categoryIndex:0, |
|||
categoryList:['CHOICE','WOMEN','MEN','KIDS','PETS','SWIMWEAR','LINGERUE&LOUNGEAR','DENIM&JEANS','ACTIVEWEAR','BEAUTY','SHOES'] |
|||
} |
|||
}, |
|||
methods:{ |
|||
changeCategory(i){ |
|||
this.categoryIndex=i |
|||
}, |
|||
goPets(id){ |
|||
// uni.navigateTo({ |
|||
// url:"productList?cat_id="+id+'&type=0' |
|||
// }) |
|||
uni.navigateTo({ |
|||
url:"pets?cat_id="+id+'&type=0' |
|||
}) |
|||
}, |
|||
getList(){ |
|||
let data={_action:'getcategorytree'} |
|||
defaultRequest(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.categoryList=res.data |
|||
this.categoryIndex=res.data[0].cat_id |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onShow() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss"> |
|||
|
|||
page{ |
|||
padding-top: 200rpx; |
|||
height: 100%; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.body{ |
|||
height: 100%; |
|||
} |
|||
.search{ |
|||
width: 100%; |
|||
background-color: white; |
|||
box-sizing: border-box; |
|||
padding: 33.33rpx 26.67rpx; |
|||
|
|||
position: fixed; |
|||
top: 0; |
|||
z-index: 99; |
|||
border-bottom: 1px solid #F5F6FA; |
|||
|
|||
.search1{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
|
|||
.navigation_seach{ |
|||
width: 546.67rpx; |
|||
background-color: #F5F6FA; |
|||
border-radius: 6.67rpx; |
|||
height: 66.67rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
color: #8F9094; |
|||
font-size: 26.67rpx; |
|||
padding-left: 22rpx; |
|||
box-sizing: border-box; |
|||
|
|||
image{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
margin-right: 22rpx; |
|||
} |
|||
} |
|||
.navigation_title_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 44rpx; |
|||
height: 44rpx; |
|||
} |
|||
>image:first-child{ |
|||
margin-right: 32.67rpx; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
} |
|||
.category{ |
|||
height: 100%; |
|||
display: flex; |
|||
|
|||
.category_left{ |
|||
height: 100%; |
|||
background-color: #F5F6FA; |
|||
width: 197.33rpx; |
|||
.category_left_item{ |
|||
width: 100%; |
|||
padding: 0 18rpx; |
|||
height: 96rpx; |
|||
font-size: 26.67rpx; |
|||
font-weight: 600; |
|||
box-sizing: border-box; |
|||
font-family: PingFang SC; |
|||
|
|||
display: flex; |
|||
align-items: center; |
|||
word-wrap: break-word; |
|||
word-break: break-all; |
|||
} |
|||
.categoryActive{ |
|||
background-color: black; |
|||
color: white; |
|||
} |
|||
} |
|||
.good_body{ |
|||
margin-left: 36rpx; |
|||
width: 552.67rpx; |
|||
// padding-top: 39.33rpx; |
|||
|
|||
.good_title{ |
|||
height: 96rpx; |
|||
line-height: 96rpx; |
|||
font-size: 28rpx; |
|||
font-weight: 600; |
|||
} |
|||
.good_content{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
|
|||
.good_item{ |
|||
font-size: 22.67rpx; |
|||
text-align: center; |
|||
margin-right: 25.33rpx; |
|||
margin-bottom: 51.33rpx; |
|||
|
|||
.good_item_img{ |
|||
display: block; |
|||
background-color: #999999; |
|||
width: 146.67rpx; |
|||
height: 146.67rpx; |
|||
margin-bottom: 22rpx; |
|||
|
|||
} |
|||
} |
|||
.good_item:nth-child(3n+3){ |
|||
margin-right: 0; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,225 @@ |
|||
<template> |
|||
<view style="background-color: #fff;"> |
|||
<view class="font fixed"> |
|||
<uni-section type="line" |
|||
style="margin-bottom: 3px;"> |
|||
<view class="box-bg"> |
|||
<uni-nav-bar title="Pets" border="false"> |
|||
<block slot="left" > |
|||
<!-- <view ><uni-icons type="back" size="30"></uni-icons></view> --> |
|||
<view class="icon-all" @click="goback()"><image class="imgsize"src='../../static/icon/left.png'/></view> |
|||
<view style="margin-left: 50rpx;" class="icon-all"><image class="imgsize"src='../../static/icon/search.png'/></view> |
|||
</block> |
|||
<block slot="right"> |
|||
<uni-badge class="uni-badge-left-margin" type="info"absolute="rightTop" :offset="[-22, -10]" :text="num" size="small"/> |
|||
<view class="icon-b"><image class="imgsize"src='../../static/icon/cart.png'></view> |
|||
</block> |
|||
</uni-nav-bar> |
|||
</view> |
|||
</uni-section> |
|||
|
|||
<!-- 分类 --> |
|||
<view class="classifity"> |
|||
<scroll-view scroll-x class="scroll_view"> |
|||
<view class="tab"> |
|||
<view class="tab_item" v-for ="(item,index) in list" :key ="index" @click="tabActive(index)"> |
|||
<view style="width: 100rpx;" :class="[index==tabNow?'select':'']">{{item.text}}</view> |
|||
<!-- <view><uni-icons :type="item.icon" :size="item.size"></uni-icons></view> --> |
|||
<view class="icon-a" :class="[index===3?'icon-b':'']"><image class="imgsize ":src="item.src"v-if="item.src!=''"/></view> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
</view> |
|||
</view> |
|||
<view class="fg"></view> |
|||
<view class="tar" v-for="(item,index) in pets" :key="index"> |
|||
<!-- 图片 --> |
|||
<view class="img"><image :src="item.goods_img" class="imgsize"/></view> |
|||
<!-- 文字 --> |
|||
<view class="flex"> |
|||
<view class="tar_text"> |
|||
{{ item.short_name }} |
|||
</view> |
|||
<view class="tar-text2">{{ item.goods_sn}}</view> |
|||
<view class="icon flex"> |
|||
<view style="margin: 10rpx;font-weight: bold; width: 120rpx;">US${{ item.shop_price }}</view> |
|||
|
|||
<!-- <view style="margin-left: 150rpx;"><uni-icons :type="heart" size="30" ></uni-icons></view> |
|||
<view style="margin-left: 20rpx;"><uni-icons type="cart" size="30"></uni-icons></view> --> |
|||
|
|||
<view style="margin-left: 160rpx;"class="icon-b"><image class="imgsize" src="../../static/icon/heart.png"/></view> |
|||
<view style="margin-left: 30rpx;"><uni-icons type="cart" size="30"></uni-icons></view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data(){ |
|||
return{ |
|||
list:[ |
|||
{icon:'',text:'Synthesis',src:''}, |
|||
{icon:'bottom',size:15,text:'Sales',src:'../../static/icon/back.png'}, |
|||
{icon:'top',size:15,text:'Prise',src:'../../static/icon/back.png'}, |
|||
{icon:'settings-filled',size:30,text:' | ',src:'../../static/icon/all.png'} |
|||
|
|||
], |
|||
tabNow:0, |
|||
heart:'heart-filled', |
|||
num:13, |
|||
query:{ |
|||
_action:'getgoods', |
|||
order_type:0, |
|||
page_index:1, |
|||
pagesize:10, |
|||
cat:'', |
|||
}, |
|||
pets:[] |
|||
} |
|||
|
|||
}, |
|||
onLoad(e) { |
|||
console.log(e,'数据') |
|||
this.query.cat = e.cat_id |
|||
console.log(this.query.cat,'jjjjj') |
|||
this.getpets() |
|||
}, |
|||
onPullDownRefresh() { |
|||
this.getpets() |
|||
setTimeout(function () { |
|||
uni.stopPullDownRefresh(); |
|||
}, 1000); |
|||
}, |
|||
methods:{ |
|||
tabActive(i){ |
|||
console.log(i) |
|||
this.tabNow = i |
|||
}, |
|||
goback(){ |
|||
console.log('ppppp') |
|||
uni.navigateBack({ |
|||
delta:1 |
|||
}) |
|||
}, |
|||
getpets(){ |
|||
defaultRequest(this.query).then( res =>{ |
|||
// console.log(res,'res') |
|||
this.pets = res.data |
|||
console.log(res.data,'res') |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
.flex{ |
|||
display: flex; |
|||
flex-direction: column; |
|||
} |
|||
.bg-white{ |
|||
background-color: #fff; |
|||
} |
|||
.font{ |
|||
height: 200rpx; |
|||
background-color: #fff; |
|||
padding: 60rpx 5rpx 0 5rpx ; |
|||
} |
|||
.fixed{ |
|||
position: fixed; |
|||
z-index: 99; |
|||
} |
|||
.icon-a{ |
|||
height: 18rpx; |
|||
width: 18rpx; |
|||
} |
|||
.icon-b{ |
|||
height: 40rpx; |
|||
width: 40rpx; |
|||
margin: 10rpx; |
|||
} |
|||
.icon-all{ |
|||
height: 30rpx; |
|||
width:30rpx ; |
|||
} |
|||
.imgsize{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
.scroll_view { |
|||
background-color: #fff; |
|||
white-space: nowrap; |
|||
} |
|||
|
|||
.tab { |
|||
display: flex; |
|||
text-align: center; |
|||
} |
|||
|
|||
.tab .tab_item { |
|||
height: 90rpx; |
|||
display: flex; |
|||
line-height: 90rpx; |
|||
margin:0 10rpx; |
|||
padding: 0 20rpx; |
|||
flex: 1; |
|||
} |
|||
.tab_item view:nth-child(1){ |
|||
/* margin-left: 10rpx; */ |
|||
text-align: center; |
|||
} |
|||
.fg{ |
|||
height: 200rpx; |
|||
background-color: #fff; |
|||
|
|||
} |
|||
.tar{ |
|||
height: 240rpx; |
|||
background-color: #fff; |
|||
padding: 18rpx 15rpx 5rpx 15rpx; |
|||
display: flex; |
|||
margin: 20rpx 0; |
|||
} |
|||
.img{ |
|||
height:200rpx ; |
|||
width:200rpx ; |
|||
margin: 20rpx 10rpx; |
|||
background-color: #ccc; |
|||
} |
|||
.tar_text{ |
|||
width: 60vw; |
|||
height: 70rpx; |
|||
padding: 6rpx; |
|||
margin: 10rpx 20rpx; |
|||
font-size: 28rpx; |
|||
overflow: hidden; |
|||
white-space: wrap; |
|||
text-overflow: ellipsis; |
|||
|
|||
|
|||
|
|||
} |
|||
.tar-text2{ |
|||
color:#B22234; |
|||
line-height: 50rpx; |
|||
text-align: center; |
|||
width: 200rpx; |
|||
background:#fcf0f1; |
|||
border-radius: 10rpx; |
|||
font-size: 20rpx; |
|||
margin: 5rpx 2rpx; |
|||
} |
|||
.icon{ |
|||
flex-direction: row; |
|||
/* justify-content: center; */ |
|||
align-items: center; |
|||
margin: 10rpx 10rpx; |
|||
} |
|||
.select{ |
|||
font-weight: 900; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,134 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar left-icon="left" :statusBar="true" title="Flash Sale" |
|||
color="#000000" rightIcon="info" @clickLeft="back" @clickRight="isDelete=!isDelete" :border="false"/> |
|||
|
|||
<view class="body"> |
|||
<view class="countDown"> |
|||
<text>Ends in</text> |
|||
<uni-countdown :showDay="false" :hour="23" :minute="0" :second="0" color="#FFFFFF" background-color="#1B1B1B" class="countDown_assembly" /> |
|||
</view> |
|||
<view class="tips"> |
|||
Chic selects commodities from time to time to carry |
|||
out special price activities. |
|||
</view> |
|||
<view class="tips1">The quantity of special price commodities is limited and will be sold out</view> |
|||
<view class="recommend"> |
|||
<view class="recommend_content"> |
|||
<view class="recommend_content_item" v-for="(item,index) in list " :key="index"> |
|||
<view class="recommend_content_item_image"> |
|||
<image :src="item.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="recommend_content_item_name">{{item.name}}</view> |
|||
<view class="recommend_item_operation"> |
|||
<view> |
|||
<view class="recommend_content_item_pric">US${{item.promote_price?item.promote_price:item.shop_price}}</view> |
|||
<view class="recommend_content_item_pric1">US${{item.shop_price}}</view> |
|||
</view> |
|||
<image src="../../static/img/add.png" mode=""></image> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
list:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
getList(){ |
|||
let data ={_action:'getseckillgoods',gid:'213'} |
|||
defaultRequest(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.list=res.data |
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.navigateBack() |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.body{ |
|||
border-top: 13.33rpx #F7F7F7 solid; |
|||
padding:0 26rpx; |
|||
padding-top: 34rpx; |
|||
} |
|||
.recommend{ |
|||
padding: 0; |
|||
|
|||
.recommend_item_operation{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
margin-top: 10rpx; |
|||
.recommend_content_item_pric{ |
|||
color: #B22234; |
|||
font-weight: 600; |
|||
font-size: 32rpx; |
|||
margin-top: 0; |
|||
} |
|||
.recommend_content_item_pric1{ |
|||
font-size: 24rpx; |
|||
color: #666666; |
|||
text-decoration: line-through; |
|||
} |
|||
image{ |
|||
width: 58.67rpx; |
|||
height: 58.67rpx; |
|||
} |
|||
} |
|||
} |
|||
.recommend_content_item_name{ |
|||
overflow : hidden; |
|||
text-overflow: ellipsis; |
|||
display: -webkit-box; |
|||
-webkit-line-clamp: 2; /* 限制在一个块元素显示的文本的行数 */ |
|||
-webkit-box-orient: vertical; /* 垂直排列 */ |
|||
word-break: break-all; /* 内容自动换行 */ |
|||
} |
|||
.countDown{ |
|||
display: flex; |
|||
align-items: center; |
|||
font-size: 41.33rpx; |
|||
justify-content: center; |
|||
margin-bottom: 34rpx; |
|||
|
|||
.countDown_assembly{ |
|||
margin-left: 12.67rpx; |
|||
} |
|||
|
|||
} |
|||
.tips{ |
|||
width: 572.67rpx; |
|||
margin: 0 auto; |
|||
font-size: 24rpx; |
|||
margin-bottom: 14rpx; |
|||
text-align: center; |
|||
} |
|||
.tips1{ |
|||
font-size: 20rpx; |
|||
color: #666666; |
|||
margin-bottom: 30rpx; |
|||
text-align: center; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,736 @@ |
|||
<template> |
|||
|
|||
<view class="body" > |
|||
|
|||
<!-- 头部导航栏 --> |
|||
<view class="navigation page_padding" > |
|||
<view class="status_bar"></view> |
|||
<view class="navigation_title" :class="isScrollShow?'isScrollShow':'' "> |
|||
<template v-if="!isScrollShow "> |
|||
<navigator url="/pages/account/message" class="order_info_item"> |
|||
<uni-badge :text="5" type="error" absolute="rightTop"> |
|||
<image src="../../static/img/msg.png" mode=""></image> |
|||
</uni-badge> |
|||
</navigator> |
|||
<!-- <text>Dope VIDEO</text> --> |
|||
<image src="/static/img/dope plus.png" mode="" class="index_logo"></image> |
|||
</template> |
|||
|
|||
<view class="navigation_title_right"> |
|||
<image src="../../static/img/like.png" mode=""></image> |
|||
<uni-badge :text="5" type="error" absolute="rightTop"> |
|||
<image src="../../static/img/shop_cart.png" mode=""></image> |
|||
</uni-badge> |
|||
</view> |
|||
</view> |
|||
<navigator url="/pages/index/search"> |
|||
<view class="navigation_seach" :class="isScrollShow?'isScrollShow1':'' "> |
|||
<image src="../../static/img/seach.png" mode=""></image> |
|||
<text>search</text> |
|||
</view> |
|||
</navigator> |
|||
<view class="navigation_scroll" :class="isScrollShow?'isScrollShow2':'' "> |
|||
<scroll-view class="scroll-view_H" scroll-x="true" :show-scrollbar="false"> |
|||
<view :class="scroll_active==index?'scroll_active':''" v-for="(item,index) in scrollList" @click="scrollChange(index)" :key="index">{{item.text}}</view> |
|||
</scroll-view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view v-for="(item,index) in indexDate.zones" :key="item.zone_id"> |
|||
|
|||
<!-- 轮播图 --> |
|||
<view class="uni-margin-wrap page_padding" v-if="item.zone_code=='BANNER' && item.zone_status=='NORMAL'"> |
|||
<swiper class="swiper" circular :indicator-dots="true" :autoplay="true" > |
|||
<swiper-item v-for="(item1,index1) in item.blocks" :key="item1.block_id"> |
|||
<view class="swiper-item " v-if="item1.block_status=='NORMAL'"> |
|||
<image :src="item1.block_pic" mode=""></image> |
|||
</view> |
|||
</swiper-item> |
|||
</swiper> |
|||
</view> |
|||
|
|||
<!-- 宫格 --> |
|||
<uni-swiper-dot :info="info" :current="current" field="content" mode="default" class="page_padding" |
|||
v-if="item.zone_code=='ICON' && item.zone_status=='NORMAL' && item.zone_code!=indexDate.zones[index-1].zone_code"> |
|||
<swiper class="grid_swiper" @change="gridSwiper"> |
|||
<swiper-item v-for="(item1,index1) in info" :key="item1.zone_id"> |
|||
<view class="grid_content"> |
|||
<view class="grid_item" v-for="(item2, index2) in item1.blocks" :key="item2.block_id"> |
|||
<template v-if="item2.block_status=='NORMAL'"> |
|||
<view class="grid_item_img"> |
|||
<image :src="item2.block_pic" mode=""></image> |
|||
</view> |
|||
<text>{{item2.block_title}}</text> |
|||
</template> |
|||
|
|||
</view> |
|||
</view> |
|||
</swiper-item> |
|||
</swiper> |
|||
</uni-swiper-dot> |
|||
|
|||
<!-- 打折 --> |
|||
<!-- class="discount page_padding" --> |
|||
<view class="ONEPIC" v-if="item.zone_code=='ONEPIC' && item.zone_status=='NORMAL'"> |
|||
<image :src="item.blocks[0].block_pic" mode="" ></image> |
|||
</view> |
|||
<view class="TWOPIC" v-if="item.zone_code=='TWOPIC' && item.zone_status=='NORMAL'"> |
|||
<image :src="item.blocks[0].block_pic" mode="" ></image> |
|||
</view> |
|||
<view class="THREEPIC" v-if="item.zone_code=='THREEPIC' && item.zone_status=='NORMAL'"> |
|||
<image :src="item.blocks[0].block_pic" mode="" ></image> |
|||
</view> |
|||
<view class="FOURPIC" v-if="item.zone_code=='FOURPIC' && item.zone_status=='NORMAL'"> |
|||
<image :src="item.blocks[0].block_pic" mode="" ></image> |
|||
</view> |
|||
<view class="FIVEPIC" v-if="item.zone_code=='FIVEPIC' && item.zone_status=='NORMAL'"> |
|||
<image :src="item.blocks[0].block_pic" mode="" ></image> |
|||
</view> |
|||
<view class="SIXPIC" v-if="item.zone_code=='SIXPIC' && item.zone_status=='NORMAL'"> |
|||
<image :src="item.blocks[0].block_pic" mode="" ></image> |
|||
</view> |
|||
|
|||
|
|||
|
|||
<!-- 标题 --> |
|||
<navigator url="/pages/index/flashSale" v-if="item.zone_code=='SPIKE1' && item.zone_status=='NORMAL'"> |
|||
<view class="index_title page_padding"> |
|||
<text>Flash Sale</text> |
|||
<view class="title_right"> |
|||
<uni-countdown :showDay="false" :hour="curEndTime |hours" :minute="curEndTime|minutes" :second="curEndTime|seconds" color="#FFFFFF" background-color="#1B1B1B" /> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</navigator> |
|||
|
|||
|
|||
<!-- SPIKE 1 --> |
|||
<scroll-view class="spike1 page_padding_left" scroll-x="true" :show-scrollbar="false" v-if="item.zone_code=='SPIKE1' && item.zone_status=='NORMAL'"> |
|||
<view class="spike1_item" v-for="(item1,index1) in item.blocks" :key="item1.block_id" @click="goPage"> |
|||
<view class="spike1_item_img"> |
|||
<image :src="item1.block_pic" mode=""></image> |
|||
</view> |
|||
<view class="spike1_item_bottom"> |
|||
<text>US${{item1.block_price}}</text> |
|||
<view class="spike1_item_text">US${{item1.block_title}}</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</scroll-view> |
|||
|
|||
<!-- 标题 --> |
|||
<view class="index_title page_padding" v-if="item.zone_code=='TITLE' && item.zone_status=='NORMAL'"> |
|||
<text>{{item.blocks[0].block_title}}</text> |
|||
<view class="title_right"> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
|
|||
<!-- HOT SELLS 1 --> |
|||
|
|||
<view class="hotSells1 page_padding" v-if="item.zone_code=='GOODSTWO1' || item.zone_code=='GOODSTHREE1'"> |
|||
<template v-if="item.zone_code=='GOODSTWO1' && item.zone_status=='NORMAL'"> |
|||
<view class="hotSells1_item" v-for="(item1,index1) in item.blocks" :key="item1.block_id" > |
|||
<view class="hotSells1_item_img"> |
|||
<image :src="item1.block_pic" mode=""></image> |
|||
</view> |
|||
<text>{{item1.block_title}}</text> |
|||
</view> |
|||
</template> |
|||
<template v-if="item.zone_code=='GOODSTHREE1' && item.zone_status=='NORMAL'"> |
|||
<view class="hotSells2_item" v-for="(item1,index1) in item.blocks" :key="item1.block_id"> |
|||
<view class="hotSells2_item_img"> |
|||
<image :src="item1.block_pic" mode=""></image> |
|||
</view> |
|||
<text>{{item1.block_title}}</text> |
|||
</view> |
|||
</template> |
|||
</view> |
|||
|
|||
<!-- 标题 --> |
|||
<!-- <view class="index_title page_padding"> |
|||
<text>Hot Selle</text> |
|||
<view class="title_right"> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> --> |
|||
|
|||
<!-- HOT SELLS 2 --> |
|||
<scroll-view class="spike1 page_padding_left" scroll-x="true" :show-scrollbar="false" v-if="item.zone_code=='HONLIST2' && item.zone_status=='NORMAL'"> |
|||
<view class="spike1_item" v-for="(item1,index1) in item.blocks" :key="item1.block_id"> |
|||
<view class="spike1_item_img"> |
|||
<image :src="item1.block_pic" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
|
|||
<!-- 标题 --> |
|||
<!-- <view class="index_title page_padding"> |
|||
<text>Hot Selle</text> |
|||
<view class="title_right"> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
</view> --> |
|||
|
|||
<!-- HOT SELLS 3 --> |
|||
<scroll-view class="spike1 page_padding_left" scroll-x="true" :show-scrollbar="false" v-if="item.zone_code=='HONLIST3' && item.zone_status=='NORMAL'"> |
|||
<view class="spike1_item" v-for="(item1,index1) in item.blocks" :key="item1.block_id"> |
|||
<view class="spike1_item_img"> |
|||
<image :src="item1.block_pic" mode=""></image> |
|||
</view> |
|||
<view class="spike1_item_bottom"> |
|||
<text>US${{item1.block_price}}</text> |
|||
<view class="spike1_item_text1">{{item1.block_title}}</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</scroll-view> |
|||
|
|||
<!-- GOODSTHREE 2 --> |
|||
<!-- <view class="goodsthree2"> |
|||
<view class="goodsthree2_item" v-for="(item,index) in 3" :key="index"></view> |
|||
</view> --> |
|||
|
|||
<!-- 轮播图 --> |
|||
<!-- <view class="uni-margin-wrap"> |
|||
<swiper class="swiper" circular :indicator-dots="true" :autoplay="true" > |
|||
<swiper-item> |
|||
<view class="swiper-item uni-bg-red">A</view> |
|||
</swiper-item> |
|||
<swiper-item> |
|||
<view class="swiper-item uni-bg-green">B</view> |
|||
</swiper-item> |
|||
<swiper-item> |
|||
<view class="swiper-item uni-bg-blue">C</view> |
|||
</swiper-item> |
|||
</swiper> |
|||
</view> --> |
|||
|
|||
<!-- SPIKE 1 --> |
|||
<!-- <scroll-view class="spike1 page_padding_left" scroll-x="true" :show-scrollbar="false"> |
|||
<view class="spike1_item" v-for="(item,index) in 8" :key="index"> |
|||
<view class="spike1_item_img"></view> |
|||
<view class="spike1_item_bottom1"> |
|||
<view class="spike1_item_text">Adidas Yeezy Boost 350 DazzlingBlue Black</view> |
|||
<text>US$314.00</text> |
|||
</view> |
|||
</view> |
|||
</scroll-view> --> |
|||
|
|||
<!-- 瀑布流标题 --> |
|||
<view class="index_title1" v-if="item.zone_code=='LIST1' && item.zone_status=='NORMAL'">PRODUCTS FRO YOU</view> |
|||
|
|||
<view class="waterfall" v-if="item.zone_code=='LIST1' && item.zone_status=='NORMAL'"> |
|||
<custom-waterfalls-flow :value="item.blocks" imageKey="block_pic"> |
|||
<template v-slot:default="item1"> |
|||
<view class="item"> |
|||
<view class="title">{{item1.title}}</view> |
|||
<view class="desc">{{item1.block_price}}</view> |
|||
</view> |
|||
</template> |
|||
</custom-waterfalls-flow> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isScrollShow:false, |
|||
scroll_active:0, |
|||
scrollList:[ |
|||
{text:'DOPE'},{text:'VIDEO'},{text:'MEN'},{text:'KIDS'},{text:'PETS'},{text:'MEN'},{text:'PETS'},{text:'MEN'}, |
|||
], |
|||
current:0, |
|||
list: [ |
|||
{ image: 'https://via.placeholder.com/200x500.png/ff0000', title: 'Adidas Yeezy Boost 350 DazzlingBlue Black', desc: 'US$314.00' }, |
|||
{ image: 'https://via.placeholder.com/200x200.png/2878ff', title: 'Adidas Yeezy Boost 350 DazzlingBlue Black', desc: 'US$314.00' } |
|||
], |
|||
indexDate:{}, |
|||
info:[], |
|||
banner:{} |
|||
} |
|||
}, |
|||
onLoad() { |
|||
this.getIndex() |
|||
console.info(this.curEndTime) |
|||
}, |
|||
computed:{ |
|||
//当天结束时间 |
|||
curEndTime(){ |
|||
const endtime = new Date(new Date().setHours(23,59,59,999)).getTime() |
|||
// 获取当前时间 |
|||
const nowtime=(new Date()).getTime(); |
|||
var date3 = nowtime - endtime; //时间差的毫秒数 |
|||
date3 = Math.abs(date3) |
|||
return date3; |
|||
} |
|||
}, |
|||
filters:{ |
|||
hours (timestamp){ |
|||
var leave1=timestamp%(24*3600*1000) //计算天数后剩余的毫秒数 |
|||
var hours=Math.floor(leave1/(3600*1000)) |
|||
return hours |
|||
}, |
|||
minutes(timestamp){ |
|||
var leave2=(timestamp%(24*3600*1000))%(3600*1000) //计算小时数后剩余的毫秒数 |
|||
var minutes=Math.floor(leave2/(60*1000)) |
|||
return minutes |
|||
}, |
|||
seconds(timestamp){ |
|||
var leave3=((timestamp%(24*3600*1000))%(3600*1000))%(60*1000) //计算分钟数后剩余的毫秒数 |
|||
var seconds=Math.round(leave3/1000) |
|||
return seconds |
|||
} |
|||
|
|||
}, |
|||
methods: { |
|||
// 获取首页数据配置 |
|||
getIndex(){ |
|||
let data={_action:'getpagedata',pagecode:'HOME'} |
|||
defaultRequest(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.indexDate=res.data |
|||
res.data.zones.map(item=>{ |
|||
if(item.zone_code=='ICON'){ |
|||
item.content='' |
|||
this.info.push(item) |
|||
} |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
goPage(){ |
|||
uni.navigateTo({ |
|||
url: '/pages/productDetails/index', |
|||
}); |
|||
}, |
|||
scrollChange(index){ |
|||
this.scroll_active=index |
|||
}, |
|||
gridSwiper(e){ |
|||
this.current = e.detail.current |
|||
} |
|||
}, |
|||
onPageScroll(res) { |
|||
if(res.scrollTop>40){ |
|||
this.isScrollShow=true |
|||
}else if(res.scrollTop<40){ |
|||
this.isScrollShow=false |
|||
} |
|||
}, |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
page{ |
|||
background-color: white; |
|||
// position: relative; |
|||
} |
|||
.ONEPIC{ |
|||
width: 100%; |
|||
height: auto; |
|||
image{ |
|||
// height: auto; |
|||
width: 100%; |
|||
} |
|||
} |
|||
.TWOPIC{ |
|||
width: 100%; |
|||
display: flex; |
|||
image{ |
|||
width: 50%; |
|||
} |
|||
} |
|||
.THREEPIC{ |
|||
width: 100%; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
image{ |
|||
width: 33%; |
|||
} |
|||
} |
|||
.FOURPIC{ |
|||
width: 100%; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
image{ |
|||
width: 25%; |
|||
} |
|||
} |
|||
.FIVEPIC{ |
|||
width: 100%; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
image{ |
|||
width: 20%; |
|||
} |
|||
} |
|||
.SIXPIC{ |
|||
width: 100%; |
|||
display: flex; |
|||
justify-content: space-between; |
|||
image{ |
|||
width: 16.6%; |
|||
} |
|||
} |
|||
.body{ |
|||
padding-top: 361.33rpx; |
|||
} |
|||
.index_logo{ |
|||
width: 270.33rpx !important; |
|||
height: 50rpx !important; |
|||
margin-left: 50rpx; |
|||
} |
|||
|
|||
.isScrollShow{ |
|||
float: right; |
|||
} |
|||
.isScrollShow1{ |
|||
float: left; |
|||
margin-top: 20rpx; |
|||
width: 80% !important; |
|||
} |
|||
.isScrollShow2{ |
|||
float: left; |
|||
} |
|||
.page_padding{ |
|||
padding: 0 26.67rpx; |
|||
box-sizing: border-box; |
|||
} |
|||
.page_padding_left{ |
|||
padding-left: 26.67rpx; |
|||
} |
|||
.navigation{ |
|||
/* display: flex; */ |
|||
position: fixed; |
|||
top: 0; |
|||
z-index: 99; |
|||
background: white; |
|||
width: 100%; |
|||
.navigation_title{ |
|||
display: flex; |
|||
padding: 30rpx 0; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
|
|||
image{ |
|||
width: 44rpx; |
|||
height: 44rpx; |
|||
} |
|||
text{ |
|||
font-family: Source Han Sans CN; |
|||
font-weight: 800; |
|||
font-style: italic; |
|||
font-size: 42.67rpx; |
|||
} |
|||
.navigation_title_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
>image:first-child{ |
|||
margin-right: 32.67rpx; |
|||
} |
|||
} |
|||
|
|||
} |
|||
.navigation_seach{ |
|||
width: 100%; |
|||
background-color: #F5F6FA; |
|||
border-radius: 6.67rpx; |
|||
height: 66.67rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
color: #8F9094; |
|||
font-size: 26.67rpx; |
|||
padding-left: 22rpx; |
|||
box-sizing: border-box; |
|||
|
|||
image{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
margin-right: 22rpx; |
|||
} |
|||
} |
|||
.navigation_scroll{ |
|||
padding-top: 28rpx; |
|||
padding-bottom: 37.33rpx; |
|||
padding-left: 40rpx; |
|||
.scroll-view_H{ |
|||
white-space: nowrap; |
|||
font-size: 26.67rpx; |
|||
color: #161616; |
|||
width: 100%; |
|||
// display: flex; |
|||
|
|||
::-webkit-scrollbar { |
|||
width: 0; |
|||
height: 0; |
|||
background-color: transparent; |
|||
} |
|||
|
|||
view{ |
|||
margin-left: 46.67rpx; |
|||
display: inline-block; |
|||
font-weight: 600; |
|||
padding: 28.67rpx 0; |
|||
} |
|||
view:first-child{ |
|||
margin-left: 0; |
|||
} |
|||
.scroll_active{ |
|||
font-size: 32rpx; |
|||
border-bottom: 2.67rpx solid #000000; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.uni-margin-wrap{ |
|||
width: 100%; |
|||
margin-bottom: 35.33rpx; |
|||
|
|||
.swiper { |
|||
height: 373.33rpx; |
|||
|
|||
.swiper-item { |
|||
display: block; |
|||
height: 373.33rpx; |
|||
line-height: 373.33rpx; |
|||
text-align: center; |
|||
color: white; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
.uni-bg-red{ |
|||
background-color: red; |
|||
} |
|||
.uni-bg-green{ |
|||
background-color: green; |
|||
} |
|||
.uni-bg-blue{ |
|||
background-color: blue; |
|||
} |
|||
} |
|||
} |
|||
.grid_swiper { |
|||
height: 380rpx; |
|||
|
|||
|
|||
.grid_content{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
flex-wrap: wrap; |
|||
padding: 0 28rpx; |
|||
|
|||
.grid_item{ |
|||
width: 97.33rpx; |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
color: #1B1B1B; |
|||
font-size: 24rpx; |
|||
margin-bottom: 53.33rpx; |
|||
margin-right: 84rpx; |
|||
font-weight: 500; |
|||
|
|||
.grid_item_img{ |
|||
width: 100%; |
|||
height: 97.33rpx; |
|||
margin-bottom: 6.67rpx; |
|||
background-color: #8F9094; |
|||
|
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
} |
|||
.grid_item:nth-child(n+4){ |
|||
margin-right: 0; |
|||
} |
|||
|
|||
} |
|||
} |
|||
.discount{ |
|||
width: 100%; |
|||
height: 239.33rpx; |
|||
margin-bottom: 72.67rpx; |
|||
} |
|||
|
|||
.index_title{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
align-items: center; |
|||
font-size: 32rpx; |
|||
color: #161616; |
|||
font-weight: bold; |
|||
margin-bottom: 40rpx; |
|||
|
|||
.title_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 22rpx; |
|||
height: 22rpx; |
|||
margin-left: 11.33rpx; |
|||
} |
|||
} |
|||
} |
|||
.spike1{ |
|||
white-space: nowrap; |
|||
width: 100%; |
|||
margin-bottom: 70.67rpx; |
|||
::-webkit-scrollbar { |
|||
width: 0; |
|||
height: 0; |
|||
background-color: transparent; |
|||
} |
|||
|
|||
.spike1_item{ |
|||
color: #191919; |
|||
font-size: 26.67rpx; |
|||
margin-right: 16.67rpx; |
|||
width: 200rpx; |
|||
display: inline-block; |
|||
font-weight: 500; |
|||
|
|||
.spike1_item_img{ |
|||
width: 200rpx; |
|||
height: 200rpx; |
|||
// background-color: #999999; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
.spike1_item_bottom{ |
|||
padding-left: 9.33rpx; |
|||
margin-top: 22.67rpx; |
|||
|
|||
.spike1_item_text{ |
|||
color: #9D9D9D; |
|||
font-size: 21.33rpx; |
|||
text-decoration: line-through; |
|||
} |
|||
.spike1_item_text1{ |
|||
color: #9D9D9D; |
|||
font-size: 21.33rpx; |
|||
} |
|||
} |
|||
.spike1_item_bottom1{ |
|||
padding-left: 9.33rpx; |
|||
margin-top: 19.33rpx; |
|||
font-weight: bold; |
|||
|
|||
.spike1_item_text{ |
|||
color: #000000; |
|||
font-size: 16rpx; |
|||
font-weight: 400; |
|||
margin-bottom: 20.67rpx; |
|||
white-space: break-spaces; |
|||
|
|||
} |
|||
} |
|||
|
|||
} |
|||
.spike1_item:last-child{ |
|||
margin-right: 0; |
|||
} |
|||
} |
|||
.hotSells1{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
flex-wrap: wrap; |
|||
color: #000000; |
|||
font-size: 28rpx; |
|||
font-weight: 400; |
|||
margin-bottom: 69.33rpx; |
|||
|
|||
.hotSells1_item{ |
|||
width: 340rpx; |
|||
display: flex; |
|||
flex-direction: column; |
|||
|
|||
.hotSells1_item_img{ |
|||
width: 100%; |
|||
height: 266.67rpx; |
|||
background-color: #999999; |
|||
margin-bottom: 23.33rpx; |
|||
} |
|||
} |
|||
.hotSells2_item{ |
|||
width: 224rpx; |
|||
display: flex; |
|||
flex-direction: column; |
|||
margin-top: 49.33rpx; |
|||
.hotSells2_item_img{ |
|||
width: 100%; |
|||
height: 224rpx; |
|||
background-color: #999999; |
|||
margin-bottom: 25.33rpx; |
|||
} |
|||
} |
|||
} |
|||
.goodsthree2{ |
|||
width: 100%; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
margin-bottom: 29.33rpx; |
|||
|
|||
.goodsthree2_item{ |
|||
width: 242.67rpx; |
|||
height: 204.67rpx; |
|||
background-color: #999999; |
|||
} |
|||
} |
|||
.index_title1{ |
|||
text-align: center; |
|||
position: relative; |
|||
font-size: 29.33rpx; |
|||
font-weight: bold; |
|||
margin-top: 116rpx; |
|||
padding-bottom: 52rpx; |
|||
&:before{ |
|||
content: ''; |
|||
background-color: #000000; |
|||
height: 4rpx; |
|||
width: 53.33rpx; |
|||
position: absolute; |
|||
bottom: 13.33rpx; |
|||
left: 50%; |
|||
margin-left: -26.67rpx; |
|||
} |
|||
} |
|||
.waterfall{ |
|||
background-color: #F8F7FB; |
|||
padding:0 25.33rpx; |
|||
box-sizing: border-box; |
|||
padding-top: 52.67rpx; |
|||
|
|||
.item{ |
|||
padding: 0 16.67rpx; |
|||
padding-bottom: 36.67rpx; |
|||
.title{ |
|||
font-size: 29.33rpx; |
|||
font-weight: 400; |
|||
margin-top: 24.67rpx; |
|||
margin-bottom: 32.67rpx; |
|||
|
|||
} |
|||
.desc{ |
|||
font-size: 32rpx; |
|||
font-weight: 600; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,92 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar left-icon="left" :statusBar="true" title="Pick up centre" color="#000000" @clickLeft="back" :border="false"> |
|||
<block slot="right"> |
|||
<view class="head_coupons"> |
|||
<image src="../../static/img/coupons.png" mode=""></image> |
|||
</view> |
|||
|
|||
</block> |
|||
</uni-nav-bar> |
|||
<view class="body"> |
|||
|
|||
<view class="coupons_item" v-for="(item,index) in list " :key="index"> |
|||
<view class="coupons_item_left"> |
|||
<view class="item_left_prcie">${{item.type_money}}</view> |
|||
<text class="item_left_span">Min.spend</text> |
|||
<view>${{item.min_goods_amount}}</view> |
|||
</view> |
|||
<view class="coupons_item_right"> |
|||
<view class="coupons_right_info"> |
|||
<view class="coupons_right_info_title">{{item.type_name}}</view> |
|||
<text>The tide zone is available</text> |
|||
<view class="coupons_right_info_time">{{item.send_start_date}} - {{item.send_end_date}}</view> |
|||
</view> |
|||
<button v-if="item.is_obtained==0" @click="obtainbonus(item.type_id)">Receive</button> |
|||
<image src="../../static/img/coupons_bg.png" mode="" class="coupons_item_right_bg" v-if="item.is_obtained==1"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest,defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
list:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
obtainbonus(id){ |
|||
let data={_action:'obtainbonus',type_id:id} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:res.message |
|||
}) |
|||
} |
|||
this.getList() |
|||
}) |
|||
}, |
|||
getList(){ |
|||
let data={_action:'getbonuslist'} |
|||
defaultRequest(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.list=res.data |
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.navigateBack() |
|||
}, |
|||
}, |
|||
onLoad() { |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.body{ |
|||
border-top: 14.67rpx #F7F7F7 solid; |
|||
padding:0 26rpx; |
|||
padding-top: 31.33rpx; |
|||
} |
|||
.head_coupons{ |
|||
width: 34.67rpx; |
|||
height: 34.67rpx; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,168 @@ |
|||
<template> |
|||
<view> |
|||
<view class="status_bar"></view> |
|||
<view class="search_title"> |
|||
<navigator data="1" open-type="navigateBack"> |
|||
<image src="../../static/img/left.png" mode=""></image> |
|||
</navigator> |
|||
<uni-search-bar @confirm="search" v-model="searchValue" class="search_title_input" cancelText="Cancel" placeholder="search"></uni-search-bar> |
|||
</view> |
|||
<view class="history"> |
|||
<view class="history_title"> |
|||
<text>Recently Searched</text> |
|||
<image src="../../static/img/delete.png" mode=""></image> |
|||
</view> |
|||
<view class="history_lable"> |
|||
<view class="lable_item">Gold Necklaces</view> |
|||
<view class="lable_item">Push Up Swimsuit</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="history"> |
|||
<view class="history_title"> |
|||
<text>Figured you’d want it</text> |
|||
</view> |
|||
<view class="history_lable"> |
|||
<view class="lable_item">Gold Necklaces</view> |
|||
<view class="lable_item">Push Up Swimsuit</view> |
|||
</view> |
|||
<scroll-view class="spike1 page_padding_left" scroll-x="true" :show-scrollbar="false"> |
|||
<view class="spike1_item" v-for="(item,index) in 8" :key="index"> |
|||
<view class="spike1_item_img"></view> |
|||
<view class="spike1_item_bottom"> |
|||
<text>US$314.00</text> |
|||
<view class="spike1_item_text">US$12.5</view> |
|||
</view> |
|||
</view> |
|||
</scroll-view> |
|||
</view> |
|||
|
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
searchValue:'' |
|||
} |
|||
}, |
|||
methods:{ |
|||
search(){ |
|||
if(this.searchValue=='')return |
|||
uni.navigateTo({ |
|||
url:'../category/productList?keyword='+this.searchValue+'&type=1' |
|||
}) |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.search_title{ |
|||
width: 100%; |
|||
// height: 135.33rpx; |
|||
padding: 0 26.67rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 36rpx; |
|||
height: 36rpx; |
|||
} |
|||
.search_title_input{ |
|||
width: 85%; |
|||
} |
|||
} |
|||
.history{ |
|||
margin-top: 62.67rpx; |
|||
padding: 0 26.67rpx; |
|||
margin-bottom: 85.33rpx; |
|||
|
|||
.history_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 28rpx; |
|||
font-weight: 500; |
|||
margin-bottom: 26.67rpx; |
|||
image{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
} |
|||
} |
|||
.history_lable{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
|
|||
.lable_item{ |
|||
padding: 13.33rpx 16rpx; |
|||
background-color: #F5F6FA; |
|||
color: #565656; |
|||
font-size: 24rpx; |
|||
margin-right: 24.67rpx; |
|||
border-radius: 5px; |
|||
} |
|||
.lable_item:last-child{ |
|||
margin-right:0 |
|||
} |
|||
} |
|||
|
|||
.spike1{ |
|||
white-space: nowrap; |
|||
width: 100%; |
|||
margin-bottom: 70.67rpx; |
|||
margin-top: 32rpx; |
|||
::-webkit-scrollbar { |
|||
width: 0; |
|||
height: 0; |
|||
background-color: transparent; |
|||
} |
|||
|
|||
.spike1_item{ |
|||
color: #191919; |
|||
font-size: 26.67rpx; |
|||
margin-right: 16.67rpx; |
|||
width: 200rpx; |
|||
display: inline-block; |
|||
font-weight: 500; |
|||
|
|||
.spike1_item_img{ |
|||
width: 200rpx; |
|||
height: 200rpx; |
|||
|
|||
background-color: #999999; |
|||
} |
|||
.spike1_item_bottom{ |
|||
padding-left: 9.33rpx; |
|||
margin-top: 22.67rpx; |
|||
|
|||
.spike1_item_text{ |
|||
color: #9D9D9D; |
|||
font-size: 21.33rpx; |
|||
text-decoration: line-through; |
|||
} |
|||
} |
|||
.spike1_item_bottom1{ |
|||
padding-left: 9.33rpx; |
|||
margin-top: 19.33rpx; |
|||
font-weight: bold; |
|||
|
|||
.spike1_item_text{ |
|||
color: #000000; |
|||
font-size: 16rpx; |
|||
font-weight: 400; |
|||
margin-bottom: 20.67rpx; |
|||
white-space: break-spaces; |
|||
|
|||
} |
|||
} |
|||
|
|||
} |
|||
.spike1_item:last-child{ |
|||
margin-right: 0; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,73 @@ |
|||
<template> |
|||
<view> |
|||
<view class="login"> |
|||
<input type="text" class="login_input" placeholder="New password" v-model="query.password1" @input="verificationLogin"> |
|||
<input type="text" class="login_input" placeholder="Confirm password" v-model="query.password2" @input="verificationLogin"> |
|||
<button class="login_submit" :disabled="isLogin" @click="submit">SUBMIT</button> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
query:{ |
|||
_action:'resetuserpwd', |
|||
username:'', |
|||
password1:'', |
|||
password2:'', |
|||
resetcode:'' |
|||
}, |
|||
isLogin:true, |
|||
user_info:{} |
|||
} |
|||
}, |
|||
methods:{ |
|||
submit(){ |
|||
defaultRequest(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
setTimeout(function() { |
|||
uni.navigateBack({ |
|||
delta:2 |
|||
}) |
|||
},2000) |
|||
|
|||
} |
|||
}) |
|||
}, |
|||
// 验证是否填写登录信息 |
|||
verificationLogin(){ |
|||
if(this.query.password1&& this.query.password2){ |
|||
this.isLogin=false |
|||
}else{ |
|||
this.isLogin=true |
|||
} |
|||
}, |
|||
}, |
|||
onLoad(e) { |
|||
console.info(e) |
|||
this.query.username=e.username |
|||
this.query.resetcode=e.resetcode |
|||
this.user_info=uni.getStorageSync('user_info') |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss"> |
|||
page{ |
|||
border-top: 13.33rpx #F7F7F7 solid; |
|||
padding-top: 48rpx; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
|
|||
.login_submit{ |
|||
font-size: 26.67rpx; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,261 @@ |
|||
<template> |
|||
<view class="login_body"> |
|||
<view class="status_bar"></view> |
|||
<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem" styleType="text" activeColor="#010101" class="select"></uni-segmented-control> |
|||
<view class="body"> |
|||
<view class="login" v-show="current==0"> |
|||
<input type="text" class="login_input" placeholder="eamil address" v-model="loginDate.username" @input="verificationLogin"> |
|||
<input type="text" class="login_input" placeholder="password" v-model="loginDate.password" @input="verificationLogin"> |
|||
<view class="tips" v-show="loginErr">{{errMsg}}</view> |
|||
<view class="forgot" @click="forgotPwd">Forgot your Password?</view> |
|||
<button class="login_submit" :disabled="isLogin" @click="login()">SIGN IN</button> |
|||
<view class="agreement"> |
|||
<image src="../../static/img/select2.png" mode="" class="agreement_image" @click="loginSelect=!loginSelect,loginErr=false" v-show="!loginSelect"></image> |
|||
<image src="../../static/img/select1.png" mode="" class="agreement_image" @click="loginSelect=!loginSelect" v-show="loginSelect"></image> |
|||
<view class="agreement_right"> |
|||
by continuong, you agree to be <text class="text"> terms of use </text> and <text class="text"> privacy policy</text>. |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
<view class="login" v-show="current==1"> |
|||
<input type="text" class="login_input" placeholder="name" @input="verificationReg" v-model="regDate.username"> |
|||
<input type="text" class="login_input" placeholder="eamil address" @input="verificationReg" v-model="regDate.email"> |
|||
<input type="text" class="login_input" placeholder="password" @input="verificationReg" v-model="regDate.password1"> |
|||
<view class="tips" v-show="regErr">{{errMsg}}</view> |
|||
<button class="login_submit" :disabled="isReg" @click="Reg()">REGISTER</button> |
|||
<view class="agreement"> |
|||
<image src="../../static/img/select2.png" mode="" class="agreement_image" @click="regSelect=!regSelect" v-show="!regSelect"></image> |
|||
<image src="../../static/img/select1.png" mode="" class="agreement_image" @click="regSelect=!regSelect" v-show="regSelect"></image> |
|||
<view class="agreement_right"> |
|||
by continuong, you agree to be <text class="text"> terms of use </text> and <text class="text"> privacy policy</text>. |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="mode"> |
|||
<view class="mode_title">or continue with</view> |
|||
<view class="mode_content"> |
|||
<image src="/static/img/facebook.png" class="mode_content_image"></image> |
|||
<image src="/static/img/gugei.png" class="mode_content_image"></image> |
|||
<image src="/static/img/apple.png" class="mode_content_image"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" confirmText="Activation" title="Tips" content="Please activate the mailbox first" |
|||
@confirm="dialogConfirm" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest1,defaultRequest} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
items: ['SIGN IN', 'REGISTER'], |
|||
current: 0, |
|||
loginDate:{ |
|||
username:'', |
|||
password:'', |
|||
_action:'loginbyun' |
|||
}, |
|||
regDate:{ |
|||
username:'', |
|||
email:'', |
|||
password1:'', |
|||
password2:'', |
|||
_action:'registerun' |
|||
}, |
|||
// 是否填写完成信息 |
|||
isLogin:true, |
|||
isReg:true, |
|||
// 是否勾选 |
|||
regSelect:false, |
|||
loginSelect:false, |
|||
// 是否显示错误信息 |
|||
loginErr:false, |
|||
regErr:false, |
|||
errMsg:'The email address or password you enterde is incorrect.', |
|||
query:{ |
|||
_action:'sendmessagesforvalidation', |
|||
username:'', |
|||
} |
|||
} |
|||
}, |
|||
methods:{ |
|||
forgotPwd(){ |
|||
if(this.loginDate.username==''){ |
|||
uni.showToast({ |
|||
title:'Please fill in the user email first', |
|||
icon:'none', |
|||
}) |
|||
return |
|||
} |
|||
uni.navigateTo({ |
|||
url:'./verifyEmail?email='+this.loginDate.username |
|||
}) |
|||
}, |
|||
onClickItem(e) { |
|||
if (this.current != e.currentIndex) { |
|||
this.current = e.currentIndex; |
|||
} |
|||
}, |
|||
//获取页面配置 |
|||
configuration(){ |
|||
let data={_action:'getpagedata',pagecode:'PAGE-LOGIN'} |
|||
defaultRequest1(data).then(res=>{ |
|||
console.info(res) |
|||
}) |
|||
}, |
|||
// 登录 |
|||
login(){ |
|||
if(!this.loginSelect){ |
|||
this.errMsg='Please read and tick the terms of service and privacy policy first.' |
|||
this.loginErr=true |
|||
return |
|||
} |
|||
defaultRequest1(this.loginDate).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.loginErr=false |
|||
res.data.isLogin=true |
|||
uni.setStorageSync('user_info',res.data) |
|||
uni.switchTab({ |
|||
url:'../index/index' |
|||
}) |
|||
}else{ |
|||
if(res.data){ |
|||
this.$refs.alertDialog.open() |
|||
this.query.username=this.loginDate.username |
|||
}else{ |
|||
this.loginErr=true |
|||
this.errMsg=res.message |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
// 验证邮件 |
|||
dialogConfirm(){ |
|||
defaultRequest(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none', |
|||
}) |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
// 注册 |
|||
Reg(){ |
|||
if(!this.regSelect){ |
|||
uni.showToast({ |
|||
title:'请先同意并勾选用户协议', |
|||
icon:'none', |
|||
}) |
|||
return |
|||
} |
|||
this.regDate.password2=this.regDate.password1 |
|||
defaultRequest1(this.regDate).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.regErr=false |
|||
uni.showToast({ |
|||
title:'注册成功,请进行邮箱验证!', |
|||
icon:'success', |
|||
}) |
|||
}else{ |
|||
this.regErr=true |
|||
this.errMsg=res.message |
|||
} |
|||
}) |
|||
}, |
|||
// 验证是否填写登录信息 |
|||
verificationLogin(){ |
|||
if(this.loginDate.username && this.loginDate.password){ |
|||
this.isLogin=false |
|||
}else{ |
|||
this.isLogin=true |
|||
} |
|||
}, |
|||
// 验证是否填写注册信息 |
|||
verificationReg(){ |
|||
if(this.regDate.username && this.regDate.password1 && this.regDate.email){ |
|||
this.isReg=false |
|||
}else{ |
|||
this.isReg=true |
|||
} |
|||
} |
|||
|
|||
}, |
|||
onLoad() { |
|||
this.configuration() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
.login_body{ |
|||
padding-top: 145.33rpx; |
|||
} |
|||
.select{ |
|||
margin-bottom: 80rpx; |
|||
font-size: 33.33rpx; |
|||
font-weight: bold; |
|||
|
|||
} |
|||
.mode{ |
|||
position: fixed; |
|||
bottom: 138.67rpx; |
|||
width: 100%; |
|||
left: 0; |
|||
|
|||
.mode_title{ |
|||
font-size: 26.67rpx; |
|||
color: #666666; |
|||
position: relative; |
|||
text-align: center; |
|||
width: 100%; |
|||
|
|||
&:before{ |
|||
content: ""; |
|||
height: 1px; |
|||
width: 89.33rpx; |
|||
background-color: #BCBCBC; |
|||
position: absolute; |
|||
left: 20%; |
|||
top: 50%; |
|||
} |
|||
&:after{ |
|||
content: ""; |
|||
height: 1px; |
|||
width: 89.33rpx; |
|||
background-color: #BCBCBC; |
|||
position: absolute; |
|||
right: 20%; |
|||
top: 50%; |
|||
} |
|||
} |
|||
.mode_content{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
margin-top: 50.67rpx; |
|||
|
|||
.mode_content_image{ |
|||
width: 54.67rpx; |
|||
height: 54.67rpx; |
|||
margin-right: 49.33rpx; |
|||
&:last-child{ |
|||
margin-right: 0; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.agreement_right{ |
|||
width: 582rpx; |
|||
} |
|||
</style> |
|||
@ -0,0 +1,159 @@ |
|||
<template> |
|||
<view> |
|||
<view class="login"> |
|||
<view class="verify_tips"> |
|||
To verify your email,we've send a verification code to {{username}} |
|||
</view> |
|||
<input type="text" class="login_input" placeholder="Enter code" v-model="resetcode" @input="verificationLogin"> |
|||
<view class="tips" v-show="isErr">The code is incorrect.</view> |
|||
<button class="login_submit" :disabled="isLogin" @click="goPage">CONTINUE</button> |
|||
<view class="verify_text" @click="sendresetcode">Resend code</view> |
|||
</view> |
|||
<view class="mask" v-show="isShow" @click="isShow=false"></view> |
|||
<view class="verify_popup" v-show="isShow"> |
|||
<view class="verify_popup_close"> |
|||
<image src="../../static/img/close.png" mode=""></image> |
|||
</view> |
|||
<view class="verify_popup_title">Send!</view> |
|||
<view class="verify_popup_msg">we send a new verification code to {{query.username}}</view> |
|||
<view class="verify_popup_btn"> |
|||
<button @click="isShow=false">OKAY</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest,defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isShow:false, |
|||
isErr:false, |
|||
isLogin:true, |
|||
username:'', |
|||
type:'', |
|||
resetcode:'', |
|||
query:{ |
|||
_action:'sendresetcode', |
|||
username:'', |
|||
// password:'', |
|||
} |
|||
} |
|||
}, |
|||
methods:{ |
|||
goPage(){ |
|||
console.info(this.username) |
|||
uni.navigateTo({ |
|||
url:'changePwd?resetcode='+this.resetcode+'&username='+this.username |
|||
}) |
|||
}, |
|||
sendresetcode(){ |
|||
defaultRequest(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
title:res.message, |
|||
icon:'none' |
|||
}) |
|||
this.isShow=true |
|||
} |
|||
}) |
|||
}, |
|||
// 验证是否填写登录信息 |
|||
verificationLogin(){ |
|||
if(this.resetcode){ |
|||
this.isLogin=false |
|||
}else{ |
|||
this.isLogin=true |
|||
} |
|||
}, |
|||
}, |
|||
onLoad(e) { |
|||
console.info(e) |
|||
this.type=e.type |
|||
if(e.type!=0){ |
|||
// this.query.password=e.password |
|||
this.query.username=e.email |
|||
}else{ |
|||
|
|||
} |
|||
this.username=e.email |
|||
this.sendresetcode() |
|||
} |
|||
} |
|||
</script> |
|||
<style lang="scss"> |
|||
page{ |
|||
border-top: 13.33rpx #F7F7F7 solid; |
|||
padding-top: 49.33rpx; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.verify_tips{ |
|||
font-size: 28rpx; |
|||
font-weight: bold; |
|||
margin-bottom: 52rpx; |
|||
} |
|||
.tips{ |
|||
margin: 44rpx 0; |
|||
} |
|||
.login_submit{ |
|||
margin-bottom: 33.33rpx; |
|||
} |
|||
.verify_text{ |
|||
font-size: 24rpx; |
|||
text-align: center; |
|||
font-weight: bold; |
|||
} |
|||
.verify_popup{ |
|||
width: 540rpx; |
|||
height: 366.67rpx; |
|||
position: fixed; |
|||
left: 50%; |
|||
margin-left: -270rpx; |
|||
top: 50%; |
|||
margin-top: -190rpx; |
|||
background-color: white; |
|||
border-radius: 20rpx; |
|||
z-index: 999; |
|||
box-sizing: border-box; |
|||
padding:15rpx 22rpx; |
|||
|
|||
.verify_popup_close{ |
|||
text-align: right; |
|||
|
|||
image{ |
|||
width: 40rpx; |
|||
height: 40rpx; |
|||
} |
|||
} |
|||
.verify_popup_title{ |
|||
font-size: 40rpx; |
|||
font-weight: 600; |
|||
text-align: center; |
|||
margin-bottom: 40rpx; |
|||
} |
|||
.verify_popup_msg{ |
|||
font-size: 26.67rpx; |
|||
font-weight: 400; |
|||
margin-bottom: 40rpx; |
|||
text-align: center; |
|||
} |
|||
.verify_popup_btn{ |
|||
text-align: center; |
|||
|
|||
button{ |
|||
width: 321.33rpx; |
|||
height: 56rpx; |
|||
border-radius: 28rpx; |
|||
background-color: black; |
|||
color: white; |
|||
border: none; |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
line-height: 56rpx; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,540 @@ |
|||
<template> |
|||
<view> |
|||
<view class="address" @click="goAddress"> |
|||
<view class="address_left"> |
|||
<view class="address_title"> |
|||
<image src="../../static/img/address.png" mode=""></image> |
|||
<view class="address_title_name">{{address.consignee}}</view> |
|||
<text>{{address.mobile}}</text> |
|||
</view> |
|||
<view class="address_content"> |
|||
{{address.sign_building}} |
|||
{{address.country_name}}{{address.province_name}}{{address.city_name}}{{address.address}}{{address.zipcode}} |
|||
</view> |
|||
</view> |
|||
<image src="../../static/img/right.png" class="address_more"></image> |
|||
<image src="../../static/img/address_xian.png" class="address_xian" mode=""></image> |
|||
</view> |
|||
|
|||
<view class="order_info" @click="openMore(0)"> |
|||
<view class="info_title"> |
|||
<text>Items in cart</text> |
|||
<view class="info_title_right"> |
|||
<text>{{goods_list.length}} ltems</text> |
|||
<image src="../../static/img/right.png" class="address_more"></image> |
|||
</view> |
|||
</view> |
|||
<view class="info_image"> |
|||
<image class="info_image_item" :src="item.goods_thumb" v-for="(item,index) in goods_list" :key="index"/> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="method" v-if="shipping_list"> |
|||
<view class="method_title">Shipping Method</view> |
|||
|
|||
<view class="method_item" v-for="(item,index) in shipping_list " :key="index"> |
|||
<view class="method_item_image" @click="cartselectshipping(item.shipping_id)"> |
|||
<image src="../../static/img/select1.png" style="width: 30rpx;height: 30rpx;" v-if="order.shipping_id==item.shipping_id"></image> |
|||
<image src="../../static/img/select2.png" style="width: 30rpx;height: 30rpx;"v-else ></image> |
|||
</view> |
|||
|
|||
<view class="method_item_right"> |
|||
<view class="item_price"> |
|||
<text>{{item.shipping_name}}:</text> |
|||
<text class="item_price_span">US${{item.shipping_fee}}</text> |
|||
</view> |
|||
<view class="item_time"> |
|||
<text class="item_time_span">{{item.shipping_desc}} </text> |
|||
<!-- <text> 15/05/2022-04/05/2022</text> --> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="discount"> |
|||
<view class="discount_item" @click="openMore(1)"> |
|||
<text>Coupons</text> |
|||
<view class="discount_item_right"> |
|||
<text v-show="isCoupons">-US$12.5</text> |
|||
<image src="../../static/img/right.png" mode="" class="address_more"></image> |
|||
</view> |
|||
</view> |
|||
<view class="discount_item" @click="openMore(3)"> |
|||
<view class="discount_item_left"> |
|||
<text>Points</text> |
|||
<text class="discount_item_left_span">({{orderDate.your_integral || 0}})</text> |
|||
</view> |
|||
<view class="discount_item_right"> |
|||
<text v-show="isPoints">-US$2.5</text> |
|||
<image src="../../static/img/right.png" mode="" class="address_more"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="settlement"> |
|||
<view class="settlement_item"> |
|||
<text>Subtotal:</text> |
|||
<text class="settlement_item_right">US${{total.goods_price}}</text> |
|||
</view> |
|||
<view class="settlement_item"> |
|||
<text>Shipping fee:</text> |
|||
<text class="settlement_item_right">US${{total.shipping_fee}}</text> |
|||
</view> |
|||
<view class="settlement_item"> |
|||
<text>Discount :</text> |
|||
<text class="settlement_item_right1">-US${{total.discount || 0}}</text> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="total"> |
|||
<text>Total: US${{total.amount}}</text> |
|||
<button @click="openMore(2)">PLACE ORDER</button> |
|||
</view> |
|||
|
|||
<view class="mask" v-show="isShow" @click="isShow=false"></view> |
|||
<view class="order_popup" v-show="isShow"> |
|||
<view class="order_popup_title"> |
|||
<text> |
|||
{{popup_index==0?'Commodity information':popup_index==1?'Coupons':popup_index==2?'Payment Method':'Points'}}<text v-show="popup_index==3">(total:<text class="order_popup_title_span" >{{orderDate.your_integral || 0}}</text>)</text> |
|||
</text> |
|||
<image src="../../static/img/close1.png" mode="" @click="isShow=false"></image> |
|||
</view> |
|||
|
|||
<view class="order_popup_commodity" v-show="popup_index==0"> |
|||
|
|||
<view class="good_info" v-for="(item,index) in goods_list " :key="index"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item.goods_thumb" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>x{{item.goods_number}}</text> |
|||
</view> |
|||
<view class="info_price">US${{item.goods_price}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class="order_popup_coupons" v-show="popup_index==1"> |
|||
<view class="coupons_item" v-for="(item,index) in 3 " :key="index"> |
|||
<view class="coupons_item_left"> |
|||
<view class="item_left_prcie">$20.00</view> |
|||
<text class="item_left_span">Min.spend</text> |
|||
<view>$200.00</view> |
|||
</view> |
|||
<view class="coupons_item_right"> |
|||
<view class="coupons_right_info"> |
|||
<view class="coupons_right_info_title">All-purpose</view> |
|||
<text>The tide zone is available</text> |
|||
<view class="coupons_right_info_time">2022.09.23 10:37 - 2022.12.23 10:37</view> |
|||
</view> |
|||
<button>Use Now</button> |
|||
<image src="../../static/img/select3.png" mode="" class="coupons_item_right_select"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="order_popup_pay" v-show="popup_index==2"> |
|||
<view class="pay_item" @click="selectPay(0)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==0"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/pay_pal.png" mode=""></image> |
|||
<text>Pay Pal</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(1)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==1"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/card.png" mode=""></image> |
|||
<text>Credit/Debit Card</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(2)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==2"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/GPay.png" mode=""></image> |
|||
<text>Google Pay</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(3)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==3"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/APay.png" mode=""></image> |
|||
<text>Apple pay</text> |
|||
</view> |
|||
</view> |
|||
<!-- <navigator url="/pages/order/paySuccess"> --> |
|||
<button @click="submitorder">PAY NOW</button> |
|||
<!-- </navigator> --> |
|||
</view> |
|||
|
|||
<view class="order_popup_points" v-show="popup_index==3"> |
|||
<view class="points_item"> |
|||
<image src="../../static/img/select2.png" mode=""></image> |
|||
<text>Use points</text> |
|||
</view> |
|||
<view class="points_item"> |
|||
<image src="../../static/img/select1.png" mode=""></image> |
|||
<text>Do not use points</text> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
<!-- <pay :payShow="" :orderId=""></pay> --> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2,defaultRequest3} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isShow:false, |
|||
popup_index:'', |
|||
isCoupons:false, |
|||
isPoints:false, |
|||
query:{ |
|||
_action:'cartcheckout', |
|||
is_new:0, |
|||
direct_shopping:0, |
|||
consignee:'' |
|||
}, |
|||
orderDate:{}, |
|||
address:{}, |
|||
goods_list:[], |
|||
shipping_list:[], |
|||
bonus_list:[], |
|||
total:{}, |
|||
order:{}, |
|||
// 支付方式: 0、支付宝 1、银行卡、信用卡 2、谷歌支付 4、苹果支付 |
|||
pay_index:0 |
|||
} |
|||
}, |
|||
methods:{ |
|||
|
|||
// 获取调用支付信息数据 |
|||
getPayDate(id,will_get_integral){ |
|||
let data={_action:'payorder',order_id:id,order_type:'GOODSBUY',payment_method:'alipay.native'} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
//订单对象,从服务器获取 |
|||
if(res.data.need_pay_amount==0) return |
|||
uni.requestPayment({ |
|||
provider: 'alipay', |
|||
orderInfo: res.data.prepay_data.order_info, //支付宝订单数据 |
|||
success: function (res) { |
|||
console.log('success:' + JSON.stringify(res)); |
|||
uni.redirectTo({ |
|||
url: 'paySuccess?type=0&order_id='+id+'&will_get_integral='+will_get_integral |
|||
}); |
|||
}, |
|||
fail: function (err) { |
|||
console.log('fail:' + JSON.stringify(err)); |
|||
uni.redirectTo({ |
|||
url: 'paySuccess?type=1&order_id='+id+'&will_get_integral='+will_get_integral |
|||
}); |
|||
} |
|||
}); |
|||
} |
|||
}) |
|||
|
|||
}, |
|||
// 选择支付方式 |
|||
selectPay(index){ |
|||
this.pay_index=index |
|||
}, |
|||
goAddress(){ |
|||
uni.navigateTo({ |
|||
url:'../account/address?type=1' |
|||
}) |
|||
}, |
|||
// 提交订单 |
|||
submitorder(){ |
|||
let data={ |
|||
_action:'submitorder', |
|||
consignee:this.address, |
|||
postscript:'', |
|||
bonus:this.order.bonus, |
|||
surplus:this.order.surplus, |
|||
shipping_id:this.order.shipping_id, |
|||
directshopping:0, |
|||
} |
|||
defaultRequest3(data,'consignee').then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.getPayDate(res.data.order.order_id,res.data.will_get_integral) |
|||
} |
|||
}) |
|||
}, |
|||
// 变更配送方式 |
|||
cartselectshipping(id){ |
|||
let data={_action:'cartselectshipping',shipping_id:id,consignee:this.address} |
|||
defaultRequest3(data,'consignee').then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.total=res.data.total |
|||
this.order=res.data.order |
|||
} |
|||
}) |
|||
}, |
|||
getList(){ |
|||
defaultRequest3(this.query,'consignee').then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.orderDate=res.data |
|||
this.address=res.data.consignee |
|||
this.goods_list=res.data.goods_list |
|||
this.shipping_list=res.data.shipping_list |
|||
if(res.data.bonus_list){ |
|||
this.bonus_list=res.data.bonus_list |
|||
} |
|||
this.total=res.data.total |
|||
this.order=res.data.order |
|||
} |
|||
}) |
|||
}, |
|||
openMore(i){ |
|||
this.popup_index=i |
|||
if(i==1){ |
|||
if(this.bonus_list.length==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'No coupon available' |
|||
}) |
|||
return |
|||
} |
|||
if(this.orderDate.allow_use_bonus==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Coupon cannot be used for this product' |
|||
}) |
|||
return |
|||
} |
|||
}else if(i==3){ |
|||
if(this.orderDate.allow_use_integral==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Points cannot be used for this product' |
|||
}) |
|||
return |
|||
} |
|||
} |
|||
this.isShow=true |
|||
} |
|||
}, |
|||
onLoad(e) { |
|||
this.query=JSON.parse(e.query) |
|||
this.getList() |
|||
}, |
|||
onShow() { |
|||
uni.$once('query' ,(query)=>{ |
|||
console.info(query) |
|||
if(query.type=='address'){ |
|||
this.query.consignee=query.consignee |
|||
this.query.is_new=0 |
|||
this.getList() |
|||
} |
|||
}); |
|||
}, |
|||
filters:{ |
|||
goodsAttr(e){ |
|||
return e.replace(/\s\n/g,';'); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
page{ |
|||
border-top:14.67rpx #F6F5FA solid ; |
|||
padding-bottom: 140rpx; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
@import "@/common/scss/order.scss"; |
|||
|
|||
|
|||
|
|||
.order_info{ |
|||
padding-left: 26.67rpx; |
|||
padding-right: 22.67rpx; |
|||
padding-top: 50.67rpx; |
|||
padding-bottom: 42.67rpx; |
|||
border-bottom:14.67rpx #F6F5FA solid ; |
|||
.info_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-weight: bold; |
|||
font-size: 26.67rpx; |
|||
|
|||
.info_title_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
color: #666666; |
|||
font-size: 24rpx; |
|||
|
|||
image{ |
|||
margin-left: 33.33rpx; |
|||
} |
|||
} |
|||
} |
|||
.info_image{ |
|||
display: flex; |
|||
margin-top: 26.67rpx; |
|||
.info_image_item{ |
|||
width: 133.33rpx; |
|||
height: 133.33rpx; |
|||
margin-right: 12rpx; |
|||
background-color: #999999; |
|||
} |
|||
} |
|||
} |
|||
.method{ |
|||
border-bottom:14.67rpx #F6F5FA solid ; |
|||
padding-top: 50rpx; |
|||
|
|||
.method_title{ |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
padding-left: 25.33rpx; |
|||
} |
|||
.method_item{ |
|||
padding:41.33rpx 0 ; |
|||
border-bottom: 1px #E2E2E2 solid; |
|||
padding-left: 42.67rpx; |
|||
padding-right: 29.33rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
&:last-child{ |
|||
border-bottom: none; |
|||
} |
|||
.method_item_image{ |
|||
width: 30rpx; |
|||
height: 30rpx; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
} |
|||
|
|||
.method_item_right{ |
|||
margin-left: 30.67rpx; |
|||
.item_price{ |
|||
font-size: 28rpx; |
|||
margin-bottom: 14rpx; |
|||
|
|||
.item_price_span{ |
|||
color: #B22234; |
|||
} |
|||
} |
|||
.item_time{ |
|||
font-size: 25.33rpx; |
|||
font-weight: 400; |
|||
.item_time_span{ |
|||
color: #555555; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.discount{ |
|||
border-bottom:14.67rpx #F6F5FA solid ; |
|||
padding-left: 26rpx; |
|||
padding-right: 22.67rpx; |
|||
padding-top: 42rpx; |
|||
padding-bottom: 45.33rpx; |
|||
|
|||
.discount_item{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 28rpx; |
|||
margin-bottom: 42rpx; |
|||
&:last-child{ |
|||
margin-bottom: 0; |
|||
} |
|||
|
|||
.discount_item_left{ |
|||
.discount_item_left_span{ |
|||
color: #666666; |
|||
} |
|||
} |
|||
.discount_item_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
color: #B22234; |
|||
font-weight: bold; |
|||
|
|||
image{ |
|||
margin-left: 14rpx; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.settlement{ |
|||
border-bottom:14.67rpx #F6F5FA solid ; |
|||
padding: 44rpx 26rpx; |
|||
|
|||
.settlement_item{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 28rpx; |
|||
margin-bottom: 44rpx; |
|||
&:last-child{ |
|||
margin-bottom: 0; |
|||
} |
|||
.settlement_item_right{ |
|||
color: #3C3B6E; |
|||
font-weight: bold; |
|||
} |
|||
.settlement_item_right1{ |
|||
color: #B22234; |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
} |
|||
.total{ |
|||
padding: 30.67rpx 0; |
|||
padding-left: 26rpx; |
|||
padding-right: 19.33rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
width: 100%; |
|||
position: fixed; |
|||
bottom: 0; |
|||
left: 0; |
|||
background-color: white; |
|||
z-index: 99; |
|||
box-sizing: border-box; |
|||
font-size: 36rpx; |
|||
font-weight: 600; |
|||
|
|||
button{ |
|||
font-size: 26.67rpx; |
|||
color: white; |
|||
height: 73.33rpx; |
|||
line-height: 73.33rpx; |
|||
border-radius: 0; |
|||
border: none; |
|||
background-color: black; |
|||
margin: 0; |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,393 @@ |
|||
<template> |
|||
<view class="body"> |
|||
<view class="details_title"> |
|||
<view class="shipped" v-if="details_index==0"> |
|||
<view class="shipped_left"> |
|||
<image src="../../static/img/order_shipped.png" mode=""></image> |
|||
</view> |
|||
<view> |
|||
<text class="shipped_right_text">Ready for shipment</text> |
|||
<view>The buyer has paid,Waiting for the merchant to deliver</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="cancelled" v-if="details_index==1"> |
|||
<view class="cancelled_left"> |
|||
<image src="../../static/img/close2.png" mode=""></image> |
|||
<view class="cancelled_left_info"> |
|||
<text class="shipped_right_text">Deal’s off</text> |
|||
<view>The transaction has been closed, looking forward to your re-selection</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class="cancelled completed" v-if="details_index==2"> |
|||
<view class="cancelled_left"> |
|||
<image src="../../static/img/completed.png" mode=""></image> |
|||
<view class="cancelled_left_info"> |
|||
<text class="shipped_right_text">Signed for</text> |
|||
<view>2022-04-27 21:15:55</view> |
|||
</view> |
|||
</view> |
|||
<view class="cancelled_right"> |
|||
<image src="../../static/img/right2.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="cancelled toPaid" v-if="details_index==3"> |
|||
<view class="cancelled_left"> |
|||
<view > |
|||
<text class="shipped_right_text">Waiting for payment</text> |
|||
<view>The timeout order will be closed automatically</view> |
|||
</view> |
|||
</view> |
|||
<view class="cancelled_right"> |
|||
<text class="shipped_right_text">23:59:58</text> |
|||
<view>T-minus payment</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="cancelled transit" @click="goLogistics" v-if="details_index==4"> |
|||
<view class="cancelled_left" > |
|||
<image src="../../static/img/transit.png" mode=""></image> |
|||
<view class="cancelled_left_info"> |
|||
<view class="shipped_right_text">【New York】Has arrived statesHas arrived states</view> |
|||
<view>2022-04-27 21:15:55</view> |
|||
</view> |
|||
</view> |
|||
<view class="cancelled_right"> |
|||
<image src="../../static/img/right2.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
|
|||
|
|||
</view> |
|||
<view class="address"> |
|||
<view class="address_left"> |
|||
<view class="address_title"> |
|||
<image src="../../static/img/address.png" mode=""></image> |
|||
<view class="address_title_name">{{goodsDate.consignee}}</view> |
|||
<text>{{goodsDate.mobile}}</text> |
|||
</view> |
|||
<view class="address_content"> |
|||
<text>{{goodsDate.sign_building}}</text> |
|||
<view >{{goodsDate.address_detail}}</view> |
|||
</view> |
|||
</view> |
|||
<image src="../../static/img/right.png" class="address_more"></image> |
|||
<image src="../../static/img/address_xian.png" class="address_xian" mode=""></image> |
|||
</view> |
|||
|
|||
<view class="order_popup_commodity"> |
|||
<view class="good_info" v-for="(item,index) in goods_list " :key="index"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" > |
|||
<image :src="item.goods_thumb" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>x{{item.goods_number}}</text> |
|||
</view> |
|||
<view class="info_price"> |
|||
<text>US${{item.subtotal}}</text> |
|||
<button v-if="details_index!=3 && details_index!=1">RREFUND</button> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class="summary"> |
|||
<view class="summary_title">Order summary</view> |
|||
<view class="summary_item"> |
|||
<view> |
|||
Subtotal |
|||
<text :class="details_index==4?'summary_item_text1':'summary_item_text'">(Tax included)</text> |
|||
</view> |
|||
<view class="summary_item_right">US${{goodsDate.goods_amount}}</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Shipping</view> |
|||
<view class="summary_item_right">US${{goodsDate.shipping_fee}}</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Coupon</view> |
|||
<view class="summary_item_right1">-US${{goodsDate.discount}}</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Order total</view> |
|||
<view>US${{goodsDate.order_amount}}</view> |
|||
</view> |
|||
<view class="summary_tips" v-if="details_index==3"> |
|||
<image src="../../static/img/gantan1.png" mode=""></image> |
|||
<text>Reward 10 points</text> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="summary"> |
|||
<view class="summary_title">Order information</view> |
|||
<view class="summary_item"> |
|||
<view>Order id</view> |
|||
<view class="summary_item_right"> |
|||
<text>{{goodsDate.order_sn}}</text> |
|||
<button>copy</button> |
|||
</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Shipping</view> |
|||
<view class="summary_item_right">{{goodsDate.shipping_name}}</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Order Time</view> |
|||
<view class="summary_item_right">{{goodsDate.formated_add_time}}</view> |
|||
</view> |
|||
<view class="summary_item" v-if="details_index!=3 && goodsDate.formated_pay_time"> |
|||
<view>Payment time</view> |
|||
<view class="summary_item_right">{{goodsDate.formated_pay_time}}</view> |
|||
</view> |
|||
<view class="summary_item" v-if="details_index==4"> |
|||
<view>Delivery time</view> |
|||
<view class="summary_item_right">{{goodsDate.formated_shipping_time}}</view> |
|||
</view> |
|||
<!-- 完成时间 --> |
|||
<view class="summary_item" v-if="details_index==2"> |
|||
<view>Completion time</view> |
|||
<view class="summary_item_right"></view> |
|||
</view> |
|||
<!-- 取消时间 --> |
|||
<view class="summary_item" v-if="details_index==1"> |
|||
<view>Cancel time</view> |
|||
<view class="summary_item_right"></view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class="details_footer" v-if="details_index!=0"> |
|||
<button class="white" v-if="details_index==2 || details_index==4" @click="goLogistics">LOGISTICS</button> |
|||
<button class="white" v-if="details_index==1 || details_index==2" @click.stop="openTips(1)">DELETE ORDER</button> |
|||
<button class="black" v-if="details_index==2 && goodsDate.comment_status_code==0" @click="goComment()">COMMENT</button> |
|||
|
|||
<button class="white" v-if="details_index==3 " @click.stop="openTips(0)">CANCEL ORDER</button> |
|||
<button class="black" v-if="details_index==3" @click="isPay=true">PAY NOW</button> |
|||
|
|||
<button class="black" v-if="details_index==4" @click.stop="openTips(2)">CONFIRM RECEIPT</button> |
|||
</view> |
|||
|
|||
<!-- 支付 --> |
|||
<view class="mask" v-show="isPay" @click="isPay=false"></view> |
|||
<view class="order_popup" v-show="isPay"> |
|||
<view class="order_popup_title"> |
|||
<text> |
|||
Payment Method |
|||
</text> |
|||
<image src="../../static/img/close1.png" mode="" @click="isPay=false"></image> |
|||
</view> |
|||
<view class="order_popup_pay" > |
|||
<view class="pay_item" @click="selectPay(0)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==0"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/pay_pal.png" mode=""></image> |
|||
<text>Pay Pal</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(1)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==1"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/card.png" mode=""></image> |
|||
<text>Credit/Debit Card</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(2)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==2"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/GPay.png" mode=""></image> |
|||
<text>Google Pay</text> |
|||
</view> |
|||
</view> |
|||
<view class="pay_item" @click="selectPay(3)"> |
|||
<image src="../../static/img/select1.png" mode="" class="pay_item_select" v-if="pay_index==3"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="pay_item_select" v-else></image> |
|||
<view class="pay_item_right"> |
|||
<image src="../../static/img/APay.png" mode=""></image> |
|||
<text>Apple pay</text> |
|||
</view> |
|||
</view> |
|||
<button @click="getPayDate">PAY NOW</button> |
|||
</view> |
|||
</view> |
|||
<!-- 删除、取消弹框 --> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" :confirmText="tipsBut" title="Tips" :content="tipsInfo" @confirm="dialogConfirm" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
|
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
// 0、待发货 1、已取消 2、已完成 3、待支付 4、运输中 |
|||
details_index:4, |
|||
query:{ |
|||
_action:'getorder', |
|||
order_id:'', |
|||
order_sn:'' |
|||
}, |
|||
goodsDate:{}, |
|||
goods_list:[], |
|||
isPay:false, |
|||
payQuery:{ |
|||
_action:'payorder', |
|||
order_id:'', |
|||
order_type:'GOODSBUY', |
|||
payment_method:'alipay.native' |
|||
}, |
|||
pay_index:0, |
|||
logisticsinfo:{}, |
|||
// 弹出提示框的状态 0:取消订单 1、删除订单 2、确认收货 |
|||
tipsType:0, |
|||
tipsInfo:'', |
|||
tipsBut:'', |
|||
cancelQuery:{ |
|||
_action:'cancelorder', |
|||
order_id:'' |
|||
}, |
|||
} |
|||
}, |
|||
methods:{ |
|||
// 跳转评论页面 |
|||
goComment(){ |
|||
let data=this.goodsDate |
|||
data.order_goods=this.goods_list |
|||
uni.navigateTo({ |
|||
url:'../productDetails/review?data='+JSON.stringify(data) |
|||
}) |
|||
}, |
|||
// 淡出提示 |
|||
openTips(type){ |
|||
this.tipsType=type |
|||
if(type==0){ |
|||
this.tipsInfo='Are you sure you want to cancel this order? This order will be regarded as invalid after cancellation' |
|||
this.tipsBut='CancelOrder' |
|||
this.cancelQuery._action='cancelorder' |
|||
}else if(type==1){ |
|||
this.tipsInfo='Are you sure you want to delete this order?' |
|||
this.tipsBut='DeleteOrder' |
|||
this.cancelQuery._action='deleteorder' |
|||
}else if(type==2){ |
|||
this.tipsInfo='Are you sure you have received the products?' |
|||
this.tipsBut='Confirm' |
|||
this.cancelQuery._action='affirmorder' |
|||
} |
|||
this.$refs.alertDialog.open() |
|||
|
|||
}, |
|||
// 提示框点击确操作 取消订单、删除订单 |
|||
dialogConfirm(){ |
|||
defaultRequest2(this.cancelQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
goLogistics(){ |
|||
uni.navigateTo({ |
|||
url:'./logisticsDetails?order_id='+this.goodsDate.order_id |
|||
}) |
|||
}, |
|||
// 选择支付方式 |
|||
selectPay(index){ |
|||
this.pay_index=index |
|||
}, |
|||
// 获取调用支付信息数据 |
|||
getPayDate(){ |
|||
defaultRequest2(this.payQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
//订单对象,从服务器获取 |
|||
if(res.data.need_pay_amount==0) return |
|||
uni.requestPayment({ |
|||
provider: 'alipay', |
|||
orderInfo: res.data.prepay_data.order_info, //支付宝订单数据 |
|||
success: function (res) { |
|||
console.log('success:' + JSON.stringify(res)); |
|||
uni.redirectTo({ |
|||
url: 'paySuccess?order_id='+this.payQuery.order_id |
|||
}); |
|||
}, |
|||
fail: function (err) { |
|||
console.log('fail:' + JSON.stringify(err)); |
|||
uni.showToast({ |
|||
title:'Payment failed', |
|||
icon:'none' |
|||
}) |
|||
} |
|||
}); |
|||
} |
|||
}) |
|||
}, |
|||
payNow(id){ |
|||
this.payQuery.order_id=id |
|||
this.isPay=true |
|||
}, |
|||
getDate(){ |
|||
defaultRequest2(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.goodsDate=res.data |
|||
this.goods_list=res.goods_list |
|||
if(this.details_index==4){ |
|||
this.getLogistics() |
|||
} |
|||
} |
|||
}) |
|||
}, |
|||
getLogistics(){ |
|||
let data ={_action:'getlogisticsinfo',order_id:this.goodsDate.order_id,order_sn:''} |
|||
defaultRequest2(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.logisticsinfo=res.data[0] |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onLoad(e){ |
|||
console.info(e) |
|||
this.details_index=e.details_index |
|||
this.query.order_id=e.id |
|||
this.cancelQuery.order_id=e.id |
|||
|
|||
this.getDate() |
|||
}, |
|||
filters:{ |
|||
goodsAttr(e){ |
|||
return e.replace(/\s\n/g,';'); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
@import "@/common/scss/order.scss"; |
|||
page{ |
|||
|
|||
} |
|||
.body{ |
|||
padding-bottom: 130rpx; |
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,102 @@ |
|||
<template> |
|||
<view> |
|||
<view class="logistics_info"> |
|||
<view class="logistics_info_image"> |
|||
<image :src="list.logo" mode=""></image> |
|||
</view> |
|||
<view class="logistics_info_right"> |
|||
<view class="info_right_title">{{list.isreceived==1?'Signed for':'In Transit'}}</view> |
|||
<text>{{list.expname}}</text> |
|||
<view class="info_right_num"> |
|||
<text>Order number : {{list.mailno}}</text> |
|||
<view class="copy">Copy</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="logistics_details"> |
|||
<view class="logistics_step " v-for="(item,index) in list.records" :key="index" :class="index==0?'step_active':''"> |
|||
<text>{{item.context}}</text> |
|||
<view class="logistics_step_time">{{item.time}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
active: 0, |
|||
query:{ |
|||
_action:'getlogisticsinfo', |
|||
order_id:'', |
|||
order_sn:'' |
|||
}, |
|||
list:[] |
|||
} |
|||
}, |
|||
methods:{ |
|||
getList(){ |
|||
defaultRequest2(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.list=res.data[0] |
|||
} |
|||
}) |
|||
} |
|||
}, |
|||
onLoad(e) { |
|||
this.query.order_id=e.order_id |
|||
this.getList() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style lang="scss" scoped> |
|||
@import "@/common/scss/order.scss"; |
|||
.logistics_info{ |
|||
border-top: 14.67rpx #F6F5FA solid; |
|||
padding: 32rpx 0; |
|||
padding-left: 29.33rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
.logistics_info_image{ |
|||
width: 133.33rpx; |
|||
height: 133.33rpx; |
|||
background-color: #999999; |
|||
|
|||
} |
|||
.logistics_info_right{ |
|||
margin-left: 33.33rpx; |
|||
font-size: 28rpx; |
|||
font-weight: 400; |
|||
color: #333333; |
|||
|
|||
.info_right_title{ |
|||
color: #DE3139; |
|||
font-size: 29.33rpx; |
|||
font-weight: bold; |
|||
margin-bottom: 10.33rpx; |
|||
} |
|||
.info_right_num{ |
|||
display: flex; |
|||
align-items: center; |
|||
margin-top: 9.67rpx; |
|||
.copy{ |
|||
height: 41.33rpx; |
|||
line-height: 41.33rpx; |
|||
text-align: center; |
|||
background-color: #F6F5FA; |
|||
font-size: 24rpx; |
|||
border-radius: 20.67rpx; |
|||
margin-left: 26.67rpx; |
|||
padding: 0 18.67rpx ; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
|
|||
</style> |
|||
@ -0,0 +1,169 @@ |
|||
<template> |
|||
<view> |
|||
<view class="success"> |
|||
<image src="../../static/img/success.png" mode="" v-if="type==0"></image> |
|||
<image src="../../static/img/fail.png" mode="" v-else></image> |
|||
<text class="success_title">{{type==0?'Payment is successful':'Payment failed'}}</text> |
|||
<view > |
|||
This order will be rewarded with |
|||
<text class="success_span">{{will_get_integral || 0}} points</text> |
|||
after receipt. |
|||
</view> |
|||
<view class="success_button"> |
|||
<button class="details" @click="goPage">Order details</button> |
|||
<button class="shop" @click="goCategory">Continue shopping</button> |
|||
</view> |
|||
</view> |
|||
<view class="recommend"> |
|||
<view class="recommend_title" >RECOMMEND</view> |
|||
<view class="recommend_content"> |
|||
<view class="recommend_content_item" v-for="(item,index) in catList " :key="index"> |
|||
<view class="recommend_content_item_image"> |
|||
<image :src="item.thumb" mode=""></image> |
|||
</view> |
|||
<view class="recommend_content_item_image_name">{{item.short_name}}</view> |
|||
<view class="recommend_content_item_pric">US${{item.is_promote==0? item.shop_price :item.promote_price}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest4} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
// 是否支付成功 0成功 1失败 |
|||
type:0, |
|||
id:'', |
|||
will_get_integral:0, |
|||
// 获取该分类的其他商品的请求参数 |
|||
catQuery:{ |
|||
_action:'getgoods', |
|||
page_index:1, |
|||
page_size:10 |
|||
}, |
|||
catList:[], |
|||
isReachBottom:true, |
|||
} |
|||
}, |
|||
methods:{ |
|||
// 获取的其他商品 |
|||
getCatList(type){ |
|||
defaultRequest4(this.catQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
if(res.data){ |
|||
if(type==0){ |
|||
this.catList=res.data |
|||
}else{ |
|||
this.catList=this.catList.concat(res.data) |
|||
} |
|||
}else{ |
|||
this.isReachBottom=false |
|||
uni.showToast({ |
|||
title: 'No more data yet', |
|||
icon:'none' |
|||
}) |
|||
this.catQuery.page_index-- |
|||
} |
|||
} |
|||
uni.hideNavigationBarLoading(); |
|||
}) |
|||
}, |
|||
goPage(){ |
|||
let details_index |
|||
if(this.type==0){ |
|||
details_index=0 |
|||
}else{ |
|||
details_index=3 |
|||
} |
|||
uni.redirectTo({ |
|||
url: './details?details_index='+details_index+'&'+'id='+this.id |
|||
}); |
|||
}, |
|||
goCategory(){ |
|||
uni.switchTab({ |
|||
url:'../category/index' |
|||
}) |
|||
} |
|||
}, |
|||
onLoad(e) { |
|||
this.id=e.order_id |
|||
this.will_get_integral=e.will_get_integral || 0 |
|||
this.type=e.type |
|||
this.getCatList(0) |
|||
}, |
|||
// 上拉加载 |
|||
onReachBottom(){ |
|||
if(!this.isReachBottom)return |
|||
this.catQuery.page_index++ |
|||
this.getCatList(1) |
|||
}, |
|||
onPullDownRefresh(){ |
|||
uni.stopPullDownRefresh() |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
page{ |
|||
border-top: 14.67rpx #F7F7F7 solid; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
|
|||
.success{ |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
padding-top: 72rpx; |
|||
font-size: 24rpx; |
|||
color: #555555; |
|||
font-weight: 400; |
|||
flex-direction: column; |
|||
border-bottom: 14.67rpx #F7F7F7 solid; |
|||
padding-bottom: 81.33rpx; |
|||
image{ |
|||
width: 160rpx; |
|||
height: 160rpx; |
|||
margin-bottom: 46.67rpx; |
|||
} |
|||
.success_title{ |
|||
font-size: 32rpx; |
|||
color: black; |
|||
font-weight: 500; |
|||
margin-bottom: 13.33rpx; |
|||
} |
|||
.success_span{ |
|||
color: #B22234; |
|||
display: inline-block; |
|||
margin: 0 5rpx; |
|||
} |
|||
.success_button{ |
|||
display: flex; |
|||
margin-top: 70.67rpx; |
|||
align-items: center; |
|||
justify-content: center; |
|||
|
|||
button{ |
|||
height: 63.33rpx; |
|||
font-size: 24rpx; |
|||
margin: 0; |
|||
font-weight: 500; |
|||
} |
|||
.details{ |
|||
background-color: white; |
|||
border: 1px solid #CBCBCB; |
|||
color: black; |
|||
} |
|||
.shop{ |
|||
color: white; |
|||
background-color: black; |
|||
margin-left: 48rpx; |
|||
} |
|||
} |
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,251 @@ |
|||
<template> |
|||
<view> |
|||
<view class="order_popup_commodity"> |
|||
<view class="good_info" v-for="(item,index) in 1 " :key="index"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" v-for="(item,index) in 1" :key="index"></view> |
|||
<view class="left_info"> |
|||
<view class="info_name">Adidas Yeezy Boost 350 V2 DazzlingBlue Black GY7164 Men's</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>Multicolor;41</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>x1</text> |
|||
</view> |
|||
<view class="info_price"> |
|||
<text>US$314.00</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class="goods"> |
|||
<view class="goods_title">Refunded goods</view> |
|||
<view class="goods_content"> |
|||
<view class="goods_item"> |
|||
<image src="../../static/img/refund.png" mode=""></image> |
|||
<text>Refund only</text> |
|||
<view class="goods_item_text">I didn't receive the goods</view> |
|||
</view> |
|||
<view class="goods_item"> |
|||
<image src="../../static/img/refund1.png" mode=""></image> |
|||
<text>Return&refund</text> |
|||
<view class="goods_item_text">I have received the goods</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="refund_price"> |
|||
<text>Refund amountï¼</text> |
|||
<text class="refund_price_text">US$6.5</text> |
|||
</view> |
|||
<view class="refund_reason"> |
|||
<view class="reason_item"> |
|||
<view class="reason_item_left"> |
|||
<text>Refund reason </text> |
|||
<text class="reason_item_left_text">Please select 1 refund reason</text> |
|||
</view> |
|||
<image src="/static/img/right1.png" mode=""></image> |
|||
|
|||
</view> |
|||
|
|||
<view class="reason_item1"> |
|||
<view class="">Notes on application</view> |
|||
<textarea placeholder="Please supplement the refund information"></textarea> |
|||
<view class="reason_upload"> |
|||
<view class="reason_upload_item"> |
|||
<image src="/static/img/camera.png" class="upload_item_camera" mode=""></image> |
|||
<view>Upload pictures</view> |
|||
</view> |
|||
|
|||
<view class="reason_upload_item reason_upload_item1"> |
|||
<image src="/static/img/logo.png" class="upload_item_image" mode=""></image> |
|||
</view> |
|||
|
|||
</view> |
|||
<view class="reason_upload_tips">Up to last 5 pictures</view> |
|||
|
|||
<navigator url="/pages/order/refundDetails"> |
|||
<button class="refund_submit">SUBMIT</button> |
|||
</navigator> |
|||
</view> |
|||
|
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
orderDate:{} |
|||
} |
|||
}, |
|||
methods:{ |
|||
|
|||
}, |
|||
onLoad(e) { |
|||
this.orderDate=JSON.parse(e.data) |
|||
console.info(this.orderDate) |
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
page{ |
|||
border-top: 14.67rpx #F6F5FA solid; |
|||
} |
|||
</style> |
|||
|
|||
<style lang="scss" scoped> |
|||
@import "@/common/scss/order.scss"; |
|||
.order_popup_commodity{ |
|||
border-bottom: 14.67rpx solid #F6F5FA; |
|||
} |
|||
.goods{ |
|||
padding: 34.67rpx 27.33rpx; |
|||
border-bottom: 14.67rpx solid #F6F5FA; |
|||
.goods_title{ |
|||
font-size: 28.67rpx; |
|||
font-weight: bold; |
|||
margin-bottom: 34.67rpx; |
|||
} |
|||
.goods_content{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
|
|||
.goods_item{ |
|||
width: 336.67rpx; |
|||
height: 169.33rpx; |
|||
display: flex; |
|||
flex-direction: column; |
|||
justify-content: center; |
|||
align-items: center; |
|||
font-size: 32rpx; |
|||
border: 1px solid #D3D3D3; |
|||
border-radius: 16rpx; |
|||
image{ |
|||
width: 40rpx; |
|||
height: 40rpx; |
|||
margin-bottom: 16.67rpx; |
|||
} |
|||
|
|||
.goods_item_text{ |
|||
margin-top: 8rpx; |
|||
font-size: 20rpx; |
|||
color: #666666; |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.refund_price{ |
|||
padding: 38rpx 28rpx; |
|||
font-size: 28rpx; |
|||
border-bottom: 14.67rpx solid #F6F5FA; |
|||
.refund_price_text{ |
|||
font-size: 32rpx; |
|||
|
|||
} |
|||
} |
|||
.refund_reason{ |
|||
font-size: 28rpx; |
|||
padding-left: 28rpx; |
|||
padding-right: 21.33rpx; |
|||
.reason_item{ |
|||
padding:42.67rpx 0 ; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
border-bottom: 1px solid #E2E2E2; |
|||
.reason_item_left{ |
|||
display: flex; |
|||
align-items: center; |
|||
.reason_item_left_text{ |
|||
color: #D2D2D2; |
|||
font-weight: 400; |
|||
display: inline-block; |
|||
margin-left: 45.33rpx; |
|||
} |
|||
} |
|||
image{ |
|||
width: 24rpx; |
|||
height: 24rpx; |
|||
} |
|||
} |
|||
.reason_item1{ |
|||
padding: 42.67rpx 0; |
|||
|
|||
textarea{ |
|||
font-size: 28rpx; |
|||
font-weight: 400; |
|||
margin-top: 40rpx; |
|||
width: 100%; |
|||
height: 113.33rpx; |
|||
} |
|||
.reason_upload{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin-bottom: 34.67rpx; |
|||
.reason_upload_item{ |
|||
border: 1px dashed #D2D2D2; |
|||
border-radius: 15rpx; |
|||
width: 156rpx; |
|||
height: 156rpx; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
flex-direction: column; |
|||
font-size: 12rpx; |
|||
color: #BFBCBC; |
|||
margin-right: 23.33rpx; |
|||
|
|||
&:nth-child(3n+3){ |
|||
margin-right: 0; |
|||
} |
|||
.upload_item_camera{ |
|||
width: 72rpx; |
|||
height: 54.67rpx; |
|||
margin-bottom: 14rpx; |
|||
} |
|||
.upload_item_image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
border-radius: 15rpx; |
|||
} |
|||
} |
|||
.reason_upload_item1{ |
|||
position: relative; |
|||
&::after{ |
|||
content: ""; |
|||
width: 30.67rpx; |
|||
height: 30.67rpx; |
|||
position: absolute; |
|||
right: -12rpx; |
|||
top: -12rpx; |
|||
z-index: 99; |
|||
background-image: url("@/static/img/close3.png"); |
|||
background-size: 100% 100%; |
|||
} |
|||
} |
|||
} |
|||
.reason_upload_tips{ |
|||
font-size: 20rpx; |
|||
color: #666666; |
|||
} |
|||
.refund_submit{ |
|||
margin-top: 118rpx; |
|||
background-color: black; |
|||
color: white; |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
width: 100%; |
|||
height: 73.33rpx; |
|||
line-height: 73.33rpx; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
@ -0,0 +1,328 @@ |
|||
<template> |
|||
<view :class="details_index==0 ||details_index==6 ? 'body' :''"> |
|||
<view class="details_title" :class="details_index==3?'refund_details_title':''"> |
|||
<view class="cancelled toPaid" v-if="details_index==0 ||details_index==6"> |
|||
<view class="cancelled_left"> |
|||
<view > |
|||
<view class="shipped_right_text">{{details_index==0?'Cancelled':'Refunded'}}</view> |
|||
<view>Cancelled time:24/04/2022 15:54:21</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="cancelled" v-if="details_index==1 "> |
|||
<view class="cancelled_left"> |
|||
<image src="../../static/img/time.png" mode=""></image> |
|||
<view class="cancelled_left_info"> |
|||
<text class="shipped_right_text">Refund rejected</text> |
|||
<view>End in: 71:59:59</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
<view class="cancelled" v-if="details_index==2 || details_index==4 || details_index==5"> |
|||
<view class="cancelled_left"> |
|||
<image src="../../static/img/time.png" mode=""></image> |
|||
<view class="cancelled_left_info"> |
|||
<text class="shipped_right_text">To be returned</text> |
|||
<view>End in: 71:59:59</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="cancelled refund_transit" v-if="details_index==3"> |
|||
<view class="cancelled_left"> |
|||
<image src="../../static/img/transit.png" mode=""></image> |
|||
<view class="cancelled_left_info"> |
|||
<text class="shipped_right_text">To be returned</text> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
|
|||
|
|||
</view> |
|||
<view class="refund_success" v-if="details_index==6"> |
|||
<view class="refund_success_item"> |
|||
<text>Refund amount:</text> |
|||
<text class="refund_success_item_text">US$12.5</text> |
|||
</view> |
|||
<view class="refund_success_item"> |
|||
<text>Points:</text> |
|||
<text class="refund_success_item_text">2.5</text> |
|||
</view> |
|||
</view> |
|||
<view class="refund_address" v-if="details_index==2"> |
|||
<view class="address_title">Return address</view> |
|||
<view class="address_content"> |
|||
<view class="address_content_item">name: zhangsan</view> |
|||
<view class="address_content_item">phone: +8613800138000</view> |
|||
<view class="address_content_item">country: china</view> |
|||
<view class="address_content_item">state: 广东省 </view> |
|||
<view class="address_content_item">city:深圳市 </view> |
|||
<view class="address_content_item">zipcode:518000</view> |
|||
<view class="address_content_item">address line:详细地址(例:粤海街道深圳湾生态科技园9A3)</view> |
|||
</view> |
|||
</view> |
|||
<view class="negotiation_details" @click="isShow=true"> |
|||
<text>Negotiation Details</text> |
|||
<image src="../../static/img/right.png" mode=""></image> |
|||
</view> |
|||
|
|||
<view class="order_popup_commodity"> |
|||
<view class="order_popup_commodity_title">Refund Information</view> |
|||
<view class="good_info" v-for="(item,index) in 2 " :key="index"> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image" v-for="(item,index) in 1" :key="index"></view> |
|||
<view class="left_info"> |
|||
<view class="info_name">Adidas Yeezy Boost 350 V2 DazzlingBlue Black GY7164 Men's</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>Multicolor;41</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>x1</text> |
|||
</view> |
|||
<view class="info_price"> |
|||
<text>US$314.00</text> |
|||
<!-- <button>Rrefund</button> --> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
|
|||
|
|||
|
|||
<view class="summary"> |
|||
<view class="summary_item"> |
|||
<view>Refund ID</view> |
|||
<view class="summary_item_right">2013461121212</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Refund Amount</view> |
|||
<view class="summary_item_right">US$12.5</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Return Type</view> |
|||
<view class="summary_item_right">Refund Only</view> |
|||
</view> |
|||
<view class="summary_item"> |
|||
<view>Application Time</view> |
|||
<view class="summary_item_right"> 21/04/2022 15:42:31</view> |
|||
</view> |
|||
<view class="summary_item" > |
|||
<view>Reason For Refund</view> |
|||
<view class="summary_item_right">Quality Problem</view> |
|||
</view> |
|||
|
|||
|
|||
</view> |
|||
|
|||
<view class="details_footer" v-if="details_index!=0 && details_index!=6"> |
|||
<button class="white" v-if="details_index==1">MODIFY REFUND</button> |
|||
<button class="white" v-if="details_index==1 || details_index==2 || details_index==3 || details_index==4 || details_index==5">CANCEL RETURN</button> |
|||
|
|||
<button class="white" v-if="details_index==2 ">RETURN LOGISTICS</button> |
|||
|
|||
<!-- <button class="black" v-if="details_index==4">CONFIRM RECEIPT</button> --> |
|||
</view> |
|||
<view class="mask" v-show="isShow" @click="isShow=false"></view> |
|||
<view class="order_popup" v-show="isShow"> |
|||
<view class="order_popup_title"> |
|||
<text>Negotiation Details</text> |
|||
<image src="../../static/img/close1.png" mode="" @click="isShow=false"></image> |
|||
</view> |
|||
<view class="logistics_details"> |
|||
<view class="logistics_step step_active"> |
|||
<view class="logistics_step_title">CHIC Has Refunded</view> |
|||
<text>Refund amount: US $12.5</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
<view class="logistics_step"> |
|||
<view class="logistics_step_title">CHIC Reject Goods</view> |
|||
<text>Reason: 驳回的内容。 please modify the refund application or return information</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
<view class="logistics_step"> |
|||
<view class="logistics_step_title">Buyer Has Sent The Goods</view> |
|||
<text>Waiting for CHIC to receive the goods</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
<view class="logistics_step"> |
|||
<view class="logistics_step_title">CHIC Agrees To Refund</view> |
|||
<text>To be returned by the buyer,Please submit the return logistics order number within 7 days</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
<view class="logistics_step"> |
|||
<view class="logistics_step_title">Buyer Modifies Refund Application</view> |
|||
<text>Waiting for CHIC processing</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
<view class="logistics_step"> |
|||
<view class="logistics_step_title">CHIC Refund Rejected</view> |
|||
<text>Reason : 驳回的内容。please modify the refund information</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
<view class="logistics_step"> |
|||
<view class="logistics_step_title">Buyer Submits Refund Application</view> |
|||
<text>Waiting for CHIC processing</text> |
|||
<view class="logistics_step_time">2020.12.13 23:54:12</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
export default { |
|||
data() { |
|||
return { |
|||
// 0、售后已取消 1、商家驳回申请 2、待买家退货 3、待商家收货 4、待退款 5、等待商家审核 6、退款成功 |
|||
details_index:5, |
|||
isShow:false, |
|||
} |
|||
}, |
|||
methods:{ |
|||
|
|||
} |
|||
} |
|||
</script> |
|||
<style> |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
@import "@/common/scss/order.scss"; |
|||
.body{ |
|||
padding-bottom: 140rpx; |
|||
|
|||
} |
|||
.order_popup_commodity_title{ |
|||
font-size: 28.67rpx; |
|||
font-weight: bold; |
|||
margin-top: 37.33rpx; |
|||
} |
|||
.negotiation_details{ |
|||
padding: 40.67rpx 0; |
|||
padding-left: 28rpx; |
|||
padding-right: 16rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 28.67rpx; |
|||
font-weight: bold; |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
image{ |
|||
width: 20rpx; |
|||
height: 20rpx; |
|||
} |
|||
} |
|||
.toPaid{ |
|||
.shipped_right_text{ |
|||
margin-bottom: 14rpx; |
|||
} |
|||
} |
|||
.refund_details_title{ |
|||
height: 126rpx !important; |
|||
} |
|||
.refund_transit{ |
|||
height: 126rpx !important; |
|||
} |
|||
.summary{ |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
padding-bottom: 44.67rpx; |
|||
} |
|||
.refund_address{ |
|||
padding: 40rpx 0; |
|||
padding-left: 28rpx; |
|||
padding-right: 16.67rpx; |
|||
font-size: 24rpx; |
|||
color: #666666; |
|||
font-weight: bold; |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
.address_title{ |
|||
font-size: 28.67rpx; |
|||
color: black; |
|||
margin-bottom: 22rpx; |
|||
} |
|||
.address_content{ |
|||
display: flex; |
|||
justify-content: space-between; |
|||
flex-wrap: wrap; |
|||
.address_content_item{ |
|||
width: 50%; |
|||
margin-bottom: 10.67rpx; |
|||
&:last-child{ |
|||
width: 100%; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
.refund_success{ |
|||
padding: 40rpx 26.67rpx; |
|||
font-size: 28.67rpx; |
|||
font-weight: bold; |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
.refund_success_item{ |
|||
margin-bottom: 20rpx; |
|||
&:last-child{ |
|||
margin-bottom: 0; |
|||
} |
|||
.refund_success_item_text{ |
|||
color: #B22234; |
|||
} |
|||
} |
|||
} |
|||
.order_popup{ |
|||
padding: 0 28rpx; |
|||
box-sizing: border-box; |
|||
|
|||
.order_popup_title{ |
|||
justify-content: flex-start; |
|||
} |
|||
} |
|||
.logistics_details{ |
|||
border-top: none; |
|||
padding: 26rpx 0; |
|||
padding-left: 0; |
|||
padding-right: 27.33rpx; |
|||
max-height: 1123.33rpx; |
|||
overflow-y: auto; |
|||
.logistics_step{ |
|||
font-size: 24rpx; |
|||
color: #333333; |
|||
font-weight: bold; |
|||
&:before{ |
|||
content: ""; |
|||
width: 26.67rpx; |
|||
height: 26.67rpx; |
|||
background-color: #E2E2E2; |
|||
} |
|||
&::after{ |
|||
background-color: #E2E2E2; |
|||
left: 12.5rpx; |
|||
} |
|||
.logistics_step_title{ |
|||
font-size: 28rpx; |
|||
color: #000000; |
|||
margin-bottom: 10rpx; |
|||
font-weight: 500; |
|||
} |
|||
.logistics_step_time{ |
|||
font-size: 20rpx; |
|||
color: #999999; |
|||
} |
|||
} |
|||
} |
|||
.step_active{ |
|||
color: #333333 !important; |
|||
|
|||
&:before{ |
|||
background-image: url(@/static/img/yuan.png); |
|||
background-size: 100% 100%; |
|||
background-color: white !important; |
|||
} |
|||
|
|||
} |
|||
</style> |
|||
@ -0,0 +1,283 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar :statusBar="true" left-icon="left" title="Review" color="#000000" :fixed="true" @clickLeft="back"> |
|||
<block slot="right"> |
|||
<view class="nav_right"> |
|||
<button @click="reviewSub">Submit</button> |
|||
</view> |
|||
</block> |
|||
</uni-nav-bar> |
|||
<view class="body" v-for="(item,index) in orderDate.order_goods " :key="index"> |
|||
<view class="order_popup_commodity"> |
|||
<view class="good_info" > |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image"> |
|||
<image :src="item.goods_img" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item.goods_attr |goodsAttr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
<view class="review"> |
|||
<view class="review_title"> |
|||
<text>Score</text> |
|||
<uni-rate size="22" disabledColor="red" v-model="query.comment_rank" active-color="red" :is-fill="false" class="rate" v-if="reviewType==0"/> |
|||
<uni-rate size="22" disabledColor="red" v-model="query1.comments[index].comment_rank" active-color="red" :is-fill="false" class="rate" v-else/> |
|||
</view> |
|||
<view class="review_content"> |
|||
<image src="../../static/img/write.png" mode=""></image> |
|||
<textarea placeholder="Write reviews" v-if="reviewType==0" v-model="query.comment"></textarea> |
|||
<textarea placeholder="Write reviews" v-else v-model="query1.comments[index].comment"></textarea> |
|||
</view> |
|||
<view class="reason_upload"> |
|||
<view class="reason_upload_item"> |
|||
<image src="/static/img/vedio.png" class="upload_item_camera1" mode=""></image> |
|||
<view>Upload the video</view> |
|||
</view> |
|||
<view class="reason_upload_item"> |
|||
<image src="/static/img/camera.png" class="upload_item_camera" mode=""></image> |
|||
<view>Upload pictures</view> |
|||
</view> |
|||
|
|||
<view class="reason_upload_item reason_upload_item1"> |
|||
<image src="/static/img/logo.png" class="upload_item_image" mode=""></image> |
|||
</view> |
|||
|
|||
</view> |
|||
<view class="reason_upload_tips">Upload JPG, PNG format, within 3M</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2,defaultRequest3} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
orderDate:{}, |
|||
// 评论状态 0、单个评论 1批量评论 |
|||
reviewType:0, |
|||
query:{ |
|||
_action:'commentordergoods', |
|||
order_id:'', |
|||
order_sn:'', |
|||
rec_id:'', |
|||
goods_id:'', |
|||
comment:'', |
|||
comment_rank:'', |
|||
commentlabels:'' |
|||
}, |
|||
query1:{ |
|||
_action:'commentorder', |
|||
order_id:'', |
|||
order_sn:'', |
|||
comments:[] |
|||
} |
|||
} |
|||
}, |
|||
methods:{ |
|||
// 提交评论内容 |
|||
reviewSub(){ |
|||
let data |
|||
if(this.reviewType==0){ |
|||
this.commentordergoods() |
|||
}else{ |
|||
data=this.query1 |
|||
} |
|||
console.info(data) |
|||
}, |
|||
// 单个评论内容 |
|||
commentordergoods(){ |
|||
defaultRequest2(this.query).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Comment successful!' |
|||
}) |
|||
setTimeout(function(){ |
|||
uni.navigateBack() |
|||
},2000) |
|||
} |
|||
}) |
|||
}, |
|||
// 批量评论内容 |
|||
commentordergoods(){ |
|||
defaultRequest2(this.query1,'comments').then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Comment successful!' |
|||
}) |
|||
setTimeout(function(){ |
|||
uni.navigateBack() |
|||
},2000) |
|||
} |
|||
}) |
|||
}, |
|||
|
|||
back(){ |
|||
uni.navigateBack() |
|||
} |
|||
}, |
|||
onLoad(e) { |
|||
let datas=JSON.parse(e.data) |
|||
this.orderDate=datas |
|||
if(datas.order_goods.length>1){ |
|||
this.reviewType=1 |
|||
this.query1.order_id=datas.order_id |
|||
this.query1.order_sn=datas.order_sn |
|||
datas.order_goods.map(item=>{ |
|||
let data={ |
|||
rec_id:item.rec_id, |
|||
goods_id:item.goods_id, |
|||
comment:'', |
|||
comment_rank:'', |
|||
commentlabels:item.goods_attr.replace(/\s\n/g,' ') |
|||
} |
|||
this.query1.comments.push(data) |
|||
}) |
|||
}else{ |
|||
this.query.order_id=datas.order_id |
|||
this.query.order_sn=datas.order_sn |
|||
this.query.rec_id=datas.order_goods[0].rec_id |
|||
this.query.goods_id=datas.order_goods[0].goods_id |
|||
this.commentlabels=datas.order_goods[0].goods_attr.replace(/\s\n/g,' ') |
|||
} |
|||
}, |
|||
filters:{ |
|||
goodsAttr(e){ |
|||
return e.replace(/\s\n/g,';'); |
|||
} |
|||
} |
|||
} |
|||
</script> |
|||
|
|||
|
|||
<style lang="scss" scoped> |
|||
.review{ |
|||
padding: 0 26rpx; |
|||
padding-top: 35.33rpx; |
|||
|
|||
.review_title{ |
|||
display: flex; |
|||
align-items: center; |
|||
font-weight: bold; |
|||
font-size: 32rpx; |
|||
margin-bottom: 44rpx; |
|||
.rate{ |
|||
margin-left: 24.67rpx; |
|||
} |
|||
} |
|||
.review_content{ |
|||
display: flex; |
|||
image{ |
|||
width: 29.33rpx; |
|||
height: 29.33rpx; |
|||
} |
|||
textarea{ |
|||
font-size: 28rpx; |
|||
font-weight: 400; |
|||
width: 100%; |
|||
height: 113.33rpx; |
|||
margin-left: 4rpx; |
|||
} |
|||
} |
|||
.reason_upload{ |
|||
display: flex; |
|||
flex-wrap: wrap; |
|||
margin-bottom: 34.67rpx; |
|||
.reason_upload_item{ |
|||
border: 1px dashed #D2D2D2; |
|||
border-radius: 15rpx; |
|||
width: 156rpx; |
|||
height: 156rpx; |
|||
display: flex; |
|||
justify-content: center; |
|||
align-items: center; |
|||
flex-direction: column; |
|||
font-size: 12rpx; |
|||
color: #BFBCBC; |
|||
margin-right: 23.33rpx; |
|||
|
|||
&:nth-child(3n+3){ |
|||
margin-right: 0; |
|||
} |
|||
.upload_item_camera{ |
|||
width: 72rpx; |
|||
height: 54.67rpx; |
|||
margin-bottom: 14rpx; |
|||
} |
|||
.upload_item_camera1{ |
|||
width: 72rpx; |
|||
height: 72rpx; |
|||
// margin-bottom: 14rpx; |
|||
|
|||
} |
|||
.upload_item_image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
border-radius: 15rpx; |
|||
} |
|||
} |
|||
.reason_upload_item1{ |
|||
position: relative; |
|||
&::after{ |
|||
content: ""; |
|||
width: 30.67rpx; |
|||
height: 30.67rpx; |
|||
position: absolute; |
|||
right: -12rpx; |
|||
top: -12rpx; |
|||
z-index: 99; |
|||
background-image: url("@/static/img/close3.png"); |
|||
background-size: 100% 100%; |
|||
} |
|||
} |
|||
} |
|||
.reason_upload_tips{ |
|||
font-size: 20rpx; |
|||
color: #666666; |
|||
} |
|||
} |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.nav_right{ |
|||
|
|||
|
|||
button{ |
|||
width: 116.67rpx; |
|||
height: 48rpx; |
|||
background-color: black; |
|||
margin: 0; |
|||
line-height: 48rpx; |
|||
border-radius: 24rpx; |
|||
font-size: 24rpx; |
|||
font-weight: bold; |
|||
color: white; |
|||
padding-left: 0; |
|||
padding-right: 0; |
|||
} |
|||
} |
|||
.body{ |
|||
border-top: 14.67rpx #F6F5FA solid; |
|||
} |
|||
.order_popup_commodity{ |
|||
padding: 0 33.33rpx; |
|||
border-bottom: 14.67rpx #F6F5FA solid; |
|||
} |
|||
|
|||
</style> |
|||
@ -0,0 +1,539 @@ |
|||
<template> |
|||
<view> |
|||
<uni-nav-bar :statusBar="true" left-icon="left" title="Shipping Cart" color="#000000" :fixed="true" @clickLeft="back"> |
|||
<block slot="right"> |
|||
<view class="nav_right"> |
|||
<image src="../../static/img/delete1.png" mode="" @click="deleteCart"></image> |
|||
</view> |
|||
</block> |
|||
</uni-nav-bar> |
|||
<view class="empty" v-if="goods_list.length==0"> |
|||
<image src="/static/img/cart3.png" mode=""></image> |
|||
<text>Your cart is empty</text> |
|||
<button>Shop Now</button> |
|||
</view> |
|||
<template v-else> |
|||
<view class="cart_info"> |
|||
<image src="/static/img/Shipped.png" mode=""></image> |
|||
<view class="cart_title_content">Buy US$32.00 more to enjoy FREE STANDARD SHIPPING!</view> |
|||
<view class="cart_title_right">Add</view> |
|||
</view> |
|||
<view class="cart"> |
|||
<view class="cart_content"> |
|||
<view class="good_info" v-for="(item,index) in goods_list" :key="item.rec_id"> |
|||
<image src="../../static/img/select1.png" mode="" class="cart_select" v-show="item.is_check==1" @click="cartCheck(1,0,item.rec_id,index)"></image> |
|||
<image src="../../static/img/select2.png" mode="" class="cart_select" v-show="item.is_check==0" @click="cartCheck(1,1,item.rec_id,index)"></image> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image"> |
|||
<image :src="item.goods_thumb" mode=""></image> |
|||
</view> |
|||
<view class="left_info"> |
|||
<view class="info_name">{{item.goods_name}}</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>{{item.goods_attr}}</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
</view> |
|||
<view class="info_price"> |
|||
<text>US${{item.goods_price}}</text> |
|||
<uni-number-box background="#FFFFFF" :min="1" :value="item.goods_number" @change="updateCart($event,item.rec_id)"></uni-number-box> |
|||
|
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
|
|||
<view class="cart"> |
|||
<view class="cart_content"> |
|||
<view class="good_info" v-for="(item,index) in 3 " :key="index"> |
|||
<image src="../../static/img/select.png" mode="" class="cart_select"></image> |
|||
<view class="good_info_left "> |
|||
<view class="good_info_image"> |
|||
<view class="good_info_image_tips">sold out</view> |
|||
</view> |
|||
|
|||
<view class="left_info left_info1"> |
|||
<view class="info_name">Adidas Yeezy Boost 350 V2 DazzlingBlue Black GY7164 Men's</view> |
|||
<view class="left_info_bottom"> |
|||
<view class="info_lable"> |
|||
<text>Multicolor;41</text> |
|||
<image src="/static/img/bottom.png" mode=""></image> |
|||
</view> |
|||
<text>x1</text> |
|||
</view> |
|||
<view class="info_price"> |
|||
<text>US$314.00</text> |
|||
<image src="../../static/img/delete2.png" mode="" class="delete"></image> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
</view> |
|||
</view> |
|||
</template> |
|||
|
|||
|
|||
<view class="recommend"> |
|||
<view class="recommend_title">RECOMMEND</view> |
|||
<view class="recommend_content"> |
|||
<view class="recommend_content_item" v-for="(item,index) in catList " :key="index" @click="goDetails(item.id)"> |
|||
<view class="recommend_content_item_image"> |
|||
<image :src="item.thumb" mode=""></image> |
|||
</view> |
|||
<view class="recommend_content_item_image_name">{{item.short_name}}</view> |
|||
<view class="recommend_content_item_pric">US${{item.is_promote==0? item.shop_price :item.promote_price}}</view> |
|||
</view> |
|||
</view> |
|||
</view> |
|||
|
|||
<view class="footer"> |
|||
<view class="footer_left"> |
|||
<image src="../../static/img/select1.png" mode="" v-if="all_allno==1 && goods_list.length>0" @click="cartCheck(0,0)"></image> |
|||
<image src="../../static/img/select2.png" mode="" v-else @click="cartCheck(0,1)"></image> |
|||
<text>All</text> |
|||
</view> |
|||
<view class="footer_right"> |
|||
<text>US${{total.goods_price}}</text> |
|||
<button @click="cartCheckOut">CHECKOUT({{total.goods_count}})</button> |
|||
</view> |
|||
</view> |
|||
<uni-popup ref="alertDialog" type="dialog"> |
|||
<uni-popup-dialog type="error" cancelText="Close" confirmText="Delete" title="Tips" content="Whether to delete goods?" |
|||
@confirm="dialogConfirm" ></uni-popup-dialog> |
|||
</uni-popup> |
|||
</view> |
|||
</template> |
|||
|
|||
<script> |
|||
import {defaultRequest2,defaultRequest4} from '../../api/index.js' |
|||
export default { |
|||
data() { |
|||
return { |
|||
isEmpty:false, |
|||
// 购物车数据 |
|||
total:{}, |
|||
// 商品数据 |
|||
goods_list:[], |
|||
// 全选标识。1-全部选中,2-全部未选,3-部分选中。 |
|||
all_allno:2, |
|||
deleteQuery:{ |
|||
_action:'removecart' |
|||
}, |
|||
// 获取该分类的其他商品的请求参数 |
|||
catQuery:{ |
|||
_action:'getgoods', |
|||
page_index:1, |
|||
page_size:10 |
|||
}, |
|||
catList:[], |
|||
isReachBottom:true, |
|||
} |
|||
}, |
|||
methods:{ |
|||
goDetails(id){ |
|||
uni.navigateTo({ |
|||
url:'/pages/productDetails/index?goods_id='+id |
|||
}) |
|||
}, |
|||
// 获取的其他商品 |
|||
getCatList(type){ |
|||
defaultRequest4(this.catQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
if(res.data){ |
|||
if(type==0){ |
|||
this.catList=res.data |
|||
}else{ |
|||
this.catList=this.catList.concat(res.data) |
|||
} |
|||
}else{ |
|||
this.isReachBottom=false |
|||
uni.showToast({ |
|||
title: 'No more data yet', |
|||
icon:'none' |
|||
}) |
|||
this.catQuery.page_index-- |
|||
} |
|||
} |
|||
uni.hideNavigationBarLoading(); |
|||
}) |
|||
}, |
|||
// 修改商品数量 |
|||
updateCart(e,id){ |
|||
let data={_action:'updatecart',rec_id:id,goods_number:e} |
|||
defaultRequest4(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
// 提交订单 |
|||
cartCheckOut(){ |
|||
if(this.goods_list.length==0) return |
|||
if(this.all_allno==2){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please select the product' |
|||
}) |
|||
return |
|||
} |
|||
let data={_action:'cartcheckout',is_new:1,direct_shopping:0,consignee:''} |
|||
uni.navigateTo({ |
|||
url:'../order/confirmation?query='+JSON.stringify(data) |
|||
}) |
|||
|
|||
}, |
|||
// 删除商品 |
|||
deleteCart(){ |
|||
if(this.goods_list.length==0) return |
|||
if(this.all_allno==2){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Please select the product to delete' |
|||
}) |
|||
return |
|||
}else if(this.all_allno==3){ |
|||
let selectNum=0, |
|||
rec_id='' |
|||
this.goods_list.map(item=>{ |
|||
if(item.is_check==1){ |
|||
rec_id=item.rec_id |
|||
selectNum++ |
|||
} |
|||
}) |
|||
if(selectNum>1){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Only one or all items can be deleted' |
|||
}) |
|||
return |
|||
}else{ |
|||
this.deleteQuery.rec_id=rec_id |
|||
} |
|||
}else{ |
|||
// this.deleteQuery._action='clearcart' |
|||
} |
|||
this.$refs.alertDialog.open() |
|||
|
|||
}, |
|||
dialogConfirm(){ |
|||
defaultRequest2(this.deleteQuery).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
uni.showToast({ |
|||
icon:'none', |
|||
title:'Successfully deleted!' |
|||
}) |
|||
this.getList() |
|||
} |
|||
}) |
|||
}, |
|||
// 购物车-商品勾选-单个记录 type: 1为单选 、0为全选 |
|||
cartCheck(type,is_check,id,index){ |
|||
if(this.goods_list.length==0) return |
|||
let data={} |
|||
if(type==1){ |
|||
data={_action:'cartcheck',rec_id:id,is_check:is_check} |
|||
}else{ |
|||
data={_action:'cartcheckall',is_check:is_check} |
|||
} |
|||
defaultRequest4(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.getList() |
|||
|
|||
// Object.assign(this.total,res.data) |
|||
// this.total.goods_price=res.data.price |
|||
// this.all_allno=res.data.all_allno |
|||
// if(type==1){ |
|||
// if(is_check==0){ |
|||
// this.goods_list[index].is_check=0 |
|||
// }else{ |
|||
// this.goods_list[index].is_check=1 |
|||
// } |
|||
|
|||
// }else{ |
|||
// this.goods_list.map(item=>{ |
|||
// if(is_check==0){ |
|||
// item.is_check=0 |
|||
// }else{ |
|||
// item.is_check=1 |
|||
// } |
|||
|
|||
// }) |
|||
// } |
|||
|
|||
} |
|||
}) |
|||
}, |
|||
getList(){ |
|||
let data={_action:'getcartgoods'} |
|||
defaultRequest4(data).then(res=>{ |
|||
console.info(res) |
|||
if(res.error==0){ |
|||
this.total=res.data.total |
|||
this.all_allno=res.data.all_allno |
|||
if(res.data.goods_list){ |
|||
res.data.goods_list.map(item=>{ |
|||
item.goods_attr=item.goods_attr.replace(/\s\n/g,';'); |
|||
}) |
|||
this.goods_list=res.data.goods_list |
|||
}else{ |
|||
this.goods_list=[] |
|||
} |
|||
|
|||
|
|||
} |
|||
}) |
|||
}, |
|||
back(){ |
|||
uni.switchTab({ |
|||
url: '/pages/index/index' |
|||
}); |
|||
} |
|||
}, |
|||
onShow() { |
|||
uni.hideTabBar() |
|||
this.getList() |
|||
this.getCatList(0) |
|||
}, |
|||
onHide(){ |
|||
uni.showTabBar() |
|||
}, |
|||
// 上拉加载 |
|||
onReachBottom(){ |
|||
if(!this.isReachBottom)return |
|||
this.catQuery.page_index++ |
|||
this.getCatList(1) |
|||
}, |
|||
onPullDownRefresh(){ |
|||
uni.stopPullDownRefresh() |
|||
} |
|||
|
|||
} |
|||
</script> |
|||
<style> |
|||
page{ |
|||
background-color: #F6F5FA; |
|||
padding-bottom: 150rpx; |
|||
} |
|||
</style> |
|||
<style lang="scss" scoped> |
|||
.uni-navbar{ |
|||
font-size: 32rpx; |
|||
font-weight: bold; |
|||
} |
|||
.uni-numbox{ |
|||
border: 1px solid #999999; |
|||
border-radius: 14rpx; |
|||
height: 42.67rpx; |
|||
|
|||
/deep/ .uni-numbox__minus{ |
|||
border-radius: 14rpx; |
|||
} |
|||
/deep/.uni-numbox__plus{ |
|||
border-radius: 14rpx; |
|||
} |
|||
/deep/.uni-numbox__value{ |
|||
border-left: 1px solid #999999; |
|||
border-right: 1px solid #999999; |
|||
height: 100%; |
|||
width: 63.33rpx; |
|||
font-size: 21.33rpx; |
|||
} |
|||
} |
|||
.nav_right{ |
|||
image{ |
|||
width: 36rpx; |
|||
height: 36rpx; |
|||
} |
|||
} |
|||
.empty{ |
|||
display: flex; |
|||
flex-direction: column; |
|||
align-items: center; |
|||
justify-content: center; |
|||
padding-top: 136rpx; |
|||
font-size: 30.67rpx; |
|||
font-weight: 400; |
|||
image{ |
|||
width: 125.33rpx; |
|||
height: 125.33rpx; |
|||
margin-bottom: 49.33rpx; |
|||
} |
|||
button{ |
|||
font-size: 29.33rpx; |
|||
font-weight: 500; |
|||
background-color: black; |
|||
color: white; |
|||
height: 45.67rpx; |
|||
line-height: 45.67rpx; |
|||
border-radius: 0; |
|||
margin-top: 33.33rpx; |
|||
} |
|||
} |
|||
.recommend{ |
|||
margin-top: 124rpx; |
|||
} |
|||
.cart_info{ |
|||
background-color: white; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
padding: 36.67rpx 32rpx; |
|||
font-size: 24rpx; |
|||
font-weight: 400; |
|||
|
|||
image{ |
|||
width: 41.33rpx; |
|||
height: 41.33rpx; |
|||
} |
|||
.cart_title_content{ |
|||
width: 510.67rpx; |
|||
} |
|||
.cart_title_right{ |
|||
font-size: 26rpx; |
|||
font-weight: bold; |
|||
} |
|||
} |
|||
.cart{ |
|||
background-color: white; |
|||
margin: 0 18rpx; |
|||
padding: 42rpx 12.67rpx; |
|||
margin-top: 16.67rpx; |
|||
|
|||
.cart_title{ |
|||
padding-left: 12.67rpx; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 28rpx; |
|||
margin-bottom: 76rpx; |
|||
} |
|||
.cart_content{ |
|||
|
|||
.good_info{ |
|||
display: flex; |
|||
align-items: center; |
|||
color: #000000; |
|||
justify-content: space-between; |
|||
border-bottom: none; |
|||
padding: 0; |
|||
margin-bottom: 78.67rpx; |
|||
|
|||
&:last-child{ |
|||
margin-bottom: 0; |
|||
} |
|||
.good_info_image{ |
|||
position: relative; |
|||
image{ |
|||
width: 100%; |
|||
height: 100%; |
|||
} |
|||
.good_info_image_tips{ |
|||
width: 117.33rpx; |
|||
height: 117.33rpx; |
|||
border-radius: 50%; |
|||
background: rgba(0, 0, 0, 0.3); |
|||
color: white; |
|||
font-size: 22rpx; |
|||
font-weight: 800; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: center; |
|||
z-index: 99; |
|||
position: absolute; |
|||
top: 50%; |
|||
margin-top: -60rpx; |
|||
left: 50%; |
|||
margin-left: -60rpx; |
|||
} |
|||
} |
|||
.left_info1{ |
|||
color: #C4C4C4; |
|||
|
|||
.left_info_bottom{ |
|||
color: #C4C4C4; |
|||
|
|||
.info_lable{ |
|||
border: 1px solid #C4C4C4; |
|||
} |
|||
} |
|||
.info_price{ |
|||
color: #C4C4C4; |
|||
} |
|||
} |
|||
.cart_select{ |
|||
width: 34.67rpx; |
|||
height: 34.67rpx; |
|||
} |
|||
.info_name{ |
|||
width: 406.67rpx; |
|||
text-overflow: -o-ellipsis-lastline; |
|||
overflow: hidden; //溢出内容隐藏 |
|||
text-overflow: ellipsis; //文本溢出部分用省略号表示 |
|||
display: -webkit-box; //特别显示模式 |
|||
-webkit-line-clamp: 2; //行数 |
|||
line-clamp: 2; |
|||
-webkit-box-orient: vertical; |
|||
} |
|||
.delete{ |
|||
width: 36rpx; |
|||
height: 36rpx; |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
|||
} |
|||
.footer{ |
|||
padding: 42rpx 0; |
|||
padding-left: 27.33rpx; |
|||
padding-right: 19.33rpx; |
|||
background-color: white; |
|||
position: fixed; |
|||
bottom: 0; |
|||
width: 100%; |
|||
box-sizing: border-box; |
|||
border-top: 2px solid #F6F5FA; |
|||
z-index: 100; |
|||
display: flex; |
|||
align-items: center; |
|||
justify-content: space-between; |
|||
font-size: 36rpx; |
|||
.footer_left{ |
|||
font-weight: 400; |
|||
display: flex; |
|||
align-items: center; |
|||
|
|||
image{ |
|||
width: 34.67rpx; |
|||
height: 34.67rpx; |
|||
margin-right: 10rpx; |
|||
} |
|||
} |
|||
.footer_right{ |
|||
display: flex; |
|||
align-items: center; |
|||
font-weight: 600; |
|||
|
|||
button{ |
|||
height: 73.33rpx; |
|||
line-height: 73.33rpx; |
|||
background-color: #191919; |
|||
margin: 0; |
|||
font-size: 26.67rpx; |
|||
font-weight: bold; |
|||
color: white; |
|||
margin-left: 23.33rpx; |
|||
border-radius: 0; |
|||
} |
|||
} |
|||
} |
|||
</style> |
|||
|
After Width: | Height: | Size: 38 KiB |
|
After Width: | Height: | Size: 369 B |
|
After Width: | Height: | Size: 205 B |
|
After Width: | Height: | Size: 646 B |
|
After Width: | Height: | Size: 421 B |
|
After Width: | Height: | Size: 5.8 KiB |
|
After Width: | Height: | Size: 355 B |
|
After Width: | Height: | Size: 471 B |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 4.5 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 846 B |
|
After Width: | Height: | Size: 604 B |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 990 B |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 4.4 KiB |