diff --git a/src/assets/main.css b/src/assets/main.css index 49544cc..9edbecf 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -4,4 +4,8 @@ @utility input { @apply w-full outline-none ; -} \ No newline at end of file +} + +.lucide { + @apply my-1.5 size-4; +} diff --git a/src/components/common/MessageDetail.vue b/src/components/common/MessageDetail.vue new file mode 100644 index 0000000..3ecbe07 --- /dev/null +++ b/src/components/common/MessageDetail.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/common/MessageList.vue b/src/components/common/MessageList.vue new file mode 100644 index 0000000..19d6d2e --- /dev/null +++ b/src/components/common/MessageList.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/common/ProjectDetail.vue b/src/components/common/ProjectDetail.vue new file mode 100644 index 0000000..d2d4e7e --- /dev/null +++ b/src/components/common/ProjectDetail.vue @@ -0,0 +1,58 @@ + + + diff --git a/src/components/common/ProjectList.vue b/src/components/common/ProjectList.vue new file mode 100644 index 0000000..b645e6d --- /dev/null +++ b/src/components/common/ProjectList.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/common/WorkflowDetail.vue b/src/components/common/WorkflowDetail.vue new file mode 100644 index 0000000..ce765e3 --- /dev/null +++ b/src/components/common/WorkflowDetail.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/components/common/WorkflowList.vue b/src/components/common/WorkflowList.vue new file mode 100644 index 0000000..f6c4129 --- /dev/null +++ b/src/components/common/WorkflowList.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/home/FeatureList.vue b/src/components/home/FeatureList.vue new file mode 100644 index 0000000..cb262a2 --- /dev/null +++ b/src/components/home/FeatureList.vue @@ -0,0 +1,49 @@ + + + diff --git a/src/components/home/FunctionNav.vue b/src/components/home/FunctionNav.vue new file mode 100644 index 0000000..e15ca8a --- /dev/null +++ b/src/components/home/FunctionNav.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/home/OperationSpace.vue b/src/components/home/OperationSpace.vue new file mode 100644 index 0000000..e23d6de --- /dev/null +++ b/src/components/home/OperationSpace.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/components/home/index.vue b/src/components/home/index.vue new file mode 100644 index 0000000..d08a699 --- /dev/null +++ b/src/components/home/index.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/composables/useHome.ts b/src/composables/useHome.ts new file mode 100644 index 0000000..5bb90a0 --- /dev/null +++ b/src/composables/useHome.ts @@ -0,0 +1,137 @@ +import { ref, computed } from 'vue' + +export type FunctionType = 'message' | 'workflow' | 'project' + +export interface Message { + id: number + title: string + content: string + time: string + unread?: boolean +} + +export interface Workflow { + id: number + name: string + status: '进行中' | '已完成' | '草稿' | '已暂停' + creator: string + createTime: string +} + +export interface Project { + id: number + name: string + status: '进行中' | '规划中' | '已完成' | '已暂停' + progress: number + manager: string +} + +export function useHome() { + const currentFunction = ref('message') + const selectedMessageId = ref(null) + const selectedWorkflowId = ref(null) + const selectedProjectId = ref(null) + + // 模拟数据 + const messages= ref([ + { id: 1, title: '系统通知', content: '欢迎使用角色管理系统,祝您工作顺利!', time: '2026-03-10 10:00', unread: true }, + { id: 2, title: '任务提醒', content: '您有一个待处理的任务需要在今天完成。', time: '2026-03-10 11:30', unread: true }, + { id: 3, title: '审批请求', content: '新的流程审批等待您的处理,请及时查看。', time: '2026-03-10 14:20', unread: false }, + { id: 4, title: '会议通知', content: '明天上午 10 点召开项目进度会议,请准时参加。', time: '2026-03-10 15:00', unread: false }, + ]) + + const workflows = ref([ + { id: 1, name: '请假审批流程', status: '进行中', creator: '张三', createTime: '2026-03-09' }, + { id: 2, name: '采购申请流程', status: '已完成', creator: '李四', createTime: '2026-03-08' }, + { id: 3, name: '项目立项流程', status: '草稿', creator: '王五', createTime: '2026-03-10' }, + { id: 4, name: '费用报销流程', status: '进行中', creator: '赵六', createTime: '2026-03-07' }, + ]) + + const projects = ref([ + { id: 1, name: 'ERP 系统升级', status: '进行中', progress: 65, manager: '张三' }, + { id: 2, name: 'CRM 客户管理系统', status: '规划中', progress: 20, manager: '李四' }, + { id: 3, name: '数据分析平台', status: '已完成', progress: 100, manager: '王五' }, + { id: 4, name: '移动办公 APP', status: '进行中', progress: 45, manager: '赵六' }, + ]) + + // 计算属性:获取当前选中的项目 + const selectedMessage = computed(() => + messages.value.find(m => m.id === selectedMessageId.value) + ) + + const selectedWorkflow = computed(() => + workflows.value.find(w => w.id === selectedWorkflowId.value) + ) + + const selectedProject = computed(() => + projects.value.find(p => p.id === selectedProjectId.value) + ) + + // 切换功能 + const selectFunction = (func: FunctionType) => { + currentFunction.value = func + // 清空其他选中项 + selectedMessageId.value = null + selectedWorkflowId.value = null + selectedProjectId.value = null + } + + // 选择列表项 + const selectMessage = (id: number) => { + selectedMessageId.value = id + // 标记为已读 + const msg = messages.value.find(m => m.id === id) + if (msg) msg.unread = false + } + + const selectWorkflow = (id: number) => { + selectedWorkflowId.value = id + } + + const selectProject = (id: number) => { + selectedProjectId.value = id + } + + // 操作处理函数 + const handleMessageAction = (action: string, messageId: number) => { + console.log(`处理消息 ${messageId}: ${action}`) + // TODO: 实现具体业务逻辑 + } + + const handleWorkflowAction = (action: string, workflowId: number) => { + console.log(`处理流程 ${workflowId}: ${action}`) + // TODO: 实现具体业务逻辑 + } + + const handleProjectAction = (action: string, projectId: number) => { + console.log(`处理项目 ${projectId}: ${action}`) + // TODO: 实现具体业务逻辑 + } + + return { + // 状态 + currentFunction, + selectedMessageId, + selectedWorkflowId, + selectedProjectId, + + // 数据 + messages, + workflows, + projects, + + // 计算属性 + selectedMessage, + selectedWorkflow, + selectedProject, + + // 方法 + selectFunction, + selectMessage, + selectWorkflow, + selectProject, + handleMessageAction, + handleWorkflowAction, + handleProjectAction, + } +} diff --git a/src/pages/index.vue b/src/pages/index.vue index b8a72e0..1950f07 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -1,42 +1,7 @@ - -