@liujitcn/kratos-admin-core 0.0.65 → 0.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/dist/package/declarations/src/components/CodeBlock/index.vue.d.ts +15 -0
  2. package/dist/package/declarations/src/components/ProForm/components/ProFormItem.vue.d.ts +4 -4
  3. package/dist/package/declarations/src/components/ProForm/interface/index.d.ts +1 -1
  4. package/dist/package/declarations/src/components/YamlEditor/index.vue.d.ts +7 -1
  5. package/dist/package/declarations/src/locales/generated.d.ts +356 -0
  6. package/dist/package/declarations/src/views/demo/components/DemoDetailDrawer.vue.d.ts +15 -0
  7. package/dist/package/declarations/src/views/demo/components/DemoFormDialog.vue.d.ts +69 -0
  8. package/dist/package/declarations/src/views/demo/demo-data.d.ts +145 -0
  9. package/dist/package/declarations/src/views/demo/table/index.vue.d.ts +3 -0
  10. package/dist/package/declarations/src/views/demo/tree-grid/index.vue.d.ts +3 -0
  11. package/dist/package/declarations/src/views/demo/tree-table/index.vue.d.ts +3 -0
  12. package/dist/package/src/components/CodeBlock/index.vue +156 -0
  13. package/dist/package/src/components/ProForm/components/ProFormItem.vue +5 -1
  14. package/dist/package/src/components/ProForm/interface/index.ts +1 -0
  15. package/dist/package/src/components/YamlEditor/index.vue +103 -7
  16. package/dist/package/src/locales/en-US.json +90 -1
  17. package/dist/package/src/locales/ja-JP.json +90 -1
  18. package/dist/package/src/locales/zh-CN.json +90 -1
  19. package/dist/package/src/locales/zh-TW.json +90 -1
  20. package/dist/package/src/modules/kratosAdmin.ts +11 -1
  21. package/dist/package/src/utils/index.ts +2 -1
  22. package/dist/package/src/utils/request.ts +2 -1
  23. package/dist/package/src/views/demo/components/DemoDetailDrawer.vue +108 -0
  24. package/dist/package/src/views/demo/components/DemoFormDialog.vue +470 -0
  25. package/dist/package/src/views/demo/demo-data.ts +279 -0
  26. package/dist/package/src/views/demo/table/index.vue +391 -0
  27. package/dist/package/src/views/demo/tree-grid/index.vue +272 -0
  28. package/dist/package/src/views/demo/tree-table/index.vue +346 -0
  29. package/dist/package/types/generated/components.d.ts +4 -1
  30. package/package.json +9 -1
  31. package/src/runtime-messages.ts +39 -0
  32. package/types/generated/components.d.ts +4 -1
@@ -93,6 +93,7 @@
93
93
  "core.markdown.action.copy_code": "コードをコピー",
94
94
  "core.markdown.message.copy_success": "コピーしました",
95
95
  "core.markdown.message.copy_failed": "コピーに失敗しました",
96
+ "core.yaml_editor.action.wrap": "自動折り返し",
96
97
  "core.loading.text": "読み込み中",
97
98
  "core.layout.avatar": "ユーザーアバター",
98
99
  "core.layout.logo_alt": "システムロゴ",
@@ -386,5 +387,93 @@
386
387
  "common.field.user_id": "ユーザー ID",
387
388
  "core.home.demo_scope": "機能概要",
388
389
  "core.home.main_title": "管理アプリケーション",
