feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<template>
|
2026-04-29 23:35:56 +08:00
|
|
|
<!-- Login Page -->
|
2026-04-30 17:11:24 +08:00
|
|
|
<LoginView
|
|
|
|
|
v-if="!loggedIn"
|
|
|
|
|
@login="handleLogin"
|
|
|
|
|
@recover-password="handleRecoverPassword"
|
|
|
|
|
@sso-login="handleSsoLogin"
|
|
|
|
|
/>
|
2026-04-29 23:35:56 +08:00
|
|
|
|
|
|
|
|
<!-- Main App -->
|
|
|
|
|
<div v-else class="app">
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<SidebarRail
|
|
|
|
|
:nav-items="navItems"
|
|
|
|
|
:active-view="activeView"
|
2026-04-30 17:11:24 +08:00
|
|
|
@navigate="handleNavigate"
|
|
|
|
|
@open-chat="handleOpenChat"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
/>
|
|
|
|
|
|
2026-04-30 17:11:24 +08:00
|
|
|
<main
|
|
|
|
|
class="main"
|
|
|
|
|
:class="{
|
|
|
|
|
'chat-main': activeView === 'chat',
|
|
|
|
|
'overview-main': activeView === 'overview',
|
2026-05-05 18:22:47 +08:00
|
|
|
'workbench-main': activeView === 'workbench',
|
2026-05-01 00:39:24 +08:00
|
|
|
'requests-main': activeView === 'requests',
|
|
|
|
|
'approval-main': activeView === 'approval',
|
|
|
|
|
'policies-main': activeView === 'policies'
|
2026-04-30 17:11:24 +08:00
|
|
|
}"
|
|
|
|
|
>
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<TopBar
|
2026-04-30 17:11:24 +08:00
|
|
|
:current-view="topBarView"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
:search="search"
|
2026-04-29 23:35:56 +08:00
|
|
|
:active-view="activeView"
|
2026-04-30 17:11:24 +08:00
|
|
|
:ranges="ranges"
|
|
|
|
|
:active-range="activeRange"
|
|
|
|
|
:custom-range="customRange"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
@update:search="search = $event"
|
2026-04-30 17:11:24 +08:00
|
|
|
@update:active-range="activeRange = $event"
|
|
|
|
|
@update:custom-range="customRange = $event"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
@batch-approve="toast('已筛出 23 个低风险单据,可进入批量通过确认。')"
|
2026-04-30 17:11:24 +08:00
|
|
|
@open-chat="handleOpenChat"
|
|
|
|
|
@new-application="openTravelCreate"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
/>
|
|
|
|
|
|
|
|
|
|
<FilterBar
|
2026-05-05 18:22:47 +08:00
|
|
|
v-if="activeView !== 'chat' && activeView !== 'overview' && activeView !== 'workbench' && activeView !== 'requests' && activeView !== 'approval' && activeView !== 'policies'"
|
2026-04-29 23:35:56 +08:00
|
|
|
:compact="activeView === 'overview'"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
:filters="filters"
|
|
|
|
|
:ranges="ranges"
|
|
|
|
|
:active-range="activeRange"
|
|
|
|
|
@update:active-range="activeRange = $event"
|
|
|
|
|
/>
|
|
|
|
|
|
2026-04-30 17:11:24 +08:00
|
|
|
<section
|
|
|
|
|
class="workarea"
|
|
|
|
|
:class="{
|
|
|
|
|
'chat-workarea': activeView === 'chat',
|
2026-05-01 00:39:24 +08:00
|
|
|
'requests-workarea': activeView === 'requests',
|
|
|
|
|
'approval-workarea': activeView === 'approval',
|
|
|
|
|
'policies-workarea': activeView === 'policies'
|
2026-04-30 17:11:24 +08:00
|
|
|
}"
|
|
|
|
|
>
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<OverviewView
|
|
|
|
|
v-if="activeView === 'overview'"
|
|
|
|
|
:filtered-requests="filteredRequests"
|
2026-04-30 17:11:24 +08:00
|
|
|
@ask="handleOpenChat"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
@approve="handleApprove"
|
|
|
|
|
@reject="handleReject"
|
|
|
|
|
/>
|
|
|
|
|
|
2026-05-05 18:22:47 +08:00
|
|
|
<PersonalWorkbenchView
|
|
|
|
|
v-else-if="activeView === 'workbench'"
|
|
|
|
|
@open-assistant="handleOpenChat"
|
|
|
|
|
/>
|
|
|
|
|
|
2026-04-30 17:11:24 +08:00
|
|
|
<TravelReimbursementCreateView
|
|
|
|
|
v-else-if="activeView === 'chat' && travelCreateMode"
|
|
|
|
|
@back-to-requests="backToRequests"
|
|
|
|
|
/>
|
|
|
|
|
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<ChatView
|
|
|
|
|
v-else-if="activeView === 'chat'"
|
2026-04-29 23:35:56 +08:00
|
|
|
:documents="filteredDocuments"
|
|
|
|
|
:doc-search="docSearch"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
:messages="messages"
|
|
|
|
|
:uploaded-files="uploadedFiles"
|
|
|
|
|
:active-case="activeCase"
|
2026-04-29 23:35:56 +08:00
|
|
|
:quick-prompts="travelPrompts"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
:draft="draft"
|
|
|
|
|
:message-list="messageList"
|
|
|
|
|
@send="sendMessage"
|
|
|
|
|
@upload="handleUpload"
|
|
|
|
|
@draft="draft = $event"
|
2026-04-30 17:11:24 +08:00
|
|
|
@select-case="handleOpenChat"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
@approve-case="toast(`${activeCase?.id} 已生成通过意见。`)"
|
|
|
|
|
@reject-case="toast(`${activeCase?.id} 已转人工复核。`)"
|
|
|
|
|
/>
|
|
|
|
|
|
2026-05-02 11:30:25 +08:00
|
|
|
<TravelReimbursementCreateView
|
|
|
|
|
v-else-if="activeView === 'requests' && detailMode"
|
|
|
|
|
@back-to-requests="detailMode = false"
|
|
|
|
|
/>
|
|
|
|
|
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<RequestsView
|
|
|
|
|
v-else-if="activeView === 'requests'"
|
|
|
|
|
:filtered-requests="filteredRequests"
|
2026-05-02 11:30:25 +08:00
|
|
|
@ask="detailMode = true"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
@approve="handleApprove"
|
|
|
|
|
@reject="handleReject"
|
2026-04-30 17:11:24 +08:00
|
|
|
@create-request="openTravelCreate"
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
/>
|
|
|
|
|
|
2026-05-01 00:39:24 +08:00
|
|
|
<ApprovalCenterView v-else-if="activeView === 'approval'" />
|
|
|
|
|
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
<PoliciesView v-else-if="activeView === 'policies'" />
|
|
|
|
|
|
|
|
|
|
<AuditView v-else />
|
|
|
|
|
</section>
|
|
|
|
|
</main>
|
|
|
|
|
|
|
|
|
|
</div>
|
2026-04-30 17:11:24 +08:00
|
|
|
|
|
|
|
|
<ToastNotification :toast-text="toastText" />
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
import './assets/styles/global.css'
|
|
|
|
|
|
|
|
|
|
import SidebarRail from './components/layout/SidebarRail.vue'
|
|
|
|
|
import TopBar from './components/layout/TopBar.vue'
|
|
|
|
|
import FilterBar from './components/layout/FilterBar.vue'
|
|
|
|
|
import ToastNotification from './components/shared/ToastNotification.vue'
|
2026-04-29 23:35:56 +08:00
|
|
|
import LoginView from './views/LoginView.vue'
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
import OverviewView from './views/OverviewView.vue'
|
2026-05-05 18:22:47 +08:00
|
|
|
import PersonalWorkbenchView from './views/PersonalWorkbenchView.vue'
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
import ChatView from './views/ChatView.vue'
|
2026-04-30 17:11:24 +08:00
|
|
|
import TravelReimbursementCreateView from './views/TravelReimbursementCreateView.vue'
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
import RequestsView from './views/RequestsView.vue'
|
2026-05-01 00:39:24 +08:00
|
|
|
import ApprovalCenterView from './views/ApprovalCenterView.vue'
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
import PoliciesView from './views/PoliciesView.vue'
|
|
|
|
|
import AuditView from './views/AuditView.vue'
|
|
|
|
|
|
2026-04-30 17:11:24 +08:00
|
|
|
import { ref, computed } from 'vue'
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
import { useNavigation, navItems } from './composables/useNavigation.js'
|
|
|
|
|
import { useRequests } from './composables/useRequests.js'
|
|
|
|
|
import { useChat } from './composables/useChat.js'
|
|
|
|
|
import { useToast } from './composables/useToast.js'
|
2026-04-30 17:11:24 +08:00
|
|
|
import { documents } from './data/requests.js'
|
2026-04-29 23:35:56 +08:00
|
|
|
|
|
|
|
|
const loggedIn = ref(false)
|
2026-04-30 17:11:24 +08:00
|
|
|
const travelCreateMode = ref(false)
|
2026-05-02 11:30:25 +08:00
|
|
|
const detailMode = ref(false)
|
2026-04-30 17:11:24 +08:00
|
|
|
|
|
|
|
|
function handleLogin(credentials) {
|
|
|
|
|
if (credentials.username && credentials.password) {
|
|
|
|
|
loggedIn.value = true
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-04-29 23:35:56 +08:00
|
|
|
|
2026-04-30 17:11:24 +08:00
|
|
|
function handleRecoverPassword() {
|
|
|
|
|
toast('请联系系统管理员重置密码。')
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleSsoLogin() {
|
|
|
|
|
toast('SSO 登录通道建设中。')
|
2026-04-29 23:35:56 +08:00
|
|
|
}
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
|
|
|
|
|
const { activeView, currentView, setView } = useNavigation()
|
|
|
|
|
const { requests, search, filters, ranges, activeRange, filteredRequests, approveRequest, rejectRequest } = useRequests()
|
2026-04-29 23:35:56 +08:00
|
|
|
const { messages, draft, uploadedFiles, messageList, activeCase, prompts, sendMessage, handleUpload, openChat, openNewChat } = useChat(activeView)
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
const { toastText, toast } = useToast()
|
|
|
|
|
|
2026-04-29 23:35:56 +08:00
|
|
|
const docSearch = ref('')
|
2026-04-30 17:11:24 +08:00
|
|
|
const customRange = ref({ start: '2024-07-06', end: '2024-07-12' })
|
2026-04-29 23:35:56 +08:00
|
|
|
const travelPrompts = ['帮我提交出差申请', '预订机票', '预订酒店', '预订火车票', '查询差旅政策']
|
|
|
|
|
|
2026-04-30 17:11:24 +08:00
|
|
|
const topBarView = computed(() => {
|
2026-05-02 11:30:25 +08:00
|
|
|
if (travelCreateMode.value || detailMode.value) {
|
2026-04-30 17:11:24 +08:00
|
|
|
return {
|
2026-05-02 11:30:25 +08:00
|
|
|
title: '差旅报销详情',
|
|
|
|
|
desc: '查看报销单据详情、票据识别与审批进度'
|
2026-04-30 17:11:24 +08:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return currentView.value
|
|
|
|
|
})
|
|
|
|
|
|
2026-04-29 23:35:56 +08:00
|
|
|
const filteredDocuments = computed(() => {
|
|
|
|
|
const key = docSearch.value.trim().toLowerCase()
|
|
|
|
|
return documents.filter((doc) => {
|
|
|
|
|
const matchesSearch = !key || `${doc.id}${doc.applicant}${doc.destination}${doc.type}`.toLowerCase().includes(key)
|
2026-04-30 17:11:24 +08:00
|
|
|
return matchesSearch
|
2026-04-29 23:35:56 +08:00
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
function handleApprove(request) {
|
|
|
|
|
const msg = approveRequest(request)
|
|
|
|
|
toast(msg)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleReject(request) {
|
|
|
|
|
const msg = rejectRequest(request)
|
|
|
|
|
toast(msg)
|
|
|
|
|
}
|
2026-04-30 17:11:24 +08:00
|
|
|
|
|
|
|
|
function handleNavigate(view) {
|
|
|
|
|
travelCreateMode.value = false
|
2026-05-02 11:30:25 +08:00
|
|
|
detailMode.value = false
|
2026-04-30 17:11:24 +08:00
|
|
|
setView(view)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function handleOpenChat(request) {
|
|
|
|
|
travelCreateMode.value = false
|
|
|
|
|
openChat(request)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function openTravelCreate() {
|
|
|
|
|
travelCreateMode.value = true
|
|
|
|
|
activeView.value = 'chat'
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function backToRequests() {
|
|
|
|
|
travelCreateMode.value = false
|
|
|
|
|
activeView.value = 'requests'
|
|
|
|
|
}
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
.app {
|
|
|
|
|
min-height: 100dvh;
|
|
|
|
|
display: grid;
|
2026-04-30 17:11:24 +08:00
|
|
|
grid-template-columns: 220px minmax(0, 1fr);
|
2026-04-29 23:35:56 +08:00
|
|
|
background: var(--bg);
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
}
|
|
|
|
|
.main { min-width: 0; display: grid; grid-template-rows: auto auto minmax(0, 1fr); }
|
2026-04-30 17:11:24 +08:00
|
|
|
.main.overview-main {
|
|
|
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
|
|
|
}
|
2026-05-05 18:22:47 +08:00
|
|
|
.main.workbench-main {
|
|
|
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
|
|
|
}
|
2026-04-30 17:11:24 +08:00
|
|
|
.main.chat-main {
|
|
|
|
|
height: 100dvh;
|
|
|
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
2026-05-01 00:39:24 +08:00
|
|
|
.main.requests-main,
|
|
|
|
|
.main.approval-main,
|
|
|
|
|
.main.policies-main {
|
2026-04-30 17:11:24 +08:00
|
|
|
height: 100dvh;
|
|
|
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
2026-04-29 23:35:56 +08:00
|
|
|
.workarea { overflow: auto; padding: 24px; }
|
2026-04-30 17:11:24 +08:00
|
|
|
.workarea.chat-workarea {
|
|
|
|
|
min-height: 0;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
}
|
2026-05-01 00:39:24 +08:00
|
|
|
.workarea.requests-workarea,
|
|
|
|
|
.workarea.approval-workarea,
|
|
|
|
|
.workarea.policies-workarea {
|
2026-04-30 17:11:24 +08:00
|
|
|
min-height: 0;
|
|
|
|
|
overflow: hidden;
|
|
|
|
|
padding: 20px 24px;
|
|
|
|
|
}
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
|
|
|
|
|
@media (max-width: 1180px) {
|
2026-04-30 17:11:24 +08:00
|
|
|
.app { grid-template-columns: 220px minmax(0, 1fr); }
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
}
|
|
|
|
|
@media (max-width: 760px) {
|
|
|
|
|
.app { display: block; }
|
2026-04-29 23:35:56 +08:00
|
|
|
.workarea { padding: 18px 16px 28px; }
|
feat: refactor monolithic App.vue into modular Vue component architecture
- Extract 711-line App.vue into 15+ focused files across 5 directories
- Add data layer (icons, metrics, policies, auditTrail, requests)
- Add composables (useNavigation, useRequests, useChat, useToast)
- Add layout components (SidebarRail, TopBar, FilterBar)
- Add shared components (PanelHead, InfoRow, ToastNotification)
- Add business component (RequestTable) and 5 view components
- Extract global CSS to assets/styles/global.css
- Add start.sh with WSL/Windows cross-platform support
- Add .gitignore for node_modules, dist, and IDE dirs
2026-04-28 17:20:52 +08:00
|
|
|
}
|
|
|
|
|
</style>
|