From 810bf9e7d0478144acdae0db967b4c530c734de7 Mon Sep 17 00:00:00 2001 From: adonis Date: Wed, 19 Aug 2026 18:57:39 +0330 Subject: [PATCH] fix(settings): merge full system catalog on program settings page Fill missing can_edit=0 keys client-side so Montzar and other groups show the same fields as khaneghi admin advanced settings before import. Co-authored-by: Cursor --- src/pages/ProgramSettingsPage.vue | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/pages/ProgramSettingsPage.vue b/src/pages/ProgramSettingsPage.vue index f44b1ed..62263d4 100644 --- a/src/pages/ProgramSettingsPage.vue +++ b/src/pages/ProgramSettingsPage.vue @@ -38,7 +38,7 @@ import { normalizeSettingRow, resolveSettingFieldType, } from '@/config/khanegiSettingCatalog' -import { isSuperAdminSystemSettingKey } from '@/config/superAdminSettingKeys' +import { isSuperAdminSystemSettingKey, SUPERADMIN_SYSTEM_SETTING_KEYS } from '@/config/superAdminSettingKeys' import type { KhanegiSettingRow } from '@/config/khanegiSettingRow' import { useAuthStore } from '@/stores/auth' @@ -306,8 +306,28 @@ function errText(e: any) { return Array.isArray(msg) ? msg.join('، ') : msg || 'خطا' } +function mergeSystemCatalogRows(rows: KhanegiSettingRow[]): KhanegiSettingRow[] { + const byKey = new Map(rows.map((row) => [rowKey(row), row])) + return [...SUPERADMIN_SYSTEM_SETTING_KEYS] + .sort((a, b) => a.localeCompare(b)) + .map((key) => { + const found = byKey.get(key) + if (found) return normalizeSettingRow(found) + return normalizeSettingRow({ + key, + value: '', + title_fa: '', + description: '', + type: '', + is_active: 1, + can_edit: 0, + }) + }) +} + function applyItems(raw: unknown[]) { - items.value = raw.map((row) => asRow((row || {}) as Record)) + const rows = raw.map((row) => asRow((row || {}) as Record)) + items.value = mergeSystemCatalogRows(rows) } async function load() {