From 7ee6309073fdc9fd38979accabb733cee42cefaa Mon Sep 17 00:00:00 2001
From: zhanghua <314079846@qq.com>
Date: 星期一, 09 六月 2025 14:59:55 +0800
Subject: [PATCH] 商品api接口

---
 config/api.js                               |    2 
 pages.json                                  |   23 +++++
 pages/goods-manager/goodsList/goodsList.vue |   32 ++++++-
 pages/goods-manager/addGoods/addGoods.vue   |   54 ++++++++++---
 api/goods.js                                |  103 +++++++++++++++++++++++--
 5 files changed, 184 insertions(+), 30 deletions(-)

diff --git a/api/goods.js b/api/goods.js
index bc8ae30..8d33982 100644
--- a/api/goods.js
+++ b/api/goods.js
@@ -3,11 +3,12 @@
  */
 
 import { http, Method } from "@/utils/request.js";
+import api from "@/config/api.js";
 
 /**
  * 浠嶦S涓幏鍙栫浉鍏冲晢鍝佸搧鐗屽悕绉帮紝鍒嗙被鍚嶇О鍙婂睘鎬�
  */
- export function getGoodsMessage(goodsId) {
+export function getGoodsMessage(goodsId) {
   return http.request({
     url: `/goods/goods/get/${goodsId}`,
     method: Method.GET,
@@ -30,7 +31,7 @@
  * @param skuId 鍟嗗搧ID
  * @returns {AxiosPromise}
  */
- export function getGoods(skuId, goodsId) {
+export function getGoods(skuId, goodsId) {
   return http.request({
     url: `/goods/goods/sku/${goodsId}/${skuId}`,
     method: Method.GET,
@@ -41,7 +42,7 @@
  * 鑾峰彇鍟嗗搧鍒嗛攢
  * @param distributionId 鍟嗗搧鍒嗛攢ID
  */
- export function getGoodsDistribution(distributionId) {
+export function getGoodsDistribution(distributionId) {
   return http.request({
     url: `/distribution/distribution/bindingDistribution/${distributionId}`,
     method: Method.GET,
@@ -200,10 +201,10 @@
 /**
  * 鑾峰彇 灏忕▼搴忕爜
  */
- export function getMpCode(params){
+export function getMpCode(params) {
   return http.request({
-    url:`/passport/connect/miniProgram/mp/unlimited`,
-    method:Method.GET,
+    url: `/passport/connect/miniProgram/mp/unlimited`,
+    method: Method.GET,
     params
   })
 }
@@ -211,10 +212,94 @@
 /**
  * 鏍规嵁shortlink 鑾峰彇椤甸潰鍙傛暟
  */
- export function getMpScene(id){
+export function getMpScene(id) {
   return http.request({
-    url:`/passport/connect/miniProgram/mp/unlimited/scene?id=${id}`,
-    method:Method.GET,
+    url: `/passport/connect/miniProgram/mp/unlimited/scene?id=${id}`,
+    method: Method.GET,
 
   })
 }
+
+/**
+ * 鍗栧鍟嗗搧鍒楄〃
+ * 
+ */
+export function getStoreGoods(params) {
+  return http.request({
+    url: api.store + '/goods/goods/list',
+    method: Method.GET,
+    needToken: true,
+    params
+  })
+}
+
+/**
+ * 鍗栧鍟嗗搧璇︽儏
+ * 
+ */
+export function getStoreGoodsInfo(id) {
+  return http.request({
+    url: api.store + `/goods/goods/get/${id}`,
+    needToken: true,
+    method: Method.GET
+  })
+}
+
+
+/**
+ * 鍒涘缓鍟嗗搧
+ */
+export function createStoreGoods(params) {
+  return http.request({
+    url: api.store + `/goods/goods/create`,
+    method: Method.POST,
+    needToken: true,
+    params,
+  });
+}
+
+/**
+ * 淇敼鍟嗗搧
+ */
+export function updateStoreGoods(params) {
+  return http.request({
+    url: api.store + +`/goods/goods/update/${params.id}`,
+    needToken: true,
+    method: Method.PUT,
+    params,
+  });
+}
+
+
+/**
+ * 鍗栧鍟嗗搧鍒嗙被淇℃伅
+ * 
+ */
+export function getStoreGoodsCategory() {
+  return http.request({
+    url: api.store + `/goods/category/all`,
+    needToken: true,
+    method: Method.GET
+  })
+}
+
+/**
+ * 鍗栧鍟嗗搧鍒嗙被淇℃伅
+ * 
+ */
+export function getStoreGoodsBrands(categoryId) {
+  return http.request({
+    url: api.store + `/goods/category/${categoryId}/brands`,
+    needToken: true,
+    method: Method.GET
+  })
+}
+export function getgoodsUnit() {
+  return http.request({
+    url: api.store + `/goods/goodsUnit`,
+    needToken: true,
+    method: Method.GET,
+    params: { pageNumber: 1, pageSize: 200 }
+  })
+}
+
diff --git a/config/api.js b/config/api.js
index 769e179..778e0d7 100644
--- a/config/api.js
+++ b/config/api.js
@@ -10,6 +10,7 @@
   im: "http://127.0.0.1:8885",
   common: "http://127.0.0.1:8890",
   buyer: "http://127.0.0.1:8888",
+  store: "http://127.0.0.1:8889",
   // common: "http://192.168.0.113:8890",
   // buyer: "http://192.168.0.113:8888",
   // im: "http://192.168.0.113:8885",
@@ -36,6 +37,7 @@
 
 api.buyer += "/buyer";
 api.common += "/common";
+api.store += "/store";
 api.im += "/im";
 export default {
   ...api,
diff --git a/pages.json b/pages.json
index 9bbcf07..8c0d19a 100644
--- a/pages.json
+++ b/pages.json
@@ -220,14 +220,33 @@
 			"style" : 
 			{
 				"enablePullDownRefresh" : true,
-				"navigationBarTitleText" : "鍟嗗搧鍒楄〃"
+				"navigationBarTitleText" : "鍟嗗搧鍒楄〃",
+				"componentPlaceholder": {
+					"u-icon": "view",
+					"u-button": "view",
+					"u-form": "view",
+					"u-form-item": "view",
+					"u-input": "view",
+					"u-popup": "view",
+					"u-search": "view"
+				}
 			}
 		},
 		{
 			"path" : "pages/goods-manager/addGoods/addGoods",
 			"style" : 
 			{
-				"navigationBarTitleText" : ""
+				"enablePullDownRefresh" : true,
+				"navigationBarTitleText" : "鏂板鍟嗗搧",
+				"componentPlaceholder": {
+					"u-icon": "view",
+					"u-button": "view",
+					"u-form": "view",
+					"u-form-item": "view",
+					"u-input": "view",
+					"u-popup": "view",
+					"u-search": "view"
+				}
 			}
 		}
 
diff --git a/pages/goods-manager/addGoods/addGoods.vue b/pages/goods-manager/addGoods/addGoods.vue
index 0a13802..bcc7e93 100644
--- a/pages/goods-manager/addGoods/addGoods.vue
+++ b/pages/goods-manager/addGoods/addGoods.vue
@@ -4,9 +4,9 @@
 			<u-form :border-bottom="false" :model="form" ref="uForm" :error-type="['toast']" :rule="rules">
 
 				<u-form-item label="鍟嗗搧鍒嗙被" label-width="130" prop="">
-					<div @click="showPicker">
-						{{ form.___path || '璇烽�夋嫨鎵�鍦ㄥ湴鍖�' }}
-					</div>
+					<picker @change="bindCategoryChange" :value="index" :range="categoryArray">
+						<view class="uni-input">{{categoryArray[index]}}</view>
+					</picker>
 				</u-form-item>
 
 				<u-form-item class="border" label="鍟嗗搧鍚嶇О" label-width="130" prop="name">
@@ -24,13 +24,13 @@
 				</u-form-item>
 
 				<u-form-item label="鍟嗗搧鍝佺墝" label-width="130" prop="">
-					<div @click="showPicker">
-						{{ form.___path || '璇烽�夋嫨鎵�鍦ㄥ湴鍖�' }}
+					<div @click="showBrands">
+						{{ form.___path || '璇烽�夋嫨鍝佺墝' }}
 					</div>
 				</u-form-item>
 
 				<u-form-item label="璁¢噺鍗曚綅" label-width="130" prop="___path">
-					<div @click="showPicker">
+					<div @click="showUnit">
 						{{ form.___path || '璇烽�夋嫨鎵�鍦ㄥ湴鍖�' }}
 					</div>
 				</u-form-item>
@@ -64,16 +64,19 @@
 import UCheckboxGroup from '@/uview-components/uview-ui/components/u-checkbox-group/u-checkbox-group.vue';
 import UCheckbox from '@/uview-components/uview-ui/components/u-checkbox/u-checkbox.vue';
 import UIcon from '@/uview-components/uview-ui/components/u-icon/u-icon.vue';
-import UActionSheet from '@/uview-components/uview-ui/components/u-action-sheet/u-action-sheet.vue';
 
 
 import storage from "@/utils/storage.js";
+import * as API_GOODS from "@/api/goods.js";
 export default {
-	components: { UForm, UFormItem, UInput, UUpload, UCheckboxGroup, UCheckbox, UIcon, UActionSheet },
+	components: { UForm, UFormItem, UInput, UUpload, UCheckboxGroup, UCheckbox, UIcon },
 	data() {
 		return {
 			storage,
-			form: {}
+			form: {},
+			categoryArray:[],
+			brandsArray:[],
+			unitArray:[]
 		}
 	},
 	methods: {
@@ -86,17 +89,44 @@
 			});
 			this.form.images = images;
 		},
+		bindCategoryChange(){},
+		bindBrandsChange(){},
+		bindUnitChange(){},
+		initCategory(){
+			API_GOODS.getStoreGoodsCategory().then((res) => {
+				const params = res.data.result;
+				this.categoryArray = params
+				if(params.length>0){
+					this.initBrands(params[0].id)
+				}
+			});
+		},
+		initBrands(categoryId){
+			API_GOODS.getStoreGoodsBrands(categoryId).then((res) => {
+				const params = res.data.result;
+				this.brandsArray = params
+			});
+		},
+		initGoods(){
+			API_GOODS.getgoodsUnit().then((res) => {
+				const params = res.data.result;
+				this.unitArray = params
+			});
+		},
 	},
-
+	onShow() {
+		this.initGoods()
+		this.initCategory()
+		
+	},
 	onLoad(option) {
 		uni.showLoading({
 			title: "鍔犺浇涓�",
 		});
 		this.routerVal = option;
-		console.log(option);
 
 		if (option.id) {
-			getGoodsDetail(option.id).then((res) => {
+			API_GOODS.getStoreGoodsInfo(option.id).then((res) => {
 				const params = res.data.result;
 				params.___path = params.consigneegoodsPath;
 				this.$set(this, "form", params);
diff --git a/pages/goods-manager/goodsList/goodsList.vue b/pages/goods-manager/goodsList/goodsList.vue
index ec15364..69a0d94 100644
--- a/pages/goods-manager/goodsList/goodsList.vue
+++ b/pages/goods-manager/goodsList/goodsList.vue
@@ -58,6 +58,9 @@
 <script>
 
 import UIcon from '@/uview-components/uview-ui/components/u-icon/u-icon.vue';
+
+import * as API_GOODS from "@/api/goods.js";
+
 export default {
 	components: { UIcon },
 	data() {
@@ -65,6 +68,10 @@
 			formData: {
 				waterfall: false, // 甯冨眬鏂瑰悜鍒囨崲
 				status: 'loading', // 鍔犺浇鐘舵��
+			},
+			params: {
+				pageNumber: 1,
+				pageSize: 10,
 			},
 			data: [
 				{
@@ -94,16 +101,27 @@
 			tipShow: false // 鏄惁鏄剧ず椤堕儴鎻愮ず妗�
 		};
 	},
-	onLoad() { },
+	onLoad() {
+	},
+	onShow() {
+		if (this.$options.filters.tipsToLogin()) {
+			this.getGoodsList();
+		}
+	},
 	methods: {
-		load(data, ended) {
-			if (ended) {
-				this.formData.status = 'noMore'
-			}
+
+		getGoodsList() {
+			uni.showLoading();
+			API_GOODS.getStoreGoods(
+				this.params.pageNumber,
+				this.params.pageSize
+			).then((res) => {
+				this.data = res.data.result.records;
+
+				if (this.$store.state.isShowToast) { uni.hideLoading() };
+			});
 		},
 		addGoods(id) {
-			console.log("addGoods:" + id);
-
 			uni.navigateTo({
 				url: `/pages/goods-manager/addGoods/addGoods${id ? "?id=" + id : ""}`,
 			});

--
Gitblit v1.8.0