Files
rxthinkcmf-wiki/RXThinkCMF_Laravel13_NaiveVue/.vitepress/dist/zh/api-spec/pagination.html
T
2026-10-11 19:06:33 +08:00

170 lines
181 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN" dir="ltr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>8.3 分页查询规范 | 小蚂蚁云</title>
<meta name="description" content="RXThinkCMF 企业级前后端分离后台管理系统 - Laravel 13 + Vue3 + NaiveUI">
<meta name="generator" content="VitePress v1.3.4">
<link rel="preload stylesheet" href="/assets/style.bvRZWfHW.css" as="style">
<script type="module" src="/assets/app.Ccv6ul3o.js"></script>
<link rel="preload" href="/assets/inter-roman-latin.Di8DUHzh.woff2" as="font" type="font/woff2" crossorigin="">
<link rel="modulepreload" href="/assets/chunks/theme.BAYk2F26.js">
<link rel="modulepreload" href="/assets/chunks/framework.BbmSSMjL.js">
<link rel="modulepreload" href="/assets/zh_api-spec_pagination.md.CD3kk-p4.lean.js">
<link rel="icon" type="image/svg+xml" href="/logo.svg">
<link rel="icon" type="image/png" href="/logo.png">
<meta property="og:type" content="website">
<meta property="twitter:card" content="summary_large_image">
<meta property="twitter:image" content="/social.png">
<script src="/banner.js" async type="text/javascript"></script>
<script id="check-dark-mode">(()=>{const e=localStorage.getItem("vitepress-theme-appearance")||"light",a=window.matchMedia("(prefers-color-scheme: dark)").matches;(!e||e==="auto"?a:e==="dark")&&document.documentElement.classList.add("dark")})();</script>
<script id="check-mac-os">document.documentElement.classList.toggle("mac",/Mac|iPhone|iPod|iPad/i.test(navigator.platform));</script>
<meta property="og:url" content="https://www.rxthink.cn">
<meta property="og:description" content="RXThinkCMF 企业级前后端分离后台管理系统 - Laravel 13 + Vue3 + NaiveUI">
<meta property="twitter:url" content="https://www.rxthink.cn">
<meta property="twitter:title" content="RXThinkCMF Laravel13+NaiveUI 开发文档">
<meta property="twitter:description" content="RXThinkCMF 企业级前后端分离后台管理系统 - Laravel 13 + Vue3 + NaiveUI">
<script>var _hmt=_hmt||[];(function(){var e=document.createElement("script");e.src="https://hm.baidu.com/hm.js?4f06f01017cdd5c1a95a58a6787f4d10";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>
</head>
<body>
<div id="app"><div class="Layout" data-v-4dae6186><!--[--><!--]--><!--[--><span tabindex="-1" data-v-b1d023f7></span><a href="#VPContent" class="VPSkipLink visually-hidden" data-v-b1d023f7> Skip to content </a><!--]--><!----><header class="VPNav" data-v-4dae6186 data-v-6677dd63><div class="VPNavBar" data-v-6677dd63 data-v-9ee283ce><div class="wrapper" data-v-9ee283ce><div class="container" data-v-9ee283ce><div class="title" data-v-9ee283ce><div class="VPNavBarTitle has-sidebar" data-v-9ee283ce data-v-a535d338><a class="title" href="/" data-v-a535d338><!--[--><!--]--><!--[--><img class="VPImage logo" src="/logo.svg" alt data-v-6214f9fb><!--]--><span data-v-a535d338>小蚂蚁云</span><!--[--><!--]--></a></div></div><div class="content" data-v-9ee283ce><div class="content-body" data-v-9ee283ce><!--[--><!--]--><div class="VPNavBarSearch search" data-v-9ee283ce><!--[--><!----><div id="local-search"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><span class="vp-icon DocSearch-Search-Icon"></span><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"><kbd class="DocSearch-Button-Key"></kbd><kbd class="DocSearch-Button-Key">K</kbd></span></button></div><!--]--></div><nav aria-labelledby="main-nav-aria-label" class="VPNavBarMenu menu" data-v-9ee283ce data-v-b192e9c1><span id="main-nav-aria-label" class="visually-hidden" data-v-b192e9c1> Main Navigation </span><!--[--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://www.rxthink.cn" target="_blank" rel="noreferrer" tabindex="0" data-v-b192e9c1 data-v-5fb253b1><!--[--><span data-v-5fb253b1>官网</span><!--]--></a><!--]--><!--[--><a class="VPLink link vp-external-link-icon VPNavBarMenuLink" href="https://www.rxthink.cn/goods/detail/2" target="_blank" rel="noreferrer" tabindex="0" data-v-b192e9c1 data-v-5fb253b1><!--[--><span data-v-5fb253b1>授权</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-b192e9c1 data-v-223824a4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-223824a4><span class="text" data-v-223824a4><!----><span data-v-223824a4>部署文档</span><span class="vpi-chevron-down text-icon" data-v-223824a4></span></span></button><div class="menu" data-v-223824a4><div class="VPMenu" data-v-223824a4 data-v-b6be4b39><div class="items" data-v-b6be4b39><!--[--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp6.layui.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF混编版ThinkPHP6+Layui版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp6.elevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP6+ElementPlus版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp6.antdvue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP6+AntDesign版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp6.naivevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP6+NaiveUI版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp8.layui.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF混编版ThinkPHP8+Layui版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp8.elevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP8+ElementPlus版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp8.antdvue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP8+AntDesign版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.thinkphp8.naivevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP8+NaiveUI版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.laravel13.layui.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF混编版Laravel13+Layui版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.laravel13.elevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离Laravel13+ElementPlus版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.laravel13.antdvue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离Laravel13+AntDesign版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://docs.laravel13.naivevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离Laravel13+NaiveUI版本<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-b192e9c1 data-v-223824a4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-223824a4><span class="text" data-v-223824a4><!----><span data-v-223824a4>在线演示</span><span class="vpi-chevron-down text-icon" data-v-223824a4></span></span></button><div class="menu" data-v-223824a4><div class="VPMenu" data-v-223824a4 data-v-b6be4b39><div class="items" data-v-b6be4b39><!--[--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp6.layui.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF混编版ThinkPHP6+Layui版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp6.elevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP6+ElementPlus版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp6.antdvue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP6+AntDesign版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp6.naivevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP6+NaiveUI版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp8.layui.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF混编版ThinkPHP8+Layui版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp8.elevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP8+ElementPlus版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp8.antdvue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP8+AntDesign版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.thinkphp8.naivevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离ThinkPHP8+NaiveUI版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.laravel13.layui.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF混编版Laravel13+Layui版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.laravel13.elevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离Laravel13+ElementPlus版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.laravel13.antdvue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离Laravel13+AntDesign版本<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="http://manage.laravel13.naivevue.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->RXThinkCMF前后端分离Laravel13+NaiveUI版本<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--[--><a class="VPLink link VPNavBarMenuLink" href="/zh/other/sponsor.html" tabindex="0" data-v-b192e9c1 data-v-5fb253b1><!--[--><span data-v-5fb253b1>广告赞助</span><!--]--></a><!--]--><!--[--><div class="VPFlyout VPNavBarMenuGroup" data-v-b192e9c1 data-v-223824a4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" data-v-223824a4><span class="text" data-v-223824a4><!----><span data-v-223824a4>相关链接</span><span class="vpi-chevron-down text-icon" data-v-223824a4></span></span></button><div class="menu" data-v-223824a4><div class="VPMenu" data-v-223824a4 data-v-b6be4b39><div class="items" data-v-b6be4b39><!--[--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="https://www.rxthink.cn" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->官方网站<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->Gitee 仓库<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="https://laravel.com/" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->Laravel 官网<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="https://cn.vuejs.org/" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->Vue3 文档<!--]--></a></div><!--]--><!--[--><div class="VPMenuLink" data-v-b6be4b39 data-v-f956f3ad><a class="VPLink link vp-external-link-icon" href="https://www.naiveui.com/" target="_blank" rel="noreferrer" data-v-f956f3ad><!--[-->NaiveUI<!--]--></a></div><!--]--><!--]--></div><!--[--><!--]--></div></div></div><!--]--><!--]--></nav><!----><div class="VPNavBarAppearance appearance" data-v-9ee283ce data-v-0b7bb029><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-0b7bb029 data-v-fef60102 data-v-3a5bff6c><span class="check" data-v-3a5bff6c><span class="icon" data-v-3a5bff6c><!--[--><span class="vpi-sun sun" data-v-fef60102></span><span class="vpi-moon moon" data-v-fef60102></span><!--]--></span></span></button></div><div class="VPSocialLinks VPNavBarSocialLinks social-links" data-v-9ee283ce data-v-929d9abf data-v-9e0f05cc><!--[--><a class="VPSocialLink no-icon" href="https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue" aria-label="github" target="_blank" rel="noopener" data-v-9e0f05cc data-v-d8bc420f><span class="vpi-social-github" /></a><!--]--></div><div class="VPFlyout VPNavBarExtra extra" data-v-9ee283ce data-v-78391181 data-v-223824a4><button type="button" class="button" aria-haspopup="true" aria-expanded="false" aria-label="extra navigation" data-v-223824a4><span class="vpi-more-horizontal icon" data-v-223824a4></span></button><div class="menu" data-v-223824a4><div class="VPMenu" data-v-223824a4 data-v-b6be4b39><!----><!--[--><!--[--><!----><div class="group" data-v-78391181><div class="item appearance" data-v-78391181><p class="label" data-v-78391181>Appearance</p><div class="appearance-action" data-v-78391181><button class="VPSwitch VPSwitchAppearance" type="button" role="switch" title aria-checked="false" data-v-78391181 data-v-fef60102 data-v-3a5bff6c><span class="check" data-v-3a5bff6c><span class="icon" data-v-3a5bff6c><!--[--><span class="vpi-sun sun" data-v-fef60102></span><span class="vpi-moon moon" data-v-fef60102></span><!--]--></span></span></button></div></div></div><div class="group" data-v-78391181><div class="item social-links" data-v-78391181><div class="VPSocialLinks social-links-list" data-v-78391181 data-v-9e0f05cc><!--[--><a class="VPSocialLink no-icon" href="https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue" aria-label="github" target="_blank" rel="noopener" data-v-9e0f05cc data-v-d8bc420f><span class="vpi-social-github" /></a><!--]--></div></div></div><!--]--><!--]--></div></div></div><!--[--><!--]--><button type="button" class="VPNavBarHamburger hamburger" aria-label="mobile navigation" aria-expanded="false" aria-controls="VPNavScreen" data-v-9ee283ce data-v-9173bc9b><span class="container" data-v-9173bc9b><span class="top" data-v-9173bc9b></span><span class="middle" data-v-9173bc9b></span><span class="bottom" data-v-9173bc9b></span></span></button></div></div></div></div><div class="divider" data-v-9ee283ce><div class="divider-line" data-v-9ee283ce></div></div></div><!----></header><div class="VPLocalNav has-sidebar empty" data-v-4dae6186 data-v-b4df0add><div class="container" data-v-b4df0add><button class="menu" aria-expanded="false" aria-controls="VPSidebarNav" data-v-b4df0add><span class="vpi-align-left menu-icon" data-v-b4df0add></span><span class="menu-text" data-v-b4df0add>Menu</span></button><div class="VPLocalNavOutlineDropdown" style="--vp-vh:0px;" data-v-b4df0add data-v-3a3ce8d3><button data-v-3a3ce8d3>Return to top</button><!----></div></div></div><aside class="VPSidebar" data-v-4dae6186 data-v-bf80c8a3><div class="curtain" data-v-bf80c8a3></div><nav class="nav" id="VPSidebarNav" aria-labelledby="sidebar-aria-label" tabindex="-1" data-v-bf80c8a3><span class="visually-hidden" id="sidebar-aria-label" data-v-bf80c8a3> Sidebar Navigation </span><!--[--><!--]--><!--[--><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>📖 1. 了解项目</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/introduction.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>1.1 项目介绍</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/why.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>1.2 为什么选择我们</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/directory.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>1.3 项目目录结构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/course.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>1.4 新手入门指南</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tech-stack.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>1.5 技术栈说明</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/changelog.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>1.6 更新日志</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🚀 2. 快速入门</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/environment.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.1 开发环境准备</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/laragon.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.2 Laragon 环境搭建</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/backend-start.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.3 后端服务启动</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/frontend-start.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.4 前端服务启动</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/database-init.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.5 数据库初始化</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/env-vars.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.6 环境变量配置</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/first-api.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.7 第一个接口调试</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/docker.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.8 Docker 快速体验</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/quickstart/faq.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>2.9 常见问题 FAQ</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🧪 3. 模块开发实战</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/overview.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.1 概述与目标</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/database.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.2 数据库建表</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/model.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.3 模型层开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/validator.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.4 FormRequest 验证器</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/logic.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.5 Service 层开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/controller.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.6 控制器开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/route.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.7 路由注册</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/permission.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.8 权限节点配置</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/frontend-integration.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.9 前端联调指引</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/code-list.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.10 完整代码清单</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/guide/faq.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>3.11 常见问题与排错</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🏛️ 4. 架构设计</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/overview.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.1 整体架构概览</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/request-flow.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.2 请求处理链路</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/backend-layer.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.3 后端分层架构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/frontend-layer.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.4 前端分层架构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/directory-design.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.5 目录结构设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/base-classes.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.6 核心基类体系</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/cross-cutting.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.7 横切机制</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/cache.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.8 缓存架构设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/database-design.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.9 数据库设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/security.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.10 安全架构设计</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/architecture/extensibility.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>4.11 扩展性设计</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🔐 5. 核心功能</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>认证与安全</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/jwt.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.1 用户认证(JWT)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/auth-flow.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.2 认证流程实战</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/captcha.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.3 验证码机制</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/rbac.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.4 权限管理(RBAC)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/cors.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.5 跨域资源共享</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/password.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.6 密码加密服务</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/demo-mode.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.7 演示模式</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>数据与配置</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/tenant.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.8 多租户隔离</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/data-scope.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.9 数据权限</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/dict.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.10 字典模块</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/dict-guide.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.11 字典配置与使用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/config.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.12 系统配置管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/param.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.13 系统参数管理</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>日志与监控</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/operation-log.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.14 操作日志</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/login-log.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.15 登录日志</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>响应与异常</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/exception.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.16 统一响应与异常抛出</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>注解系统</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/core/attributes.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>5.17 注解系统总览</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>📦 6. 业务模块</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/user.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.1 用户管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/role.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.2 角色管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/menu.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.3 菜单管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/dept.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.4 部门管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/level.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.5 职级管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/position.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.6 岗位管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/article.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.7 文章管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/content.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.8 公告与链接管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/city.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.9 行政区划管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/category.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.10 分类管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/job.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.11 定时任务</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/param.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.12 参数管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/tenant.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.13 租户管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/filetemplate.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.14 文件模板管理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/modules/index.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>6.15 首页与个人中心</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🧰 7. 文件处理</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tools/upload.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>7.1 文件上传全流程</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tools/upload-config.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>7.2 上传配置详解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tools/rich-text.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>7.3 富文本处理</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tools/excel.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>7.4 数据导入导出</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tools/file-components.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>7.5 前端文件组件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/tools/db-migrate.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>7.6 数据库迁移工具</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible has-active" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🔗 8. 接口规范与对接</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/response.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.1 统一响应格式</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/error-code.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.2 错误码对照表</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/pagination.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.3 分页查询规范</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/upload.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.4 文件上传接口</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/dict-api.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.5 字典数据接口</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/token.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.6 Token 使用说明</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/api-spec/overview.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>8.7 API 接口总览</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🖥️ 9. 前端开发</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>工程基础</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/overview.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.1 前端工程概述</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/directory.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.2 目录结构详解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/env-config.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.3 环境与构建配置</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>核心机制</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/http.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.4 HTTP 请求封装</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/router.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.5 路由与动态菜单</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/store.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.6 状态管理(Pinia)</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/permission.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.7 权限控制</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/login.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.8 登录流程</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>公共组件</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/display-components.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.9 数据展示组件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/form-components.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.10 数据录入组件</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/excel-components.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.11 Excel 导入导出组件</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>开发实践</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/new-page.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.12 新增页面开发步骤</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/api-module.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.13 API 模块编写规范</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/style.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.14 样式与主题定制</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/layout.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.15 布局系统</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/frontend/utils.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>9.16 工具函数</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>🔧 10. 代码生成器</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/overview.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.1 概述与架构</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/cli.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.2 CLI 命令行使用</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/web-ui.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.3 Web 管理界面</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/parser.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.4 表结构解析引擎</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/code-engine.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.5 代码生成引擎</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/templates.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.6 自定义模板开发</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/config.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.7 配置文件详解</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/demo.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.8 实战案例</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/generator/faq.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>10.9 常见问题</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>⚙️ 11. 运维部署</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/checklist.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.1 部署 Checklist</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/env-plan.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.2 环境规划</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/db-migrate.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.3 数据库迁移</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/backend.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.4 后端部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/frontend.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.5 前端部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/docker.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.6 Docker 生产部署</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/performance.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.7 性能调优</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/security.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.8 安全加固清单</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/backup.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.9 备份与恢复</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/troubleshooting.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.10 故障排查手册</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/deploy/ci-cd.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>11.11 CI/CD 流水线</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>📋 12. 规范标准</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>⭐ 必须遵守</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/api-response.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.1 API 响应规范</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/pagination.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.2 分页查询规范</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/git.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.3 Git 提交规范</p><!--]--></a><!----></div><!----></div><!--]--></div></section><section class="VPSidebarItem level-1 collapsible" data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h3 class="text" data-v-e32f8976>📌 建议遵守</h3><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/deletion.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.4 数据删除规范</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/code-review.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.5 代码审查清单</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/backend-code.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.6 后端编码规范</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-2 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/standards/frontend-code.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>12.7 前端编码规范</p><!--]--></a><!----></div><!----></div><!--]--></div></section><!--]--></div></section></div><div class="no-transition group" data-v-f04be081><section class="VPSidebarItem level-0 collapsible" data-v-f04be081 data-v-e32f8976><div class="item" role="button" tabindex="0" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><h2 class="text" data-v-e32f8976>📄 附录</h2><div class="caret" role="button" aria-label="toggle section" tabindex="0" data-v-e32f8976><span class="vpi-chevron-right caret-icon" data-v-e32f8976></span></div></div><div class="items" data-v-e32f8976><!--[--><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/faq.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>A. 常见问题汇总</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/database-tables.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>B. 数据库表结构速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/config-reference.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>C. 配置项速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/functions.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>D. 公共函数速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/api-cheatsheet.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>E. API 接口速查表</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/middleware.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>F. 中间件执行顺序</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/components.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>G. 前端组件速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/stores.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>H. 前端 Store 速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/enums.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>I. 前端 Enums 速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/glossary.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>J. 术语表</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/appendix/commands.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>K. Artisan 命令速查</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/other/contributing.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>L. 贡献指南</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/other/declare.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>M. 免责声明</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link link" href="/zh/other/sponsor.html" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>N. 广告赞助</p><!--]--></a><!----></div><!----></div><div class="VPSidebarItem level-1 is-link" data-v-e32f8976><div class="item" data-v-e32f8976><div class="indicator" data-v-e32f8976></div><a class="VPLink link vp-external-link-icon link" href="https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue" target="_blank" rel="noreferrer" data-v-e32f8976><!--[--><p class="text" data-v-e32f8976>O. 开源协议</p><!--]--></a><!----></div><!----></div><!--]--></div></section></div><!--]--><!--[--><!--]--></nav></aside><div class="VPContent has-sidebar" id="VPContent" data-v-4dae6186 data-v-e52db3a1><div class="VPDoc has-sidebar has-aside" data-v-e52db3a1 data-v-b97a2373><!--[--><!--]--><div class="container" data-v-b97a2373><div class="aside" data-v-b97a2373><div class="aside-curtain" data-v-b97a2373></div><div class="aside-container" data-v-b97a2373><div class="aside-content" data-v-b97a2373><div class="VPDocAside" data-v-b97a2373 data-v-c23100fe><!--[--><!--]--><!--[--><!--]--><nav aria-labelledby="doc-outline-aria-label" class="VPDocAsideOutline" data-v-c23100fe data-v-b5a1c08a><div class="content" data-v-b5a1c08a><div class="outline-marker" data-v-b5a1c08a></div><div aria-level="2" class="outline-title" id="doc-outline-aria-label" role="heading" data-v-b5a1c08a>本页内容</div><ul class="VPDocOutlineItem root" data-v-b5a1c08a data-v-67a5fa10><!--[--><!--]--></ul></div></nav><!--[--><!--]--><div class="spacer" data-v-c23100fe></div><!--[--><!--[--><!--[--><!--[--><!--[--><div class="VPDocAsideSponsors" data-v-46d2db61><div class="VPSponsors vp-sponsor aside"><!--[--><section class="vp-sponsor-section"><!----><div class="VPSponsorsGrid vp-sponsor-grid mini"><!--[--><div class="vp-sponsor-grid-item"><a class="vp-sponsor-grid-link" href="https://www.rxthink.cn" target="_blank" rel="sponsored noopener"><article class="vp-sponsor-grid-box"><h4 class="visually-hidden">Become a sponsor</h4><img class="vp-sponsor-grid-image" src="/sponsor/rxthinkcmf.png" alt="Become a sponsor"></article></a></div><!--]--></div></section><section class="vp-sponsor-section"><!----><div class="VPSponsorsGrid vp-sponsor-grid xmini"><!--[--><div class="vp-sponsor-grid-item"><a class="vp-sponsor-grid-link" href="https://www.rxthink.cn" target="_blank" rel="sponsored noopener"><article class="vp-sponsor-grid-box"><h4 class="visually-hidden">企业级中台解决方案</h4><img class="vp-sponsor-grid-image" src="/sponsor/rxthinkcmf.png" alt="企业级中台解决方案"></article></a></div><div class="vp-sponsor-grid-item"><a class="vp-sponsor-grid-link" href="https://www.rxthink.cn" target="_blank" rel="sponsored noopener"><article class="vp-sponsor-grid-box"><h4 class="visually-hidden">企业级中台解决方案</h4><img class="vp-sponsor-grid-image" src="/sponsor/rxthinkcmf.png" alt="企业级中台解决方案"></article></a></div><!--]--></div></section><!--]--></div></div><a class="banner mp" href="https://www.rxthink.cn" target="_blank" data-v-46d2db61><img width="22" height="22" src="/sponsor/rxthinkcmf.png" data-v-46d2db61><span data-v-46d2db61><p class="extra-info" data-v-46d2db61>赋能开发者</p><p class="heading" data-v-46d2db61>企业级中台解决方案</p><p class="extra-info" data-v-46d2db61>助力企业发展</p></span></a><a class="banner cert" href="https://www.rxthink.cn" target="_blank" data-v-46d2db61><img width="22" height="22" src="/sponsor/rxthinkcmf.png" data-v-46d2db61><span data-v-46d2db61><p class="extra-info" data-v-46d2db61>赋能开发者</p><p class="heading" data-v-46d2db61>企业级中台解决方案</p><p class="extra-info" data-v-46d2db61>助力企业发展</p></span></a><!--]--><!--]--><!--]--><!--]--><!--]--><!----><!--[--><!--]--><!--[--><!--]--></div></div></div></div><div class="content" data-v-b97a2373><div class="content-container" data-v-b97a2373><!--[--><!--]--><main class="main" data-v-b97a2373><div style="position:relative;" class="vp-doc _zh_api-spec_pagination" data-v-b97a2373><div><h1 id="_8-3-分页查询规范" tabindex="-1">8.3 分页查询规范 <a class="header-anchor" href="#_8-3-分页查询规范" aria-label="Permalink to &quot;8.3 分页查询规范&quot;">​</a></h1><div class="tip custom-block"><p class="custom-block-title">概述</p><p>所有分页接口遵循统一的参数命名和返回结构。分页由 <code>Controller::_page()</code> → <code>Service::pageList()</code> 实现,前端只需传标准参数即可获得分页数据。</p></div><h2 id="请求参数" tabindex="-1">请求参数 <a class="header-anchor" href="#请求参数" aria-label="Permalink to &quot;请求参数&quot;">​</a></h2><table tabindex="0"><thead><tr><th>参数</th><th>类型</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td><code>pageNo</code></td><td>number</td><td>1</td><td>页码(最小为 1)</td></tr><tr><td><code>pageSize</code></td><td>number</td><td>20</td><td>每页条数(1~100)</td></tr><tr><td><code>orderField</code></td><td>string</td><td>-</td><td>排序字段(camelCase,如 <code>createTime</code>)</td></tr><tr><td><code>orderType</code></td><td>string</td><td><code>desc</code></td><td>排序方向(<code>asc</code> / <code>desc</code>)</td></tr><tr><td><code>fields</code></td><td>string</td><td>-</td><td>返回字段(逗号分隔,如 <code>id,username,realname</code>)</td></tr><tr><td>其他参数</td><td>-</td><td>-</td><td>按 Service 中配置的 <code>pageLikeFields</code> / <code>pageEqFields</code> 自动匹配</td></tr></tbody></table><h3 id="分页参数边界限制" tabindex="-1">分页参数边界限制 <a class="header-anchor" href="#分页参数边界限制" aria-label="Permalink to &quot;分页参数边界限制&quot;">​</a></h3><table tabindex="0"><thead><tr><th>参数</th><th>最小值</th><th>最大值</th><th>默认值</th><th>超出处理</th></tr></thead><tbody><tr><td><code>pageNo</code></td><td>1</td><td>-</td><td>1</td><td>小于 1 时强制为 1</td></tr><tr><td><code>pageSize</code></td><td>1</td><td>100</td><td>20</td><td>超出范围时限制在 1~100(防一次拉取过多)</td></tr></tbody></table><p>(边界由 <code>Controller::getPageParams()</code> 统一处理。)</p><h2 id="请求示例" tabindex="-1">请求示例 <a class="header-anchor" href="#请求示例" aria-label="Permalink to &quot;请求示例&quot;">​</a></h2><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 基本分页</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">10</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 带模糊搜索(LIKE)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">10</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">name</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">测试</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 带精确过滤(=)</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">10</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">status</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">1</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 模糊 + 精确组合</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">10</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">name</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">测试</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">status</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">1</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 自定义排序</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">10</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderField</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">createTime</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderType</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">desc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 指定返回字段</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">10</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">fields</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">id,name,status</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 多条件组合</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/user/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">20</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">username</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">admin</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">status</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">deptId</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">3</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderField</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">id</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderType</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">desc</span></span></code></pre></div><h2 id="返回结构" tabindex="-1">返回结构 <a class="header-anchor" href="#返回结构" aria-label="Permalink to &quot;返回结构&quot;">​</a></h2><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">code</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">ok</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#1E754F;"> true</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">msg</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">操作成功</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">data</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">records</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">id</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">name</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">测试</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">status</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">statusText</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">在用</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">createTime</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">2026-01-01 00:00:00</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> },</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">id</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 2</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">name</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">示例</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">status</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 2</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">statusText</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">停用</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">createTime</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">2026-01-02 00:00:00</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> }</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ],</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">total</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 100</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">current</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">size</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 10</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">pages</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 10</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> }</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><h3 id="返回字段" tabindex="-1">返回字段 <a class="header-anchor" href="#返回字段" aria-label="Permalink to &quot;返回字段&quot;">​</a></h3><table tabindex="0"><thead><tr><th>字段</th><th>类型</th><th>说明</th></tr></thead><tbody><tr><td><code>records</code></td><td>array</td><td>当前页数据列表</td></tr><tr><td><code>total</code></td><td>number</td><td>总记录数</td></tr><tr><td><code>current</code></td><td>number</td><td>当前页码</td></tr><tr><td><code>size</code></td><td>number</td><td>每页条数</td></tr><tr><td><code>pages</code></td><td>number</td><td>总页数</td></tr></tbody></table><h2 id="查询条件匹配" tabindex="-1">查询条件匹配 <a class="header-anchor" href="#查询条件匹配" aria-label="Permalink to &quot;查询条件匹配&quot;">​</a></h2><h3 id="pageLikeFields-—-模糊匹配-LIKE-" tabindex="-1">pageLikeFields — 模糊匹配(LIKE) <a class="header-anchor" href="#pageLikeFields-—-模糊匹配-LIKE-" aria-label="Permalink to &quot;pageLikeFields — 模糊匹配(LIKE)&quot;">​</a></h3><p>在 Service 中配置的字段,前端传参时自动使用 <code>LIKE &#39;%值%&#39;</code> 查询:</p><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">class</span><span style="--shiki-dark:#97E1F1;--shiki-light:#2E8F82;"> ExampleService</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> extends</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#59873A;--shiki-light-font-style:inherit;"> BaseService</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageLikeFields</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">name</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">title</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># name 字段自动使用 LIKE 查询</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?name=测试</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 生成: WHERE name LIKE &#39;%测试%&#39;</span></span></code></pre></div><h3 id="pageEqFields-—-精确匹配-" tabindex="-1">pageEqFields — 精确匹配(=) <a class="header-anchor" href="#pageEqFields-—-精确匹配-" aria-label="Permalink to &quot;pageEqFields — 精确匹配(=)&quot;">​</a></h3><p>在 Service 中配置的字段,前端传参时自动使用 <code>= 值</code> 查询:</p><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">class</span><span style="--shiki-dark:#97E1F1;--shiki-light:#2E8F82;"> ExampleService</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> extends</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#59873A;--shiki-light-font-style:inherit;"> BaseService</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageEqFields</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">status</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">type</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">category_id</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># status 和 type 字段自动使用 = 查询</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?status=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">type</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">2</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 生成: WHERE status = 1 AND type = 2</span></span></code></pre></div><h3 id="条件组合" tabindex="-1">条件组合 <a class="header-anchor" href="#条件组合" aria-label="Permalink to &quot;条件组合&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 模糊 + 精确 + 排序 + 分页</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?pageNo=</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">20</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">name</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">测试</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">status</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderField</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sort</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderType</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">asc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 生成 SQL(buildQuery 组装):</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># SELECT * FROM laravel_example</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># WHERE is_delete = 0</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># AND name LIKE &#39;%测试%&#39;</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># AND status = 1</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># AND tenant_id = 1 ← 租户隔离(启用时)</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># ORDER BY sort ASC</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># LIMIT 20 OFFSET 0</span></span></code></pre></div><p><code>buildQuery</code> 叠加顺序(见 <a href="/zh/architecture/cross-cutting.html">4.7 横切机制</a>):额外固定条件 → LIKE → 精确匹配 → 数据权限 → 租户隔离。</p><h2 id="排序" tabindex="-1">排序 <a class="header-anchor" href="#排序" aria-label="Permalink to &quot;排序&quot;">​</a></h2><h3 id="前端传参排序" tabindex="-1">前端传参排序 <a class="header-anchor" href="#前端传参排序" aria-label="Permalink to &quot;前端传参排序&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 按创建时间倒序</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?orderField=createTime</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderType</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">desc</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 按排序字段正序</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?orderField=sort</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&amp;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#B07D48;">orderType</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">=</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">asc</span></span></code></pre></div><h3 id="Service-默认排序" tabindex="-1">Service 默认排序 <a class="header-anchor" href="#Service-默认排序" aria-label="Permalink to &quot;Service 默认排序&quot;">​</a></h3><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 单字段排序</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageOrderBy</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">field</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sort</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">type</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">asc</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 多字段排序</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageOrderBy</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">field</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sort</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">type</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">asc</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">],</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">field</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">id</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">type</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">desc</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">],</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span></code></pre></div><p><strong>优先级:</strong> 前端传参 &gt; Service 默认配置。</p><div class="warning custom-block"><p class="custom-block-title">排序白名单</p><p>前端 <code>orderField</code> 会先做 camel→snake 转换,再与 <strong><code>pageOrderBy</code> 默认字段 ∪ <code>orderFieldAllow</code></strong> 的并集比对——不在白名单内的字段<strong>直接忽略</strong>(防 SQL 注入)。需要开放更多排序字段请配置 <code>orderFieldAllow</code>。见 <a href="/zh/guide/logic.html">3.5 Service 层开发</a>。</p></div><h2 id="字段过滤" tabindex="-1">字段过滤 <a class="header-anchor" href="#字段过滤" aria-label="Permalink to &quot;字段过滤&quot;">​</a></h2><h3 id="fields-参数" tabindex="-1">fields 参数 <a class="header-anchor" href="#fields-参数" aria-label="Permalink to &quot;fields 参数&quot;">​</a></h3><p>前端可通过 <code>fields</code> 参数指定只需要的字段,减少数据传输量:</p><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 只返回 id、name、status 三个字段</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?fields=id,name,status</span></span></code></pre></div><p><strong>响应:</strong></p><div class="language-json vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">json</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">records</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">id</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">name</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">测试</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">status</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> },</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">id</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 2</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">name</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &quot;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">示例</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&quot;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;"> &quot;</span><span style="--shiki-dark:#97E1F1;--shiki-light:#998418;">status</span><span style="--shiki-dark:#97E2F2;--shiki-light:#99841877;">&quot;</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 2</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> }</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><p>(由 <code>BaseService::filterFields()</code> 处理,<code>id</code> 字段始终保留。)</p><h2 id="参数转换" tabindex="-1">参数转换 <a class="header-anchor" href="#参数转换" aria-label="Permalink to &quot;参数转换&quot;">​</a></h2><p>前端使用 camelCase,后端自动转换为 snake_case(<code>convertQueryParams</code>):</p><table tabindex="0"><thead><tr><th>前端参数</th><th>转换后</th><th>说明</th></tr></thead><tbody><tr><td><code>pageNo</code></td><td><code>pageNo</code></td><td>不转换(排除项)</td></tr><tr><td><code>pageSize</code></td><td><code>pageSize</code></td><td>不转换(排除项)</td></tr><tr><td><code>orderField</code></td><td><code>orderField</code></td><td>不转换(排除项)</td></tr><tr><td><code>orderType</code></td><td><code>orderType</code></td><td>不转换(排除项)</td></tr><tr><td><code>categoryId</code></td><td><code>category_id</code></td><td>自动转换</td></tr><tr><td><code>createTime</code></td><td><code>create_time</code></td><td>自动转换</td></tr><tr><td><code>userName</code></td><td><code>user_name</code></td><td>自动转换</td></tr></tbody></table><p>(排除项由 <code>config/api.php</code> 的 <code>convert_except_params</code> 配置,默认四项。)</p><h3 id="排序字段值也自动转换" tabindex="-1">排序字段值也自动转换 <a class="header-anchor" href="#排序字段值也自动转换" aria-label="Permalink to &quot;排序字段值也自动转换&quot;">​</a></h3><div class="language-bash vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">bash</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 前端传入 camelCase</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">GET</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> /api/example/page?orderField=createTime</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"># 后端自动转换为 snake_case</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">ORDER</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> BY</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> create_time</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;"> DESC</span></span></code></pre></div><h2 id="Controller-层实现" tabindex="-1">Controller 层实现 <a class="header-anchor" href="#Controller-层实现" aria-label="Permalink to &quot;Controller 层实现&quot;">​</a></h2><h3 id="使用-page-快捷方法-推荐-" tabindex="-1">使用 _page 快捷方法(推荐) <a class="header-anchor" href="#使用-page-快捷方法-推荐-" aria-label="Permalink to &quot;使用 _page 快捷方法(推荐)&quot;">​</a></h3><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">#[</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;">OperationLog</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">示例管理-查询分页</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> OperationLog</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">::</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#A65E2B;">TYPE_QUERY</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">]</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">#[</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;">Permission</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sys:example:page</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">示例分页</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">]</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">public</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> function</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">()</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">:</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> JsonResponse</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> return</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#999999;--shiki-light-font-style:inherit;"> $</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">this</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">-&gt;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">_page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#999999;--shiki-light-font-style:inherit;">$</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">this</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">-&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">exampleService</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><h3 id="带额外查询条件" tabindex="-1">带额外查询条件 <a class="header-anchor" href="#带额外查询条件" aria-label="Permalink to &quot;带额外查询条件&quot;">​</a></h3><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">#[</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;">Permission</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sys:user:page</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">用户分页</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">]</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">public</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> function</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">()</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">:</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> JsonResponse</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> // 额外固定条件:只查启用状态的用户</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> return</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#999999;--shiki-light-font-style:inherit;"> $</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">this</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">-&gt;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">_page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#999999;--shiki-light-font-style:inherit;">$</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">this</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">-&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">userService</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">status</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">]);</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><h3 id="带关联查询" tabindex="-1">带关联查询 <a class="header-anchor" href="#带关联查询" aria-label="Permalink to &quot;带关联查询&quot;">​</a></h3><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">#[</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;">Permission</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sys:article:page</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">文章分页</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#393A34;">]</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">public</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> function</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">()</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">:</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> JsonResponse</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;"> // 预加载分类关联(defaultWith 属性也可全局配置)</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> return</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#999999;--shiki-light-font-style:inherit;"> $</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">this</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">-&gt;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">_page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#999999;--shiki-light-font-style:inherit;">$</span><span style="--shiki-dark:#BF9EEE;--shiki-dark-font-style:italic;--shiki-light:#A65E2B;--shiki-light-font-style:inherit;">this</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">-&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">articleService</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [],</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">category</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">]);</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><h2 id="Service-层配置" tabindex="-1">Service 层配置 <a class="header-anchor" href="#Service-层配置" aria-label="Permalink to &quot;Service 层配置&quot;">​</a></h2><div class="language-php vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">php</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">class</span><span style="--shiki-dark:#97E1F1;--shiki-light:#2E8F82;"> ExampleService</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> extends</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#59873A;--shiki-light-font-style:inherit;"> BaseService</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">{</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> use</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> HasCrudOperations</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> HasQueryScopes</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> HasSerializeMaps</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> HasUniqueCheck</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> string</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">modelClass</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#97E1F1;--shiki-dark-font-style:italic;--shiki-light:#998418;--shiki-light-font-style:inherit;"> Example</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">::</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">class</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageLikeFields</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">name</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">title</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageEqFields</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">status</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">type</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">category_id</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">pageOrderBy</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">field</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">sort</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">type</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">asc</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> protected</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> array</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> $</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">serializeMaps</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> [</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">status</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> =&gt;</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">example_status</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">];</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><h2 id="前端集成" tabindex="-1">前端集成 <a class="header-anchor" href="#前端集成" aria-label="Permalink to &quot;前端集成&quot;">​</a></h2><h3 id="API-函数" tabindex="-1">API 函数 <a class="header-anchor" href="#API-函数" aria-label="Permalink to &quot;API 函数&quot;">​</a></h3><div class="language-typescript vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">typescript</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// ui/src/api/tool/example.ts</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">export</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> function</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> getExamplePage</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#FFB86C;--shiki-dark-font-style:italic;--shiki-light:#B07D48;--shiki-light-font-style:inherit;">params</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">?</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> return</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> http</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">request</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">({ </span><span style="--shiki-dark:#F6F6F4;--shiki-light:#998418;">url</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">/example/page</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">, </span><span style="--shiki-dark:#F6F6F4;--shiki-light:#998418;">method</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">GET</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">, </span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">params</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> });</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">}</span></span></code></pre></div><h3 id="组件使用" tabindex="-1">组件使用 <a class="header-anchor" href="#组件使用" aria-label="Permalink to &quot;组件使用&quot;">​</a></h3><div class="language-vue vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">vue</span><pre class="shiki shiki-themes dracula-soft vitesse-light vp-code" tabindex="0"><code><span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&lt;</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">script</span><span style="--shiki-dark:#62E884;--shiki-dark-font-style:italic;--shiki-light:#B07D48;--shiki-light-font-style:inherit;"> setup</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&gt;</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">import</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> getExamplePage</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> }</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> from</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;</span><span style="--shiki-dark:#E7EE98;--shiki-light:#B56959;">@/api/tool/example</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;">&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> tableData</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> ref</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">([]);</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> pageNo</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> ref</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> ref</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">20</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> total</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> ref</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;">0</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">);</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> searchForm</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> ref</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">({</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#998418;"> name</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#998418;"> status</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#DEE492;--shiki-light:#B5695977;"> &#39;&#39;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> });</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> fetchData</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> async</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ()</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;"> const</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> res</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;"> await</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> getExamplePage</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">({</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#998418;"> pageNo</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> pageNo</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#998418;"> pageSize</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;">:</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> pageSize</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> ...</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">searchForm</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">,</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> });</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> tableData</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> res</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">records</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> total</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> res</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">total</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">};</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 搜索</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> handleSearch</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> ()</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> pageNo</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#BF9EEE;--shiki-light:#2F798A;"> 1</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> fetchData</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">();</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">};</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#7B7F8B;--shiki-light:#A0ADA0;">// 翻页</span></span>
<span class="line"><span style="--shiki-dark:#F286C4;--shiki-light:#AB5959;">const</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> handlePageChange</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> (</span><span style="--shiki-dark:#FFB86C;--shiki-dark-font-style:italic;--shiki-light:#B07D48;--shiki-light-font-style:inherit;">page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">)</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =&gt;</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;"> {</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> pageNo</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">.</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;">value</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#B07D48;"> page</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">;</span></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> fetchData</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">();</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">};</span></span>
<span class="line"></span>
<span class="line"><span style="--shiki-dark:#62E884;--shiki-light:#59873A;">onMounted</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">(()</span><span style="--shiki-dark:#F286C4;--shiki-light:#999999;"> =&gt;</span><span style="--shiki-dark:#62E884;--shiki-light:#59873A;"> fetchData</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">());</span></span>
<span class="line"><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&lt;/</span><span style="--shiki-dark:#F286C4;--shiki-light:#1E754F;">script</span><span style="--shiki-dark:#F6F6F4;--shiki-light:#999999;">&gt;</span></span></code></pre></div><h2 id="常见问题" tabindex="-1">常见问题 <a class="header-anchor" href="#常见问题" aria-label="Permalink to &quot;常见问题&quot;">​</a></h2><h3 id="问题-1-搜索条件不生效" tabindex="-1">问题 1:搜索条件不生效 <a class="header-anchor" href="#问题-1-搜索条件不生效" aria-label="Permalink to &quot;问题 1:搜索条件不生效&quot;">​</a></h3><p><strong>原因:</strong> 字段名未在 <code>pageLikeFields</code> 或 <code>pageEqFields</code> 中配置。</p><p><strong>解决:</strong> 在 Service 中添加对应字段配置。</p><h3 id="问题-2-排序不生效" tabindex="-1">问题 2:排序不生效 <a class="header-anchor" href="#问题-2-排序不生效" aria-label="Permalink to &quot;问题 2:排序不生效&quot;">​</a></h3><p><strong>原因:</strong> <code>orderField</code> 不在排序白名单(<code>pageOrderBy</code> ∪ <code>orderFieldAllow</code>)内,或字段名转换后与数据库列不匹配。</p><p><strong>解决:</strong> 确认传 camelCase 形式且字段在白名单内;开放新字段配置 <code>orderFieldAllow</code>。</p><h3 id="问题-3-分页数据重复" tabindex="-1">问题 3:分页数据重复 <a class="header-anchor" href="#问题-3-分页数据重复" aria-label="Permalink to &quot;问题 3:分页数据重复&quot;">​</a></h3><p><strong>原因:</strong> 排序字段值相同,导致数据库返回顺序不确定。</p><p><strong>解决:</strong> 排序字段加上唯一字段(如 id)作为第二排序条件(多字段 <code>pageOrderBy</code>)。</p><h3 id="问题-4-pageSize-传-1000-无效" tabindex="-1">问题 4:pageSize 传 1000 无效 <a class="header-anchor" href="#问题-4-pageSize-传-1000-无效" aria-label="Permalink to &quot;问题 4:pageSize 传 1000 无效&quot;">​</a></h3><p><strong>原因:</strong> <code>getPageParams()</code> 将 pageSize 限制在 1~100(防一次拉取过多数据)。</p><p><strong>解决:</strong> 如需导出大量数据,使用导出接口(<code>chunkExport</code> 分批)而非拉大分页。</p></div></div></main><footer class="VPDocFooter" data-v-b97a2373 data-v-11181de8><!--[--><!--]--><div class="edit-info" data-v-11181de8><div class="edit-link" data-v-11181de8><a class="VPLink link vp-external-link-icon no-icon edit-link-button" href="https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue" target="_blank" rel="noreferrer" data-v-11181de8><!--[--><span class="vpi-square-pen edit-link-icon" data-v-11181de8></span> 对本页提出修改建议<!--]--></a></div><!----></div><nav class="prev-next" aria-labelledby="doc-footer-aria-label" data-v-11181de8><span class="visually-hidden" id="doc-footer-aria-label" data-v-11181de8>Pager</span><div class="pager" data-v-11181de8><a class="VPLink link pager-link prev" href="/zh/api-spec/error-code.html" data-v-11181de8><!--[--><span class="desc" data-v-11181de8>上一页</span><span class="title" data-v-11181de8>8.2 错误码对照表</span><!--]--></a></div><div class="pager" data-v-11181de8><a class="VPLink link pager-link next" href="/zh/api-spec/upload.html" data-v-11181de8><!--[--><span class="desc" data-v-11181de8>下一页</span><span class="title" data-v-11181de8>8.4 文件上传接口</span><!--]--></a></div></nav></footer><!--[--><!--]--></div></div></div><!--[--><!--]--></div></div><footer class="VPFooter has-sidebar" data-v-4dae6186 data-v-04f60575><div class="container" data-v-04f60575><p class="message" data-v-04f60575>小蚂蚁云团队 · 提供技术支持</p><p class="copyright" data-v-04f60575>Copyright © 2018~2026 www.rxthink.cn. All rights reserved.</p></div></footer><!--[--><!--]--></div></div>
<script>window.__VP_HASH_MAP__=JSON.parse("{\"claude.md\":\"CmwsTUDV\",\"index.md\":\"BfVev3oF\",\"readme.md\":\"C09rhUuk\",\"zh_api-spec_dict-api.md\":\"DDWerLVj\",\"zh_api-spec_error-code.md\":\"BaMdlFcG\",\"zh_api-spec_overview.md\":\"CJmp0iBV\",\"zh_api-spec_pagination.md\":\"CD3kk-p4\",\"zh_api-spec_response.md\":\"BR1SH64U\",\"zh_api-spec_token.md\":\"C8eA4flk\",\"zh_api-spec_upload.md\":\"tTgjlj7M\",\"zh_appendix_api-cheatsheet.md\":\"DCWbgKhm\",\"zh_appendix_commands.md\":\"BMuJZ489\",\"zh_appendix_components.md\":\"C4NOE5Ox\",\"zh_appendix_config-reference.md\":\"nnJb-uYE\",\"zh_appendix_database-tables.md\":\"DQRRHJAO\",\"zh_appendix_enums.md\":\"CHa54FfU\",\"zh_appendix_faq.md\":\"FINi6NjZ\",\"zh_appendix_functions.md\":\"DRlatkVI\",\"zh_appendix_glossary.md\":\"CYHL2mf_\",\"zh_appendix_middleware.md\":\"DaJw1rqi\",\"zh_appendix_stores.md\":\"WakVjBl-\",\"zh_architecture_backend-layer.md\":\"DL6NIOvW\",\"zh_architecture_base-classes.md\":\"BjZtEl_g\",\"zh_architecture_cache.md\":\"CeiGf4J5\",\"zh_architecture_cross-cutting.md\":\"DxOn90lE\",\"zh_architecture_database-design.md\":\"CvsADRAM\",\"zh_architecture_directory-design.md\":\"BdWF79zf\",\"zh_architecture_extensibility.md\":\"BdkIodwA\",\"zh_architecture_frontend-layer.md\":\"BTb5fo1h\",\"zh_architecture_overview.md\":\"DcE5KaMd\",\"zh_architecture_request-flow.md\":\"BCm7FLJF\",\"zh_architecture_security.md\":\"zD5PJKA2\",\"zh_changelog.md\":\"DStIxD4p\",\"zh_core_attributes.md\":\"Dxf-Lk5K\",\"zh_core_auth-flow.md\":\"CsyHMQGW\",\"zh_core_captcha.md\":\"QMW9xc-p\",\"zh_core_config.md\":\"B81O9WZO\",\"zh_core_cors.md\":\"ByOJcf5i\",\"zh_core_data-scope.md\":\"BqyY0NV-\",\"zh_core_demo-mode.md\":\"C0wamQs1\",\"zh_core_dict-guide.md\":\"CZXiT8Ag\",\"zh_core_dict.md\":\"BaqYSD1C\",\"zh_core_exception.md\":\"CrxM2cX-\",\"zh_core_jwt.md\":\"DgQb75oj\",\"zh_core_login-log.md\":\"DG154zhF\",\"zh_core_operation-log.md\":\"RQ85qwMA\",\"zh_core_param.md\":\"Bvhk-7TM\",\"zh_core_password.md\":\"BntXAdZB\",\"zh_core_rbac.md\":\"DijWsyoz\",\"zh_core_tenant.md\":\"K6ScUaAh\",\"zh_course.md\":\"CCEPzzlU\",\"zh_deploy_backend.md\":\"Cdzc4Bc1\",\"zh_deploy_backup.md\":\"DtITKH9r\",\"zh_deploy_checklist.md\":\"CQKt9KGj\",\"zh_deploy_ci-cd.md\":\"FFit-2qd\",\"zh_deploy_db-migrate.md\":\"D93GA9lH\",\"zh_deploy_docker.md\":\"D8Put12h\",\"zh_deploy_env-plan.md\":\"BNyeiZJf\",\"zh_deploy_frontend.md\":\"DKRH-5WD\",\"zh_deploy_performance.md\":\"Hn728dgB\",\"zh_deploy_security.md\":\"kihNF0uU\",\"zh_deploy_troubleshooting.md\":\"CJckLTaA\",\"zh_directory.md\":\"Dhamxx49\",\"zh_frontend_api-module.md\":\"CIo8WV2b\",\"zh_frontend_directory.md\":\"CDZ_NJnc\",\"zh_frontend_display-components.md\":\"6yamzql6\",\"zh_frontend_env-config.md\":\"Du5rmWen\",\"zh_frontend_excel-components.md\":\"s0ZizcdL\",\"zh_frontend_form-components.md\":\"CU5GmwCD\",\"zh_frontend_http.md\":\"DGhTiM86\",\"zh_frontend_layout.md\":\"C-xPG49T\",\"zh_frontend_login.md\":\"Cd03yqgJ\",\"zh_frontend_new-page.md\":\"Cmgik6NI\",\"zh_frontend_overview.md\":\"CsNqve6R\",\"zh_frontend_permission.md\":\"Dt7SbNpk\",\"zh_frontend_router.md\":\"Cb4WtU8g\",\"zh_frontend_store.md\":\"tGoYqIu8\",\"zh_frontend_style.md\":\"B0z_IP3L\",\"zh_frontend_utils.md\":\"COeAcmls\",\"zh_generator_cli.md\":\"BoDYsLF2\",\"zh_generator_code-engine.md\":\"DhDRl6aA\",\"zh_generator_config.md\":\"CW46mVW7\",\"zh_generator_demo.md\":\"BYHkGExa\",\"zh_generator_faq.md\":\"Bm5s34Ny\",\"zh_generator_overview.md\":\"BgPKwBEK\",\"zh_generator_parser.md\":\"UvQUB6Et\",\"zh_generator_templates.md\":\"AWt_lQ8w\",\"zh_generator_web-ui.md\":\"nMpjMNvK\",\"zh_guide_code-list.md\":\"CHhHtuIC\",\"zh_guide_controller.md\":\"BE9fZ12j\",\"zh_guide_database.md\":\"DAp8OT-x\",\"zh_guide_faq.md\":\"Bicj0pYB\",\"zh_guide_frontend-integration.md\":\"CBn2lKMC\",\"zh_guide_logic.md\":\"B76W2jcR\",\"zh_guide_model.md\":\"fgvcrXBy\",\"zh_guide_overview.md\":\"64HA48-e\",\"zh_guide_permission.md\":\"Bxxf1oIM\",\"zh_guide_route.md\":\"B9RFEXKZ\",\"zh_guide_validator.md\":\"C9bhgaRm\",\"zh_introduction.md\":\"eNRcdTBB\",\"zh_modules_article.md\":\"LPeUWzyJ\",\"zh_modules_category.md\":\"CNvSXO3h\",\"zh_modules_city.md\":\"CqNkAo1M\",\"zh_modules_content.md\":\"DsOkYZvD\",\"zh_modules_dept.md\":\"DjZqLPgi\",\"zh_modules_filetemplate.md\":\"DPH2nwER\",\"zh_modules_index.md\":\"aaATpoxP\",\"zh_modules_job.md\":\"DK6NCL1O\",\"zh_modules_level.md\":\"BZJvkqI9\",\"zh_modules_menu.md\":\"CBUBhsFY\",\"zh_modules_param.md\":\"Dg7bhSTv\",\"zh_modules_position.md\":\"D9rqZcZh\",\"zh_modules_role.md\":\"D2hQwyXY\",\"zh_modules_tenant.md\":\"CHKESGQX\",\"zh_modules_user.md\":\"CFLGMMZk\",\"zh_other_contributing.md\":\"4xlKv8BB\",\"zh_other_declare.md\":\"DHuZ7YkB\",\"zh_other_sponsor.md\":\"CMHRySP4\",\"zh_quickstart_backend-start.md\":\"CLJGSOAE\",\"zh_quickstart_database-init.md\":\"DAesTSl_\",\"zh_quickstart_docker.md\":\"DvE63qVu\",\"zh_quickstart_env-vars.md\":\"D2Miq5_X\",\"zh_quickstart_environment.md\":\"Ci1mzkEy\",\"zh_quickstart_faq.md\":\"CY12C6Ut\",\"zh_quickstart_first-api.md\":\"D8Q3WCqA\",\"zh_quickstart_frontend-start.md\":\"CmeeXuh1\",\"zh_quickstart_laragon.md\":\"jlt-NXUN\",\"zh_standards_api-response.md\":\"B0t-HsZ0\",\"zh_standards_backend-code.md\":\"CjaDe9TZ\",\"zh_standards_code-review.md\":\"DdUiyZfB\",\"zh_standards_deletion.md\":\"DL7wC1_i\",\"zh_standards_frontend-code.md\":\"Cffga4H9\",\"zh_standards_git.md\":\"a4ticXht\",\"zh_standards_pagination.md\":\"JDydSfsf\",\"zh_tech-stack.md\":\"CMuUu74U\",\"zh_tools_db-migrate.md\":\"BgZKYDUU\",\"zh_tools_excel.md\":\"pIKYeP9z\",\"zh_tools_file-components.md\":\"N8x8FmPa\",\"zh_tools_rich-text.md\":\"D12kT3xb\",\"zh_tools_upload-config.md\":\"CZsUkg1z\",\"zh_tools_upload.md\":\"CTM3IUUL\",\"zh_why.md\":\"CxzKxklC\"}");window.__VP_SITE_DATA__=JSON.parse("{\"lang\":\"en-US\",\"dir\":\"ltr\",\"title\":\"小蚂蚁云\",\"description\":\"A VitePress site\",\"base\":\"/\",\"head\":[],\"router\":{\"prefetchLinks\":true},\"appearance\":\"light\",\"themeConfig\":{\"logo\":\"/logo.svg\",\"outline\":[2,3],\"socialLinks\":[{\"icon\":\"github\",\"link\":\"https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue\"}],\"footer\":{\"copyright\":\"Copyright © 2018~2026 www.rxthink.cn. All rights reserved.\",\"message\":\"小蚂蚁云团队 · 提供技术支持\"},\"editLink\":{\"pattern\":\"https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue\",\"text\":\"对本页提出修改建议\"},\"search\":{\"provider\":\"local\"}},\"locales\":{\"root\":{\"label\":\"简体中文\",\"lang\":\"zh-CN\",\"link\":\"/\",\"description\":\"RXThinkCMF 企业级前后端分离后台管理系统 - Laravel 13 + Vue3 + NaiveUI\",\"head\":[[\"meta\",{\"property\":\"og:url\",\"content\":\"https://www.rxthink.cn\"}],[\"meta\",{\"property\":\"og:description\",\"content\":\"RXThinkCMF 企业级前后端分离后台管理系统 - Laravel 13 + Vue3 + NaiveUI\"}],[\"meta\",{\"property\":\"twitter:url\",\"content\":\"https://www.rxthink.cn\"}],[\"meta\",{\"property\":\"twitter:title\",\"content\":\"RXThinkCMF Laravel13+NaiveUI 开发文档\"}],[\"meta\",{\"property\":\"twitter:description\",\"content\":\"RXThinkCMF 企业级前后端分离后台管理系统 - Laravel 13 + Vue3 + NaiveUI\"}],[\"script\",{},\"\\n var _hmt = _hmt || [];\\n (function() {\\n var hm = document.createElement(\\\"script\\\");\\n hm.src = \\\"https://hm.baidu.com/hm.js?4f06f01017cdd5c1a95a58a6787f4d10\\\";\\n var s = document.getElementsByTagName(\\\"script\\\")[0];\\n s.parentNode.insertBefore(hm, s);\\n })();\\n \"]],\"themeConfig\":{\"editLink\":{\"pattern\":\"https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue\",\"text\":\"对本页提出修改建议\"},\"outline\":{\"label\":\"本页内容\"},\"docFooter\":{\"prev\":\"上一页\",\"next\":\"下一页\"},\"nav\":[{\"text\":\"官网\",\"link\":\"https://www.rxthink.cn\"},{\"text\":\"授权\",\"link\":\"https://www.rxthink.cn/goods/detail/2\"},{\"text\":\"部署文档\",\"items\":[{\"text\":\"RXThinkCMF混编版ThinkPHP6+Layui版本\",\"link\":\"http://docs.thinkphp6.layui.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP6+ElementPlus版本\",\"link\":\"http://docs.thinkphp6.elevue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP6+AntDesign版本\",\"link\":\"http://docs.thinkphp6.antdvue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP6+NaiveUI版本\",\"link\":\"http://docs.thinkphp6.naivevue.rxthink.cn\"},{\"text\":\"RXThinkCMF混编版ThinkPHP8+Layui版本\",\"link\":\"http://docs.thinkphp8.layui.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP8+ElementPlus版本\",\"link\":\"http://docs.thinkphp8.elevue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP8+AntDesign版本\",\"link\":\"http://docs.thinkphp8.antdvue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP8+NaiveUI版本\",\"link\":\"http://docs.thinkphp8.naivevue.rxthink.cn\"},{\"text\":\"RXThinkCMF混编版Laravel13+Layui版本\",\"link\":\"http://docs.laravel13.layui.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离Laravel13+ElementPlus版本\",\"link\":\"http://docs.laravel13.elevue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离Laravel13+AntDesign版本\",\"link\":\"http://docs.laravel13.antdvue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离Laravel13+NaiveUI版本\",\"link\":\"http://docs.laravel13.naivevue.rxthink.cn\"}]},{\"text\":\"在线演示\",\"items\":[{\"text\":\"RXThinkCMF混编版ThinkPHP6+Layui版本\",\"link\":\"http://manage.thinkphp6.layui.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP6+ElementPlus版本\",\"link\":\"http://manage.thinkphp6.elevue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP6+AntDesign版本\",\"link\":\"http://manage.thinkphp6.antdvue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP6+NaiveUI版本\",\"link\":\"http://manage.thinkphp6.naivevue.rxthink.cn\"},{\"text\":\"RXThinkCMF混编版ThinkPHP8+Layui版本\",\"link\":\"http://manage.thinkphp8.layui.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP8+ElementPlus版本\",\"link\":\"http://manage.thinkphp8.elevue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP8+AntDesign版本\",\"link\":\"http://manage.thinkphp8.antdvue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离ThinkPHP8+NaiveUI版本\",\"link\":\"http://manage.thinkphp8.naivevue.rxthink.cn\"},{\"text\":\"RXThinkCMF混编版Laravel13+Layui版本\",\"link\":\"http://manage.laravel13.layui.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离Laravel13+ElementPlus版本\",\"link\":\"http://manage.laravel13.elevue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离Laravel13+AntDesign版本\",\"link\":\"http://manage.laravel13.antdvue.rxthink.cn\"},{\"text\":\"RXThinkCMF前后端分离Laravel13+NaiveUI版本\",\"link\":\"http://manage.laravel13.naivevue.rxthink.cn\"}]},{\"text\":\"广告赞助\",\"link\":\"/zh/other/sponsor.html\"},{\"text\":\"相关链接\",\"items\":[{\"text\":\"官方网站\",\"link\":\"https://www.rxthink.cn\"},{\"text\":\"Gitee 仓库\",\"link\":\"https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue\"},{\"text\":\"Laravel 官网\",\"link\":\"https://laravel.com/\"},{\"text\":\"Vue3 文档\",\"link\":\"https://cn.vuejs.org/\"},{\"text\":\"NaiveUI\",\"link\":\"https://www.naiveui.com/\"}]}],\"sidebar\":{\"/zh/\":[{\"text\":\"📖 1. 了解项目\",\"collapsed\":false,\"items\":[{\"text\":\"1.1 项目介绍\",\"link\":\"/zh/introduction.html\"},{\"text\":\"1.2 为什么选择我们\",\"link\":\"/zh/why.html\"},{\"text\":\"1.3 项目目录结构\",\"link\":\"/zh/directory.html\"},{\"text\":\"1.4 新手入门指南\",\"link\":\"/zh/course.html\"},{\"text\":\"1.5 技术栈说明\",\"link\":\"/zh/tech-stack.html\"},{\"text\":\"1.6 更新日志\",\"link\":\"/zh/changelog.html\"}]},{\"text\":\"🚀 2. 快速入门\",\"collapsed\":false,\"items\":[{\"text\":\"2.1 开发环境准备\",\"link\":\"/zh/quickstart/environment.html\"},{\"text\":\"2.2 Laragon 环境搭建\",\"link\":\"/zh/quickstart/laragon.html\"},{\"text\":\"2.3 后端服务启动\",\"link\":\"/zh/quickstart/backend-start.html\"},{\"text\":\"2.4 前端服务启动\",\"link\":\"/zh/quickstart/frontend-start.html\"},{\"text\":\"2.5 数据库初始化\",\"link\":\"/zh/quickstart/database-init.html\"},{\"text\":\"2.6 环境变量配置\",\"link\":\"/zh/quickstart/env-vars.html\"},{\"text\":\"2.7 第一个接口调试\",\"link\":\"/zh/quickstart/first-api.html\"},{\"text\":\"2.8 Docker 快速体验\",\"link\":\"/zh/quickstart/docker.html\"},{\"text\":\"2.9 常见问题 FAQ\",\"link\":\"/zh/quickstart/faq.html\"}]},{\"text\":\"🧪 3. 模块开发实战\",\"collapsed\":false,\"items\":[{\"text\":\"3.1 概述与目标\",\"link\":\"/zh/guide/overview.html\"},{\"text\":\"3.2 数据库建表\",\"link\":\"/zh/guide/database.html\"},{\"text\":\"3.3 模型层开发\",\"link\":\"/zh/guide/model.html\"},{\"text\":\"3.4 FormRequest 验证器\",\"link\":\"/zh/guide/validator.html\"},{\"text\":\"3.5 Service 层开发\",\"link\":\"/zh/guide/logic.html\"},{\"text\":\"3.6 控制器开发\",\"link\":\"/zh/guide/controller.html\"},{\"text\":\"3.7 路由注册\",\"link\":\"/zh/guide/route.html\"},{\"text\":\"3.8 权限节点配置\",\"link\":\"/zh/guide/permission.html\"},{\"text\":\"3.9 前端联调指引\",\"link\":\"/zh/guide/frontend-integration.html\"},{\"text\":\"3.10 完整代码清单\",\"link\":\"/zh/guide/code-list.html\"},{\"text\":\"3.11 常见问题与排错\",\"link\":\"/zh/guide/faq.html\"}]},{\"text\":\"🏛️ 4. 架构设计\",\"collapsed\":false,\"items\":[{\"text\":\"4.1 整体架构概览\",\"link\":\"/zh/architecture/overview.html\"},{\"text\":\"4.2 请求处理链路\",\"link\":\"/zh/architecture/request-flow.html\"},{\"text\":\"4.3 后端分层架构\",\"link\":\"/zh/architecture/backend-layer.html\"},{\"text\":\"4.4 前端分层架构\",\"link\":\"/zh/architecture/frontend-layer.html\"},{\"text\":\"4.5 目录结构设计\",\"link\":\"/zh/architecture/directory-design.html\"},{\"text\":\"4.6 核心基类体系\",\"link\":\"/zh/architecture/base-classes.html\"},{\"text\":\"4.7 横切机制\",\"link\":\"/zh/architecture/cross-cutting.html\"},{\"text\":\"4.8 缓存架构设计\",\"link\":\"/zh/architecture/cache.html\"},{\"text\":\"4.9 数据库设计\",\"link\":\"/zh/architecture/database-design.html\"},{\"text\":\"4.10 安全架构设计\",\"link\":\"/zh/architecture/security.html\"},{\"text\":\"4.11 扩展性设计\",\"link\":\"/zh/architecture/extensibility.html\"}]},{\"text\":\"🔐 5. 核心功能\",\"collapsed\":false,\"items\":[{\"text\":\"认证与安全\",\"collapsed\":false,\"items\":[{\"text\":\"5.1 用户认证(JWT)\",\"link\":\"/zh/core/jwt.html\"},{\"text\":\"5.2 认证流程实战\",\"link\":\"/zh/core/auth-flow.html\"},{\"text\":\"5.3 验证码机制\",\"link\":\"/zh/core/captcha.html\"},{\"text\":\"5.4 权限管理(RBAC)\",\"link\":\"/zh/core/rbac.html\"},{\"text\":\"5.5 跨域资源共享\",\"link\":\"/zh/core/cors.html\"},{\"text\":\"5.6 密码加密服务\",\"link\":\"/zh/core/password.html\"},{\"text\":\"5.7 演示模式\",\"link\":\"/zh/core/demo-mode.html\"}]},{\"text\":\"数据与配置\",\"collapsed\":false,\"items\":[{\"text\":\"5.8 多租户隔离\",\"link\":\"/zh/core/tenant.html\"},{\"text\":\"5.9 数据权限\",\"link\":\"/zh/core/data-scope.html\"},{\"text\":\"5.10 字典模块\",\"link\":\"/zh/core/dict.html\"},{\"text\":\"5.11 字典配置与使用\",\"link\":\"/zh/core/dict-guide.html\"},{\"text\":\"5.12 系统配置管理\",\"link\":\"/zh/core/config.html\"},{\"text\":\"5.13 系统参数管理\",\"link\":\"/zh/core/param.html\"}]},{\"text\":\"日志与监控\",\"collapsed\":false,\"items\":[{\"text\":\"5.14 操作日志\",\"link\":\"/zh/core/operation-log.html\"},{\"text\":\"5.15 登录日志\",\"link\":\"/zh/core/login-log.html\"}]},{\"text\":\"响应与异常\",\"collapsed\":false,\"items\":[{\"text\":\"5.16 统一响应与异常抛出\",\"link\":\"/zh/core/exception.html\"}]},{\"text\":\"注解系统\",\"collapsed\":false,\"items\":[{\"text\":\"5.17 注解系统总览\",\"link\":\"/zh/core/attributes.html\"}]}]},{\"text\":\"📦 6. 业务模块\",\"collapsed\":false,\"items\":[{\"text\":\"6.1 用户管理\",\"link\":\"/zh/modules/user.html\"},{\"text\":\"6.2 角色管理\",\"link\":\"/zh/modules/role.html\"},{\"text\":\"6.3 菜单管理\",\"link\":\"/zh/modules/menu.html\"},{\"text\":\"6.4 部门管理\",\"link\":\"/zh/modules/dept.html\"},{\"text\":\"6.5 职级管理\",\"link\":\"/zh/modules/level.html\"},{\"text\":\"6.6 岗位管理\",\"link\":\"/zh/modules/position.html\"},{\"text\":\"6.7 文章管理\",\"link\":\"/zh/modules/article.html\"},{\"text\":\"6.8 公告与链接管理\",\"link\":\"/zh/modules/content.html\"},{\"text\":\"6.9 行政区划管理\",\"link\":\"/zh/modules/city.html\"},{\"text\":\"6.10 分类管理\",\"link\":\"/zh/modules/category.html\"},{\"text\":\"6.11 定时任务\",\"link\":\"/zh/modules/job.html\"},{\"text\":\"6.12 参数管理\",\"link\":\"/zh/modules/param.html\"},{\"text\":\"6.13 租户管理\",\"link\":\"/zh/modules/tenant.html\"},{\"text\":\"6.14 文件模板管理\",\"link\":\"/zh/modules/filetemplate.html\"},{\"text\":\"6.15 首页与个人中心\",\"link\":\"/zh/modules/index.html\"}]},{\"text\":\"🧰 7. 文件处理\",\"collapsed\":false,\"items\":[{\"text\":\"7.1 文件上传全流程\",\"link\":\"/zh/tools/upload.html\"},{\"text\":\"7.2 上传配置详解\",\"link\":\"/zh/tools/upload-config.html\"},{\"text\":\"7.3 富文本处理\",\"link\":\"/zh/tools/rich-text.html\"},{\"text\":\"7.4 数据导入导出\",\"link\":\"/zh/tools/excel.html\"},{\"text\":\"7.5 前端文件组件\",\"link\":\"/zh/tools/file-components.html\"},{\"text\":\"7.6 数据库迁移工具\",\"link\":\"/zh/tools/db-migrate.html\"}]},{\"text\":\"🔗 8. 接口规范与对接\",\"collapsed\":false,\"items\":[{\"text\":\"8.1 统一响应格式\",\"link\":\"/zh/api-spec/response.html\"},{\"text\":\"8.2 错误码对照表\",\"link\":\"/zh/api-spec/error-code.html\"},{\"text\":\"8.3 分页查询规范\",\"link\":\"/zh/api-spec/pagination.html\"},{\"text\":\"8.4 文件上传接口\",\"link\":\"/zh/api-spec/upload.html\"},{\"text\":\"8.5 字典数据接口\",\"link\":\"/zh/api-spec/dict-api.html\"},{\"text\":\"8.6 Token 使用说明\",\"link\":\"/zh/api-spec/token.html\"},{\"text\":\"8.7 API 接口总览\",\"link\":\"/zh/api-spec/overview.html\"}]},{\"text\":\"🖥️ 9. 前端开发\",\"collapsed\":false,\"items\":[{\"text\":\"工程基础\",\"collapsed\":false,\"items\":[{\"text\":\"9.1 前端工程概述\",\"link\":\"/zh/frontend/overview.html\"},{\"text\":\"9.2 目录结构详解\",\"link\":\"/zh/frontend/directory.html\"},{\"text\":\"9.3 环境与构建配置\",\"link\":\"/zh/frontend/env-config.html\"}]},{\"text\":\"核心机制\",\"collapsed\":false,\"items\":[{\"text\":\"9.4 HTTP 请求封装\",\"link\":\"/zh/frontend/http.html\"},{\"text\":\"9.5 路由与动态菜单\",\"link\":\"/zh/frontend/router.html\"},{\"text\":\"9.6 状态管理(Pinia)\",\"link\":\"/zh/frontend/store.html\"},{\"text\":\"9.7 权限控制\",\"link\":\"/zh/frontend/permission.html\"},{\"text\":\"9.8 登录流程\",\"link\":\"/zh/frontend/login.html\"}]},{\"text\":\"公共组件\",\"collapsed\":false,\"items\":[{\"text\":\"9.9 数据展示组件\",\"link\":\"/zh/frontend/display-components.html\"},{\"text\":\"9.10 数据录入组件\",\"link\":\"/zh/frontend/form-components.html\"},{\"text\":\"9.11 Excel 导入导出组件\",\"link\":\"/zh/frontend/excel-components.html\"}]},{\"text\":\"开发实践\",\"collapsed\":false,\"items\":[{\"text\":\"9.12 新增页面开发步骤\",\"link\":\"/zh/frontend/new-page.html\"},{\"text\":\"9.13 API 模块编写规范\",\"link\":\"/zh/frontend/api-module.html\"},{\"text\":\"9.14 样式与主题定制\",\"link\":\"/zh/frontend/style.html\"},{\"text\":\"9.15 布局系统\",\"link\":\"/zh/frontend/layout.html\"},{\"text\":\"9.16 工具函数\",\"link\":\"/zh/frontend/utils.html\"}]}]},{\"text\":\"🔧 10. 代码生成器\",\"collapsed\":false,\"items\":[{\"text\":\"10.1 概述与架构\",\"link\":\"/zh/generator/overview.html\"},{\"text\":\"10.2 CLI 命令行使用\",\"link\":\"/zh/generator/cli.html\"},{\"text\":\"10.3 Web 管理界面\",\"link\":\"/zh/generator/web-ui.html\"},{\"text\":\"10.4 表结构解析引擎\",\"link\":\"/zh/generator/parser.html\"},{\"text\":\"10.5 代码生成引擎\",\"link\":\"/zh/generator/code-engine.html\"},{\"text\":\"10.6 自定义模板开发\",\"link\":\"/zh/generator/templates.html\"},{\"text\":\"10.7 配置文件详解\",\"link\":\"/zh/generator/config.html\"},{\"text\":\"10.8 实战案例\",\"link\":\"/zh/generator/demo.html\"},{\"text\":\"10.9 常见问题\",\"link\":\"/zh/generator/faq.html\"}]},{\"text\":\"⚙️ 11. 运维部署\",\"collapsed\":false,\"items\":[{\"text\":\"11.1 部署 Checklist\",\"link\":\"/zh/deploy/checklist.html\"},{\"text\":\"11.2 环境规划\",\"link\":\"/zh/deploy/env-plan.html\"},{\"text\":\"11.3 数据库迁移\",\"link\":\"/zh/deploy/db-migrate.html\"},{\"text\":\"11.4 后端部署\",\"link\":\"/zh/deploy/backend.html\"},{\"text\":\"11.5 前端部署\",\"link\":\"/zh/deploy/frontend.html\"},{\"text\":\"11.6 Docker 生产部署\",\"link\":\"/zh/deploy/docker.html\"},{\"text\":\"11.7 性能调优\",\"link\":\"/zh/deploy/performance.html\"},{\"text\":\"11.8 安全加固清单\",\"link\":\"/zh/deploy/security.html\"},{\"text\":\"11.9 备份与恢复\",\"link\":\"/zh/deploy/backup.html\"},{\"text\":\"11.10 故障排查手册\",\"link\":\"/zh/deploy/troubleshooting.html\"},{\"text\":\"11.11 CI/CD 流水线\",\"link\":\"/zh/deploy/ci-cd.html\"}]},{\"text\":\"📋 12. 规范标准\",\"collapsed\":false,\"items\":[{\"text\":\"⭐ 必须遵守\",\"collapsed\":false,\"items\":[{\"text\":\"12.1 API 响应规范\",\"link\":\"/zh/standards/api-response.html\"},{\"text\":\"12.2 分页查询规范\",\"link\":\"/zh/standards/pagination.html\"},{\"text\":\"12.3 Git 提交规范\",\"link\":\"/zh/standards/git.html\"}]},{\"text\":\"📌 建议遵守\",\"collapsed\":false,\"items\":[{\"text\":\"12.4 数据删除规范\",\"link\":\"/zh/standards/deletion.html\"},{\"text\":\"12.5 代码审查清单\",\"link\":\"/zh/standards/code-review.html\"},{\"text\":\"12.6 后端编码规范\",\"link\":\"/zh/standards/backend-code.html\"},{\"text\":\"12.7 前端编码规范\",\"link\":\"/zh/standards/frontend-code.html\"}]}]},{\"text\":\"📄 附录\",\"collapsed\":false,\"items\":[{\"text\":\"A. 常见问题汇总\",\"link\":\"/zh/appendix/faq.html\"},{\"text\":\"B. 数据库表结构速查\",\"link\":\"/zh/appendix/database-tables.html\"},{\"text\":\"C. 配置项速查\",\"link\":\"/zh/appendix/config-reference.html\"},{\"text\":\"D. 公共函数速查\",\"link\":\"/zh/appendix/functions.html\"},{\"text\":\"E. API 接口速查表\",\"link\":\"/zh/appendix/api-cheatsheet.html\"},{\"text\":\"F. 中间件执行顺序\",\"link\":\"/zh/appendix/middleware.html\"},{\"text\":\"G. 前端组件速查\",\"link\":\"/zh/appendix/components.html\"},{\"text\":\"H. 前端 Store 速查\",\"link\":\"/zh/appendix/stores.html\"},{\"text\":\"I. 前端 Enums 速查\",\"link\":\"/zh/appendix/enums.html\"},{\"text\":\"J. 术语表\",\"link\":\"/zh/appendix/glossary.html\"},{\"text\":\"K. Artisan 命令速查\",\"link\":\"/zh/appendix/commands.html\"},{\"text\":\"L. 贡献指南\",\"link\":\"/zh/other/contributing.html\"},{\"text\":\"M. 免责声明\",\"link\":\"/zh/other/declare.html\"},{\"text\":\"N. 广告赞助\",\"link\":\"/zh/other/sponsor.html\"},{\"text\":\"O. 开源协议\",\"link\":\"https://gitee.com/rxthinkcmf/RXThinkCMF_Laravel13_NaiveVue\"}]}]}}}},\"scrollOffset\":134,\"cleanUrls\":false}");</script>
</body>
</html>