From 70492aa4f5f508ae2e370ab9382d471f6ea01541 Mon Sep 17 00:00:00 2001 From: wuxw <928255095@qq.com> Date: Mon, 23 Jun 2025 23:18:31 +0800 Subject: [PATCH] 通知发送 --- src/api/oa/activitiesManageApi.js | 140 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/api/oa/activitiesTypeManageApi.js | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/admin/AddAdvert.vue | 19 +++++++++++-------- src/components/oa/addActivitiesType.vue | 95 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/addActivitiesView.vue | 141 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/deleteActivities.vue | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/deleteActivitiesType.vue | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/editActivitiesType.vue | 105 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/components/oa/editActivitiesView.vue | 149 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/i18n/index.js | 3 +++ src/i18n/oaI18n.js | 12 ++++++++++++ src/router/index.js | 2 ++ src/router/oaRouter.js | 12 ++++++++++++ src/views/oa/activitiesManageLang.js | 128 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/activitiesManageList.vue | 213 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/activitiesTypeManageLang.js | 134 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/views/oa/activitiesTypeManageList.vue | 191 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 17 files changed, 1563 insertions(+), 8 deletions(-) create mode 100644 src/api/oa/activitiesManageApi.js create mode 100644 src/api/oa/activitiesTypeManageApi.js create mode 100644 src/components/oa/addActivitiesType.vue create mode 100644 src/components/oa/addActivitiesView.vue create mode 100644 src/components/oa/deleteActivities.vue create mode 100644 src/components/oa/deleteActivitiesType.vue create mode 100644 src/components/oa/editActivitiesType.vue create mode 100644 src/components/oa/editActivitiesView.vue create mode 100644 src/i18n/oaI18n.js create mode 100644 src/router/oaRouter.js create mode 100644 src/views/oa/activitiesManageLang.js create mode 100644 src/views/oa/activitiesManageList.vue create mode 100644 src/views/oa/activitiesTypeManageLang.js create mode 100644 src/views/oa/activitiesTypeManageList.vue diff --git a/src/api/oa/activitiesManageApi.js b/src/api/oa/activitiesManageApi.js new file mode 100644 index 0000000..a3dfb03 --- /dev/null +++ b/src/api/oa/activitiesManageApi.js @@ -0,0 +1,140 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 获取活动列表 +export function listActivities(params) { + return new Promise((resolve, reject) => { + request({ + url: '/activities.listActivitiess', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve({ + data: res.activitiess, + total: res.total + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取活动详情 +export function getActivitiesDetail(params) { + return new Promise((resolve, reject) => { + request({ + url: '/activities.listActivitiess', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加活动 +export function saveActivities(data) { + return new Promise((resolve, reject) => { + request({ + url: '/activities.saveActivities', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新活动 +export function updateActivities(data) { + return new Promise((resolve, reject) => { + request({ + url: '/activities.updateActivities', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除活动 +export function deleteActivities(params) { + return new Promise((resolve, reject) => { + request({ + url: '/activities.deleteActivities', + method: 'post', + data: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 获取活动类型列表 +export function listActivitiesType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/activitiesType/queryActivitiesType', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve({ + data: res.data + }) + }).catch(error => { + reject(error) + }) + }) +} + +// 上传图片 +export function uploadImage(data) { + return new Promise((resolve, reject) => { + request({ + url: '/uploadFile/uploadImage', + method: 'post', + data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/api/oa/activitiesTypeManageApi.js b/src/api/oa/activitiesTypeManageApi.js new file mode 100644 index 0000000..b1bfede --- /dev/null +++ b/src/api/oa/activitiesTypeManageApi.js @@ -0,0 +1,78 @@ +import request from '@/utils/request' +import { getCommunityId } from '@/api/community/communityApi' + +// 查询活动类型列表 +export function queryActivitiesType(params) { + return new Promise((resolve, reject) => { + request({ + url: '/activitiesType/queryActivitiesType', + method: 'get', + params: { + ...params, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 添加活动类型 +export function saveActivitiesType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/activitiesType/saveActivitiesType', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 更新活动类型 +export function updateActivitiesType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/activitiesType/updateActivitiesType', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} + +// 删除活动类型 +export function deleteActivitiesType(data) { + return new Promise((resolve, reject) => { + request({ + url: '/activitiesType/deleteActivitiesType', + method: 'post', + data: { + ...data, + communityId: getCommunityId() + } + }).then(response => { + const res = response.data + resolve(res) + }).catch(error => { + reject(error) + }) + }) +} \ No newline at end of file diff --git a/src/components/admin/AddAdvert.vue b/src/components/admin/AddAdvert.vue index 5bbe15d..5158566 100644 --- a/src/components/admin/AddAdvert.vue +++ b/src/components/admin/AddAdvert.vue @@ -12,33 +12,36 @@ - + - + - + - + + :placeholder="$t('advertManage.add.startTimePlaceholder')" value-format="yyyy-MM-dd HH:mm:ss" + style="width: 100%;" /> - + @@ -83,7 +86,7 @@ export default { viewType: '8888', adTypeCd: '20000', locationObjId: '-1', - vedioName:'', + vedioName: '', photos: [] }, rules: { diff --git a/src/components/oa/addActivitiesType.vue b/src/components/oa/addActivitiesType.vue new file mode 100644 index 0000000..9249ed7 --- /dev/null +++ b/src/components/oa/addActivitiesType.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/src/components/oa/addActivitiesView.vue b/src/components/oa/addActivitiesView.vue new file mode 100644 index 0000000..5d61d3e --- /dev/null +++ b/src/components/oa/addActivitiesView.vue @@ -0,0 +1,141 @@ + + + \ No newline at end of file diff --git a/src/components/oa/deleteActivities.vue b/src/components/oa/deleteActivities.vue new file mode 100644 index 0000000..615e9b8 --- /dev/null +++ b/src/components/oa/deleteActivities.vue @@ -0,0 +1,76 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/deleteActivitiesType.vue b/src/components/oa/deleteActivitiesType.vue new file mode 100644 index 0000000..27948fd --- /dev/null +++ b/src/components/oa/deleteActivitiesType.vue @@ -0,0 +1,73 @@ + + + + + \ No newline at end of file diff --git a/src/components/oa/editActivitiesType.vue b/src/components/oa/editActivitiesType.vue new file mode 100644 index 0000000..1fdab62 --- /dev/null +++ b/src/components/oa/editActivitiesType.vue @@ -0,0 +1,105 @@ + + + \ No newline at end of file diff --git a/src/components/oa/editActivitiesView.vue b/src/components/oa/editActivitiesView.vue new file mode 100644 index 0000000..f7575c8 --- /dev/null +++ b/src/components/oa/editActivitiesView.vue @@ -0,0 +1,149 @@ + + + \ No newline at end of file diff --git a/src/i18n/index.js b/src/i18n/index.js index 7bbdd76..84067dd 100644 --- a/src/i18n/index.js +++ b/src/i18n/index.js @@ -206,6 +206,7 @@ import { messages as equipmentAccountDetailMessages } from '../views/machine/equ import { messages as printEquipmentAccountLabelMessages } from '../views/resource/printEquipmentAccountLabelLang' import {messages as inspectioni18n} from './inspectionI18n' import {messages as machineI18n} from './machineI18n' +import {messages as oaI18n} from './oaI18n' Vue.use(VueI18n) @@ -416,6 +417,7 @@ const messages = { ...printEquipmentAccountLabelMessages.en, ...inspectioni18n.en, ...machineI18n.en, + ...oaI18n.en, }, zh: { ...loginMessages.zh, @@ -622,6 +624,7 @@ const messages = { ...printEquipmentAccountLabelMessages.zh, ...inspectioni18n.zh, ...machineI18n.zh, + ...oaI18n.zh, } } diff --git a/src/i18n/oaI18n.js b/src/i18n/oaI18n.js new file mode 100644 index 0000000..40878cc --- /dev/null +++ b/src/i18n/oaI18n.js @@ -0,0 +1,12 @@ +import { messages as activitiesTypeManageMessages } from '../views/oa/activitiesTypeManageLang' +import { messages as activitiesManageMessages } from '../views/oa/activitiesManageLang' +export const messages ={ + en:{ + ...activitiesTypeManageMessages.en, + ...activitiesManageMessages.en, + }, + zh:{ + ...activitiesTypeManageMessages.zh, + ...activitiesManageMessages.zh, + } +} \ No newline at end of file diff --git a/src/router/index.js b/src/router/index.js index 7634323..4b954f2 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -5,6 +5,7 @@ import Login from '@/views/user/login/Login.vue' import printEquipmentAccountLabel from '@/views/resource/printEquipmentAccountLabelList.vue' import inspectionRouter from './inspectionRouter' import machineRouter from './machineRouter' +import oaRouter from './oaRouter' Vue.use(VueRouter) @@ -926,6 +927,7 @@ const routes = [ ...inspectionRouter, ...machineRouter, + ...oaRouter, // 其他子路由可以在这里添加 ] }, diff --git a/src/router/oaRouter.js b/src/router/oaRouter.js new file mode 100644 index 0000000..56eae27 --- /dev/null +++ b/src/router/oaRouter.js @@ -0,0 +1,12 @@ +export default [ + { + path: '/pages/property/activitiesTypeManage', + name: '/pages/property/activitiesTypeManage', + component: () => import('@/views/oa/activitiesTypeManageList.vue') + }, + { + path:'/pages/property/activitiesManage', + name:'/pages/property/activitiesManage', + component: () => import('@/views/oa/activitiesManageList.vue') + }, +] \ No newline at end of file diff --git a/src/views/oa/activitiesManageLang.js b/src/views/oa/activitiesManageLang.js new file mode 100644 index 0000000..5014676 --- /dev/null +++ b/src/views/oa/activitiesManageLang.js @@ -0,0 +1,128 @@ +export const messages = { + en: { + activitiesManage: { + search: { + title: 'Search Conditions', + activitiesId: 'Please enter activity ID', + titlePlaceholder: 'Please enter title', + typeCd: 'Please select activity type', + staffName: 'Please enter publisher name' + }, + list: { + title: 'Activity List' + }, + table: { + activitiesId: 'Activity ID', + title: 'Title', + typeCd: 'Type', + startTime: 'Start Time', + endTime: 'End Time', + userName: 'Publisher' + }, + add: { + title: 'Add Activity', + titlePlaceholder: 'Required, please enter title', + typeCd: 'Activity Type', + startTime: 'start time', + endTime: 'end time', + typeCdPlaceholder: 'Required, please select type', + isMoreCommunity: 'Multi-community', + isMoreCommunityPlaceholder: 'Please select if multi-community', + headerImg: 'Header Image (800*595)', + startTimePlaceholder: 'Required, please enter start time', + endTimePlaceholder: 'Required, please enter end time', + context: 'Content' + }, + edit: { + title: 'Edit Activity', + titlePlaceholder: 'Required, please enter title', + typeCd: 'Activity Type', + startTime: 'start time', + endTime: 'end time', + typeCdPlaceholder: 'Required, please select type', + headerImg: 'Header Image (800*595)', + startTimePlaceholder: 'Required, please enter start time', + endTimePlaceholder: 'Required, please enter end time', + context: 'Content' + }, + delete: { + title: 'Confirm Operation', + confirmText: 'Are you sure to delete this activity?' + }, + validate: { + titleRequired: 'Title is required', + titleMaxLength: 'Title cannot exceed 200 characters', + typeCdRequired: 'Type is required', + headerImgRequired: 'Header image is required', + contextRequired: 'Content is required', + startTimeRequired: 'Start time is required', + endTimeRequired: 'End time is required', + activitiesIdRequired: 'Activity ID is required', + imageSize: 'Image size cannot exceed 2MB' + } + } + }, + zh: { + activitiesManage: { + search: { + title: '查询条件', + activitiesId: '请输入活动ID', + titlePlaceholder: '请输入标题', + typeCd: '请选择活动类型', + staffName: '请输入发布人名称' + }, + list: { + title: '活动列表' + }, + table: { + activitiesId: '活动ID', + title: '标题', + typeCd: '类型', + startTime: '开始时间', + endTime: '结束时间', + userName: '发布人' + }, + add: { + title: '添加活动', + titlePlaceholder: '必填,请输入标题', + typeCd: '类型', + startTime: '开始时间', + endTime: '结束时间', + typeCdPlaceholder: '必填,请选择类型', + isMoreCommunity: '多小区', + isMoreCommunityPlaceholder: '请选择是否多小区', + headerImg: '头部照片(800*595)', + startTimePlaceholder: '必填,请输入开始时间', + endTimePlaceholder: '必填,请输入结束时间', + context: '内容' + }, + edit: { + title: '编辑活动', + titlePlaceholder: '必填,请输入标题', + typeCd: '类型', + typeCdPlaceholder: '必填,请选择类型', + headerImg: '头部照片(800*595)', + startTimePlaceholder: '必填,请输入开始时间', + endTimePlaceholder: '必填,请输入结束时间', + startTime: '开始时间', + endTime: '结束时间', + context: '内容' + }, + delete: { + title: '确认操作', + confirmText: '确认删除该活动吗?' + }, + validate: { + titleRequired: '标题不能为空', + titleMaxLength: '标题不能超过200个字符', + typeCdRequired: '类型不能为空', + headerImgRequired: '头部照片不能为空', + contextRequired: '内容不能为空', + startTimeRequired: '开始时间不能为空', + endTimeRequired: '结束时间不能为空', + activitiesIdRequired: '活动ID不能为空', + imageSize: '图片大小不能超过2MB' + } + } + } +} \ No newline at end of file diff --git a/src/views/oa/activitiesManageList.vue b/src/views/oa/activitiesManageList.vue new file mode 100644 index 0000000..116c1a2 --- /dev/null +++ b/src/views/oa/activitiesManageList.vue @@ -0,0 +1,213 @@ + + + + + \ No newline at end of file diff --git a/src/views/oa/activitiesTypeManageLang.js b/src/views/oa/activitiesTypeManageLang.js new file mode 100644 index 0000000..0fc59c4 --- /dev/null +++ b/src/views/oa/activitiesTypeManageLang.js @@ -0,0 +1,134 @@ +export const messages = { + en: { + activitiesTypeManage: { + search: { + title: 'Search Conditions', + typeCd: 'Type Code', + typeName: 'Type Name', + defaultShow: 'Mobile Display', + all: 'All', + yes: 'Yes', + no: 'No' + }, + list: { + title: 'Information Categories' + }, + table: { + typeCd: 'Type Code', + typeName: 'Type Name', + typeDesc: 'Type Description', + seq: 'Display Order', + defaultShow: 'Mobile Display' + }, + add: { + title: 'Add Category', + typeName: 'Type Name', + typeNamePlaceholder: 'Required, please enter type name', + typeDesc: 'Type Description', + typeDescPlaceholder: 'Optional, please enter type description', + seq: 'Display Order', + seqPlaceholder: 'Required, please enter display order', + defaultShow: 'Mobile Display', + defaultShowPlaceholder: 'Required, please select mobile display', + success: 'Add successfully', + error: 'Add failed' + }, + edit: { + title: 'Edit Category', + typeCd: 'Type Code', + typeName: 'Type Name', + typeNamePlaceholder: 'Required, please enter type name', + typeDesc: 'Type Description', + typeDescPlaceholder: 'Optional, please enter type description', + seq: 'Display Order', + seqPlaceholder: 'Required, please enter display order', + defaultShow: 'Mobile Display', + defaultShowPlaceholder: 'Required, please select mobile display', + success: 'Edit successfully', + error: 'Edit failed' + }, + delete: { + title: 'Delete Confirmation', + confirm: 'Are you sure to delete this category?', + success: 'Delete successfully', + error: 'Delete failed' + }, + validate: { + typeCdRequired: 'Type code is required', + typeNameRequired: 'Type name is required', + typeNameMaxLength: 'Type name cannot exceed 100 characters', + typeDescMaxLength: 'Type description cannot exceed 500 characters', + seqRequired: 'Display order is required', + seqNumber: 'Display order must be a number', + defaultShowRequired: 'Mobile display is required' + }, + fetchError: 'Failed to fetch data' + } + }, + zh: { + activitiesTypeManage: { + search: { + title: '查询条件', + typeCd: '大类编码', + typeName: '大类名称', + defaultShow: '手机显示', + all: '全部', + yes: '是', + no: '否' + }, + list: { + title: '信息大类' + }, + table: { + typeCd: '大类编码', + typeName: '大类名称', + typeDesc: '大类描述', + seq: '显示序号', + defaultShow: '手机显示' + }, + add: { + title: '添加大类', + typeName: '大类名称', + typeNamePlaceholder: '必填,请填写大类名称', + typeDesc: '大类描述', + typeDescPlaceholder: '选填,请填写大类描述', + seq: '显示序号', + seqPlaceholder: '必填,请填写显示序号', + defaultShow: '手机显示', + defaultShowPlaceholder: '必填,请选择是否手机显示', + success: '添加成功', + error: '添加失败' + }, + edit: { + title: '修改大类', + typeCd: '大类编码', + typeName: '大类名称', + typeNamePlaceholder: '必填,请填写大类名称', + typeDesc: '大类描述', + typeDescPlaceholder: '选填,请填写大类描述', + seq: '显示序号', + seqPlaceholder: '必填,请填写显示序号', + defaultShow: '手机显示', + defaultShowPlaceholder: '必填,请选择是否显示', + success: '修改成功', + error: '修改失败' + }, + delete: { + title: '删除确认', + confirm: '确定删除信息大类?', + success: '删除成功', + error: '删除失败' + }, + validate: { + typeCdRequired: '大类编码不能为空', + typeNameRequired: '大类名称不能为空', + typeNameMaxLength: '大类名称超过100位', + typeDescMaxLength: '描述超过500位', + seqRequired: '显示序号不能为空', + seqNumber: '显示序号不是有效数字', + defaultShowRequired: '是否显示不能为空' + }, + fetchError: '获取数据失败' + } + } +} \ No newline at end of file diff --git a/src/views/oa/activitiesTypeManageList.vue b/src/views/oa/activitiesTypeManageList.vue new file mode 100644 index 0000000..ec75fda --- /dev/null +++ b/src/views/oa/activitiesTypeManageList.vue @@ -0,0 +1,191 @@ + + + + + \ No newline at end of file -- libgit2 0.21.4