学习进度条

今日所花时间:一小时
今日代码量:100行
博客量:一篇
了解到的知识点:

项目概述

主要实现了检测计划管理功能模块。该模块包含检测计划的创建、编辑、删除、查询以及生成工单等核心功能

核心技术栈

1. Vue 3 组合式API

import { ref, computed } from 'vue'
  • ref: 用于创建响应式数据,如const plans = ref([])
  • computed: 创建计算属性,如const canGenerateOrder = computed(() => {...})
  • setup语法糖: 使用<script setup>简化组件编写

2. Element Plus组件库

  • 表格组件: 用于展示检测计划列表
  • 表单组件: 用于计划创建和编辑
  • 对话框和抽屉组件: 用于表单展示
  • 消息提示组件: ElMessageElMessageBox用于用户交互反馈
  • 步骤条组件: 用于工单生成流程引导

3. 状态管理

import { useTokenStore } from '@/stores/token'
  • 使用Pinia进行全局状态管理
  • 存储和获取用户token等全局数据

4. 网络请求

import { getPlanListService, deletePlanService, addPlanService } from '@/api/Device.js'
import request from '@/utils/request'
  • 封装axios请求
  • API服务模块化管理
  • 统一的请求和响应处理

5. 自定义组件

  • StayTimeDetector: 停留时间检测组件
  • FaceRecognition: 人脸识别验证组件

关键功能实现

1. 检测计划管理

// 获取检测计划列表
const getDeviceLCheckList = async () => {
  let params = {
    pageNum: pageNum.value,
    pageSize: pageSize.value,
    planName: searchKey.value ? searchKey.value : null,
    deviceType: deviceType.value ? deviceType.value : null,
    status: planStatus.value ? planStatus.value : null
  }
  let result = await getPlanListService(params)
  total.value = result.data.total;
  plans.value = result.data.items;
}
  • 分页查询
  • 条件过滤
  • 状态管理

2. 表单验证

// 表单验证规则
const rules = {
  planName: [
    { required: true, message: '请输入计划名称', trigger: 'blur' },
    { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' }
  ],
  deviceType: [
    { required: true, message: '请选择设备类型', trigger: 'change' }
  ]
}
  • 必填验证
  • 长度验证
  • 自定义验证规则

3. 工单生成流程

const openGenerateOrderDialog = async (plan) => {
  // 检查计划状态
  if (plan.status === 0) {
    ElMessage.warning('停用状态的计划不能生成工单')
    return
  }

  currentPlan.value = {
    ...plan,
    planCode: typeof plan.planCode === 'string' ? parseInt(plan.planCode.replace(/\D/g, '')) : plan.planCode
  }
  
  // 重置表单和验证状态
  resetOrderForm()
  
  // 获取设备列表
  await getDevices()
  generateOrderDialogVisible.value = true
}
  • 多步骤验证流程
  • 人脸识别集成
  • 停留时间检测

学到的知识点

  1. Vue 3响应式系统: 深入理解了ref和reactive的使用场景和区别

  2. 组合式API优势: 逻辑关注点集中,代码更易组织和复用

  3. Element Plus高级用法:

    • 表格自定义列模板
    • 表单复杂验证规则
    • 步骤条控制流程
  4. 异步编程实践:

    • async/await处理异步操作
    • 错误处理和用户反馈
  5. 组件通信:

    • 父子组件props/emit
    • 通过ref调用子组件方法
    • 自定义事件处理
  6. 状态管理策略:

    • 何时使用本地状态
    • 何时使用全局状态
    • 状态持久化考虑
  7. 安全验证流程:

    • 人脸识别集成
    • 操作权限控制
    • 敏感操作确认

开发经验总结

  1. API封装的重要性: 将API调用统一管理,便于维护和修改

  2. 表单处理最佳实践:

    • 分离表单数据模型
    • 统一验证逻辑
    • 清晰的提交处理
  3. 用户体验优化:

    • 操作反馈及时
    • 禁用状态明确
    • 流程引导清晰
  4. 代码组织技巧:

    • 相关逻辑集中
    • 工具函数提取
    • 组件合理拆分
  5. 错误处理策略:

    • 网络错误捕获
    • 用户友好提示
    • 失败状态恢复

后续优化方向

  1. 性能优化:

    • 列表虚拟滚动
    • 请求防抖
    • 数据缓存
  2. 功能增强:

    • 计划模板功能
    • 批量操作支持
    • 高级搜索功能
  3. 代码质量:

    • TypeScript迁移
    • 单元测试覆盖
    • E2E测试添加

通过这次开发实践,我对Vue 3的现代前端开发有了更深入的理解,特别是在复杂表单处理和分步流程控制方面积累了宝贵经验。Element Plus框架的强大功能也大大提升了开发效率,使得能够快速构建出功能完善且用户体验良好的管理界面。

posted @ 2025-05-27 22:03  haoyinuo  阅读(7)  评论(0)    收藏  举报