114 lines
3.1 KiB
TypeScript
114 lines
3.1 KiB
TypeScript
import { client } from "../../../utils/api"
|
|
import { feedback, uploadavatar } from "../../../utils/request"
|
|
|
|
interface FeedbackType {
|
|
key: number
|
|
label: string
|
|
icon: string
|
|
active: boolean
|
|
}
|
|
|
|
interface submits {
|
|
categoryes: number[],
|
|
content: string,
|
|
images: string[],
|
|
phone: string
|
|
}
|
|
|
|
Page({
|
|
data: {
|
|
description: '',
|
|
contact: '',
|
|
types: [
|
|
{ key: 1, label: '功能问题', icon: '/static/images/my/debug.png', active: true },
|
|
{ key: 2, label: '体验优化', active: false, icon: '/static/images/my/star.png' },
|
|
{ key: 3, label: '内容建议', active: false, icon: '/static/images/my/msg.png' },
|
|
{ key: 4, label: '其他问题', active: false, icon: '/static/images/my/more.png' },
|
|
] as FeedbackType[],
|
|
datas: {} as submits
|
|
},
|
|
onLoad() {
|
|
this.setData({ datas: { categoryes: [], content: '', images: [], phone: '' } })
|
|
},
|
|
handleBack() {
|
|
wx.navigateBack({
|
|
fail: () => wx.switchTab({ url: '/pages/my/my' }),
|
|
})
|
|
},
|
|
handleRecord() {
|
|
wx.showToast({ title: '反馈记录', icon: 'none' })
|
|
},
|
|
handleTypeTap(e: WechatMiniprogram.TouchEvent) {
|
|
const key = e.currentTarget.dataset.key
|
|
|
|
this.setData({
|
|
types: this.data.types.map((item) => ({
|
|
...item,
|
|
active: item.key === key ? !item.active : item.active,
|
|
})),
|
|
})
|
|
},
|
|
handleDescriptionInput(e: any) {
|
|
this.setData({ description: e.detail.value })
|
|
},
|
|
handleContactInput(e: any) {
|
|
this.setData({ contact: e.detail.value })
|
|
},
|
|
handleUpload() {
|
|
let that = this;
|
|
wx.showLoading({ mask: true, title: '请稍后...' })
|
|
wx.chooseMedia({
|
|
count: 3 - this.data.datas.images.length,
|
|
mediaType: ['image', 'video'],
|
|
sourceType: ['album', 'camera'],
|
|
maxDuration: 30,
|
|
camera: 'back',
|
|
success(res) {
|
|
client.upload(res.tempFiles[0].tempFilePath, {}).then((res: any) => {
|
|
wx.hideLoading();
|
|
if (res.code == 0) {
|
|
let images = that.data.datas;
|
|
images.images.push(res.data.url);
|
|
that.setData({ datas: images })
|
|
}
|
|
})
|
|
},
|
|
fail(err) {
|
|
wx.hideLoading();
|
|
console.log(err);
|
|
}
|
|
})
|
|
},
|
|
handleSubmit() {
|
|
let that = this;
|
|
if (!this.data.description.trim()) {
|
|
wx.showToast({ title: '请填写问题描述', icon: 'none' })
|
|
return
|
|
}
|
|
|
|
let datas = this.data.datas;
|
|
let types: FeedbackType[] = [];
|
|
for (let q = 0; q < this.data.types.length; q++) {
|
|
let item = that.data.types[q];
|
|
if (item.active) {
|
|
datas.categoryes.push(item.key)
|
|
}
|
|
item.active = false;
|
|
types.push(item);
|
|
}
|
|
|
|
datas.content = this.data.description;
|
|
datas.phone = this.data.contact;
|
|
|
|
feedback(JSON.stringify(datas)).then((res: any) => {
|
|
if (!res.code) {
|
|
this.setData({ datas: { categoryes: [], content: '', images: [], phone: '' }, contact: '', description: '', types: types })
|
|
|
|
wx.showModal({ title: '温馨提示', content: '提交成功', showCancel: false });
|
|
} else {
|
|
wx.showModal({ title: '温馨提示', content: '提交失败, 请稍后重试', showCancel: false });
|
|
}
|
|
})
|
|
},
|
|
})
|