fix: 🧩 更新多语言权限按钮显示

This commit is contained in:
bunny 2024-11-05 18:57:58 +08:00
parent 7cc97f162a
commit 41e310dbf0
4 changed files with 47 additions and 45 deletions

View File

@ -12,33 +12,27 @@ import { columns } from '@/views/i18n/i18n-setting/utils/columns';
import Refresh from '@iconify-icons/ep/refresh'; import Refresh from '@iconify-icons/ep/refresh';
import { $t } from '@/plugins/i18n'; import { $t } from '@/plugins/i18n';
import { selectUserinfo } from '@/components/Table/Userinfo/columns'; import { selectUserinfo } from '@/components/Table/Userinfo/columns';
import { auth } from '@/views/i18n/i18n-setting/utils/auth';
import { hasAuth } from '@/router/utils';
const tableRef = ref(); const tableRef = ref();
const pageFormRef = ref(); const pageFormRef = ref();
const i18nStore = userI18nStore(); const i18nStore = userI18nStore();
/** /** 重置表单 */
* 重置表单
* @param formEl
*/
const resetForm = async (formEl: any) => { const resetForm = async (formEl: any) => {
if (!formEl) return; if (!formEl) return;
formEl.resetFields(); formEl.resetFields();
await onSearch(); await onSearch();
}; };
/** /** 当前页改变时 */
* * 当前页改变时
*/
const onCurrentPageChange = async (value: number) => { const onCurrentPageChange = async (value: number) => {
i18nStore.pagination.currentPage = value; i18nStore.pagination.currentPage = value;
await onSearch(); await onSearch();
}; };
/** /** 当分页发生变化 */
* * 当分页发生变化
* @param value
*/
const onPageSizeChange = async (value: number) => { const onPageSizeChange = async (value: number) => {
i18nStore.pagination.pageSize = value; i18nStore.pagination.pageSize = value;
await onSearch(); await onSearch();
@ -59,6 +53,7 @@ onMounted(() => {
<template> <template>
<div class="main"> <div class="main">
<Auth :value="auth.search">
<el-form ref="pageFormRef" :inline="true" :model="i18nStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto"> <el-form ref="pageFormRef" :inline="true" :model="i18nStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<el-form-item :label="$t('i18n.keyName')" prop="keyName"> <el-form-item :label="$t('i18n.keyName')" prop="keyName">
<el-input v-model="i18nStore.form.keyName" :placeholder="`${$t('input')}${$t('i18n.keyName')}`" class="!w-[180px]" clearable /> <el-input v-model="i18nStore.form.keyName" :placeholder="`${$t('input')}${$t('i18n.keyName')}`" class="!w-[180px]" clearable />
@ -74,14 +69,17 @@ onMounted(() => {
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(pageFormRef)"> {{ $t('buttons.reset') }} </el-button> <el-button :icon="useRenderIcon(Refresh)" @click="resetForm(pageFormRef)"> {{ $t('buttons.reset') }} </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
</Auth>
<PureTableBar :columns="columns" :title="$t('multilingualManagement')" @fullscreen="tableRef.setAdaptive()" @refresh="onSearch"> <PureTableBar :columns="columns" :title="$t('multilingualManagement')" @fullscreen="tableRef.setAdaptive()" @refresh="onSearch">
<template #buttons> <template #buttons>
<!-- 添加多语言 --> <!-- 添加多语言 -->
<el-button :icon="useRenderIcon(AddFill)" type="primary" @click="onAdd"> {{ $t('addNew') }}</el-button> <el-button v-if="hasAuth(auth.add)" :icon="useRenderIcon(AddFill)" type="primary" @click="onAdd">
{{ $t('addNew') }}
</el-button>
<!-- 批量删除按钮 --> <!-- 批量删除按钮 -->
<el-button :disabled="!(deleteIds.length > 0)" :icon="useRenderIcon(Delete)" type="danger" @click="onDeleteBatch"> <el-button v-if="hasAuth(auth.deleted)" :disabled="!(deleteIds.length > 0)" :icon="useRenderIcon(Delete)" type="danger" @click="onDeleteBatch">
{{ $t('deleteBatches') }} {{ $t('deleteBatches') }}
</el-button> </el-button>
</template> </template>
@ -121,8 +119,8 @@ onMounted(() => {
</template> </template>
<template #operation="{ row }"> <template #operation="{ row }">
<el-button :icon="useRenderIcon(EditPen)" :size="size" class="reset-margin" link type="primary" @click="onUpdate(row)"> {{ $t('modify') }} </el-button> <el-button v-if="hasAuth(auth.update)" :icon="useRenderIcon(EditPen)" :size="size" class="reset-margin" link type="primary" @click="onUpdate(row)"> {{ $t('modify') }} </el-button>
<el-popconfirm :title="`${$t('confirmDelete')} ${row.translation}`" @confirm="onDelete(row)"> <el-popconfirm v-if="hasAuth(auth.deleted)" :title="`${$t('confirmDelete')} ${row.translation}`" @confirm="onDelete(row)">
<template #reference> <template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary"> <el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }} {{ $t('delete') }}

View File

@ -1,10 +1,10 @@
export const auth = { export const auth = {
// 分页查询 // 分页查询
search: ['emailTemplate::getEmailTemplateList'], search: ['i18n::getI18nList'],
// 添加操作 // 添加操作
add: ['emailTemplate::addEmailTemplate'], add: ['i18n::addI18n'],
// 更新操作 // 更新操作
update: ['emailTemplate::updateEmailTemplate'], update: ['i18n::updateI18n'],
// 删除操作 // 删除操作
deleted: ['emailTemplate::deleteEmailTemplate'], deleted: ['i18n::deleteI18n'],
}; };

View File

@ -13,6 +13,8 @@ import TableIsDefaultTag from '@/components/Table/TableIsDefaultTag.vue';
import Refresh from '@iconify-icons/ep/refresh'; import Refresh from '@iconify-icons/ep/refresh';
import { selectUserinfo } from '@/components/Table/Userinfo/columns'; import { selectUserinfo } from '@/components/Table/Userinfo/columns';
import { $t } from '@/plugins/i18n'; import { $t } from '@/plugins/i18n';
import { auth } from '@/views/i18n/i18n-type-setting/utils/auth';
import { hasAuth } from '@/router/utils';
const tableRef = ref(); const tableRef = ref();
const formRef = ref(); const formRef = ref();
@ -46,7 +48,9 @@ onMounted(() => {
<PureTableBar :columns="columns" :title="$t('i18n_type')" @fullscreen="tableRef.setAdaptive()" @refresh="onSearch"> <PureTableBar :columns="columns" :title="$t('i18n_type')" @fullscreen="tableRef.setAdaptive()" @refresh="onSearch">
<template #buttons> <template #buttons>
<el-button :icon="useRenderIcon(AddFill)" type="primary" @click="onAdd"> {{ $t('addNew') }}</el-button> <el-button v-if="hasAuth(auth.add)" :icon="useRenderIcon(AddFill)" type="primary" @click="onAdd">
{{ $t('addNew') }}
</el-button>
</template> </template>
<template v-slot="{ size, dynamicColumns }"> <template v-slot="{ size, dynamicColumns }">
@ -83,8 +87,8 @@ onMounted(() => {
</template> </template>
<template #operation="{ row }"> <template #operation="{ row }">
<el-button :icon="useRenderIcon(EditPen)" :size="size" class="reset-margin" link type="primary" @click="onUpdate(row)"> {{ $t('modify') }} </el-button> <el-button v-if="hasAuth(auth.update)" :icon="useRenderIcon(EditPen)" :size="size" class="reset-margin" link type="primary" @click="onUpdate(row)"> {{ $t('modify') }} </el-button>
<el-popconfirm :title="`${$t('delete')} ${row.typeName}?`" @confirm="onDelete(row)"> <el-popconfirm v-if="hasAuth(auth.deleted)" :title="`${$t('delete')} ${row.typeName}?`" @confirm="onDelete(row)">
<template #reference> <template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary"> <el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }} {{ $t('delete') }}

View File

@ -1,8 +1,8 @@
// 分页查询 export const auth = {
export const search = [];
// 添加操作 // 添加操作
export const add = []; add: ['i18nType::addI18nType'],
// 更新操作 // 更新操作
export const update = []; update: ['i18nType::updateI18nType'],
// 删除操作 // 删除操作
export const deleted = []; deleted: ['i18nType::deleteI18nType'],
};