feat: add skill center navigation and travel request detail view
- Refactor audit to skill center for skill management - Add TravelRequestDetailView for requests detail page - Update PersonalWorkbench with enhanced features - Add UI preview screenshots Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
37
src/App.vue
37
src/App.vue
@@ -24,7 +24,8 @@
|
||||
'workbench-main': activeView === 'workbench',
|
||||
'requests-main': activeView === 'requests',
|
||||
'approval-main': activeView === 'approval',
|
||||
'policies-main': activeView === 'policies'
|
||||
'policies-main': activeView === 'policies',
|
||||
'audit-main': activeView === 'audit'
|
||||
}"
|
||||
>
|
||||
<TopBar
|
||||
@@ -43,7 +44,7 @@
|
||||
/>
|
||||
|
||||
<FilterBar
|
||||
v-if="activeView !== 'chat' && activeView !== 'overview' && activeView !== 'workbench' && activeView !== 'requests' && activeView !== 'approval' && activeView !== 'policies'"
|
||||
v-if="activeView !== 'chat' && activeView !== 'overview' && activeView !== 'workbench' && activeView !== 'requests' && activeView !== 'approval' && activeView !== 'policies' && activeView !== 'audit'"
|
||||
:compact="activeView === 'overview'"
|
||||
:filters="filters"
|
||||
:ranges="ranges"
|
||||
@@ -57,7 +58,8 @@
|
||||
'chat-workarea': activeView === 'chat',
|
||||
'requests-workarea': activeView === 'requests',
|
||||
'approval-workarea': activeView === 'approval',
|
||||
'policies-workarea': activeView === 'policies'
|
||||
'policies-workarea': activeView === 'policies',
|
||||
'audit-workarea': activeView === 'audit'
|
||||
}"
|
||||
>
|
||||
<OverviewView
|
||||
@@ -96,15 +98,16 @@
|
||||
@reject-case="toast(`${activeCase?.id} 已转人工复核。`)"
|
||||
/>
|
||||
|
||||
<TravelReimbursementCreateView
|
||||
<TravelRequestDetailView
|
||||
v-else-if="activeView === 'requests' && detailMode"
|
||||
@back-to-requests="detailMode = false"
|
||||
:request="selectedTravelRequest"
|
||||
@back-to-requests="closeRequestDetail"
|
||||
/>
|
||||
|
||||
<RequestsView
|
||||
v-else-if="activeView === 'requests'"
|
||||
:filtered-requests="filteredRequests"
|
||||
@ask="detailMode = true"
|
||||
@ask="openRequestDetail"
|
||||
@approve="handleApprove"
|
||||
@reject="handleReject"
|
||||
@create-request="openTravelCreate"
|
||||
@@ -135,6 +138,7 @@ import OverviewView from './views/OverviewView.vue'
|
||||
import PersonalWorkbenchView from './views/PersonalWorkbenchView.vue'
|
||||
import ChatView from './views/ChatView.vue'
|
||||
import TravelReimbursementCreateView from './views/TravelReimbursementCreateView.vue'
|
||||
import TravelRequestDetailView from './views/TravelRequestDetailView.vue'
|
||||
import RequestsView from './views/RequestsView.vue'
|
||||
import ApprovalCenterView from './views/ApprovalCenterView.vue'
|
||||
import PoliciesView from './views/PoliciesView.vue'
|
||||
@@ -150,6 +154,7 @@ import { documents } from './data/requests.js'
|
||||
const loggedIn = ref(false)
|
||||
const travelCreateMode = ref(false)
|
||||
const detailMode = ref(false)
|
||||
const selectedTravelRequest = ref(null)
|
||||
|
||||
function handleLogin(credentials) {
|
||||
if (credentials.username && credentials.password) {
|
||||
@@ -205,6 +210,7 @@ function handleReject(request) {
|
||||
function handleNavigate(view) {
|
||||
travelCreateMode.value = false
|
||||
detailMode.value = false
|
||||
selectedTravelRequest.value = null
|
||||
setView(view)
|
||||
}
|
||||
|
||||
@@ -215,6 +221,8 @@ function handleOpenChat(request) {
|
||||
|
||||
function openTravelCreate() {
|
||||
travelCreateMode.value = true
|
||||
detailMode.value = false
|
||||
selectedTravelRequest.value = null
|
||||
activeView.value = 'chat'
|
||||
}
|
||||
|
||||
@@ -222,6 +230,17 @@ function backToRequests() {
|
||||
travelCreateMode.value = false
|
||||
activeView.value = 'requests'
|
||||
}
|
||||
|
||||
function openRequestDetail(request) {
|
||||
selectedTravelRequest.value = request
|
||||
detailMode.value = true
|
||||
activeView.value = 'requests'
|
||||
}
|
||||
|
||||
function closeRequestDetail() {
|
||||
detailMode.value = false
|
||||
selectedTravelRequest.value = null
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
@@ -245,7 +264,8 @@ function backToRequests() {
|
||||
}
|
||||
.main.requests-main,
|
||||
.main.approval-main,
|
||||
.main.policies-main {
|
||||
.main.policies-main,
|
||||
.main.audit-main {
|
||||
height: 100dvh;
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
overflow: hidden;
|
||||
@@ -257,7 +277,8 @@ function backToRequests() {
|
||||
}
|
||||
.workarea.requests-workarea,
|
||||
.workarea.approval-workarea,
|
||||
.workarea.policies-workarea {
|
||||
.workarea.policies-workarea,
|
||||
.workarea.audit-workarea {
|
||||
min-height: 0;
|
||||
overflow: hidden;
|
||||
padding: 20px 24px;
|
||||
|
||||
Reference in New Issue
Block a user