数据工厂系列(18)项目管理模块-前端联调上篇

33 阅读3分钟

大家好~我是小方,欢迎大家关注笋货测试笔记体完记得俾个like

回顾

在之前的篇章中,除了同步项目逻辑还没开发完毕,其余都开发好了,打开接口文档可以看到接口还是蛮多的,而我们的前端只是到了用户模块,所以接下来的几个篇章中,都会进行前后端的联调

项目列表页面联调

首先我们先在src/api新建project.js,把我们之前的api都填进去

import request from '@/utils/request'

export function getProjectList(params) {
  return request({
    url: '/project/list',
    method: 'get',
    params
  })
}

export function deleteProject(id) {
  return request({
    url: '/project/delete',
    method: 'get',
    params: { id }
  })
}

export function initProject(id) {
  return request({
    url: '/project/init',
    method: 'get',
    params: { id }
  })
}

export function syncProject(id) {
  return request({
    url: '/project/sync',
    method: 'get',
    params: { id }
  })
}

export function insertProject(data) {
  return request({
    url: '/project/insert',
    method: 'post',
    data
  })
}

export function updateProject(data) {
  return request({
    url: '/project/update',
    method: 'post',
    data
  })
}

export function readProject(id) {
  return request({
    url: '/project/read',
    method: 'get',
    params: { id }
  })
}

export function operationProject(id) {
  return request({
    url: '/project/operation',
    method: 'get',
    params: { id }
  })
}

export function getRoleList(params) {
  return request({
    url: '/project/role/list',
    method: 'get',
    params
  })
}

export function insertProjectRole(data) {
  return request({
    url: '/project/role/insert',
    method: 'post',
    data
  })
}

export function updateProjectRole(data) {
  return request({
    url: '/project/role/update',
    method: 'post',
    data
  })
}

export function deleteProjectRole(id) {
  return request({
    url: '/project/role/delete',
    method: 'get',
    params: { id }
  })
}

那我们的项目列表页面要怎么设计呢?这里参考了pity里面的项目列表设计,先来看看pity的项目列表页面,其实就是很多个小卡片组合起来!按钮通过鼠标移到三个点就闪现出来

那我们着手试试吧,卡片的话,直接用element的card,新建src/views/project/index.vue文件,记得project目录要先建起来

先把相关的api和分页组件引入

import { getProjectList } from '@/api/project'
import Pagination from '@/components/Pagination'

定义相关的字段,这里可直接参考用户列表那边的设计 新增获取项目列表数据方法

async getProject() {
      this.listLoading = true
      try {
        const { data } = await getProjectList(this.listQuery)
        this.lists = data.lists
        this.total = data.total
        this.listLoading = false
      } catch (err) {
        this.listLoading = false
        console.log(err)
      }
    }

获取到项目列表数据后,该怎么展示呢?上面有说到用的是卡片,那我们直接v-for循环生成卡片好了 接着再来设计一下卡片的下拉菜单功能,这里用到的是el-dropdown相关的用法,大家可直接看element官网 下拉菜单触发的事件

  • 删除项目

先请求判断是否有操作项目权限,接着再弹窗二次确认,确认后,请求后端api

  • 初始化项目

先请求判断是否有查看项目权限,接着再弹窗二次确认,确认后,请求后端api

  • 同步项目

先请求判断是否有查看项目权限,接着再弹窗二次确认,确认后,请求后端api

  • 设置权限

跟删除项目一样的逻辑,只不过这里是跳转到一个项目详情页面

  • 搜索区域

创建项目按钮和搜索相关的,放在卡片顶部,直接用el-form来设计

新增项目表单

这里表单的话,我们直接搞一个组件,在index中引用子组件,这样子index不会存在过多的代码

直接新增src/views/project/module/ProjectFrom.vue,注意对应的目录也要建立起来,这里的一些交互这里先不展开讲了,前端可能大家都不太敢兴趣

父组件引用子组件

更多的代码大家可以看看index.viewProjectFrom.vue

完整展示效果

总结

今天就大概写了一下前端,讲得不是很清楚,大家后续直接拉代码看吧,前端这门功夫不是一时半刻能学会的,大家要加油~ 最近在写晋升PPT(已撸完)和半年绩效总结(写ing)一直鸽了那么久,抱歉!