diff --git a/web/src/components/business/PersonalWorkbench.vue b/web/src/components/business/PersonalWorkbench.vue index 3dc3ecf..73685ec 100644 --- a/web/src/components/business/PersonalWorkbench.vue +++ b/web/src/components/business/PersonalWorkbench.vue @@ -59,7 +59,7 @@ -
+
@@ -113,58 +113,6 @@
- -
-
-
-

应收管理

- {{ receivableAlertCount }} -
- -
- -
-
-
- -
- -
- {{ item.title }} -

{{ item.date }}

-
- - {{ item.amount }} - {{ item.status }} -
-
-
- -
-
-
-

应付管理

- {{ payableAlertCount }} -
- -
- -
-
-
- -
- -
- {{ item.title }} -

{{ item.date }}

-
- - {{ item.amount }} - {{ item.status }} -
-
-
@@ -206,13 +154,6 @@ const props = defineProps({ const emit = defineEmits(['openAssistant']) const { currentUser } = useSystemState() - -// 判断是否为财务人员 -const isFinanceUser = computed(() => { - const user = currentUser.value || {} - const roleCodes = Array.isArray(user.roleCodes) ? user.roleCodes : [] - return roleCodes.includes('finance') || roleCodes.includes('accountant') || user.isAdmin -}) const { toast } = useToast() const assistantDraft = ref('') const fileInputRef = ref(null) @@ -422,76 +363,6 @@ const progressItems = [ const progressAlertCount = progressItems.filter((item) => item.status !== '已到账').length -const receivableItems = [ - { - id: 'receivable-1', - title: '客户服务费收入', - amount: '¥15,800', - date: '2026-05-10', - status: '待收款', - tone: 'info', - icon: 'mdi mdi-account-cash-outline', - color: '#f59e0b' - }, - { - id: 'receivable-2', - title: '项目进度款', - amount: '¥42,600', - date: '2026-05-08', - status: '部分收款', - tone: 'success', - icon: 'mdi mdi-cash-multiple', - color: '#10b981' - }, - { - id: 'receivable-3', - title: '咨询服务费', - amount: '¥8,900', - date: '2026-05-05', - status: '逾期提醒', - tone: 'info', - icon: 'mdi mdi-bell-alert', - color: '#ef4444' - } -] - -const receivableAlertCount = receivableItems.filter((item) => item.status === '逾期提醒' || item.status === '待收款').length - -const payableItems = [ - { - id: 'payable-1', - title: '供应商采购款', - amount: '¥28,500', - date: '2026-05-12', - status: '待付款', - tone: 'info', - icon: 'mdi mdi-truck-outline', - color: '#3b82f6' - }, - { - id: 'payable-2', - title: '房租物业费', - amount: '¥12,800', - date: '2026-05-15', - status: '待审批', - tone: 'success', - icon: 'mdi mdi-office-building', - color: '#6366f1' - }, - { - id: 'payable-3', - title: '软件服务费', - amount: '¥3,600', - date: '2026-05-01', - status: '已付款', - tone: 'mint', - icon: 'mdi mdi-server', - color: '#10b981' - } -] - -const payableAlertCount = payableItems.filter((item) => item.status === '待付款' || item.status === '待审批').length - const policyItems = [ { name: '差旅报销管理办法(2026版)', @@ -856,11 +727,6 @@ watch( gap: 20px; } -.workbench-grid.finance-grid { - grid-template-columns: repeat(4, 1fr); - gap: 16px; -} - .list-panel, .policy-panel { padding: 20px 22px; @@ -1110,11 +976,6 @@ watch( .policy-row { grid-template-columns: 1.8fr 1.8fr 1fr; } - - .workbench-grid.finance-grid { - grid-template-columns: repeat(2, 1fr); - gap: 16px; - } } @media (max-width: 1440px) { @@ -1181,8 +1042,7 @@ watch( width: 176px; } - .workbench-grid, - .workbench-grid.finance-grid { + .workbench-grid { grid-template-columns: 1fr; } } @@ -1249,14 +1109,6 @@ watch( justify-self: start; } - .workbench-grid.finance-grid { - gap: 16px; - } - - .workbench-grid.finance-grid .list-panel { - padding: 16px 18px; - } - .policy-table { border: 0; border-radius: 0; diff --git a/web/src/composables/useAppShell.js b/web/src/composables/useAppShell.js index 20dc79a..a92882c 100644 --- a/web/src/composables/useAppShell.js +++ b/web/src/composables/useAppShell.js @@ -235,7 +235,7 @@ export function useAppShell() { smartEntryOpen.value = false await reloadRequests() if (status === 'submitted') { - toast(`${claimNo || '该'}单据已提交审批${approvalStage ? `,当前节点:${approvalStage}` : ''}。`) + toast(`${claimNo || '该'}单据已完成 AI验审${approvalStage ? `,当前节点:${approvalStage}` : ',并已提交审批'}。`) } else { toast(`${claimNo || '该'}单据已保存到草稿,请到报销页面查看。`) } diff --git a/web/src/composables/useRequests.js b/web/src/composables/useRequests.js index 3333bfd..8940c99 100644 --- a/web/src/composables/useRequests.js +++ b/web/src/composables/useRequests.js @@ -334,7 +334,7 @@ function buildExpenseItems(claim, riskSummary) { }) } -function mapExpenseClaimToRequest(claim) { +export function mapExpenseClaimToRequest(claim) { const typeCode = String(claim?.expense_type || '').trim() || 'other' const typeLabel = resolveTypeLabel(typeCode) const approvalMeta = resolveApprovalMeta(claim?.status) @@ -372,6 +372,8 @@ function mapExpenseClaimToRequest(claim) { submittedAt: applyDateTime || '', createdAt: claim?.created_at || '', amount: parseNumber(claim?.amount), + riskFlags: Array.isArray(claim?.risk_flags_json) ? claim.risk_flags_json : [], + invoiceCount, workflowNode, approvalKey: approvalMeta.key, approvalStatus: approvalMeta.label,