【平台开发】— 8.前端-从[项目管理]来看vue

简介: 【平台开发】— 8.前端-从[项目管理]来看vue

现在要来实现【项目管理】这个功能了。


想象一下页面,元素大概就是:列表页、查询框、新增按钮、编辑、mock入口按钮。

那先来实现列表和新建,也顺带着整理一下用到的vue相关指令知识。


1268169-20200727103900437-1837220087.png


一、后端


后端就不再详说了,跟前面差不多的套路。


ProjectController 里增加新的接口/list 。这里是遵循了restful 风格 ,新增的话就换成post方法。


暂时没有真正实现用户权限,所以统一写死一个创建者

setCreateUser("pingguo")


@RestControlle
@RequestMapping(value = "/project")
public class ProjectController {
    @Autowired
    ProjectService projectService;
    @GetMapping("/list")
    public Result projectList() throws Exception {
        List<Project> projectList = projectService.getProjectList();
        return Result.success(projectList);
    }
    @PostMapping("/list")
    public Object add(@RequestBody Project project) throws Exception {
        project.setCreateTime(new Date());
        project.setUid(1);
        project.setCreateUser("pingguo");
        projectService.add(project);
        return Result.success(project);
    }
}


调用接口,测试OK。


1268169-20200727104019426-2013396853.png


二、前端部分


重点在这了(ps:列表暂时是还没做分页的,后面会单独补上分页)。


前端代码篇幅较大,附上源码地址:地址


页面介绍


前端vue文件里其实最重要的就是2个部分:


  • :网页内容
  • ...: 交互


以项目列表为例,在...中,首先要导入我们要使用到的api模块。


import { getProjectList, createProject } from '@/api/project'


当然了,在项目的api模块下要先写好这个2个组件,这里在之前登录部分中也讲过。


import request from '@/utils/request'
export function getProjectList(params) {
  return request({
    url: '/my_platform/project/list',
    method: 'get',
    params
  })
}
export function createProject(data) {
  return request({
    url: '/my_platform/project/list',
    method: 'post',
    data
  })
}


1. data()


export default {} 定义了这个模块被导出,所以其他模块可以导入这个模块去使用。


data()这个方法中,定义了这个组件返回的变量。以我目前的理解,

中需要用到的变量,都可以在这里定义。


data() {
      return {
        list: null,
        listLoading: true,
        dialogStatus: undefined,
        dialogUpdateVisible: false,
        createInfo: {
          projectName: '',
          description: ''
        }
      }
    }


比如这里的list,就是用来存放后端返回的列表数据,然后跟el-table进行绑定。


<el-button class="filter-item" style="margin-left: 10px;" type="primary" icon="el-icon-edit"
                 @click="projectCreate(createInfo)">
        新建
      </el-button>
    </div>
    <div style="margin-top:20px;"></div>
    <el-table
      v-loading="listLoading"
      :data="list"  // 看这里,看这里,看这里
      element-loading-text="Loading"
      border
      fit
      highlight-current-row>
      <el-table-column align="center" label="项目ID" width="95">
        <template slot-scope="scope">
          {{ scope.row.id }} //每一列要展示的数据字段,id
        </template>
      </el-table-column>
      <el-table-column label="项目名称">
        <template slot-scope="scope">
          {{ scope.row.projectName }} //每一列要展示的数据字段,projectName 
        </template>
      </el-table-column>


2. created()


它的作用就是初始化数据。比如这里的获取项目列表,我肯定是要先拿到数据后,才在html进行渲染出来。


所以在这里就调用了请求项目列表的方法projectGet()


