vue项目记录锁定和解锁功能实现

本文实例为大家分享了vue项目记录锁定和解锁功能实现代码,供大家参考,具体内容如下

一、定义 api 模块

import request from '@/utils/request'
 
export default {
    // 分页查询
    getHospitalList(current, limit, searchObj) {
        return request({
            url: `/admin/hospital/findPageHospital/${current}/${limit}`,
            method: 'post',
            data: searchObj // 使用 json 进行参数传递
        })
    },
    // 单条删除医院
    deleteHospital(id) {
        return request({
            url: `/admin/hospital/${id}`,
            method: 'delete'
        })
    },
    // 批量删除医院
    removeHospitals(idList) {
        return request({
            url: `/admin/hospital/batchRemove`,
            method: 'delete',
            data: idList
        })
    },
    //锁定和取消锁定
    lockHospital(id, status) {
        return request({
            url: `/admin/hospital/lockHospital/${id}/${status}`,
            method: 'put'
        })
    }
}

二、页面部分

<template>
  <div class="app-container">
    <!-- 条件查询 -->
    <el-form :inline="true" class="demo-form-inline">
      <el-form-item>
        <el-input v-model="searchObj.name" placeholder="医院名称" />
      </el-form-item>
      <el-form-item>
        <el-input v-model="searchObj.province" placeholder="省" />
      </el-form-item>
      <el-form-item>
        <el-input v-model="searchObj.city" placeholder="市" />
      </el-form-item>
      <el-form-item>
        <el-input v-model="searchObj.district" placeholder="区" />
      </el-form-item>
      <el-button type="primary" icon="el-icon-search" @click="getList()">搜索</el-button>
    </el-form>
    <!-- 批量删除按钮 -->
    <div>
      <el-button type="danger" size="mini" @click="removeRows()">批量删除</el-button>
    </div>
    <!-- 列表 -->
    <el-table :data="list" stripe style="width: 100%" @selection-change="handleSelectionChange">
      <!-- 复选框 -->
      <el-table-column type="selection" width="55" />
      <el-table-column type="index" width="50" />
      <el-table-column prop="name" label="名称" />
      <el-table-column prop="province" label="省" />
      <el-table-column prop="city" label="市" />
      <el-table-column prop="district" label="区" />
      <el-table-column label="状态" width="80">
        <template slot-scope="scope">{{ scope.row.status === 1 ? '可用' : '不可用' }}</template>
      </el-table-column>
      <el-table-column label="操作" width="280" align="center">
        <template slot-scope="scope">
          <!-- 删除按钮 -->
          <el-button
            type="danger"
            size="mini"
            icon="el-icon-delete"
            @click="removeDataById(scope.row.id)"
          >删除</el-button>
          <!-- 锁定按钮 -->
          <el-button
            v-if="scope.row.status==1"
            type="primary"
            size="mini"
            icon="el-icon-delete"
            @click="lockHospital(scope.row.id,0)"
          >锁定</el-button>
          <!-- 解锁按钮 -->
          <el-button
            v-if="scope.row.status==0"
            type="danger"
            size="mini"
            icon="el-icon-delete"
            @click="lockHospital(scope.row.id,1)"
          >解锁</el-button>
        </template>
      </el-table-column>
    </el-table>
    <!-- 分页 -->
    <el-pagination
      :current-page="page"
      :page-size="limit"
      :total="total"
      style="padding: 30px 0; text-align: center;"
      layout="total, prev, pager, next, jumper"
      @current-change="getList"
    />
  </div>
</template>
</div>
</template>
 
<script>
// 引入接口定义的 js 文件
import hospital from "@/api/hospital";
 
