oil-station/fuintAdmin/src/views/userGrade/index.vue

2065 lines
72 KiB
Vue
Raw Normal View History

2024-08-16 18:26:19 +08:00
<template>
<div class="app-container">
<div class="tab-box">
<div class="tab_" :class="{active:index== tabindex }" @click="getindex(index)" v-for="(item,index) in tabs"
:key="index">
{{ item.name }}
</div>
</div>
<div class="cot-box" v-if="tabindex == 0">
<div class="clearfix" style="display: flex;margin-bottom: 15px">
<div class="levelBorder"></div>
<div style="margin-right: 15px">会员等级</div>
<el-switch
v-model="chainStoreConfig.isEnableLevel"
active-value="yes"
inactive-value="no"
active-color="#13ce66"
inactive-color="#ff4949">
</el-switch>
</div>
<div>
<!-- <div style="display: flex;justify-content: space-between">-->
<!-- <span style="color: grey;">会员等级规则说明</span>-->
<!-- <el-button v-show="level1" @click="editLevel1" type="primary"-->
<!-- v-hasPermi="['userGrade:index:open']"-->
<!-- round> 开启等级功能-->
<!-- </el-button>-->
<!-- <el-button v-show="level2" @click="editLevel2" type="danger"-->
<!-- v-hasPermi="['userGrade:index:open']"-->
<!-- round>关闭等级功能-->
<!-- </el-button>-->
<!-- </div>-->
<div class="kuang">
<p v-for="(item,index) in memberLevelRule" :id="index">
{{ item }}
</p>
</div>
</div>
<div style="margin-top: 15px">
<div class="clearfix" style="display: flex">
<div class="levelBorder"></div>
<span>会员清算规则</span>
</div>
<div style="margin-top: 10px">
<!-- <template>-->
<!-- <el-radio v-model="clear" label="clear_month">按月清算</el-radio>-->
<!-- <el-radio v-model="clear" label="clear_year">按年清算</el-radio>-->
<!-- <el-radio v-model="clear" label="clear_no">不清算</el-radio>-->
<!-- </template>-->
<div class="d-s" style="margin-top: 15px;margin-bottom: 15px">
<div class="icon-type" v-for="(item,index) in clearList" :key="index"
:class="{ 'acvtive' : index === tindex }" @click="Typeindex(index,item)">
<img src="../../assets/images/wx.png" style="width: 20px;height: 20px" v-if="index != tindex">
<img src="../../assets/images/xz.png" style="width: 20px;height: 20px" v-if="index == tindex">
{{ item.label }}
</div>
</div>
<!-- <el-button type="primary" round @click="updateClearConfig"-->
<!-- v-hasPermi="['userGrade:index:save']">-->
<!-- 保存-->
<!-- </el-button>-->
</div>
<div class="kuang">
<p v-for="(item,index) in levelClearRule" :key="index">
{{ item }}
</p>
</div>
</div>
<div style="margin-top: 15px;margin-bottom: 15px">
<div class="clearfix" style="display: flex">
<div class="levelBorder"></div>
<span>成长值计算方式</span>
</div>
<div style="display: flex;justify-content: space-between">
<div class="czz">
<span class="czzbl">汽油成长值比例每消费</span>
<el-select v-model="chainStoreConfig.gasConsumeAmount" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<span class="czzbl">获得</span>
<el-input v-model="chainStoreConfig.gasGrowthValue" style="width: 120px"/>
<span class="czzbl">成长值</span>
<!-- <el-input v-model="gasGrowthValue" disabled style="margin: 10px 10px">-->
<!-- <template slot="prepend">汽油成长值比例,每消费1元积</template>-->
<!-- <template slot="append">成长值</template>-->
<!-- </el-input>-->
</div>
<div class="czz">
<span class="czzbl">天然气成长值比例每消费</span>
<el-select v-model="chainStoreConfig.naturalConsumeAmount" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<span class="czzbl">获得</span>
<el-input v-model="chainStoreConfig.naturalGrowthValue" style="width: 120px"/>
<span class="czzbl">成长值</span>
<!-- <el-input v-model="naturalGrowthValue" disabled style="margin: 10px 10px">-->
<!-- <template slot="prepend">天然气成长值比例,每消费1元积</template>-->
<!-- <template slot="append">成长值</template>-->
<!-- </el-input>-->
</div>
</div>
<div style="display: flex;justify-content: space-between">
<div class="czz">
<span class="czzbl">柴油成长值比例每消费</span>
<el-select v-model="chainStoreConfig.dieselConsumeAmount" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<span class="czzbl">获得</span>
<el-input v-model="chainStoreConfig.dieselGrowthValue" style="width: 120px"/>
<span class="czzbl">成长值</span>
<!-- <el-input v-model="dieselGrowthValue" disabled style="margin: 10px 10px">-->
<!-- <template slot="prepend">柴油成长值比例,每消费1元积</template>-->
<!-- <template slot="append">成长值</template>-->
<!-- </el-input>-->
</div>
<div class="czz">
<span class="czzbl">会员充值成长值比例每消费</span>
<el-select v-model="chainStoreConfig.rechargeConsumeAmount" placeholder="请选择">
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<span class="czzbl">获得</span>
<el-input v-model="chainStoreConfig.rechargeGrowthValue" style="width: 120px"/>
<span class="czzbl">成长值</span>
<!-- <el-input v-model="naturalGrowthValue" disabled style="margin: 10px 10px">-->
<!-- <template slot="prepend">会员充值成长值比例每消费1元积</template>-->
<!-- <template slot="append">成长值</template>-->
<!-- </el-input>-->
</div>
</div>
<div class="kuang">
<p v-for="(item,index) in growthValueRule" :id="index">
{{ item }}
</p>
</div>
</div>
<el-button type="primary" @click="editChainStoreConfig">保存</el-button>
</div>
<div class="cot-box" v-if="tabindex == 1">
<el-row :gutter="10" class="mb8">
<el-col :span="21">
<span style="font-size: 18px">会员等级</span>
<span style="font-size: 14px">最多支持20个等级</span>
</el-col>
<!-- <el-col :span="3">-->
<!-- <el-button-->
<!-- type="primary"-->
<!-- icon="el-icon-plus"-->
<!-- @click="handleAdd"-->
<!-- >新增会员等级</el-button>-->
<!-- </el-col>-->
<!-- <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>-->
</el-row>
<div>
<el-form :model="queryParams1" ref="queryForm" size="small" :inline="true" label-width="120px">
<el-form-item label="" prop="groupName" style="width: 180px">
<el-input placeholder="请输入会员等级" v-model="queryParams1.input"></el-input>
</el-form-item>
<el-form-item label="">
<el-date-picker
v-model="beginTime1"
style="width: 160px"
type="date"
placeholder="开始日期">
</el-date-picker>
<el-date-picker
v-model="endTime1"
style="width: 160px"
type="date"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" @click="handleQuery1">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery1">重置</el-button>
<el-button type="primary" @click="handleAdd">新增等级</el-button>
</el-form-item>
</el-form>
</div>
2024-08-27 10:18:27 +08:00
<div style="height: 65vh;overflow: auto">
<el-table ref="tables" v-loading="loading" :data="list" border >
<el-table-column label="序号" align="center" type="index" width="55"/>
<el-table-column label="会员等级名称" align="center" prop="name">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="会员数量" align="center" prop="userNum">
<template slot-scope="scope">
<span>{{ scope.row.userNum }}</span>
</template>
</el-table-column>
<el-table-column label="开卡金额(元)" align="center" prop="openCardAmount">
<template slot-scope="scope">
<span>{{ scope.row.openCardAmount || 0 }}</span>
</template>
</el-table-column>
<el-table-column label="升降排序" align="center" prop="grade">
<template slot-scope="scope">
<span>{{ scope.row.grade }}</span>
</template>
</el-table-column>
<el-table-column label="升级所需成长值" align="center" prop="growthValue">
<template slot-scope="scope">
<span>{{ scope.row.growthValue }}</span>
</template>
</el-table-column>
<el-table-column label="创建人" align="center" prop="accountName">
<template slot-scope="scope">
<span>{{ scope.row.accountName || "--" }}</span>
</template>
</el-table-column>
<el-table-column label="创建时间" align="center" prop="createTime">
<template slot-scope="scope">
<span>{{ scope.row.createTime }}</span>
</template>
</el-table-column>
<!-- <el-table-column label="优惠类型" align="center" prop="preferential">-->
<!-- </el-table-column>-->
<!-- <el-table-column label="特权信息">-->
<!-- <template slot-scope="scope">-->
<!-- <div v-show="scope.row.preferential=='自定义优惠'">-->
<!-- <p>-->
<!-- 汽油-->
<!-- <span style="margin-left: 10px">{{ scope.row.gasolineDiscount }}</span>-->
<!-- <span v-if="scope.row.gasolineRule!=null && scope.row.gasolineRule!=''"-->
<!-- style="color: grey;font-size: 12px">-->
<!-- <div style="margin-left: 10px"-->
<!-- v-if="scope.row.gasolineDiscount=='满减优惠'"-->
<!-- v-for="(item,index) in scope.row.gasolineRuleList"-->
<!-- :key="index">-->
<!-- 消费满{{ item.gasolineRule1 }},立减{{ item.gasolineRule2 }}-->
<!-- </div>-->
<!-- <div style="margin-left: 10px"-->
<!-- v-if="scope.row.gasolineDiscount=='每升优惠'"-->
<!-- v-for="(item,index) in scope.row.gasolineRuleList"-->
<!-- :key="index">-->
<!-- 消费满{{ item.gasolineRule1 }},每升优惠{{ item.gasolineRule3 }}-->
<!-- </div>-->
<!-- </span>-->
<!-- </p>-->
<!-- <p>-->
<!-- 柴油-->
<!-- <span style="margin-left: 10px">{{ scope.row.dieselDiscount }}</span>-->
<!-- <span v-if="scope.row.dieselRule!=null && scope.row.dieselRule!=''"-->
<!-- style="margin-left: 10px;color: grey;font-size: 12px">-->
<!-- <div style="margin-left: 10px"-->
<!-- v-if="scope.row.dieselDiscount=='满减优惠'"-->
<!-- v-for="(item,index) in scope.row.dieselRuleList"-->
<!-- :key="index">-->
<!-- 消费满{{ item.dieselRule1 }},立减{{ item.dieselRule2 }}-->
<!-- </div>-->
<!-- <div style="margin-left: 10px"-->
<!-- v-if="scope.row.dieselDiscount=='每升优惠'"-->
<!-- v-for="(item,index) in scope.row.dieselRuleList"-->
<!-- :key="index">-->
<!-- 消费满{{ item.dieselRule1 }},每升优惠{{ item.dieselRule3 }}-->
<!-- </div>-->
<!-- </span>-->
<!-- </p>-->
<!-- <p>-->
<!-- 天然气-->
<!-- <span style="margin-left: 10px">{{ scope.row.naturalGasDiscount }}</span>-->
<!-- <span v-if="scope.row.naturalGasRule!=null && scope.row.naturalGasRule!=''"-->
<!-- style="margin-left: 10px;color: grey;font-size: 12px">-->
<!-- <div style="margin-left: 10px"-->
<!-- v-if="scope.row.naturalGasDiscount=='满减优惠'"-->
<!-- v-for="(item,index) in scope.row.naturalGasRuleList"-->
<!-- :key="index">-->
<!-- 消费满{{ item.naturalGas1 }},立减{{ item.naturalGas2 }}-->
<!-- </div>-->
<!-- <div style="margin-left: 10px"-->
<!-- v-if="scope.row.naturalGasDiscount=='每单位优惠'"-->
<!-- v-for="(item,index) in scope.row.naturalGasRuleList"-->
<!-- :key="index">-->
<!-- 消费满{{ item.naturalGas1 }},每单位优惠{{ item.naturalGas3 }}-->
<!-- </div>-->
<!-- </span>-->
<!-- </p>-->
<!-- </div>-->
<!-- <div v-show="scope.row.preferential=='优惠活动组'">-->
<!-- 优惠活动组-->
<!-- <span style="margin-left: 10px">{{ scope.row.promotionGroup }}</span>-->
<!-- </div>-->
<!-- </template>-->
<!-- </el-table-column>-->
<!-- <el-table-column label="状态" align="center" prop="status">-->
<!-- <template slot-scope="scope">-->
<!-- <el-tag v-if="scope.row.status == 'qy'">启用</el-tag>-->
<!-- <el-tag v-else type="info">禁用</el-tag>-->
<!-- </template>-->
<!-- </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"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
>修改
</el-button>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
2024-08-16 18:26:19 +08:00
<pagination
v-show="total>0"
:total="total"
:page.sync="queryParams.page"
:limit.sync="queryParams.pageSize"
@pagination="getList"
/>
</div>
<div class="cot-box" v-if="tabindex == 2">
<div>
<el-form :model="queryParams2" ref="queryForm" size="small" :inline="true" label-width="120px">
2024-08-27 10:18:27 +08:00
<el-form-item label="" prop="gradeId" style="width: 180px">
<el-select v-model="queryParams2.gradeId" placeholder="请选择会员等级" style="width: 100%">
<el-option v-for="(item,index) in gradeList" :key="index" :label="item.name"
:value="item.id"></el-option>
2024-08-16 18:26:19 +08:00
</el-select>
</el-form-item>
<el-form-item label="">
<el-date-picker
v-model="beginTime2"
style="width: 160px"
type="date"
placeholder="开始日期">
</el-date-picker>
<el-date-picker
v-model="endTime2"
style="width: 160px"
type="date"
placeholder="结束日期">
</el-date-picker>
</el-form-item>
<el-form-item style="float: right">
<el-button type="primary" icon="el-icon-search" @click="handleQuery2">搜索</el-button>
<el-button icon="el-icon-refresh" @click="resetQuery2">重置</el-button>
<el-button type="primary" @click="handleAdd2">新增折扣</el-button>
</el-form-item>
</el-form>
</div>
<!-- -->
<div style="height: 68vh;overflow: auto">
<el-table
:data="discountList"
border
style="width: 100%">
<el-table-column type="index" width="50" align="center" label="序号"/>
2024-08-27 10:18:27 +08:00
<el-table-column prop="gradeName" align="center" label="会员等级" width="180">
<template slot-scope="scope">
<span>{{ scope.row.gradeName }}</span>
</template>
</el-table-column>
<el-table-column prop="discount" align="center" label="折扣">
<template slot-scope="scope">
<span>{{ scope.row.discount }}</span>
</template>
</el-table-column>
<el-table-column prop="usePaymentWay" align="center" label="可使用支付方式">
<template slot-scope="scope">
<span>{{ scope.row.usePaymentWay }}</span>
</template>
</el-table-column>
<el-table-column prop="consumeAmount" align="center" label="最低消费金额" width="220">
<template slot-scope="scope">
<span>{{ scope.row.consumeAmount }}</span>
</template>
</el-table-column>
2024-08-16 18:26:19 +08:00
2024-08-27 10:18:27 +08:00
<el-table-column prop="suitDateType" align="center" label="限制时间">
2024-08-16 18:26:19 +08:00
<template slot-scope="scope">
<span v-if="scope.row.suitDateType=='0'"></span>
<span v-else>{{ scope.row.suitTimeSlotFront }} ~ {{ scope.row.suitTimeSlotAfter }}</span>
</template>
</el-table-column>
2024-08-27 10:18:27 +08:00
<el-table-column prop="noUseDate" align="center" label="不可用日期">
2024-08-16 18:26:19 +08:00
<template slot-scope="scope">
2024-08-27 10:18:27 +08:00
<div v-if="scope.row.noUseDate">
<span v-for="(item,index) in scope.row.noUseDate.split(',')" :key="index">{{ item }}</span>
</div>
<div v-else>永久有效</div>
</template>
</el-table-column>
<el-table-column prop="accountName" align="center" label="创建人">
<template slot-scope="scope">
<span>{{ scope.row.accountName }}</span>
</template>
</el-table-column>
<el-table-column prop="createTime" align="center" label="创建时间" width="160">
<template slot-scope="scope">
<span>{{ scope.row.createTime }}</span>
2024-08-16 18:26:19 +08:00
</template>
</el-table-column>
<el-table-column align="center" label="操作" width="120">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="handleUpdate2(scope.row)"
>修改
</el-button>
<el-button
size="mini"
type="text"
@click="handleDelete2(scope.row)"
>删除
</el-button>
</template>
</el-table-column>
</el-table>
</div>
<pagination
v-show="total2>0"
:total="total2"
:page.sync="queryParams2.page"
:limit.sync="queryParams2.pageSize"
@pagination="getList2"
/>
</div>
<!-- 添加或修改对话框 -->
2024-08-27 10:18:27 +08:00
<el-dialog :title="title" :visible.sync="open" :close-on-click-modal="false" width="50%" append-to-body>
2024-08-16 18:26:19 +08:00
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="会员等级名称" prop="name">
<el-input v-model="form.name" placeholder="请输入会员等级名称"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="升降顺序" prop="grade">
<el-input v-model="form.grade" placeholder="0" maxlength="10"/>
<div style="font-size: 12px;color: #FF9655">默认0为最低一级顺序</div>
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="开卡金额" prop="openCardAmount">
<el-input v-model="form.openCardAmount" placeholder="0" maxlength="200"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="升级所需成长值" prop="growthValue">
<el-input v-model="form.growthValue" placeholder="达到当前等级需要的成长值"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="20">
<el-form-item label="会员降级规则" prop="relegateRuleType">
<!-- <el-input v-model="form.growthValue" placeholder="达到当前等级需要的成长值"/>-->
<div class="d-s">
<div class="icon-type" v-for="(item,index) in useGradeList" :key="index"
:class="{ 'acvtive' : index === tindex5 }" @click="Typeindex5(index)">
<img src="../../assets/images/wx.png" style="width: 20px;height: 20px" v-if="index != tindex5">
<img src="../../assets/images/xz.png" style="width: 20px;height: 20px" v-if="index == tindex5">
{{ item }}
</div>
<img src="../../assets/images/tjb.png" style="width: 20px;height: 20px;cursor: pointer"
@click="addlsit()">
</div>
<div v-if="tindex5 == 0">
<div v-for="(item,index) in amount" :key="index">
<div v-if="item.value == '选项1' " class="d-s" style="margin-bottom: 15px">
<el-input v-model="item.moon" placeholder="0" style="width: 100px"></el-input>
<div class="h-size">个月内</div>
<el-select v-model="item.value" placeholder="指定消费金额" style="width: 200px">
<el-option
v-for="item in vptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div class="h-size">未触达</div>
<el-input v-model="item.first" placeholder="0" style="width: 100px"></el-input>
<div class="h-size">降至</div>
<el-select v-model="item.grade" placeholder="请选择会员级别">
<el-option
v-for="item in gradeList"
:key="index"
:label="item.name"
:value="item.id">
</el-option>
</el-select>
<img src="../../assets/images/ljt.png" style="width: 25px;height: 25px;"
@click="deleteamount(index)">
</div>
<div v-if="item.value == '选项2' " class="d-s" style="margin-bottom: 15px">
<el-input v-model="item.moon" placeholder="0" style="width: 100px"></el-input>
<div class="h-size">个月内</div>
<el-select v-model="item.value" placeholder="指定消费金额" style="width: 200px">
<el-option
v-for="item in vptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div class="h-size">未触达</div>
<el-input v-model="item.first" placeholder="0" style="width: 100px"></el-input>
<div class="h-size">降至</div>
<el-select v-model="item.grade" placeholder="请选择会员级别">
<el-option
v-for="item in viplist"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<img src="../../assets/images/ljt.png" style="width: 25px;height: 25px;"
@click="deleteamount(index)">
</div>
<div v-if="item.value == '选项3' " class="d-s" style="margin-bottom: 5px">
<el-input v-model="item.moon" placeholder="0" style="width: 100px"></el-input>
<div class="h-size">个月内</div>
<el-select v-model="item.value" placeholder="指定消费金额" style="width: 200px">
<el-option
v-for="item in vptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div class="h-size" style="width: 35px">降至</div>
<el-select v-model="item.grade" placeholder="请选择会员级别">
<el-option
v-for="item in vptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<img src="../../assets/images/ljt.png" style="width: 25px;height: 25px;">
</div>
</div>
</div>
<div v-if="tindex5 == 1" v-for="(item,index) in balance" :key="index">
<div class="d-s" style="margin-bottom: 15px">
<el-select v-model="item.card" placeholder="指定消费金额" style="width: 200px">
<el-option
v-for="item in caedlist"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<div class="h-size" style="width: 160px">储值余额小于等于</div>
<el-input v-model="item.first" placeholder="0" style="width: 100px"></el-input>
<div class="h-size">降至</div>
<el-select v-model="item.grade" placeholder="请选择会员级别">
<el-option
v-for="item in vptions"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
</el-select>
<img src="../../assets/images/ljt.png" style="width: 25px;height: 25px;" @click="deleteamount(index)">
</div>
</div>
2024-08-16 18:26:19 +08:00
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="等级说明" prop="gradeIllustrate">
<el-input v-model="form.gradeIllustrate" placeholder="请输入等级说明信息" type="textarea"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="会员权益" prop="userEquity">
<el-input v-model="form.userEquity" placeholder="请输入会员权益信息" type="textarea"/>
</el-form-item>
</el-col>
</el-row>
<el-row>
2024-08-27 10:18:27 +08:00
<el-col :span="14">
2024-08-16 18:26:19 +08:00
<el-form-item label="升级送积分" prop="givePoint">
<el-input v-model="form.givePoint" placeholder="0">
<template slot="append">积分</template>
</el-input>
2024-08-27 10:18:27 +08:00
<span
style="font-size: 12px;color: grey">请设置升级该等级赠送的积分不填写表示不赠送;降级时不送积分</span>
2024-08-16 18:26:19 +08:00
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 添加或修改对话框 -->
<el-dialog :title="title" :visible.sync="open2" append-to-body width="42%">
2024-09-25 15:56:24 +08:00
<el-form ref="form2" :model="form2" :rules="rules" label-width="120px">
2024-08-16 18:26:19 +08:00
<el-form-item label="会员等级" prop="gradeId">
<el-select v-model="form2.gradeId" placeholder="请选择会员等级" style="width: 100%">
<el-option v-for="(item,index) in gradeList" :key="index" :label="item.name"
:value="item.id"></el-option>
</el-select>
</el-form-item>
<el-form-item label="可使用支付方式" prop="usePaymentWay">
<el-checkbox-group v-model="form2.usePaymentWay">
<el-checkbox
v-for="dict in dict.type.payment_type"
v-if="dict.value!='APPLET_CODE'"
:key="dict.value"
:label="dict.label"
:value="dict.value"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="折扣" prop="discount">
<el-input v-model="form2.discount" placeholder="0" maxlength="30">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item label="最低消费金额" prop="consumeAmount">
<el-input v-model="form2.consumeAmount" placeholder="0" maxlength="30">
<template slot="append"></template>
</el-input>
</el-form-item>
<el-form-item label="节假日是否通用" prop="holidayIsUse">
2024-09-25 15:56:24 +08:00
<el-radio-group v-model="form2.holidayIsUse">
<el-radio :label="'0'">可用</el-radio>
<el-radio :label="'1'">不可用</el-radio>
</el-radio-group>
2024-08-16 18:26:19 +08:00
</el-form-item>
<el-form-item label="适用日期" prop="suitDateType">
<div class="d-s">
2024-09-25 15:56:24 +08:00
<el-radio-group v-model="form2.suitDateType">
<el-radio :label="'0'">永久</el-radio>
<el-radio :label="'1'">自定义</el-radio>
</el-radio-group>
2024-09-25 16:25:10 +08:00
2024-08-16 18:26:19 +08:00
<el-date-picker
v-model="form2.suitDateFront"
2024-09-25 16:25:10 +08:00
style="width: 160px;margin-left: 10px;"
2024-08-16 18:26:19 +08:00
type="date"
placeholder="开始日期">
</el-date-picker>
2024-09-25 16:25:10 +08:00
<div style="margin: 0 10px;"></div>
2024-08-16 18:26:19 +08:00
<el-date-picker
v-model="form2.suitDateAfter"
style="width: 160px"
type="date"
placeholder="结束日期">
</el-date-picker>
</div>
</el-form-item>
2024-09-25 15:56:24 +08:00
<el-form-item label="时间段设置" prop="availableOrUn">
<el-radio-group v-model="form2.availableOrUn">
<el-radio :label="'0'">适用时间段</el-radio>
<el-radio :label="'1'">不可用时间段</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item v-if="form2.availableOrUn == '0'" label="适用时间段" prop="suitTimeSlotType">
2024-09-25 16:25:10 +08:00
<div style="width: 100px;margin-top: 10px">
2024-09-25 15:56:24 +08:00
<el-radio-group v-model="form2.suitTimeSlotType">
2024-09-25 16:25:10 +08:00
<div style="display: flex; width: 500px;margin-bottom: 15px;">
<el-radio :label="'1'">每周</el-radio>
2024-09-25 15:56:24 +08:00
<el-checkbox-group v-model="weekDay" style="margin-left: 20px" :disabled="form2.suitTimeSlotType!='1'">
2024-09-25 16:25:10 +08:00
<el-checkbox v-for="(item,index) in weekList" :key="index" :label="item"></el-checkbox>
</el-checkbox-group>
</div>
2024-09-25 15:56:24 +08:00
<el-radio :label="'2'">每月
<el-select :disabled="form2.suitTimeSlotType!='2'" v-model="monthDay" placeholder="请选择每月固定日期" multiple style="margin-left: 20px">
2024-08-16 18:26:19 +08:00
<el-option
v-for="item in 31"
2024-09-26 15:19:59 +08:00
:key="item+''"
2024-08-16 18:26:19 +08:00
:label="item+'日'"
2024-09-26 15:19:59 +08:00
:value="item+''">
2024-08-16 18:26:19 +08:00
</el-option>
</el-select>
2024-09-25 15:56:24 +08:00
</el-radio>
</el-radio-group>
2024-08-16 18:26:19 +08:00
</div>
<div style="margin-top: 20px">
2024-09-19 10:41:11 +08:00
<el-form-item label="时间段" prop="suitTimeSlotFront" label-width="70px">
2024-08-16 18:26:19 +08:00
<el-time-picker
v-model="form2.suitTimeSlotFront"
format="HH:mm"
2024-08-27 10:18:27 +08:00
value-format="HH:mm"
2024-08-16 18:26:19 +08:00
placeholder="请选择开始时间点">
</el-time-picker>
<el-time-picker
v-model="form2.suitTimeSlotAfter"
format="HH:mm"
2024-08-27 10:18:27 +08:00
value-format="HH:mm"
2024-08-16 18:26:19 +08:00
placeholder="请选择结束时间点">
</el-time-picker>
</el-form-item>
</div>
</el-form-item>
2024-09-25 15:56:24 +08:00
<el-form-item v-else label="不适用时间段" prop="noUseTimeType">
2024-08-16 18:26:19 +08:00
<div>
2024-09-25 15:56:24 +08:00
<el-radio-group v-model="form2.noUseTimeType">
<el-radio :label="'1'">每周
<el-checkbox-group v-model="weekDay1" style="margin-left: 20px" :disabled="form2.noUseTimeType!='1'">
<el-checkbox v-for="(item,index) in weekList" :key="index" :label="item"></el-checkbox>
</el-checkbox-group>
</el-radio>
<el-radio :label="'2'">每月
<el-select :disabled="form2.noUseTimeType!='2'" v-model="monthDay1" placeholder="请选择每月固定日期" multiple style="margin-left: 20px">
<el-option
v-for="item in 31"
2024-09-26 15:19:59 +08:00
:key="item+''"
2024-09-25 15:56:24 +08:00
:label="item+'日'"
2024-09-26 15:19:59 +08:00
:value="item+''">
2024-09-25 15:56:24 +08:00
</el-option>
</el-select>
</el-radio>
</el-radio-group>
2024-08-16 18:26:19 +08:00
</div>
<div style="margin-top: 20px">
2024-09-19 10:41:11 +08:00
<el-form-item label="时间段" prop="noUseTimeFront" label-width="70px">
2024-08-16 18:26:19 +08:00
<el-time-picker
v-model="form2.noUseTimeFront"
format="HH:mm"
2024-08-27 10:18:27 +08:00
value-format="HH:mm"
2024-08-16 18:26:19 +08:00
placeholder="请选择开始时间点">
</el-time-picker>
<el-time-picker
v-model="form2.noUseTimeAfter"
format="HH:mm"
2024-08-27 10:18:27 +08:00
value-format="HH:mm"
2024-08-16 18:26:19 +08:00
placeholder="请选择结束时间点">
</el-time-picker>
</el-form-item>
</div>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm2"> </el-button>
<el-button @click="cancel2"> </el-button>
</div>
</el-dialog>
<el-dialog title="优惠券列表" :visible.sync="dialogTableVisible">
<div style="display: flex;align-items: center; margin-bottom: 20px ">
<el-input v-model="youhuiquan.name" placeholder="优惠券名称"></el-input>
<el-button type="primary" icon="el-icon-search" @click="getlistFavorable">搜索</el-button>
</div>
<el-table
:data="tableData"
border
style="width: 100%">
<el-table-column
prop="name"
label="卡券名称"
width="100">
</el-table-column>
<el-table-column
prop="date"
label="券类型"
width="100">
<template slot-scope="scope">
<span v-if="scope.row.discountType == 0">满减券</span>
<span v-if="scope.row.discountType == 1">折扣券</span>
<!-- <span v-if="scope.row.type == 2" >通用券</span>-->
</template>
</el-table-column>
<el-table-column
prop="date"
label="券详情"
width="100">
<template slot-scope="scope">
<span>{{ scope.row.satisfiedAmount }} {{ scope.row.discountAmount }} </span>
</template>
</el-table-column>
<el-table-column
prop="date"
label="有效期(天)"
width="180">
<template slot-scope="scope">
<span v-if="scope.row.timeType == 0">{{ scope.row.validityZero }} </span>
<span v-if="scope.row.timeType == 1">{{ scope.row.validityOne }} </span>
<span v-if="scope.row.timeType == 2">{{ scope.row.validityTwo }} </span>
</template>
</el-table-column>
<el-table-column
prop="address"
label="操作">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="chosedata(scope.row)"
>选择
</el-button>
</template>
</el-table-column>
</el-table>
<div>
<pagination
v-show="ytotal>0"
:total="ytotal"
:page.sync="youhuiquan.pageNum"
:limit.sync="youhuiquan.pageSize"
@pagination="getlistFavorable"
/>
</div>
</el-dialog>
<!-- 兑换券列表-->
<el-dialog title="兑换券列表" :visible.sync="dialogTableVisibledh">
<div style="display: flex;align-items: center; margin-bottom: 20px ">
<el-input v-model="duihuanquan.name" placeholder="兑换券名称"></el-input>
<el-button type="primary" icon="el-icon-search" @click="getlistExchange">搜索</el-button>
</div>
<el-table
:data="tableDatadh"
border
style="width: 100%">
<el-table-column
prop="name"
label="卡券名称"
width="100">
</el-table-column>
<el-table-column
prop="date"
label="券类型"
width="100">
<template slot-scope="scope">
<span v-if="scope.row.type == 0">商品兑换券</span>
<span v-if="scope.row.type == 1">洗车券</span>
<!-- <span v-if="scope.row.type == 2" >通用券</span>-->
</template>
</el-table-column>
<el-table-column
prop="date"
label="使用说明"
width="100">
<template slot-scope="scope">
<span>{{ scope.row.useInstructions }}</span>
</template>
</el-table-column>
<el-table-column
prop="date"
label="有效期(天)"
width="180">
<template slot-scope="scope">
<span>{{ scope.row.validity }} </span>
</template>
</el-table-column>
<el-table-column
prop="address"
label="操作">
<template slot-scope="scope">
<el-button
size="mini"
type="text"
@click="Favorabledata(scope.row)"
>选择
</el-button>
</template>
</el-table-column>
</el-table>
<div>
<pagination
v-show="dtotal>0"
:total="dtotal"
:page.sync="duihuanquan.pageNum"
:limit.sync="duihuanquan.pageSize"
@pagination="getlistExchange"
/>
</div>
</el-dialog>
</div>
</template>
<script>
import {updateUserGradeStatus} from "@/api/userGrade";
import {
addUserGrade,
delUserGrade,
getUserGrade,
listUserGrade,
queryUserGrade,
updateUserGrade
} from "@/api/staff/user/usergrade";
import {getChainStoreConfig, updateChainStoreConfig} from "@/api/staff/user/chainstoreconfig";
import {getSysConfig} from "@/api/staff/user/sysconfig";
import {updateStoreRule} from "@/api/staff/store";
import {listExchange, listFavorable} from "@/api/EventMarketing/activeConsumption";
import {
addUserDiscount,
deleteUserDiscount,
editUserDiscount,
getUserDiscount,
listUserDiscount
} from "@/api/userGroup/userDiscount";
export default {
name: "UserGradeIndex",
2024-08-27 10:18:27 +08:00
dicts: ['yhlx', 'zhzt', 'yhhdz', 'payment_type'],
2024-08-16 18:26:19 +08:00
data() {
return {
2024-08-27 10:18:27 +08:00
vptions: [{
value: '选项1',
label: '指定消费金额'
}, {
value: '选项2',
label: '指定消费次数'
}, {
value: '选项3',
label: '无消费金额与次数'
},],
caedlist: [{
value: '选项1',
label: '储值卡'
}, {
value: '选项2',
label: '囤油卡'
}, {
value: '选项3',
label: '借记卡'
},],
viplist: [
{
value: '选项1',
label: '青铜会员'
}, {
value: '选项2',
label: '白银会员'
},
],
2024-08-16 18:26:19 +08:00
options: [{
value: 1,
label: 1
}, {
value: 10,
label: 10
}, {
value: 100,
label: 100
}, {
value: 1000,
label: 1000
}],
value: '',
tabindex: 0,
tabs: [
{
name: "会员设置",
},
{
name: "会员等级",
},
{
name: "会员折扣",
},
],
tableDatas: [],//公共选择区域
tableDatas1: [],//公共选择区域
tableDatadh: [],//兑换券
//请求优惠券列表时的参数
youhuiquan: {
name: '',
pageNum: 1,
pageSize: 10,
},
//请求兑换券列表时的参数
duihuanquan: {
name: '',
pageNum: 1,
pageSize: 10,
total: 0
},
ytotal: 0,
dtotal: 0,
dialogTableVisible: false,
dialogTableVisibledh: false,//兑换券
tableData: [],
level1: true,
level2: false,
// 是否开启等级功能
isEnableLevel: "",
chainStoreConfig: {
isEnableLevel: "no"
},
// 优惠值
gasolinePreferential: [
{
gasolineRule1: 1,
gasolineRule2: 1,
gasolineRule3: 1,
}
],
dieselPreferential: [
{
dieselRule1: 1,
dieselRule2: 1,
dieselRule3: 1,
}
],
naturalGasPreferential: [
{
naturalGas1: 1,
naturalGas2: 1,
naturalGas3: 1,
}
],
// 会员等级规则说明
memberLevelRule: [],
// 等级清算规则
levelClearRule: [],
// 成长值计算规则
growthValueRule: [],
// 汽油消费金额
gasConsumeAmount: 0,
// 汽油成长值
gasGrowthValue: 0,
// 柴油消费金额
dieselConsumeAmount: 0,
// 柴油成长值
dieselGrowthValue: 0,
// 天然气消费金额
naturalConsumeAmount: 0,
// 天然气成长值
naturalGrowthValue: 0,
// 会员充值消费金额
rechargeConsumeAmount: 0,
// 会员充值成长值
rechargeGrowthValue: 0,
clear: '',
// 遮罩层
loading: true,
// 标题
title: "",
// 选中数组
ids: [],
// 非多个禁用
multiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
total: 0,
// 表格数据
list: [],
// 升级条件
catchTypeList: [],
// 是否显示弹出层
open: false,
2024-09-25 15:56:24 +08:00
form2: {
availableOrUn:'0'
},
2024-08-16 18:26:19 +08:00
open2: false,
gradeList: [],
clearList: [
{value: 'clear_month', label: '按月清算'},
{value: 'clear_year', label: '按年清算'},
{value: 'clear_no', label: '不清算'},
],
tindex: 0,
2024-08-27 10:18:27 +08:00
useGradeList: ["根据消费金额降级", "根据储值卡余额降级"],
2024-08-16 18:26:19 +08:00
useTypeList: ["可用", "不可用"],
tindex1: 0,
dateTypeList: ["永久", "自定义"],
tindex2: 0,
weekMonthTypeList: ["每周", "每月"],
tindex3: 0,
tindex4: 0,
2024-08-27 10:18:27 +08:00
tindex5: 0,
2024-08-16 18:26:19 +08:00
weekList: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
weekDay: [],
monthDay: [],
weekDay1: [],
monthDay1: [],
// 等级开启信息
map: {
isEnableLevel: this.isEnableLevel,
isMonthClear: this.clear,
},
// 默认排序
defaultSort: {prop: 'createTime', order: 'descending'},
// 表单参数
form: {
id: '', grade: "", name: '', gasoline: 1, dieselOil: 1, naturalGas: 1, preferential: '自定义优惠',
gasolineDiscount: '无优惠', dieselDiscount: '无优惠', naturalGasDiscount: '无优惠', promotionGroup: '',
// catchCondition: '', userPrivilege: '', catchType: '', catchValue: '', validDay: '',discount: '', speedPoint: '',
status: 'qy',
tableDatas: [],
},
// 查询参数
queryParams: {
page: 1,
pageSize: 10,
name: '',
catchType: '',
status: ''
},
2024-08-27 10:18:27 +08:00
amount: [],//金额数组
balance: [],//余额数组
2024-08-16 18:26:19 +08:00
pdidlist: [],//判断优惠券id
pddhidlist: [],//判断兑换券id
// 查询参数
queryParams1: {
page: 1,
pageSize: 10,
},
beginTime1: "",
endTime1: "",
total1: 0,
discountList: [],
// 查询参数
queryParams2: {
page: 1,
pageSize: 10,
},
beginTime2: "",
endTime2: "",
total2: 0,
// 表单校验
rules: {
2024-09-25 15:56:24 +08:00
availableOrUn:[
{required: true, message: "不能为空", trigger: "blur"},
],
2024-08-16 18:26:19 +08:00
grade: [
2024-08-27 10:18:27 +08:00
{required: true, message: "升降顺序不能为空", trigger: "blur"},
2024-08-16 18:26:19 +08:00
{pattern: /^[0-9]{1,10}$/, message: `必须正整数`, trigger: 'blur'}
],
name: [
{required: true, message: "等级名称不能为空", trigger: "blur"},
],
2024-08-27 10:18:27 +08:00
openCardAmount: [
{required: true, message: "开卡金额不能为空", trigger: "blur"},
],
2024-08-16 18:26:19 +08:00
growthValue: [
{required: true, message: "请填写会员升级所需成长值", trigger: "blur"},
],
2024-08-27 10:18:27 +08:00
relegateRuleType: [
{required: true, message: "请选择会员降级规则", trigger: "blur"},
],
gradeIllustrate: [
{required: true, message: "等级说明不能为空", trigger: "blur"},
],
userEquity: [
{required: true, message: "会员权益不能为空", trigger: "blur"},
],
2024-08-16 18:26:19 +08:00
ifRechargeCoupon: [
{required: true, message: "请选择充值时是否赠送优惠券或兑换券", trigger: "blur"},
],
gasoline: [
{required: true, message: "请填写汽油成长值", trigger: "blur"},
],
dieselOil: [
{required: true, message: "请填写柴油成长值", trigger: "blur"},
],
naturalGas: [
{required: true, message: "请填写天然气成长值", trigger: "blur"},
],
preferential: [
{required: true, message: "请选择优惠类型", trigger: "blur"},
],
status: [
{required: true, message: "会员等级状态", trigger: "blur"},
],
speedPoint: [
{required: true, message: "请输入加分加速倍数", trigger: "blur"},
],
2024-08-27 10:18:27 +08:00
gradeId: [
{required: true, message: "请选择会员等级", trigger: "blur"},
],
usePaymentWay: [
{required: true, message: "请选择可使用支付方式", trigger: "blur"},
],
discount: [
{required: true, message: "请输入折扣", trigger: "blur"},
],
consumeAmount: [
{required: true, message: "请输入最低消费金额", trigger: "blur"},
],
holidayIsUse: [
{required: true, message: "请选择节假日是否通用", trigger: "blur"},
],
suitDateType: [
{required: true, message: "请选择适用日期", trigger: "blur"},
],
suitTimeSlotType: [
{required: true, message: "请选择适用时间段", trigger: "blur"},
],
2024-09-25 15:56:24 +08:00
noUseTimeType: [
{required: true, message: "请选择不适用时间段", trigger: "blur"},
],
2024-08-27 10:18:27 +08:00
suitTimeSlotFront: [
{required: true, message: "请选择适用时间段", trigger: "blur"},
],
noUseDate: [
2024-09-25 15:56:24 +08:00
{required: true, message: "请选择不适用时间段", trigger: "blur"},
2024-08-27 10:18:27 +08:00
],
noUseTimeFront: [
2024-09-25 15:56:24 +08:00
{required: true, message: "请选择不适用时间段", trigger: "blur"},
2024-08-27 10:18:27 +08:00
],
2024-08-16 18:26:19 +08:00
}
};
},
created() {
// this.getList();
this.getClearConfig();
this.getRule();
this.getISEnableLevel();
2024-08-31 13:51:23 +08:00
if (this.$route.query.id){
this.getindex(2)
}
2024-08-16 18:26:19 +08:00
},
methods: {
2024-08-27 10:18:27 +08:00
addlsit() {
if (this.tindex5 == 0) {
let obj = {
moon: '',
value: '选项1',
first: '',
grade: ''
}
this.amount.push(obj)
}
if (this.tindex5 == 1) {
let obj = {
card: '选项1',
first: '',
grade: ''
}
this.balance.push(obj)
}
},
deleteamount(index) {
if (this.tindex5 == 0) {
this.amount.splice(index, 1);
}
if (this.tindex5 == 1) {
this.balance.splice(index, 1);
}
},
2024-08-16 18:26:19 +08:00
// 取消按钮
cancel2() {
this.open2 = false;
},
// 提交按钮
submitForm2: function () {
this.$refs["form2"].validate(valid => {
if (valid) {
this.form2.usePaymentWay = this.form2.usePaymentWay.toString()
2024-08-27 10:18:27 +08:00
if (this.form2.suitTimeSlotType == 0) {
2024-08-16 18:26:19 +08:00
this.form2.suitDate = this.weekDay.toString()
2024-08-27 10:18:27 +08:00
} else {
2024-08-16 18:26:19 +08:00
this.form2.suitDate = this.monthDay.toString()
}
2024-08-27 10:18:27 +08:00
if (this.form2.noUseTimeType == 0) {
2024-08-16 18:26:19 +08:00
this.form2.noUseDate = this.weekDay1.toString()
2024-08-27 10:18:27 +08:00
} else {
2024-08-16 18:26:19 +08:00
this.form2.noUseDate = this.monthDay1.toString()
}
if (!this.form2.id) {
addUserDiscount(this.form2).then(res => {
this.$message.success("添加成功")
this.open2 = false
this.queryParams2.page = 1;
this.getList2()
})
} else {
editUserDiscount(this.form2).then(res => {
this.$message.success("修改成功")
this.open2 = false
this.queryParams2.page = 1;
this.getList2()
})
}
}
});
},
Typeindex(index, data) {
this.tindex = index
this.chainStoreConfig.isMonthClear = data.value
},
Typeindex1(index) {
this.tindex1 = index
this.form2.holidayIsUse = index
},
Typeindex2(index) {
this.tindex2 = index
this.form2.suitDateType = index
},
Typeindex3(index) {
this.tindex3 = index
this.form2.suitTimeSlotType = index
},
Typeindex4(index) {
this.tindex4 = index
this.form2.noUseTimeType = index
2024-08-27 10:18:27 +08:00
},
Typeindex5(index) {
this.tindex5 = index
this.form.relegateRuleType = index
2024-08-16 18:26:19 +08:00
},
// 搜索按钮操作
handleQuery2() {
this.queryParams2.page = 1;
this.getList2();
},
// 重置按钮操作
resetQuery2() {
this.queryParams2 = {
page: 1,
pageSize: 10,
}
this.beginTime2 = ''
this.endTime2 = ''
this.handleQuery2();
},
handleAdd2() {
this.form2 = {
2024-08-27 10:18:27 +08:00
usePaymentWay: [],
2024-09-25 15:56:24 +08:00
holidayIsUse: '0',
suitDateType: '0',
suitTimeSlotType: '0',
noUseTimeType: '0',
availableOrUn:'0'
2024-08-16 18:26:19 +08:00
}
2024-08-27 10:18:27 +08:00
this.weekDay = []
this.monthDay = []
this.weekDay1 = []
this.monthDay1 = []
2024-08-16 18:26:19 +08:00
this.open2 = true
this.title = "新增折扣"
},
// 修改按钮操作
handleUpdate2(row) {
getUserDiscount(row.id).then(res => {
2024-08-27 10:18:27 +08:00
this.open2 = true;
this.form2 = res.data;
if (res.data.suitDate) {
if (res.data.suitTimeSlotType == 0) {
this.weekDay = res.data.suitDate.split(",")
} else if (res.data.suitTimeSlotType == 1) {
this.monthDay = res.data.suitDate.split(",")
2024-08-16 18:26:19 +08:00
}
} else {
this.monthDay = []
this.weekDay = []
}
2024-08-27 10:18:27 +08:00
if (res.data.noUseDate) {
if (res.data.noUseTimeType == 0) {
this.weekDay1 = res.data.noUseDate.split(",")
} else if (res.data.noUseTimeType == 1) {
this.monthDay1 = res.data.noUseDate.split(",")
}
} else {
this.monthDay1 = []
this.weekDay1 = []
}
this.form2.usePaymentWay = res.data.usePaymentWay.split(",")
this.tindex1 = res.data.holidayIsUse
this.tindex2 = res.data.suitDateType
this.tindex3 = res.data.suitTimeSlotType
this.tindex4 = res.data.noUseTimeType
2024-08-16 18:26:19 +08:00
this.title = "修改会员折扣"
})
},
// 删除按钮操作
handleDelete2(row) {
const name = row.labelName || this.id;
this.$modal.confirm('是否删除本条数据,删除后无法恢复!').then(function () {
return deleteUserDiscount(row.id);
}).then(() => {
this.queryParams2.page = 1
this.getList2();
this.$modal.msgSuccess("删除成功");
}).catch(() => {
});
},
getList2() {
let dateRange = []
if (this.beginTime2 && this.endTime2) {
dateRange.push(this.beginTime2.toLocaleDateString())
dateRange.push(this.endTime2.toLocaleDateString())
}
listUserDiscount(this.addDateRange(this.queryParams2, dateRange)).then(res => {
this.discountList = res.data.records
this.total2 = res.data.total
})
listUserGrade({page: 1, pageSize: 1000}).then(response => {
this.gradeList = response.data.records;
})
},
// 搜索按钮操作
handleQuery1() {
this.queryParams1.page = 1;
this.getList();
},
// 重置按钮操作
resetQuery1() {
this.queryParams1 = {
page: 1,
pageSize: 10,
}
this.beginTime1 = ''
this.endTime1 = ''
this.handleQuery2();
},
getindex(index) {
this.tabindex = index
if (index == 0) {
this.getISEnableLevel()
} else if (index == 1) {
this.getList()
} else if (index == 2) {
this.getList2()
}
},
// 兑换券删除
deletedhdata(row) {
if (this.tableDatas && this.tableDatas.length > 0) {
let delIdx = -1;
for (let item of this.tableDatas) {
delIdx++;
if (item.id === row.id) {
break
}
}
this.pddhidlist.splice(delIdx, 1);
this.tableDatas.splice(delIdx, 1);
}
},
// 请求兑换券
getlistExchange() {
this.tableDatadh = []
listExchange(this.duihuanquan).then(res => {
if (res.code == 200) {
this.dialogTableVisibledh = true
this.tableDatadh = res.data.records
this.dtotal = res.data.total
}
})
},
// 兑换券券列表选择
Favorabledata(row) {
this.dialogTableVisibledh = false
if (this.pddhidlist.indexOf(row.id) > -1) {
this.$message.error("该兑换卡券已存在")
return
}
this.pddhidlist.push(row.id)
console.log(row)
let data = {
activeGift: 2, //充值赠送类型1、赠送优惠券 2、赠送兑换券
vouchersId: row.id, //券id
giftCardName: row.name, //赠送卡券名称
giftCardType: row.type, //券类型
validityZero: null,
validityOne: null,
validityTwo: null,
validity: row.validity,
giftCardDetail: row.cardDetail, //券详情
giftCardTime: row.validity, //券有效期
giftCardTotal: 1, //券数量
instruction: row.useInstructions, //使用说明
}
this.tableDatas.push(data)
this.$message.success("新增成功")
},
// 优惠券列表选择
chosedata(row) {
this.dialogTableVisible = false
if (this.pdidlist.indexOf(row.id) > -1) {
this.$message.error("该优惠卡券已存在")
return
}
this.pdidlist.push(row.id)
let data = {
activeGift: 1, //充值赠送类型1、赠送优惠券 2、赠送兑换券
vouchersId: row.id, //券id
giftCardName: row.name, //赠送卡券名称
giftCardType: row.discountType, //券类型
timeType: row.timeType,
validityZero: row.validityZero,
validityOne: row.validityOne,
validityTwo: row.validityTwo,
giftCardDetail: row.cardDetail, //券详情
giftCardTime: "", //券有效期
giftCardTotal: 1,//券数量
instruction: row.instruction,//使用说明
}
this.tableDatas1.push(data)
this.$message.success("新增成功")
},
// 优惠券删除
deletedata(row) {
if (this.tableDatas1 && this.tableDatas1.length > 0) {
let delIdx = -1;
for (let item of this.tableDatas1) {
delIdx++;
if (item.id === row.id) {
break
}
}
this.pdidlist.splice(delIdx, 1);
this.tableDatas1.splice(delIdx, 1);
}
},
// 请求优惠券
getlistFavorable() {
this.tableData = []
listFavorable(this.youhuiquan).then(res => {
if (res.code == 200) {
this.dialogTableVisible = true
this.tableData = res.data.records
this.ytotal = res.data.total
}
})
},
editChainStoreConfig() {
updateChainStoreConfig(this.chainStoreConfig).then(res => {
this.$message.success("修改成功")
this.getISEnableLevel()
})
},
// 是否开启等级功能
getISEnableLevel() {
getChainStoreConfig().then(response => {
if (response.data) {
this.chainStoreConfig = response.data
if (response.data.isMonthClear == "clear_month") {
this.tindex = 0
} else if (response.data.isMonthClear == "clear_year") {
this.tindex = 1
} else if (response.data.isMonthClear == "clear_no") {
this.tindex = 2
}
this.isEnableLevel = response.data.isEnableLevel;
this.clear = response.data.isMonthClear;
if (response.data.gasGrowthValue) {
this.gasGrowthValue = response.data.gasGrowthValue;
}
if (response.data.dieselGrowthValue) {
this.dieselGrowthValue = response.data.dieselGrowthValue;
}
if (response.data.naturalGrowthValue) {
this.naturalGrowthValue = response.data.naturalGrowthValue;
}
if (response.data.isEnableLevel == "no") {
this.level1 = true;
this.level2 = false;
} else {
this.level1 = false;
this.level2 = true;
}
}
})
// getSysConfig('is_enable_level').then(response => {
// this.isEnableLevel = response.data
// if (response.data=="no"){
// this.level1 = true;
// this.level2 = false;
// }else {
// this.level1 = false;
// this.level2 = true;
// }
// });
},
isOpen() {
if (this.level1) {
this.editLevel2()
} else {
this.editLevel1()
}
},
editLevel1() {
this.map.isEnableLevel = "yes"
this.map.isMonthClear = this.clear
updateStoreRule(this.map).then(res => {
this.level1 = false;
this.level2 = true;
this.$modal.msgSuccess("等级状态更新成功");
this.getISEnableLevel();
})
},
editLevel2() {
this.map.isEnableLevel = "no"
this.map.isMonthClear = this.clear
updateStoreRule(this.map).then(res => {
this.level1 = true;
this.level2 = false;
this.$modal.msgSuccess("等级状态更新成功");
this.getISEnableLevel();
})
},
addGasOline() {
let temp = {
gasolineRule1: 1,
gasolineRule2: 1,
gasolineRule3: 1,
}
this.gasolinePreferential.push(temp);
},
subGasOline(idx) {
this.gasolinePreferential.splice(idx, 1);
},
addDiesel() {
let temp = {
dieselRule1: 1,
dieselRule2: 1,
dieselRule3: 1,
}
this.dieselPreferential.push(temp);
},
subDiesel(idx) {
this.dieselPreferential.splice(idx, 1);
},
addNaturalGas() {
let temp = {
naturalGas1: 1,
naturalGas2: 1,
naturalGas3: 1,
}
this.naturalGasPreferential.push(temp);
},
subNaturalGas(idx) {
this.naturalGasPreferential.splice(idx, 1);
},
// 获取规则信息
getRule() {
getSysConfig('member_level_rule').then(response => {
this.memberLevelRule = response.data.split(";")
});
getSysConfig('level_clear_rule').then(response => {
this.levelClearRule = response.data.split(";")
});
getSysConfig('growth_value_rule').then(response => {
this.growthValueRule = response.data.split(";")
});
},
// 查询连锁店配置信息
getClearConfig() {
getChainStoreConfig().then(response => {
if (response.data) this.clear = response.data.levelClearRule;
})
},
// 修改清算规则
updateClearConfig() {
this.map.isEnableLevel = this.isEnableLevel;
this.map.isMonthClear = this.clear;
updateStoreRule(this.map).then(response => {
this.$modal.msgSuccess("修改成功");
this.getISEnableLevel();
});
},
// 查询列表
getList() {
this.loading = true;
listUserGrade(this.queryParams).then(response => {
this.list = response.data.records;
this.total = response.data.total;
this.loading = false;
})
2024-08-27 10:18:27 +08:00
listUserGrade({page: 1, pageSize: 1000}).then(response => {
this.gradeList = response.data.records;
})
2024-08-16 18:26:19 +08:00
},
// 搜索按钮操作
handleQuery() {
this.queryParams.page = 1;
this.getList();
},
// 重置按钮操作
resetQuery() {
this.dateRange = [];
this.resetForm("queryForm");
this.$refs.tables.sort(this.defaultSort.prop, this.defaultSort.order)
this.handleQuery();
},
// 状态修改
handleStatusChange(row) {
let text = row.status == "A" ? "启用" : "禁用";
this.$modal.confirm('确认要' + text + '"' + row.name + '"吗?').then(function () {
return updateUserGradeStatus(row.id, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function () {
row.status = row.status === "N" ? "A" : "N";
});
},
// 多选框选中数据
handleSelectionChange(selection) {
this.ids = selection.map(item => item.id)
this.multiple = !selection.length
},
// 排序触发事件
handleSortChange(column, prop, order) {
this.queryParams.orderByColumn = column.prop;
this.queryParams.isAsc = column.order;
this.getList();
},
// 新增按钮操作
handleAdd() {
this.reset();
this.open = true;
this.title = "新增会员等级";
},
// 表单重置
reset() {
this.form = {
id: '', grade: "", name: '', gasoline: 1, dieselOil: 1, naturalGas: 1, preferential: '自定义优惠',
gasolineDiscount: '无优惠', dieselDiscount: '无优惠', naturalGasDiscount: '无优惠', promotionGroup: '',
2024-08-27 10:18:27 +08:00
status: 'qy', relegateRuleType: 0
2024-08-16 18:26:19 +08:00
};
this.gasolinePreferential = [
{
gasolineRule1: 1,
gasolineRule2: 1,
gasolineRule3: 1,
}
2024-08-27 10:18:27 +08:00
]
this.dieselPreferential = [
{
dieselRule1: 1,
dieselRule2: 1,
dieselRule3: 1,
}
]
this.naturalGasPreferential = [
{
naturalGas1: 1,
naturalGas2: 1,
naturalGas3: 1,
}
]
this.amount = []
this.balance = []
this.resetForm("form");
2024-08-16 18:26:19 +08:00
},
// 取消按钮
cancel() {
this.open = false;
this.reset();
},
// 提交按钮
submitForm() {
2024-08-27 10:18:27 +08:00
if (this.form.relegateRuleType == 0) {
let flag = false;
this.amount.forEach(item => {
if (!item.moon || !item.first || !item.grade) {
flag = true
}
})
if (flag || this.amount.length==0) {
this.$message.error("请确保会员降级规则全部填写")
return;
}
} else {
let flag = false;
this.balance.forEach(item => {
if (!item.first || !item.grade) {
flag = true
}
})
if (flag || this.balance.length==0) {
this.$message.error("请确保会员降级规则全部填写")
return;
}
}
2024-08-16 18:26:19 +08:00
this.$refs["form"].validate(valid => {
if (valid) {
this.form.gasolineRule = JSON.stringify(this.gasolinePreferential)
this.form.dieselRule = JSON.stringify(this.dieselPreferential)
this.form.naturalGasRule = JSON.stringify(this.naturalGasPreferential)
2024-08-27 10:18:27 +08:00
if (this.form.activeGift) this.form.activeGift = this.form.activeGift.toString()
2024-08-16 18:26:19 +08:00
if (this.form.ifRechargeCoupon == 1) {
this.form.mtUserGradeChildList = this.tableDatas.concat(this.tableDatas1);
} else {
this.form.mtUserGradeChildList = []
}
2024-08-27 10:18:27 +08:00
if (this.form.relegateRuleType == 0) {
this.form.relegateRule = JSON.stringify(this.amount)
} else {
this.form.relegateRule = JSON.stringify(this.balance)
}
2024-08-16 18:26:19 +08:00
if (this.form.id) {
updateUserGrade(this.form).then(response => {
if (response.data == 1) {
this.$modal.msgSuccess("修改成功");
this.tableDatas1 = []
this.tableDatas = []
this.open = false;
this.getList();
} else if (response.data == 2) {
this.$modal.msgError("修改失败,已存在当前等级的会员等级信息");
} else if (response.data == 3) {
this.$modal.msgError("修改失败,会员等级名称已存在");
} else {
this.$modal.msgError("修改失败,已存在当前成长值的会员等级");
}
});
} else {
queryUserGrade({name: this.form.name}).then(response => {
if (response.data != null) {
this.$modal.msgError("会员等级名称已存在");
} else {
addUserGrade(this.form).then(res => {
if (res.data == 1) {
this.$modal.msgSuccess("新增成功");
this.open = false;
this.tableDatas1 = []
this.tableDatas = []
this.getList();
} else if (res.data == 0) {
this.$modal.msgError("新增失败最多支持20个等级");
} else {
this.$modal.msgError("新增失败,已存在当前等级的会员等级信息");
}
});
}
})
}
}
});
},
// 修改按钮操作
handleUpdate(row) {
let _this = this;
this.reset();
const id = row.id || this.ids;
this.tableDatas1 = []
this.tableDatas = []
getUserGrade(id).then(response => {
_this.form = response.data;
this.gasolinePreferential = JSON.parse(this.form.gasolineRule)
this.dieselPreferential = JSON.parse(this.form.dieselRule)
this.naturalGasPreferential = JSON.parse(this.form.naturalGasRule)
if (response.data.activeGift) {
_this.form.activeGift = response.data.activeGift.split(",")
} else {
_this.form.activeGift = []
}
if (response.data.mtUserGradeChildList.length > 0) {
response.data.mtUserGradeChildList.forEach(item => {
if (item.activeGift == '1') {
this.tableDatas1.push(item)
}
if (item.activeGift == '2') {
this.tableDatas.push(item)
}
})
}
2024-08-27 10:18:27 +08:00
if (response.data.relegateRule) {
if (response.data.relegateRuleType == 0) {
this.amount = JSON.parse(response.data.relegateRule)
}else if (response.data.relegateRuleType == 1){
this.balance = JSON.parse(response.data.relegateRule)
}
}
2024-08-16 18:26:19 +08:00
this.open = true;
this.title = "编辑会员等级";
});
},
// 删除按钮操作
handleDelete(row) {
const name = row.name
this.$modal.confirm('是否确认删除"' + name + '"的数据项?').then(function () {
// return deleteUserGrade(row.id);
return delUserGrade(row.id);
}).then(() => {
this.queryParams.page = 1
this.$modal.msgSuccess("删除成功");
this.getList();
}).catch(() => {
});
}
}
};
</script>
<style scoped lang="scss">
.kuang {
color: #FF9655;
background-color: #fff0e7;
border-radius: 20px;
margin: 5px;
font-size: 12px;
padding: 5px 20px;
}
.levelBorder {
width: 3px;
height: 20px;
background: #FF9655;
border-radius: 3px;
margin-right: 10px;
}
.app-container {
background: #f5f7f8;
width: 100%;
height: 100vh;
padding: 0;
}
.box-bt {
width: 100%;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 18px;
}
.cot-box {
width: 98%;
border-radius: 8px;
background: #fff;
box-sizing: border-box;
padding: 20px;
margin: 0 auto;
}
.tab-box {
width: 100%;
height: 40px;
background: #fff;
display: flex;
box-sizing: border-box;
margin-bottom: 25px;
}
.tab_ {
width: 75px;
height: 100%;
//border-bottom: 2px solid #FF770F;
display: flex;
font-weight: 500;
font-size: 14px;
color: #999999;
align-items: center;
justify-content: center;
margin-left: 50px;
cursor: pointer;
}
.active {
border-bottom: 2px solid #FF770F !important;
color: #FF770F !important;
}
.d-s {
display: flex;
align-items: center;
}
.icon-type {
display: flex;
align-items: center;
font-weight: 400;
font-size: 14px;
color: #999999;
margin-right: 20px;
cursor: pointer;
}
.acvtive {
color: #FF770F !important;
}
.czz {
height: 50px;
line-height: 50px;
margin-top: 15px;
}
.czzbl {
margin-left: 10px;
margin-right: 10px;
}
2024-08-27 10:18:27 +08:00
.h-size {
width: 90px;
}
2024-08-16 18:26:19 +08:00
</style>