fix: 🧩 系统配置权限按钮显示完成

This commit is contained in:
bunny 2024-11-05 18:24:33 +08:00
parent 397dbcfdff
commit 7cc97f162a
22 changed files with 220 additions and 116 deletions

View File

@ -12,32 +12,26 @@ import { selectUserinfo } from '@/components/Table/Userinfo/columns';
import { $t } from '@/plugins/i18n';
import { useEmailTemplateStore } from '@/store/configuration/emailTemplate.ts';
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
import { auth } from '@/views/configuration/emailTemplate/utils/auth';
import { hasAuth } from '@/router/utils';
const tableRef = ref();
const formRef = ref();
const emailTemplateStore = useEmailTemplateStore();
/**
* * 当前页改变时
*/
/** 当前页改变时 */
const onCurrentPageChange = async (value: number) => {
emailTemplateStore.pagination.currentPage = value;
await onSearch();
};
/**
* * 当分页发生变化
* @param value
*/
/** 当分页发生变化 */
const onPageSizeChange = async (value: number) => {
emailTemplateStore.pagination.pageSize = value;
await onSearch();
};
/**
* 重置表单
* @param formEl
*/
/** 重置表单 */
const resetForm = async formEl => {
if (!formEl) return;
formEl.resetFields();
@ -57,31 +51,35 @@ onMounted(() => {
<template>
<div class="main">
<el-form ref="formRef" :inline="true" :model="emailTemplateStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<el-form-item :label="$t('emailTemplate_templateName')" prop="templateName">
<el-input v-model="emailTemplateStore.form.templateName" :placeholder="`${$t('input')}${$t('emailTemplate_templateName')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('emailTemplate_subject')" prop="subject">
<el-input v-model="emailTemplateStore.form.subject" :placeholder="`${$t('input')}${$t('emailTemplate_subject')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('emailTemplate_body')" prop="body">
<el-input v-model="emailTemplateStore.form.body" :placeholder="`${$t('input')}${$t('emailTemplate_body')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('emailTemplate_type')" prop="type">
<el-input v-model="emailTemplateStore.form.type" :placeholder="`${$t('input')}${$t('emailTemplate_type')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="emailTemplateStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
<Auth :value="auth.search">
<el-form ref="formRef" :inline="true" :model="emailTemplateStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<el-form-item :label="$t('emailTemplate_templateName')" prop="templateName">
<el-input v-model="emailTemplateStore.form.templateName" :placeholder="`${$t('input')}${$t('emailTemplate_templateName')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('emailTemplate_subject')" prop="subject">
<el-input v-model="emailTemplateStore.form.subject" :placeholder="`${$t('input')}${$t('emailTemplate_subject')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('emailTemplate_body')" prop="body">
<el-input v-model="emailTemplateStore.form.body" :placeholder="`${$t('input')}${$t('emailTemplate_body')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('emailTemplate_type')" prop="type">
<el-input v-model="emailTemplateStore.form.type" :placeholder="`${$t('input')}${$t('emailTemplate_type')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="emailTemplateStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
</Auth>
<PureTableBar :columns="columns" :title="$t('emailTemplate')" @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="!(selectRows.length > 0)" :icon="useRenderIcon(Delete)" type="danger" @click="onDeleteBatch">
<el-button v-if="hasAuth(auth.deleted)" :disabled="!(selectRows.length > 0)" :icon="useRenderIcon(Delete)" type="danger" @click="onDeleteBatch">
{{ $t('deleteBatches') }}
</el-button>
</template>
@ -124,8 +122,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.templateName}?`" @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.templateName}?`" @confirm="onDelete(row)">
<template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }}

View File

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

View File

