@@ -342,18 +380,58 @@ export default function UsersPage() {
meta={本地账号 · 可扩展外部身份源}
actions={} aria-label="新建客户账号" onClick={startCreate}>新建客户账号}
/>
-
+
+ 筛选客户账号按账号信息与权限状态缩小客户范围
}
+ onCancel={closeMobileFilters}
+ footer={
}
+ >
+
+
+
: setFiltersCollapsed((value) => !value)}
>
-
+
-
+ }
diff --git a/vehicle-data-platform/apps/web/src/v2/styles/workspace.css b/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
index eb01fa82..7a262c29 100644
--- a/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
+++ b/vehicle-data-platform/apps/web/src/v2/styles/workspace.css
@@ -17378,3 +17378,146 @@
font-weight: 700;
}
}
+
+/*
+ * Semi UI account directory discovery.
+ * Keep the customer list in the first viewport and apply mobile filters only
+ * after an explicit confirmation, matching alerts, access and history.
+ */
+@media (max-width: 680px) {
+ .v2-user-mobile-discovery {
+ display: grid;
+ min-width: 0;
+ flex: 0 0 auto;
+ gap: 8px;
+ }
+
+ .v2-user-mobile-discovery > .v2-mobile-filter-toggle.semi-button {
+ min-height: 58px;
+ margin: 0;
+ }
+
+ .v2-user-mobile-filter-sidesheet .semi-sidesheet-inner {
+ width: 100vw !important;
+ max-width: 100%;
+ overflow: hidden;
+ border-radius: 18px 18px 0 0;
+ background: #f4f7fb;
+ box-shadow: 0 -20px 56px rgba(25, 45, 72, .2);
+ padding-bottom: env(safe-area-inset-bottom);
+ }
+
+ .v2-user-mobile-filter-sidesheet.semi-sidesheet-bottom .semi-sidesheet-header {
+ min-height: 68px;
+ border-bottom: 1px solid #dfe7f0;
+ background: rgba(255, 255, 255, .98);
+ padding: 11px 14px;
+ }
+
+ .v2-user-mobile-filter-sidesheet.semi-sidesheet-bottom .semi-sidesheet-body {
+ min-height: 0;
+ overflow-y: auto;
+ background: #f4f7fb;
+ padding: 12px;
+ overscroll-behavior: contain;
+ }
+
+ .v2-user-mobile-filter-sidesheet.semi-sidesheet-bottom .semi-sidesheet-footer {
+ border-top: 1px solid #dfe7f0;
+ background: rgba(255, 255, 255, .98);
+ padding: 10px 12px calc(10px + env(safe-area-inset-bottom));
+ }
+
+ .v2-user-mobile-filter-title {
+ display: grid;
+ gap: 3px;
+ }
+
+ .v2-user-mobile-filter-title > strong {
+ color: #253a52;
+ font-size: 15px;
+ line-height: 1.3;
+ }
+
+ .v2-user-mobile-filter-title > span {
+ color: #8090a3;
+ font-size: 10px;
+ font-weight: 500;
+ line-height: 1.4;
+ }
+
+ .v2-user-mobile-filter-form {
+ display: grid;
+ gap: 10px;
+ }
+
+ .v2-user-mobile-filter-form > section {
+ display: grid;
+ gap: 12px;
+ border: 1px solid #dfe7f0;
+ border-radius: 12px;
+ background: #fff;
+ padding: 12px;
+ box-shadow: 0 8px 24px rgba(31, 53, 80, .055);
+ }
+
+ .v2-user-mobile-filter-form > section > header {
+ display: grid;
+ min-width: 0;
+ gap: 3px;
+ }
+
+ .v2-user-mobile-filter-form > section > header > strong {
+ color: #2b4058;
+ font-size: 13px;
+ line-height: 1.3;
+ }
+
+ .v2-user-mobile-filter-form > section > header > span {
+ color: #7c8b9e;
+ font-size: 10px;
+ line-height: 1.45;
+ }
+
+ .v2-user-mobile-filter-form > section > div {
+ display: grid;
+ gap: 11px;
+ }
+
+ .v2-user-mobile-filter-form label {
+ display: grid;
+ min-width: 0;
+ gap: 6px;
+ color: #5f7188;
+ font-size: 11px;
+ font-weight: 650;
+ }
+
+ .v2-user-mobile-filter-form label > .semi-input-wrapper,
+ .v2-user-mobile-filter-form label > .semi-select {
+ width: 100%;
+ min-height: 44px;
+ border-radius: 9px;
+ background: #fff;
+ }
+
+ .v2-user-mobile-filter-form .semi-input,
+ .v2-user-mobile-filter-form .semi-select-selection-text {
+ height: 42px;
+ font-size: 14px;
+ }
+
+ .v2-user-mobile-filter-footer {
+ display: grid;
+ width: 100%;
+ grid-template-columns: minmax(0, .72fr) minmax(0, 1.28fr);
+ gap: 9px;
+ }
+
+ .v2-user-mobile-filter-footer > .semi-button {
+ width: 100%;
+ min-height: 44px;
+ border-radius: 9px;
+ font-weight: 700;
+ }
+}