医生管理及其接口的开发

发布时间 2023-04-18 15:56:46作者: 葬爱_坤疤

接口的开发:

查询所有医生

  • 其中设计到单张表(TbDoctor表)

  • 后台管理,直接显示出所有医生信息列表

  • Controller

    • /**
          * 查询所有的医生
          * @return
          */
         @GetMapping("/list")
         public AjaxResult doctor1()
        {
             List<TbDoctor> list = tbDoctorService.list(null);
             int size = list.size();
             List list1 = new ArrayList<>();
             if (size!=0){
                 return AjaxResult.success("操作成功",list,size);
            }else {
                 return AjaxResult.success("操作失败",list1,size);
            }

        }

       

模糊查询

  • 其中设计到单张表(TbDoctor表)

  • 我在后台管理的中有一个功能是查询功能,这里就涉及到这个模糊的查询,填写的参数有两个

  • Controller

    • /**
      * 模糊查询
      * @param name
      * @param phonenumber
      * @return
      */
      @GetMapping("/likedoctorInfo")
      public AjaxResult likeselectDoctorInfo(String name,String phonenumber){
         LambdaQueryWrapper<TbDoctor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.like(StringUtils.isNotBlank(name), TbDoctor::getName, name)
                .like(StringUtils.isNotBlank(phonenumber), TbDoctor::getPhonenumber, phonenumber);
         List<TbDoctor> list = tbDoctorService.list(lambdaQueryWrapper);
         int size = list.size();
         List list1 = new ArrayList();
         if (size!=0){
             return AjaxResult.success("操作成功",list,size);
        }else {
             return AjaxResult.success("操作失败",list1,size);
        }

      }

 

 

根据片区查询出其中的医生

  • 其中设计到单张表(TbDoctor表)

  • 后台管理的中有一个功能是筛选片区医生的功能,这里就涉及到这个查询,将返回给你的areaId到医生表中找了同一个片区的所有医生

  • Controller

    • /**
      * 根据片区查询出其中的医生
      * @param areaId
      * @return
      */
      @GetMapping("/selectDoctorList")
      private AjaxResult selectDoctorList(Long areaId){
         List list1 = new ArrayList();
         LambdaQueryWrapper<TbDoctor> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(TbDoctor::getAreaId,areaId);
         List<TbDoctor> list = tbDoctorService.list(lambdaQueryWrapper);
         if (list.size()!=0){
             return AjaxResult.success("查询成功",list,list.size());
        }else
             return AjaxResult.success("暂无数据",list1,list.size());

      }

 

 

问题及解决

医生基本信息的添加bug

一般的来说添加医生的基本信息,应该是修改的功能。当这个账号注册了之后,有了这个专属id,所以我们在添加这个医生的基本信息,就是在指定这个医生id中来修改其属性。后面前端在调用我这个接口就出现了问题,id会出现一个新的,而且密码没有填会报错,当没有修改密码,传进去的null,其中就是对null进行了加密,就会报错。

 

 

学习重点及理解

医生管理的开发

查询医生列表接口调用

  • doctor.js

    • // 查询医生账号及信息列表
      export function listDoctor(query) {
       return request({
         url: '/system/doctor/list',
         method: 'get',
         params: query
      })
      }
  • doctor.vue

    • /** 查询医生账号及信息列表 */
        getList() {
          this.loading = true;
          listDoctor(this.queryParams).then(response => {
            this.doctorList = response.data.slice((this.queryParams.pageNum-1)*this.queryParams.pageSize,(this.queryParams.pageNum-1)*this.queryParams.pageSize+this.queryParams.pageSize);
            this.total = response.total;
            this.loading = false;
          });
        },

       

新增医生接口调用

  • doctor.js

    • // 新增医生账号及信息
      export function addDoctor(params) {
       return request({
         url: '/system/doctor',
         method: 'post',
         params
      })
      }
  • doctor.vue

    • /** 提交按钮 */
        submitForm() {
          this.$refs["form"].validate(valid => {
           
              if(this.form.doctorId==null){
                addDoctor({name: this.form.name, birth: this.form.birth, sex: this.form.sex, phonenumber: this.form.phonenumber,
                  accountNumber: this.form.accountNumber, password: this.form.password, homeAddress: this.form.homeAddress,cardNumber: this.form.cardNumber,
                  areaId: this.form.areaId});
                this.$modal.msgSuccess("新增成功");
                this.open = false;
                setTimeout(() => {this.getList();}, 600);
              } else{
                updateDoctor({name: this.form.name, birth: this.form.birth, sex: this.form.sex, phonenumber: this.form.phonenumber,
                  accountNumber: this.form.accountNumber, password: this.form.password, homeAddress: this.form.homeAddress,cardNumber: this.form.cardNumber,
                  areaId: this.form.areaId, doctorId: this.form.doctorId});
                this.$modal.msgSuccess("修改成功");
                this.open = false;
               
                setTimeout(() => {this.getList();}, 500);
              }
           
          });
        },

       