@ -14,6 +14,8 @@ import { useEmailUsersStore } from '@/store/configuration/emailUsers';
import { useRenderIcon } from '@/components/CommonIcon/src/hooks';
import { usePublicHooks } from '@/views/hooks';
import { FormInstance } from 'element-plus';
import { auth } from '@/views/configuration/emailUsers/utils/auth';
import { hasAuth } from '@/router/utils';
const tableRef = ref();
const formRef = ref();
@ -21,37 +23,26 @@ const emailUsersStore = useEmailUsersStore();
//
const { switchStyle } = usePublicHooks();
/**
* * 当前页改变时
*/
/** 当前页改变时 */
const onCurrentPageChange = async (value: number) => {
emailUsersStore.pagination.currentPage = value;
await onSearch();
};
/**
* * 当分页发生变化
* @param value
*/
/** 当分页发生变化 */
const onPageSizeChange = async (value: number) => {
emailUsersStore.pagination.pageSize = value;
await onSearch();
};
/**
* 重置表单
* @param formEl
*/
/** 重置表单 */
const resetForm = async (formEl: FormInstance | undefined) => {
if (!formEl) return;
formEl.resetFields();
await onSearch();
};
/**
* * 选择多行
* @param rows
*/
/** 选择多行 */
const onSelectionChange = (rows: Array<any>) => {
deleteIds.value = rows.map((row: any) => row.id);
};
@ -63,39 +54,43 @@ onMounted(() => {
<template>
<div class="main">
<el-form ref="formRef" :inline="true" :model="emailUsersStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<!-- 邮箱-->
<el-form-item :label="$t('emailUsers_email')" prop="email">
<el-input v-model="emailUsersStore.form.email" :placeholder="`${$t('input')}${$t('emailUsers_email')}`" class="!w-[180px]" clearable />
</el-form-item>
<Auth :value="auth.search">
<el-form ref="formRef" :inline="true" :model="emailUsersStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<!-- 邮箱-->
<el-form-item :label="$t('emailUsers_email')" prop="email">
<el-input v-model="emailUsersStore.form.email" :placeholder="`${$t('input')}${$t('emailUsers_email')}`" class="!w-[180px]" clearable />
</el-form-item>
<!-- host地址-->
<el-form-item :label="$t('emailUsers_host')" prop="host">
<el-input v-model="emailUsersStore.form.host" :placeholder="`${$t('input')}${$t('emailUsers_host')}`" class="!w-[180px]" clearable />
</el-form-item>
<!-- host地址-->
<el-form-item :label="$t('emailUsers_host')" prop="host">
<el-input v-model="emailUsersStore.form.host" :placeholder="`${$t('input')}${$t('emailUsers_host')}`" class="!w-[180px]" clearable />
</el-form-item>
<!-- 端口号-->
<el-form-item :label="$t('emailUsers_port')" prop="port">
<el-input v-model="emailUsersStore.form.port" :placeholder="`${$t('input')}${$t('emailUsers_port')}`" class="!w-[180px]" clearable max="99999" min="0" type="number" />
</el-form-item>
<!-- 端口号-->
<el-form-item :label="$t('emailUsers_port')" prop="port">
<el-input v-model="emailUsersStore.form.port" :placeholder="`${$t('input')}${$t('emailUsers_port')}`" class="!w-[180px]" clearable max="99999" min="0" type="number" />
</el-form-item>
<!-- 协议 -->
<el-form-item :label="$t('emailUsers_smtpAgreement')" prop="smtpAgreement">
<el-input v-model="emailUsersStore.form.smtpAgreement" :placeholder="`${$t('input')}${$t('emailUsers_smtpAgreement')}`" class="!w-[180px]" clearable />
</el-form-item>
<!-- 协议 -->
<el-form-item :label="$t('emailUsers_smtpAgreement')" prop="smtpAgreement">
<el-input v-model="emailUsersStore.form.smtpAgreement" :placeholder="`${$t('input')}${$t('emailUsers_smtpAgreement')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="emailUsersStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="emailUsersStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
</Auth>
<PureTableBar :columns="columns" :title="$t('email_user_send_config')" @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>
@ -148,8 +143,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.email}?`" @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.email}?`" @confirm="onDelete(row)">
<template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }}

View File

@ -0,0 +1,10 @@
export const auth = {
// 分页查询
search: ['emailUsers::getEmailUsersList'],
// 添加操作
add: ['emailUsers::addEmailUsers'],
// 更新操作
update: ['emailUsers::updateEmailUsers'],
// 删除操作
deleted: ['emailUsers::deleteEmailUsers'],
};

View File

