xuxueyang
2024-07-21 883ca635ebb2df1ccb9e7f6dc19a88c7ad374cb6
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;
@@ -225,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: [],
@@ -276,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) {
@@ -500,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
@@ -529,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) {
@@ -544,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()
@@ -572,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)