设计页面布局,使用 Element UI 的表单组件收集用户信息,包括姓名、手机号码、性别、年龄、所在城市等; 使用 Element UI 的富文本编辑器组件,让用户可以输入广告语,并设置字数限制; 使用 Vue.js 的表单验证功能,确保用户输入的信息格式正确; 使用 Axios 发送 POST 请求,将用户输入的信息和广告语提交到后端进行保存; 显示提交成功提示信息,并提供分享按钮,让用户可以分享征集页面到社交媒体上
时间: 2023-11-27 20:49:23 浏览: 96
首先,需要在 Vue.js 中引入 Element UI 和 Axios:
```javascript
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
import axios from 'axios';
```
然后,在页面中使用 Element UI 的表单组件和富文本编辑器组件:
```html
<el-form ref="form" :model="form" :rules="rules">
<el-form-item label="姓名" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item label="手机号码" prop="phone">
<el-input v-model="form.phone"></el-input>
</el-form-item>
<el-form-item label="性别" prop="gender">
<el-radio-group v-model="form.gender">
<el-radio label="male">男</el-radio>
<el-radio label="female">女</el-radio>
</el-radio-group>
</el-form-item>
<el-form-item label="年龄" prop="age">
<el-input v-model.number="form.age"></el-input>
</el-form-item>
<el-form-item label="所在城市" prop="city">
<el-select v-model="form.city" placeholder="请选择城市">
<el-option label="北京" value="beijing"></el-option>
<el-option label="上海" value="shanghai"></el-option>
<el-option label="广州" value="guangzhou"></el-option>
<el-option label="深圳" value="shenzhen"></el-option>
</el-select>
</el-form-item>
<el-form-item label="广告语" prop="slogan">
<el-input type="textarea" v-model="form.slogan"></el-input>
<div class="slogan-count">还可以输入 {{ sloganCount }} 个字</div>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
```
其中,`rules` 是 Vue.js 的表单验证规则:
```javascript
data() {
return {
form: {
name: '',
phone: '',
gender: '',
age: '',
city: '',
slogan: ''
},
rules: {
name: [
{ required: true, message: '请输入姓名', trigger: 'blur' }
],
phone: [
{ required: true, message: '请输入手机号码', trigger: 'blur' },
{ pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号码', trigger: 'blur' }
],
gender: [
{ required: true, message: '请选择性别', trigger: 'change' }
],
age: [
{ required: true, message: '请输入年龄', trigger: 'blur' },
{ type: 'number', message: '年龄必须为数字值', trigger: 'blur' }
],
city: [
{ required: true, message: '请选择所在城市', trigger: 'change' }
],
slogan: [
{ required: true, message: '请输入广告语', trigger: 'blur' },
{ min: 5, message: '广告语不能少于 5 个字', trigger: 'blur' },
{ max: 30, message: '广告语不能超过 30 个字', trigger: 'blur' }
]
}
}
}
```
使用 Vue.js 的计算属性 `sloganCount` 来实时计算广告语的字数:
```javascript
computed: {
sloganCount() {
return this.form.slogan.length > 30 ? 0 : 30 - this.form.slogan.length;
}
}
```
最后,在提交表单时使用 Axios 发送 POST 请求:
```javascript
methods: {
submitForm() {
this.$refs.form.validate(valid => {
if (valid) {
axios.post('/api/submit', this.form).then(res => {
if (res.data.code === 0) {
this.$message.success('提交成功');
} else {
this.$message.error('提交失败,' + res.data.message);
}
}).catch(err => {
this.$message.error('提交失败,' + err.message);
});
} else {
return false;
}
});
}
}
```
其中,后端 API 的地址为 `/api/submit`。提交成功后,显示提交成功提示信息,并提供分享按钮。
阅读全文