修改医生接口调用

  • doctor.js

    • // 修改医生账号及信息
      export function updateDoctor(params) {
       return request({
         url: '/system/doctor',
         method: 'put',
         params
      })
      }
  • doctor.vue

    • /** 修改按钮操作 数据回显*/
         handleUpdate(row) {
           this.reset();
           const doctorId = row.doctorId || this.ids
           const name = row.name || this.ids
           const birth = row.birth || this.ids
           const sex = row.sex || this.ids
           const phonenumber = row.phonenumber || this.ids
           const accountNumber = row.accountNumber || this.ids
           const password = row.password || this.ids
           const homeAddress = row.homeAddress || this.ids
           const cardNumber = row.cardNumber || this.ids
           const areaId = row.areaId || this.ids

           // getDoctor(doctorId).then(response => {
             this.form.doctorId = doctorId;
             this.form.name = name;
             this.form.birth = birth;
             this.form.sex = sex;
             this.form.phonenumber = phonenumber;
             this.form.accountNumber = accountNumber;
             this.form.password = password;
             this.form.homeAddress = homeAddress;
             this.form.cardNumber = cardNumber;
             this.form.areaId = areaId;


             this.open = true;
             this.title = "修改医生账号及信息";
           // });
        },

      /** 提交按钮 */
         submitForm() {
           this.$refs["form"].validate(valid => {
             
               if(this.form.doctorId==null){
                 addDoctor({name: this.form.name, birth: this.form.birth, sex: this.form.sex, phonenumber: this.form.phonenumber,
                   accountNumber: this.form.accountNumber, password: this.form.password, homeAddress: this.form.homeAddress,cardNumber: this.form.cardNumber,
                   areaId: this.form.areaId});
                 this.$modal.msgSuccess("新增成功");
                 this.open = false;
                 setTimeout(() => {this.getList();}, 600);
              } else{
                 updateDoctor({name: this.form.name, birth: this.form.birth, sex: this.form.sex, phonenumber: this.form.phonenumber,
                   accountNumber: this.form.accountNumber, password: this.form.password, homeAddress: this.form.homeAddress,cardNumber: this.form.cardNumber,
                   areaId: this.form.areaId, doctorId: this.form.doctorId});
                 this.$modal.msgSuccess("修改成功");
                 this.open = false;
                 
                 setTimeout(() => {this.getList();}, 500);
              }
             
          });
        },

       

模糊查询接口调用

  • doctor.js

    • // 模糊查询医生账号及信息详细
      export function getDoctor(params) {
       return request({
         url: '/system/doctor/likedoctorInfo',
         method: 'get',
         params
      })
      }
  • doctor.vue

    • //模糊查询
       likeList(name,phonenumber){
         this.loading = true;
         getDoctor({name: name, phonenumber: phonenumber}).then(response => {
           this.doctorList = response.data.slice((this.queryParams.pageNum-1)*this.queryParams.pageSize,(this.queryParams.pageNum-1)*this.queryParams.pageSize+this.queryParams.pageSize);
           this.total = response.total;
           this.loading = false;
        });
      },
           
      /** 搜索按钮操作 */
         handleQuery() {
           this.queryParams.pageNum = 1;
           this.likeList(this.queryParams.name,this.form.phonenumber)
        },

       

筛选片区接口调用

  • doctor.js

    • // 下拉列表
      export function selectAreaist(query) {
       return request({
         url: '/system/area/selectList',
         method: 'get',
         params: query
      })
      }

      // 根据片区查询出其中的医生
      export function selectAreaIdList(params) {
       return request({
         url: '/system/doctor/selectDoctorList',
         method: 'get',
         params
      })
      }
  • doctor.vue

    • <!--下拉列表-->
           <el-dropdown trigger="click" >
            <el-button type="primary">
              筛选片区<i class="el-icon-arrow-down el-icon--right" ></i>
            </el-button>
            <el-dropdown-menu slot="dropdown" >
              <template v-for="(item) in this.area1List">
                <template>
                  <el-dropdown-item @click.native = "delMemoHandler(item.areaId)" >{{ item.areaName }}</el-dropdown-item>
                </template>
              </template>
            </el-dropdown-menu>
          </el-dropdown>

      export default {
         name: "Doctor",
         data() {
           return {
      //下拉列表
             area1List: [],
          };
        },
         created() {
           this.getList();
             //下拉列表挂载
           this.handleClick();
        },
         methods: {
       delMemoHandler( id) {
         console.log(id)
          //使用过滤器筛选出id不等于要删除的数据的所有对象,并将其重新赋值给list数组
               selectAreaIdList({areaId: id}).then(response => {
               this.doctorList = response.data;
               this.total = response.total;
               this.loading = false;
                });
       
      },
       
       //下拉列表
       handleClick() {
               /**下拉列表 */
         selectAreaist().then(response => {
           this.area1List=response.data;
           console.log(this.area1List);
        });
       
        },
      }
      };
       </script>

 

删除医生接口调用

  • doctor.js

    • // 删除医生账号及信息
      export function delDoctor(params) {
       return request({
         url: '/system/doctor/',
         method: 'delete',
         params
      })
      }

       

  • doctor.vue

    • /** 删除按钮操作 */
       handleDelete(row) {
         const doctorIds = row.doctorId || this.ids;
         this.$modal.confirm('是否确认删除医生账号及信息编号为"' + doctorIds + '"的数据项?').then(function() {
           return delDoctor({doctorId: doctorIds});
        }).then(() => {
           this.getList();
           this.$modal.msgSuccess("删除成功");
        }).catch(() => {});
      },

       

扩展学习

判断出数据的男女(1/0)

  • vue

    • <el-table-column label="性别" align="center" prop="sex" :formatter="formatSex"/>

      //表格中性别数据处理
          formatSex(row, column, cellValue) {
           if (cellValue === "0") {
             return "女";
          } else if (cellValue === "1") {
             return "男";
          }
        },

       

总结

今天的学习状态是不错的将医生管理的页面,都完成了,通过片区的增删查改,我开始举一反三的去调用接口,难点就是学了新的功能就是下拉列表框,来筛选其中的片区的数据。