xuxueyang
2024-08-07 0ad6688a4241c20311a173bd9a11944721eefbf5
sub_pages/supplier/flower-manage/flower-add.vue
@@ -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">
@@ -116,7 +126,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 +145,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 +158,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;">
            &nbsp;
@@ -186,8 +197,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 +213,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'
@@ -228,6 +239,7 @@
               price: '',
               stock: '',
               params: [], //id,value
               description: '',
            },
            requireFields: [{
               name: '商品分类',
@@ -325,11 +337,20 @@
      },
      methods: {
         updateValue(item, value) {
            item.value = value
            this.$set(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()
            console.log('updateValue')
         },
         async updateSearch(search) {
            this.columns_categorys_search = search || ''
@@ -373,7 +394,7 @@
               }
            }
         },
         mapCategoryTree(node, arr) {
         mapCategoryTree(node, arr, parentCheckTrue = false) {
            var has = true
            if (arr) {
               var hasTrue = false
@@ -384,6 +405,9 @@
                  has = true
                  if (this.columns_categorys_search) {
                     has = false
                  }
                  if (parentCheckTrue) {
                     has = true
                  }
                  var tmp = {
                     ...item,
@@ -407,18 +431,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 {
@@ -479,6 +505,14 @@
               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)
               }
            }
@@ -506,7 +540,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.category) {
               //    await this.refresh_category()
               // }
@@ -521,18 +565,28 @@
               return
            }
            var tmp = parseFloat(this.dto.price)
            if (isNaN(tmp) || ('' + tmp.toFixed(2)) !== ('' + 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 = 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
            }
@@ -541,13 +595,14 @@
                  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) {
                  if (item.value.length < 1) {
                     this.$message.showToast('存在商品参数详情未设置')
                     return
                  }
@@ -570,10 +625,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'}`, {
@@ -602,7 +658,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'],
@@ -680,7 +736,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(',')
@@ -689,7 +745,7 @@
         }
      },
      components: {
         dying318picker,
         // dying318picker,
         treeFilter
      }
   }
@@ -711,8 +767,9 @@
      // height: 100px;
      .label {
         width: 300rpx;
         width: 240rpx;
         line-height: 60px;
         min-width: 240rpx;
      }