refactor(web): update view scripts
- AuditView.js: update audit view logic - EmployeeManagementView.js: update employee management logic - RequestsView.js: update requests view logic - TravelRequestDetailView.js: update travel detail view logic
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { computed, onBeforeUnmount, onMounted, ref, watch } from 'vue'
|
||||
|
||||
import ConfirmDialog from '../../components/shared/ConfirmDialog.vue'
|
||||
import TableEmptyState from '../../components/shared/TableEmptyState.vue'
|
||||
import { useSystemState } from '../../composables/useSystemState.js'
|
||||
import { useToast } from '../../composables/useToast.js'
|
||||
import {
|
||||
@@ -849,7 +850,8 @@ function buildReviewNote(status) {
|
||||
export default {
|
||||
name: 'AuditView',
|
||||
components: {
|
||||
ConfirmDialog
|
||||
ConfirmDialog,
|
||||
TableEmptyState
|
||||
},
|
||||
emits: ['detail-open-change'],
|
||||
setup(_, { emit }) {
|
||||
@@ -946,6 +948,39 @@ export default {
|
||||
|
||||
return tokens
|
||||
})
|
||||
const auditEmptyState = computed(() => {
|
||||
const hasFilters = activeFilterTokens.value.length > 0
|
||||
|
||||
if (!currentAssets.value.length) {
|
||||
return {
|
||||
eyebrow: `${activeTabLabel.value}资产`,
|
||||
title: `${activeTabLabel.value}列表暂时还是空的`,
|
||||
desc: `当前环境里还没有可展示的${activeTabLabel.value}资产。完成接入或同步后,会统一展示在这里。`,
|
||||
icon: 'mdi mdi-database-search-outline',
|
||||
actionLabel: '重新加载',
|
||||
actionIcon: 'mdi mdi-refresh',
|
||||
tone: 'amber',
|
||||
artLabel: 'ASSET',
|
||||
tips: ['切换页签可查看其他资产类型', '支持按业务域、负责人和状态做过滤']
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
eyebrow: '筛选结果为空',
|
||||
title: `没有找到匹配的${activeTabLabel.value}`,
|
||||
desc: hasFilters
|
||||
? '试试清空业务域、负责人、状态或关键词筛选,再重新查看。'
|
||||
: `当前列表中还没有满足展示条件的${activeTabLabel.value}资产。`,
|
||||
icon: hasFilters ? 'mdi mdi-tune-variant' : 'mdi mdi-view-grid-outline',
|
||||
actionLabel: hasFilters ? '清空筛选' : '重新加载',
|
||||
actionIcon: hasFilters ? 'mdi mdi-filter-remove-outline' : 'mdi mdi-refresh',
|
||||
tone: hasFilters ? 'emerald' : 'slate',
|
||||
artLabel: hasFilters ? 'FILTER' : 'QUEUE',
|
||||
tips: hasFilters
|
||||
? ['业务域、负责人、状态与关键词会叠加过滤', '可以换个编码、名称或负责人关键词继续搜索']
|
||||
: ['列表展示来自真实资产 API', '切换资产类型后会自动重新拉取数据']
|
||||
}
|
||||
})
|
||||
const canActivateSelected = computed(() => {
|
||||
if (!selectedSkillIsRule.value || !canManageSelected.value || detailBusy.value) {
|
||||
return false
|
||||
@@ -1010,6 +1045,15 @@ export default {
|
||||
activeFilterPopover.value = ''
|
||||
}
|
||||
|
||||
function handleAuditEmptyAction() {
|
||||
if (!currentAssets.value.length || !activeFilterTokens.value.length) {
|
||||
loadAssets({ force: true }).catch(() => {})
|
||||
return
|
||||
}
|
||||
|
||||
resetFilters()
|
||||
}
|
||||
|
||||
function toggleFilterPopover(name) {
|
||||
activeFilterPopover.value = activeFilterPopover.value === name ? '' : name
|
||||
}
|
||||
@@ -1261,6 +1305,7 @@ export default {
|
||||
tableColumns,
|
||||
showMetricColumn,
|
||||
visibleSkills,
|
||||
auditEmptyState,
|
||||
loading,
|
||||
errorMessage,
|
||||
detailLoading,
|
||||
@@ -1287,6 +1332,7 @@ export default {
|
||||
openAssetDetail,
|
||||
closeDetail,
|
||||
resetFilters,
|
||||
handleAuditEmptyAction,
|
||||
toggleFilterPopover,
|
||||
selectFilter,
|
||||
closeFilterPopover,
|
||||
|
||||
Reference in New Issue
Block a user