refactor(web): update view scripts

- AuditView.js: update audit view logic
- EmployeeManagementView.js: update employee management logic
- PoliciesView.js: update policies view logic
- RequestsView.js: update requests view logic
- TravelReimbursementCreateView.js: update travel form logic
- TravelRequestDetailView.js: update travel detail view logic
This commit is contained in:
caoxiaozhu
2026-05-13 03:35:44 +00:00
parent 8b72f4e962
commit 46644d429f
6 changed files with 1129 additions and 516 deletions

View File

@@ -1,7 +1,8 @@
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import { useSystemState } from '../../composables/useSystemState.js'
import { useToast } from '../../composables/useToast.js'
import { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'
import ConfirmDialog from '../../components/shared/ConfirmDialog.vue'
import { useSystemState } from '../../composables/useSystemState.js'
import { useToast } from '../../composables/useToast.js'
import {
deleteKnowledgeDocument,
fetchKnowledgeDocument,
@@ -73,10 +74,13 @@ function setBodyScrollLocked(isLocked) {
bodyOverscrollBehaviorSnapshot = ''
}
export default {
name: 'PoliciesView',
emits: ['summary-change'],
setup(_, { emit }) {
export default {
name: 'PoliciesView',
components: {
ConfirmDialog
},
emits: ['summary-change'],
setup(_, { emit }) {
const { currentUser } = useSystemState()
const { toast } = useToast()
@@ -91,9 +95,11 @@ export default {
const pageSizes = [10, 20, 50]
const loading = ref(false)
const uploadInput = ref(null)
const uploading = ref(false)
const deletingId = ref('')
const previewLoading = ref(false)
const uploading = ref(false)
const deletingId = ref('')
const deleteDialogOpen = ref(false)
const deleteTargetDocument = ref(null)
const previewLoading = ref(false)
const previewBlobUrl = ref('')
const previewError = ref('')
const onlyOfficeLoading = ref(false)
@@ -365,19 +371,35 @@ export default {
await uploadFiles(event.dataTransfer?.files)
}
async function handleDelete(document) {
if (!isAdmin.value || deletingId.value) {
return
}
const confirmed = window.confirm(`确认删除文件“${document.name}”吗?`)
if (!confirmed) {
return
}
deletingId.value = document.id
try {
async function handleDelete(document) {
if (!isAdmin.value || deletingId.value) {
return
}
deleteTargetDocument.value = document
deleteDialogOpen.value = true
}
function closeDeleteDialog() {
if (deletingId.value) {
return
}
deleteDialogOpen.value = false
deleteTargetDocument.value = null
}
async function confirmDeleteDocument() {
const document = deleteTargetDocument.value
if (!document || !isAdmin.value || deletingId.value) {
return
}
deletingId.value = document.id
try {
await deleteKnowledgeDocument(document.id)
deleteDialogOpen.value = false
deleteTargetDocument.value = null
if (selectedDocument.value?.id === document.id) {
closePreview()
}
@@ -459,11 +481,15 @@ export default {
activeFolder,
activePreviewPage,
changePageSize,
closePreview,
excelPreviewTable,
currentPage,
currentPreviewPageIndex,
deletingId,
closePreview,
closeDeleteDialog,
confirmDeleteDocument,
excelPreviewTable,
currentPage,
currentPreviewPageIndex,
deleteDialogOpen,
deleteTargetDocument,
deletingId,
documentSearch,
filteredFolders,
handleDelete,