export default {
  // 定义变量和初始值
  data() {
    return {
      current: 1, // 当前页
      limit: 3, // 每页显示记录数
      searchObj: {}, // 条件封装对象
      list: [], // 没页数据集合
      total: 0, // 总记录数
      multipleSelection: [] // 批量选择中选择的记录列表
    };
  },
  // 在页面渲染之前执行,一般调用 methods 中定义的方法,得到数据
  created() {
    this.getList();
  },
  methods: {
    // 定义方法,进行请求接口调用
    // 锁定和解锁
    lockHospital(id, status) {
      hospital.lockHospital(id, status).then(response => {
        // 刷新
        this.getList();
      });
    },
 
    // 当表格复选框选项发生变化的时候触发
    handleSelectionChange(selection) {
      this.multipleSelection = selection;
    },
    // 批量删除医院
    removeRows() {
      this.$confirm("此操作将永久删除医院信息, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        // 确定执行 then 方法
        var idList = [];
        // 遍历数组得到每个 id 值,设置到 idList 里面
        for (var i = 0; i < this.multipleSelection.length; i++) {
          var obj = this.multipleSelection[i];
          var id = obj.id;
          idList.push(id);
        }
        // 调用接口
        hospital.removeHospitals(idList).then(response => {
          // 提示
          this.$message({
            type: "success",
            message: "删除成功!"
          });
          // 刷新页面
          this.getList();
        });
      });
    },
 
    // 医院列表
    getList(page = 1) {
      // 添加当前页参数
      this.current = page;
      hospital
        .getHospitalList(this.current, this.limit, this.searchObj)
        .then(response => {
          // response 是接口返回数据
          this.list = response.data.records;
          this.total = response.data.total;
        }) // 请求成功
        .catch(error => {});
    }, // 请求失败
 
    // 单条删除医院
    removeDataById(id) {
      this.$confirm("此操作将永久删除医院信息, 是否继续?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning"
      }).then(() => {
        // 确定执行 then 方法
        // 调用接口
        hospital.deleteHospital(id).then(response => {
          // 提示
          this.$message({
            type: "success",
            message: "删除成功!"
          });
          // 刷新页面
          this.getList(1);
        });
      });
    }
  }
};
</script>

