fix(web): clear vue-tsc errors blocking push
Type attendance rows, remove unused symbols, and harden list item typing after the Ant settings migration. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -295,6 +295,13 @@ function setRole(userId: string, role: unknown) {
|
||||
};
|
||||
}
|
||||
|
||||
function teamMembersLabel(team: TeamDto) {
|
||||
if (!team.members.length) return 'بدون عضو';
|
||||
return team.members
|
||||
.map((m) => `${m.fullName}${m.role === 'manager' ? ' (سرپرست)' : ''}`)
|
||||
.join('، ');
|
||||
}
|
||||
|
||||
async function saveMembers() {
|
||||
if (!editingId.value) return;
|
||||
saving.value = true;
|
||||
@@ -455,15 +462,7 @@ onMounted(() => {
|
||||
</template>
|
||||
<template #description>
|
||||
<a-typography-text type="secondary">
|
||||
{{ t.description || 'بدون توضیح' }}
|
||||
·
|
||||
{{
|
||||
t.members.length
|
||||
? t.members
|
||||
.map((m) => `${m.fullName}${m.role === 'manager' ? ' (سرپرست)' : ''}`)
|
||||
.join('، ')
|
||||
: 'بدون عضو'
|
||||
}}
|
||||
{{ t.description || 'بدون توضیح' }} · {{ teamMembersLabel(t) }}
|
||||
</a-typography-text>
|
||||
</template>
|
||||
</a-list-item-meta>
|
||||
|
||||
@@ -20,7 +20,7 @@ import {
|
||||
import type { TableColumnsType } from 'ant-design-vue';
|
||||
import { DownloadOutlined } from '@ant-design/icons-vue';
|
||||
|
||||
const { Title: ATypographyTitle, Text: ATypographyText, Link: ATypographyLink } = Typography;
|
||||
const { Title: ATypographyTitle, Link: ATypographyLink } = Typography;
|
||||
|
||||
type Row = NoteAttachmentDto & {
|
||||
noteId: string;
|
||||
|
||||
@@ -93,6 +93,14 @@ function entityTagColor(entity: CustomFieldEntity) {
|
||||
return 'blue';
|
||||
}
|
||||
|
||||
function entityLabelOf(field: CustomFieldDefinitionDto) {
|
||||
return entityLabels[field.entityType];
|
||||
}
|
||||
|
||||
function typeLabelOf(field: CustomFieldDefinitionDto) {
|
||||
return typeLabels[field.fieldType];
|
||||
}
|
||||
|
||||
function fieldDescription(field: CustomFieldDefinitionDto) {
|
||||
const parts = [`کلید سیستمی: ${field.key}`];
|
||||
if (field.options?.length) parts.push(`گزینهها: ${field.options.join('، ')}`);
|
||||
@@ -264,9 +272,9 @@ onMounted(load);
|
||||
<a-space wrap>
|
||||
<a-typography-text strong>{{ item.label }}</a-typography-text>
|
||||
<a-tag :color="entityTagColor(item.entityType)" :bordered="false">
|
||||
{{ entityLabels[item.entityType] }}
|
||||
{{ entityLabelOf(item) }}
|
||||
</a-tag>
|
||||
<a-tag :bordered="false">{{ typeLabels[item.fieldType] }}</a-tag>
|
||||
<a-tag :bordered="false">{{ typeLabelOf(item) }}</a-tag>
|
||||
<a-tag v-if="item.required" color="error" :bordered="false">اجباری</a-tag>
|
||||
<a-tag :color="item.isActive ? 'success' : 'default'" :bordered="false">
|
||||
{{ item.isActive ? 'فعال' : 'غیرفعال' }}
|
||||
|
||||
@@ -29,7 +29,7 @@ import {
|
||||
WarningOutlined,
|
||||
} from '@ant-design/icons-vue';
|
||||
|
||||
const { Title: ATypographyTitle, Text: ATypographyText } = Typography;
|
||||
const { Title: ATypographyTitle } = Typography;
|
||||
|
||||
const route = useRoute();
|
||||
const router = useRouter();
|
||||
|
||||
@@ -129,13 +129,6 @@ const userOptions = computed(() => [
|
||||
.map((u) => ({ value: u.id, label: u.fullName })),
|
||||
]);
|
||||
|
||||
const greeting = computed(() => {
|
||||
if (!viewingSelf.value) {
|
||||
const u = users.value.find((x) => x.id === userId.value);
|
||||
return u ? `کارهای امروز ${u.fullName}` : 'کارهای امروز';
|
||||
}
|
||||
return 'امروز چه کارهایی داری؟';
|
||||
});
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
Reference in New Issue
Block a user