项目平台——测试报表的实现(六)

这里写目录标题

  • 一、页面成果图展示
  • 二、代码逻辑
    • 1、接口封装
    • 2、发送接口请求
  • 三、样式设计
    • 1、element-plus中表格组件的使用
  • 四、总体代码
  • 五、问题解决
  • 六、项目首页【执行记录】设计
    • 1、导入子组件
    • 2、注册子组件
    • 3、使用子组件

一、页面成果图展示

项目平台——测试报表的实现(六)_第1张图片

二、代码逻辑

1、接口封装

api/index.js

// 传递查询字符串参数格式
	getRecord(id){
		return http.get(`/records/`,{
			params:{
				plan__project:id
			}
		})
	}

2、发送接口请求

Records.vue

<script>
import { mapState } from 'pinia'
import { userStore } from '../store/user.js'


export default{
    data(){
        return{
            recordList:[]
        }
    },
    computed:{
        ...mapState(userStore,['pro'])
    },

    methods:{
            async getAllRecord(){
                const response = await this.$api.getRecord(this.pro.id)
                if(response.status===200){
                    this.recordList=response.data
                }

            }
    },
    created(){
        this.getAllRecord()
    }
}

</script>

特别注意:
1、 定义created()的目的是,每次打开页面需要调用getAllRecord函数,渲染页面。
2、执行逻辑
当在项目列表页面,选择项目进入项目首页时,会将项目信息保存在vue的全局数据存储仓库中
项目平台——测试报表的实现(六)_第2张图片
将pro传递到全局定义的方法中savePro(pro)中,并将数据保存在vue全局共享数据中(state——》pro)
项目平台——测试报表的实现(六)_第3张图片

import { mapState } from ‘pinia’
import { userStore } from ‘…/store/user.js’
mapState:映射Pinia中的全局数据
userStore:仓库名称

定义计算属性:computed
将pinia中定义的全局数据映射为当前组件的计算属性
从userStore对象中映射pro参数(项目信息)
项目平台——测试报表的实现(六)_第4张图片
将项目id作为查询字符串参数,发送接口请求
项目平台——测试报表的实现(六)_第5张图片

三、样式设计

1、element-plus中表格组件的使用

项目平台——测试报表的实现(六)_第6张图片
项目平台——测试报表的实现(六)_第7张图片
prop接收后端传递的key,
label接收字段名称
项目平台——测试报表的实现(六)_第8张图片

项目平台——测试报表的实现(六)_第9张图片
通过for循环遍历将创建时间加到label列表中;将通过率加入到value列表中
返回label和value2个字段
项目平台——测试报表的实现(六)_第10张图片
项目平台——测试报表的实现(六)_第11张图片
渲染图表,需要注意的时需要将数据挂载成功之后再渲染图表

项目平台——测试报表的实现(六)_第12张图片

四、总体代码

<template>
    <!-- 图表展示 -->
    <div class="char_box" ref="chart1"></div>
    <!-- 执行记录的表格 -->
    <el-table :data="recordList" style="width: 100%">
        <el-table-column prop="create_time" label="执行时间" min-width="180"/>
        <el-table-column prop="env_name" label="执行环境"/>
        <el-table-column prop="plan_name" label="测试计划" />
        <el-table-column prop="all" label="总用例数"/>
        <el-table-column prop="success" label="通过用例"/>
        <el-table-column prop="pass_rate" label="通过率"/>
        <el-table-column label="测试报告" width="150px">
            <template #default="scope">
                <el-button icon="View" type="success" plain>查看报告</el-button>
            </template>
        </el-table-column>
    </el-table>

    
</template>

<script>
import { mapState } from 'pinia'
import { userStore } from '../store/user.js'
import mychart from '../common/myChart.js'

export default{
    data(){
        return{
            recordList:[]
        }
    },
    computed:{
        ...mapState(userStore,['pro']),

        chartData(){
            let label=[]
            let value=[]
            this.recordList.forEach(item => {
                label.push(item.create_time)
                value.push(item.pass_rate)
            });
            return{
                label:label,
                value:value
            }
        }
    },

    methods:{
            async getAllRecord(){
                const response = await this.$api.getRecord(this.pro.id)
                if(response.status===200){
                    this.recordList=response.data
                }

            },
            // 渲染图表
            showChart(){
                const ele = this.$refs['chart1']
                mychart.chart3(ele,this.chartData.value,this.chartData.label)

            }
    },
    created(){
        this.getAllRecord();

    },
    // 数据挂载成功之后再渲染图表
    mounted(){
        // 为了保险起见,设置1秒的延时
        setTimeout(()=>{
            this.showChart()
        },1000)
        
    }
}

</script>

<style scoped>
    .char_box{
        height: 300px;
        background: #f2f2f2;
    }
</style>

项目平台——测试报表的实现(六)_第13张图片

五、问题解决

当数据量太多的话,向下滚动鼠标,右侧菜单栏会出现空白的地方
项目平台——测试报表的实现(六)_第14张图片
解决
使用element-plus中的滚动条组件,将图表展示放到滚动条组件中。
项目平台——测试报表的实现(六)_第15张图片

六、项目首页【执行记录】设计

1、导入子组件

项目平台——测试报表的实现(六)_第16张图片

2、注册子组件

在这里插入图片描述

3、使用子组件

项目平台——测试报表的实现(六)_第17张图片
项目平台——测试报表的实现(六)_第18张图片

你可能感兴趣的:(Vue项目,javascript,前端,开发语言)