【无标题】

数据操作的前端设计

vue简介

首先了解vue是什么?
Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。
同时它有两个核心功能:
声明式渲染:Vue 基于标准 HTML 拓展了一套模板语法,使得我们可以声明式地描述最终输出的 HTML 和 JavaScript 状态之间的关系。
响应性:Vue 会自动跟踪 JavaScript 状态并在其发生变化时响应式地更新 DOM。

页面设计

首先数据展示需要先设计一个页面,页面模版可以在element的组件板块中寻找,里面包含了众多模版,如表单,按钮等,我的使用的组件如下:

<el-table :data="dataList" border  v-loading="dataListLoading"
      @selection-change="selectionChangeHandle" style="width: 100%">
      <el-table-column
        type="selection"
        header-align="center"
        align="center"
        width="50"
      >
      </el-table-column>
      <el-table-column
        prop="id"
        header-align="center"
        align="center"
        label="ID"
      >
      </el-table-column>
      <el-table-column prop="name" label="姓名" align="center">
      </el-table-column>
      <el-table-column prop="age" label="年龄" align="center">
      </el-table-column>
      <el-table-column prop="accountBalance" label="余额(元)" align="center">
      </el-table-column>
      <el-table-column
        prop="createTime"
        label="创建时间"
        align="center"
      >
      </el-table-column>
      <el-table-column
        prop="completionStatus"
        header-align="center"
        align="center"
        label="用户状态"
      >
        <template slot-scope="scope">
          <el-tag v-if="scope.row.completionStatus === 1" size="small"
            >正常</el-tag
          >
          <el-tag v-else size="small" type="danger">冻结</el-tag>
        </template>
      </el-table-column>
      <el-table-column
        fixed="right"
        header-align="center"
        align="center"
        label="操作"
      >
        <template slot-scope="scope">
          <el-button v-if="isAuth('sys:userinfo:save')" type="primary" @click="addOrUpdateHandle(scope.row.id)"  icon="el-icon-edit" circle></el-button>
          <el-button v-if="isAuth('sys:userinfo:delete')" type="danger" @click="deleteHandle(scope.row.id)" icon="el-icon-delete" circle></el-button>
        </template>
      </el-table-column>
    </el-table>

方法定义

里面设计了一个表单,提交的字段与后端数据库的字段相对应,其中prop代表与数据库的字段互相绑定,必须与字段名一致,否则会获取不到数据。
定义好样式后就要在scrip中定义对应的增删查改方法,展示方法:

getDataList() {
      // 表示正在加载数据
      this.dataListLoading = true;
      this.$http({
        //与后端进行交互
        url: this.$http.adornUrl("/sys/userinfo/list"),
        // 什么是get
        //方式为get,即发送get请求
        method: "get",
        // 什么是adornParams
        //get请求携带参数
        params: this.$http.adornParams({
          page: this.pageIndex,
          limit: this.pageSize,
          name: this.dataForm.name,
        }),
      }).then(({ data }) => {
        if (data && data.code === 0) {
          this.dataList = data.page.list;
          this.totalPage = data.page.totalCount;
          if(this.dataList.length<=0 && this.pageIndex>1){
            this.pageIndex = this.pageIndex-1
            this.getDataList()
          }
        } else {
          this.dataList = [];
          this.totalPage = 0;
        }
        // 表示加载完成
        this.dataListLoading = false;
      }).catch(error => {
        this.dataListLoading = false;
        console.error(error);
      })
    },

删除方法:

   deleteHandle (id) {
        var ids = id ? [id] : this.dataListSelections.map(item => {
          return item.id
        })
        // 弹出对话框
        this.$confirm(`确定对[id=${ids.join(',')}]进行[${id ? '删除' : '批量删除'}]操作?`, '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          this.$http({
            // 向后端发送请求,请求方式是post
            url: this.$http.adornUrl('/sys/userinfo/delete'),
            method: 'post',
            data: this.$http.adornData(ids, false)
          }).then(({data}) => {
            if (data && data.code === 0) {
              this.$message({
                message: '操作成功',
                type: 'success',
                duration: 1500,
                onClose: () => {
                  // 刷新用户列表信息
                  this.getDataList()
                }
              })
            } else {
              // 返回错误信息
              this.$message.error(data.msg)
            }
          })
        }).catch(() => {})
      }

其原理为先判断id是一个还是多个,多个则为批量删除,单个则是单个删除。
增添和修改可以使用同一个方法,但要添加一个前提条件,先判断id是否存在,如果存在则进行修改,如果不存在则进行新增

    addOrUpdateHandle(id) {
      this.addOrUpdateVisible = true;
      this.$nextTick(() => {
        this.$refs.addOrUpdate.init(id);
      });
    },

查询方法则是根据名字进行查询

    return {
      // 表单数据对象
      dataForm: {
        name: "",
      },
      // 数据列表
      dataList: [],
      // 当前页面,为1
      pageIndex: 1,
      // 每页显示数据为5
      pageSize: 5,
      // 数据总页数默认为0
      totalPage: 0,
      dataListLoading: false,
      // 表示数据列表中选中的项,初始值为空数组,表示没有选中任何项
      dataListSelections: [],
      // 表示添加或更新表单的显示状态,初始值为 false,表示添加或更新表单未显示。
      addOrUpdateVisible: false,
    };
    search() {
      this.pageIndex = 1;
      this.getDataList();
    },

大致过程如上,完成后即可得到数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值