Compare commits

..

No commits in common. "2866332d274de0962c009ad99bf2bb4d971c861f" and "2419b031d3b6af9581bfc85c44a11fa117b7a7b0" have entirely different histories.

3 changed files with 624 additions and 749 deletions

View File

@ -1,27 +1,15 @@
<template> <template>
<view> <view>
<div class="header"> <div class="header">
<div <div class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
class="searchBox"
:style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
>
<div class="searchBox_left" @click="back"> <div class="searchBox_left" @click="back">
<u-icon name="arrow-left" size="20px" color="#000"></u-icon> <u-icon name="arrow-left" size="20px" color="#000"></u-icon>
</div> </div>
</div> </div>
</div> </div>
<div class="swiper"> <div class="swiper">
<swiper <swiper :indicator-dots="false" :autoplay="true" :interval="3000" :duration="1000" @change="changeIndex">
:indicator-dots="false" <swiper-item v-for="(item, index) in currentGG.goods_carousel" :key="index">
:autoplay="true"
:interval="3000"
:duration="1000"
@change="changeIndex"
>
<swiper-item
v-for="(item, index) in currentGG.goods_carousel"
:key="index"
>
<image :src="picUrl + item"></image> <image :src="picUrl + item"></image>
</swiper-item> </swiper-item>
</swiper> </swiper>
@ -32,9 +20,8 @@
</div> </div>
<div class="Money"> <div class="Money">
<div class="MoneyMark"></div> <div class="MoneyMark"></div>{{ currentGG.sales_price }} <div class="MoneyUnit">/{{ currentGG.goods_unit }}
{{ currentGG.sales_price }} </div>
<div class="MoneyUnit">/{{ currentGG.goods_unit }}</div>
<div class="oldMoney">{{ currentGG.market_price }}</div> <div class="oldMoney">{{ currentGG.market_price }}</div>
</div> </div>
@ -43,35 +30,25 @@
<!-- @click="changeGG2(item, index)" :class="index == currentGGIndex ? 'active' : ''"> --> <!-- @click="changeGG2(item, index)" :class="index == currentGGIndex ? 'active' : ''"> -->
<div class="GGBox"> <div class="GGBox">
<div class="GG_left"> <div class="GG_left">
<div <div class="GG_Item" v-for="(item, index) in info.commodity_goods_info_list" :key="item.id"
class="GG_Item" @click="changeGG(item, index)" :class="index == currentGGIndex ? 'active' : ''">
v-for="(item, index) in info.commodity_goods_info_list"
:key="item.id"
@click="changeGG(item, index)"
:class="index == currentGGIndex ? 'active' : ''"
>
{{ item.goods_spec }} / {{ item.goods_unit }} {{ item.goods_spec }} / {{ item.goods_unit }}
</div> </div>
</div> </div>
<div class="GG_rigth"> <div class="GG_rigth">{{ info.commodity_goods_info_list.length }}<u-icon size="26rpx"
{{ info.commodity_goods_info_list.length }}<u-icon name="arrow-right"></u-icon></div>
size="26rpx"
name="arrow-right"
></u-icon>
</div>
</div> </div>
<div class="Tit">{{ currentGG.goods_name }}</div> <div class="Tit">{{ currentGG.goods_name }}</div>
<div class="Msg">{{ currentGG.commodity_brief }}</div> <div class="Msg">{{ currentGG.commodity_brief }}</div>
<div class="GoodsMsg">商品详情</div> <div class="GoodsMsg">
商品详情
</div>
<div class="Msg_Item"> <div class="Msg_Item">
<div class="Msg_ItemTit">商品编号</div> <div class="Msg_ItemTit">商品编号</div>
<div class="Msg_ItemCon" @click="copys(currentGG.goods_no)"> <div class="Msg_ItemCon" @click="copys(currentGG.goods_no)">{{ currentGG.goods_no }} <image
{{ currentGG.goods_no }} src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_copy.png"></image>
<image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_copy.png"
></image>
</div> </div>
</div> </div>
<div class="Msg_Item"> <div class="Msg_Item">
@ -84,75 +61,43 @@
</div> </div>
<div class="GoosMsg"> <div class="GoosMsg">
<image <image v-for="item in currentGG.goods_detail_pic" :src="picUrl + item" mode="widthFix"></image>
v-for="item in currentGG.goods_detail_pic"
:src="picUrl + item"
mode="widthFix"
></image>
</div> </div>
<!-- 底部购物车 --> <!-- 底部购物车 -->
<div class="Car"> <div class="Car">
<div class="car_left"> <div class="car_left">
<div class="share" @click="share"> <div class="share" @click="share">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share.png" mode="widthFix"></image>
mode="widthFix"
></image>
分享 分享
</div> </div>
<div class="cars" @click="car"> <div class="cars" @click="car">
<u-badge <u-badge numberType="limit" :type="type" max="99" :value="carNum"></u-badge>
numberType="limit"
:type="type"
max="99"
:value="carNum"
></u-badge>
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_car.png"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_car.png" mode="widthFix"></image>
mode="widthFix"
></image>
购物车 购物车
</div> </div>
</div> </div>
<div <div class="car_right"
class="car_right" v-if="!info.commodity_goods_info_list[currentGGIndex].cart_count || info.commodity_goods_info_list[currentGGIndex].cart_count.count == 0"
v-if=" @click="addCar">
!info.commodity_goods_info_list[currentGGIndex].cart_count ||
info.commodity_goods_info_list[currentGGIndex].cart_count.count == 0
"
@click="addCar"
>
加入购物车 加入购物车
</div> </div>
<div <div class="car_right" v-if="info.commodity_goods_info_list[currentGGIndex].cart_count.count > 0">
class="car_right"
v-if=" <u-number-box v-model="info.commodity_goods_info_list[currentGGIndex].cart_count.count"
info.commodity_goods_info_list[currentGGIndex].cart_count.count > 0 @change="changeCar" min="0">
"
>
<u-number-box
v-model="
info.commodity_goods_info_list[currentGGIndex].cart_count.count
"
@change="changeCar"
min="0"
>
<view slot="minus" class="minus"> <view slot="minus" class="minus">
<u-icon name="minus" size="36" bold></u-icon> <u-icon name="minus" size="36" bold></u-icon>
</view> </view>
<text <text slot="input" style="width: 200rpx;text-align: center;" class="input">
slot="input" {{ info.commodity_goods_info_list[currentGGIndex].cart_count.count }}</text>
style="width: 200rpx; text-align: center"
class="input"
>
{{
info.commodity_goods_info_list[currentGGIndex].cart_count.count
}}</text
>
<view slot="plus" class="plus"> <view slot="plus" class="plus">
<u-icon name="plus" color="#FFFFFF" size="36" bold></u-icon> <u-icon name="plus" color="#FFFFFF" size="36" bold></u-icon>
</view> </view>
@ -164,17 +109,13 @@
<div class="shadow" @click.stop="changeShadow" v-if="boxshadow1"> <div class="shadow" @click.stop="changeShadow" v-if="boxshadow1">
<div class="shadowBox1"> <div class="shadowBox1">
<div class="shadowBox1Item" @click="shareFriend"> <div class="shadowBox1Item" @click="shareFriend">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_WX.png" mode="aspectFill"></image>
mode="aspectFill"
></image>
微信好友 微信好友
</div> </div>
<div class="shadowBox1Item" @click="openSave"> <div class="shadowBox1Item" @click="openSave">
<image <image src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png"
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_saveImg.png" mode="aspectFill"></image>
mode="aspectFill"
></image>
生成海报 生成海报
</div> </div>
</div> </div>
@ -186,8 +127,7 @@
<div class="boxshadow_tit">今日商品推荐</div> <div class="boxshadow_tit">今日商品推荐</div>
<div class="boxshadow_img"> <div class="boxshadow_img">
<image <image
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png">
>
</image> </image>
</div> </div>
<div class="line"></div> <div class="line"></div>
@ -196,28 +136,35 @@
<div class="shadowboxInfo_right"> <div class="shadowboxInfo_right">
<div class="shadowboxInfo_right_1">正鲜生</div> <div class="shadowboxInfo_right_1">正鲜生</div>
<div class="shadowboxInfo_right_2"> <div class="shadowboxInfo_right_2">
长按识别小程序 <br /> 长按识别小程序 <br>
数量有限马上抢购 数量有限马上抢购</div>
</div>
</div> </div>
</div> </div>
</div> </div>
<div class="shadowBox_btn" @click.stop="saveImg">保存海报</div> <div class="shadowBox_btn" @click.stop="saveImg">保存海报</div>
</div> </div>
</div> </div>
</view> </view>
</template> </template>
<script> <script>
import { apiArr } from "../../../api/shop"; import {
import { picUrl, menuButtonInfo, request, NavgateTo } from "../../../utils"; apiArr
} from '../../../api/shop';
import {
picUrl,
menuButtonInfo,
request,
NavgateTo
} from '../../../utils';
export default { export default {
data() { data() {
return { return {
picUrl, picUrl,
top: "", top: "",
localHeight: "", localHeight: "",
carNum: "", carNum: '',
prevCarNum: "", prevCarNum: "",
currentNum: "0",// currentNum: "0",//
type: "error", type: "error",
@ -231,116 +178,120 @@ export default {
currentGGIndex: "", //index currentGGIndex: "", //index
carOrderList: [], carOrderList: [],
}; }
}, },
methods: { methods: {
changeIndex(e) { changeIndex(e) {
this.currentIndex = e.detail.current + 1; this.currentIndex = e.detail.current + 1
}, },
back() { back() {
uni.navigateBack({ uni.navigateBack({
delta: 1, delta: 1
}); });
}, },
// //
shareFriend() { shareFriend() {
this.boxshadow2 = false; this.boxshadow2 = false
return; return
// uniapp // uniapp
uni.share({ uni.share({
provider: "weixin", provider: 'weixin',
type: "link", type: 'link',
scene: "session", scene: 'session',
link: "https://uniapp.dcloud.net.cn/", link: 'https://uniapp.dcloud.net.cn/',
title: "商品名称", title: '商品名称',
imageUrl: "", imageUrl: '',
success: (res) => { success: (res) => {
uni.showToast({ uni.showToast({
title: "分享成功", title: '分享成功',
icon: "success", icon: 'success',
duration: 2000, duration: 2000
}); });
this.boxshadow1 = false; this.boxshadow1 = false
}, },
fail: (err) => { fail: (err) => {
console.log("分享失败", err); console.log('分享失败', err);
this.boxshadow1 = false; this.boxshadow1 = false
}, }
}); });
}, },
changeShadow() { changeShadow() {
this.boxshadow1 = false; this.boxshadow1 = false
}, },
openSave() { openSave() {
this.boxshadow1 = false; this.boxshadow1 = false
this.boxshadow2 = true; this.boxshadow2 = true
}, },
// //
saveImg() { saveImg() {
this.boxshadow2 = false; this.boxshadow2 = false
// //
uni.downloadFile({ uni.downloadFile({
url: "https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png", url: 'https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/shop_share_img.png',
success: (res) => { success: (res) => {
if (res.statusCode === 200) { if (res.statusCode === 200) {
uni.saveImageToPhotosAlbum({ uni.saveImageToPhotosAlbum({
filePath: res.tempFilePath, filePath: res.tempFilePath,
success: (res) => { success: (res) => {
uni.showToast({ uni.showToast({
title: "保存成功", title: '保存成功',
icon: "success", icon: 'success',
duration: 2000, duration: 2000
}); });
}, },
fail: (err) => { fail: (err) => {
console.log("保存失败", err); console.log('保存失败', err);
}, }
}); });
} }
}, },
fail: (err) => { fail: (err) => {
console.log("下载失败", err); console.log('下载失败', err);
}, }
}); });
}, },
changeShadow2() { changeShadow2() {
this.boxshadow2 = false; this.boxshadow2 = false
}, },
// //
share() { share() {
this.boxshadow1 = true; this.boxshadow1 = true
}, },
// //
getGoodsInfo() { getGoodsInfo() {
request(apiArr.getGoodsInfo, "POST", { request(apiArr.getGoodsInfo, "POST", {
id: this.id, id: this.id
}).then((res) => { }).then(res => {
console.log(res); console.log(res);
// //
res.commodity_goods_info_list.forEach((item) => { res.commodity_goods_info_list.forEach(item => {
item.goods_detail_pic = item.goods_detail_pic.split(","); item.goods_detail_pic = item.goods_detail_pic.split(',')
item.goods_carousel = item.goods_carousel.split(","); item.goods_carousel = item.goods_carousel.split(',')
item.commodity_pic = item.commodity_pic.split(","); item.commodity_pic = item.commodity_pic.split(',')
}); });
// //
if (this.carOrderList) { if (this.carOrderList) {
this.carOrderList.forEach((items) => { this.carOrderList.forEach(items => {
res.commodity_goods_info_list.forEach((item) => { res.commodity_goods_info_list.forEach(item => {
if (items.goods_id == item.id) { if (items.goods_id == item.id) {
item.cart_count = { count: 0 }; item.cart_count = {count:0}
item.cart_count.count = items.count; item.cart_count.count = items.count
} }
}); })
}); })
} }
this.info = res; this.info = res
this.currentGG = res.commodity_goods_info_list[0]; this.currentGG = res.commodity_goods_info_list[0]
this.currentGGIndex = 0; this.currentGGIndex = 0
});
})
}, },
copys(e) { copys(e) {
@ -348,134 +299,122 @@ export default {
data: e, data: e,
success: (res) => { success: (res) => {
uni.showToast({ uni.showToast({
title: "复制成功", title: '复制成功',
icon: "success", icon: 'success',
duration: 2000, duration: 2000
}); });
}, }
}); });
}, },
// //
changeGG(item, index) { changeGG(item, index) {
this.currentGG = item; this.currentGG = item
this.currentGGIndex = index; this.currentGGIndex = index
if (this.currentGG.cart_count) { if (this.currentGG.cart_count) {
this.currentNum = this.currentGG.cart_count.count; this.currentNum = this.currentGG.cart_count.count
} else { } else {
this.currentGG.cart_count = { count: 0 }; this.currentGG.cart_count = { count: 0 }
} }
}, },
car() { car() {
NavgateTo("../shopCar/index"); NavgateTo('../shopCar/index')
}, },
// //
getShopCar() { getShopCar() {
request(apiArr.getCarCount, "POST", {}).then((res) => { request(apiArr.getCarCount, 'POST', {}).then(res => {
this.carNum = res.total; this.carNum = res.total
this.prevCarNum = res.total; this.prevCarNum = res.total
}); })
}, },
getShopCarList() { getShopCarList() {
request(apiArr.getCar, "POST", {}).then((res) => { request(apiArr.getCar, 'POST', {}).then(res => {
this.carOrderList = res.commodity_cart_list; this.carOrderList = res.commodity_cart_list
}); })
}, },
addCar() { addCar() {
let that = this; let that = this
// //
let goods_id_and_count = []; let goods_id_and_count = []
this.info.commodity_goods_info_list[this.currentGGIndex].cart_count = { this.info.commodity_goods_info_list[this.currentGGIndex].cart_count = { count: 1 }
count: 1, this.info.commodity_goods_info_list.forEach(item => {
};
this.info.commodity_goods_info_list.forEach((item) => {
console.log(item.cart_count); console.log(item.cart_count);
goods_id_and_count.push({ goods_id_and_count.push({
goods_id: item.id, goods_id: item.id,
count: item.cart_count ? item.cart_count.count : 0, count: item.cart_count ? item.cart_count.count : 0
}); })
}); })
console.log(goods_id_and_count); console.log(goods_id_and_count);
// update // update
request(apiArr.updateCar, "POST", { request(apiArr.updateCar, "POST", {
goods_id_and_count, goods_id_and_count
}).then((res) => { }).then(res => {
that.getShopCar(); that.getShopCar()
that.getShopCarList(); that.getShopCarList()
}); })
}, },
// //
changeCar(newValue) { changeCar(newValue) {
// // //
// this.info.commodity_goods_info_list[this.currentGGIndex].cart_count.count = newValue.value this.info.commodity_goods_info_list[this.currentGGIndex].cart_count.count = newValue.value
// // //
// this.carOrderList.forEach(item => { this.carOrderList.forEach(item => {
// if (item.commodity_goods_info.id == this.info.commodity_goods_info_list[this.currentGGIndex].id) { if (item.commodity_goods_info.id == this.info.commodity_goods_info_list[this.currentGGIndex].id) {
// item.count = newValue.value item.count = newValue.value
// } }
// }) })
// // //
// let carNum = 0 let carNum = 0
// this.carOrderList.forEach(item => { this.carOrderList.forEach(item => {
// carNum += item.count carNum += item.count
// }) })
// this.carNum = carNum this.carNum = carNum
//
const params = {
user_id: uni.getStorageSync("userId"),
goods_id_and_count: [
{
goods_id: this.info.commodity_goods_info_list[this.currentGGIndex].id,
count: newValue.value,
},
],
};
request(apiArr.updateCar, "POST", params).then((res) => {
console.log(res);
this.getShopCarList();
uni.showToast({
title: "操作成功!",
success() {},
});
});
}, },
}, },
onLoad(options) { onLoad(options) {
const itemObj = JSON.parse(decodeURIComponent(options.item));
const meun = menuButtonInfo(); const meun = menuButtonInfo();
this.top = meun.top; this.top = meun.top;
this.localHeight = meun.height; this.localHeight = meun.height;
this.id = itemObj.id; this.id = options.id
},
onReachBottom() {
}, },
onReachBottom() {},
onShow() { onShow() {
this.getShopCarList(); this.getShopCarList()
this.getGoodsInfo(); this.getGoodsInfo()
this.getShopCar(); this.getShopCar()
}, },
//( id count 0 ) //( id count 0 )
onHide() { onHide() {
let goods_id_and_count = []; let goods_id_and_count = []
this.info.commodity_goods_info_list.forEach((item) => { this.info.commodity_goods_info_list.forEach(item => {
goods_id_and_count.push({ goods_id_and_count.push({
goods_id: item.id, goods_id: item.id,
count: item.cart_count ? item.cart_count.count : 0, count: item.cart_count ? item.cart_count.count : 0
}); })
}); })
request(apiArr.updateCar, "POST", { request(apiArr.updateCar, "POST", {
goods_id_and_count, goods_id_and_count
}); })
return; return
}, },
};
}
</script> </script>
<style> <style>