389
- "core.router.pending_view_unregistered": "管理画面の静的ページが登録されていません: {view}"
390
+ "core.router.pending_view_unregistered": "管理画面の静的ページが登録されていません: {view}",
391
+ "core.demo.resource.employee": "従業員",
392
+ "core.demo.resource.project": "プロジェクト",
393
+ "core.demo.resource.doc_catalog": "ドキュメントカタログ",
394
+ "core.demo.tree.title.dept_tree": "部門リスト",
395
+ "core.demo.tree.field.name": "氏名",
396
+ "core.demo.tree.field.email": "メールアドレス",
397
+ "core.demo.tree.field.phone": "電話番号",
398
+ "core.demo.tree.field.salary": "給与",
399
+ "core.demo.tree.field.entry_date": "入社日",
400
+ "core.demo.table.field.name": "プロジェクト名",
401
+ "core.demo.table.field.level": "レベル",
402
+ "core.demo.table.field.owner": "担当者",
403
+ "core.demo.table.field.budget": "予算",
404
+ "core.demo.table.field.task_total": "タスク総数",
405
+ "core.demo.table.field.progress": "進捗率",
406
+ "core.demo.table.field.region": "所在地",
407
+ "core.demo.table.field.tags": "コンテンツタグ",
408
+ "core.demo.table.field.owner_group": "所属チーム",
409
+ "core.demo.table.field.enabled": "有効",
410
+ "core.demo.table.group.task": "タスク状況",
411
+ "core.demo.table.tooltip.progress": "render カスタム描画のデモ:el-progress 進捗バー",
412
+ "core.demo.grid.field.name": "カタログ名",
413
+ "core.demo.grid.field.code": "カタログコード",
414
+ "core.demo.grid.field.doc_count": "ドキュメント数",
415
+ "core.demo.grid.field.path": "階層パス",
416
+ "core.demo.grid.action.create_child": "子カタログ追加",
417
+ "core.demo.grid.action.expand_all": "すべて展開",
418
+ "core.demo.grid.action.collapse_all": "すべて折りたたむ",
419
+ "core.demo.grid.message.has_children": "子カタログが存在します。先に子を削除してください",
420
+ "core.demo.form.title.demo_form": "全コンポーネント フォームデモ",
421
+ "core.demo.form.group.basic": "基本入力",
422
+ "core.demo.form.group.choice": "選択と日付",
423
+ "core.demo.form.group.advanced": "高度なコンポーネント",
424
+ "core.demo.form.field.name": "名称",
425
+ "core.demo.form.field.password": "アクセスシークレット",
426
+ "core.demo.form.field.intro": "プロジェクト概要",
427
+ "core.demo.form.field.count": "タスク数",
428
+ "core.demo.form.field.color": "テーマカラー",
429
+ "core.demo.form.field.enabled": "有効",
430
+ "core.demo.form.field.agreed": "説明に同意しました",
431
+ "core.demo.form.field.invite_code": "招待コード",
432
+ "core.demo.form.field.mode": "表示モード",
433
+ "core.demo.form.mode.card": "カード",
434
+ "core.demo.form.mode.list": "リスト",
435
+ "core.demo.form.mode.table": "テーブル",
436
+ "core.demo.form.field.level": "レベル",
437
+ "core.demo.form.field.gender": "性別",
438
+ "core.demo.form.field.visibility": "公開範囲",
439
+ "core.demo.form.visibility.public": "公開",
440
+ "core.demo.form.visibility.private": "非公開",
441
+ "core.demo.form.field.hobbies": "協業設定",
442
+ "core.demo.form.hobby.review": "コードレビュー",
443
+ "core.demo.form.hobby.deploy": "継続的デプロイ",
444
+ "core.demo.form.hobby.metric": "メトリクス",
445
+ "core.demo.form.field.birthday": "設立日",
446
+ "core.demo.form.field.range": "期間",
447
+ "core.demo.form.field.cron": "スケジュール式",
448
+ "core.demo.form.placeholder.cron": "例:0 0 2 * * ?",
449
+ "core.demo.form.field.members": "協力メンバー",
450
+ "core.demo.form.transfer.candidates": "候補メンバー",
451
+ "core.demo.form.transfer.selected": "選択済みメンバー",
452
+ "core.demo.form.field.avatar": "カバー画像",
453
+ "core.demo.form.field.gallery": "ギャラリー",
454
+ "core.demo.form.field.attachment": "添付ファイル",
455
+ "core.demo.form.field.attachments": "添付ファイル群",
456
+ "core.demo.form.field.content": "詳細内容",
457
+ "core.demo.form.field.config": "デプロイ設定",
458
+ "core.demo.form.field.aliases": "別名リスト",
459
+ "core.demo.form.field.properties": "環境変数",
460
+ "core.demo.form.action.random_code": "ランダム",
461
+ "core.demo.form.action.add_property": "変数を追加",
462
+ "core.demo.form.tooltip.count": "5ずつ増減、範囲 0-999",
463
+ "core.demo.form.message.submit_success": "フォーム検証に合格しました(モック送信)",
464
+ "core.demo.detail.tab.basic": "基本情報",
465
+ "core.demo.detail.tab.progress": "進捗",
466
+ "core.demo.detail.tab.timeline": "操作履歴",
467
+ "core.demo.detail.tab.raw": "生データ",
468
+ "core.demo.detail.raw.title": "生 JSON データ",
469
+ "core.demo.detail.section.basic": "基本情報",
470
+ "core.demo.detail.section.work": "勤務情報",
471
+ "core.demo.detail.step.create": "作成",
472
+ "core.demo.detail.step.review": "審査通過",
473
+ "core.demo.detail.step.publish": "公開",
474
+ "core.demo.detail.step.done": "アーカイブ",
475
+ "core.demo.detail.timeline.created": "記録を作成しました",
476
+ "core.demo.detail.timeline.updated": "基本情報を更新しました",
477
+ "core.demo.detail.timeline.enabled": "記録を有効化しました",
478
+ "core.demo.detail.timeline.disabled": "記録を無効化しました"
390
479
  }
