From f4d8058fce21e096338f48db2d6e34124e9fa914 Mon Sep 17 00:00:00 2001
From: panliang <1163816051@qq.com>
Date: Fri, 10 Feb 2023 11:46:12 +0800
Subject: [PATCH] select_product
---
src/components/goods-item/goods-item.vue | 18 +++++++++-
src/pageB/select_product/index.vue | 46 ++++++++++++++++--------
src/pageB/select_product/search.vue | 38 +++++++++++---------
src/pageB/select_store/index.vue | 4 +--
4 files changed, 72 insertions(+), 34 deletions(-)
diff --git a/src/components/goods-item/goods-item.vue b/src/components/goods-item/goods-item.vue
index 107e481..1436a10 100644
--- a/src/components/goods-item/goods-item.vue
+++ b/src/components/goods-item/goods-item.vue
@@ -1,5 +1,5 @@
-
+
@@ -50,6 +50,10 @@ export default {
cart:{
type:Boolean,
default:false
+ },
+ detail: {
+ type: Boolean | String,
+ default: true
}
},
data() {
@@ -58,6 +62,18 @@ export default {
methods: {
onCart(){
this.$emit('cartClick',this.goods)
+ },
+ handleDetail(goods) {
+ if (this.detail === false) {
+ this.onCart()
+ return;
+ }
+ let url = '/pages/product_details/index'
+ let params = { skuId: goods.id, showShrough: this.showShrough }
+ if (this.detail !== true) {
+ url = this.detail
+ }
+ this.$u.route(url, params)
}
},
};
diff --git a/src/pageB/select_product/index.vue b/src/pageB/select_product/index.vue
index 23cef3d..aadb322 100644
--- a/src/pageB/select_product/index.vue
+++ b/src/pageB/select_product/index.vue
@@ -21,41 +21,54 @@
-
-
- {{ item.name }}
-
-
-
-
-
-
-
-
-
+
+
+
+
+ {{ item1.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/pageB/select_product/search.vue b/src/pageB/select_product/search.vue
index 6e38d82..02fa8d4 100644
--- a/src/pageB/select_product/search.vue
+++ b/src/pageB/select_product/search.vue
@@ -41,12 +41,12 @@
-
+
-
+
@@ -58,7 +58,7 @@
:key="productId"
:loading="loading"
:specs="specs"
- :sku="detail"
+ :sku="sku"
v-model="show"
:quota-used="number"
:show-cart="popupType == 1 || popupType == 0"
@@ -66,6 +66,7 @@
:show-confirm="popupType == 3"
@add-cart="onAddCart"
@stepper-change="onChangeNumber"
+ @sku-selected="handleSkuSelect"
>
@@ -84,10 +85,12 @@ export default {
mixins: [MescrollMixin],
data() {
return {
+ mid: '',// 店铺 id
+ category: '',// 分类 id
+ searchText: '',// 搜索关键字
+ sku: {},// 当前选择的sku
key: 0,
sort: '', //price 价格,sales 销量,release_at 上架时间。示例:price 按价格升序,-price 按价格降序
- searchText: '',
- category: '',
loading: false,
popupType: 1,
number: 1,
@@ -111,17 +114,15 @@ export default {
specs() {
return this.products?.spu_specs ?? [];
},
- detail() {
- return this.products?.sku ?? {};
- },
height() {
const { windowHeight, statusBarHeight } = this.$u.sys();
return windowHeight - statusBarHeight - 44 + 'px';
},
},
- onLoad({ searchText, category }) {
- this.searchText = searchText;
- this.category = category;
+ onLoad(e) {
+ this.searchText = e.keywords;
+ this.category = e.cid;
+ this.mid = e.mid;
},
methods: {
Change(e) {
@@ -154,6 +155,7 @@ export default {
const resData = await this.$api.get(`/v1/product/products/${this.productId}`);
this.products = resData;
this.skuId = this.products?.sku.id;
+ this.sku = this.products?.sku
} catch (error) {
console.log(error);
} finally {
@@ -169,17 +171,15 @@ export default {
this.loadData(page);
},
loadData(page) {
- let obj = {
+ let params = {
page: page.num,
per_page: page.size,
category: this.category,
keyword: this.searchText,
sort: this.sort,
};
- this.$api
- .get(`/v1/product/products`, {
- params: obj,
- })
+ let url = this.mid ? `/v1/store/${this.mid}/product-spus` : `/v1/product/products`
+ this.$api.get(url, { params })
.then((res) => {
this.mescroll.endSuccess(res.data.length);
if (page.num == 1) this.dataList = [];
@@ -215,6 +215,12 @@ export default {
this.key++;
});
},
+ // 选择sku, 更新价格
+ handleSkuSelect(e) {
+ this.$api.get(`/v1/store/${this.mid}/product-sku/${e.sku_id}`).then(res => {
+ this.sku = res
+ })
+ }
},
};
diff --git a/src/pageB/select_store/index.vue b/src/pageB/select_store/index.vue
index 52c00c9..777be6d 100644
--- a/src/pageB/select_store/index.vue
+++ b/src/pageB/select_store/index.vue
@@ -5,7 +5,7 @@
线上预约店
-
+
@@ -16,7 +16,7 @@