尚医通-查询所有子节点-前端整合-更新医院状态(二十三)

news2024/10/4 21:29:03

目录:

(1)医院管理-查询所有子节点接口

(2)医院列表-前端整合 

(3)更新医院上线状态-功能实现


(1)医院管理-查询所有子节点接口

先做一个省的查询 

在DictContrlller:中添加方法:

//根据dictCode查询下级节点(所有省)
    @ApiOperation(value = "根据dictCode获取下级节点")
    @GetMapping(value = "/findByDictCode/{dictCode}")
    public Result<List<Dict>> findByDictCode(@ApiParam(name = "dictCode", value = "节点编码", required = true)
                                                 @PathVariable String dictCode){
        //调用service方法根据dictCode查询下级节点
        List<Dict> list = dictService.findByDictCode(dictCode);
        return Result.ok(list);

    }

查询市用这个接口: 

 

 

 

DictService 接口: 

 

 

package com.atguigu.yygh.cmn.service;

import com.atguigu.yygh.model.cmn.Dict;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

public interface DictService extends IService<Dict> {
    //根据数据id查询子数据列表
    List<Dict> findChlidData(Long id);

    //导出数据字典接口
    void exportDictData(HttpServletResponse response);

    //导入数据字典
    void importDictData(MultipartFile file);

    //查询 医院等级
    String getDictName(String dictCode, String value);

    //根据dictCode查询下级节点
    List<Dict> findByDictCode(String dictCode);
}

 DictService Impl实现类:

 //根据数据id查询子数据列表
    @Cacheable(value = "dict",keyGenerator = "keyGenerator")  //缓存注解
    @Override
    public List<Dict> findChlidData(Long id) {
        QueryWrapper<Dict> wrapper=new QueryWrapper<>();
        wrapper.eq("parent_id",id);
        List<Dict> dictList = baseMapper.selectList(wrapper);
        //向dictList集合中的每个Dict对象设置hasChildren属性
        for (Dict dict:dictList){
            Long dictId = dict.getId();
            boolean ischild = this.isChildren(dictId);//调用下面方法获取是否有子节点
            dict.setHasChildren(ischild);//设置属性
        }
        return dictList;
    }
 


//根据dictCode查询下级节点
    @Override
    public List<Dict> findByDictCode(String dictCode) {
        //根据dictCode获取对应的id
        Dict codeDict = this.getDictByDictCode(dictCode);
        if(null == codeDict){
            return null;
        }
        //调用上面的方法据id查询子数据列表方法
        List<Dict> childData = this.findChlidData(codeDict.getId());
        return childData;
    }

    //根据dictCode获取Dict
    private Dict getDictByDictCode(String dictCode){
        QueryWrapper<Dict> wrapper=new QueryWrapper<>();
        wrapper.eq("dict_code",dictCode);
        Dict codedict = baseMapper.selectOne(wrapper);
        return  codedict;
    }

 成功查询出来数据:

(2)医院列表-前端整合 

 在前端项目:router下的index.js中添加一个新路由

 

在views下面创建hosp和list.vue 

在api下面创建接口:

import request from '@/utils/request'

export default {
  //医院列表
  getHospList(page, limit, searchObj) {
    return request({
      url: `/admin/hosp/hospital/list/${page}/${limit}`,
      method: 'get',
      params: searchObj //传递一个对象
    })
  },
  //根据dictCode查询所有子节点(所有省)
  findByDictCode(dictCode) {
    return request({
      url: `/admin/cmn/dict/findByDictCode/${dictCode}`,
      method: 'get'
    })
  },
  //根据id查询子数据列表
  findChildId(id) {
    return request({
      url: `/admin/cmn/dict/findChildData/${id}`,
      method: 'get'
    })
  }

}

list.vue:

