JSFiddle - React, Tailwind, and code Playground

HTML

<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/[email protected]/lib/index.js"></script>
<div id="app">
  <el-form :model="model"  ref="ruleForm">
    <el-form-item prop="upload" ref="upload" :rules="rules.upload">
      <el-upload action="https://jsonplaceholder.typicode.com/posts/" :on-success="handleChange">
        <el-button size="small" type="primary">点击上传</el-button>
      </el-upload>
    </el-form-item>
    <el-form-item>
    <el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
  </el-form-item>
  </el-form>
</div>

SCSS

@import url("//unpkg.com/[email protected]/lib/theme-chalk/index.css");

Babel + JSX

var Main = {
    data() {
      return {
        model: {
          upload: ''
        },
        rules: {
          upload: [{
            required: true,
            message: '请上传',
            trigger: 'change'
          }]
        }
      };
    },
    methods: {
      handleChange() {
        this.model.upload = 'xxx.com/a.jpg';
        console.log(this.$refs.upload.$emit('change'))
      },
      onValidate(prop, valid) {
        console.log(prop, valid)
      },
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
    }
  }
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')