文件

1168 行
53 KiB
HTML

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
<style>
#goodsIndex {
background: #fff;
padding: 0 20px;
overflow: auto;
color: #666;
}
.btn-common {
line-height: 32px;
height: 32px;
cursor: pointer;
border-radius: 4px;
display: flex;
align-items: center;
justify-content: center;
}
.btn-box {
display: flex;
align-items: center;
margin-bottom: 20px;
justify-content: space-between;
}
.refresh-btn {
width: 32px;
border: 1px solid #E6E6E6;
font-size: 14px;
margin-right: 20px;
}
.create-goods,
.add-params,
.add-level1-sku {
width: 98px;
background: #7536D0;
color: #fff;
}
.create-goods span,
.add-params span,
.add-level1-sku span {
margin-left: 8px;
}
.goods-name {
display: flex;
align-items: center;
}
.goods-img {
width: 34px;
height: 34px;
margin-right: 10px;
}
.el-table,
.el-table thead,
.el-table th {
color: #444;
font-weight: 500 !important;
}
/* el-dialog */
.el-dialog {
width: 800px;
height: 70vh;
margin: 15vh auto;
}
.goods-dialog-big {
width: 100vw;
height: 100vh;
margin: 0 auto;
margin-top: 0 !important;
}
.goods-dialog-big .good-detail-body {
height: calc(100vh - 200px);
overflow: auto;
}
.el-dialog__header {
padding: 16px 20px 10px;
}
.el-dialog__title {
font-size: 14px;
color: #444;
}
.el-dialog__headerbtn {
font-size: 14px;
color: #999;
}
.el-dialog__body {
padding: 0;
}
.el-step.is-simple .el-step__title {
font-size: 14px;
font-weight: 600;
}
.el-step.is-simple .el-step__icon {
display: none;
}
.el-step__title.is-finish {
color: #7438D5;
}
.el-step__title.is-process {
color: #666;
font-weight: 500;
}
.el-step__title.is-wait {
color: #999;
}
.el-form-item {
margin-bottom: 20px;
}
.good-detail-body {
padding: 20px 25px 10px 5px;
height: calc(100vh - 120px);
overflow: auto;
}
.good-detail-body::-webkit-scrollbar {
width: 6px;
}
.good-detail-body::-webkit-scrollbar-thumb {
width: 6px;
background: #e6e6e6;
height: 20px;
border-radius: 3px;
}
.goods-type {
width: 162px;
height: 58px;
border-radius: 4px;
position: relative;
margin-right: 20px;
}
.goods-type-img {
border-radius: 4px;
}
.goods-type-selected {
width: 16px;
height: 16px;
line-height: 16px;
text-align: center;
border-radius: 50%;
background: #7438D5;
color: #fff;
font-weight: 600;
font-size: 14px;
display: none;
position: absolute;
top: -8px;
right: -8px;
}
.el-input__inner,
.el-input__icon {
line-height: 34px;
height: 34px;
}
.display-flex {
display: flex;
align-items: center;
}
.add-img {
width: 60px;
height: 60px;
border: 1px dashed #E6E6E6;
border-radius: 4px;
justify-content: center;
margin-right: 30px;
margin-bottom: 10px;
}
label {
margin-bottom: 0;
}
.msg-tip {
margin-left: 30px;
color: #999;
}
.dialog-footer {
display: flex;
justify-content: flex-end;
padding: 0 30px;
}
.back-btn {
width: 88px;
height: 36px;
line-height: 36px;
text-align: center;
margin-right: 20px;
color: #999;
cursor: pointer;
}
.sub-btn {
width: 88px;
height: 36px;
line-height: 36px;
text-align: center;
background: #7438D5;
font-size: 14px;
color: #fff;
cursor: pointer;
}
.goods-detail-table {
border: 1px solid #E6E6E6;
border-bottom: none;
margin-bottom: 20px;
}
.goods-detail-item {
border-bottom: 1px solid #E6E6E6;
}
.goods-detail-item>div {
padding: 5px 10px;
}
.goods-detail-name {
width: 120px;
}
.goods-detail-msg {
width: 378px;
}
.goods-detail-del,
.goods-detail-move {
width: 50px;
display: flex;
justify-content: center;
}
.goods-detail-del-icon {
color: #ff5959;
}
.del-image-btn {
position: absolute;
width: 14px;
height: 14px;
line-height: 14px;
text-align: center;
border-radius: 50%;
font-size: 12px;
font-weight: 600;
background: #7438D5;
color: #fff;
top: -7px;
right: -7px;
}
.goods-images {
width: 60px;
height: 60px;
border-radius: 4px;
position: relative;
border: 1px solid #7438D5;
margin-right: 10px;
margin-bottom: 10px;
}
.label-auto {
width: 100%;
height: 100%;
}
.el-radio__input.is-checked+.el-radio__label,
.el-tabs__item.is-active,
.el-tabs__item:hover,
.el-pager li.active,
.el-cascader-node.in-active-path,
.el-cascader-node.is-active,
.el-cascader-node.is-selectable.in-checked-path,
.el-checkbox__input.is-checked+.el-checkbox__label,
.el-select-dropdown.is-multiple .el-select-dropdown__item.selected {
color: #7438D5;
}
.el-radio__input.is-checked .el-radio__inner,
.el-tabs__active-bar,
.el-checkbox__input.is-checked .el-checkbox__inner,
.el-checkbox__input.is-indeterminate .el-checkbox__inner {
background: #7438D5;
border-color: #7438D5;
}
.add-sku-box {
padding: 10px 8px;
border: 1px solid #E6E6E6;
}
.sku-item {
background: #F9F9F9;
height: 50px;
padding: 10px;
}
.sku-item-level {
height: auto;
}
.sku-item-level2 {
height: auto;
padding: 0;
width: 600px;
background: #fff;
display: flex;
flex-wrap: wrap;
line-height: 30px;
}
.sku-children {
margin-right: 18px;
position: relative;
width: 120px;
margin-bottom: 10px;
}
.sku-children-del {
width: 16px;
height: 16px;
border-radius: 50%;
position: absolute;
top: -8px;
right: -8px;
background: #7536D0;
color: #fff;
font-weight: 600;
justify-content: center;
}
.sku-img {
width: 34px;
height: 34px;
border-radius: 4px;
position: relative;
}
.sku-img i {
width: 14px;
height: 14px;
border-radius: 50%;
position: absolute;
top: -7px;
right: -7px;
background: #7536D0;
color: #fff;
font-weight: 600;
justify-content: center;
font-size: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.table-box {
border: 1px solid #E6E6E6;
margin: 20px 0;
overflow-x: auto;
}
.table-box .table {
table-layout: auto;
margin: 0;
}
.table-box .table td,
.table-box .table th {
white-space: nowrap;
min-width: 80px;
}
.table-upload-img {
width: 34px;
height: 34px;
color: #E6E6E6;
border-radius: 2px;
border: 1px solid #E6E6E6;
display: flex;
justify-content: center;
align-items: center;
}
.all-edit-img {
width: 14px;
height: 14px;
margin-left: 6px;
}
.sku-status {
cursor: pointer;
}
.el-dialog__body .table {
font-size: 12px;
margin-bottom: 0;
}
.th-center {
height: 34px;
line-height: 34px;
}
.w-e-toolbar {
display: flex;
flex-wrap: wrap;
}
.el-cascader,
.el-select {
width: 100%;
}
.el-popover .el-input {
margin-bottom: 10px;
}
.el-button--primary,
.el-button--primary:hover {
color: #FFF;
background-color: #7536D0;
border-color: #7536D0;
}
.el-popover .el-button--text {
color: #7536D0;
}
.color-999 {
color: #999;
}
.popover-container>p {
margin-bottom: 10px;
}
.question-tip {
font-size: 24px;
color: #ccc;
margin-left: 18px;
}
.el-radio {
margin-right: 12px;
}
.flex-1 {
flex: 1;
}
.create-template {
margin-left: 44px;
cursor: pointer;
color: #7536D0;
}
.el-tabs__content {
height: 190px;
overflow: auto;
}
.category-inputs input,
.category-inputs:focus input,
.category-inputs:hover input {
background: none;
border: none;
border-color: rgba(0, 0, 0, 0) !important;
}
.nice-validator .el-input__inner {
vertical-align: baseline !important;
}
.table-stock-warning-switch {
line-height: 32px;
height: 32px;
margin-right: 8px;
}
.table-input {
width: 80px;
}
.stock-warning-switch-tip {
margin-left: 30px;
color: #999;
font-size: 12px;
}
.table-stock-warning-switch-tip {
margin-left: 8px;
}
[v-cloak] {
display: none
}
</style>
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/Sortable.min.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/vuedraggable.js"></script>
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
<div id="goodsDetail" v-cloak style="height: calc(100vh - 63px);">
<div class="preview-body">
<el-steps :active="stepActive" simple>
<el-step title="1、基础信息"></el-step>
<el-step title="2、规格/价格"></el-step>
<el-step title="3、商品详情"></el-step>
</el-steps>
<div class="good-detail-body">
<el-form :model="goodsDetail" :rules="rules" ref="goodsDetail" label-width="110px" class="demo-goodsDetail">
<div v-if="stepActive==1">
<el-form-item label="商品形式:" prop="type">
<div class="display-flex">
<div v-if="goodsDetail.type=='normal'" class="goods-type" @click="changeGoodsType('normal')"
:style="{border:goodsDetail.type=='normal'?'1px solid #7438D5':'1px solid #E6E6E6'}">
<img class="label-auto goods-type-img" src="/assets/addons/shopro/img/goods/entity.png">
<div class="goods-type-selected"
:style="{display:goodsDetail.type=='normal'?'block':''}">
<img src="/assets/addons/shopro/img/goods/selected.png">
</div>
</div>
<div v-if="goodsDetail.type=='virtual'" class="goods-type"
@click="changeGoodsType('virtual')"
:style="{border:goodsDetail.type=='virtual'?'1px solid #7438D5':'1px solid #E6E6E6'}">
<img class="label-auto goods-type-img"
src="/assets/addons/shopro/img/goods/virtual.png">
<div class="goods-type-selected"
:style="{display:goodsDetail.type=='virtual'?'block':''}">
<img src="/assets/addons/shopro/img/goods/selected.png">
</div>
</div>
<!-- <div v-if="goodsDetail.type=='robbuy'" class="goods-type"-->
<!-- @click="changeGoodsType('robbuy')"-->
<!-- :style="{border:goodsDetail.type=='robbuy'?'1px solid #7438D5':'1px solid #E6E6E6'}">-->
<!-- <img class="label-auto goods-type-img"-->
<!-- src="/assets/addons/shopro/img/goods/robbuy.png">-->
<!-- <div class="goods-type-selected"-->
<!-- :style="{display:goodsDetail.type=='robbuy'?'block':''}">-->
<!-- <img src="/assets/addons/shopro/img/goods/selected.png">-->
<!-- </div>-->
<!-- </div>-->
</div>
</el-form-item>
<el-form-item label="商品标题:" prop="title">
<el-input type="input" v-model="goodsDetail.title" size="small"></el-input>
</el-form-item>
<el-form-item label="副标题:" prop="subtitle">
<el-input type="input" v-model="goodsDetail.subtitle" size="small"></el-input>
</el-form-item>
<el-form-item label="商品状态:" prop="status">
<el-radio-group v-model="goodsDetail.status">
<el-radio label="up">上架</el-radio>
<el-radio label="hidden">隐藏</el-radio>
<el-radio label="down">下架</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="排序:" prop="weigh">
<div class="display-flex">
<el-input type="number" v-model="goodsDetail.weigh" style="width:300px;" size="small">
</el-input>
<div class="msg-tip">排序的大小默认按照从大到小排列</div>
</div>
</el-form-item>
<el-form-item label="商品主图:" prop="image">
<div class="display-flex">
<div class="goods-image-box display-flex" v-if="goodsDetail.image">
<div class="goods-images" style="margin-right: 0;">
<img class="label-auto" :src="Fast.api.cdnurl(goodsDetail.image)"
style="border-radius: 4px;">
<div class="del-image-btn" @click="delImg('image',null)">
<img class="label-auto" src="/assets/addons/shopro/img/goods/close.png">
</div>
</div>
</div>
<div class="add-img display-flex" @click="addImg('image',null,false)"
v-if="!goodsDetail.image">
<i class="el-icon-plus"></i>
</div>
<div class="msg-tip">作用于商城列表、分享头图;建议尺寸:750*750像素</div>
</div>
</el-form-item>
<el-form-item label="轮播图:" prop="images">
<div class="display-flex" style="flex-wrap: wrap;">
<div class="goods-image-box display-flex" style="flex-wrap: wrap;"
v-if="timeData.images_arr">
<draggable class="display-flex" :list="timeData.images_arr" v-bind="$attrs"
:options="{animation:500}" @end="imagesDrag">
<div class="goods-images" v-for="(it,index) in timeData.images_arr">
<img class="label-auto" :src="Fast.api.cdnurl(it)" style="border-radius: 4px;">
<div class="del-image-btn" @click="delImg('images',index)">
<img class="label-auto" src="/assets/addons/shopro/img/goods/close.png">
</div>
</div>
</draggable>
</div>
<div class="add-img display-flex" @click="addImg('images',null,true)"
v-if="timeData.images_arr.length<9">
<i class="el-icon-plus"></i>
</div>
<div class="msg-tip" style="margin-left: 0;">作用于商品详情顶部轮播,轮播图可以拖拽图片调整顺序</div>
</div>
</el-form-item>
<el-form-item label="商品分类:" prop="category_ids">
<div class="display-flex">
<el-popover placement="bottom-start" width="600" v-model="visible">
<div>
<el-tabs v-if="categoryOptions && categoryOptions.length>0" v-model="categoryTab">
<el-tab-pane v-for="tab in categoryOptions" :label="tab.name" :name="tab.id">
<el-cascader-panel v-model="category_ids_all[categoryTab]"
:options="tab.children" :props="{ multiple: true, checkStrictly: true ,value:'id',label:'name',
children:'children',emitPath: false}" clearable
@change="changeCategoryIds">
</el-cascader-panel>
</el-tab-pane>
</el-tabs>
<div style="width: 100%;text-align: center;"
v-if="categoryOptions && categoryOptions.length==0">没有分类,请选择去创建</div>
</div>
<div slot="reference">
<div class="display-flex"
style="flex-wrap: wrap;border: 1px solid #e6e6e6;border-radius: 4px;padding: 0 5px">
<div style="margin-right: 5px;
bottom: 5px;
height: 28px;
line-height: 28px;
padding: 0 5px;
border: 1px solid #e6e6e6;
border-radius: 4px;background: #f9f9f9;" v-for="(tag,index) in selectedcatArr"
:key="tag">
{{tag.label}}
<i class="el-icon-close"
@click.stop="deleteCategoryIds(tag.pid,tag.id,index)"></i>
</div>
<el-input class="category-inputs" size="mini" @focus="getCategoryOptions()"
style="background: none;border: none;width: 120px;height: 34px;"></el-input>
</div>
</div>
</el-popover>
<div style="cursor: pointer;color: #7438D5;margin-left: 30px;flex-shrink: 0;"
@click="createCategory">新建分类
</div>
</div>
</el-form-item>
<el-form-item label="虚增销量:">
<el-input type="number" v-model="goodsDetail.show_sales" size="small"></el-input>
</el-form-item>
<el-form-item label="浏览人数:">
<el-input type="number" v-model="goodsDetail.views" size="small"></el-input>
</el-form-item>
<div v-if="goodsDetail.type == 'normal' || goodsDetail.type == 'robbuy'">
<el-form-item label="配送方式:" prop="dispatch_type">
<div class="display-flex">
<el-checkbox-group v-model="timeData.dispatch_type_arr" @change="dispatchTypeChange">
<el-checkbox :label="item.id" v-for="item in dispatchType"
v-if="(goodsDetail.type =='normal' || goodsDetail.type == 'robbuy') && item.id!='autosend'"
@change="getDispatchTemplateData(item.id)">{{item.name}}
</el-checkbox>
</el-checkbox-group>
<el-popover placement="bottom" width="220" trigger="hover">
<div class="popover-container">
<p>1.选择上门自提配送方式,商品
<br>
购买之后会产生一个核销码。
</p>
<p>2.实体商品一个订单只可核销一次</p>
</div>
<i class="question-tip el-icon-question" slot="reference"></i>
</el-popover>
</div>
</el-form-item>
<el-form-item label="物流快递:" prop="express_ids"
v-if="goodsDetail.dispatch_type && goodsDetail.dispatch_type.indexOf('express')!=-1 && (goodsDetail.type == 'normal' || goodsDetail.type == 'robbuy')">
<div class="display-flex">
<div class="flex-1">
<el-select v-model="goodsDetail.express_ids" placeholder="请选择" size="small">
<el-option v-for="item in dispatchOptions.express" :key="item.id"
:label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
<div class="create-template" @click="createTemplate('express')">
新建模板
</div>
</div>
</el-form-item>
<el-form-item label="商家配送:" prop="store_ids"
v-if="goodsDetail.dispatch_type && goodsDetail.dispatch_type.indexOf('store')!=-1 && goodsDetail.type=='normal'">
<div class="display-flex">
<div class="flex-1">
<el-select v-model="goodsDetail.store_ids" placeholder="请选择" size="small">
<el-option v-for="item in dispatchOptions.store" :key="item.id"
:label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
<div class="create-template" @click="createTemplate('store')">
新建模板
</div>
</div>
</el-form-item>
<el-form-item label="到店/自提:" prop="selfetch_ids"
v-if="goodsDetail.dispatch_type && goodsDetail.dispatch_type.indexOf('selfetch')!=-1">
<div class="display-flex">
<div class="flex-1">
<el-select v-model="goodsDetail.selfetch_ids" placeholder="请选择" size="small">
<el-option v-for="item in dispatchOptions.selfetch" :key="item.id"
:label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
<div class="create-template" @click="createTemplate('selfetch')">
新建模板
</div>
</div>
</el-form-item>
</div>
<el-form-item label="商品类型:" prop="dispatch_type" v-if="goodsDetail.type=='virtual'">
<el-radio-group v-model="goodsDetail.dispatch_type" @change="dispatchTypeChanger">
<el-radio label="selfetch"><span>核销券</span><span class="color-999"
style="margin-left: 6px;">(商品需到店核销)</span>
<el-popover placement="bottom" width="220" trigger="hover">
<div class="popover-container">
<p>1.虚拟商品一个订单可核销多次</p>
</div>
<i class="question-tip el-icon-question" slot="reference"></i>
</el-popover>
</el-radio>
<el-radio label="autosend"><span>其他</span><span class="color-999"
style="margin-left: 6px;">(商品可自动发货)</span></el-radio>
</el-radio-group>
</el-form-item>
<div v-if="goodsDetail.type!='normal'">
<el-form-item label="到店/自提:" prop="selfetch_ids"
v-if="goodsDetail.dispatch_type && goodsDetail.dispatch_type.indexOf('selfetch')!=-1">
<div class="display-flex">
<div class="flex-1">
<el-select v-model="goodsDetail.selfetch_ids" placeholder="请选择" size="small">
<el-option v-for="item in dispatchOptions.selfetch" :key="item.id"
:label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
<div class="create-template" @click="createTemplate('selfetch')">
新建模板
</div>
</div>
</el-form-item>
<el-form-item label="自动发货:" prop="autosend_ids"
v-if="goodsDetail.dispatch_type && goodsDetail.dispatch_type.indexOf('autosend')!=-1">
<div class="display-flex">
<div class="flex-1">
<el-select v-model="goodsDetail.autosend_ids" placeholder="请选择" size="small">
<el-option v-for="item in dispatchOptions.autosend" :key="item.id"
:label="item.name" :value="item.id">
</el-option>
</el-select>
</div>
<div class="create-template" @click="createTemplate('autosend')">
新建模板
</div>
</div>
</el-form-item>
</div>
</div>
<div v-if="stepActive==2">
<el-form-item label="商品规格:" prop="is_sku">
<div class="display-flex">
<el-radio-group v-model="goodsDetail.is_sku">
<el-radio :label="0" v-if="goodsDetail.is_sku==0">单规格</el-radio>
<el-radio :label="1" v-if="goodsDetail.is_sku==1">多规格</el-radio>
</el-radio-group>
<div class="msg-tip" style="margin-left: 20px;">如果商品参与了拼团,秒杀,积分商城等活动,编辑规格可能导致活动规格不可用</div>
</div>
</el-form-item>
<el-form-item label="售卖价格:" prop="price" v-if="goodsDetail.is_sku==1">
<div class="display-flex">
<el-input v-enter-number type="text" v-model="goodsDetail.price" style="width:300px"
size="small">
</el-input>
<div class="msg-tip">商品没有优惠的情况下售卖的价格</div>
</div>
</el-form-item>
<el-form-item label="售卖价格:" prop="price" v-if="goodsDetail.is_sku==0">
<div class="display-flex">
<el-input v-enter-number type="number" v-model="goodsDetail.price" style="width:300px"
size="small">
</el-input>
<div class="msg-tip">商品没有优惠的情况下售卖的价格</div>
</div>
</el-form-item>
<el-form-item label="划线价格:" prop="original_price">
<div class="display-flex">
<el-input v-enter-number type="number" v-model="goodsDetail.original_price"
style="width:300px" size="small">
<template slot="append">元</template>
</el-input>
<div class="msg-tip">划线价在商品列表及详情会以划线形式显示</div>
</div>
</el-form-item>
<div v-if="goodsDetail.is_sku==0">
<el-form-item label="商品库存:" prop="stock">
<div class="display-flex">
<el-input type="number" min="0" v-model="goodsDetail.stock" style="width:300px"
size="small">
<template slot="append">个</template>
</el-input>
</div>
</el-form-item>
<el-form-item label="开启库存预警:">
<el-switch v-model="goodsDetail.stock_warning_switch" @change="changeStockWarningSwitch(0)"
active-color="#7438D5" inactive-color="#eee"></el-switch>
<span v-if="!goodsDetail.stock_warning_switch"
class="stock-warning-switch-tip">使用默认库存预警</span>
</el-form-item>
<el-form-item label="库存预警:" v-if="goodsDetail.stock_warning_switch">
<div class="display-flex">
<el-input type="number" min="0" v-model="goodsDetail.stock_warning" style="width:300px"
size="small">
<template slot="append">个</template>
</el-input>
</div>
</el-form-item>
<el-form-item label="商品重量:">
<div class="display-flex">
<el-input type="input" v-model="goodsDetail.weight" style="width:300px" size="small">
</el-input>
</div>
</el-form-item>
<el-form-item label="商品编号:">
<div class="display-flex">
<el-input type="input" v-model="goodsDetail.sn" style="width:300px" size="small">
</el-input>
</div>
</el-form-item>
</div>
<div v-if="goodsDetail.is_sku==1">
<div class="add-sku-box">
<div class="" v-for="(s, k) in skuList">
<div class="display-flex sku-item" style="justify-content: space-between;">
<div class="display-flex">
<div>规格名称:</div>
<div style="width: 120px;">
<el-input type="input" v-model="skuList[k]['name']" maxlength="5"
placeholder="请输入名称">
</el-input>
</div>
</div>
<div style="width: 20px;height: 20px;" @click="deleteMainSku(k)">
<img class="label-auto" src="/assets/addons/shopro/img/goods/close.png">
</div>
</div>
<div class="display-flex sku-item sku-item-level"
style="background: #fff;padding: 10px 20px;">
<div style="width: 60px;">规格值:</div>
<div class="display-flex sku-item sku-item-level2">
<div class="sku-children" v-for="(sc, c) in s.children">
<el-input type="input" v-model="skuList[k]['children'][c]['name']"
size="small" placeholder="请输入规格值" maxlength="22">
</el-input>
<div class="display-flex sku-children-del" @click="deleteChildrenSku(k,c)">
<img class="label-auto" src="/assets/addons/shopro/img/goods/close.png">
</div>
</div>
<span style="color: #7536D0;cursor: pointer;"
@click="addChildrenSku(k)">添加</span>
</div>
</div>
</div>
<div class="display-flex sku-item">
<div class="btn-common add-level1-sku" @click="addMainSku">
<i class="el-icon-plus"></i>
<span>添加规格</span>
</div>
</div>
</div>
<div class="table-box" v-show="skuPrice.length && skuList.length">
<table class="table">
<thead>
<tr>
<template v-for="(item, i) in skuList" :key="i">
<th v-if="item.children.length">
{{item.name}}
</th>
</template>
<th>图片</th>
<th>
<div class="display-flex">
<span>价格(元)</span>
<el-popover placement="top" width="160" v-model="allEditPopover.price">
<el-input v-enter-number v-model="allEditDatas" placeholder="请输入内容"
size="small">
</el-input>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text"
@click="allEditData('price','cancel')">取消</el-button>
<el-button type="primary" size="mini"
@click="allEditData('price','define')">确定</el-button>
</div>
<div slot="reference">
<img class="all-edit-img"
src="/assets/addons/shopro/img/goods/batch.png">
</div>
</el-popover>
</div>
</th>
<th>
<div class="display-flex">
<span>库存(个)</span>
<el-popover placement="top" width="160" v-model="allEditPopover.stock">
<el-input v-model="allEditDatas" placeholder="请输入内容" size="small">
</el-input>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text"
@click="allEditData('stock','cancel')">取消</el-button>
<el-button type="primary" size="mini"
@click="allEditData('stock','define')">确定</el-button>
</div>
<div slot="reference">
<img class="all-edit-img"
src="/assets/addons/shopro/img/goods/batch.png">
</div>
</el-popover>
</div>
</th>
<th>
<div class="display-flex">
<span>库存预警(个)</span>
<el-popover placement="top" width="200"
v-model="allEditPopover.stock_warning">
<div class="table-stock-warning-switch">
<el-switch v-model="allstock_warning_switch"
active-color="#7438D5" inactive-color="#eee"></el-switch>
<span v-if="!allstock_warning_switch"
class="stock-warning-switch-tip table-stock-warning-switch-tip">使用默认库存预警</span>
</div>
<el-input v-if="allstock_warning_switch" v-model="allEditDatas"
placeholder="请输入内容" size="small">
</el-input>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text"
@click="allEditData('stock_warning','cancel')">取消
</el-button>
<el-button type="primary" size="mini"
@click="allEditData('stock_warning','define','stock_warning_switch')">
确定</el-button>
</div>
<div slot="reference">
<img class="all-edit-img"
src="/assets/addons/shopro/img/goods/batch.png">
</div>
</el-popover>
</div>
</th>
<th>
<div class="display-flex">
<span>重量</span>
<el-popover placement="top" width="160" v-model="allEditPopover.weight">
<el-input v-model="allEditDatas" placeholder="请输入内容" size="small">
</el-input>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text"
@click="allEditData('weight','cancel')">取消</el-button>
<el-button type="primary" size="mini"
@click="allEditData('weight','define')">确定</el-button>
</div>
<div slot="reference">
<img class="all-edit-img"
src="/assets/addons/shopro/img/goods/batch.png">
</div>
</el-popover>
</div>
</th>
<th>
<div class="display-flex">
<span>编码</span>
<el-popover placement="top" width="160" v-model="allEditPopover.sn">
<el-input v-model="allEditDatas" placeholder="请输入内容" size="small">
</el-input>
<div style="text-align: right; margin: 0">
<el-button size="mini" type="text"
@click="allEditData('sn','cancel')">取消</el-button>
<el-button type="primary" size="mini"
@click="allEditData('sn','define')">确定</el-button>
</div>
<div slot="reference">
<img class="all-edit-img"
src="/assets/addons/shopro/img/goods/batch.png">
</div>
</el-popover>
</div>
</th>
<th>当前状态</th>
</tr>
</thead>
<tbody>
<tr v-for="(item, i) in skuPrice" :key="i">
<td v-for="(v, j) in item.goods_sku_text" :key="j">
<span class="th-center">{{v}}</span>
</td>
<td>
<div class="display-flex table-upload-img">
<div class="sku-img" v-if="item.image">
<img :src="Fast.api.cdnurl(item.image)" class="label-auto">
<i class="el-icon-close" @click="delImg('sku',i)"></i>
</div>
<div v-else @click="addImg('sku',i,false)">
<i class="el-icon-plus" style="font-size:18px;"></i>
</div>
</div>
</td>
<td>
<el-input v-enter-number class="table-input" v-model="item.price">
</el-input>
</td>
<td>
<el-input class="table-input" type="number" min="0" v-model="item.stock">
</el-input>
</td>
<td>
<div class="display-flex">
<div class="table-stock-warning-switch">
<el-switch v-model="item.stock_warning_switch"
@change="changeStockWarningSwitch(1,i)" active-color="#7438D5"
inactive-color="#eee"></el-switch>
<span v-if="!item.stock_warning_switch"
class="stock-warning-switch-tip table-stock-warning-switch-tip">使用默认库存预警</span>
</div>
<el-input type="number" min="0" class="table-input"
v-if="item.stock_warning_switch" v-model="item.stock_warning">
</el-input>
</div>
</td>
<td>
<el-input class="table-input" v-model="item.weight"></el-input>
</td>
<td>
<el-input class="table-input" v-model="item.sn"></el-input>
</td>
<td>
<span class="sku-status th-center" @click="editStatus(i)">
{{item.status=='up'?'上架':'下架'}}
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div v-if="stepActive==3">
<el-form-item label="服务标签:">
<div class="display-flex">
<div class="flex-1">
<el-select v-model="timeData.service_ids_arr" placeholder="请选择" multiple size="small"
@change="serviceChange" @focus="getServiceOptions">
<el-option v-for="item in serviceOptions" :key="item.value" :label="item.name"
:value="item.id">
</el-option>
</el-select>
</div>
<div class="create-template" @click="createTemplate('service')">
新建标签
</div>
</div>
</el-form-item>
<el-form-item label="参数详情:">
<div>
<div class="goods-detail-table">
<div class="display-flex goods-detail-item">
<div class="goods-detail-name">
参数名称
</div>
<div class="goods-detail-msg">
内容
</div>
<div class="goods-detail-del">
删除
</div>
<div class="goods-detail-move">
移动
</div>
</div>
<draggable :list="goodsDetail.params_arr" v-bind="$attrs" :options="{animation:500}">
<div class="display-flex goods-detail-item"
v-for="(it,index) in goodsDetail.params_arr">
<div class="goods-detail-name">
<el-input type="input" v-model="it.title" style="width:90px" size="small">
</el-input>
</div>
<div class="goods-detail-msg">
<el-input type="input" v-model="it.content" style="width:348px"
size="small">
</el-input>
</div>
<div class="goods-detail-del">
<div class="goods-detail-del-icon" @click="delParams(index)">
删除
</div>
</div>
<div class="goods-detail-move">
<img src="/assets/addons/shopro/img/goods/move.png">
</div>
</div>
</draggable>
</div>
<div class="btn-common add-params" @click="addParams">
<i class="el-icon-plus"></i>
<span>添加参数</span>
</div>
</div>
</el-form-item>
</div>
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""
v-show="stepActive==3">
<div class="display-flex" style="margin: 0;align-items: flex-start;">
<label class="control-label" style="width: 100px;
padding-right: 20px;
font-weight: 600;
font-size: 14px;
color: #606266;">{:__('Content')}:</label>
<div style="flex: 1;">
<textarea id="c-content" class="form-control editor" rows="5" name="row[content]"
cols="50"></textarea>
</div>
</div>
</form>
</el-form>
</div>
</div>
<span slot="footer" class="dialog-footer">
<div class="back-btn" v-if="stepActive>1" @click="gonextback">上一步</div>
<div class="btn-common sub-btn" v-if="stepActive<3" @click="gotoback('goodsDetail')">下一步</div>
<div class="btn-common sub-btn" v-if="stepActive==3" @click="submitForm('goodsDetail')">确定</div>
</span>
</div>