三、测试效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Vue滑块解锁组件使用方法详解

    本文实例为大家分享了Vue滑块解锁组件的使用,供大家参考,具体内容如下 依据 JS拖动滑块验证 开发的 Vue 滑块解锁组件. <template>   <div ref="wrap" class="slider-unlock">     <div class="before">请按住滑块,拖动到最右边</div>     <div ref="after" class=&q

  • vue实现滑动解锁功能

    本文实例为大家分享了vue实现滑动解锁功能的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: <template>   <div>     <div id="box">       <div class="bgColor"></div>       <div class="txt">滑动解锁</div>       <!--给i标签添加上相应字体图

  • vue滑动解锁组件使用方法详解

    本文实例为大家分享了vue滑动解锁组件的使用,供大家参考,具体内容如下 这是一个pc端的滑动解锁组件 效果图: 话不多说,直接上代码 html部分 <template>     <div class="dragVerify">         <div class="spout" ref="spout">             <div                 class="slidi

  • vue项目记录锁定和解锁功能实现

    本文实例为大家分享了vue项目记录锁定和解锁功能实现代码,供大家参考,具体内容如下 一.定义 api 模块 import request from '@/utils/request'   export default {     // 分页查询     getHospitalList(current, limit, searchObj) {         return request({             url: `/admin/hospital/findPageHospital/${

  • Vue项目实现换肤功能的一种方案分析

    需求:网站换肤,主题切换.网站的主题色可以在几种常用颜色之间进行切换,还有相关图片.图标也要跟随主题进行切换. 不多说,先看下最终的实现效果: 文章由两部分组成:css切换,图片图标切换 css切换 1.在 static 目录下新建一个 styles 文件夹,在 styles 下新建一个 theme.scss 文件(项目使用了sass,会自动编译成css文件,如果没有使用这些预处理工具可以直接新建 theme.css),将需要替换的 CSS 声明在此文件中. .theme-test-btn {

  • electron + vue项目实现打印小票功能及实现代码

    一 需求: 公司项目需要通过electron调用系统打印机,实现打印小票的功能. 二.分析: electron打印大概有两种: 第一种:通过window的webcontent对象,使用此种方式需要单独开出一个打印的窗口,可以将该窗口隐藏,但是通信调用相对复杂. 第二种:使用页面的webview元素调用打印,可以将webview隐藏在调用的页面中,通信方式比较简单. 两个对象调用打印方法的使用方式都一样. 本文是通过第二种方法实现静默打印. 三.实现过程: 1.要实现打印功能,首先要知道我们的设备

  • vue项目中的支付功能实现(微信支付和支付宝支付)

    目录 项目中常见的支付方式 支付宝支付 微信支付 项目中常见的支付方式 支付宝支付 微信支付 余额支付(也需要支付宝或微信充值) 注意:本文仅从前端角度展开讲解 支付宝支付 项目难点: 页面是h5网页,用支付宝支付必须得到支付宝授权,调用支付宝的api. (如何授权请参照:调用支付宝api) 支付宝支付的一般过程是: 调用订单接口,获得订单号,支付金额等.    传递订单号,金额 至预支付接口    后台会返回来一个form,然后提交form自动跳转到支付宝支付页面 支付过程: 下图为为接口文档

  • vue项目中做编辑功能传递数据时遇到问题的解决方法

    在项目中完成编辑功能时,遇到了这样一个问题:编辑的功能使用的是一个子组件作为弹出框,如图 这里涉及到从父组件向子组件传递数据的问题,这个项目使用的是v1.0,问题是当点击了编辑以后,弹出的子组件中没有获取到父组件传过来的数据,检查后没有发现代码错误,最后解决的方法就是在父组件中,把传递的数据中的每一项都初始化了一遍就好了 creatIssue (type,list,id){ this.modelIssue=true; this.modeltype=type; if(type=='creat'){

  • vue项目中如何实现网页的截图功能 (html2canvas)

    目录 vue实现网页的截图功能 (html2canvas) 先安装html2canvas 引入html2canvas 主要实现代码 在使用html2canvas时 vue拖动截图功能实现 安装html2canvas.vue-cropper 在main.js注册vue-cropper组件 页面中引入html2canvas 代码分解 总结 vue实现网页的截图功能 (html2canvas) 最近做地图的项目,有个需求就是前端需要将网页的内容生成一张图片,这个功能如果让后端做的话,前端需要把大量的代

  • vue项目实现记住密码到cookie功能示例(附源码)

    本文介绍了vue项目实现记住密码到cookie功能示例,分享给大家,具体如下: 登陆页面 实现功能: 1.记住密码勾选,点登陆时,将账号和密码保存到cookie,下次登陆自动显示到表单内 2.不勾选,点登陆时候则清空之前保存到cookie的值,下次登陆需要手动输入 大体思路就是通过存/取/删cookie实现的:每次进入登录页,先去读取cookie,如果浏览器的cookie中有账号信息,就自动填充到登录框中,存cookie是在登录成功之后,判断当前用户是否勾选了记住密码,如果勾选了,则把账号信息存

  • vue项目中应用ueditor自定义上传按钮功能

    由于上传地址问题,需要自定义上传按钮,效果如图 由于在页里面没有操作dom,所以想到了用vue的 自定义事件绑定$emit .$on来把点击事件传递给ueditor. 首先是给ueditor添加自定义按钮: 1,打开ueditor.all.js,找到btnCmds,大概在27854行,如下图,在数组添加一个自定义的按钮名称,我写的是"love" ueditor.all.js 2,给按钮添加事件 还是在ueditor.all.js文件内找到commands指令 给刚才定义的按钮扩展事件,

  • 使用webpack搭建vue项目实现脚手架功能

    本文基于node.js开发环境,安装完node之后新建项目,通过webpack配置,实现vue-cli脚手架功能 对于刚刚接触编程的人来说,最难的可能并不是学习一种新语法或者框架,而是编程思维,这种思维在调试的时候显得尤为重要,拥有良好的编程习惯和思维能力可以大幅度提高调试效率.而编程思维的培养往往需要经验的积累,只有把底层原理一遍遍地思考之后,才会有更深入的理解,这也是vue官方文档中不建议vue初学者直接使用vue-cli的原因之一. 所以今天特意一步步通过webpack配置,实现与vue-

  • 实例详解ztree在vue项目中使用并且带有搜索功能

    zTree 是一个依靠 jQuery 实现的多功能 "树插件".优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 上篇文章给大家介绍了vue中如何使用ztree,大家可以点击查看. 之前博客介绍过怎么在vue里展示以及获取点击元素的内容,此文章之介绍搜索功能 html <el-form-item label="机构" class="ztree-par"> <i class="icon_org"

随机推荐