From 883ca635ebb2df1ccb9e7f6dc19a88c7ad374cb6 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期日, 21 七月 2024 14:47:00 +0800
Subject: [PATCH] update 部分需求变更

---
 sub_pages/supplier/flower-manage/flower-add.vue |  175 ++++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 133 insertions(+), 42 deletions(-)

diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index 64540da..e1cedd5 100644
--- a/sub_pages/supplier/flower-manage/flower-add.vue
+++ b/sub_pages/supplier/flower-manage/flower-add.vue
@@ -27,7 +27,7 @@
 				</view>
 			</view>
 			<view class="form-item before-line">
-				<view class="label required">商品名称</view>
+				<view class="label">商品名称</view>
 				<view class="m-l-a m-r-0 flex">
 					<input v-model="dto.name" placeholder="请选择分类" disabled
 						style="margin-top: 16px;text-align: right;"></input>
@@ -35,7 +35,7 @@
 				</view>
 			</view>
 			<view class="form-item before-line">
-				<view class="label required">商品单位</view>
+				<view class="label">商品单位</view>
 				<view class="m-l-a m-r-0 flex">
 					<input v-model="dto.unit" placeholder="请选择分类" disabled
 						style="margin-top: 16px;text-align: right;"></input>
@@ -44,7 +44,7 @@
 			</view>
 
 			<view class="form-item before-line">
-				<view class="label required">商品颜色</view>
+				<view class="label">商品颜色</view>
 				<!-- 	<view class="m-l-a m-r-0 flex " :class="[!dto.color?'desc-gray':'']" @click="()=>{
 					show_select_color=true
 				}">
@@ -77,7 +77,7 @@
 			</view>
 
 			<view class="form-item before-line bottom-border-no">
-				<view class="label required" style="width: 400rpx;">商品轮播图(300*160px)</view>
+				<view class="label " style="width: 400rpx;">商品轮播图(300*160px)</view>
 				<view class="m-l-a m-r-0 flex">
 					<!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" -->
 					<view class="component-button-upload" @click="uploadIcon('bannerList')">
@@ -95,6 +95,16 @@
 				</view>
 			</view>
 			<view class="line-gray-big"></view>
+			<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
+				}">
+					<view>{{dto.levelStr||dto.level || '请选择'}}</view>
+					<u-icon class="m-l-a" name="arrow-right"></u-icon>
+				</view>
+
+			</view>
 
 
 			<view class="form-item before-line">
@@ -134,20 +144,10 @@
 
 			</view>
 			<view class="line-gray-big"></view>
-			<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
-				}">
-					<view>{{dto.levelStr||dto.level || '请选择'}}</view>
-					<u-icon class="m-l-a" name="arrow-right"></u-icon>
-				</view>
-
-			</view>
 
 
 			<view class="form-item before-line">
-				<view class="label required">商品视频</view>
+				<view class="label">商品视频</view>
 				<view class="m-l-a m-r-0 flex">
 					<!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" -->
 					<view class="component-button-upload m-r-15" @click="uploadIcon('video')">
@@ -159,6 +159,18 @@
 			<view v-if="dto.video">
 				<video :src="dto.video" style="display: block;margin: 0 auto;"></video>
 			</view>
+			<view class="form-item ">
+				<view class="label required">商品描述</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-height: 200rpx;">
 				&nbsp;
@@ -179,28 +191,24 @@
 			:columns="columns_levels"></u-picker>
 
 
-		<uni-popup ref="popup_param" type="top">
-			<view class="component-popup_input" v-if="dto.params">
+		<uni-popup ref="popup_param" type="bottom">
+			<view class="component-popup_input_all" v-if="dto.params">
 				<view class="text-center m-b-40" style="font-size: 48rpx;font-weight: 600;">商品参数设置</view>
 				<!-- 输入框-->
-				<view v-for="(item,i) in dto.params" :key="i" class="m-b-20">
-					<view class="title topic-font" style="font-size: 36rpx;font-weight: 600;">{{item.name}}</view>
-					<view class="m-t-12">
-						<u-radio-group v-model="item.value" placement="row">
-							<u-radio
-								:customStyle="{'margin-bottom': '16rpx','margin-right': '24rpx','font-size':'28rpx'}"
-								v-for="(each, j) in item.values" :key="j" :label="each" :name="each">
-							</u-radio>
-						</u-radio-group>
+				<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">
+							{{each || '-'}}
+						</view>
 					</view>
 				</view>
-
-				<!-- 提交按钮 -->
-				<view class="button-green" @click="closeParamPop">返回</view>
+				<view class="button-space"></view>
+				<view class="button-green" @click="closeParamPop">确定</view>
 			</view>
 		</uni-popup>
