fix:后端其他菜单的国际化

This commit is contained in:
PZ688 2025-02-28 18:06:48 +08:00
parent 6ca4ef7405
commit f4f1c5c4e6
16 changed files with 129 additions and 69 deletions

View File

@ -72,5 +72,10 @@
"更新日志": "Aktualisierungen",
"微信支付": "WeChat-Zahlung",
"框架教程": "Framework-Anleitung",
"行政区划": "Verwaltungseinheiten"
"行政区划": "Verwaltungseinheiten",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Abrufen Sie Informationen zur Rückerstattung",
"获取支付订单详情(本地库)":"Erhalten Sie Details zum Zahlungsauftrag (Lokale Bibliothek)",
"获取支付订单详情(微信接口)":"Erhalten Sie Details zum Zahlungsauftrag (WeChat-Schnittstelle)",
"退款申请":"Rückerstattung beantragen"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Update Logs",
"微信支付": "WeChat Pay",
"框架教程": "Framework Tutorial",
"行政区划": "Administrative Divisions"
"行政区划": "Administrative Divisions",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Query Refund Info",
"获取支付订单详情(本地库)":"Get Payment Order Details(Local Library)",
"获取支付订单详情(微信接口)":"Get Payment Order Details(WeChat Interface)",
"退款申请":"Refund Application"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Actualizaciones",
"微信支付": "WeChat Pago",
"框架教程": "Tutorial Framework",
"行政区划": "Unidades Administrativas"
"行政区划": "Unidades Administrativas",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Consultar Información de Reembolso",
"获取支付订单详情(本地库)":"Obtener Detalles del Pedido de Pago (Biblioteca Local)",
"获取支付订单详情(微信接口)":"Obtener Detalles del Pedido de Pago (Interfaz de WeChat)",
"退款申请":"Solicitud de Reembolso"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Päivityslokit",
"微信支付": "WeChat-maksu",
"框架教程": "Runko-opas",
"行政区划": "Hallituksen alueet"
"行政区划": "Hallituksen alueet",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Hae palautusmaksun tiedot",
"获取支付订单详情(本地库)":"Hae maksujärjestelmän tiedot (paikallinen kirjasto)",
"获取支付订单详情(微信接口)":"Hae maksujärjestelmän tiedot (WeChat-liittymä)",
"退款申请":"Palautusmaksun soveltaminen"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Mise à jour",
"微信支付": "WeChat Pay",
"框架教程": "Framework Tutorial",
"行政区划": "Unités Administratives"
"行政区划": "Unités Administratives",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Consultation des informations de remboursement",
"获取支付订单详情(本地库)":"Obtenir les détails de la commande de paiement (bibliothèque locale)",
"获取支付订单详情(微信接口)":"Obtenir les détails de la commande de paiement (interface WeChat)",
"退款申请":"Demande de remboursement"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Aggiornamenti",
"微信支付": "WeChat Pagamento",
"框架教程": "Guida al Framework",
"行政区划": "Unità Amministrative"
"行政区划": "Unità Amministrative",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Consultazione delle informazioni sul rimborso",
"获取支付订单详情(本地库)":"Ottenere i dettagli dell'ordine di pagamento (libreria locale)",
"获取支付订单详情(微信接口)":"Ottenere i dettagli dell'ordine di pagamento (interfaccia WeChat)",
"退款申请":"Richiesta di rimborso"
}

View File

@ -72,5 +72,10 @@
"更新日志": "更新ログ",
"微信支付": "WeChat Pay",
"框架教程": "フレームワークチュートリアル",
"行政区划": "行政区划"
"行政区划": "行政区划",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"退款信息を確認する",
"获取支付订单详情(本地库)":"ローカルライブラリの支払い注文詳細を取得する",
"获取支付订单详情(微信接口)":"WeChatインターフェースの支払い注文詳細を取得する",
"退款申请":"返品申請"
}

View File

