- BasicLayout:侧边栏/顶栏/面包屑/移动端抽屉;菜单从路由表派生; 路由守卫新增 requiresAdmin 层(菜单隐藏 + 直连 URL 弹回) - 用户/角色/日志三个页面:分页请求序号防竞态、确认动作流抽 useConfirmAction、 时间范围配 default-time、日志详情按需懒加载并缓存 - 空 catch 统一改 handledError 显式声明;词表/选项常量集中(与后端对齐), 「停用」文案全站统一为「禁用」 - 品牌色提升为全局 token,Element Plus 主色指向赭金 - e2e:公共工具抽 common.py;系统管理 13 项(含详情懒加载脱敏断言), 管理员密码改 E2E_ADMIN_PASSWORD 环境变量;login_flow 8 项回归通过 Co-Authored-By: Claude Code <noreply@anthropic.com>
37 lines
781 B
Vue
37 lines
781 B
Vue
<script setup lang="ts">
|
||
/**
|
||
* 分页条:统一四个列表页的布局与页码尺寸选项。
|
||
* 与 `usePagedList` 的分页字段(pageNum/pageSize/total)配套使用。
|
||
*/
|
||
defineProps<{
|
||
total: number
|
||
pageNum: number
|
||
pageSize: number
|
||
}>()
|
||
|
||
defineEmits<{
|
||
(e: 'page-change', page: number): void
|
||
(e: 'size-change', size: number): void
|
||
}>()
|
||
</script>
|
||
|
||
<template>
|
||
<el-pagination
|
||
class="app-pager"
|
||
layout="total, sizes, prev, pager, next, jumper"
|
||
:total="total"
|
||
:current-page="pageNum"
|
||
:page-size="pageSize"
|
||
:page-sizes="[10, 20, 50]"
|
||
@current-change="$emit('page-change', $event)"
|
||
@size-change="$emit('size-change', $event)"
|
||
/>
|
||
</template>
|
||
|
||
<style scoped>
|
||
.app-pager {
|
||
justify-content: flex-end;
|
||
margin-top: 16px;
|
||
}
|
||
</style>
|