From 5b926918fefd9d826eb35f5c9218743a1bcf0a16 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期五, 30 八月 2024 14:55:45 +0800
Subject: [PATCH] update

---
 sub_pages/supplier/flower-manage/flower-add.vue |  185 ++++++++++++++++++++++++++++++++++++---------
 1 files changed, 146 insertions(+), 39 deletions(-)

diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index e1cedd5..a7dca75 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>
@@ -110,15 +114,13 @@
 			<view class="form-item before-line">
 				<view class="label required">售价(元)</view>
 				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.price" placeholder="请输入数字" type="digit"
-						style="margin-top: 16px;text-align: right;"></input>
+					<input v-model="dto.price" placeholder="请输入数字" type="digit" class="text-right m-t-15"></input>
 				</view>
 			</view>
 			<view class="form-item ">
 				<view class="label required">库存</view>
 				<view class="m-l-a m-r-0 flex">
-					<input v-model="dto.stock" placeholder="请输入数字" type="number"
-						style="margin-top: 16px;text-align: right;"></input>
+					<input v-model="dto.stock" placeholder="请输入数字" type="number" class="text-right m-t-15"></input>
 				</view>
 			</view>
 
@@ -126,7 +128,8 @@
 
 			<view class="form-item ">
 				<view class="label required">商品参数详情</view>