<template>
  <div class="app-container">
    <!-- 上面的查询表单 -->
    <el-form :inline="true" class="demo-form-inline">
      <el-form-item>
        <el-select
          v-model="searchObj.provinceCode"
          placeholder="请选择省"
          @change="provinceChanged"
        >
          <el-option
            v-for="item in provinceList"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          />
        </el-select>
      </el-form-item>

      <el-form-item>
        <el-select
          v-model="searchObj.cityCode"
          placeholder="请选择市"
          @change="cityChanged"
        >
          <el-option
            v-for="item in cityList"
            :key="item.id"
            :label="item.name"
            :value="item.id"
          />
        </el-select>
      </el-form-item>

      <el-form-item>
        <el-input v-model="searchObj.hosname" placeholder="医院名称" />
      </el-form-item>

      <el-button type="primary" icon="el-icon-search" @click="fetchData()"
        >查询</el-button
      >
      <el-button type="default" @click="resetData()">清空</el-button>
    </el-form>

    <!-- banner列表 -->
    <el-table
      v-loading="listLoading"
      :data="list"
      border
      fit
      highlight-current-row
    >
      <el-table-column label="序号" width="60" align="center">
        <template slot-scope="scope">
          {{ (page - 1) * limit + scope.$index + 1 }}
        </template>
      </el-table-column>

      <el-table-column label="医院logo">
        <template slot-scope="scope">
          <img
            :src="'data:image/jpeg;base64,' + scope.row.logoData"
            width="80"
          />
        </template>
      </el-table-column>

      <el-table-column prop="hosname" label="医院名称" />
      <el-table-column prop="param.hostypeString" label="等级" width="90" />
      <el-table-column prop="param.fullAddress" label="详情地址" />
      <el-table-column label="状态" width="80">
        <template slot-scope="scope">
          {{ scope.row.status === 0 ? "未上线" : "已上线" }}
        </template>
      </el-table-column>
      <el-table-column prop="createTime" label="创建时间" />

      <el-table-column label="操作" width="230" align="center">
      </el-table-column>
    </el-table>

    <!-- 分页组件 -->
    <el-pagination
      :current-page="page"
      :total="total"
      :page-size="limit"
      :page-sizes="[5, 10, 20, 30, 40, 50, 100]"
      style="padding: 30px 0; text-align: center"
      layout="sizes, prev, pager, next, jumper, ->, total, slot"
      @current-change="fetchData"
      @size-change="changeSize"
    />
  </div>
</template>
<script>
import hospitalApi from "@/api/hosp";
export default {
  data() {
    //定义变量和初始值
    return {
      listLoading: true, // 数据是否正在加载
      list: null, // 医院列表数据
      total: 0, // 数据库中的总记录数
      page: 1, // 默认页码
      limit: 10, // 每页记录数
      searchObj: {}, // 查询表单对象
      provinceList: [], //所有省的集合
      cityList: [], //所有市的集合
      //districtList: [], //所有区的集合
    };
  },
  created() {
    //在页面渲染之前执行
    //调用医院列表方法
    this.fetchData();
    //调用查询所有省的方法
    this.findAllProvince();
  },
  methods: {
    //定义方法进行请求接口的调用
    //医院列表
    fetchData(page = 1) {
      console.log("翻页。。。" + page);
      // 异步获取远程数据(ajax)
      this.page = page;
      hospitalApi
        .getHospList(this.page, this.limit, this.searchObj)
        .then((response) => {
          //每页数据集合赋值给上面的list集合
          this.list = response.data.content;
          //总记录数
          this.total = response.data.totalElements;

          // 数据加载不显示
          this.listLoading = false;
        });
    },
    //查询所有省
    findAllProvince() {
      hospitalApi.findByDictCode("Province").then((reponse) => {
        //赋值给上面的定义的省的集合
        this.provinceList = reponse.data;
      });
    },
    //点击某个省,显示里面市(联动)
    provinceChanged() {
      //初始化值
      this.cityList = []; //市的集合清空
      this.searchObj.cityCode = null;
      //this.districtList = [];
      //this.searchObj.districtCode = null;
      //调用方法,根据省的id,查询下面的子节点
      hospitalApi.findChildId(this.searchObj.provinceCode).then((response) => {
        //把返回的数据赋值给cityList
        this.cityList = response.data;
      });
    },
    // 当分页页码发生改变的时候
    changeSize(size) {
      //每页显示条数的变化
      this.limit = size;
      this.fetchData(1);
    },
    //设置城市改变
    cityChanged() {
      this.$forceUpdate();
    },
    //重置表单数据
    resetData() {
      console.log("重置查询表单");
      this.searchObj = {};
      this.fetchData();
    },
  }
}
</script>   

 选择河北省: 出现了省市二级联动

 

 

(3)更新医院上线状态-功能实现

 

更新医院上线状态:

在HospitalController中添加方法:

 

 //更新医院的上线状态
    @ApiOperation(value = "更新上线状态")
    @GetMapping("updateHospStatus/{id}/{status}")
    public Result updateHospStatus( @ApiParam(name = "id", value = "医院id", required = true)
                                        @PathVariable("id") String id,
                                    @ApiParam(name = "status", value = "状态(0:未上线 1:已上线)", required = true)
                                        @PathVariable("status") Integer status){
        hospitalService.updateStatus(id, status);
        return Result.ok();
    }

 HospitalService 接口:

 

package com.atguigu.yygh.hosp.service;

import com.atguigu.yygh.model.hosp.Hospital;
import com.atguigu.yygh.vo.hosp.HospitalQueryVo;
import org.springframework.data.domain.Page;