View File

@ -90,8 +90,7 @@
<div class="Con"> <div class="Con">
<div class="Con_left"> <div class="Con_left">
<div <div
class="CateItem" class="CateItem" :class="item.id === currentLeftCateId ? 'CateItem_active' : ''"
:class="item.id === currentLeftCateId ? 'CateItem_active' : ''"
v-for="item in leftCateList" v-for="item in leftCateList"
:key="item.id" :key="item.id"
@click="changeLeftCate(item.id)" @click="changeLeftCate(item.id)"
@ -149,19 +148,19 @@
:key="items.id" :key="items.id"
> >
<div class="CateInfo_Item_Box"> <div class="CateInfo_Item_Box">
<div class="CateInfo_Item_left" @click="goods(items)"> <div class="CateInfo_Item_left" @click="goods(items.id)">
<image <image
:src="picUrl + items.commodity_pic" :src="picUrl + items.commodity_pic"
mode="aspectFill" mode="aspectFill"
></image> ></image>
</div> </div>
<div class="CateInfo_Item_right" :class="GGshow ? 'noneBor' : ''"> <div class="CateInfo_Item_right" :class="GGshow ? 'noneBor' : ''">
<div class="CateInfo_Item_right_Tit" @click="goods(items)"> <div class="CateInfo_Item_right_Tit" @click="goods(items.id)">
{{ items.commodity_name }} {{ items.commodity_name }}
</div> </div>
<div <div
class="CateInfo_Item_right_subtit" class="CateInfo_Item_right_subtit"
@click="goods(items)" @click="goods(items.id)"
> >
{{ items.commodity_intro }} {{ items.commodity_intro }}
</div> </div>
@ -176,7 +175,7 @@
> >
<u-number-box <u-number-box
:min="0" :min="0"
v-model="items.commodity_goods_info_list[0].quantity" v-model="items.quantity"
@change="(value) => handleQuantityChange(value,items)" @change="(value) => handleQuantityChange(value,items)"
> >
<view slot="minus" class="minus"> <view slot="minus" class="minus">
@ -186,11 +185,7 @@
slot="input" slot="input"
style="width: 50px; text-align: center" style="width: 50px; text-align: center"
class="input" class="input"
>{{ >{{ items.quantity ? items.quantity : 0 }}</text
items.commodity_goods_info_list[0].quantity
? items.commodity_goods_info_list[0].quantity
: 0
}}</text
> >
<view slot="plus" class="plus"> <view slot="plus" class="plus">
<u-icon name="plus" color="#FFFFFF" size="20"></u-icon> <u-icon name="plus" color="#FFFFFF" size="20"></u-icon>
@ -231,7 +226,7 @@
<div <div
class="GGItem" class="GGItem"
v-for="ite in items.commodity_goods_info_list" v-for="ite in items.commodity_goods_info_list"
@click="goods(items)" @click="goods(items.id)"
> >
<div class="GGItem_Image"> <div class="GGItem_Image">
<image <image
@ -374,8 +369,6 @@ export default {
tagList: [], tagList: [],
carNum: "", carNum: "",
goodsDetail: [],
}; };
}, },
methods: { methods: {
@ -411,7 +404,7 @@ export default {
}, },
// //
goods(e) { goods(e) {
NavgateTo(`../goods/index?item=${JSON.stringify(e)}`); NavgateTo(`../goods/index?id=${e}`);
}, },
// //
@ -424,8 +417,7 @@ export default {
console.log(res); console.log(res);
this.CateList = res.commodity_category_list; this.CateList = res.commodity_category_list;
this.firstId = res.commodity_category_list[0].id; this.firstId = res.commodity_category_list[0].id;
this.leftCateList = this.leftCateList = res.commodity_category_list[0].level_two_category || [];
res.commodity_category_list[0].level_two_category || [];
if (this.leftCateList.length > 0) { if (this.leftCateList.length > 0) {
this.currentLeftCateId = this.leftCateList[0].id; this.currentLeftCateId = this.leftCateList[0].id;
this.secondId = this.leftCateList[0].id; this.secondId = this.leftCateList[0].id;
@ -448,18 +440,10 @@ export default {
}).then((res) => { }).then((res) => {
res.commodity_list.forEach((item) => { res.commodity_list.forEach((item) => {
item.commodity_info_list.forEach((item) => { item.commodity_info_list.forEach((item) => {
item.commodity_goods_info_list.forEach((param) => {
this.goodsDetail.forEach((goods) => {
if (goods.goods_id === param.id) {
param.quantity = goods.count;
}
});
});
item.isShow = false; item.isShow = false;
}); });
}); });
this.tagList = res.commodity_list; this.tagList = res.commodity_list;
console.log("🚀 ~ getGoodsList ~ this.tagList:", this.tagList)
}); });
}, },
@ -467,7 +451,6 @@ export default {
request(apiArr.getCar, "POST").then((res) => { request(apiArr.getCar, "POST").then((res) => {
console.log(res); console.log(res);
this.carNum = res.total; this.carNum = res.total;
this.goodsDetail = res.commodity_cart_list;
}); });
}, },
@ -478,10 +461,7 @@ export default {
}, },
// //
handleQuantityChange(val,item) { handleQuantityChange(val,item) {
if ( if (item.commodity_goods_info_list.length) {
item.commodity_goods_info_list &&
item.commodity_goods_info_list.length
) {
this.goodsId = item.commodity_goods_info_list[0].id; this.goodsId = item.commodity_goods_info_list[0].id;
} else { } else {
this.goodsId = item.id; this.goodsId = item.id;
@ -500,7 +480,8 @@ export default {
this.getShopCarList(); this.getShopCarList();
uni.showToast({ uni.showToast({
title: "操作成功!", title: "操作成功!",
success() {}, success() {
},
}); });
}); });
}, },
@ -514,7 +495,6 @@ export default {
}, },
onShow() { onShow() {
this.getShopCarList(); this.getShopCarList();
this.getGoodsList();
}, },
onReachBottom() { onReachBottom() {
if (this.flag) { if (this.flag) {

View File

@ -1,10 +1,7 @@
<template> <template>
<view> <view>
<div class="header"> <div class="header">
<div <div class="searchBox" :style="{ height: localHeight + 'px', paddingTop: top + 'px' }">
class="searchBox"
:style="{ height: localHeight + 'px', paddingTop: top + 'px' }"
>
<div class="searchBox_left" @click="back"> <div class="searchBox_left" @click="back">
<u-icon name="arrow-left" size="20px" color="#000"></u-icon> <u-icon name="arrow-left" size="20px" color="#000"></u-icon>
</div> </div>
@ -21,20 +18,10 @@
</div> </div>
<div class="goodsList"> <div class="goodsList">
<div <div class="goodsItem" v-for="item, index in shopCarList" :key="item.id">
class="goodsItem"
v-for="(item, index) in shopCarList"
:key="item.id"
>
<div class="goodsItem_left" @click="changeChecked(item, index)"> <div class="goodsItem_left" @click="changeChecked(item, index)">
<image <image v-if="!item.checked" src="http://192.168.0.172:5500/7.15/shop_checked1.png"></image>
v-if="!item.checked" <image v-if="item.checked" src="http://192.168.0.172:5500/7.15/shop_checked2.png"></image>
src="http://192.168.0.172:5500/7.15/shop_checked1.png"
></image>
<image
v-if="item.checked"
src="http://192.168.0.172:5500/7.15/shop_checked2.png"
></image>
</div> </div>
<div class="goodsItem_right"> <div class="goodsItem_right">
<div class="goodsItem_msg"> <div class="goodsItem_msg">
@ -43,43 +30,23 @@
</image> </image>
</div> </div>
<div class="goodsItem_msg_right"> <div class="goodsItem_msg_right">
<div class="goodsItem_msg_right_tit"> <div class="goodsItem_msg_right_tit">{{ item.commodity_goods_info.goods_name }}</div>
{{ item.commodity_goods_info.goods_name }} <div class="goodsItem_msg_right_subTit">{{ item.commodity_goods_info.goods_intro }}
</div>
<div class="goodsItem_msg_right_subTit">
{{ item.commodity_goods_info.goods_intro }}
</div> </div>
<div class="goodsItem_msg_right_msg"> <div class="goodsItem_msg_right_msg">
<div class="goodsItem_msg_right_msg_left"> <div class="goodsItem_msg_right_msg_left">
<span></span>{{ item.commodity_goods_info.sales_price }} <span></span>{{ item.commodity_goods_info.sales_price }} <span>/{{
<span>/{{ item.commodity_goods_info.goods_unit }}</span> item.commodity_goods_info.goods_unit }}</span>
</div> </div>
<div class="goodsItem_msg_right_msg_right"> <div class="goodsItem_msg_right_msg_right">
<u-number-box <u-number-box v-model="item.count" :asyncChange="true" min="0">
v-model="item.count" <view slot="minus" class="minus" @click="minus(item, index)">
:asyncChange="true"
min="0"
>
<view
slot="minus"
class="minus"
@click="minus(item, index)"
>
<u-icon name="minus" size="32" bold></u-icon> <u-icon name="minus" size="32" bold></u-icon>
</view> </view>
<text <text slot="input" style="width: 80rpx;text-align: center;" class="input">{{
slot="input" item.count }}</text>
style="width: 80rpx; text-align: center"
class="input"
>{{ item.count }}</text
>
<view slot="plus" class="plus" @click="add(item, index)"> <view slot="plus" class="plus" @click="add(item, index)">
<u-icon <u-icon name="plus" color="#FFFFFF" size="32" bold></u-icon>
name="plus"
color="#FFFFFF"
size="32"
bold
></u-icon>
</view> </view>
</u-number-box> </u-number-box>
</div> </div>
@ -93,15 +60,11 @@
<div class="footer"> <div class="footer">
<div class="footer_left"> <div class="footer_left">
<div class="footer_all" @click="allChecked"> <div class="footer_all" @click="allChecked">
<image <image v-if="!isAllchecked"
v-if="!isAllchecked" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png">
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check1.png"
>
</image> </image>
<image <image v-if="isAllchecked"
v-if="isAllchecked" src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png">
src="https://wechat-img-file.oss-cn-beijing.aliyuncs.com/property-img-file/com_check2.png"
>
</image> </image>
全选 全选
</div> </div>
@ -110,23 +73,34 @@
{{ shopMoney }} {{ shopMoney }}
</div> </div>
</div> </div>
<div class="footer_right" @click="submitOrder">结算</div> <div class="footer_right" @click="submitOrder">
结算
</div>
</div> </div>
</div> </div>
<div class="empty" v-if="false"> <div class="empty" v-if="false">
<image src="http://192.168.0.172:5500/7.15/shop_empty.png"></image> <image src="http://192.168.0.172:5500/7.15/shop_empty.png"></image>
<div> <div>
啥也没有 <br /> 啥也没有 <br>
赶紧去shopping吧~ 赶紧去shopping吧~
</div> </div>
</div> </div>
</view> </view>
</template> </template>
<script> <script>
import { apiArr } from "../../../api/shop"; import {
import { picUrl, menuButtonInfo, request, NavgateTo } from "../../../utils"; apiArr
} from '../../../api/shop';
import {
picUrl,
menuButtonInfo,
request,
NavgateTo
} from '../../../utils';
export default { export default {
data() { data() {
return { return {
@ -138,140 +112,120 @@ export default {
shopCarList: [], shopCarList: [],
shopCarTotal: 0, shopCarTotal: 0,
shopMoney: 0, shopMoney: 0,
isAllchecked: false, isAllchecked: false
}; }
}, },
methods: { methods: {
back() { back() {
NavgateTo("1"); NavgateTo("1")
}, },
submitOrder() { submitOrder() {
let arr = [];
this.shopCarList.forEach((item) => {
if (item.checked) {
arr.push(item);
}
});
NavgateTo(`../submitOrder/index?shopCarList=${JSON.stringify(arr)}`); let arr = []
this.shopCarList.forEach(item => {
if (item.checked) {
arr.push(item)
}
})
NavgateTo(`../submitOrder/index?shopCarList=${JSON.stringify(arr)}`)
}, },
getShopCar() { getShopCar() {
request(apiArr.getCar, "POST", {}).then((res) => { request(apiArr.getCar, 'POST', {}).then(res => {
res.commodity_cart_list.forEach((item) => { res.commodity_cart_list.forEach(item => {
item.checked = false; item.checked = false
});
this.shopCarTotal = res.total;
this.shopCarList = res.commodity_cart_list;
}); });
this.shopCarTotal = res.total
this.shopCarList = res.commodity_cart_list
})
}, },
// //
changeChecked(item, index) { changeChecked(item, index) {
this.shopCarList[index].checked = !this.shopCarList[index].checked; this.shopCarList[index].checked = !this.shopCarList[index].checked
this.calcTotal(); this.calcTotal()
// //
this.isAllchecked = this.shopCarList.every((item) => item.checked); this.isAllchecked = this.shopCarList.every(item => item.checked)
}, },
// //
allChecked() { allChecked() {
this.isAllchecked = !this.isAllchecked; this.isAllchecked = !this.isAllchecked
// Bug !this.allChecked !this.isAllchecked // Bug !this.allChecked !this.isAllchecked
if (this.isAllchecked) { if (this.isAllchecked) {
this.shopCarList.forEach((item) => { this.shopCarList.forEach(item => {
item.checked = true; item.checked = true
}); });
} else { } else {
this.shopCarList.forEach((item) => { this.shopCarList.forEach(item => {
item.checked = false; item.checked = false
}); });
} }
this.calcTotal(); this.calcTotal()
}, },
// //
calcTotal() { calcTotal() {
let total = 0;
this.shopCarList.forEach((item) => { let total = 0
this.shopCarList.forEach(item => {
console.log(item); console.log(item);
if (item.checked) { if (item.checked) {
total += item.commodity_goods_info.sales_price * item.count; total += item.commodity_goods_info.sales_price * item.count
} }
}); });
this.shopMoney = total; this.shopMoney = total
}, },
minus(item, index) { minus(item, index) {
let that = this; let that = this
if (item.count === 1) { if (item.count === 1) {
request(apiArr.deleteCar, "POST", { request(apiArr.deleteCar, "POST", {
ids: [item.id], ids: [item.id]
}).then((res) => { }).then(res => {
that.shopCarList.splice(index, 1); that.shopCarList.splice(index, 1)
that.calcTotal(); that.calcTotal()
}); })
} }
this.shopCarList[index].count = this.shopCarList[index].count - 1; this.shopCarList[index].count = this.shopCarList[index].count - 1
this.handleQuantityChange(this.shopCarList[index].count , this.shopCarList[index]) this.calcTotal()
this.calcTotal();
}, },
add(item, index) { add(item, index) {
this.shopCarList[index].count = this.shopCarList[index].count + 1; this.shopCarList[index].count = this.shopCarList[index].count + 1
this.handleQuantityChange(this.shopCarList[index].count , this.shopCarList[index]) this.calcTotal()
this.calcTotal();
}, },
deleteItem() { deleteItem() {
let that = this; let that = this
uni.showModal({ uni.showModal({
title: "提示", title: '提示',
content: "确定删除所选商品吗", content: '确定删除所选商品吗',
success: function (res) { success: function (res) {
if (res.confirm) { if (res.confirm) {
let ids = []; let ids = []
that.shopCarList.forEach((item) => { that.shopCarList.forEach(item => {
if (item.checked) { if (item.checked) {
ids.push(item.id); ids.push(item.id)
item.checked = false; item.checked = false
} }
}); })
request(apiArr.deleteCar, "POST", { request(apiArr.deleteCar, "POST", {
ids, ids
}) }).then(res => {
.then((res) => {
uni.showToast({ uni.showToast({
title: "删除成功", title: '删除成功',
duration: 2000, duration: 2000
}); });
that.getShopCar(); that.getShopCar()
that.calcTotal(); that.calcTotal()
}) }).catch(err => {
.catch((err) => {
console.log(err); console.log(err);
}); })
} else if (res.cancel) { } else if (res.cancel) {
console.log("用户点击取消"); console.log('用户点击取消');
}
} }
},
});
},
//
handleQuantityChange(val, item) {
const params = {
user_id: uni.getStorageSync("userId"),
goods_id_and_count: [
{
goods_id: item.goods_id,
count: val,
},
],
};
request(apiArr.updateCar, "POST", params).then((res) => {
console.log(res);
uni.showToast({
title: "操作成功!",
success() {},
});
}); });
}, },
}, },
@ -279,10 +233,12 @@ export default {
const meun = menuButtonInfo(); const meun = menuButtonInfo();
this.top = meun.top; this.top = meun.top;
this.localHeight = meun.height; this.localHeight = meun.height;
this.getShopCar(); this.getShopCar()
}, },
onReachBottom() {}, onReachBottom() {
};
},
}
</script> </script>
<style> <style>