@@ -93,6 +93,7 @@
93
93
  "core.markdown.action.copy_code": "复制代码",
94
94
  "core.markdown.message.copy_success": "复制成功!",
95
95
  "core.markdown.message.copy_failed": "复制失败!",
96
+ "core.yaml_editor.action.wrap": "自动换行",
96
97
  "core.loading.text": "加载中",
97
98
  "core.layout.avatar": "用户头像",
98
99
  "core.layout.logo_alt": "系统标志",
@@ -386,5 +387,93 @@
386
387
  "common.field.user_id": "用户 ID",
387
388
  "core.home.demo_scope": "功能概览",
388
389
  "core.home.main_title": "管理应用",
389
- "core.router.pending_view_unregistered": "未注册管理端静态页面:{view}"
390
+ "core.router.pending_view_unregistered": "未注册管理端静态页面:{view}",
391
+ "core.demo.resource.employee": "员工",
392
+ "core.demo.resource.project": "项目",
393
+ "core.demo.resource.doc_catalog": "文档目录",
394
+ "core.demo.tree.title.dept_tree": "部门列表",
395
+ "core.demo.tree.field.name": "姓名",
396
+ "core.demo.tree.field.email": "邮箱",
397
+ "core.demo.tree.field.phone": "手机号",
398
+ "core.demo.tree.field.salary": "薪资",
399
+ "core.demo.tree.field.entry_date": "入职日期",
400
+ "core.demo.table.field.name": "项目名称",
401
+ "core.demo.table.field.level": "等级",
402
+ "core.demo.table.field.owner": "负责人",
403
+ "core.demo.table.field.budget": "预算",
404
+ "core.demo.table.field.task_total": "任务总数",
405
+ "core.demo.table.field.progress": "完成进度",
406
+ "core.demo.table.field.region": "所在城市",
407
+ "core.demo.table.field.tags": "内容标签",
408
+ "core.demo.table.field.owner_group": "所属团队",
409
+ "core.demo.table.field.enabled": "是否启用",
410
+ "core.demo.table.group.task": "任务情况",
411
+ "core.demo.table.tooltip.progress": "render 自定义渲染演示:el-progress 进度条",
412
+ "core.demo.grid.field.name": "目录名称",
413
+ "core.demo.grid.field.code": "目录编码",
414
+ "core.demo.grid.field.doc_count": "文档数量",
415
+ "core.demo.grid.field.path": "层级路径",
416
+ "core.demo.grid.action.create_child": "新增子级",
417
+ "core.demo.grid.action.expand_all": "全部展开",
418
+ "core.demo.grid.action.collapse_all": "全部折叠",
419
+ "core.demo.grid.message.has_children": "存在子级目录,请先删除子级",
420
+ "core.demo.form.title.demo_form": "全组件演示表单",
421
+ "core.demo.form.group.basic": "基础输入",
422
+ "core.demo.form.group.choice": "选择与日期",
423
+ "core.demo.form.group.advanced": "高级组件",
424
+ "core.demo.form.field.name": "名称",
425
+ "core.demo.form.field.password": "访问口令",
426
+ "core.demo.form.field.intro": "项目简介",
427
+ "core.demo.form.field.count": "任务数量",
428
+ "core.demo.form.field.color": "主题色",
429
+ "core.demo.form.field.enabled": "是否启用",
430
+ "core.demo.form.field.agreed": "我已阅读填写说明",
431
+ "core.demo.form.field.invite_code": "邀请码",
432
+ "core.demo.form.field.mode": "展示模式",
433
+ "core.demo.form.mode.card": "卡片",
434
+ "core.demo.form.mode.list": "列表",
435
+ "core.demo.form.mode.table": "表格",
436
+ "core.demo.form.field.level": "项目等级",
437
+ "core.demo.form.field.gender": "性别",
438
+ "core.demo.form.field.visibility": "可见范围",
439
+ "core.demo.form.visibility.public": "公开",
440
+ "core.demo.form.visibility.private": "私有",
441
+ "core.demo.form.field.hobbies": "协作偏好",
442
+ "core.demo.form.hobby.review": "代码评审",
443
+ "core.demo.form.hobby.deploy": "持续部署",
444
+ "core.demo.form.hobby.metric": "数据度量",
445
+ "core.demo.form.field.birthday": "成立日期",
446
+ "core.demo.form.field.range": "活动区间",
447
+ "core.demo.form.field.cron": "调度表达式",
448
+ "core.demo.form.placeholder.cron": "例如:0 0 2 * * ?",
449
+ "core.demo.form.field.members": "协作成员",
450
+ "core.demo.form.transfer.candidates": "候选成员",
451
+ "core.demo.form.transfer.selected": "已选成员",
452
+ "core.demo.form.field.avatar": "封面图",
453
+ "core.demo.form.field.gallery": "相册",
454
+ "core.demo.form.field.attachment": "附件",
455
+ "core.demo.form.field.attachments": "附件组",
456
+ "core.demo.form.field.content": "详细内容",
457
+ "core.demo.form.field.config": "部署配置",
458
+ "core.demo.form.field.aliases": "别名列表",
459
+ "core.demo.form.field.properties": "环境变量",
460
+ "core.demo.form.action.random_code": "随机",
461
+ "core.demo.form.action.add_property": "新增变量",
462
+ "core.demo.form.tooltip.count": "每次步进 5,范围 0-999",
463
+ "core.demo.form.message.submit_success": "表单校验通过,已模拟提交",
464
+ "core.demo.detail.tab.basic": "基本信息",
465
+ "core.demo.detail.tab.progress": "流程进度",
466
+ "core.demo.detail.tab.timeline": "操作时间线",
467
+ "core.demo.detail.tab.raw": "原始数据",
468
+ "core.demo.detail.raw.title": "原始 JSON 数据",
469
+ "core.demo.detail.section.basic": "基本信息",
470
+ "core.demo.detail.section.work": "任职信息",
471
+ "core.demo.detail.step.create": "创建记录",
472
+ "core.demo.detail.step.review": "审核通过",
473
+ "core.demo.detail.step.publish": "发布上线",
474
+ "core.demo.detail.step.done": "归档完成",
475
+ "core.demo.detail.timeline.created": "创建了记录",
476
+ "core.demo.detail.timeline.updated": "更新了基础信息",
477
+ "core.demo.detail.timeline.enabled": "启用了记录",
478
+ "core.demo.detail.timeline.disabled": "停用了记录"
390
479
  }
