diff --git a/src/views/system/notice/DetailModal.vue b/src/views/system/notice/DetailModal.vue new file mode 100644 index 0000000..16eafcf --- /dev/null +++ b/src/views/system/notice/DetailModal.vue @@ -0,0 +1,24 @@ + + + + diff --git a/src/views/system/notice/NoticeModal.vue b/src/views/system/notice/NoticeModal.vue new file mode 100644 index 0000000..6c09d89 --- /dev/null +++ b/src/views/system/notice/NoticeModal.vue @@ -0,0 +1,74 @@ + + diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue new file mode 100644 index 0000000..17f5314 --- /dev/null +++ b/src/views/system/notice/index.vue @@ -0,0 +1,143 @@ + + diff --git a/src/views/system/notice/notice.api.ts b/src/views/system/notice/notice.api.ts new file mode 100644 index 0000000..040d44a --- /dev/null +++ b/src/views/system/notice/notice.api.ts @@ -0,0 +1,89 @@ +import { defHttp } from '/@/utils/http/axios'; +import { useMessage } from '/@/hooks/web/useMessage'; +const { createConfirm } = useMessage(); +enum Api { + list = '/sys/annountCement/list', + save = '/sys/annountCement/add', + edit = '/sys/annountCement/edit', + delete = '/sys/annountCement/delete', + deleteBatch = '/sys/annountCement/deleteBatch', + exportXls = '/sys/annountCement/exportXls', + importExcel = '/sys/annountCement/importExcel', + releaseData = '/sys/annountCement/doReleaseData', + reovkeData = '/sys/annountCement/doReovkeData', + publishData = '/sys/annountCement/publishData', + queryById = '/sys/annountCement/queryById', +} + +/** + * 导出url + */ +export const getExportUrl = Api.exportXls; +/** + * 导入url + */ +export const getImportUrl = Api.importExcel; +/** + * 查询租户列表 + * @param params + */ +export const getList = (params) => { + return defHttp.get({ url: Api.list, params }); +}; + +/** + * 请求编辑数据 + */ +export const resEditData = async (params, handleSuccess) => { + return await defHttp.get({ url: Api.queryById, params }); +}; + +/** + * 保存或者更新通告 + * @param params + */ +export const saveOrUpdate = (params, isUpdate) => { + let url = isUpdate ? Api.edit : Api.save; + return defHttp.post({ url: url, params }); +}; + +/** + * 删除通告 + * @param params + */ +export const deleteNotice = (params, handleSuccess) => { + return defHttp.delete({ url: Api.delete, data: params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); +}; + +// /** +// * 批量消息公告 +// * @param params +// */ +// export const batchDeleteNotice = (params) => defHttp.delete({ url: Api.deleteBatch, data: params }, { joinParamsToUrl: true }); +// +// /** +// * 发布 +// * @param id +// */ +// export const doReleaseData = (params) => defHttp.get({ url: Api.releaseData, params }); +// /** +// * 撤销 +// * @param id +// */ +// export const doReovkeData = (params) => defHttp.get({ url: Api.reovkeData, params }); +export const publishData = (params, handleSuccess) => { + createConfirm({ + iconType: 'warning', + title: '确认发布', + content: '是否发布该消息?发布之后会逐步发短信给用户', + okText: '确认', + cancelText: '取消', + onOk: () => { + return defHttp.post({ url: Api.publishData, data: params }, { joinParamsToUrl: true }).then(() => { + handleSuccess(); + }); + }, + }); +}; diff --git a/src/views/system/notice/notice.data.ts b/src/views/system/notice/notice.data.ts new file mode 100644 index 0000000..78dc342 --- /dev/null +++ b/src/views/system/notice/notice.data.ts @@ -0,0 +1,199 @@ +import { BasicColumn, FormSchema } from '/@/components/Table'; +import { rules } from '/@/utils/helper/validator'; +import { render } from '/@/utils/common/renderUtils'; + +export const columns: BasicColumn[] = [ + { + title: '标题', + width: 150, + dataIndex: 'titile', + }, + { + title: '消息类型', + dataIndex: 'msgCategory_dictText', + width: 100, + }, + + /*{ + title: '优先级', + dataIndex: 'priority', + width: 70, + customRender: ({ text }) => { + const color = text == 'L' ? 'blue' : text == 'M' ? 'yellow' : 'red'; + return render.renderTag(render.renderDict(text, 'priority'), color); + }, + },*/ + { + title: '通知对象', + dataIndex: 'msgType_dictText', + width: 100, + }, + { + title: '创建人', + width: 100, + dataIndex: 'createBy', + }, + { + title: '发布状态', + dataIndex: 'sendStatus', + width: 70, + customRender: ({ text }) => { + const color = text == '0' ? 'red' : text == '1' ? 'green' : 'orange'; + return render.renderTag(render.renderDict(text, 'send_status'), color); + }, + }, + { + title: '发布人', + width: 100, + dataIndex: 'sender', + }, + { + title: '发布时间', + width: 100, + dataIndex: 'sendTime', + }, + { + title: '发布进度', + width: 100, + dataIndex: 'msgAbstract', + }, + /*{ + title: '撤销时间', + width: 100, + dataIndex: 'cancelTime', + },*/ +]; + +export const searchFormSchema: FormSchema[] = [ + { + field: 'titile', + label: '标题', + component: 'JInput', + colProps: { span: 8 }, + }, + { + field: 'sendStatus', + label: '发布状态', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'send_status', + }, + colProps: { span: 8 }, + }, +]; + +export const formSchema: FormSchema[] = [ + { + field: 'id', + label: 'id', + component: 'Input', + show: false, + }, + { + field: 'msgCategory', + label: '消息类型', + required: true, + component: 'JDictSelectTag', + defaultValue: '3', + componentProps: { + type: 'radio', + dictCode: 'msg_category', + placeholder: '请选择类型', + }, + }, + + /*{ + field: 'msgAbstract', + label: '摘要', + component: 'InputTextArea', + required: true, + },*/ + // { + // field: 'endTime', + // label: '截至日期', + // component: 'DatePicker', + // componentProps: { + // showTime: true, + // valueFormat: 'YYYY-MM-DD HH:mm:ss', + // placeholder: '请选择截至日期', + // }, + // dynamicRules: ({ model }) => rules.endTime(model.startTime, true), + // }, + { + field: 'msgType', + label: '通知对象', + defaultValue: 'ALL', + component: 'JDictSelectTag', + required: true, + componentProps: { + type: 'radioButton', + dictCode: 'msg_type', + placeholder: '请选择发布范围', + onChange: function (arg1) { + console.log(arg1); + }, + }, + }, + { + field: 'userIds', + label: '指定用户', + component: 'JSelectUserByDept', + required: true, + componentProps: ({ formModel }) => { + return { + rowKey: 'id', + labelKey: 'realname', + // onChange: function (arg1) { + // formModel.userIds = arg1.join(','); + // } + }; + }, + ifShow: ({ values }) => values.msgType == 'USER', + }, + { + field: 'docIds', + label: '指定专家', + component: 'JSelectDocByType', + required: true, + componentProps: ({ formModel }) => { + return { + rowKey: 'id', + labelKey: 'doctorName', + // onChange: function (arg1) { + // formModel.userIds = arg1.join(','); + // } + }; + }, + ifShow: ({ values }) => values.msgType == 'DOC', + }, + + /*{ + field: 'priority', + label: '优先级', + defaultValue: 'H', + component: 'JDictSelectTag', + componentProps: { + dictCode: 'priority', + type: 'radio', + placeholder: '请选择优先级', + }, + },*/ + { + field: 'titile', + label: '标题', + component: 'Input', + required: true, + componentProps: { + placeholder: '请输入标题', + }, + }, + { + field: 'msgContent', + label: '短信内容', + component: 'InputTextArea', + required: true, + componentProps: { + placeholder: '请输入短信内容', + }, + }, +];