首页 > 其他分享 >Vue3+Element-Plus安装及模拟增删改查

Vue3+Element-Plus安装及模拟增删改查

时间:2023-06-29 18:44:25浏览次数:57  
标签:vue const name 改查 value Element Plus globalIndex tableData

软件安装:nodejs16

https://nodejs.org/download/release/v16.20.0/

将npm设置为淘宝镜像:

npm config set registry https://registry.npm.taobao.org

 

创建vue3项目:

npm init vue@latest

Eleement-Plus

https://element-plus.gitee.io/zh-CN/

安装:

npm install element-plus --save

 

设置全局CSS:


* {
margin: 0;
padding: 0;
box-sizing: border-box;
}

 
package.json内:
{
  "name": "vue3-demo",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "dev": "vite",
    "build": "vite build",
    "preview": "vite preview"
  },
  "dependencies": {
    "element-plus": "^2.3.7",
    "vue": "^3.3.4",
    "vue-router": "^4.2.2",
    "vue": "latest",
    "vue": "latest",
    "vue": "latest"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^4.2.3",
    "vite": "^4.3.9"
  }
}
导入element-plus: main.js中加入
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

 

导入包装数据所需的组件

import {ref, reactive} from "vue";

HomeView.vue:

<template>
  <div style="padding: 10px;">
    <el-input style="width: 300px" placeholder="请输入名称" v-model="name" clearable></el-input>
    <el-button type="primary" @click="search" style="margin-left: 5px">查询数据</el-button>
    <el-button type="primary" @click="handleAdd">新增数据</el-button>
    <div style="margin: 10px;">
      <el-table :data="tableData" style="width: 100%">
        <el-table-column prop="date" label="日期" width="180" align="center" />
        <el-table-column prop="name" label="姓名" width="180" align="center"/>
        <el-table-column prop="address" label="地址" align="center" />
        <el-table-column label="操作">
          <template #default="scope">
              <el-button link type="primary" size="small" @click="handleEdit(scope.row,scope.$index)">编辑</el-button>
              <el-button link type="danger" size="small" @click.prevent="remove(scope.$index)">删除</el-button>

          </template>
        </el-table-column>
      </el-table>
    </div>

    <el-dialog v-model="dialogFormVisible" title="信息">
      <el-form :model="form" label-width="120px">
        <el-form-item label="日期">
          <el-input v-model="form.date" autocomplete="off" />
        </el-form-item>
        <el-form-item label="姓名">
          <el-input v-model="form.name" autocomplete="off" />
        </el-form-item>
        <el-form-item label="地址">
          <el-input v-model="form.address" autocomplete="off" />
        </el-form-item>
      </el-form>
      <template #footer>
      <span class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取消</el-button>
        <el-button type="primary" @click="save">
          确认
        </el-button>
      </span>
      </template>
    </el-dialog>

  </div>
</template>
<script setup>
  import {ref, reactive} from "vue";//导入包装数据
  const tableData = ref([
    {
      date: '2016-05-03',
      name: 'jerry',
      address: 'No. 189, Grove St, Los Angeles',
    },
    {
      date: '2016-05-02',
      name: 'Tom',
      address: 'No. 189, Grove St, Los Angeles',
    }
  ])
  const dialogFormVisible = ref(false)
  let form = reactive({}) //const不能修改
  const globalIndex=ref(-1)//全局保存的编辑行号
  const name=ref('')



  //新增数据 设置新的空的绑值对象 打开弹窗 进行页面渲染
  const handleAdd=()=>{
    form = reactive({})
    dialogFormVisible.value=true//打开弹窗
  }
  //保存数据,把数据插入到tableData里面,并刷新数据,弹窗关闭
  const save=()=>{
      if (globalIndex.value>=0){//表示编辑
          tableData.value[globalIndex.value] = form
          globalIndex.value=-1//还原回去
      } else {//新增
          tableData.value.push(form)
      }
    dialogFormVisible.value=false
  }

  //编辑数据,先赋值表单,再弹窗
  const handleEdit=(row,index)=>{
      const newObj = Object.assign({},row)
      form = reactive(newObj)
      globalIndex.value=index//把当前编辑的行号赋值给全局的保存的编辑的行号
      console.log(globalIndex.value)
      dialogFormVisible.value=true
  }

  //删除数据,从index的位置开始,删除一行
  const remove = (index) => {
      tableData.value.splice(index, 1)
  }

  const search = () =>{
    tableData.value = tableData.value.filter(v => v.name.includes(name.value))
  }