-		<!-- 		<dying318picker :picker-list="columns_categorys" ref="picker_category" @confirm="confirmPickerCategory">
-		</dying318picker> -->
+
 	</view>
 </template>
 
@@ -229,10 +237,27 @@
 					bannerList: [], //str[]
 					video: '',
 					level: '', //FLOWER_LEVEL
-					price: 0.00,
-					stock: 0,
+					price: '',
+					stock: '',
 					params: [], //id,value
+					description: '',
 				},
+				requireFields: [{
+					name: '商品分类',
+					key: 'category'
+				}, {
+					name: '列表封面图',
+					key: 'cover'
+				}, {
+					name: '商品等级',
+					key: 'level'
+				}, {
+					name: '商品价格',
+					key: 'price'
+				}, {
+					name: '商品库存',
+					key: 'stock'
+				}],
 				show_select_category: false,
 				show_select_level: false,
 				columns_categorys: [],
@@ -280,10 +305,10 @@
 			}).then(res => {
 				var data = res.data
 				this.columns_levels = [data || []]
-				this.columns_levels[0].unshift({
-					label: '全部',
-					value: ''
-				})
+				// this.columns_levels[0].unshift({
+				// 	label: '全部',
+				// 	value: ''
+				// })
 
 			})
 			if (options.id) {
@@ -313,6 +338,12 @@
 		},
 
 		methods: {
+			updateValue(item, value) {
+				item.value = value
+				this.$set(item, 'value', value)
+				this.$forceUpdate()
+				console.log('updateValue')
+			},
 			async updateSearch(search) {
 				this.columns_categorys_search = search || ''
 				this.columns_categorys_picker = []
@@ -498,6 +529,50 @@
 
 			},
 			async submit() {
+				if (!this.dto.price) {
+					this.$message.showToast('商品价格未设置')
+					return
+				}
+				var tmp = parseFloat(this.dto.price)
+				if (isNaN(tmp) || ('' + tmp) !== ('' + this.dto.price)) {
+					this.$message.showToast('商品价格格式错误,精确到分')
+					return
+				}
+				if ((tmp.toFixed(2) + '' + '0') !== tmp.toFixed(3)) {
+					this.$message.showToast('商品价格至多精确到分')
+					// console.log('tmp.toFixed(2)',tmp.toFixed(2),tmp.toFixed(3))
+					return
+				} else {
+					this.dto.price = this.dto.price.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')
+					return
+				}
+
+				for (var field of this.requireFields) {
+					if (!this.dto[field.key]) {
+						this.$message.showToast(`${field.name}信息未填写`)
+						return
+					}
+				}
+				if (this.dto.params.length < 1) {
+					this.$message.showToast('商品参数详情未设置')
+					return
+				} else {
+					for (var item of this.dto.params) {
+						if (!item.value) {
+							this.$message.showToast('存在商品参数详情未设置')
+							return
+						}
+					}
+				}
+
 				// if (!this.dto.applicationType) {
 				// 	this.$message.showToast('未选择类型')
 				// 	return
@@ -527,9 +602,15 @@
 				if (re.code == 2000 || re.code == 0) {
 					this.$message.showToast('操作成功')
 					//需要标记加一下
-					// this.$store.dispatch('sign_add', 'application');
+					this.$store.dispatch('sign_add', 'flower');
 
 					this.backpage()
+				} else {
+					console.log('error re', re)
+					if (re.code === 30000 && Array.isArray(re.msg)) {
+						this.$message.showToast('字段未填写完整')
+
+					}
 				}
 			},
 			async deleteBanner(index) {
@@ -542,8 +623,15 @@
 				const that = this
 				if (key == 'video') {
 					uni.chooseVideo({
+						maxDuration: 30,
 						sourceType: ['camera', 'album'],
 						success: function(res) {
+							// console.log('res',res)
+							// size: 11082508
+							if (res.size > 1024 * 1024 * 50) {
+								that.$message.confirm('视频最多支持50M大小,超出大小限制')
+								return
+							}
 							if (res.tempFilePath) {
 								console.log('res.tempFilePath', res.tempFilePath)
 								that.$message.showLoading()
@@ -570,12 +658,15 @@
 						count: 1, // 最多可以选择的图片张数,默认9
 						sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有
 						sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
-						success: function({
-							errMsg,
-							tempFiles
-						}) {
+						success: function(res) {
+							let errMsg = res.errMsg
+							let tempFiles = res.tempFiles
 							if (errMsg === 'chooseImage:ok') {
 								// console.log(tempFiles[0])
+								if (tempFiles[0].size > 1024 * 1024 * 5) {
+									that.$message.confirm('图片最多支持5M大小,超出大小限制')
+									return
+								}
 								that.$message.showLoading()
 								that.$http.upload(tempFiles[0].path).then(async res => {
 									console.log('res1', res)

--
Gitblit v1.9.3