-				<view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
+				<view class="m-l-a m-r-0 flex " style="flex-wrap: nowrap;"
+					:class="[!dto.applicationType?'desc-gray':'']" @click="()=>{
 					if(!dto.category){
 						$message.showToast('请先选择分类')
 					}else{
@@ -157,19 +160,17 @@
 				</view>
 			</view>
 			<view v-if="dto.video">
-				<video :src="dto.video" 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 ">
-				<view class="label required">商品描述</view>
+			<view class="form-item bottom-border-no">
+				<view class="label">商品描述</view>
 				<view class="m-l-a m-r-0 flex">
-					<!-- 	<u-input type="textarea" v-model="dto.description" placeholder="请输入商品描述" type="number"
-						></u-input> -->
-					<u--textarea v-model="dto.description" style="margin-top: 16px;text-align: right;"
-						placeholder="请输入商品描述"></u--textarea>
 
 				</view>
 			</view>
-
+			<view style="min-width: 500rpx;margin-left: 20rpx;margin-right: 20rpx;margin-top: 20rpx;">
+				<u--textarea v-model="dto.description" autoHeight placeholder="请输入商品描述"></u--textarea>
+			</view>
 
 
 			<view style="min-height: 200rpx;">
@@ -198,8 +199,8 @@
 				<view v-for="(item,i) in dto.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">
+						<view class="value-item" @click="updateValue(item,each)"
+							:class="[item.value.indexOf(each)>=0?'cur':'']" v-for="(each, j) in item.values" :key="j">
 							{{each || '-'}}
 						</view>
 					</view>
@@ -214,7 +215,7 @@
 
 <script>
 	import environments from '@/environments'
-	import dying318picker from '@/components/dying318-picker/Picker.vue'
+	// import dying318picker from '@/components/dying318-picker/Picker.vue'
 	import treeFilter from '@/components/tree-filter/tree-filter.vue'
 
 
@@ -265,6 +266,7 @@
 				columns_categorys_dict: {},
 				columns_categorys_search: '',
 				columns_levels: [],
+				columns_levels_all: [],
 				// 	columns_params: [], //弹窗选择具体的值
 				// cancel: {
 				// 	color: '#999',
@@ -304,6 +306,7 @@
 				}
 			}).then(res => {
 				var data = res.data
+				this.columns_levels_all = data || []
 				this.columns_levels = [data || []]
 				// this.columns_levels[0].unshift({
 				// 	label: '全部',
@@ -339,10 +342,19 @@
 
 		methods: {
 			updateValue(item, value) {
-				item.value = value
-				this.$set(item, 'value', 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()
-				console.log('updateValue')
 			},
 			async updateSearch(search) {
 				this.columns_categorys_search = search || ''
@@ -352,19 +364,58 @@
 				this.$refs.picker_category.selectedClear()
 			},
 			async PickCategory(item, e) {
-				console.log('PickCategory', item, e)
+				console.log('PickCategory', item, e, this.columns_categorys_dict)
 				if (e.detail.value) {
 					var currentnode = this.columns_categorys_dict['@' + e.detail.value[e.detail.value.length - 1]
 						.value]
+					let levelLimit = currentnode && currentnode.levelLimit || ''
+					if (!levelLimit) {
+						if (currentnode.parentId) {
+							var currentnodeParentNode = this.columns_categorys_dict['@' + currentnode.parentId]
+							if (currentnodeParentNode) {
+								levelLimit = currentnodeParentNode.levelLimit || ''
+							}
+						}
+					}
+
+
 					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 (levelLimit) {
+
+								this.columns_levels = []
+								var tarr = []
+								var filterLevel = 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()
@@ -374,6 +425,31 @@
 							this.$refs.picker_category.onchange(tmpe.detail.value)
 						})
 					} else {
+						//设置等级
+						// console.log('tmpe', currentnode)
+						if (levelLimit) {
+
+							this.columns_levels = []
+							var tarr = []
+							var filterLevel = 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
@@ -386,7 +462,7 @@
 					}
 				}
 			},
-			mapCategoryTree(node, arr) {
+			mapCategoryTree(node, arr, parentCheckTrue = false) {
 				var has = true
 				if (arr) {
 					var hasTrue = false
@@ -397,6 +473,9 @@
 						has = true
 						if (this.columns_categorys_search) {
 							has = false
+						}
+						if (parentCheckTrue) {
+							has = true
 						}
 						var tmp = {
 							...item,
@@ -420,18 +499,20 @@
 						// }
 						this.columns_categorys_dict['@' + item.id] = item
 						if (item.children && item.children.length > 0) {
+							//如果上级已经有了,下级都包含
 							tmp.children = []
-							var childrenhas = this.mapCategoryTree(tmp.children, item.children)
+							var childrenhas = this.mapCategoryTree(tmp.children, item.children, has)
 							if (childrenhas) {
 								has = true
 								hasTrue = true
 							}
+
 						} else {
 							tmp.children = undefined
 						}
 
 						if (has) {
-							console.log('has ', tmp, hasTrue, has)
+							// console.log('has ', tmp, hasTrue, has)
 							node.push(tmp)
 						} else {
 
@@ -492,7 +573,16 @@
 					if (res.code == 0) {
 						// this.columns_params = res.data || []
 						this.dto.params = res.data || []
+						for (var k of this.dto.params) {
+							if (!k.value) {
+								k.value = []
+							} else {
+								k.value = k.value.split(',') || []
+							}
+						}
+						// console.log('init params',this.dto.params)
 					}
+
 				}
 
 			},
@@ -520,6 +610,16 @@
 					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.category) {
 					// 	await this.refresh_category()
 					// }
@@ -534,24 +634,28 @@
 					return
 				}
 				var tmp = parseFloat(this.dto.price)
-				if (isNaN(tmp) || ('' + tmp) !== ('' + this.dto.price)) {
+				if (isNaN(tmp) || parseFloat('' + tmp).toFixed(3) !== parseFloat('' + this.dto.price).toFixed(3)) {
 					this.$message.showToast('商品价格格式错误,精确到分')
+					console.log('a1', ('' + tmp))
+					console.log('a1', ('' + this.dto.price))
 					return
 				}
-				if ((tmp.toFixed(2) + '' + '0') !== tmp.toFixed(3)) {
+				if ((tmp.toFixed(2) + '' + '0') !== ('' + tmp.toFixed(3))) {
 					this.$message.showToast('商品价格至多精确到分')
+					console.log('a1', (tmp.toFixed(2) + '' + '0'))
+					console.log('a1', tmp.toFixed(3))
 					// console.log('tmp.toFixed(2)',tmp.toFixed(2),tmp.toFixed(3))
 					return
 				} else {
-					this.dto.price = this.dto.price.toFixed(2)
+					this.dto.price = tmp.toFixed(2)
 				}
 				if (this.dto.price <= 0) {
 					this.$message.showToast('商品价格不能小于等于0')
 					return
 				}
-				tmp = parseFloat(this.dto.stock)
-				if (isNaN(tmp) || ('' + tmp.toFixed(0)) !== ('' + this.dto.stock) || tmp < 0) {
-					this.$message.showToast('商品库存格式错误,需要大于等于0')
+				tmp = parseInt(this.dto.stock)
+				if (isNaN(tmp) || ('' + tmp.toFixed(0)) !== ('' + this.dto.stock) || tmp <= 0) {
+					this.$message.showToast('商品库存格式错误,需要大于0')
 					return
 				}
 
@@ -561,12 +665,13 @@
 						return
 					}
 				}
+
 				if (this.dto.params.length < 1) {
 					this.$message.showToast('商品参数详情未设置')
 					return
 				} else {
 					for (var item of this.dto.params) {
-						if (!item.value) {
+						if (item.value.length < 1) {
 							this.$message.showToast('存在商品参数详情未设置')
 							return
 						}
@@ -589,10 +694,11 @@
 
 				// this.$message.showToast('1')
 				// return
-				var dto = {
-					...this.dto,
-					// applicationDate: this.$util.toDate(new Date()),
-					// applicantId: this.currentInfo.id
+				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'}`, {
@@ -621,7 +727,7 @@
 			uploadIcon(key) {
 				console.log('that dto key', key)
 				const that = this
-				if (key == 'video') {
+				if (key === 'video') {
 					uni.chooseVideo({
 						maxDuration: 30,
 						sourceType: ['camera', 'album'],
@@ -699,7 +805,7 @@
 					var strs = []
 					for (var i of this.dto.params) {
 						if (i.value) {
-							strs.push(i.value)
+							strs.push(i.value.join(","))
 						}
 					}
 					return strs.join(',')
@@ -708,7 +814,7 @@
 			}
 		},
 		components: {
-			dying318picker,
+			// dying318picker,
 			treeFilter
 		}
 	}
@@ -730,8 +836,9 @@
 		// height: 100px;
 
 		.label {
-			width: 300rpx;
+			width: 240rpx;
 			line-height: 60px;
+			min-width: 240rpx;
 
 		}
 

--
Gitblit v1.9.3