vue3+Element-plus表单举例

一、安装vue3脚手架, npm create vue@latest
详细查看官网https://cn.vuejs.org/guide/quick-start.html

在这里插入图片描述
二、下载Element-plus
官网:https://element-plus.gitee.io/zh-CN/component/overview.html

npm i element-plus@latest

如果需要用到element-plus的图标,我们要把图标一起下下来

npm install @element-plus/icons-vue

在main.js中全局引入
在这里插入图片描述
示例:
在这里插入图片描述

<script setup>
  import { ref ,reactive } from 'vue';
  const minData = reactive({
    list_data:[{
      name:'张三',
      password:'12345',
      email:'1211@qq.com'
    },{
      name:'李四',
      password:'123456',
      email:'1211666@qq.com'
    }]
  })

  const form = reactive({
    name: '',
    password: '',
    email: ''
  })
  const rules = {
    name: [
      { required: true, message: '请输入用户名', trigger: 'blur' },
      { min: 5, max: 10, message: '用户名必须是5-10位字符', trigger: 'blur' }
    ],
    password: [
      { required: true, message: '请输入密码', trigger: 'blur' },
    ],
    email: [
      { required: true, message: '请输入邮箱', trigger: 'blur' },
      { validator: (rule, value, callback)=>{
        if (value === '')
            callback();
        else {
            if (!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value)) {
                callback(new Error('邮件地址无效'));
            } else
                callback();
        }
      },trigger: 'blur'},
    ]
  }
  const ruleFormRef = ref();
  //新增
  const onSubmit = (formName)=>{
    formName.validate((valid) => {
        if (valid) {
            minData.list_data.push(form);
        } else {
            return false;
        }
    });
  }
  //清除
  const reset = ()=>{
    Object.keys(form).map(key => {
      delete form[key]
    })
  }
</script>

<template>
  <el-main>
    <div>
      <table>
        <thead>
          <tr>
            <td>姓名</td>
            <td>密码</td>
            <td>邮箱</td>
          </tr>
        </thead>
        <tbody>
          <tr v-for="(item,index) in minData.list_data" :key="index">
            <td>{{item.name}}</td>
            <td>{{item.password}}</td>
            <td>{{item.email}}</td>
          </tr>
        </tbody>
      </table>
      <div class="addInfo">
        <!-- <addInfo></addInfo> -->
        <el-form :model="form" :rules="rules" ref="ruleFormRef" label-width="auto" style="max-width: 600px">
          <el-form-item label="姓名:" prop="name">
            <el-input v-model="form.name" />
          </el-form-item>
          <el-form-item label="密码:" prop="password">
            <el-input v-model="form.password" />
          </el-form-item>
          <el-form-item label="邮箱:" prop="email">
            <el-input v-model="form.email" />
          </el-form-item>
          <el-form-item>
            <el-button type="primary" @click="onSubmit(ruleFormRef)">新增</el-button>
            <el-button @click="reset">清除</el-button>
          </el-form-item>
        </el-form>
      </div>
    </div>
  </el-main>
</template>
<style scoped>
.addInfo{
  width: 600px;
  height: 100%;
  background: #FFFFFF;
  box-shadow: 0px 0.02rem 0.1rem 0px rgba(150, 150, 150, 0.35);
  border-radius: 0.1rem;
  margin: 10px 0;
  padding: 20px;
}
table, th, td {
  border: 1px solid black;
  border-collapse: collapse; /* 移除表格内边框间的间隙 */
}
</style>

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Vue 3.0+Element-Plus开发后台管理系统的步骤: 1.首先,确保你已经安装了Node.js和npm包管理器。 2.使用以下命令安装Vue CLI 4: ```shell npm install -g @vue/cli ``` 3.使用Vue CLI创建一个新项目: ```shell vue create my-project ``` 4.在创建项目时,选择使用Vue 3.0版本,并启用class-style component语法: ```shell ? Please pick a preset: Manually select features ? Check the features needed for your project: Choose Vue version, Babel, Router, Vuex, CSS Pre-processors, Linter, Unit ? Choose a version of Vue.js that you want to start the project with 3.x (Preview) ? Use class-style component syntax? Yes ? Use Babel alongside TypeScript (required for modern mode, auto-detected polyfills, transpiling JSX)? No ? Use history mode for router? (Requires proper server setup for index fallback in production) Yes ? Pick a CSS pre-processor (PostCSS, Autoprefixer and CSS Modules are supported by default): Sass/SCSS (with dart-sass) ? Pick a linter / formatter config: ESLint with error prevention only ? Pick additional lint features: Lint on save ? Where do you prefer placing config for Babel, ESLint, etc.? In dedicated config files ``` 5.安装Element-Plus和Echarts 5.0: ```shell npm install element-plus echarts@5.0 ``` 6.在main.js中引入Element-Plus和Echarts: ```javascript import { createApp } from 'vue' import App from './App.vue' import router from './router' import store from './store' import ElementPlus from 'element-plus' import 'element-plus/lib/theme-chalk/index.css' import echarts from 'echarts' const app = createApp(App) app.use(store) app.use(router) app.use(ElementPlus) app.config.globalProperties.$echarts = echarts app.mount('#app') ``` 7.现在你可以开始使用Element-Plus和Echarts来开发你的后台管理系统了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值