smart-admin/rc-busness/pages/myorder/userrecord.vue
2022-01-23 21:10:24 +08:00

831 lines
20 KiB
Vue

<template>
<div>
<Myheader></Myheader>
<div class="rc-top"></div>
<tabs :crumbs="crumbs"></tabs>
<div class="rc-main rc-max-width--xl">
<div class="cart-list">
<div class="header">
<div class="list-left">
<label class="check-label" style="visibility: hidden;">
<input type="checkbox" v-model="checkAll" />
</label>
<span class="name">商品</span>
</div>
<ul>
<li>单价</li>
<li>数量</li>
<li>操作</li>
</ul>
</div>
<div class="header_ph">
<el-row>
<el-col :span="12">
<div class="list-left" style="visibility: hidden;">
<label class="check-label">
<input type="checkbox" v-model="checkAll" />
</label>
<span class="name">全选</span>
</div>
</el-col>
<el-col :span="12" class="tr">
<span @click="editList()"
><i class="el-icon-edit"></i>{{ editState }}</span
></el-col
>
</el-row>
</div>
<div class="list" v-for="(item, index) in cartData" :key="index">
<div class="list-left">
<label class="check-label">
<input type="checkbox" v-model="item.checked" />
</label>
<div class="product">
<div class="product-img">
<img :src="item.productImg" alt="" />
</div>
<div class="right">
<p class="product-title" v-text="item.productName"></p>
<p class="specifications">规格:{{ item.specifications }}</p>
</div>
</div>
</div>
<ul>
<li class="product-price">¥{{ item.productPrice }}</li>
<li>
<div class="rc-jia">
<img
src="../../assets/image/userjian.png"
alt=""
@click="sub(item.buyCount, index)"
/>
<input type="text" v-model="item.buyCount" />
<img
src="../../assets/image/userjia.png"
alt=""
@click="plus(item.buyCount, index)"
/>
</div>
</li>
<li class="del"><em @click="userdele(item)">删除</em></li>
</ul>
</div>
</div>
<div class="rc-footera">
<div class="rc-foote">
<div class="rc-shop">
<label style="visibility: hidden;">
<input type="checkbox" v-model="checkAll" />
全选
</label>
</div>
<div class="rc-delete">
<div class="rc-num">
<div class="rc-usernum">
<div class="rc-usea">
<i>总计:</i>
<span>{{ sumPrice }}</span>
</div>
<em>共选择{{ sumlength }}件商品</em>
</div>
<strong @click="usejiesuan()">{{ mustpay }}</strong>
</div>
</div>
</div>
<!-- <div class="rc-shop">
<i>总计:</i>
<span>{{ ordersum }}</span>
</div>
<div class="rc-delete">
<span>
{{ userdelete }}
</span>
</div> -->
</div>
</div>
<MyFooter></MyFooter>
</div>
</template>
<script>
import Myheader from "~/components/header.vue";
import MyFooter from '~/components/rc-footer.vue'
import tabs from "@/components/tabs.vue";
import { mapMutations } from "vuex";
import { isexistCart, generateOrderWX, deleteCart } from "../../ajax/getData";
export default {
middleware: "metaTitle",
meta: { title: "购物车" },
data() {
return {
crumbs:[
{
path:'/productdetails/productlist/',
},
{
path:'/myorder/userrecord/'
}
],
ordersum: 1,
usercheckbox: false,
shopnum: 0,
checkAllFlag: false, //是否全选
checkone: false,
ys1: true,
ys2: true,
userdelete: "结算",
orderprice: "¥199.00",
mustpay: "立即结算",
editState: "编辑",
dellist: [],
totalMoney: "",
allChecked: false,
userid: null,
cartData: [
// {
// buyCount: 3,
// id: 1,
// memberId: "1",
// productCode: "432434",
// productImg: require("../../assets/image/rc-select.png"),
// productName: "测试商品",
// productPrice: 399.0,
// specifications: "5KG",
// checked: false,
// },
// {
// buyCount: 1,
// id: 2,
// memberId: "2",
// productCode: "432434",
// productImg: require("../../assets/image/rc-select.png"),
// productName: "测试商品222",
// productPrice: "199.00",
// specifications: "5KG",
// checked: true,
// },
// {
// buyCount: 4,
// id: 3,
// memberId: "3",
// productCode: "432434",
// productImg: require("../../assets/image/rc-select.png"),
// productName: "测试商品3333",
// productPrice: 69.01,
// specifications: "5KG",
// checked: true,
// },
],
};
},
mounted() {
this.carmessage();
this.checkIsLogin();
},
components: {
Myheader,
tabs,
MyFooter
},
methods: {
//请求猫
...mapMutations(["checkIsLogin"]),
async carmessage() {
let user = this.$store.state.userInfo;
this.userid = user.data.id;
let data = await isexistCart(user.data.id);
this.cartData = data;
// this.goldmedal = data;
},
async userjie(list) {
let user = this.$store.state.userInfo;
this.userid = user.data.id;
let data = await generateOrderWX(list);
if (data) {
this.$message({
type: "warning",
message: data.msg,
});
this.$router.push({
path: "/personal/settlement",
query: {
wxdata: data.data,
},
});
}
},
//删除购物车
async deletsmessage(productCode) {
let user = this.$store.state.userInfo;
this.userid = user.data.id;
let data = await deleteCart( productCode);
if (data) {
this.$message({
type: "warning",
message: data.msg,
});
this.carmessage();
}
},
editList() {
if (this.editState == "完成") {
this.mustpay = "立即结算";
this.editState = " 编辑";
} else {
this.mustpay = "删除";
this.editState = "完成";
}
},
// checkBox(){
// console.log(event.target.checked)
// this.usercheckbox=event.target.checked;
// this.goldmedal.forEach(item => {
// item.checked = this.usercheckbox
// });
// },
userdele(item) {
let delform = [];
if (item.length > 0) {
delform = item;
} else {
delform = [item.productCode];
}
this.$confirm("确定删除", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "success",
callback: (action) => {
if (action === "confirm") {
this.deletsmessage(delform);
}
},
});
// this.$message({
// type: "warning",
// message: data.msg,
// });
},
plus(num, index) {
let leftAllotment = this.cartData[index].leftAllotment;
if(this.cartData[index].buyCount >= leftAllotment) {
this.$message({
type: "error",
message: "已达到本品最大购买上限",
});
return;
}
this.cartData[index].buyCount =
parseInt(this.cartData[index].buyCount) + 1;
},
// 数量减方法
sub(num, index) {
if (parseInt(num) <= 1) {
this.cartData[index].buyCount = 1;
} else {
this.cartData[index].buyCount =
parseInt(this.cartData[index].buyCount) - 1;
}
},
// 求总价
useredit(e) {
this.ys1 = !this.ys1;
if (this.ys1 == false) {
this.$nextTick(() => {
this.userdelete = "删除";
});
} else if (this.ys1 == true) {
this.$nextTick(() => {
this.userdelete = "结算";
console.log(this.userdelete);
});
}
if (this.userdelete == "删除") {
}
},
usejiesuan() {
// let procode = [];
// let list = [];
// let menulist = [];
// this.cartData.filter((item) => {
// if (item.checked) {
// list.push(item);
// console.log(item);
// procode.push(item.productCode);
// } else {
// list.splice(index, 1);
// }
// });
// let list = [];
// list = this.cartData.filter((item) => item.checked);
// list.forEach((item) => {
// menulist.push({
// productName: item.productName,
// buyCount: item.buyCount,
// productId: item.productCode,
// payAmount: item.productPrice,
// memberId: item.memberId,
// phoneNumber: item.mobile,
// });
// });
let list = [];
list = this.cartData.filter((item) => item.checked);
if (list.length == 0) {
this.$message({
type: "warning",
message: "你还未选择商品",
});
return;
} else {
if (this.editState == "完成") {
let delList = [];
list.forEach((item) => {
delList.push(item.productCode);
});
this.userdele(delList);
} else {
this.$router.push({
path: "/personal/settlement",
query: {
list: JSON.stringify(list),
},
// params: { test:'222'},
});
}
}
// list=[
// {
// "productName":"幼猫全价粮",
// "buyCount":"2",
// "productId":"210352",
// "payAmount":"517",
// "memberId":"844350",
// "phoneNumber":"18112621098"
// },
// {
// "productName":"幼猫全价粮",
// "buyCount":"2",
// "productId":"210352",
// "payAmount":"517",
// "memberId":"844350",
// "phoneNumber":"18112621098"
// }
// ]
// instance
// .post(`generateOrderWX`, list, configs)
// .then((res) => {
// console.log(res);
// });
},
// async userdelete(item) {
// let data = await isexistCart( this.userid,);
// },
},
computed: {
checkAll: {
// 设置值,当点击全选按钮的时候触发
set(v) {
this.cartData.forEach((item) => {
item.checked = v;
});
},
// 取值,当列表中的选择改变之后触发
get() {
return (
this.cartData.length ===
this.cartData.filter((item) => item.checked == true).length
);
},
},
// 总价计算
sumPrice() {
return this.cartData
.filter((item) => item.checked)
.reduce((pre, cur) => {
console.log(pre);
return pre + cur.buyCount * cur.productPrice;
}, 0);
},
sumlength() {
return this.cartData.filter((item) => item.checked == true).length;
},
},
};
</script>
<style lang="less" scoped>
.rc-footer {
display: none;
}
.rc-footera {
background: #f6f6f6;
border: 1px solid #d7d7d7;
margin-bottom:40px;
.rc-foote {
margin: 0 auto;
box-shadow: 0px -3px 6px rgba(0, 0, 0, 0.1);
height: 102px;
display: flex;
justify-content: space-between;
}
.rc-shop {
display: flex;
align-items: center;
margin-left: 24px;
img {
width: 24px;
height: 24px;
display: block;
}
span {
font-style: normal;
font-size: 18px;
color: #333333;
margin-left: 16px;
display: block;
}
}
.rc-delete {
display: flex;
align-items: center;
margin-right: 32px;
.rc-num {
display: flex;
align-items: center;
.rc-usernum {
display: flex;
flex-direction: column;
align-items: center;
margin-right: 25px;
.rc-usea {
display: flex;
align-items: center;
}
}
}
i {
font-size: 18px;
font-style: normal;
color: #333333;
margin-right: 8px;
display: block;
}
span {
font-size: 20px;
color: #e1001a;
}
em {
font-style: normal;
margin-top: 8px;
color: #333333;
font-size: 16px;
}
strong {
cursor: pointer;
width: 164px;
height: 48px;
background: #e2001a;
border-radius: 30px;
display: flex;
justify-content: center;
align-items: center;
font-size: 16px;
margin-right: 40px;
color: #ffffff;
}
}
}
.rc-main {
.cart-list {
width: 100%;
border: 1px solid #d7d7d7;
font-size: 16px;
color: #666666;
p {
margin: 0;
}
.header {
background: #f6f6f6;
border-radius: 3px 3px 0px 0px;
border-bottom: 1px solid #d7d7d7;
height: 64px;
display: flex;
justify-content: space-between;
}
.header_ph {
display: none;
}
.check-label {
display: block;
margin-left: 24px;
}
.name {
display: block;
margin-left: 56px;
}
.list-left {
display: flex;
align-items: center;
width: 50%;
}
ul {
display: flex;
width: 50%;
justify-content: space-around;
align-items: center;
}
.list {
display: flex;
justify-content: space-between;
border-bottom: 1px solid #d7d7d7;
padding: 15px 0;
.del{
em{ font-style: normal;}
}
.product-price {
color: #e1001a;
font-weight: bold;
font-size: 20px;
width: 60px;
}
.del{
em{
color: #e1001a;
border-bottom: 1px solid #e1001a;
cursor:pointer ;
}
}
.product {
display: flex;
justify-content: space-between;
margin-left: 56px;
.product-title {
color: #e1001a;
font-weight: bold;
font-size: 18px;
}
.product-img {
margin-right: 15px;
width: 96px;
height: 96px;
img {
width: 100%;
height: 100%;
}
}
}
.rc-jia {
display: flex;
align-items: center;
img,
input {
width: 30px;
height: 30px;
text-align: center;
margin: 0 5px;
}
input {
border: 1px solid #d7d7d7;
}
}
}
}
.rc-select {
border-bottom: 1px solid #d8d8d8;
height: 56px;
width: 100%;
display: flex;
display: none;
justify-content: space-between;
.select-left {
display: flex;
align-items: center;
img {
width: 24px;
height: 24px;
display: block;
}
span {
font-size: 14px;
color: #333333;
display: block;
margin-left: 8px;
}
}
.select-right {
display: flex;
align-items: center;
img {
width: 16px;
height: 16px;
display: block;
margin-right: 8px;
}
span {
font-size: 14px;
color: #333333;
}
}
}
.rc-userdemand {
width: 100%;
height: 180px;
border-bottom: 1px solid #d8d8d8;
display: flex;
.rc-userdeman {
display: flex;
align-items: center;
img {
width: 24px;
height: 24px;
display: block;
margin-left: 24px;
}
.re-message {
width: 96px;
height: 96px;
display: block;
border: 1px solid #d8d8d8;
margin-left: 56px;
}
}
.rc-userdem {
display: flex;
width: 100%;
margin-left: 8px;
span {
font-size: 18px;
color: #e1001a;
display: block;
font-weight: bold;
}
em {
font-style: normal;
font-size: 16px;
display: block;
margin-top: 8px;
color: #666666;
}
.rc-userdema {
display: flex;
flex-direction: column;
justify-content: center;
width: 10%;
}
.rc-userd {
display: flex;
align-items: center;
width: 87%;
justify-content: space-around;
.rc-jia {
display: flex;
align-items: center;
}
i {
font-size: 20px;
font-style: normal;
color: #e1001a;
}
img {
width: 23px;
height: 23px;
display: block;
margin-right: 5px;
}
img:last-child {
width: 23px;
height: 23px;
display: block;
margin-left: 10px;
}
em {
font-style: normal;
font-size: 20px;
cursor: pointer;
border-bottom: 1px solid #e2001a;
display: block;
margin-left: 40px;
color: #e1001a;
}
strong {
font-style: normal;
display: flex;
justify-content: center;
list-style: none;
align-items: center;
width: 24px;
color: #666666;
height: 24px;
border: 1px solid #d7d7d7;
font-size: 12px;
border-radius: 3px;
}
}
}
}
}
//手机端
@media screen and (max-width: 768px) {
.rc-main {
padding: 0;
width: 100%;
.cart-list {
border: none;
margin-bottom: 130px;
.header {
display: none;
}
.header_ph {
display: block;
border-bottom: 2px solid #d8d8d8;
padding: 20px 10px 20px 0;
border-top: 5px solid #f6f6f6;
}
.check-label {
margin-left: 10px;
}
.name {
margin-left: 16px;
}
.list {
display: block;
.product {
margin-left: 16px;
}
.list-left{
width: 100%;
}
ul {
margin-top: -2rem;
margin-left: 9.75rem;
width: 50%;
.del {
display: none;
}
}
.product-title{
width: 225px;
text-overflow: ellipsis;
white-space:nowrap;
overflow: hidden;
}
}
}
}
.rc-footera {
position: fixed;
bottom: 0;
width: 100%;
z-index: 10;
margin-bottom:0;
.rc-shop {
display: none;
}
.rc-delete {
margin-right: 0;
width: 100%;
.rc-num {
width: 100%;
justify-content: space-between;
padding: 10px;
}
strong {
margin-right: 0;
}
}
}
.el-message-box {
width: 300px;
}
}
</style>