Vue使用Element实现增删改查+打包的步骤

 更新时间:2020年11月25日 10:57:22   作者:憧憬  
这篇文章主要介绍了Vue使用Element实现增删改查+打包的步骤,帮助大家更好的理解和学习vue框架,感兴趣的朋友可以了解下

在我们进行项目开发期间,避免不了使用各式各样的组件,Element是由饿了么公司前端团队开源。样式精美、组件齐全、易于上手。

效果:

组件使用

我们利用vue-cli创建一个项目,然后只需要安装element-ui即可

安装:npm i element-ui -S

然后在main.js中引用一下样式即可,可以选择按需加载,我们这边因为是演示一下,所以不去进行调整,项目中如果使用到的组件不多,可以选择按需加载。

main.js

import Vue from 'vue';
import App from './App.vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.config.productionTip = false;

Vue.use(ElementUI);

new Vue({
 render: h => h(App),
}).$mount('#app')

然后我们在src/components下新建一个组件,用来写我们的展示组件,然后在app.vue中导入即可

app.vue

<template>
 <div id="app">
  <Creator content1="憧憬"/>
 </div>
</template>

<script>
import Creator from './components/Creator/Creator';

export default {
 name: 'app',
 components: {
  Creator
 }
}
</script>

我们首先先使用表格,将数据展示出来

Creator.vue

<template>
  <div class="Creator">
    <el-row :gutter="20">
      <el-col :span="6">
        <el-input v-model="content" placeholder="请输入内容"></el-input>
      </el-col>

      <el-col :span="2">
        <el-button type="primary">搜索</el-button>
      </el-col>
    </el-row>

    <div style="height: 20px"/>

    <el-row :gutter="10" type="flex" justify="center">
      <el-col :span="14">
        <el-table
            :data="tableData"    // 声明列表使用的数据
            :key="'zip'"      // 声明每一行的key
            border
            style="width: 100%">
          <el-table-column
              fixed
              prop="date"
              label="日期"
              width="150">
          </el-table-column>
          <el-table-column
              prop="name"     // 对应tableData里面的需要展示的键
              label="姓名"
              width="120">
          </el-table-column>
          <el-table-column
              prop="province"
              label="省份"
              width="120">
          </el-table-column>
          <el-table-column
              prop="city"
              label="市区"
              width="120">
          </el-table-column>
          <el-table-column
              prop="address"
              label="地址"
              width="300">
          </el-table-column>
          <el-table-column
              prop="zip"
              label="邮编"
              width="120">
          </el-table-column>
          <el-table-column
              fixed="right"
              label="操作"
              width="160"
              v-slot="scope" // 获取每一行的数据
           >
            <template>    
              <el-button @click="handleCreate(scope.row)"   type="text" size="small">添加</el-button>
              <el-popconfirm
                  confirmButtonText='好的'
                  cancelButtonText='不用了'
                  icon="el-icon-info"
                  iconColor="red"
                  title="这是一段内容确定删除吗?"
                  @onConfirm="handleDelete(scope.row)"
              >
                <el-button slot="reference" type="text" size="small">删除</el-button>
              </el-popconfirm>
            </template>
          </el-table-column>
        </el-table>
      </el-col>
    </el-row>


    <el-dialog title="添加用户" :visible.sync="dialogFormVisible">
    // rules指定表单验证规则
      <el-form :model="form" status-icon ref="ruleForm" :rules="rules" :label-position="'right'">
        <el-row :gutter="10">
          <el-col :span="11">
            <el-form-item prop="name" label="姓名" :label-width="formLabelWidth">
              <el-input style="width: 200px" v-model="form.name" autocomplete="off"></el-input>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="10">
          <el-col :span="11">
            <el-form-item
                prop="dates"  // 需要验证的字段 需要对应rules里面的键
                label="日期"
                :label-width="formLabelWidth"
                :rules="[
                  {required: true, message: '必须选择一个日期', trigger: 'blur'},
                ]"     // 也可以直接写在item里面验证 也可以全放在rules。我这里是采取了两种方式
            >
              <el-date-picker
                  v-model="form.dates"
                  align="right"
                  type="date"
                  placeholder="选择日期"
                  format="yyyy 年 MM 月 dd 日" // 展示数据的格式
                  value-format="yyyy-MM-dd"    // 声明点击后的数据格式
                  :picker-options="pickerOptions">
              </el-date-picker>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="onOk">确 定</el-button>
      </div>
    </el-dialog>

  </div>
</template>

