diff --git a/src/api/system/notify/template.ts b/src/api/system/notify/template.ts index ebf8a9e8..f5954156 100644 --- a/src/api/system/notify/template.ts +++ b/src/api/system/notify/template.ts @@ -34,3 +34,30 @@ export function listSimplePosts() { export function exportNotifyTemplateExcel(params) { return defHttp.download({ url: '/system/notify-template/export-excel', params }, '导出站内信模板.xls') } + +export type SendNotifyParam = { + userId: number + templateCode: string + templateParams: { + [key: string]: string + } +} + +export type NotifyTemplate = { + name: string + code: string + type: number + nickname: string + content: string + status: number + remark?: any + id: number + params: string[] + createTime: number + key: string +} + +// 发送 +export function sendNotify(data: SendNotifyParam) { + return defHttp.post({ url: '/system/notify-template/send-notify', data }) +} diff --git a/src/locales/lang/zh-CN/action.ts b/src/locales/lang/zh-CN/action.ts index eaa422ef..270cf12a 100644 --- a/src/locales/lang/zh-CN/action.ts +++ b/src/locales/lang/zh-CN/action.ts @@ -9,5 +9,6 @@ export default { export: '导出', import: '导入', sync: '同步', - cancel: '取消' + cancel: '取消', + send: '发送' } diff --git a/src/views/infra/codegen/components/ImportTableModal.vue b/src/views/infra/codegen/components/ImportTableModal.vue index 04520715..92ffcd2f 100644 --- a/src/views/infra/codegen/components/ImportTableModal.vue +++ b/src/views/infra/codegen/components/ImportTableModal.vue @@ -24,7 +24,8 @@ const [registerTable, { getSelectRowKeys, getForm }] = useTable({ useSearchForm: true, pagination: false, showTableSetting: false, - showIndexColumn: false + showIndexColumn: false, + immediate: false }) const [registerModal, { setModalProps, closeModal }] = useModalInner(async () => { diff --git a/src/views/system/notify/message/MessageInfoModal.vue b/src/views/system/notify/message/MessageInfoModal.vue new file mode 100644 index 00000000..7dbff81b --- /dev/null +++ b/src/views/system/notify/message/MessageInfoModal.vue @@ -0,0 +1,27 @@ + + + + + diff --git a/src/views/system/notify/message/index.vue b/src/views/system/notify/message/index.vue index e27b9d26..25d48c44 100644 --- a/src/views/system/notify/message/index.vue +++ b/src/views/system/notify/message/index.vue @@ -1,15 +1,36 @@ diff --git a/src/views/system/notify/message/message.data.ts b/src/views/system/notify/message/message.data.ts index f7c7ab04..e241d7e2 100644 --- a/src/views/system/notify/message/message.data.ts +++ b/src/views/system/notify/message/message.data.ts @@ -1,5 +1,8 @@ import { BasicColumn, FormSchema, useRender } from '@/components/Table' import { DICT_TYPE, getDictOptions } from '@/utils/dict' +import { JsonPreview } from '@/components/CodeEditor' +import { DescItem } from '@/components/Description/index' +import { h } from 'vue' export const columns: BasicColumn[] = [ { @@ -56,6 +59,9 @@ export const columns: BasicColumn[] = [ dataIndex: 'readTime', width: 180, customRender: ({ text }) => { + if (!text) { + return useRender.renderTag('未阅读') + } return useRender.renderDate(text) } }, @@ -104,3 +110,95 @@ export const searchFormSchema: FormSchema[] = [ colProps: { span: 8 } } ] + +// 站内信详情modal +export const infoSchema: DescItem[] = [ + { + field: 'id', + label: '编号', + labelMinWidth: 50 + }, + { + field: 'readStatus', + label: '是否已读', + render: (value) => { + return useRender.renderDict(value, DICT_TYPE.INFRA_BOOLEAN_STRING) + } + }, + { + field: 'userType', + label: '用户类型', + render: (value) => { + console.log(value) + return useRender.renderDict(value, DICT_TYPE.USER_TYPE) + } + }, + { + field: 'userType', + label: '用户编号' + }, + { + field: 'templateId', + label: '模板编号' + }, + { + field: 'templateCode', + label: '模板编码' + }, + { + field: 'templateNickname', + label: '发送人名称' + }, + { + field: 'templateContent', + label: '模板内容' + }, + { + field: 'templateParams', + label: '模板参数', + render: (value) => { + return h(JsonPreview, { data: value }) + } + }, + { + field: 'templateType', + label: '模板类型', + render: (value) => { + return useRender.renderDict(value, DICT_TYPE.SYSTEM_NOTIFY_TEMPLATE_TYPE) + } + }, + { + field: 'readTime', + label: '阅读时间', + render: (value) => { + if (!value) { + return useRender.renderTag('未阅读') + } + return useRender.renderDate(value) + } + }, + { + field: 'createTime', + label: '创建时间', + render: (value) => { + return useRender.renderDate(value) + } + } +] + +// 站内信详情 +export interface MessageInfo { + userId: number + userType: number + templateId: number + templateCode: string + templateNickname: string + templateContent: string + templateType: number + templateParams: { [key: string]: string } + readStatus: boolean + readTime?: any + id: number + createTime: number + key: string +} diff --git a/src/views/system/notify/template/SendNotifyModal.vue b/src/views/system/notify/template/SendNotifyModal.vue new file mode 100644 index 00000000..fc86a15b --- /dev/null +++ b/src/views/system/notify/template/SendNotifyModal.vue @@ -0,0 +1,89 @@ + + + + + diff --git a/src/views/system/notify/template/index.vue b/src/views/system/notify/template/index.vue index c4b76e19..d9a24dad 100644 --- a/src/views/system/notify/template/index.vue +++ b/src/views/system/notify/template/index.vue @@ -10,6 +10,12 @@