@@ -93,6 +93,7 @@
93
93
  "core.markdown.action.copy_code": "複製程式碼",
94
94
  "core.markdown.message.copy_success": "已複製!",
95
95
  "core.markdown.message.copy_failed": "複製失敗!",
96
+ "core.yaml_editor.action.wrap": "自動換行",
96
97
  "core.loading.text": "載入中",
97
98
  "core.layout.avatar": "使用者頭像",
98
99
  "core.layout.logo_alt": "系統標誌",
@@ -386,5 +387,93 @@
386
387
  "common.field.user_id": "使用者 ID",
387
388
  "core.home.demo_scope": "功能概覽",
388
389
  "core.home.main_title": "管理應用程式",
389
- "core.router.pending_view_unregistered": "未註冊管理端靜態頁面:{view}"
390
+ "core.router.pending_view_unregistered": "未註冊管理端靜態頁面:{view}",
391
+ "core.demo.resource.employee": "員工",
392
+ "core.demo.resource.project": "專案",
393
+ "core.demo.resource.doc_catalog": "文檔目錄",
394
+ "core.demo.tree.title.dept_tree": "部門列表",
395
+ "core.demo.tree.field.name": "姓名",
396
+ "core.demo.tree.field.email": "郵箱",
397
+ "core.demo.tree.field.phone": "手機號",
398
+ "core.demo.tree.field.salary": "薪資",
399
+ "core.demo.tree.field.entry_date": "入職日期",
400
+ "core.demo.table.field.name": "專案名稱",
401
+ "core.demo.table.field.level": "等級",
402
+ "core.demo.table.field.owner": "負責人",
403
+ "core.demo.table.field.budget": "預算",
404
+ "core.demo.table.field.task_total": "任務總數",
405
+ "core.demo.table.field.progress": "完成進度",
406
+ "core.demo.table.field.region": "所在城市",
407
+ "core.demo.table.field.tags": "內容標籤",
408
+ "core.demo.table.field.owner_group": "所屬團隊",
409
+ "core.demo.table.field.enabled": "是否啟用",
410
+ "core.demo.table.group.task": "任務情況",
411
+ "core.demo.table.tooltip.progress": "render 自訂渲染示範:el-progress 進度條",
412
+ "core.demo.grid.field.name": "目錄名稱",
413
+ "core.demo.grid.field.code": "目錄編碼",
414
+ "core.demo.grid.field.doc_count": "文檔數量",
415
+ "core.demo.grid.field.path": "層級路徑",
416
+ "core.demo.grid.action.create_child": "新增子級",
417
+ "core.demo.grid.action.expand_all": "全部展開",
418
+ "core.demo.grid.action.collapse_all": "全部摺疊",
419
+ "core.demo.grid.message.has_children": "存在子級目錄,請先刪除子級",
420
+ "core.demo.form.title.demo_form": "全元件演示表單",
421
+ "core.demo.form.group.basic": "基礎輸入",
422
+ "core.demo.form.group.choice": "選擇與日期",
423
+ "core.demo.form.group.advanced": "進階元件",
424
+ "core.demo.form.field.name": "名稱",
425
+ "core.demo.form.field.password": "存取口令",
426
+ "core.demo.form.field.intro": "專案簡介",
427
+ "core.demo.form.field.count": "任務數量",
428
+ "core.demo.form.field.color": "主題色",
429
+ "core.demo.form.field.enabled": "是否啟用",
430
+ "core.demo.form.field.agreed": "我已閱讀填寫說明",
431
+ "core.demo.form.field.invite_code": "邀請碼",
432
+ "core.demo.form.field.mode": "展示模式",
433
+ "core.demo.form.mode.card": "卡片",
434
+ "core.demo.form.mode.list": "列表",
435
+ "core.demo.form.mode.table": "表格",
436
+ "core.demo.form.field.level": "專案等級",
437
+ "core.demo.form.field.gender": "性別",
438
+ "core.demo.form.field.visibility": "可見範圍",
439
+ "core.demo.form.visibility.public": "公開",
440
+ "core.demo.form.visibility.private": "私有",
441
+ "core.demo.form.field.hobbies": "協作偏好",
442
+ "core.demo.form.hobby.review": "代碼評審",
443
+ "core.demo.form.hobby.deploy": "持續部署",
444
+ "core.demo.form.hobby.metric": "數據度量",
445
+ "core.demo.form.field.birthday": "成立日期",
446
+ "core.demo.form.field.range": "活動區間",
447
+ "core.demo.form.field.cron": "調度表達式",
448
+ "core.demo.form.placeholder.cron": "例如:0 0 2 * * ?",
449
+ "core.demo.form.field.members": "協作成員",
450
+ "core.demo.form.transfer.candidates": "候選成員",
451
+ "core.demo.form.transfer.selected": "已選成員",
452
+ "core.demo.form.field.avatar": "封面圖",
453
+ "core.demo.form.field.gallery": "相冊",
454
+ "core.demo.form.field.attachment": "附件",
455
+ "core.demo.form.field.attachments": "附件組",
456
+ "core.demo.form.field.content": "詳細內容",
457
+ "core.demo.form.field.config": "部署配置",
458
+ "core.demo.form.field.aliases": "別名列表",
459
+ "core.demo.form.field.properties": "環境變數",
460
+ "core.demo.form.action.random_code": "隨機",
461
+ "core.demo.form.action.add_property": "新增變數",
462
+ "core.demo.form.tooltip.count": "每次步進 5,範圍 0-999",
463
+ "core.demo.form.message.submit_success": "表單校驗通過,已模擬提交",
464
+ "core.demo.detail.tab.basic": "基本資訊",
465
+ "core.demo.detail.tab.progress": "流程進度",
466
+ "core.demo.detail.tab.timeline": "操作時間線",
467
+ "core.demo.detail.tab.raw": "原始數據",
468
+ "core.demo.detail.raw.title": "原始 JSON 數據",
469
+ "core.demo.detail.section.basic": "基本資訊",
470
+ "core.demo.detail.section.work": "任職資訊",
471
+ "core.demo.detail.step.create": "創建記錄",
472
+ "core.demo.detail.step.review": "審核通過",
473
+ "core.demo.detail.step.publish": "發布上線",
474
+ "core.demo.detail.step.done": "歸檔完成",
475
+ "core.demo.detail.timeline.created": "創建了記錄",
476
+ "core.demo.detail.timeline.updated": "更新了基礎資訊",
477
+ "core.demo.detail.timeline.enabled": "啟用了記錄",
478
+ "core.demo.detail.timeline.disabled": "停用了記錄"
390
479
  }
