From 616458206a9f9f146554188ec55b9a35cc1f9a81 Mon Sep 17 00:00:00 2001
From: peng <peng.com>
Date: 星期三, 10 九月 2025 19:12:58 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 seller/src/views/goods/goods-seller/goodsOperationSec.vue |  133 +++++++++++++++++++++++++++++++++++---------
 1 files changed, 105 insertions(+), 28 deletions(-)

diff --git a/seller/src/views/goods/goods-seller/goodsOperationSec.vue b/seller/src/views/goods/goods-seller/goodsOperationSec.vue
index dbbdb51..0b8e8b0 100644
--- a/seller/src/views/goods/goods-seller/goodsOperationSec.vue
+++ b/seller/src/views/goods/goods-seller/goodsOperationSec.vue
@@ -23,6 +23,15 @@
             <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>
@@ -48,13 +57,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">
@@ -155,7 +173,7 @@
               <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']"
@@ -252,12 +270,13 @@
                                       </template>
                                     </div>
                                   </vuedraggable>
-<!--                                  todo 3-->
-                                  <Upload ref="uploadSku" action="-"
+                                  <!--                                  todo 3-->
+                                  <Upload ref="uploadSku" :action="uploadFileUrl"
                                           v-if="val.images < 1"
                                           :before-upload="handleBeforeUpload"
                                           :format="['jpg', 'jpeg', 'png', 'webp']"
                                           :max-size="2048"
+                                          :headers="{ ...accessToken }"
                                           :on-error="() => { $Spin.hide(); }"
                                           :on-exceeded-size="handleMaxSize"
                                           :on-format-error="handleFormatError"
@@ -309,9 +328,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="璇疯緭鍏ラ噸閲�"
@@ -383,7 +402,7 @@
             </div>
             <FormItem class="form-item-view-el" label="PC鍟嗗搧鎻忚堪" prop="intro" style="width: 100%">
               <editor
-                :show-upload="false"
+                :show-upload="true"
                 ref="editor"
                 v-model="baseInfoForm.intro"
                 height="800px"
@@ -397,7 +416,7 @@
 
             <FormItem class="form-item-view-el" label="绉诲姩绔弿杩�" prop="skuList" style="width: 100%">
               <editor
-                :show-upload="false"
+                :show-upload="true"
                 ref="introEditor"
                 v-model="baseInfoForm.mobileIntro"
                 height="800px"
@@ -541,6 +560,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 {
@@ -677,6 +697,11 @@
         categoryName: [],
         goodsVideo: "",
         showGoodsVideo: "",
+        // 棰勫敭鏃堕棿
+        preSaleTime:[],
+        preSaleBeginDate:'',
+        preSaleEndDate:'',
+        commission:5
       },
       /** 琛ㄦ牸澶� */
       skuTableColumn: [],
@@ -758,6 +783,32 @@
     }
   },
   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)
@@ -1066,6 +1117,16 @@
       }
     },
     // sku鍥剧墖涓婁紶鍓嶉挬瀛�
+  // 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 &&
@@ -1185,6 +1246,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];
@@ -1408,8 +1470,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();// 璋冪敤璇ユ柟娉曚細瑙﹀彂缁勪欢鐨勯噸鏂版覆鏌�
@@ -1464,8 +1526,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();// 璋冪敤璇ユ柟娉曚細瑙﹀彂缁勪欢鐨勯噸鏂版覆鏌�
@@ -1652,6 +1714,7 @@
         this.baseInfoForm.regeneratorSkuFlag = true;
         this.newSkuValues[$index] = "";
       }
+      this.renderTableData(this.skuTableData);
     },
     handleClearSku() {
       this.skuInfo = [];
@@ -1679,6 +1742,7 @@
      * 娓叉煋table鎵�闇�瑕佺殑column 鍜� data
      */
     renderTableData(skus) {
+      console.log('-------------->閿�鍞被鍨�', skus)
       this.skuTableColumn = [];
       let pushData = [];
       // 娓叉煋澶撮儴
@@ -1703,7 +1767,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({
@@ -1759,6 +1831,7 @@
      * array spec鏁版嵁
      */
     specIterator(result, spec, skus) {
+
       let table = result;
       if (spec.length > 0) {
         //娓呴櫎褰撳墠寰幆鐨勫垎缁�
@@ -1800,6 +1873,11 @@
       } else {
         this.skuIndex++;
       }
+
+      table.forEach((item,index) =>{
+        console.log("鍏冪礌:" + item +"index:" + (index +1))
+          item.sn = index + 1;
+      })
       return table;
     },
     /** 鏍规嵁鍒嗙被id鑾峰彇绯荤粺璁剧疆瑙勬牸淇℃伅*/
@@ -1857,6 +1935,7 @@
           return;
         }
       }
+
       // else if (item === "alertQuantity") {
       //   if (
       //     !/^[0-9]\d*$/.test(row[item]) ||
@@ -1931,20 +2010,20 @@
             }
             this.baseInfoForm.goodsId = this.goodsId;
             let submit = JSON.parse(JSON.stringify(this.baseInfoForm));
-            console.log('----------------->鎻愪氦',submit);
+            console.log('----------------->鎻愪氦', submit);
             if (
               submit.goodsGalleryFiles &&
-                submit.goodsGalleryFiles.length <= 0
+              submit.goodsGalleryFiles.length <= 0
             ) {
               this.submitLoading = false;
               this.$Message.error("璇蜂笂浼犲晢鍝佸浘鐗�");
               return;
             }
-            if (!submit.goodsVideo){
-              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 = "";
@@ -2109,16 +2188,16 @@
           this.$Message.error("鍒锋柊澶辫触锛岃閲嶈瘯");
         }
       }).catch(reason => {
-        console.log("鑾峰彇妯℃澘澶辫触",reason)
+        console.log("鑾峰彇妯℃澘澶辫触", reason)
       });
     },
-    removeVideo(){
+    removeVideo() {
       this.baseInfoForm.showGoodsVideo = null;
       this.baseInfoForm.goodsVideo = null;
     },
     // todo 鏂囦欢涓婁紶
     async upLoadImg(file) {
-      console.log(file,this.count++);
+      console.log(file, this.count++);
       if (this.listImages.length >= 5) {
         this.$Message.error("鍥剧墖涓婁紶涓嶈兘瓒呰繃5涓�");
         return;
@@ -2237,12 +2316,10 @@
         this.baseInfoForm.goodsType = this.firstData.goodsType;
 
 
-
-
-        if (this.categoryId!=null && this.categoryId!=='') {
+        if (this.categoryId != null && this.categoryId !== '') {
           /** 鑾峰彇璇ュ晢鍩庡垎绫讳笅 鍟嗗搧鍙傛暟淇℃伅 */
           this.GET_GoodsParams();
-          console.log('鍒嗙被id------------------>',this.categoryId);
+          console.log('鍒嗙被id------------------>', this.categoryId);
           /** 鏌ヨ鍒嗙被缁戝畾鐨勮鏍间俊鎭� */
           this.Get_SkuInfoByCategory(this.categoryId);
           /** 鏌ヨ鍝佺墝鍒楄〃 */

--
Gitblit v1.8.0