import java.util.Map;

public interface HospitalService {
    //上传医院接口的方法
    void save(Map<String, Object> paramMap);

    //根据医院编号进行查询
    Hospital getByHoscode(String hoscode);

    //医院列表(条件查询分页)
    Page<Hospital> selectHospPage(Integer page, Integer limit, HospitalQueryVo hospitalQueryVo);

    //更新医院的上线状态
    void updateStatus(String id, Integer status);
}

 HospitalService Impl:实现类:

 //更新医院的上线状态
    @Override
    public void updateStatus(String id, Integer status) {
        //根基id查询医院的信息
        Hospital hospital = hospitalRepository.findById(id).get();
        //设置修改的值
        hospital.setStatus(status);
        hospital.setUpdateTime(new Date());
        hospitalRepository.save(hospital);
    }

 

在前端list.vue中加入按钮:

在api下的hosp.js添加新的访问接口:

 

 在页面list.vue编写方法:

 

点击上线:

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/136585.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据可视化大屏百度地图GPS轨迹位置感知状态开发实战案例解析(包含缩放控件、点线覆盖物、弹窗、标注图标分类功能)

系列文章目录 1.数据可视化大屏应急管理综合指挥调度系统完整案例详解&#xff08;PHP-API、Echarts、百度地图&#xff09; 2.数据可视化大屏百度地图API开发&#xff1a;停车场分布标注和检索静态版 3.百度地图高级开发&#xff1a;map.getDistance计算多点之间的距离并输入…

C语言及算法设计课程实验三:最简单的C程序设计——顺序程序设计(二)

C语言及算法设计课程实验三&#xff1a;最简单的C程序设计——顺序程序设计&#xff08;二&#xff09;一、实验目的二、 实验内容2.2、实验内容2&#xff1a;求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积三、 实验步骤3.2、顺序程序设计实验题目2&#xff1a;求圆周长、…

CTF文件隐写总结之图片

1.1 Fastjson反序列化 代码审计 本项目引入的Fastjson版本为1.2.58&#xff0c;该版本存在反序列化漏洞。 已确定了Fastjson版本存在问题&#xff0c;进一步寻找触发Fastjson的漏洞点。 我们关注两个函数JSON.parse()和JSON.parseObject(),并且执行函数内参数用户可控 Edi…

【博客系统】后台设计

文章目录博客系统&#xff08;使用模板技术&#xff09;准备工作数据库设计表设计文章表用户表完整SQL封装数据库操作代码创建DBUtil创建Blog类和User类创建BlogDao类和UserDao类实现insert实现selectAll实现selectOne实现delete实现selectByName实现selectByUserId验证数据库代…

Python 操作 MySQL 之 pysql 与 SQLAchemy

一、pymsql pymsql 是 Python 中操作 MySQL 的原生模块&#xff0c;其使用方法和 MySQL 的SQL语句几乎相同 1、下载安装 pip3 install pymysql 2、执行SQL 执行 SQL 语句的基本语法&#xff1a; 需要注意的是&#xff1a;创建链接后&#xff0c;都由游标来进行与数据库的…

CATCTF wp

文章目录ez_jsCat_Jumpmiao~CatCatPeekabooMeowMeowCatchCatCatFlagNepnep 祝你新年快乐啦&#xff01;ez_js f12搜索score&#xff0c;修改超过分数1即可获得flag 然后获得flag地址 访问即可 Cat_Jump 仿真玩半天不知道怎么解&#xff0c;最后直接搜关键词出的 挺可惜…

唱歌就能画一幅图像? #whisper-to-stable-diffusion

现在热门的不仅是多模态的文本图像生成&#xff0c;前阵子&#xff0c;OpenAI 发布了一个自动语音识别系统 Whispe 。在处理口音、背景噪声以及技术术语方面&#xff0c;Whisper 几乎达到了人类的水准。那么将 Whisper 与 Stable Diffusion 结合&#xff0c;可以直接完成语音生…

回顾 OpenMLDB 2022 之旅 | 开源之路,行将致远

2022年初&#xff0c;OpenMLDB 尚且懵懂稚嫩。彼时的我们刚刚走过开源道路上的第一个秋天&#xff0c;还没有结出丰硕的果实。前进着&#xff0c;期待着&#xff0c;2022的一切徐徐展开&#xff1a; 请旋转手机 和 OpenMLDB 共同回忆 2022 之旅 2022年末&#xff0c;OpenMLDB …

必看!.NET 7 在网络领域的四大更新