@@ -1,4 +1,4 @@
1
- import { ADMIN_STATIC_VIEWS, defineAdminModule, type AdminStaticViewModules } from "./index";
1
+ import { ADMIN_STATIC_VIEWS, defineAdminModule, type AdminStaticViewModules, type AdminViewModules } from "./index";
2
2
 
3
3
  // 语言包由同步脚本生成并注册,供管理端公共组件、登录页和错误处理使用。
4
4
  import { LOCALE_MESSAGES } from "../locales/generated";
@@ -11,11 +11,21 @@ const staticViewModules: AdminStaticViewModules = {
11
11
  [ADMIN_STATIC_VIEWS.PENDING]: () => import("../views/error/pending.vue")
12
12
  };
13
13
 
14
+ // Demo 演示页面:集中展示 core 的 ProTable / ProForm / TreeFilter 等组件能力。
15
+ // 路由完全由后端菜单控制,菜单 component 前缀为 "kratos-admin/demo";
16
+ // 页面数量固定,显式注册代替 glob,避免依赖 vite 的 glob 解析行为。
17
+ const demoViewModules: AdminViewModules = {
18
+ "demo/tree-table/index": () => import("../views/demo/tree-table/index.vue"),
19
+ "demo/table/index": () => import("../views/demo/table/index.vue"),
20
+ "demo/tree-grid/index": () => import("../views/demo/tree-grid/index.vue")
21
+ };
22
+
14
23
  /**
15
24
  * kratos-admin 内置基础模块。
16
25
  */
