From 767e62b59c0019926b5e611497b5516aa52bebf3 Mon Sep 17 00:00:00 2001
From: zxl <763096477@qq.com>
Date: 星期二, 14 十月 2025 14:12:14 +0800
Subject: [PATCH] 存定制商品回显问题
---
seller/src/views/goods/goods-seller/goodsOperationSec.vue | 1134 ++++++++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 961 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..4b5e0cb 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,44 @@
<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.goodsType == 'PHYSICAL_GOODS'" class="form-item-view-el" label="鍟嗗搧绫诲瀷">
+ <Select
+ v-model="baseInfoForm.customizeFlag"
+ clearable
+ style="width: 160px"
+ @on-clear="handleGoodsType"
+ @on-change="handleGoodsType"
+ >
+ <Option value="CUSTOMIZE">瀹氬埗鍟嗗搧</option>
+ </select>
</FormItem>
<FormItem v-if="baseInfoForm.salesModel == 'WHOLESALE'" class="form-item-view-el" label="閿�鍞鍒�"
prop="wholesaleRule">
@@ -100,11 +140,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 +159,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 +179,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 +220,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 +234,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 +243,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 +271,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 +287,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 +319,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 +354,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="璇疯緭鍏ラ噸閲�"
@@ -306,6 +372,23 @@
}}</span>
</Input>
</template>
+ <template slot="COUPON" slot-scope="{ row }">
+ <div @click="showCouponListModal($event,row)">
+ <Input v-model="row.couponName" clearable placeholder="閫夋嫨浼樻儬鍔�"
+ >
+ </Input>
+ </div>
+
+ </template>
+ <template slot="CUSTOMIZE" slot-scope="{ row }">
+ <div @click="showTemplateListModal($event,row)">
+ <Input v-model="row.customizeTemplateName" clearable placeholder="閫夋嫨瀹氬埗妯℃澘"
+ >
+ </Input>
+ </div>
+
+ </template>
+
<template slot="cost" slot-scope="{ row }">
<Input v-model="row.cost" clearable placeholder="璇疯緭鍏ユ垚鏈环"
@on-change="updateSkuTable(row, 'cost')">
@@ -362,6 +445,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 +459,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,6 +548,82 @@
<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="showTemplateModal" 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="showTemplate"
+ placeholder="璇风偣鍑婚�夋嫨琛ㄦ牸鍐呮ā鏉�"
+ ></Input>
+ </div>
+ <Table
+ :loading="templateLoading"
+ border
+ :columns="templateColumns"
+ :data="templateData"
+ ref="table"
+ @on-current-change="templateHandleRowClick"
+ highlight-row
+ ></Table>
+ <Row type="flex" justify="center" class="mt_10">
+ <Page
+ :current="templateSearchForm.pageNumber"
+ :total="templateTotal"
+ :page-size="templateSearchForm.pageSize"
+ @on-change="templateChangePage"
+ @on-page-size-change="templateChangePageSize"
+ :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,13 +634,38 @@
<!--<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>
</template>
<script>
+import * as API_GOODS_CUSTOMEIZE from "@/api/goods-customeize-template"
import * as API_GOODS from "@/api/goods";
import * as API_Shop from "@/api/shops";
import cloneObj from "@/utils/index";
@@ -491,7 +677,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 +714,142 @@
}, 1000);
};
return {
+ showTemplateModal:false,
+ showTemplate:'',
+ templateSearchForm: {
+ // 鎼滅储妗嗗垵濮嬪寲瀵硅薄
+ pageNumber: 1, // 褰撳墠椤垫暟
+ pageSize: 10, // 椤甸潰澶у皬
+ status:"ENABLE"
+ },
+ templateLoading:false,
+ templateColumns:[
+ {
+ title: "妯℃澘鍚嶇О",
+ key: "templateName",
+ tooltip: true,
+ },
+ {
+ title: '鍚敤鐘舵��',
+ key: 'status',
+ width: 120,
+ align: 'center',
+ render: (h, params) => {
+ const status = params.row.status;
+ const color = status === 'ENABLE' ? 'success' : status === 'DISABLE' ? 'default' : 'warning';
+ const text = status === 'ENABLE' ? '鍚敤' : status === 'DISABLE' ? '鏈惎鐢�' : '鏈煡';
+
+ return h('Tag', {
+ props: {
+ color: color
+ }
+ }, text);
+ }
+ },
+ ],
+ templateData:[],
+ templateTotal:0,
+
+ 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 +921,8 @@
],
/** 鍙戝竷鍟嗗搧鍩烘湰鍙傛暟 */
baseInfoForm: {
+ customizeFlag:"",
+ virtualGoodsType:"",
salesModel: "RETAIL",
/** 鍟嗗搧鐩稿唽鍒楄〃 */
goodsGalleryFiles: [],
@@ -625,6 +954,13 @@
/** 鍟嗗搧鍒嗙被涓枃鍚� */
categoryName: [],
goodsVideo: "",
+ showGoodsVideo: "",
+ // 棰勫敭鏃堕棿
+ preSaleTime:[],
+ preSaleBeginDate:'',
+ preSaleEndDate:'',
+ commission:5,
+
},
/** 琛ㄦ牸澶� */
skuTableColumn: [],
@@ -682,6 +1018,10 @@
"price",
"weight",
"quantity",
+ "couponName",
+ "couponId",
+ "customizeTemplateName",
+ "customizetemplateId",
// "alertQuantity",
"specId",
"specValueId",
@@ -690,6 +1030,7 @@
selectedFormBtnName: "", // 鐐瑰嚮鍥剧墖缁戝畾form
selectedImage: [],
lastEditSkuValue: '',
+
};
},
watch: {
@@ -698,12 +1039,136 @@
if (val) {
this.initVideo();
}
+ },
+ showListImages(newValue){
+ this.baseInfoForm.goodsGalleryFiles = newValue.map(item => {
+ return item.split('/').slice(-2).join('/')
+ })
}
},
methods: {
+ showTemplateListModal(event,row){
+ if (event.target.classList.contains('ivu-icon-ios-close-circle') ||
+ event.target.closest('.ivu-input-wrapper-clear-icon')) {
+ return; // 濡傛灉鏄竻闄ゆ寜閽紝涓嶆墽琛屽悗缁�昏緫
+ }
+ console.log(row)
+ console.log("瑙﹀彂鐐瑰嚮")
+ this.showTemplateModal = true;
+ this.showTemplate='';
+ this.getTemplateDataList()
+ this.currentRow = row;
+ },
+ showCouponListModal(event,row){
+ if (event.target.classList.contains('ivu-icon-ios-close-circle') ||
+ event.target.closest('.ivu-input-wrapper-clear-icon')) {
+ return; // 濡傛灉鏄竻闄ゆ寜閽紝涓嶆墽琛屽悗缁�昏緫
+ }
+ this.showCouponModal = true;
+ this.showCoupon ='';
+ this.getCouponDataList()
+ this.currentRow = row;
+ },
+ handleGoodsType(){
+ //閲嶆柊娓叉煋
+ this.renderTableData(this.skuTableData);
+ },
+ getTemplateDataList() {
+ // 鑾峰彇鏁版嵁
+ this.templateLoading = true;
+ API_GOODS_CUSTOMEIZE.getPage(this.templateSearchForm).then((res) => {
+ this.templateLoading = false;
+ if (res.code === 200) {
+ this.templateData = res.data;
+ this.templateTotal = res.total;
+ }
+ });
+ this.templateLoading = false;
+ },
+ 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;
+ },
+ templateHandleRowClick(currentRow ,oldCurrentRow){
+ this.showTemplate = currentRow.templateName;
+ this.$set(this.currentRow, 'customizeTemplateName', currentRow.templateName);
+ this.currentRow.customizeTemplateId = currentRow.id
+ console.log(this.currentRow)
+ this.updateSkuTable(this.currentRow,"customizeTemplateName")
+ this.updateSkuTable(this.currentRow,"customizeTemplateId")
+ console.log(this.skuTableData)
+ },
+
+ // 澶勭悊琛岀偣鍑讳簨浠�
+ 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)
+ },
+ templateChangePage(v){
+ this.templateSearchForm.pageNumber = v;
+ this.getTemplateDataList();
+ },
+ templateChangePageSize(v){
+ this.templateSearchForm.pageNumber = 1;
+ this.templateSearchForm.pageSize = v;
+ this.getTemplateDataList();
+ },
+ 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 +1189,10 @@
},
// ship澶у皬涓嶆纭�
handleVideoMaxSize(file) {
- this.$Notice.warning({
- title: "瓒呰繃鏂囦欢澶у皬闄愬埗",
- desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB",
- });
+ // this.$Notice.warning({
+ // title: "瓒呰繃鏂囦欢澶у皬闄愬埗",
+ // desc: "瑙嗛澶у皬涓嶈兘瓒呰繃10MB",
+ // });
},
onAddSku(index) {
if (!this.newSkuValues[index]) {
@@ -865,7 +1330,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 +1472,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 +1601,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 +1613,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 +1658,8 @@
this.renderGoodsDetailSku(response.result.skuList);
/** 鏌ヨ鍝佺墝鍒楄〃 */
- this.getGoodsBrandList();
+ //todo 绉婚櫎鍝佺墝姒傚康
+ // this.getGoodsBrandList();
/** 鏌ヨ搴楅摵鍟嗗搧鍒嗙被 */
this.GET_ShopGoodsLabel();
@@ -1125,7 +1679,7 @@
this.firstData.goodsType &&
(this.baseInfoForm.goodsType = this.firstData.goodsType);
/** 鏌ヨ鍟嗗搧鍙傛暟 */
- this.GET_GoodsParams();
+ // this.GET_GoodsParams();
},
// 娓叉煋sku鏁版嵁
renderGoodsDetailSku(skuList) {
@@ -1139,6 +1693,10 @@
// cost: e.cost,
quantity: e.quantity,
// alertQuantity: e.alertQuantity,
+ couponName:e.couponName,
+ couponId:e.couponId,
+ customizeTemplateName:e.customizeTemplateName,
+ customizeTemplateId:e.customizeTemplateId,
weight: e.weight,
};
if (e.goodsGalleryList && e.goodsGalleryList.length >= 1) {
@@ -1271,8 +1829,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 +1885,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 +2048,10 @@
// find.cost && (find.cost = "");
find.quantity && (find.quantity = "");
// find.alertQuantity && (find.alertQuantity = "");
+ find.couponName && (find.couponName = "");
+ find.couponId && (find.couponId = "");
+ find.customizeTemplateName && (find.customizeTemplateName = "");
+ find.customizeTemplateId && (find.customizeTemplateId ="");
find.weight && (find.weight = "");
this.skuTableData.splice(this.skuTableData.length, 0, find);
@@ -1504,6 +2066,10 @@
find.sn && (find.sn = "");
// find.cost && (find.cost = "");
find.quantity && (find.quantity = "");
+ find.couponName && (find.couponName = "");
+ find.couponId && (find.couponId = "");
+ find.customizeTemplateName && (find.customizeTemplateName = "");
+ find.customizeTemplateId && (find.customizeTemplateId ="");
// find.alertQuantity && (find.alertQuantity = "");
find.weight && (find.weight = "");
@@ -1515,6 +2081,7 @@
this.baseInfoForm.regeneratorSkuFlag = true;
this.newSkuValues[$index] = "";
}
+ this.renderTableData(this.skuTableData);
},
handleClearSku() {
this.skuInfo = [];
@@ -1542,6 +2109,7 @@
* 娓叉煋table鎵�闇�瑕佺殑column 鍜� data
*/
renderTableData(skus) {
+ console.log('-------------->閿�鍞被鍨�', skus)
this.skuTableColumn = [];
let pushData = [];
// 娓叉煋澶撮儴
@@ -1566,7 +2134,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({
@@ -1586,6 +2162,21 @@
slot: "weight",
});
}
+ if (this.baseInfoForm.goodsType ==="VIRTUAL_GOODS" && this.baseInfoForm.virtualGoodsType==="COUPON"){
+ pushData.push(
+ {
+ title:"浼樻儬鍔�",
+ slot:"COUPON"
+ }
+ )
+ }
+ if(this.baseInfoForm.goodsType==="PHYSICAL_GOODS" &&this.baseInfoForm.customizeFlag==="CUSTOMIZE"){
+ pushData.push({
+ title:"瀹氬埗鍟嗗搧妯℃澘",
+ slot:"CUSTOMIZE"
+ })
+ }
+
pushData.push(
{
title: "搴撳瓨",
@@ -1622,6 +2213,7 @@
* array spec鏁版嵁
*/
specIterator(result, spec, skus) {
+
let table = result;
if (spec.length > 0) {
//娓呴櫎褰撳墠寰幆鐨勫垎缁�
@@ -1637,6 +2229,8 @@
id: skus[index].id,
sn: skus[index].sn,
quantity: skus[index].quantity,
+ coupon: skus[index].coupon,
+ customize: skus[index].customize,
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 +2257,11 @@
} else {
this.skuIndex++;
}
+
+ table.forEach((item,index) =>{
+ console.log("鍏冪礌:" + item +"index:" + (index +1))
+ item.sn = index + 1;
+ })
return table;
},
/** 鏍规嵁鍒嗙被id鑾峰彇绯荤粺璁剧疆瑙勬牸淇℃伅*/
@@ -1720,6 +2319,7 @@
return;
}
}
+
// else if (item === "alertQuantity") {
// if (
// !/^[0-9]\d*$/.test(row[item]) ||
@@ -1780,124 +2380,165 @@
},
/** 娣诲姞鍟嗗搧 **/
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;
+ console.log(this.skuTableData)
+ 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:this.baseInfoForm.virtualGoodsType === "COUPON" ? sku.couponName:null,
+ couponId:this.baseInfoForm.virtualGoodsType === "COUPON" ? sku.couponId:null,
+ customizeTemplateName:this.baseInfoForm.customizeFlag === "CUSTOMIZE" ? sku.customizeTemplateName : null,
+ customizeTemplateId:this.baseInfoForm.customizeFlag === "CUSTOMIZE" ? sku.customizeTemplateId :null,
+ // alertQuantity: sku.alertQuantity,
+ sn: sku.sn,
+ images: [],
+ };
+ if(this.baseInfoForm.goodsType === "VIRTUAL_GOODS" &&
+ this.baseInfoForm.virtualGoodsType === "COUPON"
+ ){
+ 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.baseInfoForm.goodsType === "PHYSICAL_GOODS" &&
+ this.baseInfoForm.customizeFlag === "CUSTOMIZE"){
+ if (sku.customizeTemplateId === null || sku.customizeTemplateId === undefined){
+ this.$Message.error("璇烽�夋嫨瀹氬埗妯℃澘")
+ return;
+ }
+ if (sku.customizeTemplateName === null || sku.customizeTemplateName === undefined){
+ this.$Message.error("璇烽�夋嫨瀹氬埗妯℃澘")
+ return;
+ }
+ }
+ 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) {
+ console.log(this.submit)
+ 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,10 +2602,113 @@
} 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 = {
accessToken: this.getStore("accessToken"),
};
@@ -1986,14 +2730,17 @@
this.categoryId = cateId[2];
this.baseInfoForm.categoryPath = cateId.toString();
this.baseInfoForm.goodsType = this.firstData.goodsType;
+ console.log(this.baseInfoForm)
-
- /** 鑾峰彇璇ュ晢鍩庡垎绫讳笅 鍟嗗搧鍙傛暟淇℃伅 */
- 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 +2791,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