一、准备工作
1、引入vue相关js文件(注意顺序vuejs要在最前面)
// vue.js
<script type="text/javascript" charset="utf-8" src="js/vue-2.6.12.js"></script>
// httpVueLoader用于引入vue子组件文件
<script type="text/javascript" charset="utf-8" src="js/httpVueLoader.js"></script>
// babel用于es6转换es5
<script type="text/javascript" charset="utf-8" src="js/browser.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/polyfill.min.js"></script>
// elementUI.js
<script type="text/javascript" charset="utf-8" src="js/elementUI-2.14.0.js"></script>
2、引入相关css
<!-- 引入element-ui样式 -->
<link rel="stylesheet" type="text/css" href="css/elementUI-2.14.0-css/index.css" />
二、页面(html主要用于模仿演示jsp页面)
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<!-- 引入element-ui样式 -->
<link rel="stylesheet" type="text/css" href="css/elementUI-2.14.0-css/index.css" />
</head>
<body>
<div id="app">
{{ key }}
<!-- 引入子组件 -->
<form-box></form-box>
</div>
<!-- 引入vue相关js文件 -->
<script type="text/javascript" charset="utf-8" src="js/vue-2.6.12.js"></script>
<script type="text/javascript" charset="utf-8" src="js/httpVueLoader.js"></script>
<script type="text/javascript" charset="utf-8" src="js/browser.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/polyfill.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/elementUI-2.14.0.js"></script>
<script type="text/babel">
Vue.use(httpVueLoader); // 调用httpVueLoader插件
new Vue({
el: '#app',
components: {
// 使用httpVueLoader注册引入vue子组件
'form-box': httpVueLoader('./components/formBox.vue'),
},
data() {
return {
key: 'hello world',
};
},
});
</script>
</body>
</html>
三、引入vue子组件(正常按照.vue来写)
<template>
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="活动名称" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
<el-form-item label="活动区域" prop="region">
<el-select v-model="ruleForm.region" placeholder="请选择活动区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="活动时间" required>
<el-col :span="11">
<el-form-item prop="date1">
<el-date-picker
type="date"
placeholder="选择日期"
v-model="ruleForm.date1"
style="width: 100%"
></el-date-picker>
</el-form-item>
</el-col>
<el-col class="line" :span="2">-</el-col>
<el-col :span="11">
<el-form-item prop="date2">
<el-time-picker
placeholder="选择时间"
v-model="ruleForm.date2"
style="width: 100%"
></el-time-picker>
</el-form-item>
</el-col>
</el-form-item>
<el-form-item label="即时配送" prop="delivery">
<el-switch v-model="ruleForm.delivery"></el-switch>
</el-form-item>
<el-form-item label="活动性质" prop="type">
<el-checkbox-group v-model="ruleForm.type">
<el-checkbox label="美食/餐厅线上活动" name="type"></el-checkbox>
<el-checkbox label="地推活动" name="type"></el-checkbox>
<el-checkbox label="线下主题活动" name="type"></el-checkbox>
<el-checkbox label="单纯品牌曝光" name="type"></el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="特殊资源" prop="resource">
<el-radio-group v-model="ruleForm.resource">
<el-radio label="线上品牌商赞助"></el-radio>
<el-radio label="线下场地免费"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="活动形式" prop="desc">
<el-input type="textarea" v-model="ruleForm.desc"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('ruleForm')">立即创建</el-button>
<el-button @click="resetForm('ruleForm')">重置</el-button>
</el-form-item>
</el-form>
</template>
<script>
module.exports = {
data() {
return {
ruleForm: {
name: '',
region: '',
date1: '',
date2: '',
delivery: false,
type: [],
resource: '',
desc: '',
},
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' },
],
region: [{ required: true, message: '请选择活动区域', trigger: 'change' }],
date1: [{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }],
date2: [{ type: 'date', required: true, message: '请选择时间', trigger: 'change' }],
type: [{ type: 'array', required: true, message: '请至少选择一个活动性质', trigger: 'change' }],
resource: [{ required: true, message: '请选择活动资源', trigger: 'change' }],
desc: [{ required: true, message: '请填写活动形式', trigger: 'blur' }],
},
};
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('submit!');
} else {
console.log('error submit!!');
return false;
}
});
},
resetForm(formName) {
this.$refs[formName].resetFields();
},
},
};
</script>
<style scoped></style>
四、相关文件cdn链接
1、vue
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
2、httpVueLoader.js
<script src="https://unpkg.com/http-vue-loader"></script>