From 9a04d366e45cc4a80d2be93f648e5b20f411fb1a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?TOP=E7=B3=AF=E7=B1=B3?= <1130395124@qq.com>
Date: Thu, 9 Mar 2023 19:28:16 +0800
Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=B4=AD=E7=89=A9=E8=BD=A6?=
=?UTF-8?q?=E7=9B=B8=E5=85=B3=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/core/apis.js | 9 +++++++++
src/core/models.js | 2 ++
src/core/models/cart.js | 39 ++++++++++++++++++++++++++++++++++++
src/pages/service/cart.vue | 26 ++++++++++++++++++++----
src/pages/service/detail.vue | 8 +++++++-
5 files changed, 79 insertions(+), 5 deletions(-)
create mode 100644 src/core/models/cart.js
diff --git a/src/core/apis.js b/src/core/apis.js
index c28db68..ef335e3 100644
--- a/src/core/apis.js
+++ b/src/core/apis.js
@@ -97,6 +97,15 @@ export default {
}
},
order: {
+ cart: {
+ add: {
+ url: "/order/addshoppingcar",
+ showLoading: true,
+ },
+ list: {
+ url: "/order/myshoppingcar"
+ },
+ },
pay: {
url: "/wxpay/payordera",
showLoading: true,
diff --git a/src/core/models.js b/src/core/models.js
index bb212c7..cba23e8 100644
--- a/src/core/models.js
+++ b/src/core/models.js
@@ -2,10 +2,12 @@ import order from "@/core/models/order";
import user from "@/core/models/user";
import worker from "@/core/models/worker";
import service from "@/core/models/service";
+import cart from "@/core/models/cart";
export default {
order,
user,
worker,
service,
+ cart,
}
diff --git a/src/core/models/cart.js b/src/core/models/cart.js
new file mode 100644
index 0000000..4bcf95e
--- /dev/null
+++ b/src/core/models/cart.js
@@ -0,0 +1,39 @@
+import Vue from "vue"
+let prototype = Vue.prototype;
+
+export default {
+ /**
+ * 添加到购物车
+ */
+ add(id) {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "order.cart.add",
+ data: {
+ id: id,
+ }
+ }).then((response) => {
+ prototype.$utils.toast(response.msg);
+ if (response.code == 1) {
+ return resolve(response.msg);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ },
+ /**
+ * 列表
+ */
+ list() {
+ return new Promise((resolve, reject) => {
+ prototype.$request({
+ api: "order.cart.list",
+ }).then(response => {
+ if (response.code == 1) {
+ return resolve(response.data);
+ }
+ return reject(response.msg);
+ }).catch(e => { });
+ });
+ }
+}
diff --git a/src/pages/service/cart.vue b/src/pages/service/cart.vue
index bf83807..8a5fefd 100644
--- a/src/pages/service/cart.vue
+++ b/src/pages/service/cart.vue
@@ -22,7 +22,7 @@
@@ -68,6 +68,24 @@ export default {
ServicePreviewItem,
},
onLoad() {
+ let cartList = [];
+ this.$models.cart.list().then((list) => {
+ list.forEach((item) => {
+ let goods = [];
+ item.good.forEach((v) => {
+ goods.push({
+ id: v.gid,
+ name: v.title,
+ cover: require("@/static/temp/cate/1.png"),
+ number: v.number,
+ });
+ });
+ cartList.push({
+ name: item.cate,
+ list: [],
+ });
+ });
+ });
this.list = this.parseList([
{
id: 1,
@@ -77,13 +95,13 @@ export default {
id: 1,
name: "格力空调安装",
cover: require("@/static/temp/cate/1.png"),
- buyNumber: 1,
+ number: 1,
},
{
id: 2,
name: "美的空调安装",
cover: require("@/static/temp/cate/1.png"),
- buyNumber: 1,
+ number: 1,
},
],
},
@@ -95,7 +113,7 @@ export default {
id: 3,
name: "厨房下水道",
cover: require("@/static/temp/cate/1.png"),
- buyNumber: 10,
+ number: 10,
},
],
},
diff --git a/src/pages/service/detail.vue b/src/pages/service/detail.vue
index c8f2ccb..d7751d1 100644
--- a/src/pages/service/detail.vue
+++ b/src/pages/service/detail.vue
@@ -70,7 +70,7 @@
¥{{ detail.price }}
-
+
加入购物车
@@ -140,6 +140,12 @@ export default {
icon: "none",
});
},
+ /**
+ * 加入购物车
+ */
+ addToCart() {
+ this.$models.cart.add(this.id);
+ },
/**
* 创建订单
*/