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 { $t } from '@/plugins/i18n';
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 pageFormRef = ref();
const i18nStore = userI18nStore();
/**
* 重置表单
* @param formEl
*/
/** 重置表单 */
const resetForm = async (formEl: any) => {
if (!formEl) return;
formEl.resetFields();
await onSearch();
};
/**
* * 当前页改变时
*/
/** 当前页改变时 */
const onCurrentPageChange = async (value: number) => {
i18nStore.pagination.currentPage = value;
await onSearch();
};
/**
* * 当分页发生变化
* @param value
*/
/** 当分页发生变化 */
const onPageSizeChange = async (value: number) => {
i18nStore.pagination.pageSize = value;
await onSearch();
@ -59,29 +53,33 @@ onMounted(() => {
<template>
<div class="main">
<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-input v-model="i18nStore.form.keyName" :placeholder="`${$t('input')}${$t('i18n.keyName')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('i18n.translation')" prop="translation">
<el-input v-model="i18nStore.form.translation" :placeholder="`${$t('input')}${$t('i18n.translation')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('i18n.typeName')" prop="typeName">
<el-input v-model="i18nStore.form.typeName" :placeholder="`${$t('input')}${$t('i18n.typeName')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="i18nStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(pageFormRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
<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-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-form-item>
<el-form-item :label="$t('i18n.translation')" prop="translation">
<el-input v-model="i18nStore.form.translation" :placeholder="`${$t('input')}${$t('i18n.translation')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('i18n.typeName')" prop="typeName">
<el-input v-model="i18nStore.form.typeName" :placeholder="`${$t('input')}${$t('i18n.typeName')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="i18nStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(pageFormRef)"> {{ $t('buttons.reset') }} </el-button>
</el-form-item>
</el-form>
</Auth>
<PureTableBar :columns="columns" :title="$t('multilingualManagement')" @fullscreen="tableRef.setAdaptive()" @refresh="onSearch">
<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') }}
</el-button>
</template>
@ -121,8 +119,8 @@ onMounted(() => {
</template>
<template #operation="{ row }">
<el-button :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-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 v-if="hasAuth(auth.deleted)" :title="`${$t('confirmDelete')} ${row.translation}`" @confirm="onDelete(row)">
<template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }}

View File

@ -1,10 +1,10 @@
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 { selectUserinfo } from '@/components/Table/Userinfo/columns';
import { $t } from '@/plugins/i18n';
import { auth } from '@/views/i18n/i18n-type-setting/utils/auth';
import { hasAuth } from '@/router/utils';
const tableRef = ref();
const formRef = ref();
@ -46,7 +48,9 @@ onMounted(() => {
<PureTableBar :columns="columns" :title="$t('i18n_type')" @fullscreen="tableRef.setAdaptive()" @refresh="onSearch">
<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 v-slot="{ size, dynamicColumns }">
@ -83,8 +87,8 @@ onMounted(() => {
</template>
<template #operation="{ row }">
<el-button :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-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 v-if="hasAuth(auth.deleted)" :title="`${$t('delete')} ${row.typeName}?`" @confirm="onDelete(row)">
<template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }}

View File

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