fix: 商家订单页权限校验与菜单刷新

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
XingQue
2026-07-06 18:36:40 +08:00
parent b05cb984a5
commit f7ec5e63e0
2 changed files with 31 additions and 6 deletions

View File

@@ -3,7 +3,7 @@ const CLUB_SCOPE_KEY = 'admin_club_scope';
const CLUB_CONTEXT_KEY = 'admin_club_context'; const CLUB_CONTEXT_KEY = 'admin_club_context';
const MENU_ACCESS_KEY = 'kefu_menu_access'; const MENU_ACCESS_KEY = 'kefu_menu_access';
const MENU_SESSION_KEY = 'kefu_menu_session_v'; const MENU_SESSION_KEY = 'kefu_menu_session_v';
const MENU_SESSION_VERSION = '14'; const MENU_SESSION_VERSION = '15';
const DEFAULT_CLUB_ID = 'xq'; const DEFAULT_CLUB_ID = 'xq';
let menuAccessInflight = null; let menuAccessInflight = null;

View File

@@ -143,11 +143,18 @@ import { ElMessage } from 'element-plus'
import { Refresh } from '@element-plus/icons-vue' import { Refresh } from '@element-plus/icons-vue'
import request from '@/utils/request' import request from '@/utils/request'
import ClubScopeHint from '@/components/ClubScopeHint.vue' import ClubScopeHint from '@/components/ClubScopeHint.vue'
import {
canShowMenuPage,
clearMenuAccess,
ensureMenuAccess,
JITUAN_API,
} from '@/utils/club-context'
const route = useRoute() const route = useRoute()
const router = useRouter() const router = useRouter()
const loading = ref(false) const loading = ref(false)
const hasPermission = ref(true) const hasPermission = ref(true)
const menuRetried = ref(false)
const PAGE_SIZE = 20 const PAGE_SIZE = 20
const pageNum = ref(1) const pageNum = ref(1)
@@ -216,13 +223,18 @@ const fetchOrderTypes = async () => {
} }
} }
// 商家订单列表接口(改动的接口) // 商家订单列表接口
const fetchOrders = async () => { const fetchOrders = async () => {
if (!canShowMenuPage('order.merchant')) {
hasPermission.value = false
return
}
loading.value = true loading.value = true
try { try {
const username = localStorage.getItem('username') const phone = localStorage.getItem('username')
const params = { const params = {
username, phone,
username: phone,
page: pageNum.value, page: pageNum.value,
pageSize: pageSize.value, pageSize: pageSize.value,
zhuangtai: currentStatus.value === 'all' ? undefined : currentStatus.value, zhuangtai: currentStatus.value === 'all' ? undefined : currentStatus.value,
@@ -240,7 +252,7 @@ const fetchOrders = async () => {
} }
Object.keys(params).forEach(key => params[key] === undefined && delete params[key]) Object.keys(params).forEach(key => params[key] === undefined && delete params[key])
const res = await request.post('/yonghu/kfhqsjddlb', params) const res = await request.post('/yonghu/kfhqsjddlb', params, { skipErrorToast: true })
if (res.code === 0) { if (res.code === 0) {
const data = res.data const data = res.data
orderList.value = data.list || [] orderList.value = data.list || []
@@ -258,8 +270,19 @@ const fetchOrders = async () => {
] ]
} }
} else if (res.code === 403) { } else if (res.code === 403) {
if (!menuRetried.value) {
menuRetried.value = true
clearMenuAccess()
await ensureMenuAccess(async () => {
const r = await request.get(JITUAN_API.menuAccess)
return r.code === 0 ? r.data : null
})
if (canShowMenuPage('order.merchant')) {
await fetchOrders()
return
}
}
hasPermission.value = false hasPermission.value = false
ElMessage.error(res.msg || '您无权访问此页面')
} else { } else {
ElMessage.error(res.msg || '获取订单列表失败') ElMessage.error(res.msg || '获取订单列表失败')
} }
@@ -362,6 +385,8 @@ const getStatusType = (code) => {
watch(() => route.query, () => { restoreFromQuery(); fetchOrders() }, { deep: true }) watch(() => route.query, () => { restoreFromQuery(); fetchOrders() }, { deep: true })
onMounted(() => { onMounted(() => {
hasPermission.value = canShowMenuPage('order.merchant')
if (!hasPermission.value) return
restoreFromQuery() restoreFromQuery()
fetchOrderTypes() fetchOrderTypes()
fetchOrders() fetchOrders()