diff --git a/src/api/projects.js b/src/api/projects.js new file mode 100644 index 0000000..baa5266 --- /dev/null +++ b/src/api/projects.js @@ -0,0 +1,56 @@ +import request from '@/utils/request' + +/** + * 获取项目简介列表 + * @param {Object} params - 查询参数 + * @returns {Promise} + */ +export function getProjectList(params) { + return request.get('/api/admin/projects', { params }) +} + +/** + * 获取项目简介详情 + * @param {number|string} id - 项目ID + * @returns {Promise} + */ +export function getProjectDetail(id) { + return request.get(`/api/admin/projects/${id}`) +} + +/** + * 创建项目简介 + * @param {Object} data - 项目数据 + * @returns {Promise} + */ +export function createProject(data) { + return request.post('/api/admin/projects', data) +} + +/** + * 更新项目简介 + * @param {number|string} id - 项目ID + * @param {Object} data - 更新数据 + * @returns {Promise} + */ +export function updateProject(id, data) { + return request.put(`/api/admin/projects/${id}`, data) +} + +/** + * 删除项目简介 + * @param {number|string} id - 项目ID + * @returns {Promise} + */ +export function deleteProject(id) { + return request.delete(`/api/admin/projects/${id}`) +} + +/** + * 批量更新排序 + * @param {Object} data - 排序数据 + * @returns {Promise} + */ +export function updateProjectSort(data) { + return request.post('/api/admin/projects/sort/batch', data) +} \ No newline at end of file diff --git a/src/layout/AdminLayout.vue b/src/layout/AdminLayout.vue index 9ffd0dc..cefa5fa 100644 --- a/src/layout/AdminLayout.vue +++ b/src/layout/AdminLayout.vue @@ -167,6 +167,14 @@ const handleLogout = () => { 意见反馈 满意度调查 + + + + 项目简介 + diff --git a/src/router/index.js b/src/router/index.js index d3e1389..8b7c559 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -161,6 +161,12 @@ const router = createRouter({ name: 'SystemData', component: () => import('@/views/system/data/index.vue'), meta: { title: '数据管理', icon: 'data' } + }, + { + path: 'projects', + name: 'Projects', + component: () => import('@/views/projects/index.vue'), + meta: { title: '项目简介管理', icon: 'data' } } ] } diff --git a/src/utils/format.js b/src/utils/format.js index f4ae7c8..99c512b 100644 --- a/src/utils/format.js +++ b/src/utils/format.js @@ -1,22 +1,25 @@ /** * 格式化日期时间 - * @param {string|number|Date} time 需要格式化的时间 - * @param {string} [format='YYYY-MM-DD HH:mm:ss'] 格式化的格式 + * @param {string|number|Date} time 时间 + * @param {string} format 格式,默认为 'YYYY-MM-DD HH:mm:ss' * @returns {string} 格式化后的时间字符串 */ export function formatDateTime(time, format = 'YYYY-MM-DD HH:mm:ss') { - if (!time) return ''; + if (!time) { + return '-' + } - const date = new Date(time); + const date = new Date(time) + if (isNaN(date.getTime())) { + return '-' + } - if (isNaN(date.getTime())) return ''; - - const year = date.getFullYear(); - const month = String(date.getMonth() + 1).padStart(2, '0'); - const day = String(date.getDate()).padStart(2, '0'); - const hours = String(date.getHours()).padStart(2, '0'); - const minutes = String(date.getMinutes()).padStart(2, '0'); - const seconds = String(date.getSeconds()).padStart(2, '0'); + const year = date.getFullYear() + const month = String(date.getMonth() + 1).padStart(2, '0') + const day = String(date.getDate()).padStart(2, '0') + const hours = String(date.getHours()).padStart(2, '0') + const minutes = String(date.getMinutes()).padStart(2, '0') + const seconds = String(date.getSeconds()).padStart(2, '0') return format .replace('YYYY', year) @@ -24,7 +27,7 @@ export function formatDateTime(time, format = 'YYYY-MM-DD HH:mm:ss') { .replace('DD', day) .replace('HH', hours) .replace('mm', minutes) - .replace('ss', seconds); + .replace('ss', seconds) } /** diff --git a/src/views/projects/index.vue b/src/views/projects/index.vue new file mode 100644 index 0000000..89088b5 --- /dev/null +++ b/src/views/projects/index.vue @@ -0,0 +1,541 @@ + + + + + \ No newline at end of file