@ -72,5 +72,10 @@
"更新日志": "업데이트 로그",
"微信支付": "WeChat 결제",
"框架教程": "프레임워크 튜토리얼",
"行政区划": "관리 지역"
"行政区划": "관리 지역",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"환불 정보 조회",
"获取支付订单详情(本地库)":"로컬 라이브러리의 결제 주문 세부 정보 가져오기",
"获取支付订单详情(微信接口)":"WeChat 인터페이스의 결제 주문 세부 정보 가져오기",
"退款申请":"환불 신청"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Oppdateringer",
"微信支付": "WeChat-betaling",
"框架教程": "Framverksopplæring",
"行政区划": "Administrative enheter"
"行政区划": "Administrative enheter",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Søk etter informasjon om tilbakebetaling",
"获取支付订单详情(本地库)":"Hent detaljer om betalingsordre (lokal bibliotek)",
"获取支付订单详情(微信接口)":"Hent detaljer om betalingsordre (WeChat-grensesnitt)",
"退款申请":"Anmodning om tilbakebetaling"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Aktualizacje",
"微信支付": "WeChat płatność",
"框架教程": "Kurs frameworku",
"行政区划": "Administrative jednostki"
"行政区划": "Administrative jednostki",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Sprawdź informacje o zwrocie",
"获取支付订单详情(本地库)":"Pobierz szczegóły zamówienia płatności (lokalna biblioteka)",
"获取支付订单详情(微信接口)":"Pobierz szczegóły zamówienia płatności (interfejs WeChat)",
"退款申请":"Wniosek o zwrot"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Atualizações",
"微信支付": "WeChat Pagamento",
"框架教程": "Tutorial Framework",
"行政区划": "Unidades Administrativas"
"行政区划": "Unidades Administrativas",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Consultar Informações de Reembolso",
"获取支付订单详情(本地库)":"Obter Detalhes do Pedido de Pagamento (Biblioteca Local)",
"获取支付订单详情(微信接口)":"Obter Detalhes do Pedido de Pagamento (Interface WeChat)",
"退款申请":"Solicitação de Reembolso"
}

View File

@ -72,5 +72,10 @@
"更新日志": "Обновления",
"微信支付": "WeChat-платеж",
"框架教程": "Руководство по фреймворку",
"行政区划": "Административные единицы"
"行政区划": "Административные единицы",
"微信支付下单Native":"WeChat Pay Native",
"查询退款信息":"Проверка информации о возврате",
"获取支付订单详情(本地库)":"Получение деталей заказа оплаты (локальная библиотека)",
"获取支付订单详情(微信接口)":"Получение деталей заказа оплаты (интерфейс WeChat)",
"退款申请":"Запрос на возврат"
}

View File

@ -72,5 +72,10 @@
"更新日志": "更新日志",
"微信支付": "微信支付",
"框架教程": "框架教程",
"行政区划": "行政区划"
"行政区划": "行政区划",
"微信支付下单Native":"微信支付下单Native",
"查询退款信息":"查询退款信息",
"获取支付订单详情(本地库)":"获取支付订单详情(本地库)",
"获取支付订单详情(微信接口)":"获取支付订单详情(微信接口)",
"退款申请":"退款申请"
}

View File

@ -72,5 +72,10 @@
"更新日志": "更新日志",
"微信支付": "微信支付",
"框架教程": "框架教程",
"行政区划": "行政區劃"
"行政区划": "行政區劃",
"微信支付下单Native":"微信支付下單Native",
"查询退款信息":"查詢退款信息",
"获取支付订单详情(本地库)":"獲取支付訂單詳情(本地庫)",
"获取支付订单详情(微信接口)":"獲取支付訂單詳情(微信接口)",
"退款申请":"退款申請"
}

View File

@ -72,5 +72,10 @@
"更新日志": "更新日志",
"微信支付": "微信支付",
"框架教程": "框架教程",
"行政区划": "行政區劃"
"行政区划": "行政區劃",
"微信支付下单Native":"微信支付下單Native",
"查询退款信息":"查詢退款信息",
"获取支付订单详情(本地库)":"獲取支付訂單詳情(本地庫)",
"获取支付订单详情(微信接口)":"獲取支付訂單詳情(微信接口)",
"退款申请":"退款申請"
}