17
26
  export const kratosAdminModule = defineAdminModule({
18
27
  name: "kratos-admin",
28
+ views: demoViewModules,
19
29
  staticViews: staticViewModules,
20
30
  messages: LOCALE_MESSAGES
21
31
  });
@@ -256,7 +256,8 @@ export const getAllBreadcrumbList = (
256
256
  ) => {
257
257
  for (const item of menuList) {
258
258
  const routePath = item.path ?? "";
259
- const breadcrumb = [...parent, item];
259
+ // 目录型菜单(path 为空的 Layout 容器)不进入面包屑,避免与重定向后的子页面同名重复。
260
+ const breadcrumb = routePath ? [...parent, item] : parent;
260
261
  if (routePath) result[routePath] = breadcrumb;
261
262
  if (item.children) getAllBreadcrumbList(item.children, breadcrumb, result);
262
263
  }
@@ -369,7 +369,8 @@ service.interceptors.response.use(
369
369
  const requestConfig = error.config as RetryableRequestConfig | undefined;
370
370
 
371
371
  // 退出或认证失效后,页面中的在途请求返回 401 属于预期结果,不再重复刷新令牌、弹窗或提示错误。
372
- if (isAuthTransitioning()) {
372
+ // 登录等公共认证接口不受此限制:用户在登录页主动提交失败时必须给出错误反馈(如用户名或密码错误)。
373
+ if (isAuthTransitioning() && !shouldSkipAuthExpiredPrompt(requestConfig)) {
373
374
  return Promise.reject(error);
374
375
  }
375
376
 
@@ -0,0 +1,108 @@
1
+ <!--
2
+ Demo 共享详情抽屉:演示管理端标准的“详情展示”形态。
3
+
4
+ 组成结构(均为 Element Plus 原生组件,core 未封装 ProDescriptions):
5
+ - el-drawer(size 62%)承载数据,关闭时通过 update:modelValue 同步父组件;
6
+ - el-tabs 分页签:基本信息 / 流程进度 / 操作时间线 / 原始数据;
7
+ - el-descriptions 描述列表(参照 system/base/api/index.vue 的详情抽屉写法);
8
+ - el-steps / el-timeline / el-collapse 展示流程、时间线与 JSON 原文。
9
+
10
+ 各表格页把行数据组装成 DemoDetailModel 后传给本组件即可复用。
11
+ -->
12
+ <template>
13
+ <el-drawer
14
+ :model-value="modelValue"
15
+ :title="detail?.title ?? t('common.action.detail')"
16
+ size="62%"
17
+ @update:model-value="value => emit('update:modelValue', value)"
18
+ >
19
+ <el-tabs v-if="detail">
20
+ <!-- 页签一:基本信息,多组 el-descriptions 描述列表 -->
21
+ <el-tab-pane :label="t('core.demo.detail.tab.basic')">
22
+ <div v-for="section in detail.sections" :key="section.title" class="detail-section">
23
+ <el-divider content-position="left">{{ section.title }}</el-divider>
24
+ <el-descriptions :column="2" border>
25
+ <el-descriptions-item v-for="field in section.fields" :key="field.label" :label="field.label">
26
+ <el-tag v-if="field.tag" :type="field.tagType ?? 'info'" effect="plain">{{ field.value }}</el-tag>
27
+ <template v-else>{{ field.value }}</template>
28
+ </el-descriptions-item>
29
+ </el-descriptions>
30
+ </div>
31
+ </el-tab-pane>
32
+
33
+ <!-- 页签二:流程进度,el-steps 展示节点流转 -->
34
+ <el-tab-pane :label="t('core.demo.detail.tab.progress')">
35
+ <el-steps :active="detail.steps.length - 1" align-center finish-status="success">
36
+ <el-step v-for="(step, index) in detail.steps" :key="step.title" :title="step.title" :description="`T+${index}`" />
37
+ </el-steps>
38
+ </el-tab-pane>
39
+
40
+ <!-- 页签三:操作时间线,el-timeline 按时间倒序展示 -->
41
+ <el-tab-pane :label="t('core.demo.detail.tab.timeline')">
42
+ <el-timeline>
43
+ <el-timeline-item
44
+ v-for="item in detail.timeline"
45
+ :key="item.timestamp"
46
+ :timestamp="item.timestamp"
47
+ :type="item.type"
48
+ >
49
+ {{ item.title }}
50
+ </el-timeline-item>
51
+ </el-timeline>
52
+ </el-tab-pane>
53
+
54
+ <!-- 页签四:原始数据,el-collapse 折叠面板内展示格式化 JSON -->
55
+ <el-tab-pane :label="t('core.demo.detail.tab.raw')">
56
+ <el-collapse :model-value="rawPanelName">
57
+ <el-collapse-item :title="t('core.demo.detail.raw.title')" :name="rawPanelName">
58
+ <pre class="detail-raw">{{ JSON.stringify(detail.raw, null, 2) }}</pre>
59
+ </el-collapse-item>
60
+ </el-collapse>
61
+ </el-tab-pane>
62
+ </el-tabs>
63
+ </el-drawer>
64
+ </template>
65
+
66
+ <script setup lang="ts">
67
+ import { t } from "../../../locales";
68
+ import type { DemoDetailModel } from "../demo-data";
69
+
70
+ defineOptions({
71
+ name: "DemoDetailDrawer"
72
+ });
73
+
74
+ /** 组件入参:modelValue 控制显隐,detail 为页面组装好的详情模型。 */
75
+ defineProps<{
76
+ /** 抽屉显隐,v-model 双向绑定。 */
77
+ modelValue: boolean;
78
+ /** 详情模型,为空时抽屉仅显示标题占位。 */
79
+ detail: DemoDetailModel | null;
80
+ }>();
81
+
82
+ const emit = defineEmits<{
83
+ "update:modelValue": [value: boolean];
84
+ }>();
85
+
86
+ /** 原始数据折叠面板默认展开的名称。 */
87
+ const rawPanelName = "raw";
88
+ </script>
89
+
90
+ <style scoped>
91
+ /* 分组之间留出间距,描述列表与分组标题紧凑排列 */
92
+ .detail-section + .detail-section {
93
+ margin-top: 16px;
94
+ }
95
+
96
+ /* JSON 原文使用等宽字体并限制纵向滚动,适配暗色主题文字变量 */
97
+ .detail-raw {
98
+ max-height: 420px;
99
+ margin: 0;
100
+ overflow: auto;
101
+ font-family: var(--el-font-family-monospace, monospace);
102
+ font-size: 12px;
103
+ line-height: 1.6;
104
+ color: var(--el-text-color-regular);
105
+ white-space: pre-wrap;
106
+ word-break: break-all;
107
+ }
108
+ </style>