From f6c05b70e6f74b413d8bce3d63f844c6cdb194f2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期三, 25 六月 2025 21:20:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
seller/src/views/goods/goods-seller/goodsOperationSec.vue | 633 ++++++++++++++++++++++++++++++++++++++++++---------------
1 files changed, 464 insertions(+), 169 deletions(-)
diff --git a/seller/src/views/goods/goods-seller/goodsOperationSec.vue b/seller/src/views/goods/goods-seller/goodsOperationSec.vue
index 0965954..dbbdb51 100644
--- a/seller/src/views/goods/goods-seller/goodsOperationSec.vue
+++ b/seller/src/views/goods/goods-seller/goodsOperationSec.vue
@@ -26,13 +26,13 @@
<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">
@@ -101,10 +101,10 @@
</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 +118,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;">
@@ -139,22 +139,33 @@
</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;"/>
</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 +176,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 +190,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 +199,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 +227,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,19 +243,20 @@
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>
- <Upload ref="uploadSku" :action="uploadFileUrl"
+<!-- todo 3-->
+ <Upload ref="uploadSku" action="-"
v-if="val.images < 1"
:before-upload="handleBeforeUpload"
:format="['jpg', 'jpeg', 'png', 'webp']"
- :headers="{ ...accessToken }"
:max-size="2048"
:on-error="() => { $Spin.hide(); }"
:on-exceeded-size="handleMaxSize"
@@ -255,7 +274,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"
@@ -362,6 +383,7 @@
</div>
<FormItem class="form-item-view-el" label="PC鍟嗗搧鎻忚堪" prop="intro" style="width: 100%">
<editor
+ :show-upload="false"
ref="editor"
v-model="baseInfoForm.intro"
height="800px"
@@ -375,6 +397,7 @@
<FormItem class="form-item-view-el" label="绉诲姩绔弿杩�" prop="skuList" style="width: 100%">
<editor
+ :show-upload="false"
ref="introEditor"
v-model="baseInfoForm.mobileIntro"
height="800px"
@@ -473,8 +496,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,6 +538,9 @@
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";
export default {
@@ -523,6 +573,7 @@
}, 1000);
};
return {
+ showListImages: [],
regular,
openImage: false,
needToloadSku: false,
@@ -625,6 +676,7 @@
/** 鍟嗗搧鍒嗙被涓枃鍚� */
categoryName: [],
goodsVideo: "",
+ showGoodsVideo: "",
},
/** 琛ㄦ牸澶� */
skuTableColumn: [],
@@ -698,12 +750,19 @@
if (val) {
this.initVideo();
}
+ },
+ showListImages(newValue){
+ this.baseInfoForm.goodsGalleryFiles = newValue.map(item => {
+ return item.split('/').slice(-2).join('/')
+ })
}
},
methods: {
// 閫夋嫨鍥剧墖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 +783,10 @@
},
// ship澶у皬涓嶆纭�
handleVideoMaxSize(file) {
- this.$Notice.warning({
- title: "瓒呰繃鏂囦欢澶у皬闄愬埗",
- desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB",
- });
+ // this.$Notice.warning({
+ // title: "瓒呰繃鏂囦欢澶у皬闄愬埗",
+ // desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB",
+ // });
},
onAddSku(index) {
if (!this.newSkuValues[index]) {
@@ -865,7 +924,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 +1066,57 @@
}
},
// 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;
}
+ 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;
+
},
/** 鏌ヨ鍟嗗搧鍝佺墝鍒楄〃 */
@@ -1086,8 +1196,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 +1241,8 @@
this.renderGoodsDetailSku(response.result.skuList);
/** 鏌ヨ鍝佺墝鍒楄〃 */
- this.getGoodsBrandList();
+ //todo 绉婚櫎鍝佺墝姒傚康
+ // this.getGoodsBrandList();
/** 鏌ヨ搴楅摵鍟嗗搧鍒嗙被 */
this.GET_ShopGoodsLabel();
@@ -1125,7 +1262,7 @@
this.firstData.goodsType &&
(this.baseInfoForm.goodsType = this.firstData.goodsType);
/** 鏌ヨ鍟嗗搧鍙傛暟 */
- this.GET_GoodsParams();
+ // this.GET_GoodsParams();
},
// 娓叉煋sku鏁版嵁
renderGoodsDetailSku(skuList) {
@@ -1780,124 +1917,134 @@
},
/** 娣诲姞鍟嗗搧 **/
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;
- }
- 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 = "";
-
- 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,
- // 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;
- 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);
- });
- 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;
+ 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.goodsId = this.goodsId;
+ let submit = JSON.parse(JSON.stringify(this.baseInfoForm));
+ console.log('----------------->鎻愪氦',submit);
+ 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 (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,
+ // 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;
+ 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);
});
+ 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 {
+ 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 +2108,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 >= 5) {
+ this.$Message.error("鍥剧墖涓婁紶涓嶈兘瓒呰繃5涓�");
+ 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 +2237,17 @@
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 +2298,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