@ -13,40 +13,31 @@ import { selectUserinfo } from '@/components/Table/Userinfo/columns';
import { $t } from '@/plugins/i18n';
import { useMenuIconStore } from '@/store/configuration/menuIcon';
import MenuIconSelectIconName from '@/views/configuration/menuIcon/menu-icon-select-icon-name.vue';
import { auth } from '@/views/configuration/menuIcon/utils/auth';
import { hasAuth } from '@/router/utils';
const tableRef = ref();
const formRef = ref();
const menuIconStore = useMenuIconStore();
/**
* * 当前页改变时
*/
/** 当前页改变时 */
const onCurrentPageChange = async (value: number) => {
menuIconStore.pagination.currentPage = value;
await onSearch();
};
/**
* * 当分页发生变化
* @param value
*/
/** 当分页发生变化 */
const onPageSizeChange = async (value: number) => {
menuIconStore.pagination.pageSize = value;
await onSearch();
};
/**
* * 选择多行
* @param rows
*/
/** 选择多行 */
const onSelectionChange = (rows: Array<any>) => {
deleteIds.value = rows.map((row: any) => row.id);
};
/**
* 重置表单
* @param formEl
*/
/** 重置表单 */
const resetForm = async formEl => {
if (!formEl) return;
formEl.resetFields();
@ -60,25 +51,29 @@ onMounted(() => {
<template>
<div class="main">
<el-form ref="formRef" :inline="true" :model="menuIconStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<el-form-item :label="$t('menuIcon_iconCode')" prop="iconCode">
<el-input v-model="menuIconStore.form.iconCode" :placeholder="`${$t('input')} ${$t('iconCode')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('menuIcon_iconName')" prop="iconName">
<MenuIconSelectIconName :form-inline="menuIconStore.form" class="!w-[180px]" />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="menuIconStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
<Auth :value="auth.search">
<el-form ref="formRef" :inline="true" :model="menuIconStore.form" class="search-form bg-bg_color w-[99/100] pl-8 pt-[12px] overflow-auto">
<el-form-item :label="$t('menuIcon_iconCode')" prop="iconCode">
<el-input v-model="menuIconStore.form.iconCode" :placeholder="`${$t('input')} ${$t('iconCode')}`" class="!w-[180px]" clearable />
</el-form-item>
<el-form-item :label="$t('menuIcon_iconName')" prop="iconName">
<MenuIconSelectIconName :form-inline="menuIconStore.form" class="!w-[180px]" />
</el-form-item>
<el-form-item>
<el-button :icon="useRenderIcon('ri:search-line')" :loading="menuIconStore.loading" type="primary" @click="onSearch"> {{ $t('search') }} </el-button>
<el-button :icon="useRenderIcon(Refresh)" @click="resetForm(formRef)"> {{ $t('buttons.reset') }}</el-button>
</el-form-item>
</el-form>
</Auth>
<PureTableBar :columns="columns" :title="$t('menuIcon')" @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>
@ -123,8 +118,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.iconName}?`" @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.iconName}?`" @confirm="onDelete(row)">
<template #reference>
<el-button :icon="useRenderIcon(Delete)" :size="size" class="reset-margin" link type="primary">
{{ $t('delete') }}

View File

@ -0,0 +1,10 @@
export const auth = {
// 分页查询
search: ['menuIcon::getMenuIconList'],
// 添加操作
add: ['menuIcon::addMenuIcon'],
// 更新操作
update: ['menuIcon::updateMenuIcon'],
// 删除操作
deleted: ['menuIcon::deleteMenuIcon'],
};

View File

@ -7,6 +7,8 @@ import { form, onSearch, submitForm } from '@/views/configuration/webConifg/util
import { rules } from '@/views/configuration/webConifg/utils/columns';
import { userI18nTypeStore } from '@/store/i18n/i18nType';
import { usePublicHooks } from '@/views/hooks';
import { auth } from '@/views/configuration/webConifg/utils/auth';
import { hasAuth } from '@/router/utils';
const ruleFormRef = ref<FormInstance>();
const i18nTypeStore = userI18nTypeStore();
@ -216,7 +218,7 @@ onMounted(() => {
</re-col>
<!-- 提交内容 -->
<re-col :sm="24" :value="12" :xs="24">
<re-col v-if="hasAuth(auth.update)" :sm="24" :value="12" :xs="24">
<el-form-item>
<el-button type="primary" @click="submitForm(ruleFormRef)"> {{ $t('modifyingConfiguration') }}</el-button>
</el-form-item>
@ -224,5 +226,3 @@ onMounted(() => {
</el-row>
</el-form>
</template>
<style lang="scss" scoped></style>

View File

@ -0,0 +1,4 @@
export const auth = {
// 更新操作
update: ['config::updateWebConfiguration'],
};

View File

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

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -0,0 +1,8 @@
// 分页查询
export const search = [];
// 添加操作
export const add = [];
// 更新操作
export const update = [];
// 删除操作
export const deleted = [];

View File

@ -7,8 +7,6 @@ export const auth = {
search: ['files::getFilesList'],
// 删除操作
deleted: ['files::deleteFiles'],
// 上传
upload: ['files::upload'],
// 下载文件
downloadFilesByFileId: ['files::downloadFilesByFileId'],
};

View File

@ -1,8 +1,6 @@
export const auth = {
// 更新操作
update: ['router::updateMenu'],
// 修改菜单排序
updateMenuByIdWithRank: ['router::updateMenuByIdWithRank'],
// 添加操作
add: ['router::addMenu'],
// 分页查询
@ -13,8 +11,6 @@ export const auth = {
assignRolesToRouter: ['routerRole::assignRolesToRouter'],
// 批量为菜单添加角色
assignAddBatchRolesToRouter: ['routerRole::assignAddBatchRolesToRouter'],
// 根据菜单id获取所有角色
getRoleListByRouterId: ['routerRole::getRoleListByRouterId'],
// 清除选中菜单所有角色
clearAllRolesSelect: ['routerRole::clearAllRolesSelect'],
};

View File

@ -1,8 +1,6 @@
export const auth = {
// 分页查询
search: ['power::getPowerList'],
// 获取所有权限
getAllPowers: ['power::getAllPowers'],
// 添加操作
add: ['power::addPower'],
// 更新操作