|  |  |  | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view class="container-page" style="padding: 0rpx;"> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <view class="form-item"> | 
|---|
|  |  |  | <view class="label required">商品分类</view> | 
|---|
|  |  |  | <!--                 <view class="m-l-a m-r-0 flex " :class="[!dto.category?'desc-gray':'']" @click="()=>{ | 
|---|
|  |  |  | // show_select_category=true | 
|---|
|  |  |  | $refs.picker_category.showPicker() | 
|---|
|  |  |  | }"> | 
|---|
|  |  |  | <view>{{dto.categoryStr||dto.category || '请选择'}}</view> | 
|---|
|  |  |  | <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | <view class="m-l-a m-r-0 flex " :class="[!dto['category']?'desc-gray':'']"> | 
|---|
|  |  |  | <!--     <uni-data-picker ref="picker_category" @change="(e)=>{PickCategory(dto,e)}" placeholder="" | 
|---|
|  |  |  | @search="updateSearch" :filter="true" :localdata="columns_categorys_picker"> | 
|---|
|  |  |  | {{dto.categoryStr||dto.category || '请选择'}} | 
|---|
|  |  |  | </uni-data-picker> --> | 
|---|
|  |  |  | <tree-filter ref="picker_category" @change="(e)=>{PickCategory(dto,e)}" placeholder="" | 
|---|
|  |  |  | @search="updateSearch" :filter="true" :localdata="columns_categorys_picker" | 
|---|
|  |  |  | selectConfirmTitle=""> | 
|---|
|  |  |  | <view class="flex"> | 
|---|
|  |  |  | <view>{{dto.categoryStr||dto.category || '请选择'}}</view> | 
|---|
|  |  |  | <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </tree-filter> | 
|---|
|  |  |  | </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.name" placeholder="请选择分类" disabled | 
|---|
|  |  |  | 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.unit" placeholder="请选择分类" disabled | 
|---|
|  |  |  | 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.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="请选择分类" disabled | 
|---|
|  |  |  | style="margin-top: 16px;text-align: right;"></input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="line-gray-big"></view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- :style="{'background-image':dto.cover&&`url('${dto.cover}')`||''}" --> | 
|---|
|  |  |  | <view class="form-item bottom-border-no"> | 
|---|
|  |  |  | <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('cover')"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" v-if="dto.cover"> | 
|---|
|  |  |  | <view class="m-t-12 m-r-10 "> | 
|---|
|  |  |  | <image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </image> | 
|---|
|  |  |  | <view class="t-red text-center" @click.stop="dto.cover=''">删除</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </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"> | 
|---|
|  |  |  | <!-- :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="m-l-a m-r-0 flex"> | 
|---|
|  |  |  | <input v-model="dto.price" placeholder="请输入数字" type="digit" | 
|---|
|  |  |  | 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"> | 
|---|
|  |  |  | <input v-model="dto.stock" placeholder="请输入数字" type="number" | 
|---|
|  |  |  | style="margin-top: 16px;text-align: right;"></input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <view class="line-gray-big"></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(!dto.category){ | 
|---|
|  |  |  | $message.showToast('请先选择分类') | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(dto.params&&dto.params.length==0){ | 
|---|
|  |  |  | $message.showToast('暂无参数可以设置') | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | $refs.popup_param.open() | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }"> | 
|---|
|  |  |  | <view>{{ paramstr || '去设置'}}</view> | 
|---|
|  |  |  | <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
|---|
|  |  |  | </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"> | 
|---|
|  |  |  | <view class="label required">商品视频</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')"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view v-if="dto.video"> | 
|---|
|  |  |  | <video :src="dto.video" style="display: block;margin: 0 auto;"></video> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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_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> | 
|---|
|  |  |  | <!--         <dying318picker :picker-list="columns_categorys" ref="picker_category" @confirm="confirmPickerCategory"> | 
|---|
|  |  |  | </dying318picker> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import environments from '@/environments' | 
|---|
|  |  |  | import dying318picker from '@/components/dying318-picker/Picker.vue' | 
|---|
|  |  |  | import treeFilter from '@/components/tree-filter/tree-filter.vue' | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | mapState | 
|---|
|  |  |  | } from 'vuex' | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | dto: { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | category: '', | 
|---|
|  |  |  | name: '', | 
|---|
|  |  |  | unit: '', | 
|---|
|  |  |  | color: '', | 
|---|
|  |  |  | cover: '', | 
|---|
|  |  |  | bannerList: [], //str[] | 
|---|
|  |  |  | video: '', | 
|---|
|  |  |  | level: '', //FLOWER_LEVEL | 
|---|
|  |  |  | price: 0.00, | 
|---|
|  |  |  | stock: 0, | 
|---|
|  |  |  | params: [], //id,value | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | show_select_category: false, | 
|---|
|  |  |  | show_select_level: false, | 
|---|
|  |  |  | columns_categorys: [], | 
|---|
|  |  |  | columns_categorys_picker: [], | 
|---|
|  |  |  | columns_categorys_dict: {}, | 
|---|
|  |  |  | columns_categorys_search: '', | 
|---|
|  |  |  | columns_levels: [], | 
|---|
|  |  |  | //     columns_params: [], //弹窗选择具体的值 | 
|---|
|  |  |  | // cancel: { | 
|---|
|  |  |  | //     color: '#999', | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | // confirm: { | 
|---|
|  |  |  | //     color: '#20613D', | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | // column: [ | 
|---|
|  |  |  | //     {flex: 1}, | 
|---|
|  |  |  | //     {flex: 1}, | 
|---|
|  |  |  | //     {flex: 3}, | 
|---|
|  |  |  | // ] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async onLoad(options) { | 
|---|
|  |  |  | //tree | 
|---|
|  |  |  | this.$http.request('get', '/api/flower/category/tree', {}).then(res => { | 
|---|
|  |  |  | var data = res.data | 
|---|
|  |  |  | this.columns_categorys = data || [] | 
|---|
|  |  |  | // console.log('columns_categorys', this.columns_categorys) | 
|---|
|  |  |  | //递归mao | 
|---|
|  |  |  | this.mapCategoryTree(this.columns_categorys_picker, this.columns_categorys) | 
|---|
|  |  |  | // console.log('columns_categorys_picker', this.columns_categorys_picker) | 
|---|
|  |  |  | // this.columns_categorys = [data || []] | 
|---|
|  |  |  | // this.columns_categorys[0].unshift({ | 
|---|
|  |  |  | //     label: '全部', | 
|---|
|  |  |  | //     value: '', | 
|---|
|  |  |  | //     children: [] | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.$http.request('get', '/api/code/value', { | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | type: 'FLOWER_LEVEL' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | var data = res.data | 
|---|
|  |  |  | this.columns_levels = [data || []] | 
|---|
|  |  |  | this.columns_levels[0].unshift({ | 
|---|
|  |  |  | label: '全部', | 
|---|
|  |  |  | value: '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if (options.id) { | 
|---|
|  |  |  | this.id = options.id | 
|---|
|  |  |  | uni.setNavigationBarTitle({ | 
|---|
|  |  |  | title: '商品详情' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (options.copyId) { | 
|---|
|  |  |  | this.id = options.copyId | 
|---|
|  |  |  | await this.getDetail() | 
|---|
|  |  |  | this.id = '' | 
|---|
|  |  |  | delete this.dto.id | 
|---|
|  |  |  | uni.setNavigationBarTitle({ | 
|---|
|  |  |  | title: '复制商品并新增' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.setNavigationBarTitle({ | 
|---|
|  |  |  | title: '商品新增' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | async updateSearch(search) { | 
|---|
|  |  |  | this.columns_categorys_search = search || '' | 
|---|
|  |  |  | this.columns_categorys_picker = [] | 
|---|
|  |  |  | this.mapCategoryTree(this.columns_categorys_picker, this.columns_categorys) | 
|---|
|  |  |  | console.log('change updateSearch', search, this.columns_categorys_picker) | 
|---|
|  |  |  | this.$refs.picker_category.selectedClear() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async PickCategory(item, e) { | 
|---|
|  |  |  | console.log('PickCategory', item, e) | 
|---|
|  |  |  | if (e.detail.value) { | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | //递归获取category的其他数据,用来做map? | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | await this.refresh_category() | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | }).catch(e1 => { | 
|---|
|  |  |  | console.log('this.$refs.picker_category', this.$refs.picker_category) | 
|---|
|  |  |  | this.$refs.picker_category.onchange(tmpe.detail.value) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | //递归获取category的其他数据,用来做map? | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | await this.refresh_category() | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | mapCategoryTree(node, arr) { | 
|---|
|  |  |  | var has = true | 
|---|
|  |  |  | if (arr) { | 
|---|
|  |  |  | var hasTrue = false | 
|---|
|  |  |  | if (!this.columns_categorys_search) { | 
|---|
|  |  |  | hasTrue = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (var item of arr) { | 
|---|
|  |  |  | has = true | 
|---|
|  |  |  | if (this.columns_categorys_search) { | 
|---|
|  |  |  | has = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var tmp = { | 
|---|
|  |  |  | ...item, | 
|---|
|  |  |  | name: item.name, | 
|---|
|  |  |  | text: item.name, | 
|---|
|  |  |  | label: item.name, | 
|---|
|  |  |  | value: item.id, | 
|---|
|  |  |  | children: undefined | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (item.name == this.columns_categorys_search) { | 
|---|
|  |  |  | has = true | 
|---|
|  |  |  | hasTrue = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.columns_categorys_dict['@' + item.id] = item | 
|---|
|  |  |  | if (item.children && item.children.length > 0) { | 
|---|
|  |  |  | tmp.children = [] | 
|---|
|  |  |  | var childrenhas = this.mapCategoryTree(tmp.children, item.children) | 
|---|
|  |  |  | if (childrenhas) { | 
|---|
|  |  |  | has = true | 
|---|
|  |  |  | hasTrue = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | tmp.children = undefined | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (has) { | 
|---|
|  |  |  | console.log('has ', tmp, hasTrue, has) | 
|---|
|  |  |  | node.push(tmp) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!has && hasTrue) { | 
|---|
|  |  |  | //说明是这个节点有的,需要判断是否需要删除 | 
|---|
|  |  |  | if (!tmp.children || tmp.children.length == 0) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | console.log('has ', tmp, hasTrue, has) | 
|---|
|  |  |  | node.push(tmp) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // if (hasTrue || has) { | 
|---|
|  |  |  | //     node.push(tmp) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // } else { | 
|---|
|  |  |  | //     console.log('not has ', tmp) | 
|---|
|  |  |  | // } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return hasTrue | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async confirmPickerCategory(picker) { | 
|---|
|  |  |  | console.log('confirmPickerCategory', picker) | 
|---|
|  |  |  | var id = picker.value | 
|---|
|  |  |  | var name = picker.label | 
|---|
|  |  |  | if (id !== this.dto.category) { | 
|---|
|  |  |  | if (this.dto.category) { | 
|---|
|  |  |  | await this.$message.confirm('修改分类将清空商品参数,确定修改吗') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.dto.categoryStr = name | 
|---|
|  |  |  | this.dto.category = id | 
|---|
|  |  |  | // name: '', | 
|---|
|  |  |  | // unit: '', | 
|---|
|  |  |  | // color: '', | 
|---|
|  |  |  | //递归获取category的其他数据,用来做map? | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | await this.refresh_category() | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | closeParamPop() { | 
|---|
|  |  |  | this.$refs.popup_param.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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.$message.showLoading() | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | code, | 
|---|
|  |  |  | data | 
|---|
|  |  |  | } = await this.$http.request('get', "/api/supplier/flower/list/view?id=" + this.id, {}) | 
|---|
|  |  |  | if (code == 0) { | 
|---|
|  |  |  | this.dto = { | 
|---|
|  |  |  | ...data, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // if (this.dto.applicationDate) { | 
|---|
|  |  |  | //     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() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async submit() { | 
|---|
|  |  |  | // if (!this.dto.applicationType) { | 
|---|
|  |  |  | //     this.$message.showToast('未选择类型') | 
|---|
|  |  |  | //     return | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // if (!this.dto.applicationTitle) { | 
|---|
|  |  |  | //     this.$message.showToast('未填写申请主题') | 
|---|
|  |  |  | //     return | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // if (!this.dto.auditPersonId) { | 
|---|
|  |  |  | //     this.$message.showToast('未选择审批人') | 
|---|
|  |  |  | //     return | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // await this.$message.confirm(`是否确定提交申请${this.auditPersonName?(",审批人为:"+this.auditPersonName):""}`) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // this.$message.showToast('1') | 
|---|
|  |  |  | // return | 
|---|
|  |  |  | var dto = { | 
|---|
|  |  |  | ...this.dto, | 
|---|
|  |  |  | // applicationDate: this.$util.toDate(new Date()), | 
|---|
|  |  |  | // applicantId: this.currentInfo.id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | const re = await this.$http.request('post', `/api/supplier/flower/list/${this.id?'edit':'new'}`, { | 
|---|
|  |  |  | data: dto | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | if (re.code == 2000 || re.code == 0) { | 
|---|
|  |  |  | this.$message.showToast('操作成功') | 
|---|
|  |  |  | //需要标记加一下 | 
|---|
|  |  |  | // this.$store.dispatch('sign_add', 'application'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | ...mapState(['currentInfo']), | 
|---|
|  |  |  | paramstr() { | 
|---|
|  |  |  | if (this.dto && this.dto.params) { | 
|---|
|  |  |  | var strs = [] | 
|---|
|  |  |  | for (var i of this.dto.params) { | 
|---|
|  |  |  | if (i.value) { | 
|---|
|  |  |  | strs.push(i.value) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return strs.join(',') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | components: { | 
|---|
|  |  |  | dying318picker, | 
|---|
|  |  |  | treeFilter | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </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 { | 
|---|
|  |  |  | width: 300rpx; | 
|---|
|  |  |  | line-height: 60px; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .flex { | 
|---|
|  |  |  | line-height: 60px; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .flex1 { | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | color: var(--selfblue) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .form-item.bottom-border-no { | 
|---|
|  |  |  | border-bottom: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .container-page { | 
|---|
|  |  |  | padding: 40rpx; | 
|---|
|  |  |  | background-color: #FFFFFF; | 
|---|
|  |  |  | // min-height: calc(100vh - 80rpx); | 
|---|
|  |  |  | min-height: 100vh; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style { | 
|---|
|  |  |  | width: fit-content; | 
|---|
|  |  |  | margin: 0 auto; | 
|---|
|  |  |  | line-height: 64rpx; | 
|---|
|  |  |  | border-radius: 8rpx; | 
|---|
|  |  |  | padding-left: 20rpx; | 
|---|
|  |  |  | padding-right: 20rpx; | 
|---|
|  |  |  | // padding-top: 5rpx; | 
|---|
|  |  |  | // padding-bottom: 5rpx; | 
|---|
|  |  |  | border: 2rpx solid var(--selfblue); | 
|---|
|  |  |  | background-color: var(--selfbluebg); | 
|---|
|  |  |  | min-width: 100rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-1 { | 
|---|
|  |  |  | border: 1px solid rgb(122, 187, 255); | 
|---|
|  |  |  | border: 1px solid #409EFF; | 
|---|
|  |  |  | color: #409EFF; | 
|---|
|  |  |  | background-color: rgb(240, 247, 255); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-2 { | 
|---|
|  |  |  | border: 1px solid rgb(255, 184, 78); | 
|---|
|  |  |  | border: 1px solid #FE9044; | 
|---|
|  |  |  | color: #FE9044; | 
|---|
|  |  |  | background-color: rgb(255, 247, 235); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-3 { | 
|---|
|  |  |  | border: 1px solid #19be6b; | 
|---|
|  |  |  | color: #19be6b; | 
|---|
|  |  |  | background-color: rgb(231, 244, 238); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-4 { | 
|---|
|  |  |  | border: 1px solid #F56c6c; | 
|---|
|  |  |  | color: #F56c6c; | 
|---|
|  |  |  | background-color: rgb(254, 243, 243); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view class="container-page" style="padding: 0rpx;"> | 
|---|
|  |  |  | <view> | 
|---|
|  |  |  | <view class="form-item"> | 
|---|
|  |  |  | <view class="label required">商品分类</view> | 
|---|
|  |  |  | <!--                 <view class="m-l-a m-r-0 flex " :class="[!dto.category?'desc-gray':'']" @click="()=>{ | 
|---|
|  |  |  | // show_select_category=true | 
|---|
|  |  |  | $refs.picker_category.showPicker() | 
|---|
|  |  |  | }"> | 
|---|
|  |  |  | <view>{{dto.categoryStr||dto.category || '请选择'}}</view> | 
|---|
|  |  |  | <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | <view class="m-l-a m-r-0 flex " :class="[!dto['category']?'desc-gray':'']"> | 
|---|
|  |  |  | <!--     <uni-data-picker ref="picker_category" @change="(e)=>{PickCategory(dto,e)}" placeholder="" | 
|---|
|  |  |  | @search="updateSearch" :filter="true" :localdata="columns_categorys_picker"> | 
|---|
|  |  |  | {{dto.categoryStr||dto.category || '请选择'}} | 
|---|
|  |  |  | </uni-data-picker> --> | 
|---|
|  |  |  | <tree-filter ref="picker_category" @change="(e)=>{PickCategory(dto,e)}" placeholder="" | 
|---|
|  |  |  | @search="updateSearch" :filter="true" :localdata="columns_categorys_picker" | 
|---|
|  |  |  | selectConfirmTitle=""> | 
|---|
|  |  |  | <view class="flex"> | 
|---|
|  |  |  | <view>{{dto.categoryStr||dto.category || '请选择'}}</view> | 
|---|
|  |  |  | <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </tree-filter> | 
|---|
|  |  |  | </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.name" placeholder="请选择分类" disabled | 
|---|
|  |  |  | 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.unit" placeholder="请选择分类" disabled | 
|---|
|  |  |  | 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.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="请选择分类" disabled | 
|---|
|  |  |  | style="margin-top: 16px;text-align: right;"></input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="line-gray-big"></view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <!-- :style="{'background-image':dto.cover&&`url('${dto.cover}')`||''}" --> | 
|---|
|  |  |  | <view class="form-item bottom-border-no"> | 
|---|
|  |  |  | <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('cover')"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="flex p20" style="padding-top: 0rpx;padding-bottom: 10rpx" v-if="dto.cover"> | 
|---|
|  |  |  | <view class="m-t-12 m-r-10 "> | 
|---|
|  |  |  | <image class="banner-img" :src="dto.cover" @click.stop="previewImg(dto.cover)"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </image> | 
|---|
|  |  |  | <view class="t-red text-center" @click.stop="dto.cover=''">删除</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </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"> | 
|---|
|  |  |  | <!-- :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="m-l-a m-r-0 flex"> | 
|---|
|  |  |  | <input v-model="dto.price" placeholder="请输入数字" type="digit" | 
|---|
|  |  |  | 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"> | 
|---|
|  |  |  | <input v-model="dto.stock" placeholder="请输入数字" type="number" | 
|---|
|  |  |  | style="margin-top: 16px;text-align: right;"></input> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <view class="line-gray-big"></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(!dto.category){ | 
|---|
|  |  |  | $message.showToast('请先选择分类') | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | if(dto.params&&dto.params.length==0){ | 
|---|
|  |  |  | $message.showToast('暂无参数可以设置') | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | $refs.popup_param.open() | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }"> | 
|---|
|  |  |  | <view>{{ paramstr || '去设置'}}</view> | 
|---|
|  |  |  | <u-icon class="m-l-a" name="arrow-right"></u-icon> | 
|---|
|  |  |  | </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"> | 
|---|
|  |  |  | <view class="label required">商品视频</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')"> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view v-if="dto.video"> | 
|---|
|  |  |  | <video :src="dto.video" style="display: block;margin: 0 auto;"></video> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <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_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> | 
|---|
|  |  |  | <!--         <dying318picker :picker-list="columns_categorys" ref="picker_category" @confirm="confirmPickerCategory"> | 
|---|
|  |  |  | </dying318picker> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | <script> | 
|---|
|  |  |  | import environments from '@/environments' | 
|---|
|  |  |  | import dying318picker from '@/components/dying318-picker/Picker.vue' | 
|---|
|  |  |  | import treeFilter from '@/components/tree-filter/tree-filter.vue' | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | mapState | 
|---|
|  |  |  | } from 'vuex' | 
|---|
|  |  |  |  | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | dto: { | 
|---|
|  |  |  | id: '', | 
|---|
|  |  |  | category: '', | 
|---|
|  |  |  | name: '', | 
|---|
|  |  |  | unit: '', | 
|---|
|  |  |  | color: '', | 
|---|
|  |  |  | cover: '', | 
|---|
|  |  |  | bannerList: [], //str[] | 
|---|
|  |  |  | video: '', | 
|---|
|  |  |  | level: '', //FLOWER_LEVEL | 
|---|
|  |  |  | price: 0.00, | 
|---|
|  |  |  | stock: 0, | 
|---|
|  |  |  | params: [], //id,value | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | show_select_category: false, | 
|---|
|  |  |  | show_select_level: false, | 
|---|
|  |  |  | columns_categorys: [], | 
|---|
|  |  |  | columns_categorys_picker: [], | 
|---|
|  |  |  | columns_categorys_dict: {}, | 
|---|
|  |  |  | columns_categorys_search: '', | 
|---|
|  |  |  | columns_levels: [], | 
|---|
|  |  |  | //     columns_params: [], //弹窗选择具体的值 | 
|---|
|  |  |  | // cancel: { | 
|---|
|  |  |  | //     color: '#999', | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | // confirm: { | 
|---|
|  |  |  | //     color: '#20613D', | 
|---|
|  |  |  | // }, | 
|---|
|  |  |  | // column: [ | 
|---|
|  |  |  | //     {flex: 1}, | 
|---|
|  |  |  | //     {flex: 1}, | 
|---|
|  |  |  | //     {flex: 3}, | 
|---|
|  |  |  | // ] | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | async onLoad(options) { | 
|---|
|  |  |  | //tree | 
|---|
|  |  |  | this.$http.request('get', '/api/flower/category/tree', {}).then(res => { | 
|---|
|  |  |  | var data = res.data | 
|---|
|  |  |  | this.columns_categorys = data || [] | 
|---|
|  |  |  | // console.log('columns_categorys', this.columns_categorys) | 
|---|
|  |  |  | //递归mao | 
|---|
|  |  |  | this.mapCategoryTree(this.columns_categorys_picker, this.columns_categorys) | 
|---|
|  |  |  | // console.log('columns_categorys_picker', this.columns_categorys_picker) | 
|---|
|  |  |  | // this.columns_categorys = [data || []] | 
|---|
|  |  |  | // this.columns_categorys[0].unshift({ | 
|---|
|  |  |  | //     label: '全部', | 
|---|
|  |  |  | //     value: '', | 
|---|
|  |  |  | //     children: [] | 
|---|
|  |  |  | // }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.$http.request('get', '/api/code/value', { | 
|---|
|  |  |  | params: { | 
|---|
|  |  |  | type: 'FLOWER_LEVEL' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | var data = res.data | 
|---|
|  |  |  | this.columns_levels = [data || []] | 
|---|
|  |  |  | this.columns_levels[0].unshift({ | 
|---|
|  |  |  | label: '全部', | 
|---|
|  |  |  | value: '' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if (options.id) { | 
|---|
|  |  |  | this.id = options.id | 
|---|
|  |  |  | uni.setNavigationBarTitle({ | 
|---|
|  |  |  | title: '商品详情' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.getDetail() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | if (options.copyId) { | 
|---|
|  |  |  | this.id = options.copyId | 
|---|
|  |  |  | await this.getDetail() | 
|---|
|  |  |  | this.id = '' | 
|---|
|  |  |  | delete this.dto.id | 
|---|
|  |  |  | uni.setNavigationBarTitle({ | 
|---|
|  |  |  | title: '复制商品并新增' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.setNavigationBarTitle({ | 
|---|
|  |  |  | title: '商品新增' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | async updateSearch(search) { | 
|---|
|  |  |  | this.columns_categorys_search = search || '' | 
|---|
|  |  |  | this.columns_categorys_picker = [] | 
|---|
|  |  |  | this.mapCategoryTree(this.columns_categorys_picker, this.columns_categorys) | 
|---|
|  |  |  | console.log('change updateSearch', search, this.columns_categorys_picker) | 
|---|
|  |  |  | this.$refs.picker_category.selectedClear() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async PickCategory(item, e) { | 
|---|
|  |  |  | console.log('PickCategory', item, e) | 
|---|
|  |  |  | if (e.detail.value) { | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | //递归获取category的其他数据,用来做map? | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | await this.refresh_category() | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | }).catch(e1 => { | 
|---|
|  |  |  | console.log('this.$refs.picker_category', this.$refs.picker_category) | 
|---|
|  |  |  | this.$refs.picker_category.onchange(tmpe.detail.value) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | //递归获取category的其他数据,用来做map? | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | await this.refresh_category() | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | mapCategoryTree(node, arr) { | 
|---|
|  |  |  | var has = true | 
|---|
|  |  |  | if (arr) { | 
|---|
|  |  |  | var hasTrue = false | 
|---|
|  |  |  | if (!this.columns_categorys_search) { | 
|---|
|  |  |  | hasTrue = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for (var item of arr) { | 
|---|
|  |  |  | has = true | 
|---|
|  |  |  | if (this.columns_categorys_search) { | 
|---|
|  |  |  | has = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | var tmp = { | 
|---|
|  |  |  | ...item, | 
|---|
|  |  |  | name: item.name, | 
|---|
|  |  |  | text: item.name, | 
|---|
|  |  |  | label: item.name, | 
|---|
|  |  |  | value: item.id, | 
|---|
|  |  |  | children: undefined | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.columns_categorys_search) { | 
|---|
|  |  |  | if (this.columns_categorys_search.indexOf(item.name) >= 0 || | 
|---|
|  |  |  | item.name.indexOf(this.columns_categorys_search) >= 0 | 
|---|
|  |  |  | ) { | 
|---|
|  |  |  | has = true | 
|---|
|  |  |  | hasTrue = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // if (item.name == this.columns_categorys_search) { | 
|---|
|  |  |  | //     has = true | 
|---|
|  |  |  | //     hasTrue = true | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | this.columns_categorys_dict['@' + item.id] = item | 
|---|
|  |  |  | if (item.children && item.children.length > 0) { | 
|---|
|  |  |  | tmp.children = [] | 
|---|
|  |  |  | var childrenhas = this.mapCategoryTree(tmp.children, item.children) | 
|---|
|  |  |  | if (childrenhas) { | 
|---|
|  |  |  | has = true | 
|---|
|  |  |  | hasTrue = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | tmp.children = undefined | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (has) { | 
|---|
|  |  |  | console.log('has ', tmp, hasTrue, has) | 
|---|
|  |  |  | node.push(tmp) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (!has && hasTrue) { | 
|---|
|  |  |  | //说明是这个节点有的,需要判断是否需要删除 | 
|---|
|  |  |  | if (!tmp.children || tmp.children.length == 0) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | console.log('has ', tmp, hasTrue, has) | 
|---|
|  |  |  | node.push(tmp) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // if (hasTrue || has) { | 
|---|
|  |  |  | //     node.push(tmp) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // } else { | 
|---|
|  |  |  | //     console.log('not has ', tmp) | 
|---|
|  |  |  | // } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return hasTrue | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async confirmPickerCategory(picker) { | 
|---|
|  |  |  | console.log('confirmPickerCategory', picker) | 
|---|
|  |  |  | var id = picker.value | 
|---|
|  |  |  | var name = picker.label | 
|---|
|  |  |  | if (id !== this.dto.category) { | 
|---|
|  |  |  | if (this.dto.category) { | 
|---|
|  |  |  | await this.$message.confirm('修改分类将清空商品参数,确定修改吗') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.dto.categoryStr = name | 
|---|
|  |  |  | this.dto.category = id | 
|---|
|  |  |  | // name: '', | 
|---|
|  |  |  | // unit: '', | 
|---|
|  |  |  | // color: '', | 
|---|
|  |  |  | //递归获取category的其他数据,用来做map? | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | await this.refresh_category() | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | closeParamPop() { | 
|---|
|  |  |  | this.$refs.popup_param.close() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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.$message.showLoading() | 
|---|
|  |  |  | const { | 
|---|
|  |  |  | code, | 
|---|
|  |  |  | data | 
|---|
|  |  |  | } = await this.$http.request('get', "/api/supplier/flower/list/view?id=" + this.id, {}) | 
|---|
|  |  |  | if (code == 0) { | 
|---|
|  |  |  | this.dto = { | 
|---|
|  |  |  | ...data, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // if (this.dto.applicationDate) { | 
|---|
|  |  |  | //     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() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async submit() { | 
|---|
|  |  |  | // if (!this.dto.applicationType) { | 
|---|
|  |  |  | //     this.$message.showToast('未选择类型') | 
|---|
|  |  |  | //     return | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // if (!this.dto.applicationTitle) { | 
|---|
|  |  |  | //     this.$message.showToast('未填写申请主题') | 
|---|
|  |  |  | //     return | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // if (!this.dto.auditPersonId) { | 
|---|
|  |  |  | //     this.$message.showToast('未选择审批人') | 
|---|
|  |  |  | //     return | 
|---|
|  |  |  | // } | 
|---|
|  |  |  | // await this.$message.confirm(`是否确定提交申请${this.auditPersonName?(",审批人为:"+this.auditPersonName):""}`) | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // this.$message.showToast('1') | 
|---|
|  |  |  | // return | 
|---|
|  |  |  | var dto = { | 
|---|
|  |  |  | ...this.dto, | 
|---|
|  |  |  | // applicationDate: this.$util.toDate(new Date()), | 
|---|
|  |  |  | // applicantId: this.currentInfo.id | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.$message.showLoading() | 
|---|
|  |  |  | const re = await this.$http.request('post', `/api/supplier/flower/list/${this.id?'edit':'new'}`, { | 
|---|
|  |  |  | data: dto | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.$message.hideLoading() | 
|---|
|  |  |  | if (re.code == 2000 || re.code == 0) { | 
|---|
|  |  |  | this.$message.showToast('操作成功') | 
|---|
|  |  |  | //需要标记加一下 | 
|---|
|  |  |  | // this.$store.dispatch('sign_add', 'application'); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 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 | 
|---|
|  |  |  | 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) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | ...mapState(['currentInfo']), | 
|---|
|  |  |  | paramstr() { | 
|---|
|  |  |  | if (this.dto && this.dto.params) { | 
|---|
|  |  |  | var strs = [] | 
|---|
|  |  |  | for (var i of this.dto.params) { | 
|---|
|  |  |  | if (i.value) { | 
|---|
|  |  |  | strs.push(i.value) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return strs.join(',') | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return '' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | components: { | 
|---|
|  |  |  | dying318picker, | 
|---|
|  |  |  | treeFilter | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </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 { | 
|---|
|  |  |  | width: 300rpx; | 
|---|
|  |  |  | line-height: 60px; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .flex { | 
|---|
|  |  |  | line-height: 60px; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .flex1 { | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | color: var(--selfblue) | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .form-item.bottom-border-no { | 
|---|
|  |  |  | border-bottom: none; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .container-page { | 
|---|
|  |  |  | padding: 40rpx; | 
|---|
|  |  |  | background-color: #FFFFFF; | 
|---|
|  |  |  | // min-height: calc(100vh - 80rpx); | 
|---|
|  |  |  | min-height: 100vh; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style { | 
|---|
|  |  |  | width: fit-content; | 
|---|
|  |  |  | margin: 0 auto; | 
|---|
|  |  |  | line-height: 64rpx; | 
|---|
|  |  |  | border-radius: 8rpx; | 
|---|
|  |  |  | padding-left: 20rpx; | 
|---|
|  |  |  | padding-right: 20rpx; | 
|---|
|  |  |  | // padding-top: 5rpx; | 
|---|
|  |  |  | // padding-bottom: 5rpx; | 
|---|
|  |  |  | border: 2rpx solid var(--selfblue); | 
|---|
|  |  |  | background-color: var(--selfbluebg); | 
|---|
|  |  |  | min-width: 100rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-1 { | 
|---|
|  |  |  | border: 1px solid rgb(122, 187, 255); | 
|---|
|  |  |  | border: 1px solid #409EFF; | 
|---|
|  |  |  | color: #409EFF; | 
|---|
|  |  |  | background-color: rgb(240, 247, 255); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-2 { | 
|---|
|  |  |  | border: 1px solid rgb(255, 184, 78); | 
|---|
|  |  |  | border: 1px solid #FE9044; | 
|---|
|  |  |  | color: #FE9044; | 
|---|
|  |  |  | background-color: rgb(255, 247, 235); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-3 { | 
|---|
|  |  |  | border: 1px solid #19be6b; | 
|---|
|  |  |  | color: #19be6b; | 
|---|
|  |  |  | background-color: rgb(231, 244, 238); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .style-4 { | 
|---|
|  |  |  | border: 1px solid #F56c6c; | 
|---|
|  |  |  | color: #F56c6c; | 
|---|
|  |  |  | background-color: rgb(254, 243, 243); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </style> | 
|---|