Add professor share & financial reports UI, expense management page
Adds payout configuration fields (percentage/hourly + per-session expense allowance) with a live payout preview to the class form, a new Financial Reports page (per-class and date-range/monthly tabs, per-session drill-down dialog) with reusable stat cards, and an Institutional Expenses management page. Registers routes, sidebar navigation, and permission constants for the new financial_reports and expenses permissions.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
<!-- /src/components/financialReports/FinancialStatCard.vue -->
|
||||
<template>
|
||||
<div class="stat-card surface-card p-4 border-round-xl border-1 border-color shadow-sm flex align-items-center justify-content-between gap-3 h-full">
|
||||
<div class="flex-grow-1">
|
||||
<span class="text-muted text-xs block mb-1">{{ label }}</span>
|
||||
<span class="text-xl font-bold text-color">{{ formattedValue }}</span>
|
||||
</div>
|
||||
<div class="stat-icon w-3rem h-3rem border-round-xl flex align-items-center justify-content-center flex-shrink-0" :class="bgClass">
|
||||
<i :class="[icon, 'text-xl', iconClass]"></i>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed } from 'vue';
|
||||
import { usePersianDate } from '@/composables/usePersianDate';
|
||||
|
||||
const props = defineProps({
|
||||
label: { type: String, required: true },
|
||||
value: { type: Number, default: 0 },
|
||||
icon: { type: String, default: 'pi pi-wallet' },
|
||||
bgClass: { type: String, default: 'bg-blue-100' },
|
||||
iconClass: { type: String, default: 'text-blue-600' }
|
||||
});
|
||||
|
||||
const { toPersianDigits } = usePersianDate();
|
||||
|
||||
const formattedValue = computed(() => `${toPersianDigits(Math.round(props.value || 0).toLocaleString())} تومان`);
|
||||
</script>
|
||||
@@ -60,6 +60,8 @@ const menuGroups = computed(() => {
|
||||
label: 'مالی و ارتباطات',
|
||||
items: [
|
||||
{ label: 'امور مالی و پرداختها', icon: 'pi pi-wallet', to: '/payments' },
|
||||
{ label: 'گزارشهای مالی', icon: 'pi pi-chart-line', to: '/financial-reports', permission: PERMISSIONS.FINANCIAL_REPORTS_READ },
|
||||
{ label: 'هزینههای موسسه', icon: 'pi pi-money-bill', to: '/expenses', permission: PERMISSIONS.EXPENSES_READ },
|
||||
{ label: 'اطلاعیهها', icon: 'pi pi-bell', to: '/notifications' },
|
||||
{ label: 'درخواستهای تماس', icon: 'pi pi-comments', to: '/contact-inquiries' },
|
||||
{ label: 'ثبتنامهای در انتظار', icon: 'pi pi-user-plus', to: '/pending-students', permission: PERMISSIONS.PENDING_STUDENTS_READ }
|
||||
|
||||
Reference in New Issue
Block a user