389 lines
8.0 KiB
Vue
389 lines
8.0 KiB
Vue
|
<template>
|
||
|
<view class="pages">
|
||
|
<u-navbar title="意见反馈" :border-bottom="false" :background="bgc" title-color='#262B37' title-size='48'
|
||
|
height='44'></u-navbar>
|
||
|
<view class="leix">
|
||
|
<view class="title">
|
||
|
反馈类型 <text style="font-size: 36rpx; color: red; vertical-align: top;margin-left: 32rpx;">✲</text>
|
||
|
</view>
|
||
|
<view class="lxxz">
|
||
|
<view class="" :class="cutidx==1?'active':''" @click="cutidx=1">
|
||
|
功能异常
|
||
|
</view>
|
||
|
<view class="" :class="cutidx==2?'active':''" @click="cutidx=2">
|
||
|
意见与建议
|
||
|
|
||
|
</view>
|
||
|
<view class="" :class="cutidx==3?'active':''" @click="cutidx=3">
|
||
|
其他
|
||
|
</view>
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<view class="problem">
|
||
|
<view class="title">
|
||
|
问题描述 <text style="font-size: 36rpx; color: red; vertical-align: top;margin-left: 32rpx;">✲</text>
|
||
|
</view>
|
||
|
<view class="input-container">
|
||
|
<view class="placeholder" v-if="!textValue">请详细描述您的问题或建议</view>
|
||
|
<textarea class="custom-textarea" v-model="textValue" @focus="hidePlaceholder" style="border: none;"
|
||
|
@input="updateWordCount" @blur="showPlaceholder"></textarea>
|
||
|
<text class="word-count">{{ currentCount }}/500</text>
|
||
|
</view>
|
||
|
</view>
|
||
|
|
||
|
<view class="scpic">
|
||
|
<view class="title">
|
||
|
上传图片
|
||
|
</view>
|
||
|
<!-- <view class="icon">
|
||
|
<image :src="item" mode=""></image>
|
||
|
</view> -->
|
||
|
<view class="icon">
|
||
|
|
||
|
<view class="imgbox" v-for="(item,index) in imglist " :key="index">
|
||
|
<image :src="item" mode=""></image>
|
||
|
</view>
|
||
|
<view class="imgbox" @click="btn">
|
||
|
<image src="https://api.ccttiot.com/smartmeter/img/static/uY8CPw9YE6JxPzcHUaqf" mode=""></image>
|
||
|
</view>
|
||
|
|
||
|
</view>
|
||
|
<text>上传问题图片可以让问题快速解决哦!</text>
|
||
|
</view>
|
||
|
|
||
|
<view class="lxfs" v-if="stause">
|
||
|
<view class="title">
|
||
|
联系方式
|
||
|
</view>
|
||
|
<input type="text" v-model="contact" placeholder="请留下手机号/邮箱/微信号,以便我们回复您" />
|
||
|
</view>
|
||
|
|
||
|
<view class="btn" @click="sub()">提交</view>
|
||
|
</view>
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
export default {
|
||
|
data() {
|
||
|
return {
|
||
|
bgc: {
|
||
|
backgroundColor: "#F7FAFE",
|
||
|
},
|
||
|
textValue: '',
|
||
|
currentCount: 0,
|
||
|
cutidx: -1,
|
||
|
imglist: [],
|
||
|
token: '',
|
||
|
contact: '',
|
||
|
stause:false
|
||
|
}
|
||
|
},
|
||
|
computed: {
|
||
|
|
||
|
},
|
||
|
onLoad() {
|
||
|
|
||
|
this.getQiniuToken()
|
||
|
this.getstause()
|
||
|
},
|
||
|
methods: {
|
||
|
getstause() {
|
||
|
|
||
|
this.$u.get('/app/config/wa').then((res) => {
|
||
|
if (res.code == 200) {
|
||
|
console.log(res)
|
||
|
this.stause = res.data
|
||
|
if (this.stause == true) {
|
||
|
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
},
|
||
|
hidePlaceholder() {
|
||
|
this.placeholderVisible = false;
|
||
|
},
|
||
|
showPlaceholder() {
|
||
|
if (!this.textValue) {
|
||
|
this.placeholderVisible = true;
|
||
|
}
|
||
|
},
|
||
|
updateWordCount() {
|
||
|
this.currentCount = this.textValue.trim().replace(/\s+/g, '').length;
|
||
|
// if (this.currentCount > 500) {
|
||
|
// this.textValue = this.textValue.slice(0, this.textValue.lastIndexOf(' ', 500)).trim();
|
||
|
// uni.showToast({
|
||
|
// title: '字数已超过500字限制',
|
||
|
// icon: 'none'
|
||
|
// });
|
||
|
// }
|
||
|
|
||
|
},
|
||
|
sub() {
|
||
|
if (this.cutidx == -1) {
|
||
|
uni.showToast({
|
||
|
title: '请选择反馈类型',
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
});
|
||
|
} else if (this.textValue == '') {
|
||
|
uni.showToast({
|
||
|
title: '请输入问题描述',
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
});
|
||
|
} else {
|
||
|
var imgString = this.imglist.join(',');
|
||
|
let data = {
|
||
|
type: this.cutidx,
|
||
|
content: this.textValue,
|
||
|
picture: imgString,
|
||
|
contact: this.contact
|
||
|
}
|
||
|
console.log(data, 'dadada');
|
||
|
this.$u.post("/app/complaint", data).then((res) => {
|
||
|
if (res.code == 200) {
|
||
|
// this.token=res.token
|
||
|
uni.showToast({
|
||
|
title: '提交成功',
|
||
|
icon: 'none',
|
||
|
duration: 2000
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
},
|
||
|
btn() {
|
||
|
let _this = this
|
||
|
let math = 'static/' + _this.$u.guid(20)
|
||
|
uni.chooseMessageFile({
|
||
|
count: 9,
|
||
|
type: 'all',
|
||
|
success(res) {
|
||
|
// tempFilePath可以作为img标签的src属性显示图片
|
||
|
const tempFilePaths = res.tempFiles
|
||
|
// let tempFilePaths = chooseImageRes.tempFilePaths;
|
||
|
// console.log(tempFilePaths)
|
||
|
// tempFilePaths.forEach(item=>{
|
||
|
// // 上传图片到七牛云
|
||
|
|
||
|
// })
|
||
|
wx.uploadFile({
|
||
|
url: 'https://up-z2.qiniup.com',
|
||
|
name: 'file',
|
||
|
filePath: tempFilePaths[0].path,
|
||
|
formData: {
|
||
|
token: _this.token, //后端返回的token
|
||
|
key: 'smartmeter/img/' + math
|
||
|
},
|
||
|
success: function(res) {
|
||
|
console.log(res, 'resres');
|
||
|
let str = JSON.parse(res.data)
|
||
|
console.log(str.key)
|
||
|
_this.userImgs = 'https://api.ccttiot.com/' + str.key
|
||
|
console.log(_this.userImgs)
|
||
|
_this.imglist.push(_this.userImgs)
|
||
|
}
|
||
|
});
|
||
|
}
|
||
|
})
|
||
|
|
||
|
},
|
||
|
// 获取上传七牛云token
|
||
|
getQiniuToken() {
|
||
|
this.$u.get("/common/qiniu/uploadInfo").then((res) => {
|
||
|
if (res.code == 200) {
|
||
|
this.token = res.token
|
||
|
}
|
||
|
});
|
||
|
// this.$u.get('https://v2.ielts.langsi.online/file/getToken').then(res => {
|
||
|
// console.log(res.data);
|
||
|
// this.token = res.data.token
|
||
|
// }).catch(err => {
|
||
|
// console.log(err)
|
||
|
// })
|
||
|
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
|
||
|
<style lang="scss">
|
||
|
.btn {
|
||
|
width: 590rpx;
|
||
|
height: 84rpx;
|
||
|
background: #8883F0;
|
||
|
filter: blur(0px);
|
||
|
color: #fff;
|
||
|
font-size: 36rpx;
|
||
|
line-height: 84rpx;
|
||
|
text-align: center;
|
||
|
margin-top: 164rpx;
|
||
|
border-radius: 50rpx;
|
||
|
}
|
||
|
|
||
|
page {
|
||
|
background-color: #F7FAFE !important;
|
||
|
}
|
||
|
|
||
|
.pages {
|
||
|
padding: 0 66rpx;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
|
||
|
.leix {
|
||
|
margin-top: 34rpx;
|
||
|
|
||
|
.title {
|
||
|
font-weight: 600;
|
||
|
font-size: 36rpx;
|
||
|
color: #3D3D3D;
|
||
|
line-height: 50rpx;
|
||
|
}
|
||
|
|
||
|
.lxxz {
|
||
|
display: flex;
|
||
|
|
||
|
view {
|
||
|
border-radius: 10rpx 10rpx 10rpx 10rpx;
|
||
|
border: 2rpx solid #C4C4C4;
|
||
|
padding: 14rpx 34rpx 14rpx 34rpx;
|
||
|
box-sizing: border-box;
|
||
|
margin-right: 28rpx;
|
||
|
margin-top: 40rpx;
|
||
|
position: relative;
|
||
|
overflow: hidden;
|
||
|
|
||
|
text {
|
||
|
position: absolute;
|
||
|
bottom: 0;
|
||
|
right: 0;
|
||
|
display: inline-block;
|
||
|
width: 31rpx;
|
||
|
height: 19rpx;
|
||
|
background: #8883F0;
|
||
|
color: #fff;
|
||
|
border-radius: 5rpx;
|
||
|
font-size: 18rpx;
|
||
|
text-align: center;
|
||
|
line-height: 19rpx;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.active {
|
||
|
border: 2rpx solid #8883F0 !important;
|
||
|
}
|
||
|
|
||
|
.problem {
|
||
|
margin-top: 40rpx;
|
||
|
|
||
|
.title {
|
||
|
font-weight: 600;
|
||
|
font-size: 36rpx;
|
||
|
color: #3D3D3D;
|
||
|
line-height: 50rpx;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.lxfs {
|
||
|
margin-top: 40rpx;
|
||
|
|
||
|
.title {
|
||
|
font-weight: 600;
|
||
|
font-size: 36rpx;
|
||
|
color: #3D3D3D;
|
||
|
line-height: 50rpx;
|
||
|
}
|
||
|
|
||
|
input {
|
||
|
margin-top: 32rpx;
|
||
|
width: 612rpx;
|
||
|
height: 80rpx;
|
||
|
background: #FFFFFF;
|
||
|
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
|
||
|
border-radius: 20rpx;
|
||
|
padding-left: 20rpx;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
.scpic {
|
||
|
margin-top: 40rpx;
|
||
|
|
||
|
.title {
|
||
|
font-weight: 600;
|
||
|
font-size: 36rpx;
|
||
|
color: #3D3D3D;
|
||
|
line-height: 50rpx;
|
||
|
}
|
||
|
|
||
|
text {
|
||
|
display: block;
|
||
|
margin-top: 40rpx;
|
||
|
font-size: 28rpx;
|
||
|
color: #95989D;
|
||
|
line-height: 38rpx;
|
||
|
}
|
||
|
|
||
|
.icon {
|
||
|
display: flex;
|
||
|
flex-wrap: wrap;
|
||
|
align-items: center;
|
||
|
margin-top: 40rpx;
|
||
|
|
||
|
.imgbox {
|
||
|
width: 33%;
|
||
|
|
||
|
image {
|
||
|
width: 142rpx;
|
||
|
height: 142rpx;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
.input-container {
|
||
|
position: relative;
|
||
|
width: 612rpx;
|
||
|
height: 248rpx;
|
||
|
background: #FFFFFF;
|
||
|
box-shadow: 0rpx 16rpx 40rpx 0rpx rgba(42, 130, 228, 0.1);
|
||
|
border-radius: 20rpx;
|
||
|
margin-top: 40rpx;
|
||
|
overflow: hidden;
|
||
|
padding-right: 38rpx;
|
||
|
box-sizing: border-box;
|
||
|
}
|
||
|
|
||
|
.placeholder {
|
||
|
position: absolute;
|
||
|
top: 18rpx;
|
||
|
left: 38rpx;
|
||
|
color: #999;
|
||
|
/* placeholder颜色 */
|
||
|
pointer-events: none;
|
||
|
/* 确保点击事件可以穿透到textarea上 */
|
||
|
}
|
||
|
|
||
|
.custom-textarea {
|
||
|
width: 100%;
|
||
|
height: 100%;
|
||
|
/* 设置一个合适高度 */
|
||
|
padding-top: 18rpx;
|
||
|
/* 为placeholder留出空间 */
|
||
|
padding-left: 38rpx;
|
||
|
box-sizing: border-box;
|
||
|
border: 1px solid #ccc;
|
||
|
}
|
||
|
|
||
|
.word-count {
|
||
|
position: absolute;
|
||
|
right: 10px;
|
||
|
bottom: 10px;
|
||
|
font-size: 12px;
|
||
|
color: #999;
|
||
|
}
|
||
|
</style>
|