YingXingAI/pages/my/Feedback/Feedback.vue

310 lines
7.2 KiB
Vue
Raw Normal View History

2025-06-30 14:43:02 +08:00
<template>
<view>
<u-navbar title="意见反馈"></u-navbar>
<view class="flex-col page">
<view class="flex-col group">
<view class="flex-col items-center text-wrapper">
<u-input v-model='contactPhone' class="text_1" placeholder="请输入联系电话" type="text"/>
</view>
<view class="flex-col items-start section_3">
<view class="group_1">
<u-input v-model='content' :custom-style="textareaStyle" maxlength="500" placeholder="请输入反馈内容" type="textarea"
@blur="inputBlur" @click="shuru"/>
</view>
<view class="uping">
<u-upload ref="uUpload" :action="$u.http.config.baseUrl + action" :header='header'
@on-success="onSuccess" @on-remove="onRemove"></u-upload>
</view>
</view>
</view>
<view class="flex-col items-center text-wrapper_4" @click="onbuttonClick">
<text class="text_18"> </text>
</view>
</view>
<u-top-tips ref="uTips" :navbar-height="0"></u-top-tips>
<u-toast ref="uToast"/>
</view>
</template>
<script>
export default {
data() {
return {
textareaStyle: {
width: "80%",
},
fileList: [],
contactPhone: '',
content: '',
emojiData: [],
emoji: false,
emojicurrent: 0,
header: {
Authorization: ""
},
action: '/app/User/File',
imgData: [],
schoolId: "",
sysSignStr: [],
num: "",
tabs: [],
arr1: [],
type: "",
};
},
onLoad(e) {
this.header.Authorization = "Bearer " + this.vuex_token;
this.getSchool();
},
methods: {
// 获取学校
async getSchool() {
const req = {
userId: this.vuex_user.id,
};
const res = await this.$u.apiList.MyEducations(req);
this.schoolId = res.filter(function (x) {
return x.isSelected === true
})[0].schoolId
},
// 提示
tips(title, type, time) {
this.$refs.uToast.show({
title: title ? title : "",
type: type ? type : "success",
duration: time ? time + "" : "1000",
});
},
onbuttonClick() {
var reg = new RegExp("^[1][3,4,5,7,8,9][0-9]{9}$", "g"); //手机号
if (this.contactPhone === "" || !reg.test(this.contactPhone)) {
this.tips("请输入正确的手机号码", "error");
return
}
if (this.content === "") {
this.tips('请输入反馈内容', 'error')
return
}
// let files = this.$refs.uUpload.lists[0];
let file = this.imgData.join(',')
if (!file) {
this.tips("请上传图片", "error");
return false
}
const data = {
userId: this.vuex_user.id,
schoolId: this.schoolId,
content: this.content,
contactPhone: this.contactPhone,
image: file
}
console.info("🚀 ~ file:Feedback method:onbuttonClick line:101 -----", data)
// return
this.onSubmitFeedback(data)
},
//提交反馈
onSubmitFeedback(data) {
this.$u.apiList.SubmitFeedback(data).then((res) => {
this.$refs.uToast.show({
title: '提交成功',
type: 'success',
})
setTimeout(() => {
this.$u.route({
url: 'pages/my/mySeting/mySeting'
})
// uni.switchTab({
// url: "../../../pages/my/my/my"
// });
}, 1000)
})
},
onSuccess(res) {
this.imgData.push(res.data)
},
onRemove(index, lists) {
let imgs = []
lists.forEach(item => {
imgs.push(item.response.data)
})
this.imgData = imgs
},
inputBlur() {
;
},
shuru() {
;
},
//返回上一级
router() {
this.$u.route({
url: 'pages/my/mySeting/mySeting'
})
}
},
};
</script>
<style lang="scss" scoped>
.emojishow {
height: 3rem !important;
}
.slider {
background: #fff;
width: 7.75rem;
height: 0rem;
transition: all 0.3s;
box-shadow: 0 0 4px #999;
position: fixed;
bottom: 0;
.slider-emoji {
overflow-y: scroll;
width: 100vw !important;
}
&-emoji {
width: 6.75rem;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
&-icon {
font-size: 0.265rem;
display: inline-block;
width: 11%;
text-align: center;
padding: 0.02rem 0;
border-radius: 0.1rem;
// border-bottom: 1px solid #ccc;
}
&-icon:active {
background: #ccc;
}
}
}
.page {
padding-bottom: 0.5rem;
background-color: rgb(246, 247, 250);
overflow-y: auto;
width: 100%;
overflow-x: hidden;
height: 100%;
.group {
padding-top: 0.015rem;
.text-wrapper {
padding: 0.1rem 0rem 0.1rem;
background-color: rgb(255, 255, 255);
box-shadow: 0.00018rem 0.005rem rgba(0, 0, 0, 0.03);
.text_1 {
color: rgb(2, 2, 2);
font-size: 0.15rem;
font-family: Adobe Heiti Std;
line-height: 0.24rem;
width: 88%;
margin: 0 auto;
}
}
.section_3 {
margin-top: 0.015rem;
padding: 0.13rem 0 0.24rem;
background-color: rgb(255, 255, 255);
box-shadow: 0.00018rem 0.005rem rgba(0, 0, 0, 0.03);
.group_1 {
width: 88%;
margin: 0 auto;
}
.uping {
width: 90%;
margin: 0 auto;
}
}
.section_4 {
margin-top: 0.01rem;
padding: 0.12rem 0.28rem 0.14rem 0.35rem;
background-color: rgb(255, 255, 255);
box-shadow: 0.00018rem 0.005rem rgba(0, 0, 0, 0.03);
.image_2 {
margin-top: 0.02rem;
width: 0.23rem;
height: 0.18rem;
}
.image_3 {
width: 0.22rem;
height: 0.22rem;
}
.group_2 {
margin-top: 0.01rem;
.group_4 {
margin-left: 0.3rem;
margin-bottom: 0.02rem;
.image_4 {
flex-shrink: 0;
width: 0.14rem;
height: 0.21rem;
}
.text_11 {
margin-left: 0.06rem;
align-self: center;
color: rgb(160, 162, 172);
font-size: 0.15rem;
font-family: PingFang;
line-height: 0.14rem;
}
}
.text_9 {
color: rgb(80, 80, 81);
font-size: 0.24rem;
font-family: PingFang;
line-height: 0.24rem;
}
.text_10 {
margin-top: 0.03rem;
color: rgb(160, 162, 172);
font-size: 0.15rem;
font-family: PingFang;
line-height: 0.14rem;
}
}
}
}
.text-wrapper_4 {
margin: 0.31rem 0.24rem 0 0.23rem;
padding: 0.1rem 0 0.14rem;
// background-color: rgb(46, 155, 255);
background-color: #3cb4fb;
border-radius: 0.3rem;
.text_18 {
color: rgb(255, 255, 255);
font-size: 32rpx;
font-family: PingFang;
line-height: 0.16rem;
}
}
}
</style>