fix: 🧩 添加消息提示;表格距离优化
This commit is contained in:
parent
6a77382098
commit
04ef0f7020
33
ReadMe.md
33
ReadMe.md
|
@ -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)
|
||||
|
|
|
@ -7,6 +7,7 @@ server {
|
|||
listen 80 ;
|
||||
listen [::]:80;
|
||||
server_name localhost;
|
||||
client_max_body_size 5M; # 最大文件上传设置
|
||||
|
||||
location / {
|
||||
root /etc/nginx/html;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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',
|
||||
});
|
||||
});
|
||||
}
|
||||
};
|
|
@ -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">
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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 },
|
||||
];
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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({});
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
/** 自定义表单规则校验 */
|
||||
|
|
|
@ -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' },
|
||||
];
|
||||
|
||||
// 添加规则
|
||||
|
|
Loading…
Reference in New Issue