From 63e00179d4a67f5b3030baa1280846abaa979432 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期一, 12 八月 2024 15:25:58 +0800
Subject: [PATCH] update 更新供应商统计和商家首页的分类样式、供应商的分类等级过滤

---
 sub_pages/supplier/flower-manage/flower-add.vue |  124 +++++++++++----
 sub_pages/customer/shop/shop-trade.vue          |  331 +++++++++++++++++++++++++++++++++++++++++
 manifest.json                                   |    2 
 pages/home/supplier-home.vue                    |    6 
 sub_pages/customer/shop/shop.vue                |    2 
 pages/home/components/home-category.vue         |   10 +
 6 files changed, 436 insertions(+), 39 deletions(-)

diff --git a/manifest.json b/manifest.json
index 782394c..2848179 100644
--- a/manifest.json
+++ b/manifest.json
@@ -49,7 +49,7 @@
     "quickapp" : {},
     /* 快应用特有相关 */
     "mp-weixin" : {
-        "appid" : "wx6d0ecc4e18710458",
+        "appid" : "wx1441324401626290",
         "setting" : {
             "urlCheck" : false,
             "es6" : true,
diff --git a/pages/home/components/home-category.vue b/pages/home/components/home-category.vue
index a162895..8ddb38c 100644
--- a/pages/home/components/home-category.vue
+++ b/pages/home/components/home-category.vue
@@ -1,8 +1,8 @@
 <template>
 	<view class="home-category">
 		<view class="flex">
-			<view class="t1">{{today}}(今日)第一场交易中</view>
-			<view class="t2">当前在售</view>
+			<view class="t1">{{today}}(今日)交易中</view>
+			<view class="t2">当前在{{tj||0}}售</view>
 			<!-- 加了/api/customer/flower/up/stock -->
 		</view>
 		<view class="m-t-12 flex">
@@ -30,6 +30,11 @@
 					})
 				}
 			})
