Commit a6fbc780 authored by 潘永坪's avatar 潘永坪

建议投诉开发

parent 1c5080e7
...@@ -297,28 +297,45 @@ ...@@ -297,28 +297,45 @@
"path" : "suggestComplaint/list/list", "path" : "suggestComplaint/list/list",
"style" : "style" :
{ {
"navigationBarTitleText" : "建议投诉" "navigationBarTitleText" : "建议投诉",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
} }
}, },
{ {
"path" : "suggestComplaint/suggestCommit/suggestCommit", "path" : "suggestComplaint/suggestCommit/suggestCommit",
"style" : "style" :
{ {
"navigationBarTitleText" : "建议投诉" "navigationBarTitleText" : "建议",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
} }
}, },
{ {
"path" : "suggestComplaint/complaintCommit/complaintCommit", "path" : "suggestComplaint/complaintCommit/complaintCommit",
"style" : "style" :
{ {
"navigationBarTitleText" : "建议投诉" "navigationBarTitleText" : "投诉",
"navigationBarBackgroundColor": "#ffffff",
"navigationBarTextStyle": "black"
} }
}, },
{ {
"path" : "suggestComplaint/detail/detail", "path" : "suggestComplaint/suggestDetail/suggestDetail",
"style" : "style" :
{ {
"navigationBarTitleText" : "详情" "navigationBarTitleText" : "建议详情",
"navigationBarBackgroundColor": "#F7F8FA",
"navigationBarTextStyle": "black"
}
},
{
"path" : "suggestComplaint/complaintDetail/complaintDetail",
"style" :
{
"navigationBarTitleText" : "投诉详情",
"navigationBarBackgroundColor": "#F7F8FA",
"navigationBarTextStyle": "black"
} }
} }
] ]
......
...@@ -64,7 +64,7 @@ export default{ ...@@ -64,7 +64,7 @@ export default{
data(){ data(){
return{ return{
active:0,//默认下标 active:0,//默认下标
merchantId:'z0015605022691a5945bbe463141668c',//商户Id merchantId:'',//商户Id
openid:uni.getStorageSync('openid')||'',//openid openid:uni.getStorageSync('openid')||'',//openid
typeList:[],//类型列表 typeList:[],//类型列表
commentText:'',//投诉内容 commentText:'',//投诉内容
...@@ -75,7 +75,7 @@ export default{ ...@@ -75,7 +75,7 @@ export default{
} }
}, },
onLoad(option) { onLoad(option) {
//this.merchantId=option.merchantId||'' this.merchantId=option.merchantId||''
this.initType() this.initType()
}, },
methods:{ methods:{
...@@ -268,9 +268,9 @@ export default{ ...@@ -268,9 +268,9 @@ export default{
bottom: 0; bottom: 0;
left: 0; left: 0;
width: 100%; width: 100%;
padding: 20rpx 40rpx 60rpx 40rpx;
background: #ffffff; background: #ffffff;
padding: 20rpx 32rpx 32rpx 32rpx; border-top: 1px solid #EDEDED;
border-top: 1px solid #E9E9E9;;
} }
/*修改上传组件样式*/ /*修改上传组件样式*/
.top-list /deep/ .uicon-camera-fill{ .top-list /deep/ .uicon-camera-fill{
......
<template>
<view class="wrap">
<view class="top">
<view>
<text>发起日期:</text>
<text>{{firstData.createTime}}</text>
</view>
<view>
<text>投诉类别:</text>
<text>{{firstData.commentType||'-'}}</text>
</view>
<view>
<text>联系方式:</text>
<text>{{firstData.phone||'-'}}</text>
</view>
</view>
<view class="middle">
<view class="middle-title">处理记录</view>
<view class="step">
<view class="step-list" v-for="(item,index) in detailList" :key="index">
<view class="list-left">
<view class="circle">
<text v-if="index!=0"></text>
</view>
<view class="line" v-if="index!=detailList.length-1"></view>
</view>
<view class="list-right">
<view class="right-title">
<text>{{item.title}}</text>
<text>{{item.time}}</text>
</view>
<view class="right-content">
{{item.text}}
</view>
<view class="right-img">
<image v-for="(item2,a) in item.imgList" :key="a" :src="item2.imgUrl"></image>
</view>
</view>
</view>
</view>
</view>
<view class="bottom">
<text class="full-btn" @click="showPop=true">再次投诉</text>
</view>
<!-- 再次投诉弹窗 -->
<u-popup :show="showPop" :round="20" @close="showPop=false" closeable>
<view class="pop-top">
<view class="pop-main-title">
再次投诉
</view>
<view class="pop-title">
<text >投诉描述</text>
<text class="red">*</text>
</view>
<view class="pop-text">
<u--textarea v-model="commentText" placeholder="请描述您遇到的问题,我们会尽快处理" count maxlength='400' height='200'>
</u--textarea>
</view>
<view class="pop-title">
<text>相关图片</text>
<text class="grey">(最多三张)</text>
</view>
<view class="pop-image">
<u-upload
:fileList="fileList1"
@afterRead="afterRead"
@delete="deletePic"
name="1"
multiple
:maxCount="3"
width='160'
height='160'
></u-upload>
</view>
</view>
<view class="pop-bottom">
<text class="full-btn" @click="commit()">提交</text>
</view>
</u-popup>
</view>
</template>
<script>
export default{
data(){
return {
showPop:false,//控制再次投诉弹窗
merchantId:'',//商户Id
openid:uni.getStorageSync('openid')||'',//openid
batchId:'',//批次id
detailList:[],//详情数据
firstData:'',//第一条数据
fileList1: [],//文件列表
imgList:[],//上传的图片列表
commentText:'',//投诉内容
}
},
onLoad(option){
this.batchId=option.batchId
this.merchantId=option.merchantId||''
this.initDetail()
},
methods:{
//---详情加载
initDetail(){
let data={
batchId:this.batchId//批次Id
}
this.$request('comment/userComment/loadInfo',data).then((res)=>{
if(res.code=='00'){
let list=res.data||[]
if(list.length>0){
this.firstData=list[0]
list.forEach(item=>{
if(item.commentText){
//游客发起
let imgList=[]
item.commentImgList.forEach(item2=>{
if(item2.imgCommentType==0){
//游客发送的图片
imgList.push(item2)
}
})
this.detailList.push({
title:'您发起建议',
text:item.commentText,
time:item.createTime,
imgList
})
}
if(item.commentReply){
//商家回复
let imgList=[]
item.commentImgList.forEach(item2=>{
if(item2.imgCommentType==1){
//商家发送的图片
imgList.push(item2)
}
})
this.detailList.push({
title:'商家回复',
text:item.commentReply,
time:item.updateTime,
imgList
})
}
})
this.detailList.reverse()
}
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
//---删除图片
deletePic(event) {
this[`fileList${event.name}`].splice(event.index, 1)
},
//---新增图片
async afterRead(event) {
// 当设置 multiple 为 true 时, file 为数组格式,否则为对象格式
let lists = [].concat(event.file)
let fileListLen = this[`fileList${event.name}`].length
lists.map((item) => {
this[`fileList${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[`fileList${event.name}`][fileListLen]
this[`fileList${event.name}`].splice(fileListLen, 1, Object.assign(item, {
status: 'success',
message: '',
url: result
}))
fileListLen++
}
},
uploadFilePromise(url) {
return new Promise((resolve, reject) => {
let baseUrl=''
if(process.env.NODE_ENV === 'development'){//开发环境
baseUrl='http://192.168.0.213:7888/'
}else{
baseUrl= 'https://manager.pangdly.com/'
}
let fun = uni.uploadFile({
url: baseUrl+'upload/file/newUpload', // 仅为示例,非真实的接口地址
filePath:url,
name: 'uploadFile',
success: (res) => {
let res1=JSON.parse(res.data)
if(res1.code == '00'){
resolve(res1.data)
}
}
})
})
},
//---提交
commit(){
this.imgList=this.fileList1.map(item=>{
let baseUrl=''
if(process.env.NODE_ENV === 'development'){//开发环境
baseUrl='http://picture.tuyoyoo.com/'
}else{
baseUrl= 'http://picture.pangdly.com/'
}
return {
imgUrl:baseUrl+item.url,
imgCommentType:0//0游客发起图片 1客服回复图片
}
})
if(!this.commentText){
uni.showToast({
title: '请输入投诉内容',
icon: 'none'
})
return
}
let data={
batchId:this.batchId,//批次Id
merchantId:this.merchantId,//商户Id
openid:this.openid,//openid
submitType:0,//0-投诉 1-建议
commentText:this.commentText,//投诉内容
handleStatus:0,//处理状态 0未处理1已处理(默认填0)
commentImgList:this.imgList,//图片列表
}
this.$request('comment/userComment/save',data).then((res)=>{
if(res.code=='00'){
uni.showToast({
title:'提交成功',
icon: 'none'
})
setTimeout(()=>{
uni.navigateBack({
delta:1
})
},2000)
}else{
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
}
}
}
</script>
<style scoped lang="scss">
.top{
padding: 24rpx 40rpx;
background: #ffffff;
}
.top view:not(:first-child){
margin-top: 20rpx;
}
.top view text:first-child{
color: #999999;
margin-right: 20rpx;
}
.middle{
margin-top: 20rpx;
background: #ffffff;
padding: 30rpx 30rpx 150rpx 30rpx;
}
.middle-title{
font-size: 32rpx;
font-weight: 600;
}
.step{
margin-top: 40rpx;
}
.step-list{
display: flex;
}
.list-left{
margin-right: 10rpx;
flex-shrink: 0;
display: flex;
flex-direction: column;
padding-top: 6rpx;
}
.circle{
width: 24rpx;
height: 24rpx;
border-radius: 50%;
background: #FE6600;
position: relative;
text{
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background: #ffffff;
position: absolute;
top: 4rpx;
left: 4rpx;
}
}
.line{
width: 4rpx;
flex: 1;
background: #FFEDD6;
position: relative;
left: 10rpx;
}
.list-right{
flex: 1;
padding-bottom: 40rpx;
}
.right-title{
text:first-child{
font-size: 32rpx;
font-weight: 600;
margin-right: 20rpx;
}
text:last-child{
color: #999999;
}
}
.right-content{
margin-top: 12rpx;
font-size: 24rpx;
}
.right-img{
margin-top: 20rpx;
image{
width: 92rpx;
height: 92rpx;
margin-right: 20rpx;
}
}
.bottom{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: #ffffff;
padding: 20rpx 40rpx 60rpx 40rpx;
border-top: 1px solid #EDEDED;
}
// 弹窗
.pop-top{
padding: 36rpx 40rpx;
}
.pop-main-title{
font-size: 36rpx;
font-weight: 600;
}
.pop-title{
margin-top: 40rpx;
font-size: 32rpx;
font-weight: 600;
}
.pop-text{
margin-top: 24rpx;
}
.pop-image{
margin-top: 24rpx;
}
.red{
color: #F53F3F;
}
.grey{
color:#999999;
}
.pop-bottom{
padding: 20rpx 40rpx 0 40rpx;
border-top: 1px solid #EDEDED;
}
/*修改上传组件样式*/
.pop-top /deep/ .uicon-camera-fill{
font-size: 36px !important;
line-height: 36px !important;
}
.pop-top /deep/ .uicon-close{
font-size: 10px !important;
line-height: 10px !important;
}
.pop-top /deep/ .uicon-checkmark{
font-size: 12px !important;
line-height: 12px !important;
}
</style>
\ No newline at end of file
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
<view class="middle"> <view class="middle">
<!-- 建议列表 --> <!-- 建议列表 -->
<template v-if="active==0"> <template v-if="active==0">
<view class="middle-list" v-for="(item,index) in suggestList" :key="index" @click="goDetail(item.batchId)"> <view class="middle-list" v-for="(item,index) in suggestList" :key="index" @click="goSuggestDetail(item.batchId)">
<view class="list-time"> <view class="list-time">
<text>{{item.createTime}}</text> <text>{{item.createTime}}</text>
<text>查看回复</text> <text>查看回复</text>
...@@ -25,7 +25,7 @@ ...@@ -25,7 +25,7 @@
</template> </template>
<!-- 投诉列表 --> <!-- 投诉列表 -->
<template v-else> <template v-else>
<view class="middle-list" v-for="(item,index) in complaintList" :key="index" @click="goDetail(item.batchId)"> <view class="middle-list" v-for="(item,index) in complaintList" :key="index" @click="goComplaintDetail(item.batchId)">
<view class="list-time"> <view class="list-time">
<text>{{item.createTime}}</text> <text>{{item.createTime}}</text>
<text>查看回复</text> <text>查看回复</text>
...@@ -82,10 +82,16 @@ export default{ ...@@ -82,10 +82,16 @@ export default{
url:'/pages/my/suggestComplaint/complaintCommit/complaintCommit?merchantId='+this.merchantId url:'/pages/my/suggestComplaint/complaintCommit/complaintCommit?merchantId='+this.merchantId
}) })
}, },
//---跳转详情页面 //---跳转建议详情页面
goDetail(batchId){ goSuggestDetail(batchId){
uni.navigateTo({ uni.navigateTo({
url:'/pages/my/suggestComplaint/detail/detail?batchId='+batchId url:'/pages/my/suggestComplaint/suggestDetail/suggestDetail?merchantId='+this.merchantId+'&batchId='+batchId
})
},
//---跳转投诉详情页面
goComplaintDetail(batchId){
uni.navigateTo({
url:'/pages/my/suggestComplaint/complaintDetail/complaintDetail?merchantId='+this.merchantId+'&batchId='+batchId
}) })
}, },
//---列表加载 //---列表加载
......
...@@ -52,7 +52,7 @@ export default{ ...@@ -52,7 +52,7 @@ export default{
data(){ data(){
return{ return{
active:0,//默认下标 active:0,//默认下标
merchantId:'z0015605022691a5945bbe463141668c',//商户Id merchantId:'',//商户Id
openid:uni.getStorageSync('openid')||'',//openid openid:uni.getStorageSync('openid')||'',//openid
commentText:'',//建议内容 commentText:'',//建议内容
phone:'',//电话号码 phone:'',//电话号码
...@@ -61,7 +61,7 @@ export default{ ...@@ -61,7 +61,7 @@ export default{
} }
}, },
onLoad(option) { onLoad(option) {
// this.merchantId=option.merchantId||'' this.merchantId=option.merchantId||''
}, },
methods:{ methods:{
//---删除图片 //---删除图片
...@@ -201,8 +201,8 @@ export default{ ...@@ -201,8 +201,8 @@ export default{
left: 0; left: 0;
width: 100%; width: 100%;
background: #ffffff; background: #ffffff;
padding: 20rpx 32rpx 32rpx 32rpx; padding: 20rpx 40rpx 60rpx 40rpx;
border-top: 1px solid #E9E9E9;; border-top: 1px solid #EDEDED;
} }
/*修改上传组件样式*/ /*修改上传组件样式*/
.top-list /deep/ .uicon-camera-fill{ .top-list /deep/ .uicon-camera-fill{
......
...@@ -3,50 +3,41 @@ ...@@ -3,50 +3,41 @@
<view class="top"> <view class="top">
<view> <view>
<text>发起日期:</text> <text>发起日期:</text>
<text>2024-11-11 11:02:31</text> <text>{{firstData.createTime}}</text>
</view>
<view>
<text>投诉类别:</text>
<text>票务类</text>
</view> </view>
<view> <view>
<text>联系方式:</text> <text>联系方式:</text>
<text>15808046328</text> <text>{{firstData.phone||'-'}}</text>
</view> </view>
</view> </view>
<view class="middle"> <view class="middle">
<view class="middle-title">处理记录</view> <view class="middle-title">处理记录</view>
<view class="step"> <view class="step">
<view class="step-list" v-for="(item,index) in 5" :key="index"> <view class="step-list" v-for="(item,index) in detailList" :key="index">
<view class="list-left"> <view class="list-left">
<view class="circle"> <view class="circle">
<text v-if="index!=0"></text> <text v-if="index!=0"></text>
</view> </view>
<view class="line" v-if="index!=4"></view> <view class="line" v-if="index!=detailList.length-1"></view>
</view> </view>
<view class="list-right"> <view class="list-right">
<view class="right-title"> <view class="right-title">
<text>您再次发起投诉</text> <text>{{item.title}}</text>
<text>11-20 09:48</text> <text>{{item.time}}</text>
</view> </view>
<view class="right-content"> <view class="right-content">
问题没解决,没收到退款 {{item.text}}
</view> </view>
<view class="right-img"> <view class="right-img">
<image src="../../static/takeNumber/sdMap.jpg"></image> <image v-for="(item2,a) in item.imgList" :key="a" :src="item2.imgUrl"></image>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view class="bottom">
<text class="full-btn">再次投诉</text>
</view>
</view> </view>
</template> </template>
...@@ -56,6 +47,8 @@ export default{ ...@@ -56,6 +47,8 @@ export default{
data(){ data(){
return { return {
batchId:'',//批次id batchId:'',//批次id
detailList:[],//详情数据
firstData:'',//第一条数据
} }
}, },
onLoad(option){ onLoad(option){
...@@ -70,7 +63,45 @@ export default{ ...@@ -70,7 +63,45 @@ export default{
} }
this.$request('comment/userComment/loadInfo',data).then((res)=>{ this.$request('comment/userComment/loadInfo',data).then((res)=>{
if(res.code=='00'){ if(res.code=='00'){
let list=res.data||[]
if(list.length>0){
this.firstData=list[0]
list.forEach(item=>{
if(item.commentText){
//游客发起
let imgList=[]
item.commentImgList.forEach(item2=>{
if(item2.imgCommentType==0){
//游客发送的图片
imgList.push(item2)
}
})
this.detailList.push({
title:'您发起建议',
text:item.commentText,
time:item.createTime,
imgList
})
}
if(item.commentReply){
//商家回复
let imgList=[]
item.commentImgList.forEach(item2=>{
if(item2.imgCommentType==1){
//商家发送的图片
imgList.push(item2)
}
})
this.detailList.push({
title:'商家回复',
text:item.commentReply,
time:item.updateTime,
imgList
})
}
})
this.detailList.reverse()
}
}else{ }else{
uni.showToast({ uni.showToast({
title: res.message, title: res.message,
...@@ -89,7 +120,7 @@ export default{ ...@@ -89,7 +120,7 @@ export default{
background: #ffffff; background: #ffffff;
} }
.top view:not(:first-child){ .top view:not(:first-child){
margin-top: 10rpx; margin-top: 20rpx;
} }
.top view text:first-child{ .top view text:first-child{
color: #999999; color: #999999;
...@@ -166,12 +197,4 @@ export default{ ...@@ -166,12 +197,4 @@ export default{
margin-right: 20rpx; margin-right: 20rpx;
} }
} }
.bottom{
position: fixed;
bottom: 0;
left: 0;
width: 100%;
background: #ffffff;
padding: 20rpx 32rpx 32rpx 32rpx;
}
</style> </style>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment