作者 朱振飞

礼寓项目初始化

正在显示 72 个修改的文件 包含 4692 行增加0 行删除

要显示太多修改。

为保证性能只显示 72 of 72+ 个文件。

var e = require("./utils/network.js");
require("./utils/util.js");
App({
onLaunch: function() {
wx.login({
success: function(s) {
if (s.code) {
var o = s.code;
wx.getSetting({
success: function(s) {
s.authSetting["scope.userInfo"] || wx.authorize({
scope: "scope.userInfo",
success: function() {
wx.getUserInfo ? wx.getUserInfo({
success: function(s) {
wx.showToast({
title: "加载中",
icon: "loading",
duration: 1500,
mask: !0
});
var t = s.userInfo;
wx.setStorage({
key: "userInfo",
data: t
}), wx.getStorage({
key: "userInfo",
success: function(s) {
console.log(s), e.POST({
url: "User/register",
header: "application/x-www-form-urlencoded",
params: {
code: o,
nickname: s.data.nickName,
headimg: s.data.avatarUrl
},
success: function(e) {
var s = e.data.ouid;
wx.setStorage({
key: "ouid",
data: s,
success: function(e) {
console.log(e), wx.hideToast(), wx.showToast({
title: "登录成功!",
icon: "success",
mask: !0,
duration: 1e3
});
}
});
}
});
}
});
}
}) : wx.showToast({
title: "版本过低",
icon: "none"
});
},
fail: function() {
var e = new Object();
e.userid = "", wx.setStorage({
key: "userInfo",
data: e
});
}
}), wx.hideToast();
}
});
}
}
});
},
uploadimg: function(e) {
var s = this, o = e.i ? e.i : 0, t = e.success ? e.success : 0, a = e.fail ? e.fail : 0;
wx.uploadFile({
url: e.url,
filePath: e.path[o],
name: "logo",
formData: {
id: e.id
},
success: function(e) {
t++;
},
fail: function(e) {
a++;
},
complete: function(i) {
++o == e.path.length || (e.i = o, e.success = t, e.fail = a, s.uploadimg(e));
}
});
}
});
\ No newline at end of file
... ...
{
"pages": [
"pages/index/index",
"pages/index/search/search",
"pages/classify/classify",
"pages/my/my",
"pages/cart/cart",
"pages/my/comment/comment",
"pages/my/payment/payment",
"pages/my/delivery/delivery",
"pages/my/shipped/shipped",
"pages/my/completed/completed",
"pages/my/pay/pay",
"pages/my/myoder/myoder",
"pages/classify/detail/detail",
"pages/index/goodsdetail/goodsdetail",
"pages/index/discuss/discuss",
"pages/index/paydetail/paydetail",
"pages/template/template",
"pages/my/logistic/logistic"
],
"window": {
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "礼寓Leemoral",
"navigationBarTextStyle": "black"
},
"tabBar": {
"selectedColor": "#ffb866",
"list": [
{
"text": "首页",
"pagePath": "pages/index/index",
"iconPath": "pages/src/img/nav02.png",
"selectedIconPath": "pages/src/img/nav_02.png"
},
{
"text": "分类",
"pagePath": "pages/classify/classify",
"iconPath": "pages/src/img/nav03.png",
"selectedIconPath": "pages/src/img/nav_04.png"
},
{
"text": "购物车",
"pagePath": "pages/cart/cart",
"iconPath": "pages/src/img/nav04.png",
"selectedIconPath": "pages/src/img/nav_06.png"
},
{
"text": "我的",
"pagePath": "pages/my/my",
"iconPath": "pages/src/img/nav05.png",
"selectedIconPath": "pages/src/img/nav_08.png"
}
]
},
"networkTimeout": {
"request": 1000,
"connectSocket": 1000,
"uploadFile": 1000,
"downloadFile": 1000
},
"debug": true
}
\ No newline at end of file
... ...
@import "pages/template/template.wxss";
@font-face {
font-family:'pingfang';src:url(pages/src/fonts/PingFangLight.ttf-do-not-use-local-path-./app.wxss&6&9);font-family:'pingfanglight';src:url(pages/src/fonts/PingFangLight.ttf-do-not-use-local-path-./app.wxss&8&9);
}
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,menu,nav,output,ruby,section,summary,time,mark,audio,video,input,view,text,template,blockquote,page {
margin: 0;
padding: 0;
border: 0;
font-size: 100%;
font-weight: normal;
vertical-align: baseline;
box-sizing: border-box;
font-family: 'pingfang';
}
article,aside,details,figcaption,figure,footer,header,menu,nav,section {
display: block;
}
body {
line-height: 1;
height: 100%;
position: relative;
}
blockquote,q {
quotes: none;
}
blockquote:before,blockquote:after,q:before,q:after {
content: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
html,body {
width: 100%;
}
a {
color: #000;
text-decoration: none;
-webkit-backface-visibility: hidden;
}
li {
list-style: none;
}
::-webkit-scrollbar {
width: 5px;
height: 5px;
}
::-webkit-scrollbar-track-piece {
background-color: rgba(0,0,0,0.2);
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-thumb:vertical {
height: 5px;
background-color: rgba(125,125,125,0.7);
-webkit-border-radius: 6px;
}
::-webkit-scrollbar-thumb:horizontal {
width: 5px;
background-color: rgba(125,125,125,0.7);
-webkit-border-radius: 6px;
}
body {
-webkit-text-size-adjust: none;
-webkit-tap-highlight-color: rgba(0,0,0,0);
}
img {
border: 0;
margin: 0;
}
input,textarea {
height: 100%;
width: 100%;
border: 0;
outline: none;
background: none;
}
.input_box {
background-color: rgba(247,249,247,0.8);
margin: 16rpx auto;
border-radius: 30rpx;
display: flex;
padding: 18rpx 20rpx;
font-size: 24rpx;
align-items: center;
position: fixed;
top: 0;
left: 0;
right: 0;
width: 90%;
z-index: 999;
}
.searchbox {
width: 80%;
left: -100rpx;
}
.index_box {
padding: 26rpx 20rpx;
align-items: stretch;
}
.index_box:active {
background-color: rgba(0,0,0,0.1);
}
.input_box .iconfont {
margin-right: 17rpx;
}
.place {
font-size: 24rpx;
color: #999;
}
@font-face {
font-family:"iconfont";src:url(iconfont.eot?t=1526260688455-do-not-use-local-path-./app.wxss&159&7);src:url(iconfont.eot?t=1526260688455#iefix-do-not-use-local-path-./app.wxss&163&7) format('embedded-opentype'),url(data:application/x-font-woff;charset=utf-8;base64,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) format('woff'),url(iconfont.ttf?t=1526260688455-do-not-use-local-path-./app.wxss&163&7) format('truetype'),url(iconfont.svg?t=1526260688455#iconfont-do-not-use-local-path-./app.wxss&163&7) format('svg');
}
.iconfont {
font-family: "iconfont"!important;
font-size: 16px;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-xiangxia:before {
content: "\e603";
}
.icon-daifukuan1:before {
content: "\e63d";
}
.icon-xiangqing:before {
content: "\e64d";
}
.icon-2fanhui:before {
content: "\e602";
}
.icon-wancheng:before {
content: "\e65c";
}
.icon-xiazai4:before {
content: "\e604";
}
.icon-shouye:before {
content: "\e60b";
}
.icon-pinglun:before {
content: "\e606";
}
.icon-shoucang1:before {
content: "\e63b";
}
.icon-daifahuo:before {
content: "\e68e";
}
.icon-xiangshang:before {
content: "\e625";
}
.icon-tianjia:before {
content: "\e657";
}
.icon-fenlei:before {
content: "\e638";
}
.icon-ShopCart:before {
content: "\e600";
}
.icon-kefunv:before {
content: "\e672";
}
.icon-sousuo:before {
content: "\e650";
}
.icon-ziyuan:before {
content: "\e621";
}
.icon-jinru:before {
content: "\e64c";
}
.icon-jingpin:before {
content: "\e60e";
}
.icon-dingdanyiwancheng:before {
content: "\e618";
}
.icon-daifukuan:before {
content: "\e697";
}
.icon-gouwuche:before {
content: "\e60c";
}
.icon-dengdai:before {
content: "\e617";
}
.icon-dizhi:before {
content: "\e653";
}
.icon-yifahuo:before {
content: "\e607";
}
.icon-shoucang:before {
content: "\e601";
}
.icon-shouye1:before {
content: "\e605";
}
.icon-shangpinfenlei:before {
content: "\e60f";
}
.icon-quxiao:before {
content: "\e62e";
}
.icon-dengdaichuli:before {
content: "\e6ce";
}
.icon-duihao-copy:before {
content: "\e820";
}
.payboxs {
position: fixed;
width: 100%;
top: 0;
left: 0;
display: flex;
justify-content: space-between;
align-items: center;
background-color: #fff;
border-top: 1rpx solid #ebebeb;
box-shadow: 0rpx 2rpx 6rpx rgba(0,34,101,0.14);
}
.payboxs view {
padding: 31rpx 0 38rpx 0;
flex: 1;
text-align: center;
font-size: 32rpx;
}
.payactive {
border-bottom: 2rpx solid #e91b1d;
}
.payorder {
font-size: 24rpx;
}
.pays {
margin-top: 102rpx;
}
.payorder {
padding: 37rpx 0 30rpx 32rpx;
background-color: #fff;
}
.paylist {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx 52rpx 24rpx 33rpx;
background-color: #fff;
border-bottom: 1rpx solid #f5f5f5;
border-top: 1rpx solid #f5f5f5;
}
.paylist image {
height: 170rpx;
width: 170rpx;
}
.payright {
display: flex;
flex-direction: column;
justify-content: space-between;
flex: 3;
margin-left: 33rpx;
height: 100%;
}
.standard {
color: #999;
font-size: 26rpx;
padding: 20rpx 0;
}
.payprice {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 32rpx;
}
.payname {
font-size: 36rpx;
font-weight: 600;
}
.rightprice {
color: #f00;
}
.rightnum {
color: #333;
}
.gopay {
text-align: right;
padding: 37rpx 32rpx;
background-color: #fff;
display: flex;
align-items: center;
justify-content: flex-end;
}
.gopay text {
padding: 14rpx 32rpx;
border: 1px solid #f00;
color: #f00;
border-radius: 5rpx;
font-size: 26rpx;
margin: 0 0 0 25rpx;
}
.gopay text:active {
opacity: 0.7;
}
.paypay {
margin-bottom: 15rpx;
}
.goodsList {
background-color: #f5f9fa;
padding: 16rpx 24rpx;
box-sizing: border-box;
display: flex;
justify-content: space-between;
}
.goods_box {
margin-bottom: 16rpx;
background-color: #fff;
font-size: 24rpx;
width: 343rpx;
}
.goods_box image {
width: 100%;
border-radius: 5rpx;
}
.goods_name {
text-overflow: ellipsis;
padding: 0 8rpx;
margin-top: 32rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
white-space: nowrap;
width: 350rpx;
}
.price {
color: #f00;
padding: 0 8rpx;
}
.old_price {
text-decoration: line-through;
color: #666;
}
.waterfall {
column-count: 2;
column-gap: 1em;
}
.goods_box {
-webkit-column-break-inside: avoid;
break-inside: avoid;
}
.goodsnull {
display: flex;
justify-content: center;
align-items: center;
position: fixed;
height: 100%;
width: 100%;
left: 0;
top: 80rpx;
z-index: -1;
}
.goodsnull text {
color: #999;
font-size: 32rpx;
}
.stepper {
width: 100px;
height: 26px;
border-radius: 3px;
}
.stepper text {
width: 28px;
line-height: 26px;
text-align: center;
float: left;
background-color: #f0f1f5;
}
.stepper input {
width: 40px;
height: 26px;
float: left;
margin: 0 auto;
text-align: center;
font-size: 12px;
}
.stepper .normal {
color: black;
font-weight: 600;
}
.stepper .disabled {
color: #ccc;
}
.nooders {
text-align: center;
font-size: 24rpx;
color: #999;
padding: 35rpx 0;
display: block;
}
.tips1 text {
display: inline-block;
text-align: center;
padding: 20rpx 0;
color: #999;
font-size: 30rpx;
}
.loadingbox {
display: flex;
align-items: center;
width: 30%;
margin: 0 auto;
}
.tips1 {
text-align: center;
}
.tips1 image {
height: 32rpx;
width: 32rpx;
margin-right: 20rpx;
}
.price_box_month {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10rpx 10rpx 10rpx 0;
}
.price_box_month text {
font-weight: normal;
}
.accpet_box {
padding: 25rpx;
background-color: #fff;
}
.accept_item {
font-size: 28rpx;
color: #999;
margin-bottom: 15rpx;
}
.accpet_title {
padding: 20rpx 30rpx;
font-weight: bold;
font-size: 30rpx;
}
.sales {
padding: 0 0 10rpx 10rpx;
font-size: 20rpx;
}
\ No newline at end of file
... ...
var t = require("../../utils/network.js");
Page({
data: {
num: 1,
selectnum: [],
ouid: "",
carlist: [],
hasList: !1,
totalPrice: 0,
selected: !1,
totalnum: 0,
ids: ""
},
bindMinus: function(a) {
var e = this, i = a.currentTarget.dataset.index, s = this.data.carlist, c = parseInt(s[i].count), n = s[i].id;
s[i].count > 1 && (c -= 1, t.POST({
url: "Pay/update_car",
header: "application/x-www-form-urlencoded",
params: {
count: c,
id: n
},
success: function(t) {
e.setData({
carlist: s
}), e.getcartlist();
}
})), this.setData({
carlist: s
});
},
bindPlus: function(a) {
var e = this, i = a.currentTarget.dataset.index, s = this.data.carlist, c = parseInt(s[i].count), n = s[i].id;
c += 1, t.POST({
url: "Pay/update_car",
header: "application/x-www-form-urlencoded",
params: {
count: c,
id: n
},
success: function(t) {
e.setData({
carlist: s
}), e.getcartlist(), e.getTotalPrice();
}
});
},
bindManual: function(t) {
var a = t.detail.value;
this.setData({
num: a
});
},
onLoad: function(t) {
this.getTotalPrice();
},
getcartlist: function(a) {
var e = this;
t.GET({
url: "Pay/my_cars",
header: "application/x-www-form-urlencoded",
params: {
ouid: e.data.ouid
},
success: function(t) {
if (t.data.cars) {
var a = [];
a = t.data.cars;
for (var i = 0; i < a.length; i++) a[i].selected = !1;
}
e.setData({
carlist: a
});
}
});
},
selectList: function(t) {
var a = [], e = [], i = t.currentTarget.dataset.index, s = this.data.carlist, c = s[i].selected;
s[i].selected = !c;
for (var n = 0; n < this.data.carlist.length; n++) 1 == this.data.carlist[n].selected && (a.push(this.data.carlist[n].selected),
e.push(this.data.carlist[n].id));
this.setData({
carlist: s,
selected: c,
totalnum: a.length,
ids: e.join(",")
}), this.getTotalPrice();
},
getTotalPrice: function() {
for (var t = this.data.carlist, a = 0, e = 0; e < t.length; e++) t[e].selected && (a += t[e].count * t[e].pprice);
this.setData({
carlist: t,
totalPrice: a.toFixed(2)
});
},
deleteList: function(a) {
var e = this, i = a.currentTarget.dataset.index, s = this.data.carlist;
wx.showModal({
title: "确认删除商品吗",
content: "确定要删除该商品吗?",
success: function(a) {
a.confirm ? t.POST({
url: "Pay/delete_car",
header: "application/x-www-form-urlencoded",
params: {
ouid: e.data.ouid,
id: s[i].id
},
success: function(t) {
s.splice(i, 1), e.data.totalnum, e.setData({
carlist: s,
totalnum: 0,
totalPrice: 0
}), e.getcartlist();
}
}) : a.cancel && console.log("用户点击取消"), e.getTotalPrice();
}
}), s.length ? this.getTotalPrice() : this.setData({
carlist: s
});
},
topay: function() {
0 == this.data.totalnum ? wx.showToast({
title: "你还未选择商品",
icon: "none"
}) : wx.navigateTo({
url: "../my/pay/pay?ids=" + this.data.ids
});
},
onReady: function() {},
onShow: function() {
var t = this;
this.setData({
carlist: [],
totalnum: 0,
totalPrice: 0
}), wx.getStorage({
key: "ouid",
success: function(a) {
wx.showLoading({
title: "加载中..."
}), t.setData({
ouid: a.data
}), t.getcartlist(), wx.hideLoading();
}
});
},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "购物车"
}
\ No newline at end of file
... ...
<view class="nodata" wx:if="{{carlist.length==0}}">
购物车空空如也
</view>
<view class="carts" wx:else>
<view class="cartitem" wx:for="{{carlist}}" wx:key="{{item.id}}">
<view bindtap="selectList" class="cartbox" data-index="{{index}}" wx:if="{{item.selected}}">
<view class=" iconfont icon-duihao-copy"></view>
</view>
<view bindtap="selectList" class="cartbox" data-index="{{index}}" wx:else></view>
<navigator class="cartimg" url="../index/goodsdetail/goodsdetail?id={{item.gid}}">
<image src="{{item.thumb}}"></image>
</navigator>
<view class="cartright">
<view class="cartrightbox">
<text class="cartname">{{item.name}}</text>
<text bindtap="deleteList" class="del" data-index="{{index}}">删除</text>
</view>
<view class="cartrightbox">
<text class="cartstandard">{{item.standard}}</text>
<text class="del"></text>
</view>
<view class="cartrightbox">
<view class="prices">¥{{item.pprice}}</view>
<view class="stepper">
<text bindtap="bindMinus" class="minusStatus" data-index="{{index}}">-</text>
<input bindchange="bindManual" type="number" value="{{item.count}}"></input>
<text bindtap="bindPlus" class="normal" data-index="{{index}}">+</text>
</view>
</view>
</view>
</view>
</view>
<view class="payfor">
<view>合计:¥{{totalPrice}}</view>
<view bindtap="topay" class="paybtn">去结算
<text class="paynum"> ({{totalnum}})</text>
</view>
</view>
... ...
page {
background-color: #f5f9fa;
}
.carts {
padding-bottom: 150rpx;
}
.cartbox {
height: 32rpx;
width: 32rpx;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid #000;
overflow: hidden;
margin-right: 24rpx;
position: relative;
}
.cartbox::before {
content: '';
position: absolute;
top: -10rpx;
right: -10rpx;
bottom: -10rpx;
left: -10rpx;
}
.cartbox .icon-duihao-copy {
color: #000;
font-size: 32rpx;
font-weight: 600;
}
.cartitem {
display: flex;
align-items: center;
justify-content: space-between;
padding: 24rpx 32rpx 24rpx 24rpx;
height: 218rpx;
margin-top: 8rpx;
background-color: #fff;
}
.cartimg {
height: 170rpx;
width: 170rpx;
justify-content: center;
align-items: center;
display: flex;
border: 1px solid #eee;
}
.cartimg image {
height: 170rpx;
width: 170rpx;
}
.cartright {
display: flex;
flex-direction: column;
justify-content: space-between;
height: 218rpx;
padding: 0 0 10rpx 0;
flex: 2!important;
margin-left: 32rpx;
}
.cartrightbox {
display: flex;
align-items: center;
justify-content: space-between;
}
.cartname {
font-size: 36rpx;
margin-left: 32rpx;
text-overflow: ellipsis;
margin-top: 32rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
white-space: nowrap;
width: 350rpx;
}
.del {
font-size: 24rpx;
color: #f00;
}
.prices {
font-size: 32rpx;
color: #f00;
margin: 0 0 0 32rpx;
}
.cartstandard {
font-size: 24rpx;
color: #999;
margin: 10rpx 0 10rpx 32rpx;
}
.payfor {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0 0 33rpx;
font-size: 30rpx;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
z-index: 999;
background-color: #fff;
}
.paybtn {
padding: 33rpx 0;
text-align: center;
width: 250rpx;
background-color: #d70000;
color: #fff;
font-size: 36rpx;
}
.paynum {
font-size: 24rpx;
}
.paybtn:active {
opacity: 0.7;
}
.nodata {
position: fixed;
height: 100%;
width: 100%;
color: #999;
font-size: 40rpx;
display: flex;
justify-content: center;
align-items: center;
}
\ No newline at end of file
... ...
var t = require("../../utils/network.js");
Page({
data: {
terms: []
},
godetail: function(t) {
var n = t.currentTarget.dataset.id;
wx.navigateTo({
url: "detail/detail?term_id=" + n
});
},
onLoad: function(t) {
this.getterms();
},
getterms: function() {
var n = this;
new Object();
t.POST({
url: "Index/terms",
header: "application/x-www-form-urlencoded",
params: "",
success: function(t) {
"success" == t.data.state && n.setData({
terms: t.data.terms
});
},
fail: function() {}
});
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "分类"
}
\ No newline at end of file
... ...
<import src="../template/template.wxml"></import>
<view class="classList">
<view bindtap="godetail" class="classItem" data-id="{{item.term_id}}" style="background-image:url({{item.thumb}})" wx:for="{{terms}}" wx:key="item.name">
<view>{{item.name}}</view>
</view>
</view>
<template is="kefu" data></template>
... ...
page {
background-color: #F5F9FA;
}
.classList {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
padding: 25rpx 24rpx;
align-items: center;
}
.classItem {
display: flex;
width: 48.5%;
height: 243rpx;
justify-content: center;
align-items: center;
border-radius: 10rpx;
overflow: hidden;
color: #fff;
background-size: 100% 100%;
background-position: center;
margin: 0 8rpx 8rpx 0;
background-color: #fff;
}
.classItem:active {
opacity: 0.7;
}
\ No newline at end of file
... ...
function t(t, o, a) {
return o in t ? Object.defineProperty(t, o, {
value: a,
enumerable: !0,
configurable: !0,
writable: !0
}) : t[o] = a, t;
}
var o, a = require("../../../utils/network.js");
getApp();
Page({
data: (o = {
rankchecked: !0,
term_id: "",
scrollTop: 0,
scrollHeight: 0,
hidden: !0,
goodsList: [],
order: ""
}, t(o, "hidden", !1), t(o, "page", 1), t(o, "hasMore", !0), o),
getgoods: function(t) {
var o = this;
a.POST({
url: "index//ajax_goods_term",
header: "application/x-www-form-urlencoded",
params: {
p: o.data.page,
termid: o.data.term_id,
order: t
},
success: function(t) {
if (wx.showNavigationBarLoading(), "success" == t.data.state) {
console.log(t);
var a = t.data.goods;
o.setData({
goodsList: a
}), o.data.goodsList.length < 10 && o.setData({
hasMore: !1,
goodsList: a
}), wx.hideNavigationBarLoading();
}
}
});
},
loadMore: function() {
var t = this;
t.setData({
hasMore: !0
}), console.log(t.data.hasMore), t.data.hasMore && (++t.data.page, a.POST({
url: "index/ajax_goods_term",
header: "application/x-www-form-urlencoded",
params: {
p: t.data.page,
termid: t.data.term_id,
order: ""
},
success: function(o) {
wx.showNavigationBarLoading(), console.log(o.data.goods), "success" == o.data.state && (t.setData({
goodsList: t.data.goodsList.concat(o.data.goods),
hasMore: !1
}), wx.hideNavigationBarLoading());
}
}));
},
onLoad: function(t) {
this.getgoods(""), this.setData({
term_id: t.term_id
});
var o = this;
wx.getSystemInfo({
success: function(t) {
o.setData({
scrollHeight: t.windowHeight
});
}
}), o.getgoods("");
},
multiple: function() {
this.setData({
order: "",
page: 1
}), this.getgoods("");
},
sales: function() {
this.setData({
order: "sales",
page: 1
}), this.getgoods("sales");
},
lastnew: function() {
this.setData({
order: "add_time",
page: 1
}), this.getgoods("add_time");
},
price: function() {
"priceup" == this.data.order ? (this.setData({
order: "pricedown"
}), this.getgoods("pricedown")) : (this.setData({
order: "priceup"
}), this.getgoods("priceup"));
},
onReady: function() {
this.getgoods("");
},
onShow: function() {
this.getgoods("");
},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"onReachBottomDistance": 10,
"enablePullDownRefresh": true
}
\ No newline at end of file
... ...
<view class="ranktitle">
<view bindtap="multiple" class="{{order==''?'rankactive':''}}">
<text>综合</text>
</view>
<view bindtap="sales" class="{{order=='sales'?'rankactive':''}}">
<text>销量</text>
</view>
<view bindtap="lastnew" class="{{order=='add_time'?'rankactive':''}}">
<text>新品</text>
</view>
<view bindtap="price" class="pricerank">
<text class="{{order=='priceup'||order=='pricedown'?'rankactive':''}}">价格</text>
<view class="rankbtn">
<view class="iconfont icon-xiangshang {{order=='priceup'?'active':''}}"></view>
<view class="iconfont icon-xiangxia {{order=='pricedown'?'active':''}}"></view>
</view>
</view>
</view>
<scroll-view bindscrolltolower="loadMore" scrollTop="{{scrollTop}}" scrollY="true" style="height:{{scrollHeight}}px;">
<view class="goodsnull" wx:if="{{goodsList.length==0}}">
<view>
<text>暂无商品</text>
</view>
</view>
<view class="goodsList margin80" wx:else>
<view class="listitem left">
<view class="goods_box" data-index="{{index}}" wx:if="{{index%2==0}}" wx:for="{{goodsList}}" wx:key="{{item.id}}">
<navigator url="../../index/goodsdetail/goodsdetail?id={{item.id}}">
<image mode="widthFix" src="{{item.thumb}}"></image>
<view class="goods_name">{{item.name}}</view>
<view class="price_box_month">
<view>
<text class="price">¥{{item.pprice}}</text>
<text class="old_price">¥{{item.oprice}}</text>
</view>
</view>
<text class="sales">月销量:{{item.month_sale?item.month_sale:0}}</text>
</navigator>
</view>
</view>
<view class="listitem right">
<view class="goods_box" data-index="{{index}}" wx:if="{{index%2==1}}" wx:for="{{goodsList}}" wx:key="{{item.id}}">
<navigator url="../../index/goodsdetail/goodsdetail?id={{item.id}}">
<image mode="widthFix" src="{{item.thumb}}"></image>
<view class="goods_name">{{item.name}}</view>
<view class="price_box_month">
<view>
<text class="price">¥{{item.pprice}}</text>
<text class="old_price">¥{{item.oprice}}</text>
</view>
</view>
<text class="sales">月销量:{{item.month_sale?item.month_sale:0}}</text>
</navigator>
</view>
</view>
</view>
<view class="tips1">
<view class="loadingbox" wx:if="{{hasMore}}">
<image src="../../imgs/icon-loading.gif"></image>
<text>加载中...</text>
</view>
<view wx:else>
<text>没有更多内容了</text>
</view>
</view>
</scroll-view>
... ...
page {
background-color: #f5f9fa;
}
.goodsList {
display: flex;
justify-content: space-between;
padding: 0 10rpx;
}
.goodsList .listitem {
flex: 1;
}
.ranktitle {
display: flex;
justify-content: space-between;
padding: 32rpx 100rpx;
background-color: #fff;
align-items: center;
font-size: 28rpx;
color: #666;
position: fixed;
z-index: 100;
left: 0;
top: 0;
width: 100%;
box-shadow: 1rpx 0 1rpx rgba(0,0,0,0.08);
border-top: 1rpx solid #ebebeb;
}
.rankactive {
color: #000;
}
.rankbtn {
display: flex;
flex-direction: column;
align-items: center;
margin-left: 10rpx;
}
.rankbtn .iconfont {
font-size: 17rpx;
font-weight: 600;
}
.pricerank {
display: flex;
}
.margin80 {
margin-top: 100rpx;
}
.active {
color: #ffb866;
}
\ No newline at end of file
... ...
var t = require("../../../utils/network.js");
Page({
data: {
id: "",
commentlist: []
},
onLoad: function(t) {
var o = this;
wx.getStorage({
key: "ouid",
success: function(n) {
o.setData({
id: t.id,
ouid: n.data
}), o.good_comments();
}
});
},
previewImage1: function(t) {
var o = t.currentTarget.dataset.index, n = t.currentTarget.dataset.imgindex, e = this.data.commentlist[n].img;
console.log(e.length), console.log(n), wx.previewImage({
current: e[o],
urls: e
});
},
good_comments: function() {
var o = this;
t.POST({
url: "Index/good_comments",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
id: this.data.id
},
success: function(t) {
"success" == t.data.state && o.setData({
commentlist: t.data.comments
});
}
});
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{}
\ No newline at end of file
... ...
<view class="commentlist">
<view class="con" wx:for="{{commentlist}}" wx:for-index="imgindex" wx:key="{{item.create_time}}">
<view class="commentitem">
<view class="commentname">
<image src="{{item.head_img}}"></image>
<text>{{item.name}}</text>
</view>
<view class="commenttime">{{item.create_time}}</view>
</view>
<view class="comments">
{{item.content}}
</view>
<view class="imglist">
<view bindtap="previewImage1" data-imgindex="{{imgindex}}" data-index="{{index}}" wx:for="{{item.img}}" wx:for-item="i" wx:key="{{index}}">
<image src="{{i}}"></image>
</view>
</view>
</view>
</view>
... ...
.commentlist {
background-color: #F5F9FA;
}
.commentitem {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 24rpx;
padding: 0 32rpx;
}
.con {
background-color: #ffffff;
}
.commentname {
display: flex;
align-items: center;
}
.commentname image {
height: 60rpx;
width: 60rpx;
border-radius: 50%;
margin-right: 24rpx;
}
.commenttime {
color: #999;
}
.commentcontent {
padding: 28rpx 0;
font-size: 24rpx;
}
.comments {
font-size: 24rpx;
padding: 28rpx 32rpx;
}
.imglist {
display: flex;
align-items: center;
flex-wrap: wrap;
padding: 0 32rpx 36rpx 32rpx;
margin-bottom: 16rpx;
}
.imglist view {
height: 170rpx;
width: 170rpx;
display: flex;
align-items: center;
justify-content: center;
border: 1rpx solid #E4E4E4;
margin-right: 32rpx;
}
.imglist image {
height: 170rpx;
width: 170rpx;
}
\ No newline at end of file
... ...
var t = require("../../../utils/network.js"), a = [];
Page({
data: {
is_favour: 0,
info: [],
comments: [],
index: 1,
ouid: "",
ids: "",
id: "",
num: 1,
minusStatus: "disabled",
attrValueList: [],
selectName: "",
selectAttrid: [],
address: [],
redshow: !1,
iindex: 0
},
onSlideChangeEnd: function(t) {
this.setData({
index: t.detail.current + 1
});
},
onLoad: function(t) {
console.log(t), this.setData({
id: t.id,
selectName: ""
});
var a = this;
a.getdetail(), wx.getStorage({
key: "ouid",
success: function(t) {
console.log(t), a.setData({
ouid: t.data
}), a.init_attr(), a.carts();
}
});
},
previewImage1: function(t) {
var a = t.currentTarget.dataset.index, e = t.currentTarget.dataset.imgindex, s = this.data.comments[e].img;
console.log(s.length), console.log(e), wx.previewImage({
current: s[a],
urls: s
});
},
previewImage: function(t) {
var a = t.currentTarget.dataset.index, e = this.data.info.photo;
wx.previewImage({
current: e[a],
urls: e
});
},
onReady: function() {},
onShow: function() {
var t = this;
wx.getStorage({
key: "ouid",
success: function(a) {
console.log(a), t.setData({
ouid: a.data
}), t.setData({
selectName: "",
attrValueList: []
}), t.init_attr(), t.getdetail(), t.carts();
}
});
},
onHide: function() {},
getdetail: function() {
var a = this;
t.POST({
url: "Index/detail_good",
header: "application/x-www-form-urlencoded",
params: {
id: a.data.id
},
success: function(t) {
if (console.log(t), "success" == t.data.state) {
a.setData({
comments: t.data.comments,
info: t.data.info,
attrValueList: t.data.info.standard,
is_favour: t.data.is_favour
});
for (var e = a.data.attrValueList, s = 0; s < e.length; s++) for (var i = 0; i < e[s].stval.length; i++) e[s].attrValueStatus ? e[s].attrValueStatus[i] = !1 : (e[s].attrValueStatus = [],
e[s].attrValueStatus[i] = !1);
a.setData({
attrValueList: e
}), console.log(a.data.attrValueList);
} else wx.showToast({
title: "暂无数据",
icon: "none",
image: "",
duration: 2e3
});
},
fail: function(t) {
console.log(t);
}
});
},
onUnload: function() {},
onPullDownRefresh: function() {
this.getdetail();
},
onReachBottom: function() {},
onShareAppMessage: function() {
this.data.info;
var t = this.data.id;
return {
title: "礼寓Leemoral",
desc: this.data.info.name,
path: "/pages/index/goodsdetail/goodsdetail?id=" + t
};
},
gotoindex: function() {
wx.switchTab({
url: "../index"
});
},
collection: function() {
var a = this;
t.POST({
url: "User/do_favor",
header: "application/x-www-form-urlencoded",
params: {
ouid: a.data.ouid,
id: a.data.id,
is_favour: a.data.is_favour
},
success: function(t) {
"success" == t.data.state && a.setData({
is_favour: t.data.is_favour
}), wx.showToast({
title: t.data.msg,
duration: 2e3,
iocn: "success"
});
}
});
},
shopping: function() {
wx.switchTab({
url: "../../cart/cart"
});
},
tagChoose: function(t) {
for (var e = t.currentTarget.dataset.selectIndex, s = t.currentTarget.dataset.attrIndex, i = this.data.attrValueList, o = i[e].stval.length, n = 0; n < o; n++) i[e].attrValueStatus[n] = !1;
i[e].attrValueStatus[s] = !0;
var d = i[e].stval[s], r = "";
console.log(d), a[e] = d;
for (var u = a.length, n = 0; n < u; n++) console.log(i[e].attrValueStatus[s]),
void 0 != a[n] && 1 == i[e].attrValueStatus[s] && (console.log(a[n]), r += a[n] + ", ");
console.log("选择的" + r), r = r.substring(0, r.lastIndexOf(",")), this.setData({
attrValueList: i,
selectName: r
});
},
bindMinus: function() {
var t = this.data.num;
t > 1 && t--;
var a = t <= 1 ? "disabled" : "normal";
this.setData({
num: t,
minusStatus: a
});
},
bindPlus: function() {
var t = this.data.num, a = ++t < 1 ? "disabled" : "normal";
this.setData({
num: t,
minusStatus: a
});
},
bindManual: function(t) {
var a = t.detail.value;
this.setData({
num: a
});
},
cars: function() {
var t = this;
console.log(t.data.attrValueList);
var a = t.data.selectName.split(",");
"" == t.data.selectName || a.length < t.data.attrValueList.length ? wx.showToast({
title: "请选择商品规格",
icon: "none",
duration: 2e3
}) : (t.add_car(), t.setData({
redshow: !0
}), wx.showToast({
title: " 已加入购物车",
duration: 2e3,
icon: "none"
}));
},
add_car: function() {
var a = this, e = this.data.selectName.split(",");
console.log(e), "" == this.data.selectName || e.length < this.data.attrValueList.length ? wx.showToast({
title: "请选择商品规格",
icon: "none",
duration: 2e3
}) : t.POST({
url: "Pay/add_car",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
gid: this.data.id,
standard: this.data.selectName,
count: this.data.num
},
success: function(t) {
if (t.data.state = "success") {
var e = t.data.id;
e && a.setData({
ids: e
});
} else wx.showToast({
title: "请等待",
icon: "loding"
});
}
});
},
add_carnow: function() {
var a = this, e = this.data.selectName.split(",");
"" == this.data.selectName || e.length < this.data.attrValueList.length ? wx.showToast({
title: "请选择商品规格",
icon: "none",
duration: 2e3
}) : t.POST({
url: "Pay/add_carnow",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
gid: this.data.id,
standard: this.data.selectName,
count: this.data.num
},
success: function(t) {
if (t.data.state = "success") {
var e = t.data.id;
e && a.setData({
ids: e
});
} else wx.showToast({
title: "请等待",
icon: "loding"
});
}
});
},
morecomment: function() {
var t = this.data.info.id;
wx.navigateTo({
url: "../discuss/discuss?id=" + t
});
},
buy: function() {
var t = this, a = this.data.selectName.split(",");
"" == this.data.selectName || a.length < this.data.attrValueList.length ? wx.showToast({
title: "请选择商品规格",
icon: "none",
duration: 2e3
}) : (wx.showLoading({
title: "处理中...."
}), this.add_carnow(), setTimeout(function() {
wx.hideLoading(), wx.navigateTo({
url: "../../my/pay/pay?ids=" + t.data.ids + "&type=0"
});
}, 1e3));
},
carts: function() {
var a = this;
t.GET({
url: "Pay/my_cars",
header: "application/x-www-form-urlencoded",
params: {
ouid: a.data.ouid
},
success: function(t) {
t.data.cars ? a.setData({
redshow: !0
}) : a.setData({
redshow: !1
});
}
});
},
init_attr: function() {
var t = "", e = this.data.attrValueList;
a = [];
for (var s = e.length, i = 0; i < s; i++) a.push({
key: i,
value: e[i].stval[0]
}), t += ' "' + a[i].value + '" ';
var o = this.data.selectName;
o = t, this.setData({
selectName: o
});
}
});
\ No newline at end of file
... ...
{}
\ No newline at end of file
... ...
<view class="goodphotos">
<swiper bindchange="onSlideChangeEnd" class="swiperbox">
<swiper-item bindtap="previewImage" class="swiperitem" data-index="{{index}}" wx:for="{{info.photo}}" wx:key="item">
<image class="slide-image" mode="widthFix" src="{{item}}"></image>
</swiper-item>
</swiper>
<view bindtap="gotoindex" class="goindex">
<view class="iconfont icon-shouye1"></view>
</view>
<view class="swipernum">
<text>{{index}}</text>/
<text>{{info.photo.length}}</text>
</view>
</view>
<view>
<view class="nowprice">
<view>
<text>¥{{info.pprice}}</text>
<text class="oldprice">¥{{info.oprice}}</text>
</view>
<view class="sales sales_detial">月销量:{{info.month_sale?info.month_sale:0}}</view>
</view>
<view class="titlebox">
<text>{{info.name}}</text>
</view>
</view>
<view class="typebox" wx:for="{{attrValueList}}" wx:for-index="attrIndex" wx:key="{{item.stname}}">
<view class="typetitle">{{item.stname}}</view>
<view class="typecolor">
<text bindtap="tagChoose" class="{{item.attrValueStatus[index]?'actvietext':''}}" data-attr-index="{{index}}" data-select-index="{{attrIndex}}" wx:for="{{item.stval}}" wx:for-item="stvalName" wx:key="{{stvalName}}"> {{stvalName}}</text>
</view>
</view>
<view class="numbox">
<text>购买数量</text>
<view class="stepper">
<text bindtap="bindMinus" class="{{minusStatus}}">-</text>
<input bindchange="bindManual" type="number" value="{{num}}"></input>
<text bindtap="bindPlus" class="normal">+</text>
</view>
</view>
<view class="commenttitle">
<view class="left"></view>
<view class="commentitem">
<view class="iconfont icon-dengdai"></view>
<text>评论</text>
</view>
<view class="right"></view>
</view>
<view class="commentlist">
<view class="nullcomment" wx:if="{{comments==null}}">
暂无评论
</view>
<block wx:else>
<view wx:for="{{comments}}" wx:for-index="imgindex" wx:key="{{item.create_time}}">
<view class="commentitem">
<view class="commentname">
<image src="{{item.head_img}}"></image>
<text class="commentcontent">{{item.name}}</text>
</view>
<view class="commenttime">{{item.create_time}}</view>
</view>
<view class="comments">
{{item.content}}
</view>
<view class="imglist">
<view bindtap="previewImage1" data-imgindex="{{imgindex}}" data-index="{{index}}" wx:for="{{item.img}}" wx:for-item="i" wx:key="{{index}}">
<image src="{{i}}"></image>
</view>
</view>
<view class="hr"></view>
</view>
<view bindtap="morecomment" class="lookmore">查看全部评论</view>
</block>
</view>
<view class="commenttitle">
<view class="left"></view>
<view class="commentitem">
<view class="iconfont icon-xiangqing"></view>
<text>详情</text>
</view>
<view class="right"></view>
</view>
<view class="goodsdetail">
<view class="goodstitle">商品详情介绍</view>
<view class="content" wx:for="{{info.details}}" wx:key="item">
<image mode="widthFix" src="{{item}}"></image>
</view>
</view>
<view class="shoppingbox">
<view bindtap="shopping" class="shoppingitem">
<view class="iconfont icon-gouwuche"></view>
<text>购物车</text>
<view class="red" wx:if="{{redshow}}"></view>
</view>
<view bindtap="collection" class="shoppingitem">
<view class="iconfont {{is_favour==0?'icon-shoucang':'icon-shoucang1'}}"></view>
<text>收藏</text>
</view>
<view bindtap="cars" class="paycart">加入购物车</view>
<view bindtap="buy" class="paymoney">立即购买</view>
</view>
... ...
page {
background-color: #f5f9fa;
padding-bottom: 110rpx;
}
.swiperitem {
height: 800rpx;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
position: relative;
}
.swiperbox {
height: 800rpx;
overflow: hidden;
background-color: #fff;
position: relative;
}
.swipernum {
text-align: right;
padding: 0 33rpx 24rpx 33rpx;
font-size: 32rpx;
color: #666;
background-color: #fff;
border-bottom: 1px solid #f9f9f9;
}
.nowprice {
padding: 23rpx 0 0 32rpx;
background-color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
}
.nowprice text {
font-weight: 600;
font-size: 36rpx;
color: #f00;
}
.nowprice .oldprice {
font-size: 24rpx;
color: #666;
text-decoration: line-through;
margin-left: 22rpx;
font-weight: normal;
}
.titlebox {
padding: 36rpx 33rpx;
margin-bottom: 16rpx;
background-color: #fff;
font-size: 36rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
}
.typebox {
background-color: #fff;
font-size: 32rpx;
border-bottom: 1px solid #f9f9f9;
padding: 35rpx 0 0 0;
}
.typetitle {
padding: 0 0 0 31rpx;
}
.typecolor {
padding: 0 0 40rpx 0;
margin: 39rpx 32rpx 0 32rpx;
border-bottom: 1px solid #f9f9f9;
}
.typecolor text {
background-color: #f0f1f5;
min-width: 120rpx;
height: 70rpx;
text-align: center;
line-height: 70rpx;
color: #000;
display: inline-block;
font-size: 24rpx;
margin: 0 32rpx 10rpx 0;
border-radius: 10rpx;
}
.typecolor .actvietext {
background-color: #ffad02;
color: #fff;
}
.numbox {
display: flex;
justify-content: space-between;
padding: 36rpx 32rpx 36rpx 35rpx;
color: #333;
font-size: 32rpx;
background-color: #fff;
}
.min,.plus {
height: 60rpx;
width: 60rpx;
background-color: #f5f5f5;
line-height: 60rpx;
text-align: center;
font-size: 37rpx;
display: inline-block;
font-weight: 600;
}
.min {
margin-right: 40rpx;
}
.plus {
margin-left: 40rpx;
}
.commenttitle {
display: flex;
align-items: center;
font-size: 24rpx;
justify-content: space-between;
color: #666;
padding: 36rpx 165rpx;
}
.left,.right {
height: 1rpx;
width: 100rpx;
background-color: #666;
}
.commentitem {
display: flex;
align-items: center;
}
.commentitem .iconfont {
margin-right: 17rpx;
}
.commentlist {
padding: 56rpx 36rpx 42rpx 32rpx;
background-color: #fff;
}
.commentitem {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 24rpx;
}
.commentname {
display: flex;
align-items: center;
}
.commentname image {
height: 60rpx;
width: 60rpx;
border-radius: 50%;
margin-right: 24rpx;
}
.commenttime {
color: #999;
}
.commentcontent {
font-size: 24rpx;
padding: 28rpx 32rpx;
}
.lookmore {
width: 246rpx;
margin: 42rpx auto;
font-size: 24rpx;
padding: 18rpx 0;
text-align: center;
border: 1px solid #050001;
border-radius: 30rpx;
overflow: hidden;
}
.lookmore:active {
opacity: 0.7;
}
.goodsdetail {
background-color: #fff;
}
.goodstitle {
text-align: center;
padding: 36rpx 0;
font-size: 30rpx;
}
.content {
padding: 0 33rpx;
display: flex;
flex-direction: column;
width: 100%;
}
.content image {
width: 100%;
}
.shoppingbox {
height: 100rpx;
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 0 0 54rpx;
position: fixed;
width: 100%;
left: 0;
bottom: 0;
background-color: #fff;
font-size: 24rpx;
z-index: 9999;
border-top: 1px solid #e4e4e4;
}
.shoppingitem {
display: flex;
flex-direction: column;
align-items: center;
position: relative;
}
.shoppingbox view {
flex: 1;
}
.paycart,.paymoney {
padding: 0 40rpx;
line-height: 100rpx;
text-align: center;
background: linear-gradient(to right,#fec901,#fe9901);
color: #fff;
font-size: 26rpx;
}
.paymoney {
background: linear-gradient(to right,#fe7501,#ff4b00);
}
.paymoney:active,.paycart:active {
opacity: 0.7;
}
.nullcomment {
font-size: 32rpx;
text-align: center;
color: #999;
}
.icon-shoucang1 {
color: #f4ea2a;
}
.imglist {
display: flex;
align-items: center;
flex-wrap: wrap;
padding: 0 32rpx 36rpx 32rpx;
margin-bottom: 16rpx;
}
.imglist view {
height: 170rpx;
width: 170rpx;
display: flex;
align-items: center;
justify-content: center;
border: 1rpx solid #e4e4e4;
margin-right: 32rpx;
}
.imglist image {
height: 170rpx;
width: 170rpx;
}
.comments {
font-size: 24rpx;
padding: 28rpx 32rpx;
}
.hr {
height: 16rpx;
width: 100%;
background-color: #f5f9fa;
}
.red {
height: 15rpx;
width: 15rpx;
border-radius: 50%;
background-color: #d70000;
position: absolute;
right: 25rpx;
top: -5rpx;
}
.goodphotos {
position: relative;
}
.goodphotos .goindex {
position: absolute;
right: 25rpx;
top: 25rpx;
height: 80rpx;
width: 80rpx;
border-radius: 50%;
background-color: rgba(0,0,0,0.3);
color: #fff;
display: flex;
align-items: center;
justify-content: center;
z-index: 3;
}
.goodphotos .goindex .iconfont {
font-size: 40rpx;
}
.sales_detial {
margin: 0 25rpx 0 0;
padding: 0;
font-size: 30rpx;
color: #333;
}
\ No newline at end of file
... ...
require("../../utils/util.js");
var a = require("../../utils/network.js");
require("../../utils/util.js"), getApp();
Page({
data: {
banners: [],
recom: [],
scrollHeight: 0,
goods: [],
code: "",
hidden: !1,
page: 1,
hasMore: !0,
hasRefesh: !1
},
getgoods: function() {
var e = this;
a.POST({
url: "index/ajax_goods_home",
header: "application/x-www-form-urlencoded",
params: {
p: e.data.page
},
success: function(a) {
if (console.log(a), wx.showNavigationBarLoading(), "success" == a.data.state) {
var o = a.data.goods;
e.setData({
goods: o
}), wx.hideNavigationBarLoading();
}
}
});
},
loadMore: function(e) {
var o = this;
o.setData({
hasMore: !0
}), o.data.hasMore && (++o.data.page, a.POST({
url: "index/ajax_goods_home",
header: "application/x-www-form-urlencoded",
params: {
p: o.data.page
},
success: function(a) {
console.log(a), wx.showNavigationBarLoading(), "success" == a.data.state && (o.setData({
goods: o.data.goods.concat(a.data.goods),
hasMore: !1
}), wx.hideNavigationBarLoading());
}
}));
},
goSearch: function() {
wx.navigateTo({
url: "search/search"
});
},
gogoods: function(a) {
var e = a.currentTarget.id;
wx.navigateTo({
url: "goodsdetail/goodsdetail?id=" + e
});
},
onLoad: function() {
var a = this;
wx.getSystemInfo({
success: function(e) {
a.setData({
scrollHeight: e.windowHeight
});
}
}), a.getgoods();
},
getopenid: function() {
var e = this;
wx.getStorage({
key: "userInfo",
success: function(o) {
a.POST({
url: "User/register",
header: "application/x-www-form-urlencoded",
params: {
code: e.data.code,
nickname: o.nickName,
headimg: o.avatarUrl
},
success: function(a) {
wx.setStorage({
key: "ouid",
data: a.data.ouid
});
},
fail: function() {}
});
}
});
},
getbanner: function() {
var e = this;
new Object();
a.GET({
url: "index/index",
header: "application/x-www-form-urlencoded",
params: "",
success: function(a) {
200 == a.statusCode && e.setData({
banners: a.data.banners,
recom: a.data.recom
});
},
fail: function() {}
});
},
onShow: function() {
this.getbanner();
},
onShareAppMessage: function(a) {
return a.from, {
title: "礼寓Leemoral",
path: "/pages/index/index",
success: function(a) {
wx.showToast({
title: "转发成功"
});
},
fail: function(a) {
wx.showToast({
title: "转发取消",
icon: "none"
});
}
};
}
});
\ No newline at end of file
... ...
{
" enablePullDownRefresh": true
}
\ No newline at end of file
... ...
<import src="../template/template.wxml"></import>
<scroll-view scrollY bindscrolltolower="loadMore" style="height:{{scrollHeight}}px;">
<view bindtap="goSearch" class="input_box index_box ">
<icon class="iconfont" size="13" type="search"></icon>
<text class="place">搜索美食、家居和配饰</text>
</view>
<swiper autoplay="true" class="swiper" duration="1000" interval="3000">
<swiper-item data-id="{{index}}" wx:for="{{banners}}" wx:key="{{index}}">
<image class="slide-image" mode="scaleToFill" src="{{item.slide_pic}}"></image>
</swiper-item>
</swiper>
<view class="index_title">
<view class="iconfont icon-jingpin"></view>
<text>精品推荐</text>
<view class="iconfont icon-jingpin"></view>
</view>
<view class="recommendlist">
<view class="recommend" wx:for="{{recom}}" wx:key="{{item.id}}">
<navigator hoverClass="none" url="goodsdetail/goodsdetail?id={{item.id}}">
<view class="recommend_item">
<image mode="widthFix" src="{{item.thumb}}"></image>
</view>
</navigator>
<text>{{item.name}}</text>
</view>
</view>
<view class="goodsList">
<view class="listitem left">
<view class="goods_box" data-index="{{index}}" wx:if="{{index%2==0}}" wx:for="{{goods}}" wx:key="{{item.id}}">
<navigator hoverClass="none" url="goodsdetail/goodsdetail?id={{item.id}}">
<image mode="widthFix" src="{{item.thumb}}"></image>
<view class="goods_name">{{item.name}} </view>
<view class="price_box_month">
<view>
<text class="price">¥{{item.pprice}}</text>
<text class="old_price">¥{{item.oprice}}</text>
</view>
</view>
<text class="sales">月销量:{{item.month_sale?item.month_sale:0}}</text>
</navigator>
</view>
</view>
<view class="listitem right">
<view class="goods_box" data-index="{{index}}" wx:if="{{index%2==1}}" wx:for="{{goods}}" wx:key="{{item.id}}">
<navigator hoverClass="none" url="goodsdetail/goodsdetail?id={{item.id}}">
<image mode="widthFix" src="{{item.thumb}}"></image>
<view class="goods_name">{{item.name}}</view>
<view class="price_box_month">
<view>
<text class="price">¥{{item.pprice}}</text>
<text class="old_price">¥{{item.oprice}}</text>
</view>
</view>
<text class="sales">月销量:{{item.month_sale?item.month_sale:0}}</text>
</navigator>
</view>
</view>
<view>
<template is="kefu" data></template>
</view>
</view>
<view class="tips1">
<view class="loadingbox" wx:if="{{hasMore}}">
<image src="../imgs/icon-loading.gif"></image>
<text>加载中...</text>
</view>
<view wx:else>
<text>没有更多内容了</text>
</view>
</view>
</scroll-view>
... ...
.swiper {
height: 300rpx;
overflow: hidden;
margin-top: 130rpx;
}
.slide-image {
height: 315rpx;
width: 100%;
}
.index_title .iconfont {
margin: 0 18rpx;
}
.index_title {
width: 257rpx;
text-align: center;
display: flex;
align-items: center;
margin: 40rpx auto;
font-size: 30rpx;
}
.recommendlist {
display: flex;
padding: 0 24rpx 60rpx 24rpx;
}
.recommend {
display: flex;
flex-direction: column;
align-items: center;
width: 33%;
}
.recommend_item {
display: flex;
align-items: center;
justify-content: center;
height: 210rpx;
width: 210rpx;
padding: 20rpx;
border-radius: 50%;
overflow: hidden;
box-shadow: 0rpx 4rpx 4rpx rgba(0,0,0,0.2);
margin-bottom: 24rpx;
}
.recommend_item image {
height: 140rpx;
width: 140rpx;
}
.recommend text {
font-size: 24rpx;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 1;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 100%;
text-align: center;
}
navigator:active {
background: none;
}
\ No newline at end of file
... ...
var t = require("../../../utils/network.js");
Page({
data: {
info: [],
type: "",
id: "",
goods: [],
num: ""
},
onLoad: function(t) {
var a = this;
wx.getStorage({
key: "ouid",
success: function(t) {
a.setData({
ouid: t.data
});
}
}), this.setData({
id: t.id,
type: t.type,
num: t.num
}), this.getdetial();
},
getdetial: function() {
var a = this;
t.POST({
url: "User/detail_order",
header: "application/x-www-form-urlencoded",
params: {
id: this.data.id
},
success: function(t) {
console.log(t), a.setData({
info: t.data.info,
goods: t.data.details
});
}
});
},
pay_order: function(a) {
for (var e = a.currentTarget.dataset.id, o = this.data.info, i = 0, n = 0; n < o.length; n++) i += o[n].count * details[n].pprice;
t.POST({
url: "Pay/pay_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
oid: e,
money: i
},
success: function(t) {
t.data && wx.requestPayment({
timeStamp: t.data.timeStamp,
nonceStr: t.data.nonceStr,
package: t.data.package,
signType: t.data.signType,
paySign: t.data.paySign,
success: function(t) {
wx.redirectTo({
url: "../../my/delivery/delivery"
});
},
fail: function(t) {}
});
}
});
},
pay_order2: function(a) {
var e = this, o = a.currentTarget.dataset.id;
this.data.info;
wx.showModal({
title: "确认收货",
content: "确定已经收到货?",
success: function(a) {
a.confirm ? t.POST({
url: "User/order_finish",
header: "application/x-www-form-urlencoded",
params: {
ouid: e.data.ouid,
id: o
},
success: function(t) {
"success" == t.data.state ? (wx.showToast({
title: t.data.msg,
icon: "success"
}), wx.navigateBack({
delta: 1
})) : wx.showToast({
title: t.data.msg,
icon: "none"
});
}
}) : a.cancel;
}
});
},
onReady: function() {},
del_order: function(a) {
var e = a.currentTarget.dataset.id;
this.data.info;
t.POST({
url: "User/del_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
id: e
},
success: function(t) {
wx.showLoading({
title: "处理中..."
}), "success" == t.data.state ? (wx.hideLoading(), wx.redirectTo({
url: "../../my/completed/completed"
})) : wx.showLoading({
title: "处理中..."
});
},
fail: function(t) {}
});
},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{}
\ No newline at end of file
... ...
<view class="pbox" wx:if="{{type==0}}">
<view class="iconfont icon-dengdaichuli"></view>
<text>待付款</text>
</view>
<view class="pbox" wx:elif="{{type==1}}">
<view class="iconfont icon-dengdai"></view>
<text>待发货</text>
</view>
<view class="pbox" wx:elif="{{type==2}}">
<view class="iconfont icon-dengdaichuli"></view>
<text>已发货</text>
</view>
<view class="pbox" wx:elif="{{type==3}}">
<view class="iconfont icon-wancheng"></view>
<text>已完成</text>
</view>
<view class="addbox">
<view class="payname">
<text>收货人:<text>{{info.name}}</text>
</text>
<text>{{info.tel}}</text>
</view>
<view class="payadd">
<view class="iconfont icon-dizhi"></view>
<text>收货地址:
<text>{{info.addr}} </text>
</text>
</view>
<image src="../../src/img/add.png"></image>
</view>
<view class="goodsbox" wx:for="{{goods}}" wx:key="item.id">
<image src="{{item.thumb}}"></image>
<view class="goods">
<view class="goodsname">
<text>{{item.name}}</text>
<text class="comment" wx:if="{{type==3}}">已评价</text>
</view>
<view class="goodstype">
<text>{{item.standard?item.standard:''}}</text>
</view>
<view class="pricebox">
<text class="goodsprice">¥{{item.pprice}}</text>
<text>X{{item.count}}</text>
</view>
</view>
</view>
<view class="orderbox">
<view wx:if="{{type!=4}}"></view>
<view class="orderitem" wx:else>
<text>订单编号:{{info.num}}</text>
<text></text>
</view>
<view class="orderitem">
<text>快递方式</text>
<text>快递</text>
</view>
<view class="orderitem">
<text>免运费</text>
<text></text>
</view>
<view class="orderitem leavebox">
<text>我的留言:</text>
<text class="leave">{{info.leave}}</text>
</view>
<view class="orderitem">
<text></text>
<text>共计:<text class="totalprice">¥{{info.total}}</text>
</text>
</view>
</view>
<view class="delbox" wx:if="{{type==0}}">
<view class="orderitem">
<text></text>
<text bindtap="pay_order" class="del" data-id="{{info.id}}">去支付</text>
</view>
</view>
<view class="delbox" wx:elif="{{type==2}}">
<view class="orderitem">
<text></text>
<text bindtap="pay_order2" class="del" data-id="{{info.id}}">确认收货</text>
</view>
</view>
<view class="delbox" wx:elif="{{type==3}}">
<view class="orderitem">
<text></text>
<text bindtap="del_order" class="del {{type==3?'dels':''}}" data-id="{{info.id}}">删除订单</text>
</view>
</view>
<view class="delbox" wx:else>
<view></view>
</view>
... ...
page {
background-color: #f5f9fa;
}
.addbox {
background-color: #fff;
color: #000;
margin-bottom: 16rpx;
}
.addbox image {
width: 100%;
}
.pbox {
display: flex;
padding: 24rpx 32rpx;
font-size: 30rpx;
}
.pbox .iconfont {
margin-right: 16rpx;
}
.payname {
display: flex;
align-items: center;
font-size: 32rpx;
justify-content: space-between;
padding: 35rpx 95rpx;
}
.payadd {
display: flex;
align-items: center;
padding: 0 82rpx 33rpx 0;
}
.payadd .iconfont {
padding: 13rpx 32rpx;
}
.payadd text {
font-size: 26rpx;
color: #333;
}
.addbox image {
height: 14rpx;
}
.goodsbox {
display: flex;
justify-content: space-between;
padding: 32rpx 32rpx 42rpx 32rpx;
background-color: #fff;
}
.goodsbox image {
height: 170rpx;
width: 170rpx;
margin-right: 20rpx;
}
.goods {
display: flex;
flex: 2;
flex-direction: column;
justify-content: space-between;
}
.goodsname {
display: flex;
justify-content: space-between;
font-size: 36rpx;
font-weight: 600;
align-items: center;
}
.goodsname .comment {
color: #ff000e;
font-size: 24rpx;
}
.goodstype {
font-size: 28rpx;
color: #999;
}
.pricebox {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 36rpx;
color: #000;
}
.goodsprice {
color: #f00;
font-size: 30rpx;
}
.orderbox {
background-color: #fff;
margin: 16rpx 0 200rpx 0;
padding-bottom: 150rpx;
}
.orderitem {
display: flex;
justify-content: space-between;
align-items: center;
padding: 41rpx 0;
margin: 0 32rpx;
border-bottom: 1px #e6e7eb solid;
font-size: 30rpx;
color: #000;
background-color: #fff;
}
.orderitem:last-child {
border: 0;
}
.totalprice {
color: #f00;
}
.del {
font-size: 32rpx;
border: 1px solid #f00;
border-radius: 35rpx;
padding: 15rpx 0;
text-align: center;
width: 200rpx;
color: #f00;
}
.buy {
position: fixed;
bottom: 0;
margin: 0;
width: 100%;
justify-content: flex-end;
padding: 0 0 0 32rpx;
}
.delbox {
background-color: #fff;
position: fixed;
bottom: 0;
width: 100%;
left: 0;
}
.del:active {
opacity: 0.7;
}
.dels {
color: #000;
border: 1rpx solid #000;
}
.orderok {
background: linear-gradient(to right,#fe7501,#ff4b00);
padding: 35rpx 45rpx;
color: #fff;
}
.orderok:active {
opacity: 0.7;
}
.money {
color: #f00;
margin-right: 40rpx;
}
.payadd .none {
color: #999;
font-size: 24rpx;
}
.leavebox {
justify-content: inherit;
}
.leave {
color: #999;
text-align: left;
margin: 0 0 0 30rpx;
}
\ No newline at end of file
... ...
require("../../../utils/network.js");
var a = require("../../../utils/util.js");
Page({
data: {
keyword: "",
searchSongList: [],
isFromSearch: !0,
searchPageNum: 0,
callbackcount: "",
searchLoading: !1,
searchLoadingComplete: !1
},
cancel: function() {
wx.navigateBack({
delta: 1
});
},
onLoad: function(a) {},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onShareAppMessage: function() {},
bindKeywordInput: function(a) {
this.setData({
keyword: a.detail.value
});
},
fetchSearchList: function() {
var e = this, t = e.data.keyword, o = e.data.searchPageNum;
e.data.callbackcount;
a.getSearchMusic(t, o, function(a) {
if (a) {
var t = [];
0 == (t = e.data.isFromSearch ? a.goods : e.data.searchSongList.concat(a.goods)).length ? wx.showToast({
title: "暂无商品",
icon: "fail"
}) : e.setData({
searchSongList: t,
searchLoading: !0
});
} else e.setData({
searchLoadingComplete: !0,
searchLoading: !1
});
});
},
keywordSearch: function(a) {
"" == this.data.keyword ? wx.showToast({
title: "请输入查询内容",
icon: "none"
}) : (this.setData({
searchPageNum: 0,
searchSongList: [],
isFromSearch: !0,
searchLoading: !0,
searchLoadingComplete: !1
}), this.fetchSearchList());
},
searchScrollLower: function() {
var a = this;
a.data.searchLoading && !a.data.searchLoadingComplete && (a.setData({
searchPageNum: a.data.searchPageNum + 1,
isFromSearch: !1
}), a.fetchSearchList());
}
});
\ No newline at end of file
... ...
{}
\ No newline at end of file
... ...
<view class="input_box searchbox ">
<icon class="iconfont" size="13" type="search"></icon>
<input autoFocus bindconfirm="keywordSearch" bindinput="bindKeywordInput" confirmType="search" placeholder="搜索美食、家居和配饰" placeholderClass="place" type="text" value="{{keyword}}"></input>
<view class="searchbtn">
<text bindtap="keywordSearch" wx:if="{{keyword}}">搜索</text>
<text bindtap="cancel" wx:else>取消</text>
</view>
</view>
<view wx:if="{{searchSongList.length==0}}"></view>
<scroll-view bindscrolltolower="searchScrollLower" class="searchResult" scrollY="true" wx:else>
<view class="goodsList">
<view class="waterfall">
<view class="goods_box" data-data="{{item}}" wx:for="{{searchSongList}}" wx:key="{{item.id}}">
<navigator url="../goodsdetail/goodsdetail?id={{item.id}}">
<image mode="widthFix" src="{{item.thumb}}"></image>
</navigator>
<view bindtap="gogoods" class="goods_name">{{item.name}}</view>
<view>
<text class="price">¥{{item.pprice}}</text>
<text class="old_price">¥{{item.oprice}}</text>
</view>
</view>
</view>
</view>
</scroll-view>
... ...
.searchbtn {
position: absolute;
right: -80rpx;
color: #999;
font-size: 24rpx;
}
.searchResult {
margin-top: 80rpx;
}
.loading {
padding: 10rpx;
text-align: center;
font-size: 25rpx;
}
.loading:before {
display: inline-block;
margin-right: 5rpx;
vertical-align: middle;
content: '';
width: 40rpx;
height: 40rpx;
animation: rotate 1s linear infinite;
}
.loading.complete:before {
display: none;
}
\ No newline at end of file
... ...
var t = require("../../../utils/util.js"), e = require("../../../utils/network.js"), i = require("../../../utils/util.js");
Page({
data: {
coment: "",
id: "",
ouid: "",
gid: "",
odid: "",
commentlist: [],
pics: [],
imgs: [],
lenMore: 1
},
changeText: function(t) {
this.setData({
coment: t.detail.value
});
},
comment: function() {
var t = this;
e.POST({
url: "User/comment",
header: "application/x-www-form-urlencoded",
params: {
id: this.data.odid
},
success: function(e) {
"success" == e.data.state && t.setData({
commentlist: e.data.good
});
}
});
},
subcomment: function(i) {
var a = this.data.commentlist;
if ("" == this.data.coment) wx.showToast({
title: "请输入评论内容",
icon: "none",
duration: 2e3
}); else {
var o = this;
wx.getStorage({
key: "ouid",
success: function(i) {
o.setData({
ouid: i.data
}), e.POST({
url: "User/do_comment",
header: "application/x-www-form-urlencoded",
params: {
id: a.id,
ouid: o.data.ouid,
gid: a.gid,
content: o.data.coment,
pic: t.imgs
},
success: function(t) {
wx.showToast({
title: t.data.msg
}), wx.navigateBack({
delta: 1
});
}
});
}
});
}
},
onLoad: function(t) {
console.log(t), this.setData({
odid: t.odid
}), this.comment();
},
choose: function() {
var t = this, e = this.data.pics;
wx.chooseImage({
count: 3 - e.length,
sizeType: [ "original", "compressed" ],
sourceType: [ "album", "camera" ],
success: function(i) {
var a = i.tempFilePaths;
e = e.concat(a), t.setData({
pics: e
});
},
fail: function() {},
complete: function() {
t.uploadimg();
}
});
},
uploadimg: function() {
var t = this.data.pics;
i.uploadimg({
url: "https://leemoral.wx.bronet.cn/index.php/Api/User/upload_wxpic",
path: t
});
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {},
delpic: function(t) {
var e = this.data.pics, i = t.currentTarget.dataset.index;
e.splice(i, 1), this.setData({
pics: e
});
},
previewImage: function(t) {
var e = t.currentTarget.dataset.index, i = this.data.pics;
wx.previewImage({
current: i[e],
urls: i
});
}
});
\ No newline at end of file
... ...
{}
\ No newline at end of file
... ...
<form>
<view bindtap="upimg" class="goodsbox">
<image src="{{commentlist.thumb}}"></image>
<view class="goods">
<view class="goodsname">
<text>{{commentlist.name}}</text>
</view>
<view class="goodstype">
<text>{{commentlist.standard?commentlist.standard:''}}</text>
</view>
<view class="pricebox">
<text class="goodsprice">¥{{commentlist.pprice}}</text>
<text>X{{commentlist.count}}</text>
</view>
</view>
</view>
<view class="content">
<textarea bindinput="changeText" placeholder="请填写您对本商品评价" placeholderClass="comments"></textarea>
</view>
<view class="imglist ">
<view class="img_itembox " wx:for="{{pics}}">
<view bindtap="previewImage" class="img_item " data-index="{{index}}">
<image src="{{item}}"></image>
</view>
<view catchtap="delpic" class="iconfont icon-quxiao" data-index="{{index}}"></view>
</view>
<view bindtap="choose" class="img_itembox addbgc " wx:if="{{pics.length<3}}">
<view class="img_item">
<view class="iconfont icon-tianjia"></view>
<text>添加图片</text>
</view>
</view>
</view>
</form>
<view bindtap="subcomment" class="subtn ">
<text>提交评价</text>
</view>
... ...
page {
background-color: #f5f9fa;
padding-bottom: 100rpx;
}
.goodsbox {
display: flex;
justify-content: space-between;
padding: 32rpx 32rpx 42rpx 32rpx;
background-color: #fff;
}
.goodsbox image {
height: 170rpx;
width: 170rpx;
margin-right: 20rpx;
}
.goods {
display: flex;
flex: 2;
flex-direction: column;
justify-content: space-between;
}
.goodsname {
display: flex;
justify-content: space-between;
font-size: 36rpx;
font-weight: 600;
align-items: center;
}
.goodsname .comment {
color: #ff000e;
font-size: 24rpx;
}
.goodstype {
font-size: 28rpx;
color: #999;
}
.pricebox {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 36rpx;
color: #000;
}
.goodsprice {
color: #f00;
font-size: 30rpx;
}
.content {
height: 330rpx;
background-color: #f5f5f5;
padding: 24rpx 33rpx;
font-size: 24rpx;
}
.content textarea {
height: 330rpx;
width: 100%;
line-height: 44rpx;
}
.comments {
color: #ccc;
font-size: 24rpx;
}
.imglist {
display: flex;
align-items: center;
flex-wrap: wrap;
padding: 32rpx;
}
.img_itembox {
display: flex;
justify-content: center;
align-items: center;
width: 33%;
color: #afb0b3;
font-size: 26rpx;
overflow: hidden;
height: 180rpx;
position: relative;
margin-bottom: 20rpx;
}
.img_itembox .icon-quxiao {
position: absolute;
right: 0;
top: 0;
z-index: 99;
}
.img_item image {
height: 180rpx;
width: 180rpx;
}
.addbgc {
background-color: #f0f1f5;
border-radius: 5rpx;
}
.img_item .icon-tianjia {
margin-bottom: 20rpx;
}
.img_item {
display: flex;
flex-direction: column;
align-items: center;
}
.subtn {
background-color: #e51617;
box-shadow: 1rpx 0 2rpx rgba(0,0,0,0.08);
color: #fff;
text-align: center;
padding: 35rpx 0;
position: fixed;
bottom: 0;
left: 0;
width: 100%;
font-size: 32rpx;
}
\ No newline at end of file
... ...
var e = require("../../../utils/network.js");
Page({
data: {
ouid: "",
status: 3,
orders: [],
odid: ""
},
my_order: function() {
var t = this;
e.POST({
url: "User/my_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: t.data.ouid,
status: t.data.status
},
success: function(e) {
(e.data.state = "success") && t.setData({
orders: e.data.orders
});
}
});
},
payment: function() {
wx.redirectTo({
url: "../payment/payment"
});
},
delivery: function() {
wx.redirectTo({
url: "../delivery/delivery"
});
},
shipped: function() {
wx.redirectTo({
url: "../shipped/shipped"
});
},
completed: function() {
wx.redirectTo({
url: "../completed/completed"
});
},
pay: function() {
wx.navigateTo({
url: "../pay/pay?type=3"
});
},
gocomment: function(e) {
var t = e.currentTarget.dataset.odid;
this.setData({
odid: t
}), wx.navigateTo({
url: "../comment/comment?odid=" + this.data.odid
});
},
onLoad: function(e) {},
del_order: function(t) {
var o = t.currentTarget.dataset.id, a = t.currentTarget.dataset.index, n = this.data.orders, d = this;
wx.showModal({
title: "确认删除订单",
content: "确定要删除订单吗?",
success: function(t) {
t.confirm ? e.POST({
url: "User/del_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: d.data.ouid,
id: o
},
success: function(e) {
wx.showLoading({
title: "处理中..."
}), "success" == e.data.state ? (n.splice(a, 1), d.setData({
orders: n
}), wx.hideLoading(), d.my_order()) : wx.showLoading({
title: "处理中..."
});
},
fail: function(e) {}
}) : t.cancel && console.log("用户点击取消");
}
});
},
onReady: function() {},
onShow: function() {
var e = this;
wx.getStorage({
key: "ouid",
success: function(t) {
e.setData({
ouid: t.data
}), e.my_order();
}
});
},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "已完成",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff"
}
\ No newline at end of file
... ...
<view class="payboxs">
<view bindtap="payment">
<text>待付款</text>
</view>
<view bindtap="delivery">
<text>待发货</text>
</view>
<view bindtap="shipped">
<text>已发货</text>
</view>
<view class="payactive">
<text>已完成</text>
</view>
</view>
<view class="pays" wx:if="{{!orders}}">
<text class="nooders">暂无已完成订单</text>
</view>
<view class="pays">
<view class="paypay" data-id="{{item.id}}" wx:for="{{orders}}" wx:key="{{item.id}}">
<view class="payorder">
<text>订单编号: {{item.num}}</text>
</view>
<view class="paylist" wx:for="{{item.details}}" wx:for-item="i" wx:key="{{i}}">
<navigator url="../../index/paydetail/paydetail?id={{item.id}}&type=3&is_comment={{i.is_comment}}">
<image src="{{i.thumb}}"></image>
</navigator>
<view class="payright">
<view class="commentbox">
<text class="payname">{{i.name}}</text>
<text bindtap="gocomment" class="comment" data-odid="{{i.odid}}" wx:if="{{i.is_comment==0}}">评价商品</text>
<text class="comment" data-odid="{{i.odid}}" wx:else>已评价</text>
</view>
<view class="payprice">
<text class="rightprice">¥{{i.pprice}}</text>
<text class="rightnum">数量:{{i.count}}</text>
</view>
</view>
</view>
<view class="gopay">
<text bindtap="del_order" data-id="{{item.id}}" data-index="{{index}}">删除订单</text>
</view>
</view>
</view>
... ...
page {
background-color: #F5F9FA;
}
.commentbox {
display: flex;
justify-content: space-between;
align-items: center;
}
.comment {
font-size: 24rpx;
color: #FF0000;
}
\ No newline at end of file
... ...
var e = require("../../../utils/network.js");
Page({
data: {
ouid: "",
status: 1,
orders: []
},
my_order: function() {
var o = this;
e.POST({
url: "User/my_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: o.data.ouid,
status: o.data.status
},
success: function(e) {
o.setData({
orders: e.data.orders
});
}
});
},
payment: function() {
wx.redirectTo({
url: "../payment/payment"
});
},
delivery: function() {
wx.redirectTo({
url: "../delivery/delivery"
});
},
shipped: function() {
wx.redirectTo({
url: "../shipped/shipped"
});
},
completed: function() {
wx.redirectTo({
url: "../completed/completed"
});
},
pay: function() {
wx.navigateTo({
url: "../pay/pay?type=1"
});
},
onLoad: function(e) {},
onReady: function() {},
onShow: function() {
var e = this;
wx.getStorage({
key: "ouid",
success: function(o) {
e.setData({
ouid: o.data
}), e.my_order();
}
});
},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "待发货",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff"
}
\ No newline at end of file
... ...
<view class="payboxs">
<view>
<text bindtap="payment">待付款</text>
</view>
<view class="payactive">
<text>待发货</text>
</view>
<view bindtap="shipped">
<text>已发货</text>
</view>
<view bindtap="completed">
<text>已完成</text>
</view>
</view>
<view class="pays" wx:if="{{!orders}}">
<text class="nooders">暂无待发货订单</text>
</view>
<view class="pays" wx:else>
<view class="paypay" data-id="{{item.id}}" wx:for="{{orders}}" wx:key="{{item.id}}">
<view class="payorder">
<text>订单编号: {{item.num}}</text>
</view>
<view class="paylist" wx:for="{{item.details}}" wx:for-item="i" wx:key="{{i}}">
<navigator url="../../index/paydetail/paydetail?id={{item.id}}&type=1">
<image src="{{i.thumb}}"></image>
</navigator>
<view class="payright">
<view>
<text class="payname">{{i.name}}</text>
</view>
<view class="payprice">
<text class="rightprice">¥{{i.pprice}}</text>
<text class="rightnum">数量:{{i.count}}</text>
</view>
</view>
</view>
</view>
</view>
... ...
page {
background-color: #F5F9FA;
}
\ No newline at end of file
... ...
var n = require("../../../utils/network.js");
Page({
data: {
tracking_code: "",
tracking_num: "",
num: ""
},
logistics: function(a) {
var t = this;
n.GET({
url: "User/getOrderTraces",
header: "application/x-www-form-urlencoded",
params: {
OrderCode: t.data.num,
ShipperCode: t.data.tracking_code,
LogisticCode: t.data.tracking_num
},
success: function(n) {
console.log(n.data.data.Traces), t.setData({
traces: n.data.data.Traces
});
}
});
},
onLoad: function(n) {
console.log(n), this.setData({
tracking_code: n.tracking_code,
tracking_num: n.tracking_num,
num: n.num
}), this.logistics();
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "查看物流",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff"
}
\ No newline at end of file
... ...
<view class="accpet_title">
当前物流状况:
</view>
<view class="accpet_box">
<view class="accept_item" wx:for="{{traces}}" wx:key="{{item.AcceptTime}}">
<view class="acceptTime">{{item.AcceptTime}}:</view>
<view class="acceptStation">{{item.AcceptStation}}</view>
</view>
</view>
... ...
getApp(), require("../../utils/util.js");
Page({
data: {
userInfo: []
},
payment: function() {
wx.navigateTo({
url: "../my/payment/payment"
});
},
delivery: function() {
wx.navigateTo({
url: "../my/delivery/delivery"
});
},
shipped: function() {
wx.navigateTo({
url: "../my/shipped/shipped"
});
},
completed: function() {
wx.navigateTo({
url: "../my/completed/completed"
});
},
gotomyoder: function() {
wx.navigateTo({
url: "payment/payment"
});
},
gomyoder: function() {
wx.navigateTo({
url: "myoder/myoder"
});
},
onLoad: function(n) {
var e = this;
wx.getStorage({
key: "userInfo",
success: function(n) {
e.setData({
userInfo: n.data
});
}
}), wx.getStorage({
key: "ouid",
success: function(n) {}
});
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "个人中心"
}
\ No newline at end of file
... ...
<import src="../template/template.wxml"></import>
<image class="myimg" mode="scaleToFill" src="../src/img/bg.png"></image>
<view class="headbox">
<image class="myhead" src="{{userInfo.avatarUrl}}"></image>
</view>
<view class="myname">{{userInfo.nickName}}</view>
<view class="mylist">
<view bindtap="payment" class="myitem">
<view class="iconfont icon-daifukuan1"></view>
<text>待付款</text>
</view>
<view bindtap="delivery" class="myitem">
<view class="iconfont icon-daifahuo"></view>
<text>待发货</text>
</view>
<view bindtap="shipped" class="myitem">
<view class="iconfont icon-yifahuo"></view>
<text>已发货</text>
</view>
<view bindtap="completed" class="myitem">
<view class="iconfont icon-dingdanyiwancheng"></view>
<text>已完成</text>
</view>
</view>
<view class="my">
<view bindtap="gotomyoder" class="myoder">
<text>我的订单</text>
<view class="iconfont icon-jinru"></view>
</view>
<view bindtap="gomyoder" class="myoder">
<text>我的收藏</text>
<view class="iconfont icon-jinru"></view>
</view>
</view>
<template is="kefu" data></template>
... ...
page {
background-color: #F5F9FA;
}
.myimg {
height: 258rpx;
width: 100%;
}
.headbox {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
overflow: hidden;
margin: -80rpx auto 0 auto;
}
.myhead {
width: 160rpx;
height: 160rpx;
border-radius: 50%;
}
.myname {
text-align: center;
margin: 18rpx auto 78rpx auto;
font-size: 30rpx;
}
.mylist {
display: flex;
justify-content: space-between;
padding: 0 72rpx;
align-items: center;
}
.myitem {
display: flex;
flex: 1;
flex-direction: column;
align-items: center;
font-size: 28rpx;
}
.myitem:active {
background-color: rgba(0,0,0,0.1);
}
.myitem .iconfont {
font-size: 42rpx;
}
.myoder {
display: flex;
justify-content: space-between;
padding: 45rpx 20rpx 45rpx 24rpx;
margin: 0 32rpx;
font-size: 28rpx;
background-color: #fff;
border-bottom: 1rpx solid #E6EAEB;
}
.myoder:active {
background-color: rgba(0,0,0,0.08);
}
.my {
margin: 75rpx 0 0 0;
box-shadow: 2rpx 0 4rpx rgba(0,0,0,0.08);
}
\ No newline at end of file
... ...
var o = require("../../../utils/network.js");
Page({
data: {
imagewidth: 0,
imageheight: 0,
scrollTop: 0,
scrollHeight: 0,
hidden: !0,
goods: [],
ouid: ""
},
getgoods: function() {
var t = this;
o.POST({
url: "User/my_favorite",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid
},
success: function(o) {
(o.data.state = "success") && t.setData({
goods: o.data.favourate
});
}
});
},
gogoods: function(o) {
var t = o.currentTarget.id;
wx.navigateTo({
url: "../../index/goodsdetail/goodsdetail?id=" + t
});
},
onLoad: function(o) {
var t = this;
wx.getStorage({
key: "ouid",
success: function(o) {
t.setData({
ouid: o.data
}), t.getgoods();
}
});
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "我的收藏",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff"
}
\ No newline at end of file
... ...
<scroll-view>
<view class="nooders" wx:if="{{!goods}}">
暂无收藏
</view>
<view class="goodsList">
<view class="waterfall">
<view bindtap="gogoods" class="goods_box" id="{{item.id}}" wx:for="{{goods}}" wx:key="{{item.id}}">
<image mode="widthFix" src="{{item.thumb}}"></image>
<view class="goods_name">{{item.name}}</view>
<view>
<text class="price">¥{{item.pprice}}</text>
<text class="old_price">¥{{item.oprice}}</text>
</view>
</view>
</view>
</view>
<template is="kefu" data></template>
</scroll-view>
<view class="body-view"></view>
... ...
page {
background-color: #F5F9FA;
}
\ No newline at end of file
... ...
var t = require("../../../utils/network.js");
Page({
data: {
type: "",
ids: [],
goods: [],
totalmoney: 0,
address: [],
oid: ""
},
onLoad: function(t) {
var a = this;
console.log(t), wx.getStorage({
key: "ouid",
success: function(t) {
a.setData({
ouid: t.data
});
}
}), this.setData({
type: t.type,
ids: t.ids ? t.ids.split(",") : "",
id: t.id
}), this.getTotalPrice();
},
gocomment: function() {
wx.navigateTo({
url: "../comment/comment"
});
},
usermsg: function(t) {
var a = t.detail.value;
console.log(a), this.setData({
user_msg: a
}), console.log(this.data.user_msg);
},
getgoods: function() {
var a = this;
t.POST({
url: "Pay/confirm_order",
header: "application/x-www-form-urlencoded",
params: {
ids: this.data.ids
},
success: function(t) {
(t.data.state = "success") && (a.setData({
goods: t.data.goods
}), a.getTotalPrice());
}
});
},
getTotalPrice: function() {
for (var t = this.data.goods, a = 0, e = 0; e < t.length; e++) a += parseInt(t[e].count) * parseFloat(t[e].pprice);
this.setData({
goods: t,
totalmoney: a.toFixed(2)
});
},
onReady: function() {},
goTooder: function() {
var a = this;
0 == this.data.address.length ? wx.showToast({
title: "请选择地址",
icon: "none"
}) : t.POST({
url: "Pay/create_order",
header: "application/x-www-form-urlencoded",
params: {
ids: this.data.ids,
ouid: this.data.ouid,
total: this.data.totalmoney,
name: this.data.address.userName,
tel: this.data.address.telNumber,
addr: this.data.address.provinceName + this.data.address.cityName + this.data.address.countyName + this.data.address.detailInfo,
leave: this.data.user_msg ? this.data.user_msg : ""
},
success: function(t) {
wx.showLoading({
title: "处理中..."
}), "success" == t.data.state && a.setData({
oid: t.data.oid
}), wx.hideLoading(), a.pay_order();
}
});
},
pay_order: function() {
t.POST({
url: "Pay/pay_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
oid: this.data.oid,
money: this.data.totalmoney
},
success: function(t) {
console.log(t), t.data && wx.requestPayment({
timeStamp: t.data.timeStamp,
nonceStr: t.data.nonceStr,
package: t.data.package,
signType: t.data.signType,
paySign: t.data.paySign,
success: function(t) {
wx.redirectTo({
url: "../delivery/delivery"
});
},
fail: function(t) {}
});
}
});
},
onShow: function() {
this.getgoods(), this.getTotalPrice();
},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {},
getaddress: function() {
var t = this;
wx.chooseAddress ? wx.chooseAddress({
success: function(a) {
a ? t.setData({
address: a
}) : wx.showToast({
title: "未选择地址",
icon: "none"
});
},
fail: function(t) {},
complete: function(t) {}
}) : wx.showModal({
title: "提示",
content: "当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试。"
});
}
});
\ No newline at end of file
... ...
{}
\ No newline at end of file
... ...
<view class="pbox" wx:if="{{type==0}}">
<view class="iconfont icon-dengdaichuli"></view>
<text>待付款</text>
</view>
<view class="pbox" wx:elif="{{type==1}}">
<view class="iconfont icon-dengdai"></view>
<text>待发货</text>
</view>
<view class="pbox" wx:elif="{{type==2}}">
<view class="iconfont icon-dengdaichuli"></view>
<text>已发货</text>
</view>
<view class="pbox" wx:elif="{{type==3}}">
<view class="iconfont icon-wancheng"></view>
<text>已完成</text>
</view>
<view class="addbox">
<view class="payname">
<text>收货人:<text>{{address.userName}}</text>
</text>
<text>{{address.telNumber}}</text>
</view>
<view bindtap="getaddress" class="payadd">
<view class="iconfont icon-dizhi"></view>
<text>收货地址: <text class="none" wx:if="{{address.length==0}}">点击添加地址</text>
<text wx:else>{{address.provinceName}}{{address.cityName}}{{address.countyName}}{{address.detailInfo}} </text>
</text>
</view>
<image src="../../src/img/add.png"></image>
</view>
<view class="goodsbox" wx:for="{{goods}}" wx:key="item.id">
<image src="{{item.thumb}}"></image>
<view class="goods">
<view class="goodsname">
<text>{{item.name}}</text>
<text catchtap="gocomment" class="comment" wx:if="{{type==3}}">评价商品</text>
</view>
<view class="goodstype">
<text>{{item.standard}}</text>
</view>
<view class="pricebox">
<text class="goodsprice">¥{{item.pprice}}</text>
<text>X{{item.count}}</text>
</view>
</view>
</view>
<view class="orderbox">
<view wx:if="{{type!=5}}"></view>
<view class="orderitem" wx:else>
<text>订单编号:216484348136345</text>
<text></text>
</view>
<view class="orderitem">
<text>快递方式</text>
<text>快递</text>
</view>
<view class="orderitem">
<text>免运费</text>
<text></text>
</view>
<view class="orderitem">
<text class="usermsg">买家留言:</text>
<input bindinput="usermsg" placeholder="选填:填写内容已和卖家协商确认"></input>
</view>
<view class="orderitem">
<text></text>
<text>共计:<text class="totalprice">¥{{totalmoney}}</text>
</text>
</view>
</view>
<view class="delbox" wx:if="{{type==1}}">
<view class="orderitem">
<text></text>
<text class="del">去支付</text>
</view>
</view>
<view class="delbox" wx:elif="{{type==2}}">
<view class="orderitem">
<text></text>
<text class="del">确认收货</text>
</view>
</view>
<view class="delbox" wx:elif="{{type==3}}">
<view class="orderitem">
<text></text>
<text class="del {{type==4?'dels':''}}">删除订单</text>
</view>
</view>
<view class="delbox" wx:else>
<view class="orderitem buy">
<view></view>
<view>
<text>合计:</text>
<text class="money">¥{{totalmoney}}</text>
</view>
<view bindtap="goTooder" class="orderok">确认订单</view>
</view>
</view>
... ...
page {
background-color: #f5f9fa;
}
.addbox {
background-color: #fff;
color: #000;
margin-bottom: 16rpx;
}
.addbox image {
width: 100%;
}
.pbox {
display: flex;
padding: 24rpx 32rpx;
font-size: 30rpx;
align-items: center;
}
.pbox .iconfont {
margin-right: 16rpx;
}
.payname {
display: flex;
align-items: center;
font-size: 32rpx;
justify-content: space-between;
padding: 35rpx 95rpx;
}
.payadd {
display: flex;
align-items: center;
padding: 0 82rpx 33rpx 0;
}
.payadd .iconfont {
padding: 13rpx 32rpx;
}
.payadd text {
font-size: 26rpx;
color: #333;
}
.addbox image {
height: 14rpx;
}
.goodsbox {
display: flex;
justify-content: space-between;
padding: 32rpx 32rpx 42rpx 32rpx;
background-color: #fff;
}
.goodsbox image {
height: 170rpx;
width: 170rpx;
margin-right: 20rpx;
}
.goods {
display: flex;
flex: 2;
flex-direction: column;
justify-content: space-between;
}
.goodsname {
display: flex;
justify-content: space-between;
font-size: 36rpx;
font-weight: 600;
align-items: center;
}
.goodsname .comment {
color: #ff000e;
font-size: 24rpx;
}
.goodstype {
font-size: 28rpx;
color: #999;
}
.pricebox {
display: flex;
justify-content: space-between;
align-items: center;
font-size: 36rpx;
color: #000;
}
.goodsprice {
color: #f00;
font-size: 30rpx;
}
.orderbox {
background-color: #fff;
margin: 16rpx 0 200rpx 0;
padding-bottom: 150rpx;
}
.orderitem {
display: flex;
justify-content: space-between;
align-items: center;
padding: 41rpx 0;
margin: 0 32rpx;
border-bottom: 1px #e6e7eb solid;
font-size: 30rpx;
color: #000;
background-color: #fff;
}
.orderitem:last-child {
border: 0;
}
.orderitem .usermsg {
flex: 1;
}
.orderitem input {
flex: 3;
}
.totalprice {
color: #f00;
}
.del {
font-size: 32rpx;
border: 1px solid #f00;
border-radius: 35rpx;
padding: 20rpx 0;
text-align: center;
width: 200rpx;
color: #f00;
}
.buy {
position: fixed;
bottom: 0;
margin: 0;
width: 100%;
justify-content: flex-end;
padding: 0 0 0 32rpx;
}
.delbox {
background-color: #fff;
}
.del:active {
opacity: 0.7;
}
.dels {
color: #000;
border: 1rpx solid #000;
}
.orderok {
background: linear-gradient(to right,#fe7501,#ff4b00);
padding: 35rpx 45rpx;
color: #fff;
}
.orderok:active {
opacity: 0.7;
}
.money {
color: #f00;
margin-right: 40rpx;
}
.payadd .none {
color: #999;
font-size: 24rpx;
}
\ No newline at end of file
... ...
var e = require("../../../utils/network.js");
Page({
data: {
ouid: "",
status: 0,
orders: []
},
payment: function() {
wx.redirectTo({
url: "../payment/payment"
});
},
delivery: function() {
wx.redirectTo({
url: "../delivery/delivery"
});
},
shipped: function() {
wx.redirectTo({
url: "../shipped/shipped"
});
},
completed: function() {
wx.redirectTo({
url: "../completed/completed"
});
},
pay: function() {},
onLoad: function(e) {
var t = this;
wx.getStorage({
key: "ouid",
success: function(e) {
t.setData({
ouid: e.data
}), t.my_order();
}
});
},
my_order: function() {
var t = this;
e.POST({
url: "User/my_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: t.data.ouid,
status: t.data.status
},
success: function(e) {
console.log(e), t.setData({
orders: e.data.orders
});
}
});
},
pay_order: function(t) {
for (var a = t.currentTarget.dataset.id, n = t.currentTarget.dataset.index, o = this.data.orders[n].details, r = 0, i = 0; i < o.length; i++) r += o[i].count * o[i].pprice;
e.POST({
url: "Pay/pay_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: this.data.ouid,
oid: a,
money: r
},
success: function(e) {
e.data && wx.requestPayment({
timeStamp: e.data.timeStamp,
nonceStr: e.data.nonceStr,
package: e.data.package,
signType: e.data.signType,
paySign: e.data.paySign,
success: function(e) {},
fail: function(e) {}
});
}
});
},
getTotalPrice: function() {},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "待付款",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff"
}
\ No newline at end of file
... ...
<view class="payboxs">
<view class="payactive">
<text>待付款</text>
</view>
<view bindtap="delivery">
<text>待发货</text>
</view>
<view bindtap="shipped">
<text>已发货</text>
</view>
<view bindtap="completed">
<text>已完成</text>
</view>
</view>
<view class="pays" wx:if="{{!orders}}">
<text class="nooders">暂无待付款订单</text>
</view>
<view class="pays" wx:else>
<view class="paypay" data-id="{{item.id}}" wx:for="{{orders}}" wx:key="{{item.id}}">
<view class="payorder">
<text>订单编号: {{item.num}}</text>
</view>
<view bindtap="pay" class="paylist" wx:for="{{item.details}}" wx:for-item="i" wx:key="{{i}}">
<navigator url="../../index/paydetail/paydetail?id={{item.id}}&type=0">
<image src="{{i.thumb}}"></image>
</navigator>
<view class="payright">
<view>
<text class="payname">{{i.name}}</text>
</view>
<view class="standard">{{i.standard}}</view>
<view class="payprice">
<text class="rightprice">¥{{i.pprice}}</text>
<text class="rightnum">数量:{{i.count}}</text>
</view>
</view>
</view>
<view class="gopay">
<text bindtap="pay_order" data-id="{{item.id}}" data-index="{{index}}">去支付 </text>
</view>
</view>
</view>
... ...
page {
background-color: #F5F9FA;
}
.payright {
display: flex;
justify-content: space-between;
flex-direction: column;
}
\ No newline at end of file
... ...
var e = require("../../../utils/network.js");
Page({
data: {
ouid: "",
status: 2,
orders: [],
traces: []
},
my_order: function() {
var t = this;
e.POST({
url: "User/my_order",
header: "application/x-www-form-urlencoded",
params: {
ouid: t.data.ouid,
status: t.data.status
},
success: function(e) {
console.log(e), t.setData({
orders: e.data.orders
});
}
});
},
pay_order: function(t) {
var o = this, a = t.currentTarget.dataset.id, n = t.currentTarget.dataset.index, r = this.data.orders;
wx.showModal({
title: "确认收货",
content: "确定已经收到货?",
success: function(t) {
t.confirm ? e.POST({
url: "User/order_finish",
header: "application/x-www-form-urlencoded",
params: {
ouid: o.data.ouid,
id: a
},
success: function(e) {
"success" == e.data.state ? (r.splice(n, 1), wx.showToast({
title: e.data.msg,
icon: "success"
}), o.setData({
orders: r
})) : wx.showToast({
title: e.data.msg,
icon: "none"
});
}
}) : t.cancel && console.log("用户点击取消");
}
});
},
payment: function() {
wx.redirectTo({
url: "../payment/payment"
});
},
delivery: function() {
wx.redirectTo({
url: "../delivery/delivery"
});
},
shipped: function() {
wx.redirectTo({
url: "../shipped/shipped"
});
},
completed: function() {
wx.redirectTo({
url: "../completed/completed"
});
},
pay: function() {
wx.navigateTo({
url: "../pay/pay?type=2"
});
},
onLoad: function(e) {
var t = this;
wx.getStorage({
key: "ouid",
success: function(e) {
t.setData({
ouid: e.data
}), t.my_order();
}
});
},
onReady: function() {},
onShow: function() {},
onHide: function() {},
onUnload: function() {},
onPullDownRefresh: function() {},
onReachBottom: function() {},
onShareAppMessage: function() {}
});
\ No newline at end of file
... ...
{
"navigationBarTitleText": "已发货",
"backgroundTextStyle": "light",
"navigationBarBackgroundColor": "#fff"
}
\ No newline at end of file
... ...
<view class="payboxs">
<view bindtap="payment">
<text>待付款</text>
</view>
<view bindtap="delivery">
<text>待发货</text>
</view>
<view class="payactive">
<text>已发货</text>
</view>
<view bindtap="completed">
<text>已完成</text>
</view>
</view>
<view class="pays" wx:if="{{!orders}}">
<text class="nooders">暂无已发货订单</text>
</view>
<view class="pays" wx:else>
<view class="paypay" data-id="{{item.id}}" wx:for="{{orders}}" wx:key="{{item.id}}">
<view class="payorder">
<text>订单编号: {{item.num}}</text>
</view>
<view wx:if="item.tracking_num&&item.tracking_code">
<view class="payorder">
<text>物流编号:{{item.tracking_num}}</text>
</view>
<view class="payorder">
<view>
<text>配送方式:</text>
<text wx:if="{{item.tracking_code=='ZTO'}}">中通快递</text>
<text wx:elif="{{item.tracking_code=='YTO'}}">圆通快递</text>
<text wx:elif="{{item.tracking_code=='YD'}}">韵达速递</text>
<text wx:elif="{{item.tracking_code=='YZPY'}}">邮政快递包裹</text>
<text wx:elif="{{item.tracking_code=='EMS'}}">EMS</text>
<text wx:elif="{{item.tracking_code=='JD'}}">京东物流</text>
<text wx:elif="{{item.tracking_code=='QFKD'}}">全峰快递</text>
<text wx:elif="{{item.tracking_code=='GTO'}}">国通快递</text>
<text wx:elif="{{item.tracking_code=='UC'}}">优速快递</text>
<text wx:elif="{{item.tracking_code=='DBL'}}">德邦</text>
<text wx:elif="{{item.tracking_code=='FAST'}}">快捷快递</text>
<text wx:elif="{{item.tracking_code=='ZJS'}}">宅急送</text>
<text wx:else>快递</text>
</view>
</view>
</view>
<view class="paylist" wx:for="{{item.details}}" wx:for-item="i" wx:key="{{i}}">
<navigator url="../../index/paydetail/paydetail?id={{item.id}}&type=2">
<image src="{{i.thumb}}"></image>
</navigator>
<view class="payright">
<view>
<text class="payname">{{i.name}}</text>
</view>
<text class="standard">{{i.standard?i.standard:''}}</text>
<view class="payprice">
<text class="rightprice">¥{{i.pprice}}</text>
<text class="rightnum">数量:{{i.count}}</text>
</view>
</view>
</view>
<view class="gopay">
<navigator hoverClass="none" url="../logistic/logistic?tracking_code={{item.tracking_code}}&tracking_num={{item.tracking_num}}&num={{item.num}}&oders={{orders}}">
<text wx:if="item.tracking_num&&item.tracking_code">查看物流</text>
</navigator>
<text bindtap="pay_order" data-id="{{item.id}}" data-index="{{index}}">确认收货</text>
</view>
</view>
</view>
... ...
page {
background-color: #F5F9FA;
}
\ No newline at end of file
... ...