feedback.vue
3.74 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<template>
<view class="feedback-page">
<!-- 公共组件-每个页面必须引入 -->
<public-module></public-module>
<view class="form-page">
<u--form labelPosition="left" :model="feedbackData" :rules="rules" ref="form1">
<u-form-item label="主题" prop="userInfo.name" borderBottom ref="item1">
<u--input placeholder="请输入主题" v-model="feedbackData.userInfo.name" border="bottom"></u--input>
</u-form-item>
<u-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1">
<u--input placeholder="请输入姓名" v-model="feedbackData.userInfo.name" border="bottom"></u--input>
</u-form-item>
<u-form-item label="手机" prop="userInfo.name" borderBottom ref="item1">
<u--input placeholder="请输入手机" v-model="feedbackData.userInfo.name" border="bottom"></u--input>
</u-form-item>
<u-form-item label="姓名" prop="userInfo.name" borderBottom ref="item1">
<u--input placeholder="请输入姓名" v-model="feedbackData.userInfo.name" border="bottom"></u--input>
</u-form-item>
<u-form-item label="QQ" prop="userInfo.name" borderBottom ref="item1">
<u--input placeholder="请输入QQ" v-model="feedbackData.userInfo.name" border="bottom"></u--input>
</u-form-item>
<u-form-item label="邮箱" prop="userInfo.name" borderBottom ref="item1">
<u--input placeholder="请输入邮箱" v-model="feedbackData.userInfo.name" border="bottom"></u--input>
</u-form-item>
<u-form-item label="图片" prop="userInfo.name" borderBottom ref="item1">
<u-upload :fileList="fileData" @afterRead="afterRead" @delete="deletePic" name="1" multiple :maxCount="10"></u-upload>
</u-form-item>
<u-form-item label="反馈信息" prop="userInfo.name" borderBottom ref="item1">
<u--textarea placeholder="不低于3个字" v-model="feedbackData.intro" count></u--textarea>
</u-form-item>
</u--form>
<u-button class="buttonSty" shape="circle" type="primary" text="提交" customStyle="margin-top: 17rpx" @click="submit"></u-button>
</view>
<f-tabbar></f-tabbar>
</view>
</template>
<script>
import fTabbar from '@/components/module/f-tabbar/f-tabbar';
export default {
components: {
fTabbar
},
data() {
return {
feedbackData: {
userInfo: {
name: '',
intro: ''
}
},
fileData: []
};
},
onLoad() {
// 隐藏原生的tabbar
uni.hideTabBar();
},
methods: {
// 删除图片
deletePic(event) {
this[`fileData{event.name}`].splice(event.index, 1);
},
// 新增图片
async afterRead(event) {
// 当设置 mutiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.file);
let fileListLen = this[`fileData${event.name}`].length;
lists.map(item => {
this[`fileData${event.name}`].push({
...item,
status: 'uploading',
message: '上传中'
});
});
for (let i = 0; i < lists.length; i++) {
const result = await this.uploadFilePromise(lists[i].url);
let item = this[`fileData${event.name}`][fileListLen];
this[`fileData${event.name}`].splice(
fileListLen,
1,
Object.assign(item, {
status: 'success',
message: '',
url: result
})
);
fileListLen++;
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let a = uni.uploadFile({
url: '', // 仅为示例,非真实的接口地址
filePath: url,
name: 'file',
formData: {
user: 'test'
},
success: res => {
setTimeout(() => {
resolve(res.data.data);
}, 1000);
}
});
});
}
}
};
</script>
<style lang="scss" scoped>
.feedback-page {
min-height: 100vh;
background-color: #fff;
}
.form-page {
padding: 0 20rpx;
}
//#ifndef MP
.buttonSty {
margin-top: 30rpx;
}
//#endif
</style>