From 7c2bffa1a495cc4a3a263f654c08c231009c5c4e Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 02 四月 2026 10:59:45 +0800
Subject: [PATCH] #i18n

---
 rsf-design/src/views/system/role/modules/role-permission-dialog.vue |   35 +++++++++++++++++++++--------------
 1 files changed, 21 insertions(+), 14 deletions(-)

diff --git a/rsf-design/src/views/system/role/modules/role-permission-dialog.vue b/rsf-design/src/views/system/role/modules/role-permission-dialog.vue
index ccc6c63..8d8909a 100644
--- a/rsf-design/src/views/system/role/modules/role-permission-dialog.vue
+++ b/rsf-design/src/views/system/role/modules/role-permission-dialog.vue
@@ -1,14 +1,14 @@
 <template>
   <ElDrawer
     :model-value="visible"
-    title="瑙掕壊鏉冮檺"
+    :title="t('pages.system.role.permission.title')"
     size="860px"
     destroy-on-close
     @update:model-value="handleVisibleChange"
     @closed="handleClosed"
   >
     <div class="mb-4 text-sm text-[var(--art-text-secondary)]">
-      褰撳墠瑙掕壊锛歿{ roleLabel }}
+      {{ t('pages.system.role.permission.currentRole') }}{{ roleLabel }}
     </div>
 
     <ElTabs v-model="activeScopeType" class="role-scope-tabs">
@@ -24,21 +24,21 @@
         <div v-else class="space-y-3">
           <div class="flex items-center justify-between gap-3">
             <ElSpace wrap>
-              <ElButton @click="handleSelectAll(config.scopeType)">鍏ㄩ��</ElButton>
-              <ElButton @click="handleClear(config.scopeType)">娓呯┖</ElButton>
+              <ElButton @click="handleSelectAll(config.scopeType)">{{ t('pages.system.role.permission.selectAll') }}</ElButton>
+              <ElButton @click="handleClear(config.scopeType)">{{ t('pages.system.role.permission.clear') }}</ElButton>
             </ElSpace>
-            <ElButton type="primary" @click="handleSave(config.scopeType)">淇濆瓨褰撳墠鏉冮檺</ElButton>
+            <ElButton type="primary" @click="handleSave(config.scopeType)">{{ t('pages.system.role.permission.saveCurrent') }}</ElButton>
           </div>
 
           <div class="flex items-center gap-3">
             <ElInput
               v-model.trim="scopeState[config.scopeType].condition"
               clearable
-              placeholder="鎼滅储鏉冮檺鏍�"
+              :placeholder="t('pages.system.role.permission.searchPlaceholder')"
               @clear="handleSearch(config.scopeType)"
               @keyup.enter="handleSearch(config.scopeType)"
             />
-            <ElButton @click="handleSearch(config.scopeType)">鎼滅储</ElButton>
+            <ElButton @click="handleSearch(config.scopeType)">{{ t('common.actions.search') }}</ElButton>
           </div>
 
           <ElScrollbar height="56vh">
@@ -56,7 +56,7 @@
                 <div class="flex items-center gap-2">
                   <span>{{ resolveScopeNodeLabel(data) }}</span>
                   <ElTag v-if="data.isAuthButton" type="info" effect="plain" size="small">
-                    鎸夐挳
+                    {{ t('pages.system.role.permission.authButton') }}
                   </ElTag>
                 </div>
               </template>
@@ -78,8 +78,10 @@
   } from '../rolePage.helpers'
   import { fetchGetRoleScopeList, fetchGetRoleScopeTree, fetchUpdateRoleScope } from '@/api/system-manage'
   import { resolveBackendMenuTitle } from '@/utils/backend-menu-title'
+  import { formatMenuTitle } from '@/utils/router'
   import { guardRequestWithMessage } from '@/utils/sys/requestGuard'
   import { ElMessage } from 'element-plus'
+  import { useI18n } from 'vue-i18n'
 
   const props = defineProps({
     visible: { required: false, default: false },
@@ -88,6 +90,7 @@
   })
 
   const emit = defineEmits(['update:visible', 'success'])
+  const { t } = useI18n()
 
   const scopeConfigs = ['menu', 'pda', 'matnr', 'warehouse'].map((scopeType) => getRoleScopeConfig(scopeType))
   const activeScopeType = ref(props.scopeType || 'menu')
@@ -103,7 +106,7 @@
     set: (value) => emit('update:visible', value)
   })
 
-  const roleLabel = computed(() => props.roleData?.name || props.roleData?.code || '鏈�夋嫨瑙掕壊')
+  const roleLabel = computed(() => props.roleData?.name || props.roleData?.code || t('pages.system.role.permission.unselected'))
 
   function createScopeTabState() {
     return {
@@ -138,7 +141,7 @@
         Promise.all([selectionRequest, treeRequest]),
         null,
         {
-          timeoutMessage: `${config.title}鍔犺浇瓒呮椂锛屽凡鍋滄绛夊緟`
+          timeoutMessage: t('pages.system.role.permission.scopeLoadTimeout', { title: config.title })
         }
       )
       if (!guardedResult) {
@@ -154,7 +157,7 @@
       state.halfCheckedKeys = []
       state.loaded = true
     } catch (error) {
-      ElMessage.error(error?.message || `鍔犺浇${config.title}澶辫触`)
+      ElMessage.error(error?.message || t('pages.system.role.permission.scopeLoadFailed', { title: config.title }))
     } finally {
       state.loading = false
       nextTick(() => {
@@ -215,11 +218,11 @@
           scopeState[scopeType].halfCheckedKeys
         )
       )
-      ElMessage.success('鏉冮檺淇濆瓨鎴愬姛')
+      ElMessage.success(t('pages.system.role.permission.saveSuccess'))
       emit('success')
       visible.value = false
     } catch (error) {
-      ElMessage.error(error?.message || '鏉冮檺淇濆瓨澶辫触')
+      ElMessage.error(error?.message || t('pages.system.role.permission.saveFailed'))
     }
   }
 
@@ -236,7 +239,11 @@
     if (!rawLabel) {
       return ''
     }
-    return resolveBackendMenuTitle(rawLabel)
+    if (activeScopeType.value === 'menu') {
+      const resolvedTitle = resolveBackendMenuTitle(rawLabel, data?.component || '')
+      return resolvedTitle ? formatMenuTitle(resolvedTitle) : ''
+    }
+    return rawLabel
   }
 
   const handleClosed = () => {

--
Gitblit v1.9.1