You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

354 lines
13 KiB
Vue

1 year ago
<template>
<view class="container">
<view class="type-box display-flex" v-if="!success">
<view
:class="'type-item ' + (actived == index ? 'type-active' : '')"
:data-item="item"
:data-index="index"
@tap="handleUpdatType"
v-for="(item, index) in troubleList"
:key="index"
>
{{ item }}
</view>
</view>
<view class="submit" v-if="!success" hover-class="none" :hover-stop-propagation="false">
<textarea class="bgf textarea br8 f14" :value="textVal" @input="getVal" maxlength="150" placeholder="我们想听到您的心声..." placeholder-class="f14 cccc"></textarea>
<!-- <view class="" style="margin-top: 16px;">
<image src="https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/my_uploadphotos.svg"
mode="widthFix"
style="width: 72px;height: 72px;"
bind:tap="handleUpdateImage"
/>
</view>
<view style="margin-top: 8px;font-size: 12px;color: #999999;">
上传照片截图最多传4张选填
</view> -->
<view class="weui-cell__bd1 mt20">
<view class="weui-uploader__bd">
<view class="weui-uploader__files" id="uploaderFiles">
<block v-for="(item, index) in files" :key="index">
<view class="weui-uploader__file pr" @tap="previewImage" :id="item">
<image
src="http://matripe.oss-cn-beijing.aliyuncs.com/nezha/del.svg"
:data-id="item.id"
:data-url="item.url"
@click.stop="delImgs"
class="delImg"
style="width: 20px; height: 20px"
></image>
<image @click.stop="showImgs" :mark:url="item.url" class="weui-uploader__img" :src="item.url" mode="aspectFill" />
</view>
</block>
</view>
<view class="weui-uploader__input-box" v-if="files.length < 4" @tap="chooseMedia">
<image src="https://matripe-cms.oss-cn-beijing.aliyuncs.com/dailibaoming/my_uploadphotos.svg" mode="widthFix" style="width: 72px; height: 72px" />
<!-- <view class="weui-uploader__input" bindtap="chooseMedia"></view> -->
</view>
</view>
</view>
<view class="clb"></view>
<view style="margin-top: 8px; font-size: 12px; color: #999999">上传照片截图最多传4张选填</view>
<button class="normalBtn loginOut f16" hover-class="thover" @tap="submit" style="margin-top: 90px" :loading="loading">提交</button>
</view>
<view class="success" v-else hover-class="none" :hover-stop-propagation="false">
<view class="tc" style="padding-top: 100px">
<i class="iconfont icon-tijiaochenggong lh1" style="color: #07c160; font-size: 70px"></i>
<view class="successText mt20 f22 fw500 lh1">已提交</view>
<view class="f14 c9 mt16" hover-class="none" :hover-stop-propagation="false">感谢您的宝贵意见我们会第一时间处理哈~</view>
<button class="normalBtn loginOut f16" hover-class="thover" @tap="goback" style="margin-top: 50px" :loading="loading">返回</button>
<!-- <view class="tac mt16 f14" style="color:#576B95" bindtap="goList" hover-class="thover" hover-stop-propagation="false">查看记录</view> -->
</view>
</view>
</view>
</template>
<script>
// pages/opinion/index.js
const app = getApp();
export default {
data() {
return {
files: [],
newAddImg: [],
textVal: '',
loading: false,
subLoad: false,
success: false,
troubleList: ['投诉', '建议', '故障', '其他'],
actived: 0,
count: 4,
urls: ''
};
}
/**
* 生命周期函数--监听页面加载
*/,
onLoad(options) {},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
methods: {
chooseMedia() {
var that = this;
console.log(that.count);
uni.chooseMedia({
count: that.count,
mediaType: ['image'],
sizeType: ['original', 'compressed'],
sourceType: ['album', 'camera'],
success(res) {
// tempFilePath可以作为 img 标签的 src 属性显示图片
uni.showLoading({
title: '上传中...'
});
console.log(res);
const tempFilePaths = res.tempFiles;
tempFilePaths.forEach((item, index) => {
uni.uploadFile({
url: app.globalData.ip + '/imgs/uploadImage',
method: 'post',
// data:currData,
// name: "uploadFile",
filePath: tempFilePaths[index].tempFilePath,
name: 'uploadFile',
header: app.globalData.headers,
success: function (res) {
console.log(that.files);
console.log(JSON.parse(res.data).data);
that.files.push({
url: JSON.parse(res.data).data,
id: -999
});
that.newAddImg.push(JSON.parse(res.data).data);
that.setData({
files: that.files,
newAddImg: that.newAddImg,
count: 4 - that.files.length
});
// currData.data = JSON.parse(res.data);
that.pushImg();
// console.log(that.data.files);
// that.updateImgs(currData.type,currData.fkId,currData.data.data);
},
fail: function (res) {
console.log(res);
}
});
uni.hideLoading();
});
}
});
},
delImgs(e) {
var that = this;
var url = e.currentTarget.dataset.url;
var id = e.currentTarget.dataset.id;
console.log(that.files);
uni.showModal({
title: '提示',
content: '确定要删除该图片?',
confirmColor: '#00BEBE',
success(res) {
if (res.confirm) {
that.files.forEach((item, index) => {
if (item.url == url) {
that.files.splice(index, 1);
that.newAddImg.splice(index, 1);
}
});
that.pushImg();
that.setData({
files: that.files,
newAddImg: that.newAddImg,
count: 4 - that.files.length
});
} else if (res.cancel) {
console.log('用户点击取消');
}
}
});
},
pushImg() {
var that = this;
console.log(that.files);
that.urls = [];
// that.data.files.forEach(item=>{
// that.data.urls.push(item.url)
// })
let curr = [];
that.files.forEach((item) => {
curr.push({
url: item.url,
id: item.id
});
});
that.setData({
urls: curr
});
},
showImgs(e) {
var that = this;
console.log(that.urls);
let curr = [];
that.urls.forEach((item) => {
curr.push(item.url);
});
uni.previewImage({
current: e.mark.url,
// 当前显示图片的 http 链接
urls: curr // 需要预览的图片 http 链接列表
});
},
handleUpdatType(e) {
console.log(e);
this.setData({
actived: e.target.dataset.index
});
},
handleUpdateImage() {
uni.chooseMedia({
count: 1,
mediaType: ['image'],
sourceType: ['album', 'camera'],
maxDuration: 30,
camera: 'back',
success(res) {
console.log('获取上传数据:', res);
// 调用上传接口
}
});
},
/**
* 意见提交事件
*
*
*/
submit() {
const that = this;
if (that.subLoad) {
return;
}
that.subLoad = true;
console.log(that.newAddImg);
// return
// that.setData({
// success: true,
// loading: false,
// subLoad:false
// });
if (that.textVal.trim() != '') {
console.log(312313123);
that.setData({
loading: true
});
uni.request({
url: app.globalData.ip + '/daotian/feedback/add',
method: 'post',
header: app.globalData.headers,
data: {
content: that.textVal,
classify: Number(that.actived + 1),
imgs: that.newAddImg.toString(),
appId: app.globalData.appId
},
success: function (res) {
console.log(res);
if (res.data.status == 200) {
that.setData({
success: true
});
} else {
uni.showToast({
title: res.data.msg,
icon: 'none'
});
}
that.setData({
loading: false
});
that.subLoad = false;
},
fail: function (res) {
that.setData({
loading: false
});
}
});
} else {
uni.showToast({
title: '请输入内容再提交',
icon: 'none'
});
}
},
getVal(e) {
console.log(e);
this.setData({
textVal: e.detail.value
});
console.log(this.textVal);
},
goback() {
// wx.navigateBack({
// delta: 1,
// });
uni.switchTab({
url: '../../mine/index'
});
},
goList() {
uni.navigateTo({
url: '/pages/opinionList/index'
});
},
previewImage() {
console.log('占位:函数 previewImage 未声明');
}
}
};
</script>
<style>
@import './index.css';
</style>