feat(web): 统一平台管理员判定与 AI 工作台申请预览动作接入

- authUser 抽出 resolveAuthUserAdminFlag,统一 isAdmin 解析(含 superadmin、role_codes、中英文角色名),accessControl 复用同一逻辑
- 登录态、应用外壳路由、系统状态接入统一管理员判定,LoginView 与相关 composable 配套调整
- AI 工作台申请提交改为调用新的 /application-preview-action 接口,草稿保存仍走 orchestrator;预审模型补充重叠冲突提示与阻断判断
- 同步更新 accessControl/api-request/ai 预览动作等前端测试
This commit is contained in:
caoxiaozhu
2026-06-20 14:42:04 +08:00
parent 729d833edb
commit 96c2e1099a
21 changed files with 1364 additions and 331 deletions

View File

@@ -158,6 +158,10 @@ export function useAppShell() {
].some((value) => String(value || '').trim() === normalizedId)
}
function isDetailLookupOnlyPayload(payload = {}) {
return Boolean(payload?.detailLookupOnly || payload?.detail_lookup_only)
}
function resolveRequestDetailLookupId(requestOrId = selectedRequestSnapshot.value) {
if (typeof requestOrId === 'string') {
return requestOrId.trim()
@@ -168,6 +172,8 @@ export function useAppShell() {
|| requestOrId?.id
|| requestOrId?.claimNo
|| requestOrId?.claim_no
|| requestOrId?.documentNo
|| requestOrId?.document_no
|| ''
).trim()
}
@@ -564,13 +570,18 @@ export function useAppShell() {
}
function openRequestDetail(request, options = {}) {
selectedRequestSnapshot.value = request || null
const requestId = resolveRequestDetailLookupId(request)
if (!requestId) {
return
}
const isDetailLookupOnlyRequest = isDetailLookupOnlyPayload(request)
selectedRequestSnapshot.value = isDetailLookupOnlyRequest ? null : request || null
router.push({
name: 'app-document-detail',
params: { requestId: request.claimId || request.id },
params: { requestId },
query: buildDocumentDetailQuery(options)
})
void refreshSelectedRequestDetail(request)
void refreshSelectedRequestDetail(isDetailLookupOnlyRequest ? requestId : request)
}
function closeRequestDetail() {