complete Complete User Request Submission section RAD-1

This commit is contained in:
2026-01-03 19:14:30 +03:30
commit 7137ec5792
393 changed files with 152602 additions and 0 deletions
@@ -0,0 +1,78 @@
<script setup>
import { ref } from 'vue';
import Chart from 'primevue/chart';
import { convertEnglishToPersian } from '../../utils/numberUtils';
const chartData = ref({
labels: ['۱۴۰۴/۰۱/۰۱', '۱۴۰۴/۰۱/۰۲', '۱۴۰۴/۰۱/۰۳', '۱۴۰۴/۰۱/۰۴', '۱۴۰۴/۰۱/۰۵', '۱۴۰۴/۰۱/۰۶', '۱۴۰۴/۰۱/۰۷'],
datasets: [
{
label: 'فعالیت‌های روزانه',
backgroundColor: 'rgba(87, 105, 137, 0.2)',
borderColor: '#576989',
borderWidth: 2,
fill: true,
tension: 0,
data: [65, 59, 80, 81, 56, 55, 40]
}
]
});
const chartOptions = ref({
responsive: true,
maintainAspectRatio: false,
plugins: {
legend: {
labels: {
font: {
family: 'yekanBakh, sans-serif',
size: 12
}
}
},
tooltip: {
titleFont: {
family: 'yekanBakh, sans-serif'
},
bodyFont: {
family: 'yekanBakh, sans-serif'
},
callbacks: {
label: function(context) {
return `${context.dataset.label}: ${context.parsed.y} مورد`;
}
}
}
},
scales: {
x: {
ticks: {
font: {
family: 'yekanBakh, sans-serif',
size: 11
}
}
},
y: {
position: 'right',
ticks: {
stepSize: 10,
maxTicks: 8,
font: {
family: 'yekanBakh, sans-serif',
size: 11
},
callback: function(value) {
return convertEnglishToPersian(value);
}
}
}
}
});
</script>
<template>
<div>
<Chart type="line" :data="chartData" :options="chartOptions" class="h-[15rem]" />
</div>
</template>
@@ -0,0 +1,18 @@
<script setup>
import { Link } from '@inertiajs/inertia-vue3'
import ActivityCard from './ActivityCard.vue'
import { formatPrice } from '../../utils/numberUtils'
</script>
<template>
<section class="grid grid-cols-4 max-lg:grid-cols-2 max-sm:grid-cols-1 gap-4">
<ActivityCard title="کیس در انتظار بررسی"
:count="5" link="/dashboard/doctor/cases" label-link="مشاهده و بررسی" />
<ActivityCard title="کیس بررسی شده در ماه"
:count="999" link="/dashboard/doctor/cases" label-link="مشاهده گزارشات کیس‌ها" />
<ActivityCard title="تومان درآمد"
:count="formatPrice(50000000)" link="/dashboard/doctor/cases" label-link="مشاهده گزارشات مالی " />
<ActivityCard title="ساعت تا شیت بعدی"
:count="4" link="/dashboard/doctor/cases" label-link="مشاهده شیفت‌ها" />
</section>
</template>
@@ -0,0 +1,36 @@
<script setup>
import { Link } from '@inertiajs/inertia-vue3'
import PetBoldSvg from '../../components/svg/petBold.svg'
import { convertEnglishToPersian } from '../../utils/numberUtils'
defineProps({
title: {
type: String,
required: true
},
count: {
type: Number,
required: true
},
labelLink: {
type: String,
required: false
},
link: {
type: String,
required: false
}
})
</script>
<template>
<div class="bg-white px-4 h-20 border-[1px] border-complement-50 items-center justify-center rounded-xl grid grid-cols-[auto_1fr] gap-2">
<div class="w-14 h-14 bg-danger-100 rounded-md flex items-center justify-center">
<PetBoldSvg/>
</div>
<div class="text-complement-700 text-center grid grid-cols-1 gap-2 text-sm font-normal">
<p class="font-semibold text-[11px]"><span class="font-bold text-[13px]">{{ convertEnglishToPersian(count) }}</span> {{ title }}</p>
<Link v-if="link" :href="link" class="text-complement-700 bg-complement-50 text-center px-2 py-2 rounded-md text-[11px] font-semibold"> {{ labelLink }} </Link>
</div>
</div>
</template>
@@ -0,0 +1,48 @@
<script setup>
import { convertEnglishToPersian } from '../../utils/numberUtils'
import UiButton from '../../components/ui/UiButton.vue'
import CtScanIcon from '../../components/svg/ctScanIcon.svg'
import MriIcon from '../../components/svg/mriIcon.svg'
import SonographyIcon from '../../components/svg/sonographyIcon.svg'
import ECOIcon from '../../components/svg/ecoIcon.svg'
import RadiologyIcon from '../../components/svg/radiologyIcon.svg'
import { computed } from 'vue'
const props = defineProps({
title: {
type: String,
required: true
},
icon: {
type: String,
required: true
}
})
const iconComponent = computed(() => {
switch (props.icon) {
case 'ct-scan':
return CtScanIcon
case 'mri':
return MriIcon
case 'sonography':
return SonographyIcon
case 'echo':
return ECOIcon
case 'radiology':
return RadiologyIcon
default:
return null
}
})
</script>
<template>
<div class="w-full h-[169px] p-[12px] flex flex-col gap-1 items-center justify-center border-[1px] border-[#DEE3EB] rounded-[12px]">
<component :is="iconComponent" class="w-[87px] h-[80px]" />
<div class="w-full flex flex-col gap-1">
<p class="w-full flex items-center justify-center font-[700] text-[14px]">{{ title }}</p>
<ui-button label="ثبت درخواست" severity="secondary" size="small" full-width="true"/>
</div>
</div>
</template>