vue3+ts 调用接口,数据显示

数据展示

(例:展示医院等级数据,展示医院区域数据同理。)

接口文档中,输入参数 测试一下接口,发请求 看是否能够拿到信息

获取接口,api/index.ts 

/home/index.ts
// 统一管理首页模块接口
import request from '@/utils/request.ts'
import type { HospitalLevelAndRegionResponseData } from './type'
// 通过枚举管理首页模块的接口地址
enum API {
    // 获取医院等级以及地区的接口
    HOSPITALLEVELANDREGION_URL= '/cmn/dict/findByDictCode/'
}
// 获取医院的等级或者获取医院地区的数据   <接口返回的数据类型>
export const reqHospitalLevelAndRegion = (dictCode:string)=>request.get<any,HospitalLevelAndRegionResponseData>(API.HOSPITALLEVELANDREGION_URL+dictCode);

api/type.ts 中,写 接口的 ts 类型。并在 api/index.ts 中,写明 接口返回的数据类型

api/typs.ts
// 代表医院的等级或者地区数据的ts类型
export interface HospitalLevelAndRegion {
    "id": number,
    "createTime": string,
    "updateTime": string,
    "isDeleted": number,
    "param": {},
    "parentId": number,
    "name": string,
    "value": string,
    "dictCode": string,
    "hasChildren": boolean
}
export type HospitalLevelAndRegionArr = HospitalLevelAndRegion[];
// 获得等级或者医院接口返回数据类型
export interface HospitalLevelAndRegionResponseData extends ResponseData{
    data: HospitalLevelAndRegionArr
}

数据展示(发请求-> 拿数据-> 渲染数据)

pages/level/index.vue 中,挂载完毕 就要获取数组,展示数组

用到的 ts 数据类型在 api 文件夹中

 

代码如下,

/pages/index.vue
<script lang="ts">
export default {
    name: 'Level',
};
</script>

<script setup lang='ts'>
import { reqHospitalLevelAndRegion } from '@/api/home';
import { ref, onMounted } from 'vue';
import type { HospitalLevelAndRegionResponseData, HospitalLevelAndRegionArr } from '@/api/home/type'
// 定义一个数组存储医院等级数据
let levelArr = ref<HospitalLevelAndRegionArr>([]);
// 控制医院等级高亮响应式数据
let activeFlag = ref<string>('');

// 组件挂载完毕
onMounted(()=>{
    getLevel();
});
// 获取医院等级的数组
const getLevel = async () => {
    // 发一个请求
    let result: HospitalLevelAndRegionResponseData = await reqHospitalLevelAndRegion(
        'Hostype'
    );
    console.log(result);
    // 存储医院等级的数组
    if(result.code == 200){
        levelArr.value = result.data;
        
    }
}

渲染数据

高亮问题:

设置一个控制高亮的响应式数据 activeFlag ,点谁 默认存谁 谁高亮;点击时响应式数据改变的方法,动态类名控制 调整样式

/pages/index.vue
<script setup lang='ts'>
// 控制医院等级高亮响应式数据
let activeFlag = ref<string>('');

// 点击等级的按钮回调
const changeLevel = (level:string)=>{
    // 高亮响应式数组存储level数值
    activeFlag.value = level;
    // console.log(level);
}
</script>
<template>
    <div class="level">
        <h1>医院</h1>
        <div class="content">
            <div class="left">等级:</div>
            <ul class="hospital">
                <!-- ''为全部,12345分别为后几个li -->
                <li :class="{active:activeFlag==''}" @click="changeLevel('')">全部</li>    
                <li v-for="level in levelArr" :class="{active:activeFlag==level.value}" :key="level.value" @click="changeLevel(level.value)">{{ level.name }}</li>
            </ul>
            <div class="right"></div>
        </div>
    </div>
</template>

 


根据等级和地区筛选医院展示

显示数据

子传父

// 父组件中
<script lang='ts'>
const getLevel = (level: string) => {
    // 收集参数: 等级参数
    hostype.value = level;
    // 再次发请求
    getHospitalInfo();
}
</script>
<template>
            <!-- 等级子组件 -->
            <Level @getLevel="getLevel" />
</template>


// 子组件中
<script lang='ts'>
const changeLevel = (level:string)=>{
    // 触发自定义事件:将医院等级参数回传给父组件(子传父)
    $emit('getLevel',level);
}

// 触发自定义事件 ,let $emit = defineEmits(['父组件函数']);
let $emit = defineEmits(['getLevel']);
</script>
<template>
    <li @click="changeLevel('')">全部</li>

相关推荐

  1. vue3前端调用后端接口实现批量删除

    2024-04-04 15:22:03       38 阅读
  2. Vue3按顺序调用新增和查询接口

    2024-04-04 15:22:03       35 阅读
  3. <span style='color:red;'>vue</span><span style='color:red;'>3</span>+<span style='color:red;'>Ts</span>

    vue3+Ts

    2024-04-04 15:22:03      67 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-04 15:22:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-04 15:22:03       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-04 15:22:03       87 阅读
  4. Python语言-面向对象

    2024-04-04 15:22:03       96 阅读

热门阅读

  1. 【题单】 洛谷图论题单

    2024-04-04 15:22:03       40 阅读
  2. NOSQL(非关系型数据库)的优缺点有哪些?

    2024-04-04 15:22:03       49 阅读
  3. c++前言

    c++前言

    2024-04-04 15:22:03      31 阅读
  4. Qt信号槽的使用

    2024-04-04 15:22:03       38 阅读
  5. 设计模式(16):观察者模式

    2024-04-04 15:22:03       43 阅读
  6. 动态规划基础

    2024-04-04 15:22:03       44 阅读
  7. 编程基础---C/C++基础知识

    2024-04-04 15:22:03       37 阅读
  8. 一些常见的k8s问题和答案

    2024-04-04 15:22:03       32 阅读
  9. 面试前端八股文十问十答第七期

    2024-04-04 15:22:03       32 阅读
  10. 设计模式之职责链模式(下)

    2024-04-04 15:22:03       41 阅读
  11. WPS二次开发系列:WPS SDK初始化

    2024-04-04 15:22:03       43 阅读
  12. HTML中js简单实现石头剪刀布游戏

    2024-04-04 15:22:03       37 阅读
  13. Husky使用简明教程

    2024-04-04 15:22:03       40 阅读