fix: 🧩 添加消息提示;表格距离优化

This commit is contained in:
bunny 2024-12-29 22:23:41 +08:00
parent 6a77382098
commit 04ef0f7020
19 changed files with 206 additions and 159 deletions

View File

@ -10,12 +10,7 @@ Pure-admin文档https://pure-admin.github.io/pure-admin-doc
**线上地址**
- 正式线上预览地址http://bunny-web.site/#/welcome
- 线上地址目前使用的是90天的SSL证书可能会提示链接不安全忽略就好了
- 测试预览地址http://106.15.251.123/#/welcome
- 服务器到期时间12月30日
正式线上预览地址http://bunny-web.site/#/welcome
**打包视频**
@ -195,8 +190,8 @@ docker run -d \
```bash
# 创建3306配置文件
sudo mkdir -p /home/bunny/docker/docker_data/mysql/mysql_master/etc
sudo vim /home/bunny/docker/docker_data/mysql/mysql_master/etc/my.cnf
sudo mkdir -p ~/docker/docker_data/mysql/mysql_master/etc
sudo vim ~/docker/docker_data/mysql/mysql_master/etc/my.cnf
# 创建3304配置文件
sudo mkdir -p /home/bunny/docker/docker_data/mysql/slave_3304/etc
@ -543,6 +538,10 @@ public Authentication attemptAuthentication(HttpServletRequest request, HttpServ
![image-20241105213922824](http://116.196.101.14:9000/docs/image-20241105213922824.png)
消息提醒在页面刷新时会出现这样
![image-20241229214535717](http://116.196.101.14:9000/docs/image-20241229214535717.png)
### 用户管理
![image-20241106002713514](http://116.196.101.14:9000/docs/image-20241106002713514.png)
@ -887,6 +886,18 @@ public class MenuIconVo extends BaseUserVo {
![image-20241106142001190](http://116.196.101.14:9000/docs/image-20241106142001190.png)
#### 主题颜色
后端做了Hash值校验如果是RGB会造成颜色显示有些问题比如使用纯色的按钮想下面的这种的鼠标hover事件会变透明因为无法计算Hash值所以在修改颜色值时一定要保证是Hash值
![image-20241229214049079](http://116.196.101.14:9000/docs/image-20241229214049079.png)
![image-20241229214217968](http://116.196.101.14:9000/docs/image-20241229214217968.png)
修改完成的示例
![image-20241229214329544](http://116.196.101.14:9000/docs/image-20241229214329544.png)
### 系统监控
#### 服务监控
@ -913,6 +924,10 @@ public class MenuIconVo extends BaseUserVo {
![](http://116.196.101.14:9000/docs/image-20241106142449033-1730874298898-1.png)
#### 示例显示
![image-20241229220003779](http://116.196.101.14:9000/docs/image-20241229220003779.png)
### 多语言管理
![image-20241106142531047](http://116.196.101.14:9000/docs/image-20241106142531047.png)
@ -921,6 +936,8 @@ public class MenuIconVo extends BaseUserVo {
### 日志管理
存储在MySQL中如果想做优化可以放在MongoDB中
![image-20241106142606017](http://116.196.101.14:9000/docs/image-20241106142606017.png)
![image-20241106142614917](http://116.196.101.14:9000/docs/image-20241106142614917.png)

View File

@ -7,6 +7,7 @@ server {
listen 80 ;
listen [::]:80;
server_name localhost;
client_max_body_size 5M; # 最大文件上传设置
location / {
root /etc/nginx/html;

View File

@ -49,7 +49,8 @@ function goMessageDetail(message: ListItem) {
<template>
<div class="notice-container border-b-[1px] border-solid border-[#f0f0f0] dark:border-[#303030]" @click="goMessageDetail(noticeItem)">
<el-avatar v-if="noticeItem.cover" :size="30" :src="noticeItem.cover" class="notice-container-avatar" />
<!--<el-avatar v-if="noticeItem.cover" :size="30" :src="noticeItem.cover" class="notice-container-avatar" />-->
<img v-if="noticeItem.cover" :src="noticeItem.cover" alt="" class="notice-container-avatar" />
<div class="notice-container-text">
<div class="notice-text-title text-[#000000d9] dark:text-white">
<el-tooltip :content="noticeItem.title" :disabled="!titleTooltip" :effect="tooltipEffect" :enterable="!isMobile" placement="top-start" popper-class="notice-title-popper">
@ -89,7 +90,9 @@ function goMessageDetail(message: ListItem) {
// border-bottom: 1px solid #f0f0f0;
.notice-container-avatar {
margin-right: 16px;
width: 30px;
margin-right: 8px;
object-fit: cover;
background: #fff;
}

View File

@ -2,7 +2,7 @@ import { $t } from '@/plugins/i18n';
import { computed, ref } from 'vue';
import { fetchGetUserMessageList } from '@/api/v1/message/messageUser';
import { throttle } from '@pureadmin/utils';
import { useWebNotification } from '@vueuse/core';
import { ElNotification, ElTag } from 'element-plus';
export interface ListItem {
messageId: string;
@ -92,18 +92,7 @@ export const getAllMessageList = async () => {
];
// 调用浏览器系统通知
const { isSupported, show, close } = useWebNotification({
title: system[0]?.title,
dir: 'auto',
lang: 'zh',
renotify: true,
tag: system[0]?.extra,
});
if (system.length <= 0 || !isSupported.value) {
close();
return;
}
await show();
showNotification([...system, ...notify, ...notifications]);
};
/** 计算消息数量 */
@ -118,3 +107,24 @@ export const computedNoticesNum = throttle(async () => {
activeKey.value = noticesData.value[0]?.key;
// 定时刷新
}, 666);
/** 显示通知消息 */
const showNotification = NotificationList => {
if (NotificationList.length > 0) {
NotificationList.forEach(message => {
ElNotification({
title: message?.title,
message: (
<div class='flex '>
<img src={message.cover} alt='' style={{ width: '50px', height: '50px', objectFit: 'cover' }} />
<div class='flex justify-between mt-3 mx-2'>
<span class='mr-2'>{message.description}</span>
{message.status && <ElTag type={message.status}>{message?.extra}</ElTag>}
</div>
</div>
),
position: 'bottom-right',
});
});
}
};

View File

@ -19,7 +19,6 @@ onMounted(() => {
<el-dropdown placement="bottom-end" trigger="click">
<span
:class="['dropdown-badge', 'navbar-bg-hover', 'select-none', Number(noticesNum) !== 0 && 'mr-[10px]']"
@click="computedNoticesNum"
@dblclick="$router.push(`/message-detail/${messageTypeStore?.allMessageTypeList[0]?.messageType}`)"
>
<el-badge :max="99" :value="Number(noticesNum) === 0 ? '' : noticesNum">

View File

@ -5,17 +5,17 @@ import { ElTag } from 'element-plus';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 模板名称
{ label: $t('emailTemplate_templateName'), prop: 'templateName' },
{ label: $t('emailTemplate_templateName'), prop: 'templateName', minWidth: 150 },
// 模板名称
{ label: $t('emailTemplate_emailUser'), prop: 'emailUser', slot: 'emailUser' },
{ label: $t('emailTemplate_emailUser'), prop: 'emailUser', slot: 'emailUser', minWidth: 180 },
// 主题
{ label: $t('emailTemplate_subject'), prop: 'subject' },
{ label: $t('emailTemplate_subject'), prop: 'subject', minWidth: 200 },
// 邮件内容
{ label: $t('emailTemplate_body'), prop: 'body' },
{ label: $t('emailTemplate_body'), prop: 'body', minWidth: 150 },
// 邮件类型
{ label: $t('emailTemplate_type'), prop: 'summary' },
{ label: $t('emailTemplate_type'), prop: 'summary', minWidth: 150 },
// 是否默认
{
label: $t('isDefault'),
@ -29,12 +29,13 @@ export const columns: TableColumnList = [
</ElTag>
);
},
minWidth: 100,
},
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则

View File

@ -4,26 +4,26 @@ import { $t } from '@/plugins/i18n';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 邮箱
{ label: $t('emailUsers_email'), prop: 'email' },
{ label: $t('emailUsers_email'), prop: 'email', minWidth: 180 },
// 密码
{ label: $t('emailUsers_password'), prop: 'password' },
{ label: $t('emailUsers_password'), prop: 'password', minWidth: 160 },
// Host地址
{ label: $t('emailUsers_host'), prop: 'host' },
{ label: $t('emailUsers_host'), prop: 'host', minWidth: 150 },
// 端口号
{ label: $t('emailUsers_port'), prop: 'port', width: 90 },
{ label: $t('emailUsers_port'), prop: 'port', minWidth: 90 },
// 邮箱协议
{ label: $t('emailUsers_smtpAgreement'), prop: 'smtpAgreement', width: 100 },
{ label: $t('emailUsers_smtpAgreement'), prop: 'smtpAgreement', minWidth: 115 },
// 是否启用SSL
{ label: $t('emailUsers_isDefault'), prop: 'isDefault', slot: 'isDefault', width: 100 },
{ label: $t('emailUsers_isDefault'), prop: 'isDefault', slot: 'isDefault', minWidth: 105 },
// 是否为默认邮件
{ label: 'SSL', prop: 'openSSL', slot: 'openSSL', width: 100 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: 'SSL', prop: 'openSSL', slot: 'openSSL', minWidth: 100 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则

View File

@ -162,7 +162,7 @@ onMounted(() => {
<!-- 主题颜色 -->
<re-col :sm="24" :value="12" :xs="24">
<el-form-item :label="$t('epThemeColor')" prop="epThemeColor">
<el-color-picker v-model="form.epThemeColor" show-alpha />
<el-color-picker v-model="form.epThemeColor" />
</el-form-item>
</re-col>

View File

@ -5,6 +5,20 @@ import RichEditor from '@/views/message-management/message-editing/rich-editor.v
import { formState } from '@/views/message-management/message-editing/utils/hooks';
import MarkdownEditor from '@/views/message-management/message-editing/markdown-editor.vue';
import { settingLR } from '@/views/message-management/message-editing/utils/columns';
import { onMounted } from 'vue';
/** 退出提醒 */
const exitAlter = () => {
window.addEventListener('beforeunload', function (e) {
e.preventDefault();
//
e.returnValue = '';
});
};
onMounted(() => {
exitAlter();
});
</script>
<template>

View File

@ -4,28 +4,28 @@ import { ElTag, ElText } from 'element-plus';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 消息标题
{ label: $t('title'), prop: 'title' },
{ label: $t('title'), prop: 'title', minWidth: 150 },
// 消息简介
{ label: $t('summary'), prop: 'summary' },
{ label: $t('summary'), prop: 'summary', minWidth: 200 },
// 发送人昵称
{ label: $t('sendNickname'), prop: 'sendNickname', slot: 'sendNickname', width: 130 },
{ label: $t('sendNickname'), prop: 'sendNickname', slot: 'sendNickname', minWidth: 130 },
// 接受人昵称
{ label: $t('receivedUserNickname'), prop: 'receivedUserNickname', slot: 'receivedUserNickname', width: 130 },
{ label: $t('receivedUserNickname'), prop: 'receivedUserNickname', slot: 'receivedUserNickname', minWidth: 150 },
// 消息类型
{ label: $t('messageType'), prop: 'messageType', slot: 'messageType', width: 130 },
{ label: $t('messageType'), prop: 'messageType', slot: 'messageType', minWidth: 130 },
// 编辑器类型
{
label: $t('editorType'),
prop: 'editorType',
width: 130,
minWidth: 130,
formatter({ editorType }) {
return editorType === 'rich' ? <ElText type={'info'}>{editorType}</ElText> : <ElText type={'warning'}>{editorType}</ElText>;
},
},
// 封面
{ label: $t('cover'), prop: 'cover', slot: 'cover', width: 80 },
{ label: $t('cover'), prop: 'cover', slot: 'cover', minWidth: 80 },
// 消息等级
{
label: $t('level'),
@ -37,10 +37,10 @@ export const columns: TableColumnList = [
</ElTag>
);
},
width: 100,
minWidth: 130,
},
// 消息等级详情
{ label: $t('extra'), prop: 'extra', slot: 'extra', width: 130 },
{ label: $t('extra'), prop: 'extra', slot: 'extra', minWidth: 230 },
// 0:未读 1:已读
{
label: $t('status'),
@ -56,10 +56,10 @@ export const columns: TableColumnList = [
</ElTag>
);
},
width: 80,
minWidth: 80,
},
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
];

View File

@ -5,21 +5,21 @@ import { ElTag, type FormRules } from 'element-plus';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 消息标题
{ label: $t('title'), prop: 'title' },
{ label: $t('title'), prop: 'title', minWidth: 150 },
// 消息简介
{ label: $t('summary'), prop: 'summary' },
{ label: $t('summary'), prop: 'summary', minWidth: 200 },
// 发送人昵称
{ label: $t('sendNickname'), prop: 'sendNickname', slot: 'sendNickname' },
{ label: $t('sendNickname'), prop: 'sendNickname', slot: 'sendNickname', minWidth: 130 },
// 接受人昵称
{ label: $t('receivedUserNickname'), prop: 'receivedUserNickname' },
{ label: $t('receivedUserNickname'), prop: 'receivedUserNickname', minWidth: 150 },
// 消息类型
{ label: $t('messageType'), prop: 'messageType', slot: 'messageType' },
{ label: $t('messageType'), prop: 'messageType', slot: 'messageType', minWidth: 130 },
// 编辑器类型
{ label: $t('editorType'), prop: 'editorType' },
{ label: $t('editorType'), prop: 'editorType', minWidth: 105 },
// 封面
{ label: $t('cover'), prop: 'cover', slot: 'cover', width: 80 },
{ label: $t('cover'), prop: 'cover', slot: 'cover', minWidth: 80 },
// 消息等级
{
label: $t('level'),
@ -31,15 +31,15 @@ export const columns: TableColumnList = [
</ElTag>
);
},
width: 100,
minWidth: 130,
},
// 消息等级详情
{ label: $t('extra'), prop: 'extra', slot: 'extra' },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 150, slot: 'operation' },
{ label: $t('extra'), prop: 'extra', slot: 'extra', minWidth: 230 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 150, slot: 'operation' },
];
// 添加规则

View File

@ -4,26 +4,26 @@ import { reactive } from 'vue';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 任务名称
{ label: $t('quartzExecuteLog_jobName'), prop: 'jobName', width: 100 },
{ label: $t('quartzExecuteLog_jobName'), prop: 'jobName', minWidth: 100 },
// 任务分组
{ label: $t('quartzExecuteLog_jobGroup'), prop: 'jobGroup', width: 100 },
{ label: $t('quartzExecuteLog_jobGroup'), prop: 'jobGroup', minWidth: 100 },
// 执行任务类名
{ label: $t('quartzExecuteLog_jobClassName'), prop: 'jobClassName', width: 300 },
{ label: $t('quartzExecuteLog_jobClassName'), prop: 'jobClassName', minWidth: 300 },
// 执行任务core表达式
{ label: $t('quartzExecuteLog_cronExpression'), prop: 'cronExpression', width: 120 },
{ label: $t('quartzExecuteLog_cronExpression'), prop: 'cronExpression', minWidth: 120 },
// 触发器名称
{ label: $t('quartzExecuteLog_triggerName'), prop: 'triggerName', width: 100 },
{ label: $t('quartzExecuteLog_triggerName'), prop: 'triggerName', minWidth: 100 },
// 执行结果
{ label: $t('quartzExecuteLog_executeResult'), prop: 'executeResult', minWidth: 410, slot: 'executeResult' },
// 执行时间
{ label: $t('quartzExecuteLog_duration'), prop: 'duration', width: 100 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 160, slot: 'operation' },
{ label: $t('quartzExecuteLog_duration'), prop: 'duration', minWidth: 100 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 160, slot: 'operation' },
];
// 添加规则
export const rules = reactive({});

View File

@ -4,26 +4,26 @@ import { $t } from '@/plugins/i18n';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 用户名
{ label: $t('userLoginLog_username'), prop: 'username', width: 180 },
{ label: $t('userLoginLog_username'), prop: 'username', minWidth: 180 },
// 登录Ip
{ label: $t('userLoginLog_ipAddress'), prop: 'ipAddress', width: 130 },
{ label: $t('userLoginLog_ipAddress'), prop: 'ipAddress', minWidth: 130 },
// 登录Ip归属地
{ label: $t('userLoginLog_ipRegion'), prop: 'ipRegion', width: 160 },
{ label: $t('userLoginLog_ipRegion'), prop: 'ipRegion', minWidth: 160 },
// 登录时代理
{ label: $t('userLoginLog_userAgent'), prop: 'userAgent' },
{ label: $t('userLoginLog_userAgent'), prop: 'userAgent', minWidth: 200 },
// 操作类型
{ label: $t('userLoginLog_type'), prop: 'type', width: 130 },
{ label: $t('userLoginLog_type'), prop: 'type', minWidth: 130 },
// 标识客户端是否是通过Ajax发送请求的
{ label: $t('userLoginLog_xRequestedWith'), prop: 'xRequestedWith', width: 150 },
{ label: $t('userLoginLog_xRequestedWith'), prop: 'xRequestedWith', minWidth: 150 },
// 登录token
{ label: $t('userLoginLog_token'), prop: 'token', width: 200 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 160, slot: 'operation' },
{ label: $t('userLoginLog_token'), prop: 'token', minWidth: 200 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 160, slot: 'operation' },
];
// 添加规则

View File

@ -3,7 +3,7 @@ import { $t } from '@/plugins/i18n';
// 表格列
export const columns: TableColumnList = [
{ type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: '序号', minWidth: 60 },
// 任务名称
{ label: $t('schedulers_jobName'), prop: 'jobName' },
// 任务分组
@ -18,7 +18,7 @@ export const columns: TableColumnList = [
{ label: $t('schedulers_triggerState'), prop: 'triggerState' },
// corn表达式
{ label: $t('schedulers_cronExpression'), prop: 'cronExpression' },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则

View File

@ -9,32 +9,32 @@ export const isAddUserinfo = ref(false);
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), minWidth: 60 },
// 用户名
{ label: $t('adminUser_username'), prop: 'username', width: 260 },
{ label: $t('adminUser_username'), prop: 'username', minWidth: 260 },
// 状态
{ label: $t('adminUser_status'), prop: 'status', slot: 'status' },
{ label: $t('adminUser_status'), prop: 'status', slot: 'status', minWidth: 100 },
// 昵称
{ label: $t('adminUser_nickname'), prop: 'nickname', width: 260 },
{ label: $t('adminUser_nickname'), prop: 'nickname', minWidth: 260 },
// 邮箱
{ label: $t('adminUser_email'), prop: 'email', width: 260 },
{ label: $t('adminUser_email'), prop: 'email', minWidth: 260 },
// 手机号
{ label: $t('adminUser_phone'), prop: 'phone', width: 160 },
{ label: $t('adminUser_phone'), prop: 'phone', minWidth: 160 },
// 头像
{ label: $t('adminUser_avatar'), prop: 'avatar', slot: 'avatar' },
{ label: $t('adminUser_avatar'), prop: 'avatar', slot: 'avatar', minWidth: 90 },
// 性别
{ label: $t('adminUser_sex'), prop: 'sex', slot: 'sex' },
{ label: $t('adminUser_sex'), prop: 'sex', slot: 'sex', minWidth: 90 },
// 个人描述
{ label: $t('adminUser_summary'), prop: 'summary', width: 460 },
{ label: $t('adminUser_summary'), prop: 'summary', minWidth: 460 },
// 登录的IP地址
{ label: $t('lastLoginIp'), prop: 'ipAddress', width: 130 },
{ label: $t('lastLoginIp'), prop: 'ipAddress', minWidth: 130 },
// IP地区
{ label: $t('lastLoginIpAddress'), prop: 'ipRegion', width: 130 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: $t('lastLoginIpAddress'), prop: 'ipRegion', minWidth: 130 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则

View File

@ -4,18 +4,18 @@ import { $t } from '@/plugins/i18n';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), minWidth: 60 },
// 部门名称
{ label: $t('dept_deptName'), prop: 'deptName', width: 160 },
{ label: $t('dept_deptName'), prop: 'deptName', minWidth: 200 },
// 管理者
{ label: $t('dept_manager'), prop: 'manager' },
{ label: $t('dept_manager'), prop: 'manager', minWidth: 220 },
// 部门简介
{ label: $t('dept_summary'), prop: 'summary', width: 360 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: $t('dept_summary'), prop: 'summary', minWidth: 360 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则

View File

@ -4,20 +4,20 @@ import { $t } from '@/plugins/i18n';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), minWidth: 60 },
// 文件的名称
{ label: $t('files_filename'), prop: 'filename', width: 400 },
{ label: $t('files_filename'), prop: 'filename', minWidth: 280 },
// 文件在服务器上的存储路径
{ label: $t('files_filepath'), prop: 'filepath' },
{ label: $t('files_filepath'), prop: 'filepath', minWidth: 280 },
// 文件的MIME类型
{ label: $t('files_fileType'), prop: 'fileType', width: 100 },
{ label: $t('files_fileType'), prop: 'fileType', minWidth: 180 },
// 下载数量
{ label: $t('files_downloadCount'), prop: 'downloadCount', width: 90 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, width: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, width: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: $t('files_downloadCount'), prop: 'downloadCount', minWidth: 115 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则

View File

@ -49,30 +49,32 @@ export const columns: TableColumnList = [
<span>{$t(row.title)}</span>
</>
),
minWidth: 170,
},
{
label: $t('menuType'),
prop: 'menuType',
width: 100,
minWidth: 130,
cellRenderer: ({ row, props }) => (
<ElTag size={props.size} type={getMenuType(row.menuType)} effect='plain'>
{getMenuType(row.menuType, true)}
</ElTag>
),
},
{ label: $t('routerPath'), prop: 'path' },
{ label: $t('routerPath'), prop: 'path', minWidth: 230 },
{
label: $t('componentPath'),
prop: 'component',
formatter: ({ path, component }) => (isAllEmpty(component) ? path : component),
minWidth: 200,
},
{ label: $t('sort'), prop: 'rank', width: 80, slot: 'rank' },
{ label: $t('visible'), prop: 'visible', slot: 'visible', width: 100 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 310, slot: 'operation' },
{ label: $t('sort'), prop: 'rank', minWidth: 80, slot: 'rank' },
{ label: $t('visible'), prop: 'visible', slot: 'visible', minWidth: 100 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 310, slot: 'operation' },
];
/** 自定义表单规则校验 */

View File

@ -5,18 +5,18 @@ import type { FormRules } from 'element-plus';
// 表格列
export const columns: TableColumnList = [
{ type: 'selection', align: 'left' },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), width: 60 },
{ type: 'index', index: (index: number) => index + 1, label: $t('index'), minWidth: 60 },
// 权限编码
{ label: $t('power_powerCode'), prop: 'powerCode' },
{ label: $t('power_powerCode'), prop: 'powerCode', minWidth: 350 },
// 权限名称
{ label: $t('power_powerName'), prop: 'powerName' },
{ label: $t('power_powerName'), prop: 'powerName', minWidth: 320 },
// 请求路径
{ label: $t('power_requestUrl'), prop: 'requestUrl' },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', width: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 130 },
{ label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' },
{ label: $t('power_requestUrl'), prop: 'requestUrl', minWidth: 360 },
{ label: $t('table.updateTime'), prop: 'updateTime', sortable: true, minWidth: 160 },
{ label: $t('table.createTime'), prop: 'createTime', sortable: true, minWidth: 160 },
{ label: $t('table.createUser'), prop: 'createUser', slot: 'createUser', minWidth: 130 },
{ label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', minWidth: 130 },
{ label: $t('table.operation'), fixed: 'right', minWidth: 210, slot: 'operation' },
];
// 添加规则