+			this.$http.request('get', '/api/customer/flower/up/stock', {}).then(res => {
+				var data = res.data
+				this.tj = data || 0
+			})
+
 		},
 		methods: {
 			toList(item) {
@@ -45,6 +50,7 @@
 			return {
 				list: [],
 				today: '',
+				tj: 0
 
 			};
 		}
diff --git a/pages/home/supplier-home.vue b/pages/home/supplier-home.vue
index 3faafc4..97c9d4b 100644
--- a/pages/home/supplier-home.vue
+++ b/pages/home/supplier-home.vue
@@ -53,7 +53,7 @@
 			<view class="flex tj-container" v-if="selftype==='supplier'">
 				<view class="tj-each">
 					<view class="num">
-						{{tj.dealCountLastMonth||0}}单
+						{{tj.dealCountLastMonth||0}}扎
 					</view>
 					<view class="name">
 						上月成交
@@ -61,7 +61,7 @@
 				</view>
 				<view class="tj-each">
 					<view class="num">
-						{{tj.dealCountToday||0}}单
+						{{tj.dealCountToday||0}}扎
 					</view>
 					<view class="name">
 						今日成交
@@ -69,7 +69,7 @@
 				</view>
 				<view class="tj-each">
 					<view class="num">
-						{{tj.dealCountDay30||0}}单
+						{{tj.dealCountDay30||0}}扎
 					</view>
 					<view class="name">
 						近30天成交
diff --git a/sub_pages/customer/shop/shop-trade.vue b/sub_pages/customer/shop/shop-trade.vue
new file mode 100644
index 0000000..dbd7a58
--- /dev/null
+++ b/sub_pages/customer/shop/shop-trade.vue
@@ -0,0 +1,331 @@
+<template>
+	<view class="container-trade">
+		<view class="canteen-items">
+			<view v-if="(!list||list.length==0)&&true" style="width: 100%;min-height: 200rpx;">
+				&nbsp;
+			</view>
+			<no-data v-if="(!list||list.length==0)&&true" style="width: 100%;margin-top: 220rpx;"></no-data>
+			<view class="" style="display: flex;flex-wrap: inherit;" v-else>
+				<view class="type-list">
+					<view v-for="(item,index) of list" @click="changeType(item)"
+						:class="[query.categoryId===item.id?'current':'']" :key="index" class="p10 flex type-item">
+						{{item.name || '-'}}
+					</view>
+				</view>
+				<view class="canteen-item-container">
+
+					<view v-for="(item,index) of listFilter" :key="item.id" class="canteen-item list flex"
+						@click.stop="toDetailList(item)">
+						<view class="m-r-10">
+							<image :src="item.imageUrl" :class="[!item.stock?'':'']" mode="scaleToFill" class="cover"
+								:lazy-load="true">
+							</image>
+						</view>
+						<view class="cateen_infos list">
+							<view class="title">{{item.name}}</view>
+							<view class="price">¥{{item.priceLow || 0}}-{{item.priceHigh||0}}</view>
+							<view class="desc">在售 {{item.stock||'0'}} 扎</view>
+						</view>
+
+					</view>
+
+
+				</view>
+			</view>
+
+		</view>
+
+
+
+
+
+		<uni-popup ref="popup_param" type="bottom">
+			<view class="component-popup_input_all" v-if="currentCategory&&currentCategory.params">
+				<view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view>
+				<!-- 输入框-->
+				<view v-for="(item,i) in currentCategory.params" :key="i" class="m-t-20">
+					<view class="title topic-font" style="font-size: 40rpx;font-weight: 600;">{{item.name}}</view>
+					<view class="m-t-12 flex value-items">
+						<view class="value-item" @click="updateValue(item,each)" :class="[item.value===each?'cur':'']"
+							v-for="(each, j) in item.values" :key="j">
+							{{each || '-'}}
+						</view>
+					</view>
+				</view>
+				<view class="button-space"></view>
+				<view>
+					<view class="button-green button-white" @click="closeParamPop">关闭</view>
+					<view class="button-green" @click="updateParamsAndSearch">查询</view>
+				</view>
+			</view>
+		</uni-popup>
+	</view>
+</template>
+
+<script>
+	import {
+		mapState
+	} from 'vuex'
+	export default {
+		props: {
+			catgoryTree: [],
+			supplierId: '',
+		},
+		data() {
+			return {
+				list: [],
+				showpop: false,
+				query: {
+					name: '',
+					categoryId: '',
+				},
+				currentCategory: {},
+				type: 'category', //supplier
+
+
+			}
+		},
+
+
+		methods: {
+			changeSearchType() {
+				if (this.type == 'category') {
+					this.type = 'supplier'
+					this.query.name = ''
+				} else {
+					this.type = 'category'
+					this.query.name = ''
+				}
+			},
+			refInit(catgoryTree) {
+				this.list = catgoryTree || []
+				if (this.list.length > 0) {
+					this.query.categoryId = this.list[0].id || ''
+					this.currentCategory = this.list[0] || {}
+				}
+			},
+			async updateParamsAndSearch() {
+				//todo 设置参数并查询
+				await this.refreshList()
+				this.$refs.popup_param.close()
+			},
+			openParamPop() {
+				//todo 同时设置查询参数为空吧
+				this.$refs.popup_param.open()
+			},
+			closeParamPop() {
+				this.$refs.popup_param.close()
+			},
+			buttonSearchFlow() {
+
+				if (this.type == 'category') {
+					//根据分类名称查询
+					this.$message.showLoading()
+					this.$http.request('get', '/api/customer/flower/category/tree', {
+						params: {
+							name: this.query.name || ''
+						}
+					}).then(res => {
+						var data = res.data
+						this.list = data || []
+						if (this.list.length > 0) {
+							this.query.categoryId = this.list[0].id || ''
+							this.currentCategory = this.list[0] || {}
+						} else {
+							this.query.categoryId = ''
+							this.currentCategory = {}
+						}
+					}).finally(() => {
+						this.$message.hideLoading()
+					})
+				} else {
+					uni.navigateTo({
+						url: '/sub_pages/customer/trade/list?' + 'supplierName=' + this.query.name
+					})
+
+				}
+			},
+			toDetailList(item) {
+				//去商品列表页面
+				console.log('toDetailList', this.supplierId)
+				uni.navigateTo({
+					url: `/sub_pages/customer/trade/list?categoryId=${item.id}&supplierId=${this.supplierId||''}`
+				})
+			},
+			changeType(item) {
+				this.query.categoryId = item.id || ''
+				this.currentCategory = item
+			},
+
+
+			async submitGood() {
+				var values = []
+				for (var item of this.list) {
+					if (item.shopnum > 0) {
+						values.push({
+							id: item.id,
+							num: item.shopnum
+						})
+					}
+				}
+			}
+		},
+		computed: {
+			...mapState({
+				address: state => {
+					return state.defaultaddress || {}
+				},
+			}),
+			listFilter() {
+				if (this.query.categoryId) {
+					var arr = []
+					if (this.list && this.list.length > 0) {
+						for (var item of this.list) {
+							if (item.id === this.query.categoryId || item.id === this.query.categoryId) {
+								// arr.push(item)
+								return item.children || []
+							}
+						}
+					}
+					return arr
+				} else {
+					return []
+				}
+
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.container-trade {
+		background-color: #FFFFFF;
+		padding-top: 20rpx;
+
+		.search-container {
+			margin: 0rpx 30rpx 20rpx 30rpx;
+		}
+
+
+
+		.type-list {
+			max-width: 178rpx;
+			width: 178rpx;
+			min-width: 178rpx;
+			background: #EEF7F5;
+			border-radius: 8rpx;
+			min-height: calc(100vh - 500rpx);
+			max-height: calc(100vh - 500rpx);
+			overflow-y: scroll;
+			margin-right: 16rpx;
+
+			.type-item {
+				text-align: center;
+				font-weight: 400;
+				font-size: 28rpx;
+				color: #000000;
+				display: block;
+				line-height: 88rpx;
+				// padding-left: 30rpx;
+				// padding-right: 30rpx;
+			}
+
+			.type-item.current {
+				font-weight: 600;
+				font-size: 28rpx;
+				color: #04BA97;
+			}
+		}
+
+		.title-before-blue.green {
+			padding-left: 30rpx;
+			padding-bottom: 0rpx;
+		}
+
+		.title-before-blue:before {
+			color: #04BA97;
+			font-weight: 600;
+			min-width: 14rpx;
+			background: #04BA97;
+			border-radius: 8rpx;
+			display: inline-block;
+		}
+
+
+		.canteen-items {
+			// margin-left: 30rpx;
+
+			.canteen-item {
+				margin: 0 auto;
+				// width: 164rpx;
+				// width: 690rpx;
+				// max-width: 690rpx;
+				// min-height: 266rpx;
+				background: #FFFFFF;
+				margin-bottom: 10rpx;
+				// max-width: 164rpx;
+
+				.cover {
+					width: 164rpx;
+					height: 164rpx;
+					background-size: 100% 100%;
+					border-radius: 8rpx;
+					border: 2rpx solid #f8f8f8;
+				}
+
+				.title {
+					font-weight: 500;
+					font-size: 28rpx;
+					color: #000000;
+					line-height: 40rpx;
+					// min-height: 80rpx;
+					text-align: center;
+				}
+
+				.desc {
+					margin-top: 8rpx;
+					font-weight: 400;
+					font-size: 24rpx;
+					color: #6E9F66;
+					line-height: 34rpx;
+					height: 34rpx;
+					background-color: rgba(202, 229, 214, 0.57);
+					border-radius: 4rpx;
+					text-align: center;
+
+				}
+
+				.price {
+					font-weight: 400;
+					font-size: 24rpx;
+					color: #CF0000;
+					line-height: 34rpx;
+					text-align: left;
+				}
+
+
+
+
+
+			}
+
+			.canteen-item-container {
+				width: 100%;
+				min-height: 300rpx;
+				max-height: calc(100vh - 500rpx);
+				overflow-y: scroll;
+			}
+
+		}
+
+		.canteen-footer-shop {
+			position: absolute;
+			position: fixed;
+			left: 30rpx;
+			bottom: 30rpx;
+		}
+
+
+
+	}
+</style>
\ No newline at end of file
diff --git a/sub_pages/customer/shop/shop.vue b/sub_pages/customer/shop/shop.vue
index c83a059..d653f30 100644
--- a/sub_pages/customer/shop/shop.vue
+++ b/sub_pages/customer/shop/shop.vue
@@ -218,7 +218,7 @@
 </template>
 
 <script>
-	import trade from '@/sub_pages/customer/trade/trade.vue'
+	import trade from './shop-trade.vue'
 	import http from "../../../plugins/http";
 
 	export default {
diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index 312d21f..a501662 100644
--- a/sub_pages/supplier/flower-manage/flower-add.vue
+++ b/sub_pages/supplier/flower-manage/flower-add.vue
@@ -98,7 +98,11 @@
 			<view class="form-item before-line">
 				<view class="label required">商品等级</view>
 				<view class="m-l-a m-r-0 flex " :class="[!dto.level?'desc-gray':'']" @click="()=>{
-					show_select_level=true
+					if(dto.category){
+						show_select_level=true
+					}else{
+						$message.showToast('请选择分类')
+					}
 				}">
 					<view>{{dto.levelStr||dto.level || '请选择'}}</view>
 					<u-icon class="m-l-a" name="arrow-right"></u-icon>
@@ -158,7 +162,7 @@
 				</view>
 			</view>
 			<view v-if="dto.video">
-				<video :src="dto.video"  :auto-pause-if-navigate="true" style="display: block;margin: 0 auto;"></video>
+				<video :src="dto.video" :auto-pause-if-navigate="true" style="display: block;margin: 0 auto;"></video>
 			</view>
 			<view class="form-item bottom-border-no">
 				<view class="label">商品描述</view>
@@ -264,6 +268,7 @@
 				columns_categorys_dict: {},
 				columns_categorys_search: '',
 				columns_levels: [],
+				columns_levels_all: [],
 				// 	columns_params: [], //弹窗选择具体的值
 				// cancel: {
 				// 	color: '#999',
@@ -303,6 +308,7 @@
 				}
 			}).then(res => {
 				var data = res.data
+				this.columns_levels_all = data || []
 				this.columns_levels = [data || []]
 				// this.columns_levels[0].unshift({
 				// 	label: '全部',
@@ -337,17 +343,17 @@
 		},
 
 		methods: {
-			updateValue(item, value) {
-				
-				if (item.name == '优点' || item.name === '缺点') {
-					if (item.value.indexOf(value) < 0) {
-						item.value.push(value)
-					} else {
-						item.value.splice(item.value.indexOf(value), 1)
-					}
-				} else {
-					//单选
-					item.value = [value]
+			updateValue(item, value) {
+
+				if (item.name == '优点' || item.name === '缺点') {
+					if (item.value.indexOf(value) < 0) {
+						item.value.push(value)
+					} else {
+						item.value.splice(item.value.indexOf(value), 1)
+					}
+				} else {
+					//单选
+					item.value = [value]
 				}
 
 				this.$forceUpdate()
@@ -365,14 +371,42 @@
 					var currentnode = this.columns_categorys_dict['@' + e.detail.value[e.detail.value.length - 1]
 						.value]
 					let tmpe = e
+
+
 					if (this.dto.category && this.dto.category !== currentnode.id) {
 						this.$message.confirm('修改分类将清空商品参数,确定修改吗').then(async res => {
 							// console.log('currentnode',currentnode,this.columns_categorys_dict,'@'+e.detail.value[e.detail.value.length - 1].value)
 							this.dto.categoryStr = currentnode.name
 							this.dto.category = currentnode.id
+
 							this.dto.name = currentnode.name
 							this.dto.unit = currentnode.unit
 							this.dto.color = currentnode.color
+							//设置等级
+							// console.log('tmpe', currentnode)
+							if (currentnode.levelLimit) {
+
+								this.columns_levels = []
+								var tarr = []
+								var filterLevel = currentnode.levelLimit.split(",")
+								for (var t of this.columns_levels_all) {
+									if (filterLevel.indexOf(t.value) >= 0) {
+										tarr.push(t)
+									}
+								}
+								this.columns_levels = [tarr]
+								//如果不包含等级需要清除
+								if (this.dto.level) {
+									if (filterLevel.indexOf(this.dto.level) >= 0) {
+
+									} else {
+										this.dto.level = ''
+										this.dto.levelStr = ''
+									}
+								}
+							} else {
+								this.columns_levels = [this.columns_levels_all]
+							}
 							//递归获取category的其他数据,用来做map?
 							this.$message.showLoading()
 							await this.refresh_category()
@@ -382,6 +416,31 @@
 							this.$refs.picker_category.onchange(tmpe.detail.value)
 						})
 					} else {
+						//设置等级
+						// console.log('tmpe', currentnode)
+						if (currentnode.levelLimit) {
+
+							this.columns_levels = []
+							var tarr = []
+							var filterLevel = currentnode.levelLimit.split(",")
+							for (var t of this.columns_levels_all) {
+								if (filterLevel.indexOf(t.value) >= 0) {
+									tarr.push(t)
+								}
+							}
+							this.columns_levels = [tarr]
+							//如果不包含等级需要清除
+							if (this.dto.level) {
+								if (filterLevel.indexOf(this.dto.level) >= 0) {
+
+								} else {
+									this.dto.level = ''
+									this.dto.levelStr = ''
+								}
+							}
+						} else {
+							this.columns_levels = [this.columns_levels_all]
+						}
 						this.dto.categoryStr = currentnode.name
 						this.dto.category = currentnode.id
 						this.dto.name = currentnode.name
@@ -511,9 +570,10 @@
 							} else {
 								k.value = k.value.split(',') || []
 							}
-						}
+						}
 						// console.log('init params',this.dto.params)
 					}
+
 				}
 
 			},
@@ -540,17 +600,17 @@
 					// // console.log('this.dto', this.dto)
 					if (!this.dto.bannerList) {
 						this.dto.bannerList = []
-					}
-					if(this.dto.params){
-						for (var k of this.dto.params) {
-							if (!k.value) {
-								k.value = []
-							} else {
-								k.value = k.value.split(',') || []
-							}
-						}
-					}
-					
+					}
+					if (this.dto.params) {
+						for (var k of this.dto.params) {
+							if (!k.value) {
+								k.value = []
+							} else {
+								k.value = k.value.split(',') || []
+							}
+						}
+					}
+
 					// if (this.dto.category) {
 					// 	await this.refresh_category()
 					// }
@@ -595,8 +655,8 @@
 						this.$message.showToast(`${field.name}信息未填写`)
 						return
 					}
-				}
-				
+				}
+
 				if (this.dto.params.length < 1) {
 					this.$message.showToast('商品参数详情未设置')
 					return
@@ -625,11 +685,11 @@
 
 				// this.$message.showToast('1')
 				// return
-				var dto = JSON.parse(JSON.stringify(this.dto))
-				if(dto.params){
-					for(var k of dto.params){
-						k.value = k.value.join(",")
-					}
+				var dto = JSON.parse(JSON.stringify(this.dto))
+				if (dto.params) {
+					for (var k of dto.params) {
+						k.value = k.value.join(",")
+					}
 				}
 				this.$message.showLoading()
 				const re = await this.$http.request('post', `/api/supplier/flower/list/${this.id?'edit':'new'}`, {

--
Gitblit v1.9.3