diff --git a/src/api/v1/messageType.ts b/src/api/v1/messageType.ts new file mode 100644 index 0000000..2f91322 --- /dev/null +++ b/src/api/v1/messageType.ts @@ -0,0 +1,27 @@ +import { http } from '@/api/service/request'; +import type { BaseResult, ResultTable } from '@/api/service/types'; + +/** 系统消息类型---获取系统消息类型列表 */ +export const fetchGetMessageTypeList = (data: any) => { + return http.request>('get', `messageType/getMessageTypeList/${data.currentPage}/${data.pageSize}`, { params: data }); +}; + +/** 系统消息类型---获取系统消息类型列表 */ +export const fetchGetAllMessageTypes = () => { + return http.request>('get', '/messageType/noManage/getAllMessageTypes'); +}; + +/** 系统消息类型---添加系统消息类型 */ +export const fetchAddMessageType = (data: any) => { + return http.request>('post', 'messageType/addMessageType', { data }); +}; + +/** 系统消息类型---更新系统消息类型 */ +export const fetchUpdateMessageType = (data: any) => { + return http.request>('put', 'messageType/updateMessageType', { data }); +}; + +/** 系统消息类型---删除系统消息类型 */ +export const fetchDeleteMessageType = (data: any) => { + return http.request>('delete', 'messageType/deleteMessageType', { data }); +}; diff --git a/src/enums/baseConstant.ts b/src/enums/baseConstant.ts index 08f4d12..734988f 100644 --- a/src/enums/baseConstant.ts +++ b/src/enums/baseConstant.ts @@ -8,30 +8,30 @@ export const isDefaultOptions = [ { value: false, label: '否' }, ]; -/** - * * 是否显示 - */ +/** 是否显示 */ export const isDefaultVisibleOptions = [ { value: true, label: '显示' }, { value: false, label: '不显示' }, ]; -/** - * * 性别 - */ +/** 性别 */ export const sexConstant = [ { value: 1, label: '男' }, { value: 0, label: '女' }, ]; -/** - * * 默认状态 - */ +/** 默认状态 */ export const userStatus = [ { value: 0, label: '启用' }, { value: 1, label: '禁用' }, ]; +/** 是否启用状态 */ +export const enabledOrNotStatus = [ + { value: true, label: '启用' }, + { value: false, label: '禁用' }, +]; + /** * * 分页默认数组个数 */ diff --git a/src/store/message/messageType.ts b/src/store/message/messageType.ts new file mode 100644 index 0000000..73f654f --- /dev/null +++ b/src/store/message/messageType.ts @@ -0,0 +1,73 @@ +import { defineStore } from 'pinia'; +import { fetchAddMessageType, fetchDeleteMessageType, fetchGetMessageTypeList, fetchUpdateMessageType } from '@/api/v1/messageType'; +import { pageSizes } from '@/enums/baseConstant'; +import { storeMessage } from '@/utils/message'; +import { storePagination } from '@/store/useStorePagination'; + +/** + * 系统消息类型 Store + */ +export const useMessageTypeStore = defineStore('messageTypeStore', { + state() { + return { + // 系统消息类型列表 + datalist: [], + // 查询表单 + form: { + // 1:启用 0:禁用 + status: undefined, + // 消息名称 + messageName: undefined, + // 消息类型 + messageType: undefined, + // 消息备注 + summary: undefined, + }, + // 分页查询结果 + pagination: { + currentPage: 1, + pageSize: 150, + total: 100, + pageSizes, + }, + // 加载 + loading: false, + }; + }, + getters: {}, + actions: { + /** 获取系统消息类型 */ + async getMessageTypeList() { + // 整理请求参数 + const data = { ...this.pagination, ...this.form }; + delete data.pageSizes; + delete data.total; + delete data.background; + + // 获取系统消息类型列表 + const result = await fetchGetMessageTypeList(data); + + // 公共页面函数hook + const pagination = storePagination.bind(this); + return pagination(result); + }, + + /** 添加系统消息类型 */ + async addMessageType(data: any) { + const result = await fetchAddMessageType(data); + return storeMessage(result); + }, + + /** 修改系统消息类型 */ + async updateMessageType(data: any) { + const result = await fetchUpdateMessageType(data); + return storeMessage(result); + }, + + /** 删除系统消息类型 */ + async deleteMessageType(data: any) { + const result = await fetchDeleteMessageType(data); + return storeMessage(result); + }, + }, +}); diff --git a/src/views/message/messageEditing/index.vue b/src/views/message/messageEditing/index.vue new file mode 100644 index 0000000..ff6557d --- /dev/null +++ b/src/views/message/messageEditing/index.vue @@ -0,0 +1,5 @@ + + + diff --git a/src/views/message/messageType/index.vue b/src/views/message/messageType/index.vue new file mode 100644 index 0000000..50cc9ec --- /dev/null +++ b/src/views/message/messageType/index.vue @@ -0,0 +1,152 @@ + + + diff --git a/src/views/message/messageType/message-type-dialog.vue b/src/views/message/messageType/message-type-dialog.vue new file mode 100644 index 0000000..bc2814b --- /dev/null +++ b/src/views/message/messageType/message-type-dialog.vue @@ -0,0 +1,52 @@ + + + diff --git a/src/views/message/messageType/utils/columns.tsx b/src/views/message/messageType/utils/columns.tsx new file mode 100644 index 0000000..dabaee8 --- /dev/null +++ b/src/views/message/messageType/utils/columns.tsx @@ -0,0 +1,37 @@ +import { reactive } from 'vue'; +import { $t } from '@/plugins/i18n'; +import type { FormRules } from 'element-plus'; + +// 表格列 +export const columns: TableColumnList = [ + { type: 'selection', align: 'left' }, + { type: 'index', index: (index: number) => index + 1, label: '序号', width: 60 }, + // 是否启用 + { label: $t('status'), prop: 'status', slot: 'status' }, + // 消息名称 + { label: $t('messageName'), prop: 'messageName' }, + // 消息类型 + { label: $t('messageType'), prop: 'messageType' }, + // 消息备注 + { label: $t('summary'), prop: 'summary' }, + { 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: 90 }, + { label: $t('table.updateUser'), prop: 'updateUser', slot: 'updateUser', width: 90 }, + { label: $t('table.operation'), fixed: 'right', width: 210, slot: 'operation' }, +]; + +// 添加规则 +export const rules = reactive({ + // 消息名称 + messageName: [{ required: true, message: `${$t('input')}${$t('messageName')}`, trigger: 'blur' }], + // 消息类型 + messageType: [ + { + required: true, + message: `${$t('input')}${$t('messageType')}`, + trigger: 'blur', + }, + { pattern: /^[a-z]+$/i, message: `${$t('inputRuleMustBeEnglish')}`, trigger: ['blur', 'change'] }, + ], +}); diff --git a/src/views/message/messageType/utils/hooks.ts b/src/views/message/messageType/utils/hooks.ts new file mode 100644 index 0000000..db8a469 --- /dev/null +++ b/src/views/message/messageType/utils/hooks.ts @@ -0,0 +1,133 @@ +import { addDialog } from '@/components/BaseDialog/index'; +import MessageTypeDialog from '@/views/message/messageType/message-type-dialog.vue'; +import { useMessageTypeStore } from '@/store/message/messageType'; +import { h, ref } from 'vue'; +import { message, messageBox } from '@/utils/message'; +import type { FormItemProps } from '@/views/message/messageType/utils/types'; +import { $t } from '@/plugins/i18n'; +import DeleteBatchDialog from '@/components/Table/DeleteBatchDialog.vue'; + +export const formRef = ref(); +// 删除ids +export const deleteIds = ref([]); +const messageTypeStore = useMessageTypeStore(); + +/** 搜索初始化系统消息类型 */ +export async function onSearch() { + messageTypeStore.loading = true; + await messageTypeStore.getMessageTypeList(); + messageTypeStore.loading = false; +} + +/** 添加系统消息类型 */ +export function onAdd() { + addDialog({ + title: `${$t('addNew')}${$t('messageType')}`, + width: '30%', + props: { + formInline: { + status: true, + messageName: undefined, + messageType: undefined, + summary: undefined, + }, + }, + draggable: true, + fullscreenIcon: true, + closeOnClickModal: false, + contentRenderer: () => h(MessageTypeDialog, { ref: formRef }), + beforeSure: (done, { options }) => { + const form = options.props.formInline as FormItemProps; + formRef.value.formRef.validate(async (valid: any) => { + if (!valid) return; + + const result = await messageTypeStore.addMessageType(form); + if (!result) return; + done(); + await onSearch(); + }); + }, + }); +} + +/** + * * 更新系统消息类型 + * @param row + */ +export function onUpdate(row: any) { + addDialog({ + title: `${$t('modify')}${$t('messageType')}`, + width: '30%', + props: { + formInline: { + status: row.status, + messageName: row.messageName, + messageType: row.messageType, + summary: row.summary, + }, + }, + draggable: true, + fullscreenIcon: true, + closeOnClickModal: false, + contentRenderer: () => h(MessageTypeDialog, { ref: formRef }), + beforeSure: (done, { options }) => { + const form = options.props.formInline as FormItemProps; + formRef.value.formRef.validate(async (valid: any) => { + if (!valid) return; + + const result = await messageTypeStore.updateMessageType({ ...form, id: row.id }); + if (!result) return; + done(); + await onSearch(); + }); + }, + }); +} + +/** 删除系统消息类型 */ +export const onDelete = async (row: any) => { + const id = row.id; + + // 是否确认删除 + const result = await messageBox({ + title: $t('confirmDelete'), + showMessage: false, + confirmMessage: undefined, + cancelMessage: $t('cancel_delete'), + }); + if (!result) return; + + // 删除数据 + await messageTypeStore.deleteMessageType([id]); + await onSearch(); +}; + +/** 批量删除 */ +export const onDeleteBatch = async () => { + const ids = deleteIds.value; + const formDeletedBatchRef = ref(); + + addDialog({ + title: $t('deleteBatchTip'), + width: '30%', + props: { formInline: { confirmText: '' } }, + draggable: true, + fullscreenIcon: true, + closeOnClickModal: false, + contentRenderer: () => h(DeleteBatchDialog, { ref: formDeletedBatchRef }), + beforeSure: (done, { options }) => { + formDeletedBatchRef.value.formDeletedBatchRef.validate(async (valid: any) => { + if (!valid) return; + + const text = options.props.formInline.confirmText.toLowerCase(); + if (text === 'yes' || text === 'y') { + // 删除数据 + await messageTypeStore.deleteMessageType(ids); + await onSearch(); + + done(); + } else message($t('deleteBatchTip'), { type: 'warning' }); + }); + }, + }); +}; diff --git a/src/views/message/messageType/utils/types.ts b/src/views/message/messageType/utils/types.ts new file mode 100644 index 0000000..9014654 --- /dev/null +++ b/src/views/message/messageType/utils/types.ts @@ -0,0 +1,16 @@ +// 添加或者修改表单元素 +export interface FormItemProps { + // 1:启用 0:禁用 + status: boolean; + // 消息名称 + messageName: string; + // 消息类型 + messageType: string; + // 消息备注 + summary: string; +} + +// 添加或修改表单Props +export interface FormProps { + formInline: FormItemProps; +} diff --git a/src/views/monitor/server/component/system-cpu.vue b/src/views/monitor/server/component/system-cpu.vue index 0828c72..2d5c44d 100644 --- a/src/views/monitor/server/component/system-cpu.vue +++ b/src/views/monitor/server/component/system-cpu.vue @@ -15,6 +15,8 @@ const myChart = ref(); // 初始化ECharts const seriesData = ref([]); const xSeriesData = ref([]); +// 数据显示长度 +const dateDisplayLength = ref(20); const option = reactive({ tooltip: { @@ -46,9 +48,11 @@ const option = reactive({ type: 'line', areaStyle: {}, animationDelay: function (idx) { - return idx * 10; // 设置动画延迟时间 + // 设置动画延迟时间 + return idx * 10; }, - animationDuration: 1000, // 设置动画持续时间 + // 设置动画持续时间 + animationDuration: 1000, }, ], animationDuration: 666, @@ -60,9 +64,9 @@ const option = reactive({ /** 初始化数据 */ const onSearch = async () => { // 保留数组中的最新10条数据 - if (seriesData.value.length > 5) { - seriesData.value = seriesData.value.slice(-5); - xSeriesData.value = xSeriesData.value.slice(-5); + if (seriesData.value.length > dateDisplayLength.value) { + seriesData.value = seriesData.value.slice(-dateDisplayLength.value); + xSeriesData.value = xSeriesData.value.slice(-dateDisplayLength.value); } // 获取数据 diff --git a/src/views/monitor/server/component/system-jvm-cpu.vue b/src/views/monitor/server/component/system-jvm-cpu.vue index 8bf7c1b..fd372cd 100644 --- a/src/views/monitor/server/component/system-jvm-cpu.vue +++ b/src/views/monitor/server/component/system-jvm-cpu.vue @@ -15,6 +15,8 @@ const myChart = ref(); // 初始化ECharts const seriesData = ref([]); const xSeriesData = ref([]); +// 数据显示长度 +const dateDisplayLength = ref(20); const option = reactive({ tooltip: { @@ -45,9 +47,11 @@ const option = reactive({ type: 'line', areaStyle: {}, animationDelay: function (idx) { - return idx * 10; // 设置动画延迟时间 + // 设置动画延迟时间 + return idx * 10; }, - animationDuration: 1000, // 设置动画持续时间 + // 设置动画持续时间 + animationDuration: 1000, }, ], animationDuration: 666, @@ -59,9 +63,9 @@ const option = reactive({ /** 初始化数据 */ const onSearch = async () => { // 保留数组中的最新10条数据 - if (seriesData.value.length > 5) { - seriesData.value = seriesData.value.slice(-5); - xSeriesData.value = xSeriesData.value.slice(-5); + if (seriesData.value.length > dateDisplayLength.value) { + seriesData.value = seriesData.value.slice(-dateDisplayLength.value); + xSeriesData.value = xSeriesData.value.slice(-dateDisplayLength.value); } // 获取数据