更新优化

This commit is contained in:
gyq
2025-11-06 09:58:05 +08:00
parent 1a4a8515c3
commit 2432c53a73
16 changed files with 289 additions and 288 deletions

View File

@@ -2,82 +2,85 @@
<template>
<div class="gyq_container">
<div class="gyq_content">
<HeaderCard name="消费返现" intro="允许客户充值并使用余额支付" icon="xffx"
:showSwitch="shopInfo.isHeadShop == 1 || shopInfo.shopType == 'only'" v-model:isOpen="form.isEnable">
</HeaderCard>
<div style="padding-top: 14px;">
<el-tabs v-model="tabsValue">
<el-tab-pane label="基础明细" :name="1">
<el-form ref="formRef" :model="form" :rules="rules" label-position="left" label-width="100px">
<el-form-item label="可用门店">
<el-radio-group v-model="form.useType">
<el-radio label="全部门店" value="all"></el-radio>
<el-radio label="指定门店可用" value="part"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="选择门店" prop="shopIdList" v-if="form.useType == 'part'">
<selectBranchs v-model="form.shopIdList" />
</el-form-item>
<el-form-item label="适用用户">
<el-radio-group v-model="form.applicableUser">
<el-radio label="全部用户" value="all"></el-radio>
<el-radio label="仅限新用户" value="new"></el-radio>
<el-radio label="仅会员(分店需开启超级会员可用)" value="vip"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="返现类型">
<el-radio-group v-model="form.cashbackType">
<el-radio label="按比例返现" value="percentage"></el-radio>
<el-radio label="固定金额" value="fix"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="阶梯设置" prop="stepValidate">
<div class="row">
<div class="item border" v-for="(item, index) in form.cashbackStepList" :key="index">
<div class="row_title">
<span>{{ `${index + 1}` }}</span>
<el-icon @click="form.cashbackStepList.splice(index, 1)">
<Delete />
</el-icon>
</div>
<div class="ipt">
<div class="ipt_row">
<span>返现门槛</span>
<el-input placeholder="请输入返现门槛" :maxlength="8" v-model="item.amount"
@input="e => item.amount = filterNumberInput(e)">
<template #append></template>
</el-input>
</div>
<div class="ipt_row">
<span>{{ form.cashbackType == 'percentage' ? '返现比例' : '返现金额' }}</span>
<el-input :maxlength="8"
:placeholder="form.cashbackType == 'percentage' ? '请输入返现比例' : '请输入返现金额'"
v-model="item.cashbackAmount" @input="e => item.cashbackAmount = filterNumberInput(e)">
<template #append>
{{ form.cashbackType == 'percentage' ? '%' : '元' }}
</template>
</el-input>
</div>
</div>
</div>
<div class="item" v-if="shopInfo.isHeadShop == 1 || shopInfo.shopType == 'only'">
<el-button type="primary" @click="addCashBackItem">添加阶梯</el-button>
</div>
</div>
</el-form-item>
<div v-if="shopInfo.isHeadShop == 1 || shopInfo.shopType == 'only'">
<el-form-item style="margin-top: 50px;">
<el-button type="primary" @click="submitHandle">保存</el-button>
<el-button @click="router.back()">取消</el-button>
<div v-if="shopInfo.isHeadShop == 1 || isUse">
<HeaderCard name="消费返现" intro="允许客户充值并使用余额支付" icon="xffx"
:showSwitch="shopInfo.isHeadShop == 1 || shopInfo.shopType == 'only'" v-model:isOpen="form.isEnable">
</HeaderCard>
<div style="padding-top: 14px;">
<el-tabs v-model="tabsValue">
<el-tab-pane label="基础明细" :name="1">
<el-form ref="formRef" :model="form" :rules="rules" label-position="left" label-width="100px">
<el-form-item label="可用门店">
<el-radio-group v-model="form.useType">
<el-radio label="全部门店" value="all"></el-radio>
<el-radio label="指定门店可用" value="part"></el-radio>
</el-radio-group>
</el-form-item>
</div>
</el-form>
</el-tab-pane>
<el-tab-pane label="返现明细" :name="2">
<record />
</el-tab-pane>
</el-tabs>
<el-form-item label="选择门店" prop="shopIdList" v-if="form.useType == 'part'">
<selectBranchs v-model="form.shopIdList" />
</el-form-item>
<el-form-item label="适用用户">
<el-radio-group v-model="form.applicableUser">
<el-radio label="全部用户" value="all"></el-radio>
<el-radio label="仅限新用户" value="new"></el-radio>
<el-radio label="仅会员(分店需开启超级会员可用)" value="vip"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="返现类型">
<el-radio-group v-model="form.cashbackType">
<el-radio label="按比例返现" value="percentage"></el-radio>
<el-radio label="固定金额" value="fix"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="阶梯设置" prop="stepValidate">
<div class="row">
<div class="item border" v-for="(item, index) in form.cashbackStepList" :key="index">
<div class="row_title">
<span>{{ `${index + 1}` }}</span>
<el-icon @click="form.cashbackStepList.splice(index, 1)">
<Delete />
</el-icon>
</div>
<div class="ipt">
<div class="ipt_row">
<span>返现门槛</span>
<el-input placeholder="请输入返现门槛" :maxlength="8" v-model="item.amount"
@input="e => item.amount = filterNumberInput(e)">
<template #append></template>
</el-input>
</div>
<div class="ipt_row">
<span>{{ form.cashbackType == 'percentage' ? '返现比例' : '返现金额' }}</span>
<el-input :maxlength="8"
:placeholder="form.cashbackType == 'percentage' ? '请输入返现比例' : '请输入返现金额'"
v-model="item.cashbackAmount" @input="e => item.cashbackAmount = filterNumberInput(e)">
<template #append>
{{ form.cashbackType == 'percentage' ? '%' : '元' }}
</template>
</el-input>
</div>
</div>
</div>
<div class="item" v-if="shopInfo.isHeadShop == 1 || shopInfo.shopType == 'only'">
<el-button type="primary" @click="addCashBackItem">添加阶梯</el-button>
</div>
</div>
</el-form-item>
<div v-if="shopInfo.isHeadShop == 1 || shopInfo.shopType == 'only'">
<el-form-item style="margin-top: 50px;">
<el-button type="primary" @click="submitHandle">保存</el-button>
<el-button @click="router.back()">取消</el-button>
</el-form-item>
</div>
</el-form>
</el-tab-pane>
<el-tab-pane label="返现明细" :name="2">
<record />
</el-tab-pane>
</el-tabs>
</div>
</div>
<div v-else>门店未参与消费返现或主店已关闭活动如需开启参与请联系主店</div>
</div>
</div>
</template>
@@ -182,6 +185,7 @@ function submitHandle() {
}
// 配置信息获取
const isUse = ref(false)
async function consumeCashbackAjax() {
try {
const res = await consumeCashback()
@@ -189,6 +193,22 @@ async function consumeCashbackAjax() {
res.cashbackStepList = []
}
form.value = res
if (res.isEnable == 1) {
if (res.useType == 'all' || shopInfo.value.shopType == 'only') {
isUse.value = true
} else {
let currentShopId = shopInfo.value.shopId;
res.shopIdList.some((item) => {
if (item == currentShopId) {
isUse.value = true;
return true;
}
});
}
} else {
isUse.value = false
}
} catch (error) {
console.log(error);
}