feat: 会员明细设置接口对接
This commit is contained in:
parent
54da2cb353
commit
7e8cbdb6dd
|
@ -334,5 +334,14 @@ export const mer_admin = {
|
||||||
},
|
},
|
||||||
membershipEnableList: data => {
|
membershipEnableList: data => {
|
||||||
return $http.post(`/merchant-api/membershipEnable/list`, data);
|
return $http.post(`/merchant-api/membershipEnable/list`, data);
|
||||||
|
},
|
||||||
|
membershipEnableChange: data => {
|
||||||
|
return $http.post(`/merchant-api/membershipEnable/changeEnable`, data);
|
||||||
|
},
|
||||||
|
membershipEnableGetSettings: data => {
|
||||||
|
return $http.post(`/merchant-api/membershipEnable/getSettings`, data);
|
||||||
|
},
|
||||||
|
membershipEnableSaveSettings: data => {
|
||||||
|
return $http.post(`/merchant-api/membershipEnable/saveSettings`, data);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -86,7 +86,7 @@
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span :style="{ color: getLevelColor(scope.row.levelName) }">
|
<span :style="{ color: getLevelColor(scope.row.level) }">
|
||||||
{{ scope.row.levelName }}
|
{{ scope.row.levelName }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
@ -94,21 +94,21 @@
|
||||||
<el-table-column label="所需成长值" width="200" align="center">
|
<el-table-column label="所需成长值" width="200" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="color: #1890ff; font-weight: 500;">
|
<span style="color: #1890ff; font-weight: 500;">
|
||||||
{{ scope.row.requiredGrowthValue }}
|
{{ scope.row.startGrowthValue }}-{{ scope.row.endGrowthValue }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="会员人数" width="200" align="center">
|
<el-table-column label="会员人数" width="200" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="color: #52c41a; font-weight: 500;">
|
<span style="color: #52c41a; font-weight: 500;">
|
||||||
{{ scope.row.memberCount }}
|
{{ scope.row.membershipCount }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="会员权益" align="left">
|
<el-table-column label="会员权益" align="left">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span style="color: #666; line-height: 1.5;">
|
<span style="color: #666; line-height: 1.5;">
|
||||||
{{ scope.row.memberBenefits }}
|
{{ generateMemberBenefits(scope.row) }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
|
@ -129,32 +129,29 @@
|
||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<span :style="{ color: getLevelColor(scope.row.levelName) }">
|
<span :style="{ color: getLevelColor(scope.row.level) }">
|
||||||
{{ scope.row.levelName }}
|
{{ scope.row.level }}
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="等级名称" align="center">
|
<el-table-column label="等级名称" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-input
|
<el-input v-model="scope.row.levelName" size="mini"></el-input>
|
||||||
v-model="scope.row.levelDisplayName"
|
|
||||||
size="mini"
|
|
||||||
></el-input>
|
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="成长值范围" width="280" align="center">
|
<el-table-column label="成长值范围" width="280" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<div class="growth-range">
|
<div class="growth-range">
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="scope.row.minGrowthValue"
|
v-model="scope.row.startGrowthValue"
|
||||||
:min="0"
|
:min="0"
|
||||||
size="mini"
|
size="mini"
|
||||||
style="width: 120px;"
|
style="width: 120px;"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
<span style="margin: 0 5px;">-</span>
|
<span style="margin: 0 5px;">-</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="scope.row.maxGrowthValue"
|
v-model="scope.row.endGrowthValue"
|
||||||
:min="scope.row.minGrowthValue"
|
:min="scope.row.startGrowthValue"
|
||||||
size="mini"
|
size="mini"
|
||||||
style="width: 120px;"
|
style="width: 120px;"
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
|
@ -177,20 +174,20 @@
|
||||||
></el-input-number>
|
></el-input-number>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="开启会员兑换" width="120" align="center">
|
<el-table-column label="开启积分兑换" width="120" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch v-model="scope.row.enableExchange"></el-switch>
|
<el-switch v-model="scope.row.enablePointsRedemption"></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="开启生日优惠券" width="130" align="center">
|
<el-table-column label="开启生日优惠券" width="130" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch v-model="scope.row.enableBirthdayCoupon"></el-switch>
|
<el-switch v-model="scope.row.enableBirthdayCoupons"></el-switch>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="生日优惠券操作" width="130" align="center">
|
<el-table-column label="生日优惠券操作" width="130" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-button
|
<el-button
|
||||||
v-if="scope.row.enableBirthdayCoupon"
|
v-if="scope.row.enableBirthdayCoupons"
|
||||||
type="primary"
|
type="primary"
|
||||||
size="mini"
|
size="mini"
|
||||||
@click="handleAddCoupon(scope.row)"
|
@click="handleAddCoupon(scope.row)"
|
||||||
|
@ -199,9 +196,29 @@
|
||||||
</el-button>
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column label="开启生日双倍积分" width="140" align="center">
|
<el-table-column label="开启生日双倍积分" align="center">
|
||||||
<template slot-scope="scope">
|
<template slot-scope="scope">
|
||||||
<el-switch v-model="scope.row.enableBirthdayPoints"></el-switch>
|
<el-switch v-model="scope.row.enableBirthdayReward"></el-switch>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column label="操作" width="150" align="center">
|
||||||
|
<template slot-scope="scope">
|
||||||
|
<el-button
|
||||||
|
type="primary"
|
||||||
|
size="mini"
|
||||||
|
@click="handleAddLevel(scope.$index)"
|
||||||
|
style="margin-right: 5px;"
|
||||||
|
>
|
||||||
|
新增
|
||||||
|
</el-button>
|
||||||
|
<el-button
|
||||||
|
type="danger"
|
||||||
|
size="mini"
|
||||||
|
@click="handleDeleteLevel(scope.$index)"
|
||||||
|
:disabled="editLevelData.length <= 1"
|
||||||
|
>
|
||||||
|
删除
|
||||||
|
</el-button>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@ -310,10 +327,70 @@
|
||||||
:close-on-click-modal="false"
|
:close-on-click-modal="false"
|
||||||
>
|
>
|
||||||
<div class="sign-in-form">
|
<div class="sign-in-form">
|
||||||
<div class="form-item" v-for="day in 7" :key="day">
|
<div class="form-item">
|
||||||
<span class="label">连续签到{{ day }}天</span>
|
<span class="label">连续签到1天</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="signInForm[`day${day}`]"
|
v-model="dailySignSettings.taskConfigDetail.oneDay"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">连续签到2天</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="dailySignSettings.taskConfigDetail.twoDay"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">连续签到3天</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="dailySignSettings.taskConfigDetail.threeDay"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">连续签到4天</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="dailySignSettings.taskConfigDetail.fourDay"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">连续签到5天</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="dailySignSettings.taskConfigDetail.fiveDay"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">连续签到6天</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="dailySignSettings.taskConfigDetail.sixDay"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">连续签到7天</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="dailySignSettings.taskConfigDetail.sevenDay"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -338,7 +415,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">每浏览1个商品积分增加</span>
|
<span class="label">每浏览1个商品积分增加</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="browseForm.pointsPerProduct"
|
v-model="viewGoodsSettings.taskConfigDetail.oneGoodsViewPoints"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -348,7 +425,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">该任务每日最高可获积分</span>
|
<span class="label">该任务每日最高可获积分</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="browseForm.maxPointsPerDay"
|
v-model="viewGoodsSettings.taskConfigDetail.dailyPointsLimit"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="1000"
|
:max="1000"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -373,7 +450,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">购买商品实付</span>
|
<span class="label">购买商品实付</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="purchaseForm.pointsPerYuan"
|
v-model="buyGoodsSettings.taskConfigDetail.pointsRatioAmount"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -384,7 +461,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">该任务每日最高获得</span>
|
<span class="label">该任务每日最高获得</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="purchaseForm.maxPointsPerDay"
|
v-model="buyGoodsSettings.taskConfigDetail.dailyPointsLimit"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="10000"
|
:max="10000"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -410,7 +487,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">每分享1个商品1次获得</span>
|
<span class="label">每分享1个商品1次获得</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="shareForm.pointsPerShare"
|
v-model="shareGoodsSettings.taskConfigDetail.oneSharePoints"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -421,7 +498,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">该任务每日最高获得</span>
|
<span class="label">该任务每日最高获得</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="shareForm.maxPointsPerDay"
|
v-model="shareGoodsSettings.taskConfigDetail.dailyPointsLimit"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="1000"
|
:max="1000"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -445,9 +522,22 @@
|
||||||
>
|
>
|
||||||
<div class="review-form">
|
<div class="review-form">
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">评价1个商品获得</span>
|
<span class="label">文字评价1个商品获得</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="reviewForm.pointsPerReview"
|
v-model="commentGoodsSettings.taskConfigDetail.textCommentPoints"
|
||||||
|
:min="0"
|
||||||
|
:max="100"
|
||||||
|
size="small"
|
||||||
|
controls-position="right"
|
||||||
|
></el-input-number>
|
||||||
|
<span class="unit">积分</span>
|
||||||
|
</div>
|
||||||
|
<div class="form-item">
|
||||||
|
<span class="label">图文评价1个商品获得</span>
|
||||||
|
<el-input-number
|
||||||
|
v-model="
|
||||||
|
commentGoodsSettings.taskConfigDetail.imageTextCommentPoints
|
||||||
|
"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="100"
|
:max="100"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -458,7 +548,7 @@
|
||||||
<div class="form-item">
|
<div class="form-item">
|
||||||
<span class="label">该任务每日最高获得</span>
|
<span class="label">该任务每日最高获得</span>
|
||||||
<el-input-number
|
<el-input-number
|
||||||
v-model="reviewForm.maxPointsPerDay"
|
v-model="commentGoodsSettings.taskConfigDetail.dailyPointsLimit"
|
||||||
:min="0"
|
:min="0"
|
||||||
:max="1000"
|
:max="1000"
|
||||||
size="small"
|
size="small"
|
||||||
|
@ -485,6 +575,7 @@ export default {
|
||||||
isEditMode: false,
|
isEditMode: false,
|
||||||
shopId: "", // 店铺ID
|
shopId: "", // 店铺ID
|
||||||
shopName: "", // 店铺名称
|
shopName: "", // 店铺名称
|
||||||
|
recordId: null, // 记录ID,用于调用接口获取设置数据
|
||||||
isBatchMode: false, // 是否为批量编辑模式
|
isBatchMode: false, // 是否为批量编辑模式
|
||||||
selectedShopIds: [], // 选中的店铺ID列表
|
selectedShopIds: [], // 选中的店铺ID列表
|
||||||
availableShops: [], // 可选择的店铺列表
|
availableShops: [], // 可选择的店铺列表
|
||||||
|
@ -504,30 +595,56 @@ export default {
|
||||||
minAmount: "",
|
minAmount: "",
|
||||||
validityPeriod: ""
|
validityPeriod: ""
|
||||||
},
|
},
|
||||||
signInForm: {
|
// 积分任务设置数据(按接口格式)
|
||||||
day1: 0,
|
dailySignSettings: {
|
||||||
day2: 0,
|
taskEnable: false,
|
||||||
day3: 0,
|
taskConfigDetail: {
|
||||||
day4: 0,
|
oneDay: 0,
|
||||||
day5: 0,
|
twoDay: 0,
|
||||||
day6: 0,
|
threeDay: 0,
|
||||||
day7: 0
|
fourDay: 0,
|
||||||
|
fiveDay: 0,
|
||||||
|
sixDay: 0,
|
||||||
|
sevenDay: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
},
|
},
|
||||||
browseForm: {
|
viewGoodsSettings: {
|
||||||
pointsPerProduct: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
oneGoodsViewPoints: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
},
|
},
|
||||||
purchaseForm: {
|
buyGoodsSettings: {
|
||||||
pointsPerYuan: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
pointsRatioAmount: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
},
|
},
|
||||||
shareForm: {
|
shareGoodsSettings: {
|
||||||
pointsPerShare: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
oneSharePoints: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
},
|
},
|
||||||
reviewForm: {
|
commentGoodsSettings: {
|
||||||
pointsPerReview: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
textCommentPoints: 0,
|
||||||
|
imageTextCommentPoints: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
},
|
},
|
||||||
editPointsValidityDays: 365,
|
editPointsValidityDays: 365,
|
||||||
levelDetailData: [
|
levelDetailData: [
|
||||||
|
@ -589,38 +706,6 @@ export default {
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
editLevelData: [],
|
editLevelData: [],
|
||||||
pointsTaskData: [
|
|
||||||
{
|
|
||||||
taskName: "每日签到",
|
|
||||||
taskDescription: "第一天签到1分,第二天2分,第三天3分,连续7天1折",
|
|
||||||
isEnabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
taskName: "浏览商品",
|
|
||||||
taskDescription: "浏览一个商品获得1分,每天最多获得2分",
|
|
||||||
isEnabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
taskName: "购买商品",
|
|
||||||
taskDescription: "购买1元=1分,每天最多获得500分",
|
|
||||||
isEnabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
taskName: "分享商品",
|
|
||||||
taskDescription: "分享一个商品获得5分,每天最多获得3次",
|
|
||||||
isEnabled: false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
taskName: "评价商品",
|
|
||||||
taskDescription: "评价一个商品获得3分,每天最多获得5次",
|
|
||||||
isEnabled: true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
taskName: "评价商品",
|
|
||||||
taskDescription: "评价一个商品获得10分,文字评价+4图可获得20分",
|
|
||||||
isEnabled: false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
editPointsTaskData: []
|
editPointsTaskData: []
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
@ -631,6 +716,7 @@ export default {
|
||||||
// 从路由参数获取店铺信息
|
// 从路由参数获取店铺信息
|
||||||
this.shopId = this.$route.query.shopId;
|
this.shopId = this.$route.query.shopId;
|
||||||
this.shopName = this.$route.query.shopName;
|
this.shopName = this.$route.query.shopName;
|
||||||
|
this.recordId = this.$route.query.id;
|
||||||
|
|
||||||
// 检查是否为批量编辑模式
|
// 检查是否为批量编辑模式
|
||||||
this.isBatchMode = this.$route.query.mode === "batch";
|
this.isBatchMode = this.$route.query.mode === "batch";
|
||||||
|
@ -648,9 +734,36 @@ export default {
|
||||||
} else if (this.shopId && this.shopName) {
|
} else if (this.shopId && this.shopName) {
|
||||||
// 单独店铺模式:默认进入查看模式
|
// 单独店铺模式:默认进入查看模式
|
||||||
this.isEditMode = false;
|
this.isEditMode = false;
|
||||||
|
|
||||||
|
// 如果有记录ID,获取设置数据进行回显
|
||||||
|
if (this.recordId) {
|
||||||
|
this.loadSettingsData();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
// 获取默认的等级数据
|
||||||
|
getDefaultLevelData() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
level: "LV1",
|
||||||
|
levelName: "等级1",
|
||||||
|
startGrowthValue: 0,
|
||||||
|
endGrowthValue: 100,
|
||||||
|
enableDiscount: false,
|
||||||
|
discountRate: 0,
|
||||||
|
enablePointsRedemption: false,
|
||||||
|
enableBirthdayCoupons: false,
|
||||||
|
birthdayCouponsName: "",
|
||||||
|
birthdayCouponsThreshold: 0,
|
||||||
|
birthdayCouponsMinus: 0,
|
||||||
|
couponsEffectiveTimeType: 1,
|
||||||
|
enableBirthdayReward: false,
|
||||||
|
membershipCount: 0
|
||||||
|
}
|
||||||
|
];
|
||||||
|
},
|
||||||
|
|
||||||
// 重置页面状态
|
// 重置页面状态
|
||||||
resetPageState() {
|
resetPageState() {
|
||||||
// 重置编辑状态
|
// 重置编辑状态
|
||||||
|
@ -660,11 +773,13 @@ export default {
|
||||||
// 重置店铺相关数据
|
// 重置店铺相关数据
|
||||||
this.shopId = "";
|
this.shopId = "";
|
||||||
this.shopName = "";
|
this.shopName = "";
|
||||||
|
this.recordId = null;
|
||||||
this.selectedShopIds = [];
|
this.selectedShopIds = [];
|
||||||
this.availableShops = [];
|
this.availableShops = [];
|
||||||
this.isAllSelected = false;
|
this.isAllSelected = false;
|
||||||
|
|
||||||
// 重置编辑数据
|
// 重置编辑数据
|
||||||
|
this.levelDetailData = [];
|
||||||
this.editLevelData = [];
|
this.editLevelData = [];
|
||||||
this.editPointsTaskData = [];
|
this.editPointsTaskData = [];
|
||||||
this.editPointsValidityDays = 365;
|
this.editPointsValidityDays = 365;
|
||||||
|
@ -684,33 +799,239 @@ export default {
|
||||||
minAmount: "",
|
minAmount: "",
|
||||||
validityPeriod: ""
|
validityPeriod: ""
|
||||||
};
|
};
|
||||||
this.signInForm = {
|
|
||||||
day1: 0,
|
// 重置积分任务设置数据
|
||||||
day2: 0,
|
this.dailySignSettings = {
|
||||||
day3: 0,
|
taskEnable: false,
|
||||||
day4: 0,
|
taskConfigDetail: {
|
||||||
day5: 0,
|
oneDay: 0,
|
||||||
day6: 0,
|
twoDay: 0,
|
||||||
day7: 0
|
threeDay: 0,
|
||||||
|
fourDay: 0,
|
||||||
|
fiveDay: 0,
|
||||||
|
sixDay: 0,
|
||||||
|
sevenDay: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
};
|
};
|
||||||
this.browseForm = {
|
this.viewGoodsSettings = {
|
||||||
pointsPerProduct: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
oneGoodsViewPoints: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
};
|
};
|
||||||
this.purchaseForm = {
|
this.buyGoodsSettings = {
|
||||||
pointsPerYuan: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
pointsRatioAmount: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
};
|
};
|
||||||
this.shareForm = {
|
this.shareGoodsSettings = {
|
||||||
pointsPerShare: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
oneSharePoints: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
};
|
};
|
||||||
this.reviewForm = {
|
this.commentGoodsSettings = {
|
||||||
pointsPerReview: 0,
|
taskEnable: false,
|
||||||
maxPointsPerDay: 0
|
taskConfigDetail: {
|
||||||
|
textCommentPoints: 0,
|
||||||
|
imageTextCommentPoints: 0,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 0
|
||||||
|
},
|
||||||
|
taskDesc: ""
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// 加载设置数据并进行回显
|
||||||
|
loadSettingsData() {
|
||||||
|
if (!this.recordId) {
|
||||||
|
// 没有记录ID时,查看模式下不显示数据,编辑模式下使用默认数据
|
||||||
|
this.levelDetailData = [];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$api.mer_admin
|
||||||
|
.membershipEnableGetSettings({
|
||||||
|
id: this.recordId
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
console.log("获取会员设置数据:", res);
|
||||||
|
if (res.data && res.data.code == 200) {
|
||||||
|
const settingsData = res.data.data;
|
||||||
|
this.applySettingsData(settingsData);
|
||||||
|
} else {
|
||||||
|
console.error("获取设置数据失败:", res.data?.message);
|
||||||
|
// 获取失败时,查看模式下不显示数据
|
||||||
|
this.levelDetailData = [];
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.error("获取会员设置失败:", err);
|
||||||
|
// 接口调用失败时,查看模式下不显示数据
|
||||||
|
this.levelDetailData = [];
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
// 应用设置数据到表单
|
||||||
|
applySettingsData(settingsData) {
|
||||||
|
if (!settingsData) {
|
||||||
|
// 如果获取不到设置,查看模式下不显示数据
|
||||||
|
this.levelDetailData = [];
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回显积分有效天数
|
||||||
|
if (settingsData.pointsValidDays) {
|
||||||
|
this.pointsValidityDays = settingsData.pointsValidDays;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 回显会员等级设置列表
|
||||||
|
if (
|
||||||
|
settingsData.levelSettingsList &&
|
||||||
|
settingsData.levelSettingsList.length > 0
|
||||||
|
) {
|
||||||
|
this.levelDetailData = settingsData.levelSettingsList.map(level => ({
|
||||||
|
level: level.level,
|
||||||
|
levelName: level.levelName,
|
||||||
|
startGrowthValue: level.startGrowthValue,
|
||||||
|
endGrowthValue: level.endGrowthValue,
|
||||||
|
enableDiscount: level.enableDiscount,
|
||||||
|
discountRate: level.discountRate,
|
||||||
|
enablePointsRedemption: level.enablePointsRedemption,
|
||||||
|
enableBirthdayCoupons: level.enableBirthdayCoupons,
|
||||||
|
birthdayCouponsName: level.birthdayCouponsName || "",
|
||||||
|
birthdayCouponsThreshold: level.birthdayCouponsThreshold || 0,
|
||||||
|
birthdayCouponsMinus: level.birthdayCouponsMinus || 0,
|
||||||
|
couponsEffectiveTimeType: level.couponsEffectiveTimeType || 1,
|
||||||
|
enableBirthdayReward: level.enableBirthdayReward,
|
||||||
|
membershipCount: level.membershipCount || 0
|
||||||
|
}));
|
||||||
|
} else {
|
||||||
|
// 如果没有等级设置列表,查看模式下不显示数据
|
||||||
|
this.levelDetailData = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
// 直接使用接口数据,不做映射
|
||||||
|
if (settingsData.dailySignSettings) {
|
||||||
|
this.dailySignSettings = { ...settingsData.dailySignSettings };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settingsData.viewGoodsSettings) {
|
||||||
|
this.viewGoodsSettings = { ...settingsData.viewGoodsSettings };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settingsData.buyGoodsSettings) {
|
||||||
|
this.buyGoodsSettings = { ...settingsData.buyGoodsSettings };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settingsData.shareGoodsSettings) {
|
||||||
|
this.shareGoodsSettings = { ...settingsData.shareGoodsSettings };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (settingsData.commentGoodsSettings) {
|
||||||
|
this.commentGoodsSettings = { ...settingsData.commentGoodsSettings };
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("数据回显完成");
|
||||||
|
},
|
||||||
|
|
||||||
|
// 生成会员权益描述
|
||||||
|
generateMemberBenefits(level) {
|
||||||
|
const benefits = [];
|
||||||
|
|
||||||
|
if (level.enableDiscount && level.discountRate) {
|
||||||
|
const discount = (100 - level.discountRate) / 10;
|
||||||
|
benefits.push(`享受${discount}折优惠`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level.enablePointsRedemption) {
|
||||||
|
benefits.push("积分兑换商品");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level.enableBirthdayCoupons) {
|
||||||
|
benefits.push("生日专属优惠券");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (level.enableBirthdayReward) {
|
||||||
|
benefits.push("生日双倍积分");
|
||||||
|
}
|
||||||
|
|
||||||
|
return benefits.length > 0 ? benefits.join(",") : "暂无特殊权益";
|
||||||
|
},
|
||||||
|
|
||||||
|
// 保存设置数据
|
||||||
|
saveSettingsData() {
|
||||||
|
const saveData = {
|
||||||
|
shopIdList: this.isBatchMode ? this.selectedShopIds : [this.shopId],
|
||||||
|
pointsValidDays: this.pointsValidityDays,
|
||||||
|
enable: true,
|
||||||
|
levelSettingsList: this.levelDetailData.map(level => ({
|
||||||
|
level: level.level,
|
||||||
|
levelName: level.levelName,
|
||||||
|
startGrowthValue: level.startGrowthValue,
|
||||||
|
endGrowthValue: level.endGrowthValue,
|
||||||
|
enableDiscount: level.enableDiscount,
|
||||||
|
discountRate: level.discountRate,
|
||||||
|
enablePointsRedemption: level.enablePointsRedemption,
|
||||||
|
enableBirthdayCoupons: level.enableBirthdayCoupons,
|
||||||
|
birthdayCouponsName: level.birthdayCouponsName,
|
||||||
|
birthdayCouponsThreshold: level.birthdayCouponsThreshold,
|
||||||
|
birthdayCouponsMinus: level.birthdayCouponsMinus,
|
||||||
|
couponsEffectiveTimeType: level.couponsEffectiveTimeType,
|
||||||
|
enableBirthdayReward: level.enableBirthdayReward,
|
||||||
|
membershipCount: level.membershipCount
|
||||||
|
})),
|
||||||
|
dailySignSettings: {
|
||||||
|
...this.dailySignSettings,
|
||||||
|
taskDesc: "第一天签到1分,第二天2分,第三天3分,连续7天10分"
|
||||||
|
},
|
||||||
|
buyGoodsSettings: {
|
||||||
|
...this.buyGoodsSettings,
|
||||||
|
taskDesc: "购买1元=1分,每天最多获得500分"
|
||||||
|
},
|
||||||
|
shareGoodsSettings: {
|
||||||
|
...this.shareGoodsSettings,
|
||||||
|
taskDesc: "分享一个商品获得5分,每天最多获得3次"
|
||||||
|
},
|
||||||
|
commentGoodsSettings: {
|
||||||
|
...this.commentGoodsSettings,
|
||||||
|
taskDesc: "评价一个商品获得3分,每天最多获得5次"
|
||||||
|
},
|
||||||
|
viewGoodsSettings: {
|
||||||
|
...this.viewGoodsSettings,
|
||||||
|
taskDesc: "浏览一个商品获得1分,每天最多获得2分"
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log("保存数据:", saveData);
|
||||||
|
|
||||||
|
this.$api.mer_admin
|
||||||
|
.membershipEnableSaveSettings(saveData)
|
||||||
|
.then(res => {
|
||||||
|
console.log("保存设置数据:", res);
|
||||||
|
if (res.data && res.data.code == 200) {
|
||||||
|
this.$message.success("设置保存成功");
|
||||||
|
} else {
|
||||||
|
this.$message.error(res.data?.message || "保存失败");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.error("保存设置失败:", err);
|
||||||
|
this.$message.error("保存失败");
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
goBack() {
|
goBack() {
|
||||||
// 获取当前路由名称
|
// 获取当前路由名称
|
||||||
const currentRouteName = this.$route.name;
|
const currentRouteName = this.$route.name;
|
||||||
|
@ -792,9 +1113,14 @@ export default {
|
||||||
|
|
||||||
handleEditLevel() {
|
handleEditLevel() {
|
||||||
this.isEditMode = true;
|
this.isEditMode = true;
|
||||||
|
// 如果没有等级数据,使用默认数据
|
||||||
|
if (this.levelDetailData.length === 0) {
|
||||||
|
this.levelDetailData = this.getDefaultLevelData();
|
||||||
|
}
|
||||||
// 深拷贝数据用于编辑
|
// 深拷贝数据用于编辑
|
||||||
this.editLevelData = JSON.parse(JSON.stringify(this.levelDetailData));
|
this.editLevelData = JSON.parse(JSON.stringify(this.levelDetailData));
|
||||||
this.editPointsTaskData = JSON.parse(JSON.stringify(this.pointsTaskData));
|
this.editPointsTaskData = JSON.parse(JSON.stringify(this.pointsTaskData));
|
||||||
|
console.log(this.editPointsTaskData);
|
||||||
this.editPointsValidityDays = this.pointsValidityDays;
|
this.editPointsValidityDays = this.pointsValidityDays;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -812,11 +1138,58 @@ export default {
|
||||||
handleSaveEdit() {
|
handleSaveEdit() {
|
||||||
// 保存编辑的数据
|
// 保存编辑的数据
|
||||||
this.levelDetailData = JSON.parse(JSON.stringify(this.editLevelData));
|
this.levelDetailData = JSON.parse(JSON.stringify(this.editLevelData));
|
||||||
this.pointsTaskData = JSON.parse(JSON.stringify(this.editPointsTaskData));
|
|
||||||
this.pointsValidityDays = this.editPointsValidityDays;
|
this.pointsValidityDays = this.editPointsValidityDays;
|
||||||
|
|
||||||
this.isEditMode = false;
|
this.isEditMode = false;
|
||||||
this.$message.success("保存成功");
|
|
||||||
|
// 调用保存接口
|
||||||
|
this.saveSettingsData();
|
||||||
|
},
|
||||||
|
|
||||||
|
// 新增会员等级
|
||||||
|
handleAddLevel(index) {
|
||||||
|
// 创建新的等级数据
|
||||||
|
const newLevel = {
|
||||||
|
level: `LV${this.editLevelData.length + 1}`,
|
||||||
|
levelName: `等级${this.editLevelData.length + 1}`,
|
||||||
|
startGrowthValue: 0,
|
||||||
|
endGrowthValue: 0,
|
||||||
|
enableDiscount: false,
|
||||||
|
discountRate: 0,
|
||||||
|
enablePointsRedemption: false,
|
||||||
|
enableBirthdayCoupons: false,
|
||||||
|
birthdayCouponsName: "",
|
||||||
|
birthdayCouponsThreshold: 0,
|
||||||
|
birthdayCouponsMinus: 0,
|
||||||
|
couponsEffectiveTimeType: 1,
|
||||||
|
enableBirthdayReward: false,
|
||||||
|
membershipCount: 0
|
||||||
|
};
|
||||||
|
|
||||||
|
// 在指定位置后插入新等级
|
||||||
|
this.editLevelData.splice(index + 1, 0, newLevel);
|
||||||
|
this.$message.success("新增等级成功");
|
||||||
|
},
|
||||||
|
|
||||||
|
// 删除会员等级
|
||||||
|
handleDeleteLevel(index) {
|
||||||
|
if (this.editLevelData.length <= 1) {
|
||||||
|
this.$message.warning("至少需要保留一个等级");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.$confirm("确定要删除这个等级吗?", "提示", {
|
||||||
|
confirmButtonText: "确定",
|
||||||
|
cancelButtonText: "取消",
|
||||||
|
type: "warning"
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
this.editLevelData.splice(index, 1);
|
||||||
|
this.$message.success("删除等级成功");
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// 用户取消删除
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
handleAddCoupon() {
|
handleAddCoupon() {
|
||||||
|
@ -832,78 +1205,98 @@ export default {
|
||||||
// 弹框相关方法
|
// 弹框相关方法
|
||||||
handleEditSignIn() {
|
handleEditSignIn() {
|
||||||
this.showSignInDialog = true;
|
this.showSignInDialog = true;
|
||||||
this.signInForm = {
|
// 如果没有记录ID,设置默认值
|
||||||
day1: 1,
|
if (!this.recordId) {
|
||||||
day2: 2,
|
this.dailySignSettings.taskConfigDetail = {
|
||||||
day3: 3,
|
oneDay: 1,
|
||||||
day4: 4,
|
twoDay: 2,
|
||||||
day5: 5,
|
threeDay: 3,
|
||||||
day6: 6,
|
fourDay: 4,
|
||||||
day7: 10
|
fiveDay: 5,
|
||||||
};
|
sixDay: 6,
|
||||||
|
sevenDay: 10
|
||||||
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEditBrowse() {
|
handleEditBrowse() {
|
||||||
this.showBrowseDialog = true;
|
this.showBrowseDialog = true;
|
||||||
this.browseForm = {
|
// 如果没有记录ID,设置默认值
|
||||||
pointsPerProduct: 1,
|
if (!this.recordId) {
|
||||||
maxPointsPerDay: 2
|
this.viewGoodsSettings.taskConfigDetail = {
|
||||||
};
|
oneGoodsViewPoints: 1,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 2
|
||||||
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEditPurchase() {
|
handleEditPurchase() {
|
||||||
this.showPurchaseDialog = true;
|
this.showPurchaseDialog = true;
|
||||||
this.purchaseForm = {
|
// 如果没有记录ID,设置默认值
|
||||||
pointsPerYuan: 1,
|
if (!this.recordId) {
|
||||||
maxPointsPerDay: 500
|
this.buyGoodsSettings.taskConfigDetail = {
|
||||||
};
|
pointsRatioAmount: 1,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 500
|
||||||
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEditShare() {
|
handleEditShare() {
|
||||||
this.showShareDialog = true;
|
this.showShareDialog = true;
|
||||||
this.shareForm = {
|
// 如果没有记录ID,设置默认值
|
||||||
pointsPerShare: 5,
|
if (!this.recordId) {
|
||||||
maxPointsPerDay: 15
|
this.shareGoodsSettings.taskConfigDetail = {
|
||||||
};
|
oneSharePoints: 5,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 15
|
||||||
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEditReview() {
|
handleEditReview() {
|
||||||
this.showReviewDialog = true;
|
this.showReviewDialog = true;
|
||||||
this.reviewForm = {
|
// 如果没有记录ID,设置默认值
|
||||||
pointsPerReview: 3,
|
if (!this.recordId) {
|
||||||
maxPointsPerDay: 15
|
this.commentGoodsSettings.taskConfigDetail = {
|
||||||
};
|
textCommentPoints: 3,
|
||||||
|
imageTextCommentPoints: 5,
|
||||||
|
enableDailyPointsLimit: true,
|
||||||
|
dailyPointsLimit: 15
|
||||||
|
};
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
// 保存弹框数据
|
// 保存弹框数据
|
||||||
saveCouponForm() {
|
saveCouponForm() {
|
||||||
this.$message.success("优惠券添加成功");
|
// this.$message.success("优惠券添加成功");
|
||||||
this.showCouponDialog = false;
|
this.showCouponDialog = false;
|
||||||
},
|
},
|
||||||
|
|
||||||
saveSignInForm() {
|
saveSignInForm() {
|
||||||
this.$message.success("每日签到设置保存成功");
|
|
||||||
this.showSignInDialog = false;
|
this.showSignInDialog = false;
|
||||||
|
// this.$message.success("每日签到设置已更新");
|
||||||
},
|
},
|
||||||
|
|
||||||
saveBrowseForm() {
|
saveBrowseForm() {
|
||||||
this.$message.success("浏览商品设置保存成功");
|
|
||||||
this.showBrowseDialog = false;
|
this.showBrowseDialog = false;
|
||||||
|
// this.$message.success("浏览商品设置已更新");
|
||||||
},
|
},
|
||||||
|
|
||||||
savePurchaseForm() {
|
savePurchaseForm() {
|
||||||
this.$message.success("购买商品设置保存成功");
|
|
||||||
this.showPurchaseDialog = false;
|
this.showPurchaseDialog = false;
|
||||||
|
// this.$message.success("购买商品设置已更新");
|
||||||
},
|
},
|
||||||
|
|
||||||
saveShareForm() {
|
saveShareForm() {
|
||||||
this.$message.success("分享商品设置保存成功");
|
|
||||||
this.showShareDialog = false;
|
this.showShareDialog = false;
|
||||||
|
// this.$message.success("分享商品设置已更新");
|
||||||
},
|
},
|
||||||
|
|
||||||
saveReviewForm() {
|
saveReviewForm() {
|
||||||
this.$message.success("评价商品设置保存成功");
|
|
||||||
this.showReviewDialog = false;
|
this.showReviewDialog = false;
|
||||||
|
// this.$message.success("评价商品设置已更新");
|
||||||
},
|
},
|
||||||
|
|
||||||
handleEditTask(row) {
|
handleEditTask(row) {
|
||||||
|
@ -944,7 +1337,38 @@ export default {
|
||||||
"marketList",
|
"marketList",
|
||||||
"storeList",
|
"storeList",
|
||||||
"marketId"
|
"marketId"
|
||||||
])
|
]),
|
||||||
|
|
||||||
|
// 积分任务数据,固定任务描述,开启状态从设置对象中获取
|
||||||
|
pointsTaskData() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
taskName: "每日签到",
|
||||||
|
taskDescription: "第一天签到1分,第二天2分,第三天3分,连续7天10分",
|
||||||
|
isEnabled: this.dailySignSettings.taskEnable
|
||||||
|
},
|
||||||
|
{
|
||||||
|
taskName: "浏览商品",
|
||||||
|
taskDescription: "浏览一个商品获得1分,每天最多获得2分",
|
||||||
|
isEnabled: this.viewGoodsSettings.taskEnable
|
||||||
|
},
|
||||||
|
{
|
||||||
|
taskName: "购买商品",
|
||||||
|
taskDescription: "购买1元=1分,每天最多获得500分",
|
||||||
|
isEnabled: this.buyGoodsSettings.taskEnable
|
||||||
|
},
|
||||||
|
{
|
||||||
|
taskName: "分享商品",
|
||||||
|
taskDescription: "分享一个商品获得5分,每天最多获得3次",
|
||||||
|
isEnabled: this.shareGoodsSettings.taskEnable
|
||||||
|
},
|
||||||
|
{
|
||||||
|
taskName: "评价商品",
|
||||||
|
taskDescription: "评价一个商品获得3分,每天最多获得5次",
|
||||||
|
isEnabled: this.commentGoodsSettings.taskEnable
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -92,6 +92,10 @@ export default {
|
||||||
created() {
|
created() {
|
||||||
this.initData();
|
this.initData();
|
||||||
},
|
},
|
||||||
|
activated() {
|
||||||
|
// 每次进入页面都刷新数据,确保数据是最新的
|
||||||
|
this.getList();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
initData() {
|
initData() {
|
||||||
// 默认选择所有摊铺
|
// 默认选择所有摊铺
|
||||||
|
@ -132,18 +136,40 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
handleMemberToggle(row) {
|
handleMemberToggle(row) {
|
||||||
// 处理会员启用/禁用
|
// 检查是否有ID字段,没有则提示先设置会员等级明细
|
||||||
console.log(
|
if (!row.id) {
|
||||||
"Toggle member for shop:",
|
// 恢复开关状态
|
||||||
row.shopName,
|
row.enable = !row.enable;
|
||||||
"Enable:",
|
this.$message.warning("请先设置会员等级明细");
|
||||||
row.enable
|
return;
|
||||||
);
|
}
|
||||||
// 这里应该调用API更新状态
|
|
||||||
// 可以根据需要添加更新接口调用
|
// 调用API更新状态
|
||||||
this.$message.success(
|
this.$api.mer_admin
|
||||||
`${row.shopName} 会员功能已${row.enable ? "启用" : "禁用"}`
|
.membershipEnableChange({
|
||||||
);
|
id: row.id,
|
||||||
|
enable: row.enable
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
console.log("修改会员状态响应:", res);
|
||||||
|
if (res.data && res.data.code == 200) {
|
||||||
|
this.$message.success(
|
||||||
|
`${row.shopName} 会员功能已${row.enable ? "启用" : "禁用"}`
|
||||||
|
);
|
||||||
|
// 修改成功后刷新列表
|
||||||
|
this.getList();
|
||||||
|
} else {
|
||||||
|
// 修改失败,恢复开关状态
|
||||||
|
row.enable = !row.enable;
|
||||||
|
this.$message.error(res.data?.message || "修改会员状态失败");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(err => {
|
||||||
|
console.error("修改会员状态失败:", err);
|
||||||
|
// 修改失败,恢复开关状态
|
||||||
|
row.enable = !row.enable;
|
||||||
|
this.$message.error("修改会员状态失败");
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// 关闭已打开的等级明细页面
|
// 关闭已打开的等级明细页面
|
||||||
|
@ -159,14 +185,15 @@ export default {
|
||||||
// 先关闭已打开的等级明细页面
|
// 先关闭已打开的等级明细页面
|
||||||
this.closeLevelDetailTab();
|
this.closeLevelDetailTab();
|
||||||
|
|
||||||
|
// 直接跳转到等级明细页面
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// 跳转到等级明细页面,添加时间戳确保页面刷新
|
|
||||||
this.$router.push({
|
this.$router.push({
|
||||||
name: "marketing-level-detail",
|
name: "marketing-level-detail",
|
||||||
query: {
|
query: {
|
||||||
shopId: row.shopId,
|
shopId: row.shopId,
|
||||||
shopName: row.shopName,
|
shopName: row.shopName,
|
||||||
timestamp: Date.now() // 添加时间戳确保每次跳转都是新的
|
id: row.id || null,
|
||||||
|
timestamp: Date.now()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}, 200);
|
}, 200);
|
||||||
|
|
Loading…
Reference in New Issue