From b0e40873b6f6ee737276217dc1a8ce274af4ad29 Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期三, 02 七月 2025 18:58:01 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- seller/src/views/goods/goods-seller/goodsOperationSec.vue | 142 ++++++++++++++++++++++++++++++++++++----------- 1 files changed, 109 insertions(+), 33 deletions(-) diff --git a/seller/src/views/goods/goods-seller/goodsOperationSec.vue b/seller/src/views/goods/goods-seller/goodsOperationSec.vue index ce33407..1d58489 100644 --- a/seller/src/views/goods/goods-seller/goodsOperationSec.vue +++ b/seller/src/views/goods/goods-seller/goodsOperationSec.vue @@ -23,16 +23,24 @@ <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 + 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 +56,22 @@ <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.salesModel == 'WHOLESALE'" class="form-item-view-el" label="閿�鍞鍒�" prop="wholesaleRule"> @@ -101,7 +118,7 @@ </div> <h4>鍟嗗搧瑙勬牸鍙婂浘鐗�</h4> <div class="form-item-view"> - <FormItem class="form-item-view-el required" label="涓诲浘" prop="goodsGalleryFiles" v-if=" baseInfoForm.goodsVideo ==null || baseInfoForm.goodsVideo ===''"> + <FormItem class="form-item-view-el required" label="涓诲浘" prop="goodsGalleryFiles" > <div style="display: flex; flex-wrap: wrap;"> <vuedraggable :animation="200" :list="showListImages"> <div v-for="(item, __index) in showListImages" :key="__index" @@ -151,11 +168,11 @@ <!-- </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" v-if="!(baseInfoForm.goodsGalleryFiles !=null &&baseInfoForm.goodsGalleryFiles.length>0)"> + <FormItem class="form-item-view-el" label="瑙嗛" prop="goodsVideo" > <div class="goods-video"> <div v-if="baseInfoForm.goodsVideo"> <div> - <video :src="baseInfoForm.showGoodsVideo" 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="-" :format="['avi', 'wmv', 'mpeg', 'mp4', 'mov']" @@ -383,6 +400,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" @@ -396,6 +414,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" @@ -496,7 +515,7 @@ <!--</Modal>--> <!-- todo web--> <Modal v-model="picModelFlag" width="1200px"> - <!-- <ossManage ref="ossManage" :isComponent="true" :initialize="picModelFlag" @callback="callbackSelected" @selected="(list)=>{ selectedImage = list}"/>--> + <!-- <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"> @@ -539,6 +558,7 @@ import COS from 'cos-js-sdk-v5'; import {getFileKey} from "@/utils/file.js"; import {getFilePreview, getSts} from "@/api/file"; +import {formatDate} from "@/utils/filters"; export default { @@ -675,6 +695,10 @@ categoryName: [], goodsVideo: "", showGoodsVideo: "", + // 棰勫敭鏃堕棿 + preSaleTime:[], + preSaleBeginDate:'', + preSaleEndDate:'', }, /** 琛ㄦ牸澶� */ skuTableColumn: [], @@ -748,9 +772,40 @@ if (val) { this.initVideo(); } + }, + showListImages(newValue){ + this.baseInfoForm.goodsGalleryFiles = newValue.map(item => { + return item.split('/').slice(-2).join('/') + }) } }, methods: { + // 鏍煎紡鍖栨樉绀哄�� + 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) { console.log('娴嬭瘯杈撳叆鐨勫��----------------銆�', val) @@ -776,10 +831,10 @@ }, // ship澶у皬涓嶆纭� handleVideoMaxSize(file) { - this.$Notice.warning({ - title: "瓒呰繃鏂囦欢澶у皬闄愬埗", - desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB", - }); + // this.$Notice.warning({ + // title: "瓒呰繃鏂囦欢澶у皬闄愬埗", + // desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB", + // }); }, onAddSku(index) { if (!this.newSkuValues[index]) { @@ -1178,6 +1233,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]; @@ -1234,7 +1290,8 @@ this.renderGoodsDetailSku(response.result.skuList); /** 鏌ヨ鍝佺墝鍒楄〃 */ - this.getGoodsBrandList(); + //todo 绉婚櫎鍝佺墝姒傚康 + // this.getGoodsBrandList(); /** 鏌ヨ搴楅摵鍟嗗搧鍒嗙被 */ this.GET_ShopGoodsLabel(); @@ -1254,7 +1311,7 @@ this.firstData.goodsType && (this.baseInfoForm.goodsType = this.firstData.goodsType); /** 鏌ヨ鍟嗗搧鍙傛暟 */ - this.GET_GoodsParams(); + // this.GET_GoodsParams(); }, // 娓叉煋sku鏁版嵁 renderGoodsDetailSku(skuList) { @@ -1671,6 +1728,7 @@ * 娓叉煋table鎵�闇�瑕佺殑column 鍜� data */ renderTableData(skus) { + console.log('-------------->閿�鍞被鍨�',skus) this.skuTableColumn = []; let pushData = []; // 娓叉煋澶撮儴 @@ -1695,7 +1753,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({ @@ -1924,14 +1990,19 @@ this.baseInfoForm.goodsId = this.goodsId; let submit = JSON.parse(JSON.stringify(this.baseInfoForm)); console.log('----------------->鎻愪氦',submit); - // if ( - // (submit.goodsGalleryFiles && - // submit.goodsGalleryFiles.length <= 0) && !submit.goodsVideo - // ) { - // this.submitLoading = false; - // this.$Message.error("璇蜂笂浼犲晢鍝佸浘鐗囨垨鑰呰棰�"); - // 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 = ""; @@ -2224,12 +2295,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(); // 鑾峰彇褰撳墠搴楅摵鍒嗙被 -- Gitblit v1.8.0