|
@@ -83,10 +83,6 @@
|
|
|
:src="iconSrc(item.icon)"
|
|
:src="iconSrc(item.icon)"
|
|
|
mode="aspectFit"
|
|
mode="aspectFit"
|
|
|
/>
|
|
/>
|
|
|
- <!-- 菜单角标(如退款待审核) -->
|
|
|
|
|
- <view v-if="menuBadgeCount(item) > 0" class="menu-badge">
|
|
|
|
|
- {{ formatMenuBadge(menuBadgeCount(item)) }}
|
|
|
|
|
- </view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
<view class="home-menu-text">{{ item.name }}</view>
|
|
<view class="home-menu-text">{{ item.name }}</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -106,6 +102,18 @@
|
|
|
</view>
|
|
</view>
|
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
|
|
+ <!-- 有待审核才出现:点进待审核 Tab;宫格「退款记录」始终进全部,避免同一入口语义漂移 -->
|
|
|
|
|
+ <view v-if="pendingRefundCount > 0" class="module-com refund-todo-wrap" @click="goPendingRefund">
|
|
|
|
|
+ <view class="refund-todo-row">
|
|
|
|
|
+ <view class="refund-todo-left">
|
|
|
|
|
+ <text class="refund-todo-title">售后待审核</text>
|
|
|
|
|
+ <text class="refund-todo-stat">有{{ pendingRefundCount }}笔待处理</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ <text class="refund-todo-action">去处理</text>
|
|
|
|
|
+ <text class="refund-todo-arrow">›</text>
|
|
|
|
|
+ </view>
|
|
|
|
|
+ </view>
|
|
|
|
|
+
|
|
|
<view class="home-card">
|
|
<view class="home-card">
|
|
|
<view class="home-menu-grid">
|
|
<view class="home-menu-grid">
|
|
|
<view class="home-menu-item" v-for="item in bizMenuList" :key="item.name" @click="handleMenuTap(item)">
|
|
<view class="home-menu-item" v-for="item in bizMenuList" :key="item.name" @click="handleMenuTap(item)">
|
|
@@ -116,10 +124,6 @@
|
|
|
:src="iconSrc(item.icon)"
|
|
:src="iconSrc(item.icon)"
|
|
|
mode="aspectFit"
|
|
mode="aspectFit"
|
|
|
/>
|
|
/>
|
|
|
- <!-- 退款记录:有待审核时红角标提示数量 -->
|
|
|
|
|
- <view v-if="menuBadgeCount(item) > 0" class="menu-badge">
|
|
|
|
|
- {{ formatMenuBadge(menuBadgeCount(item)) }}
|
|
|
|
|
- </view>
|
|
|
|
|
</view>
|
|
</view>
|
|
|
<view class="home-menu-text">{{ item.name }}</view>
|
|
<view class="home-menu-text">{{ item.name }}</view>
|
|
|
</view>
|
|
</view>
|
|
@@ -176,7 +180,7 @@ import { refundList } from '@/api/refund'
|
|
|
/**
|
|
/**
|
|
|
* 工作台首页面板
|
|
* 工作台首页面板
|
|
|
* 用途:店铺首页快捷操作 / 业务菜单 / 更多功能;菜单项直接写死,不走配置文件与本地缓存。
|
|
* 用途:店铺首页快捷操作 / 业务菜单 / 更多功能;菜单项直接写死,不走配置文件与本地缓存。
|
|
|
- * 含「退款记录」待审核角标,与应用页 apply 行为一致。
|
|
|
|
|
|
|
+ * 含售后待审核待办条(有数才出现),与应用页 apply 行为一致。
|
|
|
*/
|
|
*/
|
|
|
export default {
|
|
export default {
|
|
|
name: "MallHomePanel",
|
|
name: "MallHomePanel",
|
|
@@ -208,7 +212,7 @@ export default {
|
|
|
unReadMsgNum: 0,
|
|
unReadMsgNum: 0,
|
|
|
currentDate: '',
|
|
currentDate: '',
|
|
|
birthdaySummary: { today: 0, tomorrow: 0, week: 0 },
|
|
birthdaySummary: { today: 0, tomorrow: 0, week: 0 },
|
|
|
- /** 售后待审核条数,供「退款记录」角标 */
|
|
|
|
|
|
|
+ /** 售后待审核条数,供首页待办条;宫格入口不跟这个数跳转 */
|
|
|
pendingRefundCount: 0,
|
|
pendingRefundCount: 0,
|
|
|
// 快捷操作(写死)
|
|
// 快捷操作(写死)
|
|
|
quickMenuList: [
|
|
quickMenuList: [
|
|
@@ -228,8 +232,8 @@ export default {
|
|
|
{ name: '首页配置', icon: 'settings-filled', url: '/admin/homePageConfig/index', pf: 1 },
|
|
{ name: '首页配置', icon: 'settings-filled', url: '/admin/homePageConfig/index', pf: 1 },
|
|
|
{ name: '公告', icon: 'notice', url: '/admin/shopNotice/list', pf: 1 },
|
|
{ name: '公告', icon: 'notice', url: '/admin/shopNotice/list', pf: 1 },
|
|
|
{ name: '退款', icon: 'order-filled', url: '/admin/custom/selectCustom?style=1&refund=1', pf: 1 },
|
|
{ name: '退款', icon: 'order-filled', url: '/admin/custom/selectCustom?style=1&refund=1', pf: 1 },
|
|
|
- // badge=pendingRefund:角标挂待审核数;进列表默认待审核 Tab
|
|
|
|
|
- { name: '退款记录', icon: 'order-filled', url: '/admin/billing/freeRefundList?tab=pending', badge: 'pendingRefund', pf: 1 },
|
|
|
|
|
|
|
+ // 稳定入口:始终进全部列表;待审核走上方待办条
|
|
|
|
|
+ { name: '退款记录', icon: 'order-filled', url: '/admin/billing/freeRefundList', pf: 1 },
|
|
|
{ name: '拆散', icon: 'disassemble', url: '/admin/part/list', pf: 1 },
|
|
{ name: '拆散', icon: 'disassemble', url: '/admin/part/list', pf: 1 },
|
|
|
{ name: '改价', icon: 'change-price-filled', url: '/admin/changePrice/list2', pf: 1 },
|
|
{ name: '改价', icon: 'change-price-filled', url: '/admin/changePrice/list2', pf: 1 },
|
|
|
{ name: '报损', icon: 'breakage', url: '/admin/breakage/list', pf: 1 },
|
|
{ name: '报损', icon: 'breakage', url: '/admin/breakage/list', pf: 1 },
|
|
@@ -367,28 +371,13 @@ export default {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
this.getUnReadMsgCount()
|
|
this.getUnReadMsgCount()
|
|
|
- // 与聊天未读一并刷新:退款待审核角标
|
|
|
|
|
|
|
+ // 与聊天未读一并刷新:售后待审核待办条
|
|
|
this.loadPendingRefundCount()
|
|
this.loadPendingRefundCount()
|
|
|
return Promise.all([p1, p2, p3])
|
|
return Promise.all([p1, p2, p3])
|
|
|
},
|
|
},
|
|
|
/**
|
|
/**
|
|
|
- * 菜单角标数量:目前仅退款记录挂待审核数
|
|
|
|
|
- * @param {Object} item 菜单项
|
|
|
|
|
- */
|
|
|
|
|
- menuBadgeCount(item) {
|
|
|
|
|
- if (item && item.badge === 'pendingRefund') {
|
|
|
|
|
- return Number(this.pendingRefundCount) || 0
|
|
|
|
|
- }
|
|
|
|
|
- return 0
|
|
|
|
|
- },
|
|
|
|
|
- /** 角标展示:超过 99 显示 99+ */
|
|
|
|
|
- formatMenuBadge(n) {
|
|
|
|
|
- const num = Number(n) || 0
|
|
|
|
|
- return num > 99 ? '99+' : String(num)
|
|
|
|
|
- },
|
|
|
|
|
- /**
|
|
|
|
|
- * 拉取待审核售后条数,用于「退款记录」入口角标。
|
|
|
|
|
- * 参数与 freeRefundList 待审核 Tab 一致:近30天 + status=0,避免角标与列表对不上。
|
|
|
|
|
|
|
+ * 拉取待审核售后条数,用于首页待办条。
|
|
|
|
|
+ * 参数与 freeRefundList 待审核 Tab 一致:近30天 + status=0,避免条上数量与列表对不上。
|
|
|
*/
|
|
*/
|
|
|
loadPendingRefundCount() {
|
|
loadPendingRefundCount() {
|
|
|
refundList({
|
|
refundList({
|
|
@@ -425,6 +414,10 @@ export default {
|
|
|
goBirthdayBoard() {
|
|
goBirthdayBoard() {
|
|
|
this.$util.pageTo({ url: '/admin/birthday/board' })
|
|
this.$util.pageTo({ url: '/admin/birthday/board' })
|
|
|
},
|
|
},
|
|
|
|
|
+ /** 待办条:只进待审核,和宫格「退款记录」进全部区分开 */
|
|
|
|
|
+ goPendingRefund() {
|
|
|
|
|
+ this.$util.pageTo({ url: '/admin/billing/freeRefundList?tab=pending' })
|
|
|
|
|
+ },
|
|
|
getUnReadMsgCount(){
|
|
getUnReadMsgCount(){
|
|
|
unReadMsgCount().then(res=>{
|
|
unReadMsgCount().then(res=>{
|
|
|
if(res.code == 1){
|
|
if(res.code == 1){
|
|
@@ -732,6 +725,51 @@ export default {
|
|
|
line-height: 1;
|
|
line-height: 1;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+/* 售后待办条:有待审核才渲染,样式对齐生日条,底色偏警示以免漏看 */
|
|
|
|
|
+.refund-todo-wrap {
|
|
|
|
|
+ margin: 24upx 24upx 0;
|
|
|
|
|
+ border-radius: 18upx;
|
|
|
|
|
+ overflow: hidden;
|
|
|
|
|
+ box-shadow: 0 8upx 26upx rgba(20, 48, 36, 0.06);
|
|
|
|
|
+}
|
|
|
|
|
+.refund-todo-row {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ justify-content: space-between;
|
|
|
|
|
+ padding: 28upx 24upx;
|
|
|
|
|
+ background: #fff7f0;
|
|
|
|
|
+}
|
|
|
|
|
+.refund-todo-left {
|
|
|
|
|
+ display: flex;
|
|
|
|
|
+ align-items: center;
|
|
|
|
|
+ flex: 1;
|
|
|
|
|
+ min-width: 0;
|
|
|
|
|
+ font-size: 32upx;
|
|
|
|
|
+ color: #333;
|
|
|
|
|
+}
|
|
|
|
|
+.refund-todo-title {
|
|
|
|
|
+ font-weight: bold;
|
|
|
|
|
+ color: #d4380d;
|
|
|
|
|
+}
|
|
|
|
|
+.refund-todo-stat {
|
|
|
|
|
+ color: #d4380d;
|
|
|
|
|
+ margin-left: 20upx;
|
|
|
|
|
+ font-size: 30upx;
|
|
|
|
|
+}
|
|
|
|
|
+.refund-todo-action {
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ font-size: 28upx;
|
|
|
|
|
+ color: #d4380d;
|
|
|
|
|
+ font-weight: 700;
|
|
|
|
|
+ margin-right: 8upx;
|
|
|
|
|
+}
|
|
|
|
|
+.refund-todo-arrow {
|
|
|
|
|
+ flex-shrink: 0;
|
|
|
|
|
+ font-size: 40upx;
|
|
|
|
|
+ color: #d4380d;
|
|
|
|
|
+ line-height: 1;
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
.news-wrap {
|
|
.news-wrap {
|
|
|
overflow: hidden;
|
|
overflow: hidden;
|
|
|
margin: 24upx 24upx 0;
|
|
margin: 24upx 24upx 0;
|
|
@@ -855,24 +893,6 @@ export default {
|
|
|
line-height: 0;
|
|
line-height: 0;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-/* 菜单角标:右上角红底白字(与 apply 页一致) */
|
|
|
|
|
-.menu-badge {
|
|
|
|
|
- position: absolute;
|
|
|
|
|
- top: -8upx;
|
|
|
|
|
- right: -10upx;
|
|
|
|
|
- min-width: 32upx;
|
|
|
|
|
- height: 32upx;
|
|
|
|
|
- padding: 0 8upx;
|
|
|
|
|
- box-sizing: border-box;
|
|
|
|
|
- border-radius: 16upx;
|
|
|
|
|
- background: #ff2842;
|
|
|
|
|
- color: #fff;
|
|
|
|
|
- font-size: 20upx;
|
|
|
|
|
- font-weight: bold;
|
|
|
|
|
- line-height: 32upx;
|
|
|
|
|
- text-align: center;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
.quick-menu-icon-img,
|
|
.quick-menu-icon-img,
|
|
|
.home-menu-icon-img {
|
|
.home-menu-icon-img {
|
|
|
display: block;
|
|
display: block;
|