oil-station/fuintAdmin/src/views/EventMarketing/openCardGift/separate.vue
2024-09-04 17:32:25 +08:00

650 lines
18 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="center_">
<div class="bai-box">
<div class="d-a">
<div class="top-title">
<div class="d-s">
<div class="bigNum">1</div>
<div class="smtitle">创建分时优惠</div>
</div>
<div class="hui-text">
不同的商品可以分别创建多个营销价格分别设置多个
不同的价格优惠
</div>
</div>
<div class="gang_"></div>
<div class="top-title">
<div class="d-s">
<div class="bigNum">2</div>
<div class="smtitle">添加活动规则</div>
</div>
<div class="hui-text">
同一个分时优惠可以根据支付方式会员等级以及活动
时间添加多个不同的活动规则;同一个商品同一时间段
同一个会员同一个支付方式不能添加多个活动规则
</div>
</div>
<div class="gang_"></div>
<div class="top-title">
<div class="d-s">
<div class="bigNum">3</div>
<div class="smtitle">开始使用分时优惠</div>
</div>
<div class="hui-text">
分时优惠和活动规则创建后商城会根据后台设置的
使用时间支付方式会员等级来显示不同的会员价
</div>
</div>
</div>
<!-- -->
<div class="d-b" style="margin-bottom: 15px">
<div class="d-s">
<div class="gang"></div>
<div class="g-title">分时优惠</div>
</div>
<el-button type="primary" @click="Timeshare()">新增分时优惠</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%">
<el-table-column
type="index"
align="center"
label="序号"
width="50">
</el-table-column>
<el-table-column
align="center"
prop="title"
label="分时优惠名称"
>
</el-table-column>
<el-table-column
align="center"
prop="countCom"
label="适用商品数量"
>
</el-table-column>
<el-table-column
align="center"
prop="createName"
label="创建人"
>
</el-table-column>
<el-table-column
align="center"
prop="createTime"
label="创建时间">
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="modifySeparateList(scope.row.id)"
>修改
</el-button>
<el-button
size="mini"
type="text"
@click="deleteOil(scope.row.id)"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
<!-- -->
<div class="d-b" style="margin-bottom: 15px;margin-top: 20px">
<div class="d-s">
<div class="gang"></div>
<div class="g-title">活动规则</div>
</div>
<el-button type="primary" @click="showDialogVisible =! showDialogVisible">新增活动规则</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%">
<el-table-column
type="index"
align="center"
label="序号"
width="50">
</el-table-column>
<el-table-column
align="center"
prop="name"
label="分时优惠名称"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="活动规则名称"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="会员等级"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="支付方式"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="会员标签"
>
</el-table-column>
<el-table-column
align="date"
prop="address"
label="生效时间">
</el-table-column>
<el-table-column
align="date"
prop="address"
label="适用时间段">
</el-table-column>
<el-table-column
align="center"
prop="name"
label="每人每天参与限制"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="每人累计参与限制"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="状态"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="创建人"
>
</el-table-column>
<el-table-column
align="center"
prop="name"
label="创建时间"
>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="showDialogVisible =! showDialogVisible"
>修改
</el-button>
<el-button
size="mini"
type="text"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<el-dialog
title="新增/修改分时优惠"
:visible.sync="centerDialogVisible"
width="48%"
center>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
<el-form-item label="分时优惠名称" prop="title">
<el-input v-model="ruleForm.title" style="width: 217px"></el-input>
</el-form-item>
<el-form-item label="类型" prop="category">
<el-select v-model="ruleForm.category" placeholder="请选择类型">
<el-option label="固定价格" value="1"></el-option>
<el-option label="折扣" value="2"></el-option>
<el-option label="减价" value="3"></el-option>
</el-select>
<div>当手动/自动调整商品价格后,若调整后的售价低于规则设置时的会员
价,则该规则不生效。
</div>
</el-form-item>
<el-form-item label="折扣" prop="disValue" v-if="ruleForm.category == '2' ">
<el-input v-model="ruleForm.disValue" style="width: 217px"></el-input>
<div>折扣请填写0~1的数字。例如输入0.8表示打8折</div>
</el-form-item>
<el-form-item label="减价金额" prop="disValue" v-if="ruleForm.category == '3' ">
<el-input v-model="ruleForm.disValue" style="width: 217px"></el-input>
<div>减价金额不能小于 0.01</div>
</el-form-item>
<el-table
:data="ruleForm.oilList"
border
style="width: 100%">
<el-table-column
align="center"
prop="oilNames"
label="油品油号"
>
<template slot-scope="scope">
<span>{{scope.row.oilType}}{{scope.row.oilName}}</span>
</template>
</el-table-column>
<el-table-column
align="center"
prop="oilPrice"
label="当前挂牌价(元/L)"
>
</el-table-column>
<el-table-column
align="center"
prop="price"
label="优惠价(元/L"
>
<template slot-scope="scope">
<el-input-number v-model="scope.row.price" controls-position="right" :min="0.1"
:max="999"></el-input-number>
<!-- scope.row-->
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button
v-if="scope.row.type == '0'"
size="mini"
type="text"
@click="deleteType(scope.row)"
>删除
</el-button>
<el-button
v-if="scope.row.type == '1'"
size="mini"
type="text"
@click="addType(scope.row)"
>添加
</el-button>
</template>
</el-table-column>
</el-table>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="centerDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="addSeparateList()">确 定</el-button>
</span>
</el-dialog>
<el-dialog
title="新增/修改活动规则"
:visible.sync="showDialogVisible"
width="30%"
center>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
<el-form-item label="活动规则名称" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="分时优惠名称" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择优惠名称">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="适用会员等级" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择会员等级">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label=" 会员标签" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择会员标签">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="可使用支付方式" prop="type">
<el-checkbox-group v-model="ruleForm.type">
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
<el-checkbox label="地推活动" name="type"></el-checkbox>
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="生效时间" required>
<el-form-item prop="date1">
<el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1"
style="width: 100%;"></el-date-picker>
</el-form-item>
</el-form-item>
<el-form-item label="适用实收金额" required>
<el-col :span="11">
<el-form-item prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<div style="margin-left: 5px">到</div>
</el-col>
<el-col :span="11">
<el-form-item prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="适用加油升数" required>
<el-col :span="11">
<el-form-item prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
</el-col>
<el-col :span="2">
<div style="margin-left: 5px">到</div>
</el-col>
<el-col :span="11">
<el-form-item prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="最大优惠金额" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="每人每日参与限制" label-width="140px" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="每人累计参与限制" label-width="140px" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="适用时间段" prop="name">
<div class="d-s" style="margin-bottom: 5px">
每周
<el-select v-model="ruleForm.region" placeholder="请选择适用时间">
<el-option label="周一" value="shanghai"></el-option>
<el-option label="周二" value="beijing"></el-option>
</el-select>
</div>
<div class="d-s" style="margin-bottom: 5px">
每月:
<el-select v-model="ruleForm.region" placeholder="请选择适用时间">
<el-option label="周一" value="shanghai"></el-option>
<el-option label="周二" value="beijing"></el-option>
</el-select>
</div>
<div class="d-s">
时间段:
<el-date-picker type="date" placeholder="选择日期" v-model="ruleForm.date1"></el-date-picker>
</div>
</el-form-item>
<!-- -->
<el-form-item>
<el-button type="primary">立即创建</el-button>
<el-button>重置</el-button>
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import {getoilList, getRequestList, postaddList, getID, updateActivePrice, deleteList} from "./api/separate";
import {oilNumberList1} from "@/api/order/oilnumgun";
export default {
data() {
return {
// 分时
queryParams: {
pageNum: 1,
pageSize: 5,
activeType: 1
},
ruleForm: {
activeType: 1,
title: '',
name: '',
region: '',
category: '',
disValue: '',
type: [],
oilList: []
},
rules: {
title: [
{required: true, message: '请输入名称', trigger: 'blur'},
],
category: [
{required: true, message: '请选择类型', trigger: 'change'}
],
},
centerDialogVisible: false,
showDialogVisible: false,
// 分时列表
tableData: [],
// 油品列表
oilList: [],
// 活动规则列表
ruleList:[],
}
},
created() {
this.getList()
this.getRuleList()
},
methods: {
// 查询活动规则列表
getRuleList(){
},
// 删除
deleteOil(id){
deleteList(id).then(res=>{
console.log(res)
if(res.code == 200){
this.$message({
message: '删除成功',
type: 'success'
})
this.getList()
}
})
},
// 分时优惠制空
Blank(){
this.ruleForm ={
activeType: 1,
title: '',
name: '',
region: '',
category: '',
disValue: '',
type: [],
oilList: []
}
},
// 修改
modifySeparateList(id) {
getID(id).then(res => {
console.log(res)
if (res.code == 200) {
this.ruleForm = res.data
this.centerDialogVisible = true
}
})
},
// 新增/修改
addSeparateList() {
this.centerDialogVisible = false
if(this.ruleForm.id){
updateActivePrice(this.ruleForm).then(res => {
console.log(res)
if (res.code == 200) {
this.$message({
message: '添加成功',
type: 'success'
})
this.getList()
}
})
}else{
postaddList(this.ruleForm).then(res => {
console.log(res)
if (res.code == 200) {
this.$message({
message: '添加成功',
type: 'success'
})
this.getList()
}
})
}
},
//列表查询
getList() {
getRequestList(this.queryParams).then(res => {
console.log(res)
this.tableData = res.data.records
})
},
// 新增分时
Timeshare() {
this.Blank()
oilNumberList1().then(res => {
this.ruleForm.oilList = res.data.records
for (let i = 0; i < this.ruleForm.oilList.length; i++) {
this.ruleForm.oilList[i].type = 0
}
})
this.centerDialogVisible = !this.centerDialogVisible
},
deleteType(data) {
data.type = '1'
this.$forceUpdate()
console.log('1', this.ruleForm.oilList)
let tempList = JSON.stringify(this.ruleForm.oilList)
this.ruleForm.oilList = []
this.ruleForm.oilList = JSON.parse(tempList)
},
addType(data) {
data.type = '0'
this.$forceUpdate()
console.log('0', this.ruleForm.oilList)
let tempList = JSON.stringify(this.ruleForm.oilList)
this.ruleForm.oilList = []
this.ruleForm.oilList = JSON.parse(tempList)
}
}
}
</script>
<style scoped lang="scss">
.center_ {
width: 100%;
border-radius: 8px;
background: #f9f9f9;
box-sizing: border-box;
padding: 20px;
margin: 0 auto;
}
.bai-box {
border-radius: 10px;
background: #fff;
box-sizing: border-box;
padding: 15px;
}
.d-b {
width: 100%;
display: flex;
align-items: center;
justify-content: space-between;
}
.d-a {
width: 100%;
display: flex;
align-items: center;
justify-content: space-around;
}
.d-s {
display: flex;
align-items: center;
}
.top-title {
}
.hui-text {
font-weight: 400;
font-size: 16px;
color: #999999;
line-height: 30px;
width: 380px;
height: 120px;
overflow: hidden;
}
.bigNum {
font-size: 60px;
font-weight: bold;
color: #333333;
margin-right: 15px;
}
.smtitle {
font-size: 28px;
color: #333333;
font-weight: bold;
}
.gang_ {
width: 1px;
height: 75px;
border: 1px solid #FF9655;
}
.gang {
width: 2px;
height: 13px;
background: #FF9655;
margin-right: 10px;
}
.g-title {
font-size: 14px;
color: #333333;
}
</style>