前后端-医院详情显示

1、后端

1.1、控制层接口

在这里插入图片描述

@ApiOperation("医院详情信息")
@GetMapping("showHospital/{id}")
public Result showHospital(String id){
    Map<String,Object> map = hospitalService.getHospitalById(id);
    return Result.ok(map);
}

1.2、业务层

接口:
在这里插入图片描述

//医院详情信息
Map<String, Object> getHospitalById(String id);

实现类:
在这里插入图片描述

//医院详情信息
@Override
public Map<String, Object> getHospitalById(String id) {
    Map<String,Object> result = new HashMap<>();
    Hospital hospital = this.getHospitalHosType(hospitalRepository.findById(id).get());
    //医院基本信息,包含医院等级
    result.put("hospital",hospital);
    //预约信息单独处理页,更直观
    result.put("bookingRule",hospital.getBookingRule());
    hospital.setBookingRule(null);
    return result;
}

//远程调用服务,获取医院等级
private Hospital getHospitalHosType(Hospital hospital){
    String hosTypeString = dictFeignClient.getName("Hostype", hospital.getHostype());
    //查询 省 市 区信息
    String provinceString = dictFeignClient.getName(hospital.getProvinceCode());
    String cityString = dictFeignClient.getName(hospital.getCityCode());
    String districtString = dictFeignClient.getName(hospital.getDistrictCode());

    //将查询出来的细腻些存放到hospital中
    hospital.getParam().put("fullAddress",provinceString+cityString+districtString);
    hospital.getParam().put("hosTypeString",hosTypeString);
    return hospital;
}

2、前端页面

2.1、首先在src/hospital/list.vue中添加查看详情的按钮

在这里插入图片描述

<router-link :to="'/hospSet/hospital/show/'+scope.row.id">
    <el-button type="primary" size="mini">查看</el-button>
</router-link>

2.2、在src/api/list.js中编写方法调用后端接口

在这里插入图片描述

//医院详情信息
showHospital(id){
    return request({
        url:`/admin/hosp/hospital/showHospital/${id}`,
        method:'get'
    })
}

2.3、创建医院信息详情展示的页面,在此使用隐藏路由

在这里插入图片描述

{
  path: 'hospital/show/:id',
   name: '查看',
   component: () => import('@/views/hospital/show'),
   meta: { title: '查看', icon: 'table' },
   hidden:true
 }

2.4、创建show.vue,编写医院详情展示页面代码

在这里插入图片描述

<template>
<div class="app-container">
    <h4>基本信息</h4>
    <table class="table table-striped table-condenseda table-bordered" width="100%">
        <tbody>
            <tr>
                <th width="15%">医院名称</th>
                <td width="35%"><b style="font-size: 14px">{{ hospital.hosname }}</b> | {{ hospital.param.hostypeString }}</td>
                <th width="15%">医院logo</th>
                <td width="35%">
                    <img :src="'data:image/jpeg;base64,'+hospital.logoData" width="80">
                </td>
            </tr>
            <tr>
                <th>医院编码</th>
                <td>{{ hospital.hoscode }}</td>
                <th>地址</th>
                <td>{{ hospital.param.fullAddress }}</td>
            </tr>
            <tr>
                <th>坐车路线</th>
                <td colspan="3">{{ hospital.route }}</td>
            </tr>
            <tr>
                <th>医院简介</th>
                <td colspan="3">{{ hospital.intro }}</td>
            </tr>
        </tbody>
        </table>

        <h4>预约规则信息</h4>
        <table class="table table-striped table-condenseda table-bordered" width="100%">
        <tbody>
            <tr>
                <th width="15%">预约周期</th>
                <td width="35%">{{ bookingRule.cycle }}</td>
                <th width="15%">放号时间</th>
                <td width="35%">{{ bookingRule.releaseTime }}</td>
            </tr>
            <tr>
                <th>停挂时间</th>
                <td>{{ bookingRule.stopTime }}</td>
                <th>退号时间</th>
                <td>{{ bookingRule.quitDay == -1 ? '就诊前一工作日' : '就诊当日' }}{{ bookingRule.quitTime }} 前取消</td>
            </tr>
            <tr>
                <th>预约规则</th>
                <td colspan="3">
                <ol>
                <li v-for="item in bookingRule.rule" :key="item">{{ item }}</li>
                </ol>
                </td>
            </tr>
        <br>
            <el-row>
            <el-button @click="back">返回</el-button>
            </el-row>
        </tbody>
    </table>
</div>
</template>
<script>
import hospital from '@/api/hospital'
export default {
    data(){
        return {
            hospital: null,//医院信息
            bookingRule:null//预约信息
        }
    },
    created(){
        //获取路径中的路由id
        const id = this.$route.params.id
        //调用方法,根据id查询医院详情
        this.fetchHospDetail(id)
    },
    methods: {
        //根据id查询医院详情信息
        fetchHospDetail(id){
            hospital.showHospital(id)
                .then(response=>{
                    this.hospital = response.data.hospital
                    this.bookingRule = response.data.bookingRule
                })
        },
        //返回列表
        back(){
            //路由跳转
            this.$router.push({path:'hospSet/hosp/list'})
        }
        
    }
}
</script>

2.5、获取路径中的路由的中的id

在这里插入图片描述

2.6、通过路由跳转返回原来的页面

在这里插入图片描述

3、详情页面样式美化

改样式文件是控制详情展示的css布局文件
1,将/show.css文件引入yygh-admin/src/styles目录
在这里插入图片描述

2,在src/main.js文件添加引用
在这里插入图片描述

4、测试

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值