feat: 会员等级设置模块页面样式

This commit is contained in:
lzhizhao 2025-08-08 01:27:45 +08:00
parent 28e887552e
commit 8aa41006de
5 changed files with 1369 additions and 192 deletions

View File

@ -370,6 +370,20 @@ export default {
} }
] ]
}, },
{
menuId: getUUID(),
parentId: 0,
parentName: null,
name: "等级明细",
url: "marketing-level/detail",
perms: "",
type: 1,
elIcon: "el-icon-user",
orderNum: 0,
open: null,
list: [],
hideInMenu: true
},
{ {
menuId: getUUID(), menuId: getUUID(),
parentId: 0, parentId: 0,
@ -395,6 +409,7 @@ export default {
open: null, open: null,
list: [] list: []
}, },
{ {
menuId: getUUID(), menuId: getUUID(),
parentId: 0, parentId: 0,

View File

@ -25,14 +25,14 @@ const globalRoutes = [
path: "/404", path: "/404",
component: _import("common/404"), component: _import("common/404"),
name: "404", name: "404",
meta: { title: "404未找到" }, meta: { title: "404未找到" }
}, },
{ {
path: "/login", path: "/login",
component: _import("common/login"), component: _import("common/login"),
name: "login", name: "login",
meta: { title: "登录" }, meta: { title: "登录" }
}, }
//test用会员管理 //test用会员管理
]; ];
@ -52,20 +52,20 @@ const mainRoutes = {
path: "/home", path: "/home",
component: _import("common/home"), component: _import("common/home"),
name: "home", name: "home",
meta: { title: "首页" }, meta: { title: "首页" }
}, },
{ {
path: "/theme", path: "/theme",
component: _import("common/theme"), component: _import("common/theme"),
name: "theme", name: "theme",
meta: { title: "主题" }, meta: { title: "主题" }
}, },
{ {
path: "/demo-echarts", path: "/demo-echarts",
component: _import("demo/echarts"), component: _import("demo/echarts"),
name: "demo-echarts", name: "demo-echarts",
meta: { title: "demo-echarts", isTab: true }, meta: { title: "demo-echarts", isTab: true }
}, }
], ],
beforeEnter(to, from, next) { beforeEnter(to, from, next) {
let token = Vue.cookie.get("token"); let token = Vue.cookie.get("token");
@ -74,7 +74,7 @@ const mainRoutes = {
next({ name: "login" }); next({ name: "login" });
} }
next(); next();
}, }
}; };
const router = new Router({ const router = new Router({
@ -82,7 +82,7 @@ const router = new Router({
// mode:"history", // mode:"history",
scrollBehavior: () => ({ y: 0 }), scrollBehavior: () => ({ y: 0 }),
isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由 isAddDynamicMenuRoutes: false, // 是否已经添加动态(菜单)路由
routes: globalRoutes.concat(mainRoutes), routes: globalRoutes.concat(mainRoutes)
}); });
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
@ -98,7 +98,7 @@ router.beforeEach((to, from, next) => {
} else { } else {
let loadingInstance = Loading.service({ let loadingInstance = Loading.service({
text: "正在初始化中...", text: "正在初始化中...",
background: "rgba(255,255,255,0.7)", background: "rgba(255,255,255,0.7)"
}); });
$api $api
.getUserInfo() .getUserInfo()
@ -120,7 +120,7 @@ router.beforeEach((to, from, next) => {
// 创建一个新的节点,包含过滤后的子节点 // 创建一个新的节点,包含过滤后的子节点
filtered.push({ filtered.push({
...node, ...node,
list, list
}); });
} }
return filtered; return filtered;
@ -132,13 +132,13 @@ router.beforeEach((to, from, next) => {
// 存在多个市场 // 存在多个市场
$api.mer_admin $api.mer_admin
.storeList({ marketId: data.data.markets[0].marketId }) .storeList({ marketId: data.data.markets[0].marketId })
.then((res) => { .then(res => {
store.commit("userData/setState", { store.commit("userData/setState", {
isMerchant: true, isMerchant: true,
marketList: data.data.markets, marketList: data.data.markets,
storeList: res.data.data, storeList: res.data.data,
marketId: data.data.markets[0].marketId, marketId: data.data.markets[0].marketId,
shopId: res.data.data[0].shopId, shopId: res.data.data[0].shopId
}); });
}); });
console.log(data.data.markets); console.log(data.data.markets);
@ -150,7 +150,7 @@ router.beforeEach((to, from, next) => {
marketList: [], marketList: [],
storeList: [], storeList: [],
marketId: data.data.marketId, marketId: data.data.marketId,
shopId: data.data.shopId, shopId: data.data.shopId
}); });
} else { } else {
store.commit("userData/setState", { store.commit("userData/setState", {
@ -158,7 +158,7 @@ router.beforeEach((to, from, next) => {
marketList: [], marketList: [],
storeList: [], storeList: [],
marketId: -1, marketId: -1,
shopId: data.data.shopId, shopId: data.data.shopId
}); });
} }
} else { } else {
@ -168,7 +168,7 @@ router.beforeEach((to, from, next) => {
marketList: [], marketList: [],
storeList: [], storeList: [],
marketId: "", marketId: "",
shopId: "", shopId: ""
}); });
} }
sessionStorage.setItem("userInfo", JSON.stringify(data.data)); sessionStorage.setItem("userInfo", JSON.stringify(data.data));
@ -189,7 +189,7 @@ router.beforeEach((to, from, next) => {
router.options.isAddDynamicMenuRoutes = true; router.options.isAddDynamicMenuRoutes = true;
next({ ...to, replace: true }); next({ ...to, replace: true });
}) })
.catch((e) => { .catch(e => {
sessionStorage.setItem("menuList", "[]"); sessionStorage.setItem("menuList", "[]");
sessionStorage.setItem("permissions", "[]"); sessionStorage.setItem("permissions", "[]");
console.log( console.log(
@ -264,8 +264,8 @@ function fnAddDynamicMenuRoutes(menuList = [], routes = []) {
isDynamic: true, isDynamic: true,
isTab: true, isTab: true,
iframeUrl: "", iframeUrl: "",
isMicroApp: menuList[i].isMicroApp, isMicroApp: menuList[i].isMicroApp
}, }
}; };
// url以http[s]://开头, 通过iframe展示,或者启用microApp框架 // url以http[s]://开头, 通过iframe展示,或者启用microApp框架
if (isURL(menuList[i].url)) { if (isURL(menuList[i].url)) {

View File

@ -161,6 +161,7 @@ export function getMenu(role, manageMode) {
"presale/order/index", "presale/order/index",
"marketing", "marketing",
"marketing/level/index", "marketing/level/index",
"marketing-level/detail",
"marketing/user/index", "marketing/user/index",
"marketing/points-setting/index", "marketing/points-setting/index",
"marketing/points-mall/index", "marketing/points-mall/index",
@ -229,6 +230,7 @@ export function getMenu(role, manageMode) {
"presale/order/index", "presale/order/index",
"marketing", "marketing",
"marketing/level/index", "marketing/level/index",
"marketing-level/detail",
"marketing/user/index", "marketing/user/index",
"marketing/points-setting/index", "marketing/points-setting/index",
"marketing/points-mall/index", "marketing/points-mall/index",

File diff suppressed because it is too large Load Diff

View File

@ -72,81 +72,6 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
</div> </div>
<!-- 会员等级明细弹窗 -->
<el-dialog
title="会员等级明细"
:visible.sync="levelDialogVisible"
width="80%"
:before-close="handleDialogClose"
>
<div class="level-detail-dialog">
<div class="dialog-header">
<div class="shop-info">
<span>摊铺{{ currentShop.shopName }}</span>
</div>
<div class="dialog-actions">
<el-button type="primary" size="small" @click="handleEditLevel"
>等级编辑</el-button
>
<el-button type="success" size="small" @click="handleSaveLevel"
>提交</el-button
>
</div>
</div>
<!-- 会员等级明细表格 -->
<el-table
:data="levelDetailData"
border
style="width: 100%; margin-top: 20px;"
>
<el-table-column
prop="levelName"
label="等级名称"
width="100"
align="center"
>
<template slot-scope="scope">
<span :style="{ color: getLevelColor(scope.row.levelName) }">
{{ scope.row.levelName }}
</span>
</template>
</el-table-column>
<el-table-column
prop="requiredGrowthValue"
label="所需成长值"
width="120"
align="center"
>
<template slot-scope="scope">
<span style="color: #1890ff;">{{
scope.row.requiredGrowthValue
}}</span>
</template>
</el-table-column>
<el-table-column
prop="memberCount"
label="会员人数"
width="100"
align="center"
>
<template slot-scope="scope">
<span style="color: #52c41a;">{{ scope.row.memberCount }}</span>
</template>
</el-table-column>
<el-table-column
prop="memberBenefits"
label="会员权益"
align="center"
>
<template slot-scope="scope">
<span style="color: #666;">{{ scope.row.memberBenefits }}</span>
</template>
</el-table-column>
</el-table>
</div>
</el-dialog>
</div> </div>
</template> </template>
@ -160,35 +85,7 @@ export default {
formInline: { formInline: {
shopIds: [] shopIds: []
}, },
tableData: [], tableData: []
levelDialogVisible: false,
currentShop: {},
levelDetailData: [
{
levelName: "LV1",
requiredGrowthValue: "100",
memberCount: "1,250",
memberBenefits: "新会员双倍积分,享受基础会员价格优惠"
},
{
levelName: "LV2",
requiredGrowthValue: "500",
memberCount: "850",
memberBenefits: "享受9.5折优惠,每月专属优惠券,生日礼品"
},
{
levelName: "LV3",
requiredGrowthValue: "1,200",
memberCount: "450",
memberBenefits: "享受9折优惠免费配送服务专属客服支持"
},
{
levelName: "LV4",
requiredGrowthValue: "2,500",
memberCount: "180",
memberBenefits: "享受8.5折优惠,优先配送,专属活动邀请,年度礼品"
}
]
}; };
}, },
computed: { computed: {
@ -244,40 +141,46 @@ export default {
// API // API
}, },
//
closeLevelDetailTab() {
const mainTabs = this.$store.state.common.mainTabs;
const filteredTabs = mainTabs.filter(
tab => tab.name !== "marketing-level-detail"
);
this.$store.commit("common/updateMainTabs", filteredTabs);
},
handleLevelSetting(row) { handleLevelSetting(row) {
this.currentShop = row; //
this.levelDialogVisible = true; this.closeLevelDetailTab();
setTimeout(() => {
//
this.$router.push({
name: "marketing-level-detail",
query: {
shopId: row.shopId,
shopName: row.shopName,
timestamp: Date.now() //
}
});
}, 200);
}, },
handleBatchLevelSetting() { handleBatchLevelSetting() {
// //
this.$message.info("批量会员等级编辑功能待实现"); this.closeLevelDetailTab();
},
handleDialogClose() { setTimeout(() => {
this.levelDialogVisible = false; //
this.currentShop = {}; this.$router.push({
}, name: "marketing-level-detail",
query: {
handleEditLevel() { mode: "batch", //
// timestamp: Date.now() //
this.$message.info("等级编辑功能待实现"); }
}, });
}, 200);
handleSaveLevel() {
//
this.$message.success("等级明细保存成功");
this.handleDialogClose();
},
getLevelColor(levelName) {
const colorMap = {
LV1: "#52c41a",
LV2: "#1890ff",
LV3: "#fa8c16",
LV4: "#f5222d"
};
return colorMap[levelName] || "#666";
} }
} }
}; };
@ -299,44 +202,5 @@ export default {
} }
} }
} }
.level-detail-dialog {
.dialog-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 10px;
.shop-info {
padding: 8px 12px;
background: #f0f9ff;
border-radius: 4px;
color: #1890ff;
font-weight: 500;
}
.dialog-actions {
.el-button {
margin-left: 8px;
}
}
}
.el-table {
.el-table__header {
th {
background-color: #fafafa;
color: #333;
font-weight: 600;
}
}
.el-table__body {
td {
padding: 12px 0;
}
}
}
}
} }
</style> </style>