From 3922da6ba306e7e2596c18840bfac1b2a772bf1e Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期四, 18 九月 2025 16:10:03 +0800 Subject: [PATCH] 添加缓存页面 --- seller/src/views/goods/goods-seller/goodsOperationSec.vue | 958 +++++++++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 785 insertions(+), 173 deletions(-) diff --git a/seller/src/views/goods/goods-seller/goodsOperationSec.vue b/seller/src/views/goods/goods-seller/goodsOperationSec.vue index 0965954..8ed6ef2 100644 --- a/seller/src/views/goods/goods-seller/goodsOperationSec.vue +++ b/seller/src/views/goods/goods-seller/goodsOperationSec.vue @@ -23,16 +23,25 @@ <FormItem label="鍟嗗搧浠锋牸" prop="price"> <Input v-model="baseInfoForm.price" clearable placeholder="鍟嗗搧浠锋牸" style="width: 260px" type="text"/> </FormItem> + + <FormItem label="鎶芥垚姣斾緥" prop="commission"> +<!-- <Input v-model="baseInfoForm.commission" max="100" min="0" clearable placeholder="鎶芥垚姣斾緥" style="width: 260px" type="number"/>--> + <InputNumber v-model="baseInfoForm.commission" :formatter="value => `${value}%`" + :parser="value => value.replace('%', '')" :max="100" :min="0" clearable + :active-change="false" + placeholder="鎶芥垚姣斾緥" style="width: 260px" type="number"/> + </FormItem> + <FormItem label="鍟嗗搧鍗栫偣" prop="sellingPoint"> <Input v-model="baseInfoForm.sellingPoint" :rows="4" style="width: 260px" type="textarea"/> </FormItem> - <FormItem label="鍟嗗搧鍝佺墝" prop="brandId"> - <Select v-model="baseInfoForm.brandId" filterable style="width: 200px"> - <Option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id"></Option> - </Select> - <Button class="refresh-icon" icon="md-refresh" shape="circle" type="text" - @click="refresh('brand')"></Button> - </FormItem> +<!-- <FormItem label="鍟嗗搧鍝佺墝" prop="brandId">--> +<!-- <Select v-model="baseInfoForm.brandId" filterable style="width: 200px">--> +<!-- <Option v-for="item in brandList" :key="item.id" :label="item.name" :value="item.id"></Option>--> +<!-- </Select>--> +<!-- <Button class="refresh-icon" icon="md-refresh" shape="circle" type="text"--> +<!-- @click="refresh('brand')"></Button>--> +<!-- </FormItem>--> </div> <h4>鍟嗗搧浜ゆ槗淇℃伅</h4> <div class="form-item-view"> @@ -48,13 +57,33 @@ <RadioGroup v-if="baseInfoForm.goodsType != 'VIRTUAL_GOODS'" v-model="baseInfoForm.salesModel" button-style="solid" type="button" @on-change="renderTableData(skuTableData)"> <Radio label="RETAIL" title="闆跺敭鍨�">闆跺敭鍨�</Radio> - <Radio label="WHOLESALE" title="鎵瑰彂鍨�">鎵瑰彂鍨�</Radio> +<!-- <Radio label="WHOLESALE" title="鎵瑰彂鍨�">鎵瑰彂鍨�</Radio>--> + <Radio label="PRESALE" title="棰勫敭">棰勫敭</Radio> </RadioGroup> <RadioGroup v-else v-model="baseInfoForm.salesModel" button-style="solid" type="button"> <Radio label="RETAIL" title="闆跺敭鍨�"> <span>铏氭嫙鍨�</span> </Radio> </RadioGroup> + </FormItem> + <FormItem v-if="baseInfoForm.salesModel == 'PRESALE'"> + <div> + 棰勫敭鏃堕棿锛� + <DatePicker type="daterange" v-model="baseInfoForm.preSaleTime" + format="yyyy-MM-dd" placement="bottom-end" placeholder="璇烽�夋嫨棰勫敭鏃堕棿" style="width: 200px" + @on-change="choosePreTime"></DatePicker> + </div> + </FormItem> + <FormItem v-if="baseInfoForm.goodsType == 'VIRTUAL_GOODS'" class="form-item-view-el" label="鍟嗗搧绫诲瀷"> + <Select + v-model="baseInfoForm.virtualGoodsType" + clearable + style="width: 160px" + @on-clear="handleGoodsType" + @on-change="handleGoodsType" + > + <Option value="COUPON">浼樻儬鍗�</option> + </select> </FormItem> <FormItem v-if="baseInfoForm.salesModel == 'WHOLESALE'" class="form-item-view-el" label="閿�鍞鍒�" prop="wholesaleRule"> @@ -100,11 +129,12 @@ </FormItem> </div> <h4>鍟嗗搧瑙勬牸鍙婂浘鐗�</h4> + <div class="form-item-view"> - <FormItem class="form-item-view-el required" label="涓诲浘" prop="goodsGalleryFiles"> + <FormItem class="form-item-view-el required" label="涓诲浘" prop="goodsGalleryFiles" > <div style="display: flex; flex-wrap: wrap;"> - <vuedraggable :animation="200" :list="baseInfoForm.goodsGalleryFiles"> - <div v-for="(item, __index) in baseInfoForm.goodsGalleryFiles" :key="__index" + <vuedraggable :animation="200" :list="showListImages"> + <div v-for="(item, __index) in showListImages" :key="__index" class="demo-upload-list"> <template> <img :src="item"/> @@ -118,17 +148,17 @@ </div> </vuedraggable> <!--<Upload ref="upload"--> - <!--:action="uploadFileUrl" :before-upload="handleBeforeUploadGoodsPicture"--> - <!--:format="['jpg', 'jpeg', 'png', 'webp']"--> - <!--:headers="{ ...accessToken }"--> - <!--:max-size="2048" :on-error="() => { $Spin.hide(); }" :on-exceeded-size="handleMaxSize"--> - <!--:on-format-error="handleFormatError" :on-progress="() => { $Spin.show(); }"--> - <!--:on-success="handleSuccessGoodsPicture" :show-upload-list="false" multiple--> - <!--style="margin-left: 10px"--> - <!--type="drag">--> - <!--<div style="width: 148px; height: 148px; line-height: 148px">--> - <!--<Icon size="20" type="md-add"></Icon>--> - <!--</div>--> + <!--:action="uploadFileUrl" :before-upload="handleBeforeUploadGoodsPicture"--> + <!--:format="['jpg', 'jpeg', 'png', 'webp']"--> + <!--:headers="{ ...accessToken }"--> + <!--:max-size="2048" :on-error="() => { $Spin.hide(); }" :on-exceeded-size="handleMaxSize"--> + <!--:on-format-error="handleFormatError" :on-progress="() => { $Spin.show(); }"--> + <!--:on-success="handleSuccessGoodsPicture" :show-upload-list="false" multiple--> + <!--style="margin-left: 10px"--> + <!--type="drag">--> + <!--<div style="width: 148px; height: 148px; line-height: 148px">--> + <!--<Icon size="20" type="md-add"></Icon>--> + <!--</div>--> <!--</Upload>--> </div> <div style="width: 100%;display: flex;justify-content: start;margin-top: 10px;"> @@ -138,23 +168,37 @@ <img v-if="goodsPictureVisible" :src="previewGoodsPicture" style="width: 100%"/> </Modal> </FormItem> + + + <FormItem> - <div style="color: grey">涓诲浘浠呮敮鎸乸ng锛宩pg锛宩peg鏍煎紡锛屽楂樿嚦灏�600*600px锛屽ぇ灏�2M鍐咃紝鍙嫋鎷借皟鏁翠富鍥鹃『搴�</div> + +<!-- <div class="demo-upload-list" v-for="(item,index) in showListImages">--> +<!-- <template style="display: flex">--> +<!-- <img :src="item">--> +<!-- <div class="demo-upload-list-cover">--> +<!-- <Icon type="ios-eye-outline" @click.native="handleView(item)"></Icon>--> +<!-- <Icon type="ios-trash-outline" @click.native="handleRemove(index)"></Icon>--> +<!-- </div>--> +<!-- </template>--> +<!-- </div>--> + <div style="color: grey" v-if="!baseInfoForm.goodsVideo">涓诲浘浠呮敮鎸乸ng锛宩pg锛宩peg鏍煎紡锛屽楂樿嚦灏�600*600px锛屽ぇ灏�2M鍐�</div> </FormItem> - <FormItem class="form-item-view-el" label="涓诲浘瑙嗛" prop="goodsVideo"> + <FormItem class="form-item-view-el" label="瑙嗛" prop="goodsVideo" > <div class="goods-video"> <div v-if="baseInfoForm.goodsVideo"> <div> - <video :src="baseInfoForm.goodsVideo" class="video" controls style="max-width: 300px;"/> + <video :src="baseInfoForm.showGoodsVideo" class="video" controls style="max-width: 300px;max-height: 400px"/> </div> </div> - <Upload ref="upload" :action="uploadFileUrl" :format="['avi', 'wmv', 'mpeg', 'mp4', 'mov']" + <Upload ref="upload" action="-" :format="['avi', 'wmv', 'mpeg', 'mp4', 'mov']" :headers="{ ...accessToken }" :max-size="10240" :on-error="() => { loadingVideo = false }" :on-exceeded-size="handleVideoMaxSize" :on-format-error="handleFormatError" :on-progress="() => { loadingVideo = true }" :on-success="handleSuccessGoodsVideo" :show-upload-list="false" - multiple + :before-upload="upLoadVideo" + accept="video/*" style="margin-left: 10px" type="drag"> <Button :loading="loadingVideo" icon="ios-cloud-upload-outline" type="text"> <span v-if="!loadingVideo"> @@ -165,6 +209,9 @@ </span> </Button> </Upload> + <Button :loading="loadingVideo" v-if="baseInfoForm.goodsVideo" icon="delete" @click="removeVideo" type="text"> + <span>鍒犻櫎瑙嗛</span> + </Button> </div> </FormItem> <div class="layout" style="width: 100%"> @@ -176,7 +223,7 @@ <div v-for="(item, $index) in skuInfo" :key="$index" class="sku-item-content"> <Card :bordered="true" class="ivu-card-body"> <a slot="extra" style="margin-left: 6px"> - <Icon size="20" type="md-trash" @click="handleCloseSkuItem($index, item)"></Icon> + <Icon size="20" type="md-trash" @click="handleCloseSkuItem($index, item)"></Icon> </a> <div> <div style="display: flex;margin-bottom: 10px;font-weight: bold">瑙勬牸椤�</div> @@ -185,10 +232,13 @@ <div> <AutoComplete v-model="item.name" :filter-method="filterMethod" :maxlength="30" placeholder="璇疯緭鍏ヨ鏍奸」鍚嶇О" style="width: 150px" - @on-focus="changeSkuItem(item.name)" @on-change="editSkuItem(item.name, $index, item)"> + @on-focus="changeSkuItem(item.name)" + @on-change="editSkuItem(item.name, $index, item)"> </AutoComplete> - <iSwitch v-if="$index === 0" style="margin-left: 10px" size="small" @on-change="changeSkuOpenImage" v-model="openImage" /><span v-if="$index === 0" style="margin-left: 5px">娣诲姞瑙勬牸鍥剧墖</span> +<!-- <iSwitch v-if="$index === 0" style="margin-left: 10px" size="small"--> +<!-- @on-change="changeSkuOpenImage" v-model="openImage"/>--> +<!-- <span v-if="$index === 0" style="margin-left: 5px">娣诲姞瑙勬牸鍥剧墖</span>--> </div> </FormItem> @@ -210,7 +260,8 @@ @on-change="skuValueChange(val, index, item)"> </AutoComplete> <a style="margin-left: 6px" v-if="val.value && val.value !== ''"> - <Icon size="15" type="md-trash" @click="handleCloseSkuValue(val, index, item)"></Icon> + <Icon size="15" type="md-trash" + @click="handleCloseSkuValue(val, index, item)"></Icon> </a> </div> <div v-if="$index === 0 && openImage" style="margin-top: 10px"> @@ -225,20 +276,22 @@ style="width: 180px;height: 140px" /> <div class="sku-upload-list-cover"> - <div style="margin-top: 50px" > + <div style="margin-top: 50px"> <Icon size="25" type="md-search" @click="handleView(img)"></Icon> - <Icon size="25" type="md-trash" @click="handleRemove(val.images, __index)"></Icon> + <Icon size="25" type="md-trash" + @click="handleRemove(val.images, __index)"></Icon> </div> </div> </template> </div> </vuedraggable> + <!-- todo 3--> <Upload ref="uploadSku" :action="uploadFileUrl" v-if="val.images < 1" :before-upload="handleBeforeUpload" :format="['jpg', 'jpeg', 'png', 'webp']" - :headers="{ ...accessToken }" :max-size="2048" + :headers="{ ...accessToken }" :on-error="() => { $Spin.hide(); }" :on-exceeded-size="handleMaxSize" :on-format-error="handleFormatError" @@ -255,7 +308,9 @@ </div> </FormItem> - <FormItem v-if="item.spec_values.length < 10 && item.spec_values.length >= 1 && item.spec_values[0].value !== ''" class="sku-item-content-val flex" label="" style="line-height: 32px;"> + <FormItem + v-if="item.spec_values.length < 10 && item.spec_values.length >= 1 && item.spec_values[0].value !== ''" + class="sku-item-content-val flex" label="" style="line-height: 32px;"> <AutoComplete ref="input" v-model="newSkuValues[$index]" :filter-method="filterMethod" :maxlength="30" placeholder="鑷畾涔夎鏍煎��" style="width: 180px" @@ -288,9 +343,9 @@ overflow-x: hidden; } "> - <template slot="sn" slot-scope="{ row }"> - <Input v-model="row.sn" clearable placeholder="璇疯緭鍏ヨ揣鍙�" - @on-change="updateSkuTable(row, 'sn')"/> + <template slot="sn" slot-scope="{ row, index }"> + <Input v-model="row.sn" placeholder="璇疯緭鍏ヨ揣鍙�" disabled + @on-change="updateSkuTable(row, 'sn')" /> </template> <div v-if="baseInfoForm.goodsType !== 'VIRTUAL_GOODS'" slot="weight" slot-scope="{ row }"> <Input v-model="row.weight" clearable placeholder="璇疯緭鍏ラ噸閲�" @@ -305,6 +360,14 @@ baseInfoForm.goodsUnit || "" }}</span> </Input> + </template> + <template slot="COUPON" slot-scope="{ row }"> + <div @click="showCouponListModal(row)"> + <Input v-model="row.couponName" clearable placeholder="閫夋嫨浼樻儬鍗�" + > + </Input> + </div> + </template> <template slot="cost" slot-scope="{ row }"> <Input v-model="row.cost" clearable placeholder="璇疯緭鍏ユ垚鏈环" @@ -362,6 +425,7 @@ </div> <FormItem class="form-item-view-el" label="PC鍟嗗搧鎻忚堪" prop="intro" style="width: 100%"> <editor + :show-upload="true" ref="editor" v-model="baseInfoForm.intro" height="800px" @@ -375,6 +439,7 @@ <FormItem class="form-item-view-el" label="绉诲姩绔弿杩�" prop="skuList" style="width: 100%"> <editor + :show-upload="true" ref="introEditor" v-model="baseInfoForm.mobileIntro" height="800px" @@ -463,7 +528,43 @@ <Button type="primary" @click="saveToDraft">淇濆瓨涓烘ā鐗�</Button> </ButtonGroup> </div> - + <Modal v-model="showCouponModal" title="浼樻儬鍗峰垪琛�" width="1200px"> + <div style="display: flex; align-items: center; margin-bottom: 20px;"> + <!-- 妯℃嫙琛ㄥ崟label鏍峰紡 --> + <label style="width: 100px; text-align: right; padding-right: 12px; font-size:14px;"> + 宸查�夋嫨浼樻儬鍗�: + </label> + <Input + :disabled="true" + style="width: 30%;" + v-model="showCoupon" + placeholder="璇风偣鍑婚�夋嫨琛ㄦ牸鍐呬紭鎯犲姷" + ></Input> + </div> + <Table + :loading="couponLoading" + border + :columns="couponColumns" + :data="couponData" + ref="table" + @on-current-change="handleRowClick" + highlight-row + ></Table> + <Row type="flex" justify="center" class="mt_10"> + <Page + :current="couponSearchForm.pageNumber" + :total="couponTotal" + :page-size="couponSearchForm.pageSize" + @on-change="couponChangePage" + @on-page-size-change="couponChangePageSize" + :page-size-opts="[10, 20, 50]" + size="small" + show-total + show-elevator + show-sizer + ></Page> + </Row> + </Modal> <Modal v-model="showGoodsVideo" title="鏌ョ湅瑙嗛"> <div id="dplayer"> @@ -473,8 +574,32 @@ <!--<Modal width="1200px" v-model="picModelFlag">--> <!--<ossManage @callback="callbackSelected" ref="ossManage" />--> <!--</Modal>--> - <Modal v-model="picModelFlag" width="1200px" @on-ok="confirmUrls"> - <ossManage ref="ossManage" :isComponent="true" :initialize="picModelFlag" @callback="callbackSelected" @selected="(list)=>{ selectedImage = list}"/> + <!-- todo web--> + <Modal v-model="picModelFlag" width="1200px"> + <!-- <ossManage ref="ossManRage" :isComponent="true" :initialize="picModelFlag" @callback="callbackSelected" @selected="(list)=>{ selectedImage = list}"/>--> + <div class="demo-upload-list" v-for="(item,index) in showListImages"> + <template> + <img :src="item"> + <div class="demo-upload-list-cover"> + <Icon type="ios-eye-outline" @click.native="handleView(item)"></Icon> + <Icon type="ios-trash-outline" @click.native="handleRemove(null,index)"></Icon> + </div> + </template> + </div> + <div class="demo-upload-list"> + <Upload + :before-upload="upLoadImg" + accept="image/*" + action="-" + type="drag" + style=" display: inline-block;width: 58px" + > + <div style="width: 58px;height:58px;line-height: 58px;"> + <Icon type="ios-camera" size="20"></Icon> + </div> + </Upload> + </div> + </Modal> </div> @@ -491,7 +616,12 @@ import DPlayer from 'dplayer'; // import ossManage from "@/views/sys/oss-manage/ossManage"; import ossManage from "@/views/shop/ossManages"; - +import COS from 'cos-js-sdk-v5'; +import {getFileKey} from "@/utils/file.js"; +import {getFilePreview, getSts} from "@/api/file"; +import {formatDate} from "@/utils/filters"; +import {getShopCouponList} from '@/api/promotion' +import {promotionsScopeTypeRender} from "../../../utils/promotions"; export default { name: "goodsOperationSec", @@ -523,6 +653,106 @@ }, 1000); }; return { + currentRow:null, + showCouponModal:false, + showCoupon:'', + + couponSearchForm: { + // 鎼滅储妗嗗垵濮嬪寲瀵硅薄 + pageNumber: 1, // 褰撳墠椤垫暟 + pageSize: 10, // 椤甸潰澶у皬 + sort: "startTime", // 榛樿鎺掑簭瀛楁 + order: "desc", // 榛樿鎺掑簭鏂瑰紡 + promotionStatus:"START", + }, + selectedRowId:'', + couponTotal:0, + couponData:[], + couponLoading:false, + couponColumns: [ + // 琛ㄥご + { + title: "浼樻儬鍒稿悕绉�", + key: "couponName", + width: 180, + tooltip: true, + }, + { + title: "闈㈤/鎶樻墸", + key: "price", + width: 150, + render: (h, params) => { + if (params.row.price) { + return h("priceColorScheme", {props:{value:params.row.price,color:this.$mainColor}} ); + + } else { + return h("div", params.row.couponDiscount + "鎶�"); + } + }, + }, + + { + title: "鑾峰彇鏂瑰紡", + width: 120, + key: "getType", + render: (h, params) => { + if (params.row.getType === "FREE") { + return h("Tag", { props: { color: "red" } }, "鍏嶈垂鑾峰彇"); + } else if (params.row.getType === "ACTIVITY") { + return h("Tag", { props: { color: "volcano" } }, "娲诲姩鑾峰彇"); + } else if (params.row.getType === "INSIDE") { + return h("Tag", { props: { color: "lime" } }, "鍐呰喘"); + } else if (params.row.getType === "IGAME") { + return h("Tag", { props: { color: "lime" } }, "娓告垙浜虹敓"); + } else { + return h("Tag", { props: { color: "purple" } }, "鏈煡"); + } + }, + }, + { + title: "浼樻儬鍒哥被鍨�", + key: "couponType", + width: 150, + render: (h, params) => { + let text = ""; + if (params.row.couponType === "DISCOUNT") { + return h("Tag", { props: { color: "blue" } }, "鎵撴姌"); + } else if (params.row.couponType === "PRICE") { + return h("Tag", { props: { color: "geekblue" } }, "鍑忓厤鐜伴噾"); + } else { + return h("Tag", { props: { color: "purple" } }, "鏈煡"); + } + }, + }, + { + title: "鍝佺被鎻忚堪", + key: "scopeType", + width: 120, + render: (h, params) => { + return promotionsScopeTypeRender(h, params); + }, + }, + { + title: "娲诲姩鏃堕棿", + render: (h, params) => { + if ( + params?.row?.getType === "ACTIVITY" && + params?.row?.rangeDayType === "DYNAMICTIME" + ) { + return h("div", "闀挎湡鏈夋晥"); + } else if (params?.row?.startTime && params?.row?.endTime) { + return h("div", { + domProps: { + innerHTML: + params.row.startTime + "<br/>" + params.row.endTime, + }, + }); + } + }, + } + ], + + showListImages: [], regular, openImage: false, needToloadSku: false, @@ -594,6 +824,7 @@ ], /** 鍙戝竷鍟嗗搧鍩烘湰鍙傛暟 */ baseInfoForm: { + virtualGoodsType:"", salesModel: "RETAIL", /** 鍟嗗搧鐩稿唽鍒楄〃 */ goodsGalleryFiles: [], @@ -625,6 +856,13 @@ /** 鍟嗗搧鍒嗙被涓枃鍚� */ categoryName: [], goodsVideo: "", + showGoodsVideo: "", + // 棰勫敭鏃堕棿 + preSaleTime:[], + preSaleBeginDate:'', + preSaleEndDate:'', + commission:5, + }, /** 琛ㄦ牸澶� */ skuTableColumn: [], @@ -682,6 +920,8 @@ "price", "weight", "quantity", + "couponName", + "couponId", // "alertQuantity", "specId", "specValueId", @@ -690,6 +930,7 @@ selectedFormBtnName: "", // 鐐瑰嚮鍥剧墖缁戝畾form selectedImage: [], lastEditSkuValue: '', + }; }, watch: { @@ -698,12 +939,89 @@ if (val) { this.initVideo(); } + }, + showListImages(newValue){ + this.baseInfoForm.goodsGalleryFiles = newValue.map(item => { + return item.split('/').slice(-2).join('/') + }) } }, methods: { + showCouponListModal(row){ + this.showCouponModal = true; + this.showCoupon =''; + this.getCouponDataList() + this.currentRow = row; + }, + handleGoodsType(){ + //閲嶆柊娓叉煋 + this.renderTableData(this.skuTableData); + }, + getCouponDataList() { + // 鑾峰彇鏁版嵁 + this.couponLoading = true; + getShopCouponList(this.couponSearchForm).then((res) => { + this.couponLoading = false; + if (res.success) { + this.couponData = res.result.records; + this.couponTotal = res.result.total; + } + }); + this.couponLoading = false; + }, + // 澶勭悊琛岀偣鍑讳簨浠� + handleRowClick(currentRow ,oldCurrentRow){ + this.showCoupon = currentRow.couponName; + this.$set(this.currentRow, 'couponName', currentRow.couponName); + this.currentRow.couponId = currentRow.id + console.log(this.currentRow) + this.updateSkuTable(this.currentRow,"couponName") + this.updateSkuTable(this.currentRow,"couponId") + console.log(this.skuTableData) + }, + couponChangePage(v) { + // 鏀瑰彉椤电爜 + this.couponSearchForm.pageNumber = v; + this.getCouponDataList(); + }, + couponChangePageSize(v) { + // 鏀瑰彉椤垫暟 + this.couponSearchForm.pageNumber = 1; + this.couponSearchForm.pageSize = v; + this.getCouponDataList(); + }, + + // 鏍煎紡鍖栨樉绀哄�� + formatter(date) { + return this.formatDate(date, 'yyyy-MM-dd'); + }, + + // 鏃ユ湡鏍煎紡鍖栧伐鍏� + formatDate(date, format) { + const year = date.getFullYear(); + const month = (date.getMonth() + 1).toString().padStart(2, '0'); + const day = date.getDate().toString().padStart(2, '0'); + + return format + .replace('yyyy', year) + .replace('MM', month) + .replace('dd', day); + }, + choosePreTime(e){ + if (this.baseInfoForm.preSaleTime){ + const[begin,end] = this.baseInfoForm.preSaleTime; + this.baseInfoForm.preSaleBeginDate = this.formatDate(begin,'yyyy-MM-dd'); + this.baseInfoForm.preSaleEndDate = this.formatDate(end,'yyyy-MM-dd'); + console.log('------------------>閫夋嫨鏃堕棿',this.baseInfoForm.preSaleBeginDate,this.baseInfoForm.preSaleEndDate) + + } + console.log('鏃堕棿閫夋嫨------------------銆�',e) + }, // 閫夋嫨鍥剧墖modal handleCLickImg(val, index) { - this.$refs.ossManage.selectImage = true; + console.log('娴嬭瘯杈撳叆鐨勫��----------------銆�', val) + // 搴熷純鍘熸湁鐨勫浘鐗囦笂浼� + // this.$refs.ossManage.selectImage = true; this.picModelFlag = true; this.selectedFormBtnName = val; // this.picIndex = index; @@ -724,10 +1042,10 @@ }, // ship澶у皬涓嶆纭� handleVideoMaxSize(file) { - this.$Notice.warning({ - title: "瓒呰繃鏂囦欢澶у皬闄愬埗", - desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB", - }); + // this.$Notice.warning({ + // title: "瓒呰繃鏂囦欢澶у皬闄愬埗", + // desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB", + // }); }, onAddSku(index) { if (!this.newSkuValues[index]) { @@ -865,7 +1183,15 @@ }, // 绉婚櫎宸查�夊浘鐗� handleRemove(item, index) { - item.splice(index, 1) + if (!item) { + this.listImages.splice(index, 1); + this.showListImages.splice(index, 1); + this.baseInfoForm.goodsGalleryFiles.splice(index, 1); + this.baseInfoForm.goodsGalleryList.splice(index, 1); + } else { + console.log('绉婚櫎娴嬭瘯',item, index); + item.splice(index, 1) + } this.previewPicture = ""; }, // 鏌ョ湅鍟嗗搧澶у浘 @@ -999,14 +1325,67 @@ } }, // sku鍥剧墖涓婁紶鍓嶉挬瀛� - handleBeforeUpload(file) { + // async handleBeforeUpload(file) { + // const check = + // this.selectedSku.images !== undefined && + // this.selectedSku.images.length > 5; + // if (check) { + // this.$Notice.warning({title: "鍥剧墖鏁伴噺涓嶈兘澶т簬浜斿紶"}); + // return false; + // } + // }, + // sku鍥剧墖涓婁紶鍓嶉挬瀛� + async handleBeforeUpload(file) { const check = this.selectedSku.images !== undefined && this.selectedSku.images.length > 5; if (check) { this.$Notice.warning({title: "鍥剧墖鏁伴噺涓嶈兘澶т簬浜斿紶"}); - return false; } + try { + // this.upLoadVideoLoading = true; + // 鑾峰彇鏂囦欢涓婁紶涓存椂瀵嗛挜 + const sts = await getSts(); + const cos = new COS({ + getAuthorization: async function (options, callback) { + callback({ + TmpSecretId: sts.data.tmpSecretId, + TmpSecretKey: sts.data.tmpSecretKey, + SecurityToken: sts.data.sessionToken, + // 寤鸿杩斿洖鏈嶅姟鍣ㄦ椂闂翠綔涓虹鍚嶇殑寮�濮嬫椂闂达紝閬垮厤瀹㈡埛绔湰鍦版椂闂村亸宸繃澶у鑷寸鍚嶉敊璇� + StartTime: sts.data.stsStartTime, // 鏃堕棿鎴筹紝鍗曚綅绉掞紝濡傦細1580000000 + ExpiredTime: sts.data.stsEndTime,// 鏃堕棿鎴筹紝鍗曚綅绉掞紝濡傦細1580000000 + ScopeLimit: true, // 缁嗙矑搴︽帶鍒舵潈闄愰渶瑕佽涓� true锛屼細闄愬埗瀵嗛挜鍙湪鐩稿悓璇锋眰鏃堕噸澶嶄娇鐢� + }); + } + }) + const fileKey = getFileKey(file.name) + const upData = await cos.uploadFile({ + Bucket: sts.data.bucket, + Region: sts.data.region, + Key: fileKey, + Body: file, // 瑕佷笂浼犵殑鏂囦欢瀵硅薄銆� + SliceSize: 1024 * 1024 * 5, + onProgress: function (progressData) { + console.log('涓婁紶杩涘害锛�', progressData); + }, + }); + console.log("涓婁紶鎴愬姛", upData) + this.$nextTick(() => { + this.listImages.push(fileKey); + this.showListImages.push(sts.data.endpoint + "/" + fileKey); + this.baseInfoForm.goodsGalleryFiles.push(fileKey); + }) + + } catch (e) { + console.log("涓婁紶澶辫触", upData) + return false; + } finally { + // this.upLoadVideoLoading = false; + + } + return false; + }, /** 鏌ヨ鍟嗗搧鍝佺墝鍒楄〃 */ @@ -1075,6 +1454,7 @@ response.result.recommend ? (response.result.recommend = 1) : (response.result.recommend = 0); + response.result.preSaleTime = [response.result.preSaleBeginDate, response.result.preSaleEndDate]; this.baseInfoForm = {...this.baseInfoForm, ...response.result}; this.baseInfoForm.release = 1; //鍗充娇鏄鏀惧叆浠撳簱锛屼慨鏀圭殑鏃跺�欎篃浼氭樉绀轰細绔嬪嵆鍙戝竷 this.categoryId = response.result.categoryPath.split(",")[2]; @@ -1086,8 +1466,34 @@ this.baseInfoForm.goodsGalleryFiles = response.result.goodsGalleryList.map((i) => { return i; - }); + }) + try { + const stsInfo = await getSts(); + const endpoint = stsInfo.data.endpoint; + this.showListImages = response.result.goodsGalleryList.map((i) => { + if (i!=null&&i.indexOf('http')===-1) + return endpoint+'/'+i; + else return i; + }) + if (response.result.goodsVideo){ + + } + } catch (e) { + console.log('缁勮璺緞鍑洪棶棰�',e); + } + } + if (response.result.goodsVideo){ + try { + const stsInfo = await getSts(); + const endpoint = stsInfo.data.endpoint; + this.baseInfoForm.goodsVideo = response.result.goodsVideo; + this.baseInfoForm.showGoodsVideo = endpoint + '/' + response.result.goodsVideo; + console.log('鏄剧ず鍟嗗搧瑙嗛------------------->', this.baseInfoForm.showGoodsVideo); + } catch (e) { + console.log('缁勮瑙嗛鍦板潃鍑洪敊浜�') + } + } if ( response.result.wholesaleList && @@ -1105,7 +1511,8 @@ this.renderGoodsDetailSku(response.result.skuList); /** 鏌ヨ鍝佺墝鍒楄〃 */ - this.getGoodsBrandList(); + //todo 绉婚櫎鍝佺墝姒傚康 + // this.getGoodsBrandList(); /** 鏌ヨ搴楅摵鍟嗗搧鍒嗙被 */ this.GET_ShopGoodsLabel(); @@ -1125,7 +1532,7 @@ this.firstData.goodsType && (this.baseInfoForm.goodsType = this.firstData.goodsType); /** 鏌ヨ鍟嗗搧鍙傛暟 */ - this.GET_GoodsParams(); + // this.GET_GoodsParams(); }, // 娓叉煋sku鏁版嵁 renderGoodsDetailSku(skuList) { @@ -1139,6 +1546,8 @@ // cost: e.cost, quantity: e.quantity, // alertQuantity: e.alertQuantity, + couponName:e.couponName, + couponId:e.couponId, weight: e.weight, }; if (e.goodsGalleryList && e.goodsGalleryList.length >= 1) { @@ -1271,8 +1680,8 @@ this.$Message.error("宸插瓨鍦ㄧ浉鍚岃鏍奸」锛�"); return; } - if (this.zz(0, val) > 20) { - this.$Message.error("瑙勬牸鍊兼渶澶氬崄涓瓧绗﹂暱搴︼紒"); + if (this.zz(0, val) > 30) { + this.$Message.error("瑙勬牸鍊兼渶澶氬崄浜斾釜瀛楃闀垮害锛�"); // val = val.toString().slice(0, 4); this.skuInfo[index].name = this.countCharacters(val, 10); this.$forceUpdate();// 璋冪敤璇ユ柟娉曚細瑙﹀彂缁勪欢鐨勯噸鏂版覆鏌� @@ -1327,8 +1736,8 @@ if (val.value === '') { return; } - if (this.zz(0, val.value) > 20) { - this.$Message.error("瑙勬牸鍊兼渶澶氬崄涓瓧绗﹂暱搴︼紒"); + if (this.zz(0, val.value) > 30) { + this.$Message.error("瑙勬牸鍊兼渶澶氬崄浜斾釜瀛楃闀垮害锛�"); // val.value = val.value.toString().slice(0, 4); this.skuInfo[$index].spec_values[index].value = this.countCharacters(val.value, 10); this.$forceUpdate();// 璋冪敤璇ユ柟娉曚細瑙﹀彂缁勪欢鐨勯噸鏂版覆鏌� @@ -1490,6 +1899,8 @@ // find.cost && (find.cost = ""); find.quantity && (find.quantity = ""); // find.alertQuantity && (find.alertQuantity = ""); + find.couponName && (find.couponName = ""); + find.couponId && (find.couponId = ""); find.weight && (find.weight = ""); this.skuTableData.splice(this.skuTableData.length, 0, find); @@ -1504,6 +1915,8 @@ find.sn && (find.sn = ""); // find.cost && (find.cost = ""); find.quantity && (find.quantity = ""); + find.couponName && (find.couponName = ""); + find.couponId && (find.couponId = ""); // find.alertQuantity && (find.alertQuantity = ""); find.weight && (find.weight = ""); @@ -1515,6 +1928,7 @@ this.baseInfoForm.regeneratorSkuFlag = true; this.newSkuValues[$index] = ""; } + this.renderTableData(this.skuTableData); }, handleClearSku() { this.skuInfo = []; @@ -1542,6 +1956,7 @@ * 娓叉煋table鎵�闇�瑕佺殑column 鍜� data */ renderTableData(skus) { + console.log('-------------->閿�鍞被鍨�', skus) this.skuTableColumn = []; let pushData = []; // 娓叉煋澶撮儴 @@ -1566,7 +1981,15 @@ } ); } - + // 棰勫敭妯″紡 + // if (this.baseInfoForm.salesModel !== "PRESALE") { + // pushData.push( + // { + // title: "棰勫敭鏃堕棿", + // slot: "price", + // } + // ); + // } if (this.baseInfoForm.salesModel === "WHOLESALE" && this.wholesaleData) { this.wholesaleData.forEach((item, index) => { pushData.push({ @@ -1585,6 +2008,14 @@ title: "閲嶉噺", slot: "weight", }); + } + if (this.baseInfoForm.goodsType ==="VIRTUAL_GOODS" && this.baseInfoForm.virtualGoodsType==="COUPON"){ + pushData.push( + { + title:"浼樻儬鍗�", + slot:"COUPON" + } + ) } pushData.push( { @@ -1622,6 +2053,7 @@ * array spec鏁版嵁 */ specIterator(result, spec, skus) { + let table = result; if (spec.length > 0) { //娓呴櫎褰撳墠寰幆鐨勫垎缁� @@ -1637,6 +2069,7 @@ id: skus[index].id, sn: skus[index].sn, quantity: skus[index].quantity, + coupon: skus[index].coupon, cost: skus[index].cost, price: skus[index].price, // [spec[0].name]: skus[index][spec[0].name] ? skus[index][spec[0].name] : specItem.value, @@ -1663,6 +2096,11 @@ } else { this.skuIndex++; } + + table.forEach((item,index) =>{ + console.log("鍏冪礌:" + item +"index:" + (index +1)) + item.sn = index + 1; + }) return table; }, /** 鏍规嵁鍒嗙被id鑾峰彇绯荤粺璁剧疆瑙勬牸淇℃伅*/ @@ -1720,6 +2158,7 @@ return; } } + // else if (item === "alertQuantity") { // if ( // !/^[0-9]\d*$/.test(row[item]) || @@ -1780,124 +2219,151 @@ }, /** 娣诲姞鍟嗗搧 **/ save() { - this.submitLoading = true; - this.$refs["baseInfoForm"].validate((valid) => { - if (valid) { - if (this.baseInfoForm.salesModel === "WHOLESALE") { - for (let i = 0; i < this.wholesaleData.length; i++) { - this.checkWholesaleNum(i); - this.checkWholesalePrice(i); - this.wholesaleData[i].goodsId = this.goodsId; + try { + this.submitLoading = true; + this.$refs["baseInfoForm"].validate((valid) => { + if (valid) { + if (this.baseInfoForm.salesModel === "WHOLESALE") { + for (let i = 0; i < this.wholesaleData.length; i++) { + this.checkWholesaleNum(i); + this.checkWholesalePrice(i); + this.wholesaleData[i].goodsId = this.goodsId; + } + this.baseInfoForm.wholesaleList = this.wholesaleData; } - this.baseInfoForm.wholesaleList = this.wholesaleData; - } - this.baseInfoForm.goodsId = this.goodsId; - let submit = JSON.parse(JSON.stringify(this.baseInfoForm)); - if ( - submit.goodsGalleryFiles && - submit.goodsGalleryFiles.length <= 0 - ) { - this.submitLoading = false; - this.$Message.error("璇蜂笂浼犲晢鍝佸浘鐗�"); - return; - } - if (submit.templateId === "") submit.templateId = 0; - let flag = false; - let paramValue = ""; + this.baseInfoForm.goodsId = this.goodsId; + let submit = JSON.parse(JSON.stringify(this.baseInfoForm)); - if (flag) { - this.$Message.error(paramValue + " 鍙傛暟鍊间笉鑳戒负绌�"); - this.submitLoading = false; - return; - } + if ( + submit.goodsGalleryFiles && + submit.goodsGalleryFiles.length <= 0 + ) { + this.submitLoading = false; + this.$Message.error("璇蜂笂浼犲晢鍝佸浘鐗�"); + return; + } + // if (!submit.goodsVideo){ + // this.submitLoading = false; + // this.$Message.error("璇蜂笂浼犲晢鍝佽棰�"); + // return; + // } + if (submit.templateId === "") submit.templateId = 0; + let flag = false; + let paramValue = ""; - if (this.goodsUnitList && !this.goodsUnitList.find(i => i === this.baseInfoForm.goodsUnit)) { - submit.goodsUnit = "" - this.$Message.error("鍟嗗搧鍗曚綅涓嶅瓨鍦�"); - this.submitLoading = false; - return; - } - let skuInfoNames = this.skuInfo.map((n) => n.name); - submit.skuList = []; - let containEmptyImage = false; - this.skuTableData.map((sku) => { - let skuCopy = { - cost: 1, - price: sku.price, - quantity: sku.quantity, - // alertQuantity: sku.alertQuantity, - sn: sku.sn, - images: [], - }; - if (this.openImage) { - this.skuInfo[0].spec_values.forEach(item => { - if (!item.images || item.images.length === 0) { - containEmptyImage = true; + if (flag) { + this.$Message.error(paramValue + " 鍙傛暟鍊间笉鑳戒负绌�"); + this.submitLoading = false; + return; + } + + if (this.goodsUnitList && !this.goodsUnitList.find(i => i === this.baseInfoForm.goodsUnit)) { + submit.goodsUnit = "" + this.$Message.error("鍟嗗搧鍗曚綅涓嶅瓨鍦�"); + this.submitLoading = false; + return; + } + let skuInfoNames = this.skuInfo.map((n) => n.name); + submit.skuList = []; + let containEmptyImage = false; + this.skuTableData.map((sku) => { + let skuCopy = { + cost: 1, + price: sku.price, + quantity: sku.quantity, + couponName:sku.couponName, + couponId:sku.couponId, + // alertQuantity: sku.alertQuantity, + sn: sku.sn, + images: [], + }; + if(this.baseInfoForm.goodsType === "VIRTUAL_GOODS" && + this.baseInfoForm.virtualGoodsType !== '' && + this.baseInfoForm.virtualGoodsType !== undefined && + this.baseInfoForm.virtualGoodsType !== null){ + if (sku.couponId === null || sku.couponId === undefined){ + this.$Message.error("璇烽�夋嫨浼樻儬鍔�") return; } - if (item.value === sku[this.skuInfo[0].name]) { - skuCopy.images = item.images + if (sku.couponName === null || sku.couponName === undefined){ + this.$Message.error("璇烽�夋嫨浼樻儬鍔�") + return; } - }) - - } - if (sku.weight) { - skuCopy.weight = sku.weight; - } - if (this.baseInfoForm.weight) { - skuCopy.weight = this.baseInfoForm.weight; - } - if (sku.id) { - skuCopy.id = sku.id; - } - for (let skuInfoName of skuInfoNames) { - skuCopy[skuInfoName] = sku[skuInfoName]; - } - submit.skuList.push(skuCopy); - }); - if (containEmptyImage) { - this.$Message.error("寮�鍚鏍煎浘鐗囷紝鎵�鏈夎鏍煎浘鐗囦笉鑳戒负绌猴紒"); - this.submitLoading = false; - return; - } - if (submit.goodsGalleryFiles.length > 0) { - submit.goodsGalleryList = submit.goodsGalleryFiles.map( - (i) => i - ); - } - /** 鍙傛暟鏍¢獙 **/ - /* Object.keys(submit.goodsParamsList).forEach((item) => { - });*/ - submit.release ? (submit.release = true) : (submit.release = false); - submit.recommend - ? (submit.recommend = true) - : (submit.recommend = false); - if (this.goodsId) { - API_GOODS.editGoods(this.goodsId, submit).then((res) => { - if (res.success) { - this.submitLoading = false; - this.$router.go(-1); - } else { - this.submitLoading = false; } + if (this.openImage) { + this.skuInfo[0].spec_values.forEach(item => { + if (!item.images || item.images.length === 0) { + containEmptyImage = true; + return; + } + if (item.value === sku[this.skuInfo[0].name]) { + skuCopy.images = item.images + } + }) + + } + if (sku.weight) { + skuCopy.weight = sku.weight; + } + if (this.baseInfoForm.weight) { + skuCopy.weight = this.baseInfoForm.weight; + } + if (sku.id) { + skuCopy.id = sku.id; + } + for (let skuInfoName of skuInfoNames) { + skuCopy[skuInfoName] = sku[skuInfoName]; + } + submit.skuList.push(skuCopy); }); + console.log('----------------->鎻愪氦', submit); + if (containEmptyImage) { + this.$Message.error("寮�鍚鏍煎浘鐗囷紝鎵�鏈夎鏍煎浘鐗囦笉鑳戒负绌猴紒"); + this.submitLoading = false; + return; + } + if (submit.goodsGalleryFiles.length > 0) { + submit.goodsGalleryList = submit.goodsGalleryFiles.map( + (i) => i + ); + } + /** 鍙傛暟鏍¢獙 **/ + /* Object.keys(submit.goodsParamsList).forEach((item) => { + });*/ + submit.release ? (submit.release = true) : (submit.release = false); + submit.recommend + ? (submit.recommend = true) + : (submit.recommend = false); + if (this.goodsId) { + API_GOODS.editGoods(this.goodsId, submit).then((res) => { + if (res.success) { + this.submitLoading = false; + this.$router.go(-1); + } else { + this.submitLoading = false; + } + }); + } else { + console.log(submit) + API_GOODS.createGoods(submit).then((res) => { + if (res.success) { + this.submitLoading = false; + this.$parent.activestep = 2; + window.scrollTo(0, 0); + } else { + this.submitLoading = false; + } + }); + } } else { - API_GOODS.createGoods(submit).then((res) => { - if (res.success) { - this.submitLoading = false; - this.$parent.activestep = 2; - window.scrollTo(0, 0); - } else { - this.submitLoading = false; - } - }); - } - } else { - this.submitLoading = false; + this.submitLoading = false; - this.$Message.error("杩樻湁蹇呭~椤规湭鍋氬鐞嗭紝璇锋鏌ヨ〃鍗�"); - } - }); + this.$Message.error("杩樻湁蹇呭~椤规湭鍋氬鐞嗭紝璇锋鏌ヨ〃鍗�"); + } + }); + } finally { + this.submitLoading = false; + } }, /** 淇濆瓨涓烘ā鏉� */ saveToDraft() { @@ -1961,8 +2427,110 @@ } else if (type === 'localRefresh') { this.$Message.error("鍒锋柊澶辫触锛岃閲嶈瘯"); } + }).catch(reason => { + console.log("鑾峰彇妯℃澘澶辫触", reason) }); - } + }, + removeVideo() { + this.baseInfoForm.showGoodsVideo = null; + this.baseInfoForm.goodsVideo = null; + }, + // todo 鏂囦欢涓婁紶 + async upLoadImg(file) { + console.log(file, this.count++); + if (this.listImages.length >= 10) { + this.$Message.error("鍥剧墖涓婁紶涓嶈兘瓒呰繃10涓�"); + return; + } + try { + // this.upLoadVideoLoading = true; + // 鑾峰彇鏂囦欢涓婁紶涓存椂瀵嗛挜 + const sts = await getSts(); + const cos = new COS({ + getAuthorization: async function (options, callback) { + callback({ + TmpSecretId: sts.data.tmpSecretId, + TmpSecretKey: sts.data.tmpSecretKey, + SecurityToken: sts.data.sessionToken, + // 寤鸿杩斿洖鏈嶅姟鍣ㄦ椂闂翠綔涓虹鍚嶇殑寮�濮嬫椂闂达紝閬垮厤瀹㈡埛绔湰鍦版椂闂村亸宸繃澶у鑷寸鍚嶉敊璇� + StartTime: sts.data.stsStartTime, // 鏃堕棿鎴筹紝鍗曚綅绉掞紝濡傦細1580000000 + ExpiredTime: sts.data.stsEndTime,// 鏃堕棿鎴筹紝鍗曚綅绉掞紝濡傦細1580000000 + ScopeLimit: true, // 缁嗙矑搴︽帶鍒舵潈闄愰渶瑕佽涓� true锛屼細闄愬埗瀵嗛挜鍙湪鐩稿悓璇锋眰鏃堕噸澶嶄娇鐢� + }); + } + }) + const fileKey = getFileKey(file.name) + const upData = await cos.uploadFile({ + Bucket: sts.data.bucket, + Region: sts.data.region, + Key: fileKey, + Body: file, // 瑕佷笂浼犵殑鏂囦欢瀵硅薄銆� + SliceSize: 1024 * 1024 * 5, + onProgress: function (progressData) { + console.log('涓婁紶杩涘害锛�', progressData); + }, + }); + console.log("涓婁紶鎴愬姛", upData) + this.$nextTick(() => { + this.listImages.push(fileKey); + this.showListImages.push(sts.data.endpoint + "/" + fileKey); + this.baseInfoForm.goodsGalleryFiles.push(fileKey); + }) + + } catch (e) { + console.log("涓婁紶澶辫触", upData) + return false; + } finally { + // this.upLoadVideoLoading = false; + + } + return false; + }, + async upLoadVideo(file) { + try { + // this.upLoadVideoLoading = true; + // 鑾峰彇鏂囦欢涓婁紶涓存椂瀵嗛挜 + const sts = await getSts(); + const cos = new COS({ + getAuthorization: async function (options, callback) { + callback({ + TmpSecretId: sts.data.tmpSecretId, + TmpSecretKey: sts.data.tmpSecretKey, + SecurityToken: sts.data.sessionToken, + // 寤鸿杩斿洖鏈嶅姟鍣ㄦ椂闂翠綔涓虹鍚嶇殑寮�濮嬫椂闂达紝閬垮厤瀹㈡埛绔湰鍦版椂闂村亸宸繃澶у鑷寸鍚嶉敊璇� + StartTime: sts.data.stsStartTime, // 鏃堕棿鎴筹紝鍗曚綅绉掞紝濡傦細1580000000 + ExpiredTime: sts.data.stsEndTime,// 鏃堕棿鎴筹紝鍗曚綅绉掞紝濡傦細1580000000 + ScopeLimit: true, // 缁嗙矑搴︽帶鍒舵潈闄愰渶瑕佽涓� true锛屼細闄愬埗瀵嗛挜鍙湪鐩稿悓璇锋眰鏃堕噸澶嶄娇鐢� + }); + } + }) + const fileKey = getFileKey(file.name) + const upData = await cos.uploadFile({ + Bucket: sts.data.bucket, + Region: sts.data.region, + Key: fileKey, + Body: file, // 瑕佷笂浼犵殑鏂囦欢瀵硅薄銆� + SliceSize: 1024 * 1024 * 5, + onProgress: function (progressData) { + console.log('涓婁紶杩涘害锛�', progressData); + }, + }); + console.log("涓婁紶鎴愬姛", upData) + this.$nextTick(() => { + this.baseInfoForm.goodsVideo = fileKey; + this.baseInfoForm.showGoodsVideo = sts.data.endpoint + "/" + fileKey; + this.baseInfoForm.goodsVideo = fileKey; + }) + + } catch (e) { + console.log("涓婁紶澶辫触", upData) + return false; + } finally { + // this.upLoadVideoLoading = false; + + } + return false; + }, }, mounted() { this.accessToken = { @@ -1988,12 +2556,15 @@ this.baseInfoForm.goodsType = this.firstData.goodsType; - /** 鑾峰彇璇ュ晢鍩庡垎绫讳笅 鍟嗗搧鍙傛暟淇℃伅 */ - this.GET_GoodsParams(); - /** 鏌ヨ鍝佺墝鍒楄〃 */ - this.getGoodsBrandList(); - /** 鏌ヨ鍒嗙被缁戝畾鐨勮鏍间俊鎭� */ - this.Get_SkuInfoByCategory(this.categoryId); + if (this.categoryId != null && this.categoryId !== '') { + /** 鑾峰彇璇ュ晢鍩庡垎绫讳笅 鍟嗗搧鍙傛暟淇℃伅 */ + this.GET_GoodsParams(); + console.log('鍒嗙被id------------------>', this.categoryId); + /** 鏌ヨ鍒嗙被缁戝畾鐨勮鏍间俊鎭� */ + this.Get_SkuInfoByCategory(this.categoryId); + /** 鏌ヨ鍝佺墝鍒楄〃 */ + this.getGoodsBrandList(); + } // 鑾峰彇鍟嗗搧鍗曚綅 this.GET_GoodsUnit(); // 鑾峰彇褰撳墠搴楅摵鍒嗙被 @@ -2044,4 +2615,45 @@ .refresh-icon { margin-left: 10px; } + +.demo-upload-list { + display: inline-block; + width: 60px; + height: 60px; + text-align: center; + line-height: 60px; + border: 1px solid transparent; + border-radius: 4px; + overflow: hidden; + background: #fff; + position: relative; + box-shadow: 0 1px 1px rgba(0, 0, 0, .2); + margin-right: 4px; +} + +.demo-upload-list img { + width: 100%; + height: 100%; +} + +.demo-upload-list-cover { + display: none; + position: absolute; + top: 0; + bottom: 0; + left: 0; + right: 0; + background: rgba(0, 0, 0, .6); +} + +.demo-upload-list:hover .demo-upload-list-cover { + display: block; +} + +.demo-upload-list-cover i { + color: #fff; + font-size: 20px; + cursor: pointer; + margin: 0 2px; +} </style> -- Gitblit v1.8.0