created() {
      this.projectGet()
    },
    methods: {
      projectGet() { //调用后端接口,获取项目列表
        this.listLoading = true
        getProjectList().then(response => {
          this.list = response.data
          this.listLoading = false
        })
      },


3. methods


这里就是写各种方法的地方了,比如我这个组件需要可以查询后端列表接口,还要调用创建项目的接口,


所以在这里就可以写上我们要用的2个方法。


methods: {
      projectGet() { //调用后端接口,获取项目列表
        this.listLoading = true
        getProjectList().then(response => {
          this.list = response.data
          this.listLoading = false
        })
      },
      requestInfo() {
          this.createInfo.projectName = '',
          this.createInfo.description = ''
      },
      projectCreate() {
        this.requestInfo()
        this.dialogStatus = 'create'
        this.dialogUpdateVisible = true
      },
      handleCreate() { //调用后端接口,创建项目
        this.dialogStatus = 'create'
        this.dialogUpdateVisible = true
        createProject(this.createInfo).then(() => {
          this.dialogUpdateVisible = false
          this.projectGet()
        })
      }


vue指令


前端代码里可以看的很多的@,以新增项目页面的代码为例:


<el-dialog :visible.sync="dialogUpdateVisible" :title="dialogStatus==='create'?'添加项目':'更新项目'" >
      <el-form ref="dataForm" :model="createInfo" label-position="left" label-width="70px" style="width: 400px; margin-left:50px;">
        <el-form-item label="项目名称" prop="title">
          <el-input v-model="createInfo.projectName" />
        </el-form-item>
        <el-form-item label="项目描述">
          <el-input v-model="createInfo.description" :autosize="{ minRows: 2, maxRows: 4}" type="textarea" />
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogUpdateVisible = false">
          取消
        </el-button>
        <el-button type="primary" @click="dialogStatus==='create'?handleCreate():updateData()">
          确认
        </el-button>
      </div>
    </el-dialog>


1. v-bind


缩写就是, 比如这里的title属性就是跟 dialogStatus进行了绑定,

dialogStatus是定义在了data里的返回字段。


:title="dialogStatus==='create'?'添加项目':'更新项目'"



这里的目的就是当 dialogStatus"create" 时,页面标题显示添加项目,否则就是显示更新项目


1268169-20200727104548382-877637425.png

1268169-20200727104554278-720255796.png


2. v-on


缩写就是 @,用于绑定HTML事件。还是看上面的创建页面代码:


<el-button type="primary" @click="dialogStatus==='create'?handleCreate():updateData()">
          确认
        </el-button>


这里就是绑定了一个click事件,当 点击确定按钮就会触发。当dialogStatus"create",调用 handleCreate()方法创建项目。


3. { {} }


就是模板语法了,可以放很多东西:表达式、字符串、正则等等。


这里就是用来展示每一行展示的字段数据,比如创建时间。


<el-table-column label="创建时间" width="220" align="center">
        <template slot-scope="scope">
          {{ scope.row.createTime }}
        </template>


最后,列表和新增的效果就是酱紫。


1268169-20200727104800759-923765735.png

1268169-20200727104854579-1027983924.png


相关文章
|
10天前
|
前端开发 安全 开发工具
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
137 90
【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
6天前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
47 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
15天前
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
116 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
4天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
26 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
13天前
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
36 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
2月前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
148 1
|
7天前
|
移动开发 JavaScript API
Vue Router 核心原理
Vue Router 是 Vue.js 的官方路由管理器,用于实现单页面应用(SPA)的路由功能。其核心原理包括路由配置、监听浏览器事件和组件渲染等。通过定义路径与组件的映射关系,Vue Router 将用户访问的路径与对应的组件关联,支持哈希和历史模式监听 URL 变化,确保页面导航时正确渲染组件。
|
11天前
|
监控 JavaScript 前端开发
ry-vue-flowable-xg:震撼来袭!这款基于 Vue 和 Flowable 的企业级工程项目管理项目,你绝不能错过
基于 Vue 和 Flowable 的企业级工程项目管理平台,免费开源且高度定制化。它覆盖投标管理、进度控制、财务核算等全流程需求,提供流程设计、部署、监控和任务管理等功能,适用于企业办公、生产制造、金融服务等多个场景,助力企业提升效率与竞争力。
66 12
|
7天前
|
JavaScript 前端开发 开发者
Vue中的class和style绑定
在 Vue 中,class 和 style 绑定是基于数据驱动视图的强大功能。通过 class 绑定,可以动态更新元素的 class 属性,支持对象和数组语法,适用于普通元素和组件。style 绑定则允许以对象或数组形式动态设置内联样式,Vue 会根据数据变化自动更新 DOM。
|
7天前
|
JavaScript 前端开发 数据安全/隐私保护
Vue Router 简介
Vue Router 是 Vue.js 官方的路由管理库,用于构建单页面应用(SPA)。它将不同页面映射到对应组件,支持嵌套路由、路由参数和导航守卫等功能,简化复杂前端应用的开发。主要特性包括路由映射、嵌套路由、路由参数、导航守卫和路由懒加载,提升性能和开发效率。安装命令:`npm install vue-router`。

热门文章

最新文章