From c9ece393fc028ffecca0915d1b9af62d51b5aef6 Mon Sep 17 00:00:00 2001
From: xuxueyang <xuxy@fengyuntec.com>
Date: 星期二, 13 八月 2024 17:21:19 +0800
Subject: [PATCH] 1
---
sub_pages/supplier/flower-manage/flower-add.vue | 225 +++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 188 insertions(+), 37 deletions(-)
diff --git a/sub_pages/supplier/flower-manage/flower-add.vue b/sub_pages/supplier/flower-manage/flower-add.vue
index 2aff894..a501662 100644
--- a/sub_pages/supplier/flower-manage/flower-add.vue
+++ b/sub_pages/supplier/flower-manage/flower-add.vue
@@ -95,6 +95,20 @@
</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="()=>{
+ 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>
+ </view>
+
+ </view>
<view class="form-item before-line">
@@ -116,7 +130,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{
@@ -134,16 +149,6 @@
</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">
@@ -157,8 +162,18 @@
</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 bottom-border-no">
+ <view class="label">商品描述</view>
+ <view class="m-l-a m-r-0 flex">
+
+ </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;">
@@ -186,8 +201,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>
@@ -202,7 +217,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'
@@ -225,19 +240,26 @@
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,
@@ -246,6 +268,7 @@
columns_categorys_dict: {},
columns_categorys_search: '',
columns_levels: [],
+ columns_levels_all: [],
// columns_params: [], //弹窗选择具体的值
// cancel: {
// color: '#999',
@@ -285,6 +308,7 @@
}
}).then(res => {
var data = res.data
+ this.columns_levels_all = data || []
this.columns_levels = [data || []]
// this.columns_levels[0].unshift({
// label: '全部',
@@ -320,10 +344,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 || ''
@@ -338,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()
@@ -355,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
@@ -367,7 +453,7 @@
}
}
},
- mapCategoryTree(node, arr) {
+ mapCategoryTree(node, arr, parentCheckTrue = false) {
var has = true
if (arr) {
var hasTrue = false
@@ -378,6 +464,9 @@
has = true
if (this.columns_categorys_search) {
has = false
+ }
+ if (parentCheckTrue) {
+ has = true
}
var tmp = {
...item,
@@ -401,18 +490,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 {
@@ -473,7 +564,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)
}
+
}
},
@@ -501,6 +601,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()
// }
@@ -510,16 +620,55 @@
},
async submit() {
+ if (!this.dto.price) {
+ this.$message.showToast('商品价格未设置')
+ return
+ }
+ var tmp = parseFloat(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))) {
+ 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 = tmp.toFixed(2)
+ }
+ if (this.dto.price <= 0) {
+ this.$message.showToast('商品价格不能小于等于0')
+ return
+ }
+ tmp = parseInt(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
}
+
+ if (this.dto.params.length < 1) {
+ this.$message.showToast('商品参数详情未设置')
+ return
+ } else {
+ for (var item of this.dto.params) {
+ if (item.value.length < 1) {
+ this.$message.showToast('存在商品参数详情未设置')
+ return
+ }
+ }
+ }
+
// if (!this.dto.applicationType) {
// this.$message.showToast('未选择类型')
// return
@@ -536,10 +685,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'}`, {
@@ -568,7 +718,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'],
@@ -646,7 +796,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(',')
@@ -655,7 +805,7 @@
}
},
components: {
- dying318picker,
+ // dying318picker,
treeFilter
}
}
@@ -677,8 +827,9 @@
// height: 100px;
.label {
- width: 300rpx;
+ width: 240rpx;
line-height: 60px;
+ min-width: 240rpx;
}
--
Gitblit v1.9.3