feat(hjf): H5路由修复、分销等级显示优化、个人中心等级徽章
H5 部署与路由: - manifest.json: router.base 改为 "/" 适配 public/ 根目录部署 - nginx-crmeb.conf: 恢复与 feature/fsgx 一致的原始配置 - App.vue: PC端重定向路径改为动态推导,修复死循环加载问题 - static/html/pc.html: 动态推导 H5 根路径,适配本地/云端两种部署 H5登录: - pages/users/login/index.vue: H5端获取验证码跳过安全验证(条件编译) 分销等级展示修复: - AgentLevelServices: 新增 loadHjfUserListLevelMaps/pickHjfLevelRowForUserListDisplay 统一等级名称解析逻辑,优先返回 HJF 官方名称;新增 getUpgradeTasksForLevel 封装 - UserServices/MemberLevelServices: 改用统一解析方法,修复 protected $dao 访问错误 - api/hjf/MemberController: 直接取 eb_agent_level.name,新增 agent_level 原始值返回 - admin/v1/hjf/MemberController: team() 改用封装方法替代直接访问 protected dao 个人中心等级徽章: - pages/user/index.vue + member/index.vue: memberInfo 沿链路透传 - member/template1.vue: UID右侧显示HjfMemberBadge,直接读 userInfo.agent_level_name 无需等待异步 memberInfo,agentLevelGrade 计算属性从名称推导颜色等级 商品列表修复: - BaseController.php/Common.php: 恢复加密版,修复 CRMEB 授权检查失败导致的400错误 - StoreProduct model: 移除冲突的 model maker 回调 数据库: - hjf_migration.sql: 完善会员等级体系迁移脚本 - eb_agent_level.sql: 新增等级初始数据脚本 Made-with: Cursor
This commit is contained in:
@@ -39,6 +39,11 @@ export default {
|
||||
balanceStatus: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
// HJF 分销等级信息,向下透传给各 template
|
||||
memberInfo: {
|
||||
type: Object,
|
||||
default: () => ({ agent_level: 0, member_level: 0, member_level_name: '' })
|
||||
}
|
||||
},
|
||||
data() {
|
||||
@@ -97,7 +102,7 @@ export default {
|
||||
<!-- #ifdef MP || APP-PLUS -->
|
||||
<topBar v-if="memberData.style != 5" :styleType="memberData.style" :isScrolling="isScrolling"></topBar>
|
||||
<!-- #endif -->
|
||||
<template1 v-if="memberData.style == 1" :perShowType="memberData.per_show_type" :userInfo="userInfo" :property="property"></template1>
|
||||
<template1 v-if="memberData.style == 1" :perShowType="memberData.per_show_type" :userInfo="userInfo" :property="property" :memberInfo="memberInfo"></template1>
|
||||
<template2 v-if="memberData.style == 2" :perShowType="memberData.per_show_type" :userInfo="userInfo" :property="property"></template2>
|
||||
<template3 v-if="memberData.style == 3" :perShowType="memberData.per_show_type" :userInfo="userInfo" :property="property"></template3>
|
||||
<template4 v-if="memberData.style == 4" :perShowType="memberData.per_show_type" :userInfo="userInfo" :commission="orderAdminData.commission"></template4>
|
||||
|
||||
@@ -14,12 +14,23 @@ export default {
|
||||
perShowType: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
// HJF 分销等级信息(由 member/index.vue 向下传递)
|
||||
memberInfo: {
|
||||
type: Object,
|
||||
default: () => ({ agent_level: 0, member_level: 0, member_level_name: '' })
|
||||
}
|
||||
},
|
||||
inject: ['intoPage', 'tapQrCode', 'goMenuPage', 'goEdit', 'bindPhone', 'checkApp'],
|
||||
computed:{
|
||||
showMerBtn(){
|
||||
return this.$store.state.app.channel_func_status
|
||||
},
|
||||
/** 从 userInfo.agent_level_name 推导 grade(0-4),用于徽章颜色 */
|
||||
agentLevelGrade() {
|
||||
const nameGradeMap = { '创客': 1, '云店': 2, '服务商': 3, '分公司': 4 };
|
||||
const name = (this.userInfo && this.userInfo.agent_level_name) || '';
|
||||
return nameGradeMap[name] || 0;
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
@@ -58,10 +69,20 @@ export default {
|
||||
<view class="bind-phone" v-if="!userInfo.phone && userInfo.uid" @tap="bindPhone">绑定手机号</view>
|
||||
<view class="acea-row row-middle" v-else>
|
||||
<view class="phone">{{ perShowType ? 'ID:' + userInfo.uid : userInfo.phone }}</view>
|
||||
<!--
|
||||
<view class="vip flex-center" v-if="userInfo.level">
|
||||
<text class="iconfont icon-huiyuandengji"></text>
|
||||
{{ userInfo.vip_name || ('V' + userInfo.level) }}
|
||||
</view>
|
||||
-->
|
||||
<!-- HJF 分销等级徽章:直接用 userInfo.agent_level / agent_level_name,无需等待异步 memberInfo -->
|
||||
<HjfMemberBadge
|
||||
v-if="userInfo.agent_level > 0"
|
||||
:level="agentLevelGrade"
|
||||
:levelName="userInfo.agent_level_name"
|
||||
size="small"
|
||||
class="ml-10"
|
||||
/>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -2,12 +2,7 @@
|
||||
<!-- 个人中心模块 -->
|
||||
<view class="user-page" :style="colorStyle">
|
||||
<template v-if="isObjectData(diyData)">
|
||||
<user-member :userInfo="userInfo" :memberData="diyData.member" :orderAdminData="orderAdminData" :balanceStatus="balanceStatus" :isScrolling="isScrolling"></user-member>
|
||||
<!-- HJF 会员等级徽章 -->
|
||||
<view class="flex-y-center px-30 py-20 bg--w111-fff mt-16 mx-20 rd-16rpx">
|
||||
<text class="fs-26 text--w111-666 mr-16">当前等级</text>
|
||||
<HjfMemberBadge :level="memberInfo.member_level" :levelName="memberInfo.member_level_name" size="normal" />
|
||||
</view>
|
||||
<user-member :userInfo="userInfo" :memberData="diyData.member" :orderAdminData="orderAdminData" :balanceStatus="balanceStatus" :isScrolling="isScrolling" :memberInfo="memberInfo"></user-member>
|
||||
<user-order :orderMenu="orderMenu" :orderAdminData="orderAdminData" :userInfo="userInfo" :memberData="diyData.member" :orderData="diyData.order"></user-order>
|
||||
<!-- 黄精粉快捷入口:我的资产 & 公排记录(与 member-points 保持一致风格) -->
|
||||
<view class="acea-row member-points hjf-nav-row">
|
||||
@@ -239,6 +234,7 @@ export default {
|
||||
routineContact: 0,
|
||||
/** HJF 会员等级信息 */
|
||||
memberInfo: {
|
||||
agent_level: 0,
|
||||
member_level: 0,
|
||||
member_level_name: '普通',
|
||||
}
|
||||
@@ -305,9 +301,10 @@ export default {
|
||||
loadMemberInfo() {
|
||||
getMemberInfo().then(res => {
|
||||
if (res && res.data) {
|
||||
this.memberInfo = {
|
||||
member_level: res.data.member_level || 0,
|
||||
member_level_name: res.data.member_level_name || '普通',
|
||||
this.memberInfo = {
|
||||
agent_level: res.data.agent_level || 0,
|
||||
member_level: res.data.member_level || 0,
|
||||
member_level_name: res.data.member_level_name || '普通',
|
||||
};
|
||||
}
|
||||
}).catch(() => {});
|
||||
|
||||
Reference in New Issue
Block a user