zoukankan      html  css  js  c++  java
  • 基于element ui 开发的二次通用表单组件

    <template>
      <div>
        <el-container>
          <el-header>Header</el-header>
          <el-container>
            <el-aside width="200px">
              <nav-left />
            </el-aside>
            <el-main>
              <AddDialog
                :formModel="formModel"
                :ruleArray="ruleArray"
                @submitForm="submitForm"
              />
              <router-view></router-view>
            </el-main>
          </el-container>
        </el-container>
      </div>
    </template>
    
    <script>
    import NavLeft from "@/components/navLeft.vue";
    import AddDialog from "@/components/AddDialog.vue";
    import { Promise } from "q";
    import { resolve } from "url";
    
    let validatePhone = (rule, value, callback) => {
      if (value && value.trim() && !/^1[34578]d{9}$/.test(value)) {
        callback(new Error("请输入正确的手机号"));
      } else {
        callback();
      }
    };
    
    let validateEmail = (rule, value, callback) => {
      if (
        value &&
        value.trim() &&
        !/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/.test(value)
      ) {
        callback(new Error("请输入正确的邮箱号"));
      } else {
        callback();
      }
    };
    export default {
      name: "Home",
      data() {
        return {
          val: "",
          info: "",
          //表单字段写死,后台取值之后直接给value赋值即可
          formModel: [
            {
              title: "姓名",
              file: "name",
              type: "input",
              value: "",
            },
            {
              title: "年龄",
              file: "age",
              type: "input",
              value: "",
            },
            {
              title: "邮箱",
              file: "email",
              type: "input",
              value: "",
            },
            {
              title: "手机号",
              file: "mobile",
              type: "input",
              value: "",
            },
            {
              title: "性别",
              file: "sex",
              type: "select",
              value: "",
              selectList: [
                { value: "1", label: "男" },
                { value: "0", label: "女" },
              ],
            },
            {
              title: "状态",
              file: "enabled",
              type: "select",
              value: "",
              selectList: [
                { value: "1", label: "启用" },
                { value: "0", label: "停用" },
              ],
            },
          ],
          ruleArray: {
            name: [{ required: true, message: "请输入姓名" }],
            enabled: [{ required: true, message: "请选择状态" }],
            mobile: [{ validator: validatePhone }],
            email: [{ validator: validateEmail }],
          },
        };
      },
      components: {
        NavLeft,
        AddDialog,
      },
      created() {
        this.getInfo();
      },
      methods: {
        async getInfo(fn) {
          //模拟后台获取到个人信息
          let ret = await this.getData(() => {
            this.info = {
              name: "张三",
              age: "18",
              sex: "0",
              mobile: "13588450166",
              email: "",
              enabled: "1",
            };
          });
          //在form表单字段绑定
          for (let key in this.info) {
            let ret = this.formModel.filter((item) => {
              return item.file === key;
            });
            if (ret) {
              ret[0].value = this.info[key];
            }
          }
          return ret;
        },
        getData(fn) {
          return new Promise((resolve) => {
            setTimeout(() => resolve(fn()), 2000);
          });
        },
        submitForm(val) {
          this.info = val;
        },
      },
    };
    </script>
    
    <style lang="less" scoped></style>
  • 相关阅读:
    vs快速添加引用解析的快捷键
    Linux内核调试技术——kprobe使用与实现
    Linux内核调试技术——kretprobe使用与实现
    Linux内核调试技术——jprobe使用与实现
    【HTTP协议】---HTTP协议详解
    雪崩效应
    Shell中IFS用法
    shell中for循环,读取一整行
    BCD码
    pam模块日志怎么输出
  • 原文地址:https://www.cnblogs.com/llcdbk/p/12795649.html
Copyright © 2011-2022 走看看