<script>
  export default {
    props: {
      content1: {required: true, type: String}
    },

    data() {
    
      // 自定义验证函数 给name验证
      const validatName = (rule, value, callback) => {
        if (!value) return callback(new Error('名字不能为空'));
        if (value.length <= 0) return callback(new Error('最少一个字符'));
        return callback();
      };

      return {
        content: this.content1,
        tableData: [
          {
            date: '2016-05-02',
            name: '王小虎',
            province: '上海',
            city: '普陀区',
            address: '上海市普陀区金沙江路 1518 弄',
            zip: 200331
          }, {
            date: '2016-05-04',
            name: '王小虎',
            province: '上海',
            city: '普陀区',
            address: '上海市普陀区金沙江路 1517 弄',
            zip: 200332
          }, {
            date: '2016-05-01',
            name: '王小虎',
            province: '上海',
            city: '普陀区',
            address: '上海市普陀区金沙江路 1519 弄',
            zip: 200333
          }, {
            date: '2016-05-03',
            name: '王小虎',
            province: '上海',
            city: '普陀区',
            address: '上海市普陀区金沙江路 1516 弄',
            zip: 200334
          }],

        formLabelWidth: '120px',

        // 控制模态是否展示
        dialogFormVisible: false,
        form: {
          name: '',
          dates: null,
        },

        // 对picker组件的扩展
        pickerOptions: {
          // 将之后的时间禁用 不然选择
          disabledDate(time) {
            return time.getTime() > Date.now();
          },
          
          // 增加 今天 昨天 一周前的快速选项
          shortcuts: [{
            text: '今天',
            onClick(picker) {
              picker.$emit('pick', new Date());
            }
          }, {
            text: '昨天',
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24);
              picker.$emit('pick', date);
            }
          }, {
            text: '一周前',
            onClick(picker) {
              const date = new Date();
              date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
              picker.$emit('pick', date);
            }
          }]
        },

        
        // 定义输入规则
        rules: {
          name: [
              // 指定验证函数       触发时机。这个是失去焦点触发
            {validator: validatName, trigger: 'blur'}
          ],
        },
      };
    },

    methods: {
      onOk() {
        
        // 使用ref进行验证 validate传入一个函数 返回一个验证是否成功的bool值
        this.$refs['ruleForm'].validate((valid) => {
          if (valid) {

            const {
              name,
              dates
            } = this.form;

          // 避免zip重复 zip++
            const maxZip = Math.max(...this.tableData.map(item => item.zip)) + 1;

            const obj = {
              name,
              date: dates,
              province: '北京',
              city: '普陀区',
              address: '上海市普陀区金沙江路 1518 弄',
              zip: maxZip
            };

        // push到数据里面
            this.tableData.push(obj);

        // 将模态隐藏
            this.dialogFormVisible = false;
          } else {
            return false;
          }
        });
      },

      // 删除数据
      handleDelete(row) {
        this.tableData.map((item, index) => {
          if (item.zip === row.zip) {
            this.tableData.splice(index, 1);
          }
        });
      },

      handleCreate() {
        // 模态展示
        this.dialogFormVisible = true;
      }
    }
  };
</script>

一套基本的增删改查就可以了呀,Vue有一套admin模版,开箱即用。
vue-element-admin非常不错,大家可以去使用一下子

打包

默认打包的话会导致静态资源引用存在问题,打开一片空白,所以我们打包前需要先配置一下静态资源
package.json这个文件同级的目录,新建一个vue.config.js,加入如下配置

/**
 * Created By 憧憬
 */
module.exports = {
  publicPath: './'    // 静态资源目录配置为./ 当前目录
};

以上就是Vue使用Element实现增删改查+打包的步骤的详细内容,更多关于vue 增删改查+打包的资料请关注脚本之家其它相关文章!

相关文章

  • Vue3项目中env文件的配置和使用指南

    Vue3项目中env文件的配置和使用指南

    在现代前端开发中,项目通常需要在不同的环境中运行,例如开发环境、测试环境和生产环境,每个环境可能需要不同的配置,通过使用 .env 文件,可以方便地管理这些环境变量,避免硬编码配置,本文给大家介绍了Vue3项目中env文件的配置指南,需要的朋友可以参考下
    2025-03-03
  • 一文详解Vue.js与TypeScript的生命周期

    一文详解Vue.js与TypeScript的生命周期

    Vue与TypeScript的结合使得开发大型应用变得更加容易和高效,本文将详细探讨Vue.js组件中TypeScript的应用,特别是它的生命周期钩子函数,并通过丰富的示例,为你提供一个实战指南,需要的朋友可以参考下
    2023-11-11
  • Vue vant-ui使用van-uploader实现头像上传功能

    Vue vant-ui使用van-uploader实现头像上传功能

    这篇文章主要介绍了Vue vant-ui使用van-uploader实现头像图片上传,项目中是使用有赞vant-ui框架实现的头像上传替换功能,用到了封装的图片压缩封装之后再去上传图片this.$imgUpload.imgZip(),本文通过实例代码给大家介绍的非常详细,需要的朋友参考下吧
    2022-05-05
  • vue+SSM实现验证码功能

    vue+SSM实现验证码功能

    这篇文章主要介绍了vue+SSM实现验证码功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-12-12
  • vue中点击下载图片的实现方法

    vue中点击下载图片的实现方法

    这篇文章主要给大家介绍了关于vue中点击下载图片的实现方法,在Vue的模板中,我们可以将下载属性绑定至或元素上,用来实现点击下载,需要的朋友可以参考下
    2023-08-08
  • Element图表初始大小及窗口自适应实现

    Element图表初始大小及窗口自适应实现

    这篇文章主要介绍了Element图表初始大小及窗口自适应实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • vue项目element UI 版本升级过程遇到的问题及解决方案

    vue项目element UI 版本升级过程遇到的问题及解决方案

    这篇文章主要介绍了vue项目element UI 版本升级过程遇到的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • Vue 3 自定义权限指令 v-action的作用

    Vue 3 自定义权限指令 v-action的作用

    在实际的前端开发中,尤其是涉及到权限管理的系统,我们经常需要根据用户的权限动态控制某些按钮的显示和隐藏,这篇文章主要介绍了Vue 3 自定义权限指令 v-action的相关知识,需要的朋友可以参考下
    2025-04-04
  • vue-cli使用stimulsoft.reports.js的详细教程

    vue-cli使用stimulsoft.reports.js的详细教程

    Stimulsoft Reports.JS是一个使用JavaScript和HTML5生成报表的平台。它拥有所有拥来设计,编辑和查看报表的必需组件。该报表工具根据开发人员数量授权而不是根据应用程序的用户数量。接下来通过本文给大家介绍vue-cli使用stimulsoft.reports.js的方法,一起看看吧
    2021-12-12
  • Vue 用Vant实现时间选择器的示例代码

    Vue 用Vant实现时间选择器的示例代码

    这篇文章主要介绍了Vue 用Vant实现时间选择器的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10

最新评论