|  |  | 
 |  |  | <template> | 
 |  |  |    <view class="container-page"> | 
 |  |  |    <view class="container-page" style="padding: 0rpx;"> | 
 |  |  |       <view> | 
 |  |  |          <view class="form-item"> | 
 |  |  |             <view class="label required">商品分类</view> | 
 |  |  |             <view class="label required">商品分类todo</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex " :class="[!dto.category?'desc-gray':'']" @click="()=>{ | 
 |  |  |                if(!id){ | 
 |  |  |                   show_select_category=true | 
 |  |  |                } | 
 |  |  |                show_select_category=true | 
 |  |  |             }"> | 
 |  |  |                <view>{{dto.categoryStr||dto.category || '请选择'}}</view> | 
 |  |  |                <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
 |  |  | 
 |  |  |  | 
 |  |  |          </view> | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |             <view class="label required">商品名称</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <input v-model="dto.name" placeholder="请输入商品名称" style="margin-top: 16px;text-align: right;"></input> | 
 |  |  |  | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |             <view class="label required">商品单位</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <input v-model="dto.applicationTitle" placeholder="请输入店铺名称" | 
 |  |  |                   style="margin-top: 16px;text-align: right;"></input> | 
 |  |  |                <input v-model="dto.unit" placeholder="请输入商品单位" style="margin-top: 16px;text-align: right;"></input> | 
 |  |  |  | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |             <view class="label required">商品颜色</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{ | 
 |  |  |                if(!id){ | 
 |  |  |                   show_select_type=true | 
 |  |  |                } | 
 |  |  |             <!--    <view class="m-l-a m-r-0 flex " :class="[!dto.color?'desc-gray':'']" @click="()=>{ | 
 |  |  |                show_select_color=true | 
 |  |  |             }"> | 
 |  |  |                <view>{{dto.applicationTypeStr||dto.applicationType || '请选择'}}</view> | 
 |  |  |                <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
 |  |  |             </view> --> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <input v-model="dto.color" placeholder="请输入商品颜色" | 
 |  |  |                   style="margin-top: 16px;text-align: right;"></input> | 
 |  |  |             </view> | 
 |  |  |  | 
 |  |  |          </view> | 
 |  |  |          <view class="line-gray-big"></view> | 
 |  |  |  | 
 |  |  |          <view class="form-item"> | 
 |  |  |             <view class="label required">列表封面图(130*120px)</view> | 
 |  |  |             <view class="label required" style="width: 400rpx;">列表封面图(130*120px)</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <view class="component-button-upload" @click="uploadIcon('icon')" | 
 |  |  |                   :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}"> | 
 |  |  |                <view class="component-button-upload" @click="uploadIcon('cover')" | 
 |  |  |                   :style="{'background-image':dto.icon&&`url('${dto.cover}')`||''}"> | 
 |  |  |  | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |             <view class="label required">商品轮播图(300*160px)</view> | 
 |  |  |          <view class="form-item before-line bottom-border-no"> | 
 |  |  |             <view class="label required" style="width: 400rpx;">商品轮播图(300*160px)</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <view class="component-button-upload" @click="uploadIcon('icon')" | 
 |  |  |                   :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}"> | 
 |  |  |                <!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" --> | 
 |  |  |                <view class="component-button-upload" @click="uploadIcon('bannerList')"> | 
 |  |  |  | 
 |  |  |                </view> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" | 
 |  |  |             v-if="dto.bannerList&&dto.bannerList.length>0"> | 
 |  |  |             <view class="m-t-12 m-r-10 " v-for="(tBanner,index) of dto.bannerList" :key="index"> | 
 |  |  |                <image class="banner-img" :src="tBanner" @click.stop="previewImg(tBanner)"> | 
 |  |  |  | 
 |  |  |                </image> | 
 |  |  |                <view class="t-red text-center" @click.stop="deleteBanner(index)">删除</view> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="line-gray-big"></view> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |             <view class="label required">售价</view> | 
 |  |  |             <view class="label required">售价(元)</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <input v-model="dto.applicationTitle" placeholder="请输入数字" type="digit" | 
 |  |  |                <input v-model="dto.price" placeholder="请输入数字" type="digit" | 
 |  |  |                   style="margin-top: 16px;text-align: right;"></input> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |          <view class="form-item "> | 
 |  |  |             <view class="label required">库存</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <input v-model="dto.applicationTitle" placeholder="请输入数字" type="number" | 
 |  |  |                <input v-model="dto.stock" placeholder="请输入数字" type="number" | 
 |  |  |                   style="margin-top: 16px;text-align: right;"></input> | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  | 
 |  |  |          <view class="form-item "> | 
 |  |  |             <view class="label required">商品参数详情</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex " :class="[!dto.applicationType?'desc-gray':'']" @click="()=>{ | 
 |  |  |                if(!id){ | 
 |  |  |                   show_select_type=true | 
 |  |  |                if(!dto.category){ | 
 |  |  |                   $message.showToast('请先选择分类') | 
 |  |  |                }else{ | 
 |  |  |                   if(dto.params&&dto.params.length==0){ | 
 |  |  |                      $message.showToast('暂无参数可以设置') | 
 |  |  |                   }else{ | 
 |  |  |                      $refs.popup_param.open() | 
 |  |  |                   } | 
 |  |  | 						 | 
 |  |  |                } | 
 |  |  |             }"> | 
 |  |  |                <view>{{dto.applicationTypeStr||dto.applicationType || '去设置'}}</view> | 
 |  |  |                <view>{{ '去设置'}}</view> | 
 |  |  |                <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
 |  |  |             </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.applicationType?'desc-gray':'']" @click="()=>{ | 
 |  |  |                if(!id){ | 
 |  |  |                   show_select_type=true | 
 |  |  |                } | 
 |  |  |             <view class="m-l-a m-r-0 flex " :class="[!dto.level?'desc-gray':'']" @click="()=>{ | 
 |  |  |                show_select_level=true | 
 |  |  |             }"> | 
 |  |  |                <view>{{dto.applicationTypeStr||dto.applicationType || '请选择'}}</view> | 
 |  |  |                <view>{{dto.levelStr||dto.level || '请选择'}}</view> | 
 |  |  |                <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
 |  |  |             </view> | 
 |  |  |  | 
 |  |  | 
 |  |  |          <view class="form-item before-line"> | 
 |  |  |             <view class="label required">商品视频</view> | 
 |  |  |             <view class="m-l-a m-r-0 flex"> | 
 |  |  |                <view class="component-button-upload m-r-15" @click="uploadIcon('icon')" | 
 |  |  |                   :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}"> | 
 |  |  |                <!-- :style="{'background-image':dto.icon&&`url('${dto.icon}')`||''}" --> | 
 |  |  |                <view class="component-button-upload m-r-15" @click="uploadIcon('video')"> | 
 |  |  |  | 
 |  |  |                </view> | 
 |  |  |  | 
 |  |  |             </view> | 
 |  |  |          </view> | 
 |  |  |          <view v-if="dto.video"> | 
 |  |  |             <video :src="dto.video" style="display: block;margin: 0 auto;"></video> | 
 |  |  |          </view> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |          <view class="button-green-1 m-t-20 button-fixed-bottom before-line" @click="submit" v-if="!dto.id"> | 
 |  |  |          <view style="min-height: 200rpx;"> | 
 |  |  |               | 
 |  |  |          </view> | 
 |  |  |          <view class="button-green-1 m-t-20 button-fixed-bottom " @click="submit" v-if="!dto.id"> | 
 |  |  |             提交审核 | 
 |  |  |          </view> | 
 |  |  |          <view class="button-green-1 m-t-20 button-fixed-bottom before-line" @click="submit" v-if="dto.id"> | 
 |  |  | 
 |  |  |       </view> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |       <u-picker @confirm="select_category" keyName="label" @cancel="show_select_category=false" :show="show_select_category" | 
 |  |  |          :columns="columns_types"></u-picker> | 
 |  |  |       <u-picker @confirm="select_category" keyName="name" @cancel="show_select_category=false" | 
 |  |  |          :show="show_select_category" :columns="columns_categorys"></u-picker> | 
 |  |  |  | 
 |  |  |       <u-picker @confirm="select_user" keyName="label" @cancel="show_select_user=false" :show="show_select_user" | 
 |  |  |          :columns="userListCols"></u-picker> | 
 |  |  |       <u-picker @confirm="select_level" keyName="label" @cancel="show_select_level=false" :show="show_select_level" | 
 |  |  |          :columns="columns_levels"></u-picker> | 
 |  |  |  | 
 |  |  |  | 
 |  |  |       <uni-popup ref="popup_param" type="top"> | 
 |  |  |          <view class="component-popup_input" 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> | 
 |  |  |             </view> | 
 |  |  |  | 
 |  |  |             <!-- 提交按钮 --> | 
 |  |  |             <view class="button-green" @click="closeParamPop">返回</view> | 
 |  |  |          </view> | 
 |  |  |       </uni-popup> | 
 |  |  |  | 
 |  |  |    </view> | 
 |  |  | </template> | 
 |  |  | 
 |  |  |                params: [], //id,value | 
 |  |  |             }, | 
 |  |  |             show_select_category: false, | 
 |  |  |             show_select_user: false, | 
 |  |  |             show_select_level: false, | 
 |  |  |             columns_categorys: [], | 
 |  |  |             columns_levels:[], | 
 |  |  |  | 
 |  |  |             columns_levels: [], | 
 |  |  |             //    columns_params: [], //弹窗选择具体的值 | 
 |  |  |          } | 
 |  |  |       }, | 
 |  |  |       async onLoad(options) { | 
 |  |  |          if (options.id) { | 
 |  |  |             this.id = options.id | 
 |  |  |             uni.setNavigationBarTitle({ | 
 |  |  |                title: '商品详情' | 
 |  |  |             }) | 
 |  |  |             this.getDetail() | 
 |  |  |          } else { | 
 |  |  |             if (options.copyId) { | 
 |  |  | 
 |  |  |                await this.getDetail() | 
 |  |  |                this.id = '' | 
 |  |  |                delete this.dto.id | 
 |  |  |                uni.setNavigationBarTitle({ | 
 |  |  |                   title: '复制商品并新增' | 
 |  |  |                }) | 
 |  |  |             } else { | 
 |  |  |                uni.setNavigationBarTitle({ | 
 |  |  |                   title: '商品新增' | 
 |  |  |                }) | 
 |  |  |             } | 
 |  |  | 				 | 
 |  |  |  | 
 |  |  |             //tree | 
 |  |  |             this.$http.request('get', '/api/flower/category/tree', { | 
 |  |  |                params: { | 
 |  |  |                   typeCode: 'FLOWER_LEVEL' | 
 |  |  |                } | 
 |  |  |             }).then(res => { | 
 |  |  |             this.$http.request('get', '/api/flower/category/tree', {}).then(res => { | 
 |  |  |                var data = res.data | 
 |  |  |                this.columns_categorys = [data || []] | 
 |  |  |                this.columns_categorys[0].unshift({ | 
 |  |  |                   label: '全部', | 
 |  |  |                   value: '', | 
 |  |  |                   children:[] | 
 |  |  |                   children: [] | 
 |  |  |                }) | 
 |  |  |  | 
 |  |  |             }) | 
 |  |  | 				 | 
 |  |  |             this.$http.request('get', '/api/dict/value', { | 
 |  |  |  | 
 |  |  |             this.$http.request('get', '/api/code/value', { | 
 |  |  |                params: { | 
 |  |  |                   typeCode: 'FLOWER_LEVEL' | 
 |  |  |                } | 
 |  |  | 
 |  |  |       }, | 
 |  |  |  | 
 |  |  |       methods: { | 
 |  |  |  | 
 |  |  |  | 
 |  |  |          select_category(e) { | 
 |  |  |             this.show_select_category = false | 
 |  |  |             this.dto.categoryStr = e.value[0].label | 
 |  |  |             this.dto.category = e.value[0].value | 
 |  |  |          closeParamPop() { | 
 |  |  |             this.$refs.popup_param.close() | 
 |  |  |          }, | 
 |  |  |          select_user(e) { | 
 |  |  |             this.show_select_user = false | 
 |  |  |             this.dto.auditPersonStr = e.value[0].label | 
 |  |  |             this.dto.auditPersonId = e.value[0].value | 
 |  |  |  | 
 |  |  |          async select_category(e) { | 
 |  |  |             if (e.value[0].id !== this.dto.category) { | 
 |  |  |                if (this.dto.category) { | 
 |  |  |                   await this.$message.confirm('修改分类将清空商品参数,确定修改吗') | 
 |  |  |                } | 
 |  |  |                console.log('select_category', e) | 
 |  |  |                this.show_select_category = false | 
 |  |  |                this.dto.categoryStr = e.value[0].name | 
 |  |  |                this.dto.category = e.value[0].id | 
 |  |  |                this.$message.showLoading() | 
 |  |  |                await this.refresh_category() | 
 |  |  |                this.$message.hideLoading() | 
 |  |  |             } else { | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |          }, | 
 |  |  |          async refresh_category() { | 
 |  |  |             // this.columns_params = [] | 
 |  |  |             this.dto.params = [] | 
 |  |  |             //获取分类参数 | 
 |  |  |             if (this.dto.category) { | 
 |  |  |                const res = await this.$http.request('get', '/api/supplier/flower/params', { | 
 |  |  |                   params: { | 
 |  |  |                      categoryId: this.dto.category | 
 |  |  |                   } | 
 |  |  |                }) | 
 |  |  |                if (res.code == 0) { | 
 |  |  |                   // this.columns_params = res.data || [] | 
 |  |  |                   this.dto.params = res.data || [] | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |          }, | 
 |  |  |          select_level(e) { | 
 |  |  |             this.show_select_level = false | 
 |  |  |             this.dto.levelStr = e.value[0].label | 
 |  |  |             this.dto.level = e.value[0].value | 
 |  |  |          }, | 
 |  |  |  | 
 |  |  |          async getDetail() { | 
 |  |  | 
 |  |  |                //    this.dto.applicationDate = this.$util.toDate(new Date(this.dto.applicationDate)) | 
 |  |  |                // } | 
 |  |  |                // // console.log('this.dto', this.dto) | 
 |  |  |  | 
 |  |  |                if (!this.dto.bannerList) { | 
 |  |  |                   this.dto.bannerList = [] | 
 |  |  |                } | 
 |  |  |                // if (this.dto.category) { | 
 |  |  |                //    await this.refresh_category() | 
 |  |  |                // } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             this.$message.hideLoading() | 
 |  |  | 
 |  |  |                this.backpage() | 
 |  |  |             } | 
 |  |  |          }, | 
 |  |  |  | 
 |  |  |          async deleteBanner(index) { | 
 |  |  |             await this.$message.confirm('是否确认删除此图片') | 
 |  |  |             // this.dto.bannerList  =  | 
 |  |  |             this.dto.bannerList.splice(index, 1) | 
 |  |  |          }, | 
 |  |  |          uploadIcon(key) { | 
 |  |  |             console.log('that dto key', key) | 
 |  |  |             const that = this | 
 |  |  |             uni.chooseImage({ | 
 |  |  |                count: 1, // 最多可以选择的图片张数,默认9 | 
 |  |  |                sizeType: ['original', 'compressed'], //original 原图,compressed 压缩图,默认二者都有 | 
 |  |  |                sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 | 
 |  |  |                success: function({ | 
 |  |  |                   errMsg, | 
 |  |  |                   tempFiles | 
 |  |  |                }) { | 
 |  |  |                   if (errMsg === 'chooseImage:ok') { | 
 |  |  |                      // console.log(tempFiles[0]) | 
 |  |  |                      that.$message.showLoading() | 
 |  |  |                      that.$http.upload(tempFiles[0].path).then(async res => { | 
 |  |  |                         var pic = res.data && res.data.length > 0 && res.data[ | 
 |  |  |                               0] | 
 |  |  |                            .url || '' | 
 |  |  |                         that.$message.hideLoading() | 
 |  |  |                         that.dto[key] = pic || '' | 
 |  |  |                         that.$forceUpdate() | 
 |  |  |                      }).catch(res => { | 
 |  |  |                         that.$message.hideLoading() | 
 |  |  |             if (key == 'video') { | 
 |  |  |                uni.chooseVideo({ | 
 |  |  |                   sourceType: ['camera', 'album'], | 
 |  |  |                   success: function(res) { | 
 |  |  |                      if (res.tempFilePath) { | 
 |  |  |                         console.log('res.tempFilePath', res.tempFilePath) | 
 |  |  |                         that.$message.showLoading() | 
 |  |  |                         that.$http.upload(res.tempFilePath).then(async res => { | 
 |  |  |                            console.log('res1', res) | 
 |  |  |                            var pic = res.data && res.data.length > 0 && res.data[ | 
 |  |  |                                  0] | 
 |  |  |                               .url || '' | 
 |  |  |                            that.$message.hideLoading() | 
 |  |  |                            that.dto[key] = pic || '' | 
 |  |  |  | 
 |  |  |                      }) | 
 |  |  |                            that.$forceUpdate() | 
 |  |  |                            console.log('that dto', that.dto) | 
 |  |  |                         }).catch(res => { | 
 |  |  |                            that.$message.hideLoading() | 
 |  |  |                            console.error(res) | 
 |  |  |                         }) | 
 |  |  |                      } | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             }) | 
 |  |  |                }); | 
 |  |  |             } else { | 
 |  |  |  | 
 |  |  |                uni.chooseImage({ | 
 |  |  |                   count: 1, // 最多可以选择的图片张数,默认9 | 
 |  |  |                   sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有 | 
 |  |  |                   sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 | 
 |  |  |                   success: function({ | 
 |  |  |                      errMsg, | 
 |  |  |                      tempFiles | 
 |  |  |                   }) { | 
 |  |  |                      if (errMsg === 'chooseImage:ok') { | 
 |  |  |                         // console.log(tempFiles[0]) | 
 |  |  |                         that.$message.showLoading() | 
 |  |  |                         that.$http.upload(tempFiles[0].path).then(async res => { | 
 |  |  |                            console.log('res1', res) | 
 |  |  |                            var pic = res.data && res.data.length > 0 && res.data[ | 
 |  |  |                                  0] | 
 |  |  |                               .url || '' | 
 |  |  |                            that.$message.hideLoading() | 
 |  |  |                            if (key == 'bannerList') { | 
 |  |  |                               that.dto[key].push(pic) | 
 |  |  |                            } else { | 
 |  |  |                               that.dto[key] = pic || '' | 
 |  |  |                            } | 
 |  |  |  | 
 |  |  |                            that.$forceUpdate() | 
 |  |  |                         }).catch(res => { | 
 |  |  |                            that.$message.hideLoading() | 
 |  |  |                            console.error(res) | 
 |  |  |                         }) | 
 |  |  |                      } | 
 |  |  |                   } | 
 |  |  |                }) | 
 |  |  |             } | 
 |  |  |          }, | 
 |  |  |  | 
 |  |  |       }, | 
 |  |  | 
 |  |  | </script> | 
 |  |  |  | 
 |  |  | <style lang="scss" scoped> | 
 |  |  |    .banner-img { | 
 |  |  |       width: 96rpx; | 
 |  |  |       height: 96rpx; | 
 |  |  |       border-radius: 4rpx; | 
 |  |  |       border: 2rpx dashed #CECECE; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .form-item { | 
 |  |  |       // padding: 40rpx; | 
 |  |  |       border-bottom: 1px solid #F3F3F3; | 
 |  |  |       display: flex; | 
 |  |  |       padding: 20rpx; | 
 |  |  |       // height: 100px; | 
 |  |  |  | 
 |  |  |       .label { | 
 |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    .form-item.bottom-border-no { |