最新的 .NET 7 现已发布&#xff0c;我们想介绍一下其在网络领域所做的一些有趣的更改和添加。这篇文章我们将讨论 .NET 7 在 HTTP 空间、新 QUIC API、网络安全和 WebSockets 方面的变化。 HTTP 改进了对连接尝试失败的处理 在 .NET 6 之前的版本中&#xff0c;如果连接池中…

云计算运营—04 FusionSphere OpenStack 6.5方案介绍

FusionSphere OpenStack 6.5方案介绍 OpenStack 系统架构 OpenStack是什么 OpenStack是目前最流行的开源云操作系统&#xff1a; 资源抽象 OpenStack将各类硬件资源&#xff0c;通过虚拟化与软件定义的方式&#xff0c;抽象成资源池 资源分配与负载调度 OpenStack根据管理员…

Ardupilot EKF3核心算法《状态量的协方差矩阵推导》

目录 文章目录 目录摘要1.协方差矩阵推导2.关于 F的计算2.1 计算F的前四维关于四元数的状态方程2.2 计算F 的5-10维关于速度和位置的状态方程3.其他协方差的传播3.1 关于角增量偏差的协方差传播3.2 关于速度增量偏差的协方差传播3.3 关于地理坐标系地磁磁场矢量的协方差传播3.4…

【Vue基本指令】一.什么是Vue;二.Vue开发的方式;三.Vue的基本指令(重点)

目录 一.什么是Vue 1.前端技术的发展&#xff08;html、CSS、JavaScript&#xff09; &#xff08;1&#xff09;JQuery&#xff1a;是对JavaScript进行了封装&#xff0c;使得操作DOM、事件处理、动画处理、Ajax交互变得非常简洁、方便。是JavaScript的库。 &#xff08;&a…

《云原生》一文搞懂RocketMQ队列概述

目录 序 概念简述 一、客户端概念 1. Topic-主题 2.ConsumerGroup&#xff08;消费者组&#xff09; 概念一览图 二、消息传输模型 三、实践应用 1.配置文件 2.生产者 3.消费者 配置一览图 最后的话 序 接上一篇对rabbitMQ队列进行了梳理 《一文搞懂rabbitMQ消息…

shell技术

退出状态码 Shell 中运行的命令会使用0-255之间的整数值&#xff0c;作为退出状态码,并以此来告知shell该命令执行的状态。 通常情况下&#xff0c;约定0代表命令成功结束&#xff0c;非0代表程序非正常退出。 假如没有指定返回值&#xff0c;那么会用脚本的最后一个命令的执…

华为路由器配置笔记

路由器(Router),是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号,路由器工作在网络层,用来跨网段通信,路由器具有判断网络地址和选择IP路径的功能,它能在多网络互联环境中,建立灵活的连接,可用完全不同的数据分组和…

巧用数据分析表达式,让数据指标创建更简单

实现数据业务一体化的指标分析 从零售系统进化史get 数据统计的需求变更 零售系统需要的数据统计需求 V1.0 只需要获取当日累计的销售额&#xff0c;于是店老板就用 Excel或者纸质的表格创建了一个表&#xff0c;表中包含销售的日期时间&#xff0c;销售的产品&#xff0c;销…

c语言的变量和指针,怎么理解?

学会应用指针是C语言程序员的分水岭&#xff0c;也是C程序员级别的试金石。 变量可以分为基础变量、数组变量、指针变量&#xff0c;其中数组变量非常特殊&#xff0c;可以进一步分为基础数组变量和指针数组变量&#xff0c;所以暂时不考虑数组变量。假设我们在32位计算机上工…

【云原生】k8s之pod基础(下)

内容预知 1.pod的镜像拉取策略 1.1 镜像拉取说明 1.2 镜像拉取的策略 1.3 镜像拉取策略的设置操作 &#xff08;1&#xff09;Never策略的使用 &#xff08;2&#xff09;IfNotPresent策略在本地无镜像的情况下使用 &#xff08;3&#xff09; IfNotPresent策略在本地有…

客观认识植物乳杆菌 (L. plantarum) 及其健康益处

人体消化系统包含大约几百到几千种不同的细菌种类&#xff0c;其丰度构成因人而异。 其中少数益生菌乳杆菌属&#xff0c;即嗜酸乳杆菌、植物乳杆菌、短乳杆菌、乳酸乳杆菌、干酪乳杆菌、保加利亚乳杆菌、发酵乳杆菌、鼠李糖乳杆菌特异性产生细胞外蛋白、胞外多糖、细菌素和脂磷…

信息安全治理-信息安全状态示例

声明 本文是学习github5.com 网站的报告而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 信息安全治理-信息安全状态示例 组织可以生成一个信息安全状态&#xff0c;并将其作为信息安全的沟通工具披露给利益相关者。 组织宜选择和决定信息安全状态的格…