View File

@ -4,13 +4,13 @@
<el-form :model="state.queryParams" ref="queryForm" :show-message="false" :inlineMessage="true" label-width="auto" style="flex: 1 1 0%">
<el-row :gutter="10">
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="角色名称" prop="name">
<el-input v-model="state.queryParams.name" placeholder="角色名称" clearable @keyup.enter.native="handleQuery(true)" />
<el-form-item :label="$t('message.list.roleName')" prop="name">
<el-input v-model="state.queryParams.name" :placeholder="$t('message.list.roleName')" clearable @keyup.enter.native="handleQuery(true)" />
</el-form-item>
</el-col>
<el-col class="mb5" :xs="24" :sm="12" :md="8" :lg="6" :xl="6">
<el-form-item label="角色编码" prop="code">
<el-input v-model="state.queryParams.code" placeholder="角色编码" clearable @keyup.enter.native="handleQuery(true)" />
<el-form-item :label="$t('message.list.roleCode')" prop="code">
<el-input v-model="state.queryParams.code" :placeholder="$t('message.list.roleCode')" clearable @keyup.enter.native="handleQuery(true)" />
</el-form-item>
</el-col>
</el-row>
@ -21,8 +21,8 @@
<el-row>
<el-col>
<el-button-group>
<el-button type="primary" icon="ele-Search" @click="handleQuery(true)" v-auth="'sysRole/page'"> 查询 </el-button>
<el-button icon="ele-Refresh" @click="resetQuery"> 重置 </el-button>
<el-button type="primary" icon="ele-Search" @click="handleQuery(true)" v-auth="'sysRole/page'"> {{ $t('message.list.query') }} </el-button>
<el-button icon="ele-Refresh" @click="resetQuery"> {{ $t('message.list.reset') }} </el-button>
</el-button-group>
</el-col>
</el-row>
@ -31,38 +31,37 @@
<el-card class="full-table" shadow="hover" style="margin-top: 5px">
<vxe-grid ref="xGrid" class="xGrid-style" v-bind="options" v-on="gridEvents">
<template #toolbar_buttons>
<el-button type="primary" icon="ele-Plus" @click="handleAdd" v-auth="'sysRole/add'"> 新增 </el-button>
<el-button type="primary" icon="ele-Plus" @click="handleAdd" v-auth="'sysRole/add'"> {{ $t('message.list.add') }} </el-button>
</template>
<template #toolbar_tools></template>
<template #empty>
<el-empty :image-size="200" />
</template>
<template #row_dataScope="{ row }">
<el-tag v-if="row.dataScope === 1">全部数据</el-tag>
<el-tag v-else-if="row.dataScope === 2">本部门及以下数据</el-tag>
<el-tag v-else-if="row.dataScope === 3">本部门数据</el-tag>
<el-tag v-else-if="row.dataScope === 4">仅本人数据</el-tag>
<el-tag v-else-if="row.dataScope === 5">自定义数据</el-tag>
<el-tag v-if="row.dataScope === 1">{{ $t('message.list.allData') }}</el-tag>
<el-tag v-else-if="row.dataScope === 2">{{ $t('message.list.deptAndBelowData') }}</el-tag>
<el-tag v-else-if="row.dataScope === 3">{{ $t('message.list.deptData') }}</el-tag>
<el-tag v-else-if="row.dataScope === 4">{{ $t('message.list.personalData') }}</el-tag>
<el-tag v-else-if="row.dataScope === 5">{{ $t('message.list.customData') }}</el-tag>
</template>
<template #row_status="{ row }">
<el-tag v-if="row.status === 1" type="success">启用</el-tag>
<el-tag v-else type="danger">禁用</el-tag>
<el-tag v-if="row.status === 1" type="success">{{ $t('message.list.enable') }}</el-tag>
<el-tag v-else type="danger">{{ $t('message.list.disable') }}</el-tag>
</template>
<template #row_record="{ row }">
<ModifyRecord :data="row" />
</template>
<template #row_buttons="{ row }">
<el-tooltip content="编辑" placement="top">
<el-tooltip :content="$t('message.list.edit')" placement="top">
<el-button icon="ele-Edit" size="small" text type="primary" @click="handleEdit(row)" v-auth="'sysRole/update'"></el-button>
</el-tooltip>
<el-tooltip content="删除" placement="top">
<el-tooltip :content="$t('message.list.delete')" placement="top">
<el-button icon="ele-Delete" size="small" text type="danger" @click="handleDelete(row)" v-auth="'sysRole/delete'"></el-button>
</el-tooltip>
<el-button icon="ele-Menu" size="small" text type="primary" @click="openGrantMenu(row)" v-auth="'sysRole/grantMenu'">授权菜单</el-button>
<el-button icon="ele-OfficeBuilding" size="small" text type="primary" @click="openGrantData(row)" v-auth="'sysRole/grantDataScope'">授权数据</el-button>
<el-button icon="ele-Grid" size="small" text type="primary" @click="openGrantTable(row)" v-auth="'sysRole/grantTable'">字段黑名单</el-button>
<el-button icon="ele-Link" size="small" text type="primary" @click="openGrantApi(row)" v-auth="'sysRole/grantApi'"> 接口黑名单 </el-button>
<el-button icon="ele-User" size="small" text type="primary" @click="openGrantUser(row)" v-auth="'sysRole/grantApi'"> 授权账号 </el-button>
<el-button icon="ele-Menu" size="small" text type="primary" @click="openGrantMenu(row)" v-auth="'sysRole/grantMenu'">{{ $t('message.list.authMenu') }}</el-button>
<el-button icon="ele-OfficeBuilding" size="small" text type="primary" @click="openGrantData(row)" v-auth="'sysRole/grantDataScope'">{{ $t('message.list.authData') }}</el-button>
<el-button icon="ele-Grid" size="small" text type="primary" @click="openGrantTable(row)" v-auth="'sysRole/grantTable'">{{ $t('message.list.fieldBlacklist') }}</el-button>
<el-button icon="ele-Link" size="small" text type="primary" @click="openGrantApi(row)" v-auth="'sysRole/grantApi'">{{ $t('message.list.apiBlacklist') }}</el-button>
</template>
</vxe-grid>
</el-card>
@ -72,7 +71,6 @@
<GrantTable ref="grantTableRef" />
<GrantData ref="grantDataRef" @handleQuery="handleQuery" />
<GrantApi ref="grantApiRef" />
<GrantUser v-model:visible="state.grantUserVisible" @change="closeGrantUser" />
</div>
</template>
@ -82,13 +80,13 @@ import { ElMessageBox, ElMessage } from 'element-plus';
import { VxeGridInstance, VxeGridListeners, VxeGridPropTypes } from 'vxe-table';
import { useVxeTable } from '/@/hooks/useVxeTableOptionsHook';
import { Local } from '/@/utils/storage';
import { useI18n } from 'vue-i18n';
import EditRole from '/@/views/system/role/component/editRole.vue';
import GrantMenu from '/@/views/system/role/component/grantMenu.vue';
import GrantTable from '/@/views/system/role/component/grantTable.vue';
import GrantData from '/@/views/system/role/component/grantData.vue';
import GrantApi from '/@/views/system/role/component/grantApi.vue';
import GrantUser from '/@/components/selector/userSelectorDialog.vue';
import ModifyRecord from '/@/components/table/modifyRecord.vue';
import { getAPI } from '/@/utils/axios-utils';
@ -112,28 +110,28 @@ const state = reactive({
},
visible: false,
title: '',
grantUserVisible: false, //
roleRow: {} as any, //
});
const i18n = useI18n();
//
const localPageParamKey = 'localPageParam:sysRole';
//
const options = useVxeTable<PageRoleOutput>(
{
id: 'sysRole',
name: '角色',
name: i18n.t('message.list.role'),
columns: [
// { type: 'checkbox', width: 40, fixed: 'left' },
{ field: 'seq', type: 'seq', title: '序号', width: 60, fixed: 'left' },
{ field: 'name', title: '角色名称', minWidth: 150, showOverflow: 'tooltip' },
{ field: 'code', title: '角色编码', minWidth: 150, showOverflow: 'tooltip' },
{ field: 'dataScope', title: '数据范围', minWidth: 150, showOverflow: 'tooltip', slots: { default: 'row_dataScope' } },
{ field: 'tenantName', title: '租户名称', minWidth: 180, showOverflow: 'tooltip' },
{ field: 'orderNo', title: '排序', width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: '状态', width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: 'record', title: '修改记录', width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ field: 'buttons', title: '操作', fixed: 'right', width: 520, showOverflow: true, slots: { default: 'row_buttons' } },
{ field: 'seq', type: 'seq', title: i18n.t('message.list.seq'), width: 60, fixed: 'left' },
{ field: 'name', title: i18n.t('message.list.roleName'), minWidth: 150, showOverflow: 'tooltip' },
{ field: 'code', title: i18n.t('message.list.roleCode'), minWidth: 150, showOverflow: 'tooltip' },
{ field: 'dataScope', title: i18n.t('message.list.dataScope'), minWidth: 150, showOverflow: 'tooltip', slots: { default: 'row_dataScope' } },
{ field: 'tenantName', title: i18n.t('message.list.tenantName'), minWidth: 180, showOverflow: 'tooltip' },
{ field: 'orderNo', title: i18n.t('message.list.orderNo'), width: 80, showOverflow: 'tooltip' },
{ field: 'status', title: i18n.t('message.list.status'), width: 80, showOverflow: 'tooltip', slots: { default: 'row_status' } },
{ field: 'record', title: i18n.t('message.list.record'), width: 100, showOverflow: 'tooltip', slots: { default: 'row_record' } },
{ field: 'buttons', title: i18n.t('message.list.operation'), fixed: 'right', width: 440, showOverflow: true, slots: { default: 'row_buttons' } },
],
},
// vxeGrid()vxe-table
@ -176,27 +174,27 @@ const resetQuery = async () => {
//
const handleAdd = () => {
state.title = '添加角色';
state.title = i18n.t('message.list.addRole');
editRoleRef.value?.openDialog({ id: undefined, status: 1, orderNo: 100 });
};
//
const handleEdit = async (row: any) => {
state.title = '编辑角色';
state.title = i18n.t('message.list.editRole');
editRoleRef.value?.openDialog(row);
};
//
const handleDelete = (row: any) => {
ElMessageBox.confirm(`确定删角色:【${row.name}】?`, '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
ElMessageBox.confirm(i18n.t('message.list.confirmDeleteRole', { roleName: row.name }), i18n.t('message.list.hint'), {
confirmButtonText: i18n.t('message.list.confirmButtonText'),
cancelButtonText: i18n.t('message.list.cancelButtonText'),
type: 'warning',
})
.then(async () => {
await getAPI(SysRoleApi).apiSysRoleDeletePost({ id: row.id });
await handleQuery();
ElMessage.success('删除成功');
ElMessage.success(i18n.t('message.list.successDelete'));
})
.catch(() => {});
};
@ -234,17 +232,4 @@ const openGrantData = (row: any) => {
const openGrantApi = (row: any) => {
grantApiRef.value?.openDrawer(row);
};
//
const openGrantUser = (row: any) => {
state.roleRow = row;
state.grantUserVisible = true;
};
//
const closeGrantUser = (data: any) => {
var userIds = data.map((u: any) => u.id);
getAPI(SysRoleApi).apiSysRoleGrantUserPost({ id: state.roleRow.id, userIdList: userIds });
state.grantUserVisible = false;
};
</script>