|
|
@@ -3,7 +3,7 @@
|
|
|
<el-main>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="18">
|
|
|
- <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="100px" label-position="top">
|
|
|
+ <el-form ref="dialogForm" :model="formData" :rules="rules" label-width="140px" label-position="right">
|
|
|
<el-card shadow="never" header="商品类型">
|
|
|
<el-form-item label="商品品类" prop="category">
|
|
|
<el-cascader v-model="formData.category" :options="categoryData" :props="deptsProps" @change="getTemplate" clearable style="width: 50%;" />
|
|
|
@@ -38,16 +38,16 @@
|
|
|
</el-form-item>
|
|
|
<el-row :gutter="15">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="团购/次卡/代金券等划线价" prop="line_price">
|
|
|
- <el-input v-model="formData.line_price" type="number" clearable placeholder="请输入">
|
|
|
+ <el-form-item label="顾客实际需支付" prop="price">
|
|
|
+ <el-input v-model="formData.price" type="number" clearable placeholder="请输入">
|
|
|
<template #append>元</template>
|
|
|
</el-input>
|
|
|
<div class="el-form-item-msg"></div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="顾客实际需支付" prop="price">
|
|
|
- <el-input v-model="formData.price" type="number" clearable placeholder="请输入">
|
|
|
+ <el-form-item label="划线价" prop="line_price">
|
|
|
+ <el-input v-model="formData.line_price" type="number" clearable placeholder="请输入">
|
|
|
<template #append>元</template>
|
|
|
</el-input>
|
|
|
<div class="el-form-item-msg"></div>
|
|
|
@@ -264,25 +264,29 @@
|
|
|
</el-form-item>
|
|
|
<el-form-item label="库存数量" prop="limit_use_rule">
|
|
|
<el-radio-group v-model="formData.limit_use_rule">
|
|
|
- <el-radio :label="1">不限制</el-radio>
|
|
|
- <el-radio :label="2">限库存</el-radio>
|
|
|
+ <el-radio :label="2">不限制</el-radio>
|
|
|
+ <el-radio :label="1">限库存</el-radio>
|
|
|
</el-radio-group>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="团购库存数量" prop="use_num_per_consume" v-if="formData.limit_use_rule==2">
|
|
|
- <el-input v-model="formData.use_num_per_consume" style="width: 30%;">
|
|
|
- <template #append>份</template>
|
|
|
- </el-input>
|
|
|
+ <div class="el-form-item-msg"></div>
|
|
|
+ <div class="date-list" v-if="formData.limit_use_rule==1">
|
|
|
+ <el-form-item label="" prop="use_num_per_consume">
|
|
|
+ <el-input v-model="formData.use_num_per_consume">
|
|
|
+ <template #append>份</template>
|
|
|
+ <template #prepend>团购库存数量</template>
|
|
|
+ </el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="商品售卖日期" prop="sold_start_times">
|
|
|
<div style="width: 30%;">
|
|
|
<el-date-picker v-model="formData.sold_start_times" placeholder="请选择商品售卖日期" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" />
|
|
|
</div>
|
|
|
<div class="el-form-item-msg">顾客可以在这个时间内购买商品,超过这个日期,活动自动下线</div>
|
|
|
+ <div class="radio-flex">
|
|
|
+ 自动延期<el-switch active-text="开" inactive-text="关" inline-prompt v-model="formData.auto_renew" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" :active-value="1" :inactive-value="0"/>
|
|
|
+ <span class="fs12">团购到期后自动延长30天(有效期同时延长),可随时关闭。</span>
|
|
|
+ </div>
|
|
|
</el-form-item>
|
|
|
- <div class="radio-flex">
|
|
|
- 自动延期<el-switch active-text="开" inactive-text="关" inline-prompt v-model="formData.auto_renew" style="--el-switch-on-color: #13ce66; --el-switch-off-color: #ff4949" :active-value="1" :inactive-value="0"/>
|
|
|
- <span class="fs12">团购到期后自动延长30天(有效期同时延长),可随时关闭。</span>
|
|
|
- </div>
|
|
|
</el-card>
|
|
|
<el-card shadow="never" header="交易规则">
|
|
|
<el-form-item label="顾客可消费日期" prop="use_date_type">
|
|
|
@@ -294,22 +298,66 @@
|
|
|
<div class="el-form-item-msg" v-if="formData.use_date_type==2">
|
|
|
可使用日期的结束时间必须晚于售卖日期的结束时间
|
|
|
</div>
|
|
|
- <div v-if="formData.use_date_type==1">
|
|
|
+ <div class="date-list" v-if="formData.use_date_type==1">
|
|
|
<el-input v-model="formData.day_duration">
|
|
|
<template #append>天,购买当日默认可用</template>
|
|
|
<template #prepend>自购买次日起</template>
|
|
|
</el-input>
|
|
|
</div>
|
|
|
- <div v-if="formData.use_date_type==2" style="width: 30%;">
|
|
|
+ <div class="date-list" v-if="formData.use_date_type==2">
|
|
|
<el-date-picker v-model="formData.use_times" placeholder="请选择商品售卖日期" start-placeholder="开始时间" end-placeholder="结束时间" type="daterange" range-separator="至" />
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item label="顾客信息设置" prop="customer_reserved_info">
|
|
|
+ <el-radio-group v-model="formData.customer_reserved_info">
|
|
|
+ <el-radio :label="1">不需要</el-radio>
|
|
|
+ <el-radio :label="2">需要顾客手机号码</el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ <div class="el-form-item-msg"></div>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="顾客不可消费日期" prop="can_no_use_date">
|
|
|
<el-radio-group v-model="formData.can_no_use_date">
|
|
|
<el-radio :label="1">所有日期均可使用</el-radio>
|
|
|
- <!-- <el-radio :label="2">部分日期不可用</el-radio> -->
|
|
|
+ <el-radio :label="2">部分日期不可用</el-radio>
|
|
|
</el-radio-group>
|
|
|
<div class="el-form-item-msg"></div>
|
|
|
+ <template v-if="formData.can_no_use_date==2">
|
|
|
+ <div class="date-list">
|
|
|
+ <div class="date-type-item">
|
|
|
+ <div class="item-header"><el-checkbox v-model="formData.can_no_use_week" :value="1" label="每周几不可用" /></div>
|
|
|
+ <div class="item-body" style="width: 500px;" v-if="formData.can_no_use_week">
|
|
|
+ <el-form-item label="" prop="no_use_weeks">
|
|
|
+ <el-select v-model="formData.no_use_weeks" multiple placeholder="请选择" style="width:100%">
|
|
|
+ <el-option v-for="(item,index) in weeksData" :key="index" :label="item.name" :value="item.key"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- <div class="date-type-item">
|
|
|
+ <div class="item-header"><el-checkbox v-model="formData.can_no_use_holiday" :value="1" label="节假日不可用" /></div>
|
|
|
+ <div class="item-body" style="width: 500px;" v-if="formData.can_no_use_holiday">
|
|
|
+ <el-form-item label="" prop="no_use_holidays">
|
|
|
+ <el-select v-model="formData.no_use_holidays" multiple placeholder="请选择" style="width:100%">
|
|
|
+ <el-option v-for="(item,index) in holiday" :key="index" :label="item.name" :value="item.key"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </div> -->
|
|
|
+ <div class="date-type-item">
|
|
|
+ <div class="item-header"><el-checkbox v-model="formData.can_no_use_day" :value="1" label="指定某天不可用" /></div>
|
|
|
+ <div class="item-body" style="width: 500px;" v-if="formData.can_no_use_day">
|
|
|
+ <el-form-item label="" prop="no_use_days">
|
|
|
+ <el-date-picker
|
|
|
+ v-model="formData.no_use_days"
|
|
|
+ type="dates"
|
|
|
+ style="width:100%"
|
|
|
+ placeholder="请选择日期"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="券码类型" prop="code_source_type">
|
|
|
<el-radio-group v-model="formData.code_source_type" disabled>
|
|
|
@@ -321,13 +369,29 @@
|
|
|
|
|
|
</el-card>
|
|
|
<el-card shadow="never" header="消费规则">
|
|
|
+ <el-form-item label="使用规则">
|
|
|
+ <div class="el-form-item-msg">
|
|
|
+ <el-button @click="addRule">添加规则</el-button>
|
|
|
+ </div>
|
|
|
+ <div class="date-list" style="margin-top: 10px;" v-if="notificationData.length > 0">
|
|
|
+ <div class="date-type-item flex" v-for="(item,index) in notificationData" :key="index">
|
|
|
+ <div class="left">
|
|
|
+ <el-input v-model="item.title" placeholder="请输入标题" />
|
|
|
+ <el-input v-model="item.content" placeholder="请输入规则内容" />
|
|
|
+ </div>
|
|
|
+ <div class="right">
|
|
|
+ <el-button type="danger" size="small" @click="removeRule(index)" circle icon="el-icon-delete"></el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-form-item>
|
|
|
<el-form-item label="限购规则" prop="limit_rule_type">
|
|
|
<el-radio-group v-model="formData.limit_rule_type">
|
|
|
<el-radio :label="1">不限制购买</el-radio>
|
|
|
<el-radio :label="2">限制购买</el-radio>
|
|
|
</el-radio-group>
|
|
|
<div class="el-form-item-msg"></div>
|
|
|
- <div v-if="formData.limit_rule_type==2">
|
|
|
+ <div class="date-list" v-if="formData.limit_rule_type==2">
|
|
|
<el-input v-model="formData.limit_rule">
|
|
|
<template #append>份</template>
|
|
|
<template #prepend>限制每人最多购买</template>
|
|
|
@@ -340,9 +404,9 @@
|
|
|
<el-radio :label="2">到店前需要预约</el-radio>
|
|
|
</el-radio-group>
|
|
|
<div class="el-form-item-msg"></div>
|
|
|
- <div v-if="formData.booking_type==2">
|
|
|
+ <div class="date-list" v-if="formData.booking_type==2">
|
|
|
<el-input v-model="formData.booking_date">
|
|
|
- <template #prepend>需提前电话预约</template>
|
|
|
+ <template #prepend>需提前</template>
|
|
|
<template #append>
|
|
|
<el-select v-model="formData.booking_unit" style="width: 80px;">
|
|
|
<el-option :value="1" label="天"></el-option>
|
|
|
@@ -358,7 +422,7 @@
|
|
|
<el-radio :label="2">限制张数</el-radio>
|
|
|
</el-radio-group>
|
|
|
<div class="el-form-item-msg"></div>
|
|
|
- <div v-if="formData.rec_person_type==2">
|
|
|
+ <div class="date-list" v-if="formData.rec_person_type==2">
|
|
|
<el-input v-model="formData.rec_person_num_max">
|
|
|
<template #prepend>单次消费最多使用张数</template>
|
|
|
<template #append>张</template>
|
|
|
@@ -497,10 +561,25 @@ export default {
|
|
|
environment_image_list:[],
|
|
|
mult_sku:1
|
|
|
},
|
|
|
+ holiday:[{'key':1,"name":"元旦"},{'key':2,"name":"春节"},{'key':3,"name":"清明"},{'key':4,"name":"劳动节"},{'key':5,"name":"端午节"},{'key':6,"name":"中秋节"},{'key':7,"name":"国庆节"},{'key':8,"name":"情人节"},{'key':9,"name":"圣诞节"},{'key':10,"name":"元宵节"},{'key':11,"name":"520"},{'key':12,"name":"儿童节"},{'key':13,"name":"七夕节"},{'key':14,"name":"二月二"},{'key':15,"name":"母亲节"},{'key':16,"name":"父亲节"},{'key':17,"name":"教师节"}],
|
|
|
+ weeksData:[{'key':1,"name":"星期一"},{'key':2,"name":"星期二"},{'key':3,"name":"星期三"},{'key':4,"name":"星期四"},{'key':5,"name":"星期五"},{'key':6,"name":"星期六"},{'key':7,"name":"星期天"},],
|
|
|
+ notificationData:[],
|
|
|
specs:[{"name":"","num":0,"list":[ {"name":"","price":1,"weight":"1","weight_unit":'kg',"number":1} ]}],
|
|
|
skuSpecs:[],
|
|
|
channelLoad:false,
|
|
|
rules:{
|
|
|
+ no_use_weeks: [
|
|
|
+ {required: true, message: '请选择'}
|
|
|
+ ],
|
|
|
+ no_use_holidays: [
|
|
|
+ {required: true, message: '请选择'}
|
|
|
+ ],
|
|
|
+ no_use_days: [
|
|
|
+ {required: true, message: '请选择'}
|
|
|
+ ],
|
|
|
+ customer_reserved_info: [
|
|
|
+ {required: true, message: '请选择'}
|
|
|
+ ],
|
|
|
line_price: [
|
|
|
{required: true, message: '请输入'}
|
|
|
],
|
|
|
@@ -563,6 +642,15 @@ export default {
|
|
|
// this.formData.sold_start_time = this.formattedCurrentDate();
|
|
|
},
|
|
|
methods: {
|
|
|
+ addRule(){
|
|
|
+ this.notificationData.push({"title":"","content":""});
|
|
|
+ },
|
|
|
+ removeRule(index){
|
|
|
+ if (this.notificationData.length <= 1) {
|
|
|
+ return this.$message.error("至少保留一条规则")
|
|
|
+ }
|
|
|
+ this.notificationData.splice(index,1)
|
|
|
+ },
|
|
|
async getDetail(id,product_id){
|
|
|
var resp = await this.$API.merGoods.detail.get({"id":id,"product_id":product_id});
|
|
|
if (resp.code == 0) {
|
|
|
@@ -574,6 +662,7 @@ export default {
|
|
|
this.formData = resp.data;
|
|
|
this.specs = resp.data.specs;
|
|
|
this.skuSpecs = resp.data.skuSpecs;
|
|
|
+ this.notificationData = resp.data.notification
|
|
|
},
|
|
|
skuResp(data){
|
|
|
this.skuSpecs[data.index] = data.data;
|
|
|
@@ -667,6 +756,10 @@ export default {
|
|
|
var { formData, $message } = this;
|
|
|
var validate = await this.$refs.dialogForm.validate().catch(()=>{});
|
|
|
if(!validate){ return false }
|
|
|
+ if (this.notificationData.length == 0) {
|
|
|
+ return this.$message.error("使用规则至少需要一组以上");
|
|
|
+ }
|
|
|
+ formData.notification = this.notificationData;
|
|
|
formData.specs = this.specs;
|
|
|
formData.skuSpecs = this.skuSpecs;
|
|
|
if (formData.sold_start_times) {
|
|
|
@@ -705,6 +798,12 @@ export default {
|
|
|
.mobile-group .body-item-li{display: flex;align-items: center;justify-content: space-between;line-height: 32px;font-size: 12px;color: #333;font-weight: bold;}
|
|
|
.mobile-group .body-item-li .item-right{display: flex;align-items: center;gap: 10px;}
|
|
|
|
|
|
+
|
|
|
+.date-list{background-color: var(--el-fill-color-light);padding: 10px;border-radius: 2px;min-width: 500px;}
|
|
|
+.date-type-item{margin-bottom: 15px;}
|
|
|
+.date-type-item.flex{display: flex;align-items: center;gap: 10px;justify-content: space-between;}
|
|
|
+.date-type-item.flex .left{flex: 1;}
|
|
|
+
|
|
|
.mobile-bannber{background-color: #f8f8f8;}
|
|
|
.mobile-info{padding: 10px;background-color: #fff;}
|
|
|
.mobile-info .info-title{font-size: 14px;font-weight: bold;line-height: 36px;}
|