</script>

 

 

标签:vue,const,name,改查,value,Element,Plus,globalIndex,tableData
From: https://www.cnblogs.com/gjkt2001/p/17514971.html

相关文章

  • Element Table 根据列的label class 自动计算合计
    定义table求和方法exportfunctiongetSummariesByTableColumn(param,opt){opt.sumText??='合计'opt.getColProperty??=rawProp=>rawPropconst{columns,data}=paramconstsums=[]columns.forEach((column,index)=>{if(i......
  • appium报错AttributeError: 'WebDriver' object has no attribute 'find_element_by_i
    解决方法:fromappium.webdriver.common.appiumbyimportAppiumBy#导入AppiumBysearch=driver.find_element(AppiumBy.ID,"com.android.settings:id/search")#编写格式:driver.find_element(by=AppiumBy.ACCESSIBILITY_ID,value='accessibility_id')思考流程:......
  • JavaScript 链表的增删改查
       //节点对象classNode{constructor(data){this.data=data;//存储节点数据this.next=null;//存储下一个节点的引用,默认为null}}//链表对象classLinkedList{constructor(){this.head=null;//链表头节点,默认为null}......
  • 图书商城项目练习①管理后台Vue2/ElementUI
    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程。面向初学者,本人也是初学者,搬砖技术还不成熟。项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite)、到后端服务Node.js(Express),再到Web端的Vue,包含服务端、管理后台、商城网站、小程序/App,分......
  • leetcode -- Kth Smallest Element in a BST -- 简单重点
    https://leetcode.com/problems/kth-smallest-element-in-a-bst/这里注意BST的leftsubtree所有**node都要小于root,rightsubtree所有node都要大于**root。没有等于,并且是所有node思路1非递归用stack用inorder的模板就行classSolution(object):definorder(self,root,......
  • vue2+element-ui国际化实战不刷新页面
    背景有的时候我们做的项目需要支持中英文切换,那么我们就需要使用到vue-i18n插件步骤安装以及挂载安装vue-i18n依赖npmivue-i18n@8在src同级的目录下创建language文件下,在language文件夹下新增3个文件(index.js,en.js,zh.js)index.jsimportVuefrom"vue";importVu......
  • 图书商城Vue+Element+Node项目练习(...)
    本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程。面向初学者,本人也是初学者,搬砖技术还不成熟。项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite)、到后端服务Node.js(Express),再到Web端的Vue,包含服务端、管理后台、商城网站、小程序/App,分......
  • mybatisplus跨库操作和@Transactional一起使用的问题
    1、当方法使用了@Transactional注解,mybatisplus切换库之前已经有对当前库进行操作的话,切库将不成功;2、当方法使用了@Transactional注解,mybatisplus切换库之前没有对当前库进行操作的话,切库成功,但是@Transactional注解好像没有生效,操作报异常之后上一个操作没有回退;......
  • 使用element-plus的el-pagination分页组件的时候怎么换中文?
    element里面的分页是英文版的,但是项目需求是要中文的,可以用el-config-provider(切换系统语言)全局的配置选项,有locale属性,用来切换语言包做法如下:在main.js引入对应的包,代码如下:1import'normalize.css/normalize.css'2importElementPlusfrom'element-plus'3import'......
  • 在element-ui视频上传使用canvas截取视频帧数,并且转为视频封面。
    <el-upload:http-request="getFile"//自定义上传action:on-change="handleFileChange"//监听文件上传ref="upload"accept="video/*"//定义格式为视频><el-butto......