diff --git a/pages/cart/cart.vue b/pages/cart/cart.vue
index 815b055..0488387 100644
--- a/pages/cart/cart.vue
+++ b/pages/cart/cart.vue
@@ -1,5 +1,73 @@
+ 全部删除
+
+
+
+
+
+ {{item.shop_name}}
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+ {{goods.product.title}}
+ {{goods.sku.sku_name}}
+
+
+ {{goods.sku.price/100}}
+
+ -
+ {{goods.num}}
+ +
+
+
+
+
+
+
+
+ 请选择时间
+ >>
+
+
+
+ 商品已失效
+ 删除
+
+
+
+
+
+ 删除
+
+
+
+
+
+
+
+
+
+
+
+
+ 全选
+
+ 合计
+ {{total()}}
+
+ 去下单
+
+
@@ -12,20 +80,423 @@
},
data() {
return {
-
+ cartList: [],
+ allPrice: 0,
+ selectAll: false,
}
},
onLoad() {
+ },
+ onShow() {
+ this.getList()
},
methods: {
-
+ getList () {
+ this.Post({},"/api/cart/get_list").then(res=>{
+ let resData = (res.data ||[])
+ let shopSelectIds = []
+ let skuSelectIds = []
+ this.cartList.forEach(v=>{
+ if (v.is_seld) {shopSelectIds.push(v.id)}
+ v.goods.forEach(x=>{
+ if(x.is_seld) {skuSelectIds.push(x.sku_id)}
+ })
+ })
+
+ resData.forEach(v=>{
+ v.is_seld = shopSelectIds.includes(v.id)
+ // v.show = true
+ v.goods.forEach(x=>{
+ x.is_seld = skuSelectIds.includes(x.sku_id)
+ // v.show = true
+ })
+ })
+ this.cartList = resData
+ this.judgeSelectAll()
+ }).finally(()=>{
+ uni.hideLoading()
+ })
+ },
+ // 单个增加/减少
+ addBuyNum(item,num,index){
+ console.log(item)
+ if (num == -1 && item.num == 1) {
+ return // 单独走删除
+ this.delItem(item)
+ } else {
+ let numData = item.num + num
+ this.Post({sku_id: item.sku_id, num: numData},'/api/cart/update_sku').then(res =>{
+ item.num += num
+ })
+ }
+ },
+ // 单个删除
+ delItem(item){
+ this.Post({sku_id: item.sku_id},'/api/cart/del_sku').then(res =>{
+ // this.cartData.splice(index,1)
+ this.getList()
+ })
+
+ },
+ // 把店铺下的所有商品删除
+ delCartByShop (item, index) {
+ let goods = item.goods.map(v=>v.sku_id)
+ this.Post({sku_id: goods.join(',')},'/api/cart/del_sku').then(res =>{
+ this.getList()
+ })
+ },
+ // 删除全部
+ delAll () {
+ let goods = []
+ this.cartList.forEach(v=>{
+ v.goods.forEach(x=>{goods.push(x.sku_id)})
+ })
+ this.Post({sku_id: goods.join(',')},'/api/cart/del_sku').then(res =>{
+ this.getList()
+ })
+ },
+
+ // 全选
+ selectAllData (flag) {
+ this.selectAll = flag
+ if (flag) {
+ this.cartList.forEach(t=>{
+ t.goods.forEach(v=>{
+ if (v && v.product &&v.sku) {
+ if (v.sku.flag== "off") {
+ v.is_seld = false
+ } else {
+ if (v.product.type == 'hotel'&&(!v.strat_time||!v.end_time)) {
+ v.is_seld = false
+ } else {
+ v.is_seld = true
+ }
+ }
+ }
+ })
+ })
+ } else {
+ this.cartList.forEach(v=>{
+ v.is_seld = false
+ })
+ }
+ this.judgeSelectAll()
+ },
+ // 店铺选中
+ changeShopSelect(item, flag) {
+ if (flag) {
+ item.goods.forEach(v=>{
+ if (v.sku.flag== "off") {
+ v.is_seld = false
+ } else {
+ if (v.product.type == 'hotel'&&(!v.strat_time||!v.end_time)) {
+ v.is_seld = false
+ } else {
+ v.is_seld = true
+ }
+ }
+ })
+ item.is_seld = true
+ } else {
+ item.goods.forEach(v=>{
+ v.is_seld = false
+ })
+ item.is_seld = false
+ }
+ this.judgeSelectAll()
+ },
+ // 单个选中
+ changeGoodsSelect(item,flag) {
+ if (flag) {
+ if (item.sku.flag== "off") {
+ item.is_seld = false
+ } else {
+ if (item.product.type == 'hotel'&&(!item.strat_time||!item.end_time)) {
+ item.is_seld = false
+ uni.showToast({
+ title:'酒店产品需要选择时间',
+ icon:'none'
+ })
+ } else {
+ item.is_seld = true
+ }
+ }
+ } else {
+ item.is_seld = false
+ }
+ this.judgeSelectAll()
+ },
+ // 判断全选
+ judgeSelectAll () {
+ this.cartList.forEach(v=>{
+ if(v.goods.some(x=>x.sku&& x.sku.flag!= "off"&&!x.is_seld)) {
+ v.is_seld = false;
+ } else {
+ v.is_seld = true;
+ }
+ })
+
+ if (this.cartList.every(v=>v.is_seld)) {
+ this.selectAll = true
+ } else {
+ this.selectAll = false
+ }
+
+ },
+
+
+ // 去下单
+ goOrder () {
+ let buyGoods = this.cartList.filter(v=>v.is_seld)
+ if (buyGoods.length<=0) {
+ uni.showToast({
+ title: '请选择要购买的产品',
+ icon: 'none'
+ })
+ }
+
+ let ticketOrderList = [] // 门票类下单
+ let foodOrderList = [] // 农家烟火下单
+ let techanOrderList = [] // 邮寄自提下单
+ let hotelOrderList = [] // 酒店下单
+
+ buyGoods.forEach(v=>{
+ if (v.product.is_package == 1) {
+ foodOrderList.push({
+ pInfo: v.product,
+ sInfo: {...v.sku, buyNum: v.num}
+ })
+ } else if (v.product.type == "ticket") {
+ ticketOrderList.push({
+ pInfo: v.product,
+ sInfo: {...v.sku, buyNum: v.num}
+ })
+ } else if (v.product.type == "post") {
+ techanOrderList.push({
+ pInfo: v.product,
+ sInfo: {...v.sku, buyNum: v.num}
+ })
+ } else if (v.product.type == "hotel") {
+ hotelOrderList.push(v)
+ }
+ })
+
+ // 数据储存 todo
+ this.$store.commit("changeTechanOrderList", techanOrderList);
+ this.$store.commit("changeTicketOrderList", ticketOrderList);
+ this.$store.commit("changeFoodOrderList", foodOrderList);
+ this.$store.commit("changeHotelOrderList", hotelOrderList);
+ // 邮寄 > 门票 > 农家乐 > 酒店
+ this.goCartNextPage(0)
+
+ },
+
+ total () {
+ return 0
+ },
+ },
+ onReachBottom() {
}
}
-
diff --git a/static/js/CommonFunction.js b/static/js/CommonFunction.js
index cd39142..e31cd14 100644
--- a/static/js/CommonFunction.js
+++ b/static/js/CommonFunction.js
@@ -281,4 +281,31 @@ Vue.prototype.goCartPage = ()=>{
uni.switchTab({
url: "/pages/cart/cart"
})
+},
+
+// 购物车下单去下个页面
+Vue.prototype.goCartNextPage= function(currentPageIndex){
+ // currentPage "" 购物车 'techan' 'ticket' 'food' 'hotel'
+ // 0 1 2 3 4
+ let techanOrderList = this.$store.state.user.techanOrderList;
+ let ticketOrderList = this.$store.state.user.ticketOrderList;
+ let foodOrderList = this.$store.state.user.foodOrderList;
+ let hotelOrderList = this.$store.state.user.hotelOrderList;
+
+ let orderPage = [
+ {path: '/subPackages/techan/order', length: techanOrderList.length},
+ {path: '/subPackages/ticket/order', length: ticketOrderList.length},
+ {path: '/subPackages/food/order', length: foodOrderList.length},
+ {path: '',length: hotelOrderList.length}
+ ]
+ let nextPage = orderPage.find((v,index)=>v.length>0&&index>=currentPageIndex)
+ if (nextPage) {
+ console.log(nextPage)
+ uni.navigateTo({
+ url: nextPage.path+'?isShoppingCart=1'
+ })
+ } else {
+ console.log(orderPage, nextPage, '结束')
+ // todo 最后下单页面
+ }
}
\ No newline at end of file
diff --git a/static/js/request.js b/static/js/request.js
index c22e5da..4f75e4b 100644
--- a/static/js/request.js
+++ b/static/js/request.js
@@ -3,7 +3,7 @@ import store from '@/store';
// 定义 API URL
// const DEV_API_URL = 'https://api.cloud.sz-trip.com';
-const DEV_API_URL = 'https://swsz.api.js-dyyj.com';
+const DEV_API_URL = 'https://swsz.api.js-dyyj.com'
const PROD_API_URL = 'https://swsz.api.js-dyyj.com';
const NEWAPIURL = process.env.NODE_ENV === 'development' ? DEV_API_URL : PROD_API_URL;
@@ -40,7 +40,8 @@ Vue.prototype.NEWAPIURL = '/api';
// #endif
Vue.prototype.Post = (params = {}, apiurl) => {
- const token = getToken() || 'a090644d-2bdb-4807-833b-bb5bc2182ac5';
+ // const token = getToken() || '0caa10fc-6d65-4d9c-8e57-b344be3fc526'; // 君到苏州
+ const token = getToken() || 'a090644d-2bdb-4807-833b-bb5bc2182ac5' // 时味苏州
if (token) {
params.token = token;
}
diff --git a/store/modules/user.js b/store/modules/user.js
index 9f6a62f..863cf3f 100644
--- a/store/modules/user.js
+++ b/store/modules/user.js
@@ -17,7 +17,7 @@ export default {
ticketOrderList: [], // 门票类下单
foodOrderList: [], // 农家烟火下单
techanOrderList: [], // 邮寄自提下单
-
+ hotelOrderList: [], // 酒店下单
meetRoomReserve: {
date: null, //使用日期信息
coupon: null, // 优惠券信息
@@ -88,5 +88,9 @@ export default {
changeFoodOrderList(state, data){
state.foodOrderList = data
},
+ // 酒店下单
+ changeHotelOrderList(state, data){
+ state.hotelOrderList = data
+ },
}
}
diff --git a/subPackages/food/detail.vue b/subPackages/food/detail.vue
index 56a2e4a..7a4f31f 100644
--- a/subPackages/food/detail.vue
+++ b/subPackages/food/detail.vue
@@ -271,7 +271,7 @@
sInfo: goods,
}]
- uni.setStorageSync('foodOrder', JSON.stringify(orderInfo)); //规格
+ this.$store.commit("changeFoodOrderList", orderInfo);
uni.navigateTo({
url: '/subPackages/food/order'
});
diff --git a/subPackages/food/order.vue b/subPackages/food/order.vue
index 4ce4c77..4111660 100644
--- a/subPackages/food/order.vue
+++ b/subPackages/food/order.vue
@@ -148,15 +148,7 @@
initPageData () {
- let data = uni.getStorageSync('foodOrder');
- try{
- data = JSON.parse(data)
- this.orderList = data
- console.log(this.orderList)
-
- } catch(e){
- console.log(e)
- }
+ this.orderList = this.$store.state.user.foodOrderList;
this.getMaxCouponData()
},
@@ -238,10 +230,17 @@
goods.push(param)
})
+ // 如果是购物车下单
+ if (this.isShoppingCart) {
+ this.$store.commit("changeFoodOrderList", this.orderList);
+ this.goCartNextPage(3)
+ return
+ }
+
let data = {
product_list: goods,
- coupon_id: this.coupon ? this.coupon.id : "",
+ coupon_id: this.coupon ? this.coupon.id : null,
}
console.log('data数据',data);
this.Post({
diff --git a/subPackages/techan/detail.vue b/subPackages/techan/detail.vue
index 6cdfb76..762cb41 100644
--- a/subPackages/techan/detail.vue
+++ b/subPackages/techan/detail.vue
@@ -245,13 +245,13 @@
// post: 0,
}]
- uni.setStorageSync('teChanOrder', JSON.stringify(orderInfo)); //规格
+ this.$store.commit("changeTechanOrderList", orderInfo);
uni.navigateTo({
url: '/subPackages/techan/order'
});
},
addToCart () {
- let goods = this.trueSku[this.productIndex]
+ let goods = this.sku[this.productIndex]
goods.buyNum = this.buyNum
this.Post({sku_id: goods.id,num: this.buyNum },'/api/cart/add_sku').then(res => {
if (res.code == 1) {
diff --git a/subPackages/techan/index.vue b/subPackages/techan/index.vue
index 810f55c..e7cddbe 100644
--- a/subPackages/techan/index.vue
+++ b/subPackages/techan/index.vue
@@ -26,7 +26,7 @@
- 展开
+ 展开
@@ -34,7 +34,7 @@
- 综合
+ 综合
销量
@@ -123,7 +123,7 @@
-
+
@@ -196,7 +196,6 @@ export default {
post: 0,
flag: true,
- remark: '',
coupon: "",
allprice: 0,
@@ -238,19 +237,21 @@ export default {
},
methods: {
handleOrderGoods () {
- let orderList = JSON.parse(uni.getStorageSync('teChanOrder'));
+ let orderList = this.$store.state.user.techanOrderList;
if (!Array.isArray(orderList) || orderList.length<=0) {
uni.navigateBack();
return
}
+ console.log(orderList)
// use_type 0邮寄 1自提 3邮寄或自提
// is_post 1邮寄 2自提 默认邮寄1
orderList.forEach(v=>{
- v.is_post = v.sInfo.use_type==0?1:v.sInfo.use_type==1?2:3 // 产品自己的方式
+ v.is_post = v.sInfo.use_type==3?3:v.sInfo.use_type==1?2:1 // 产品自己的方式
v.is_user_post = v.sInfo.use_type==1?2:1 // 用户自选方式
- v.pickupAddress = {} // 自提信息
- v.contacts = null // 收货地址
- v.post = null // 运费信息
+ v.pickupAddress = v.pickupAddress || {} // 自提信息
+ v.contacts = v.contacts || null // 收货地址
+ v.post = v.post || null // 运费信息
+ v.remark = v.remark||""
})
this.orderList = orderList
@@ -261,6 +262,7 @@ export default {
changeUserPost (item,value) {
console.log(item)
item.is_user_post = value
+ this.getPost()
},
goOrderCoupon () {
@@ -308,32 +310,32 @@ export default {
});
},
getPost() {
+ let _this = this
let tempList = []
this.orderList.forEach(v=>{
- if( v.sInfo.contacts && v.is_user_post == 1) {
+ if( v.contacts && v.is_user_post == 1) {
tempList.push(v)
}
})
let param = []
tempList.forEach(v=>{
- param.push({specifications_id: v.sInfo.id, num: v.sInfo.buyNum, consignee_id:v.contacts.id})
+ param.push({sku_id: v.sInfo.id, num: v.sInfo.buyNum, consignee_id:v.contacts.id})
})
let data = JSON.stringify(param);
// console.log(data);
this.flag = false;
- this.Post({ data: data }, '/api/order/getNewPost').then(res => {
+
+ Promise.all(param.map(v=>_this.Post({...v},"/api/order/get_post_price"))).then(res=>{
if (res) {
+ console.log("promise" ,res)
for(let i=0;i{
- console.log(err,'aaaaaaa');
- this.flag = true;
- });
+ }).finally(()=>{this.flag = true;})
},
plus(sku) {
@@ -374,7 +376,7 @@ export default {
this.selectInfo.contacts = item
if (this.flag) {
- // this.getPost();
+ this.getPost();
}
this.$refs.addressPopup.close();
},
@@ -443,57 +445,60 @@ export default {
},
// 预定
order() {
- if (this.info.is_user_post == 1 || this.info.is_user_post == 3) {
- console.log(this.info.is_user_post)
- if (this.info.is_user_post == 1 && !this.contacts) {
- uni.showToast({
- title: '请选择收货地址',
- icon: 'none'
- });
- return;
+ let goods = [];
+ for(let info of this.orderList) {
+ let param = {
+ type: info.pInfo.type,
+ product_id: info.pInfo.id,
+ sku_id: info.sInfo.id,
+ product_num: info.sInfo.buyNum,
+ remark: info.remark
}
-
- if (this.info.is_user_post == 2) {
+ if (info.is_user_post == 1) {
+ if(!info.contacts) {
+ uni.showToast({
+ title: '请选择收货地址',
+ icon: 'none'
+ });
+ return;
+ } else {
+ param.use_type = 1
+ param.post = info.contacts.id
+ }
+ }
+ if (info.is_user_post == 2) {
if (!this.pickupAddress.id) {
uni.showToast({title: '请选择自提点',icon: 'none'});
return;
+ } else {
+ param.use_type = 2
+ param.pickup_shop_id = info.pickupAddress.id
+ param.pickup_shop_info = info.pickupAddress
}
}
+ goods.push(param)
}
-
- let goods = [];
- this.info.goods.forEach(v=>{
- let goodsItem = {
- specifications_id: v.skuInfo.id,
- num: v.skuInfo.buyNum,
-
- };
-
- if (this.info.is_user_post == 2) {
- goodsItem.extract_id = this.pickupAddress.id;
- } else if (this.info.is_user_post == 1){
- goodsItem.consignee_id = this.contacts.id
- }
- goods.push(goodsItem);
- })
-
+ // 如果是购物车下单
+ if (this.isShoppingCart) {
+ this.$store.commit("changeTechanOrderList", this.orderList);
+ this.goCartNextPage(1)
+ return
+ }
+
let data = {
- goods: goods,
- coupon: this.coupon ? this.coupon.id : "",
- remark: this.remark,
- is_post: this.info.is_user_post,
+ product_list: goods,
+ coupon_id: this.coupon ? this.coupon.id : null,
};
+
this.Post(
{
method: 'POST',
data: JSON.stringify(data)
},
- '/api/order/place'
+ '/api/order/create'
).then(res => {
- uni.removeStorageSync('teChanOrder')
- uni.removeStorageSync('teChanInfo')
if (res.code == 1) {
this.Post(
{
@@ -532,7 +537,8 @@ export default {
getDataByConnect(data) {
if (data.msgType == "updatePickUpPoint") {
- let tempData = this.orderList.find(v=>v.sInfo.id == data.data.goodsId)
+ let tempData = this.orderList.find(v=>v.pInfo.id == data.data.pInfoId)
+ console.log(tempData)
if (tempData) {
tempData.pickupAddress = data.data.selectItem
}
diff --git a/subPackages/techan/selfPickUpPoint.vue b/subPackages/techan/selfPickUpPoint.vue
index bbf25bb..86d2478 100644
--- a/subPackages/techan/selfPickUpPoint.vue
+++ b/subPackages/techan/selfPickUpPoint.vue
@@ -2,19 +2,17 @@
-
- {{item.extract_name}}
-
-
- 地址:{{item.detail_addr}}
+
+ {{item.title}}
+ 营业时间:{{item.remark}}
+ 地址:{{item.address}}
-
-
-
-
+
+
+
+
+ 距离{{item.distance.toFixed(2)}}km
- 去这里
-
@@ -23,11 +21,11 @@
暂无自提点地址
-
+
@@ -62,8 +60,8 @@
// this.getLocation()
let param = {
product_id: this.goodsId,
- lon: uni.getStorageSync('location').lon || '',
- lat: uni.getStorageSync('location').lat || '',
+ lon: uni.getStorageSync('location').lon || '36',
+ lat: uni.getStorageSync('location').lat || '29',
}
this.Post(param, "/api/product/getDeliverShop").then(res => {
if (res) {
@@ -87,8 +85,8 @@
selectPoint (item) {
this.selectItem = item
// 返回上一个页面并带回selectItem
- uni.$emit("updateDataByConnect", {msgType:'updatePickUpPoint',data:{selectItem: this.selectItem, skuId: this.goodsId}})
- uni.navigateBack()
+ // uni.$emit("updateDataByConnect", {msgType:'updatePickUpPoint',data:{selectItem: this.selectItem, skuId: this.goodsId}})
+ // uni.navigateBack()
},
goMap (item) {
@@ -109,7 +107,7 @@
return;
}
// 返回上一个页面并带回selectItem
- uni.$emit("updateDataByConnect", {msgType:'updatePickUpPoint',data:{selectItem: this.selectItem, skuId: this.goodsId}})
+ uni.$emit("updateDataByConnect", {msgType:'updatePickUpPoint',data:{selectItem: this.selectItem, pInfoId: this.goodsId}})
uni.navigateBack()
}
},
@@ -136,12 +134,14 @@
}
.item-bg{
width: 697rpx;
- height: 160rpx;
+ min-height: 160rpx;
background: #FFFFFF;
border-radius: 13rpx;
margin: 0 auto;
margin-bottom: 28rpx;
- padding: 2rpx;
+ &.active{
+ border:1px solid #6A8A2D;
+ }
}
.item {
@@ -159,6 +159,9 @@
display: flex;
flex-direction: column;
justify-content: space-between;
+ font-weight: 500;
+ font-size: 27rpx;
+ color: #999999;
}
.item-point-guide{
width:140rpx;
@@ -176,23 +179,14 @@
height: 33rpx;
}
}
- .item-bg.active{
- background: #515150;
- }
.name {
display: flex;
font-size: 31rpx;
font-weight: bold;
color: #333333;
- height: 42rpx;
- }
- .addressStr{
- display: flex;
- font-size: 27rpx;
- color: #999999;
- padding-top: 10rpx;
}
+
.no-data {
width: 100%;
height: 100vh;
@@ -231,9 +225,9 @@
.addBox{
margin: 0 auto;
width: 697rpx;
- height: 80rpx;
- background: linear-gradient(90deg, #F84A56, #FF9834);
- border-radius: 40rpx;
+ height: 73rpx;
+ background: #6A8A2D;
+ border-radius: 11rpx;
font-size: 36rpx;
font-family: PingFang SC;
font-weight: 500;
@@ -242,5 +236,12 @@
text-align: center;
}
}
-
+ .distance{
+ font-weight: 500;
+ font-size: 24rpx;
+ color: #6A8A2D;
+ text-align: center;
+ padding-top: 11rpx;
+ word-wrap: break-all;
+ }
diff --git a/subPackages/ticket/order.vue b/subPackages/ticket/order.vue
index c05c810..ae64bc9 100644
--- a/subPackages/ticket/order.vue
+++ b/subPackages/ticket/order.vue
@@ -174,13 +174,18 @@
}
},
onLoad(options) {
+ if (options.isShoppingCart) {
+ this.isShoppingCart = options.isShoppingCart
+ }
// this.getList();
this.$store.commit("choseCoupon", "");
this.initPageData()
},
onShow() {
- this.coupon = this.$store.state.user.coupon
+ if (!this.isShoppingCart) {
+ this.coupon = this.$store.state.user.coupon
+ }
},
methods: {
@@ -420,10 +425,17 @@
goods.push(param)
})
+ // 如果是购物车下单
+ if (this.isShoppingCart) {
+ this.$store.commit("changeTicketOrderList", this.orderList);
+ this.goCartNextPage(2)
+ return
+ }
+
let data = {
product_list: goods,
- coupon_id: this.coupon ? this.coupon.id : "",
+ coupon_id: this.coupon ? this.coupon.id : null,
}
console.log('data数据',data);
this.Post({