mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-22 01:06:43 +08:00
223 lines
7.9 KiB
Vue
223 lines
7.9 KiB
Vue
<template>
|
||
<div class="g-content">
|
||
<div style="display:flex;justify-content: space-between;height: 40px;">
|
||
<div>
|
||
<div style="color: #ffaa00; ">您在使用的过程中,碰到的问题都可以在这里提问,我们会尽快回复您 </div>
|
||
</div>
|
||
<div style="text-align: right;">
|
||
<el-button @click="showAdd()" type="primary">反馈问题</el-button>
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<el-row>
|
||
<el-col :span="24">
|
||
<div v-for="(item,idx) in pageData.list" :key="idx" class="problem" style="margin-top: 10px;">
|
||
<div class="problem-header">
|
||
<span style="padding-top: 10px;">{{item.userName}} {{item.addTime}}</span>
|
||
<span style="padding-right: 10px">
|
||
|
||
</span>
|
||
</div>
|
||
<div class="problem-body">
|
||
<div>{{item.content}}</div>
|
||
<div v-if="item.lastAnswer!=''" class="problem-reply">
|
||
<div><span style="color: #0081C2;"> 回复:</span> <span>{{item.lastUser}} {{item.lastTime}}</span></div>
|
||
<div style="padding-left: 20px;">{{item.lastAnswer}}</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div v-if="pageData.count>pageData.pageSize">
|
||
<pagination :size="pageData.pageSize" :total="pageData.count" :page="pageData.pageIndex" @change-size="changePageSize" @change-page="loadData" ></pagination>
|
||
</div>
|
||
</el-col>
|
||
</el-row>
|
||
</div>
|
||
<!--提交新问题-->
|
||
<el-dialog title="提交新问题" :close-on-click-modal="false" :visible.sync="formData.dlgShow" width="800px" custom-class="g-dialog">
|
||
<el-form :model="formData.data" size="medium" label-width="100px">
|
||
<el-form-item label="问题类型" >
|
||
<el-select clearable v-model="formData.data.qtype">
|
||
<el-option label="程序错误" value="程序错误"></el-option>
|
||
<el-option label="账号问题" value="账号问题"></el-option>
|
||
<el-option label="数据丢失" value="数据丢失"></el-option>
|
||
<el-option label="其它" value="其它"></el-option>
|
||
</el-select>
|
||
</el-form-item>
|
||
<el-form-item label="问题描述">
|
||
<el-input v-model="formData.data.content" rows="10" type="textarea" placeholder="尽量的详细描述问题" :maxlength="500" show-word-limit clearable :style="{width: '100%'}"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="formData.dlgShow= false">取 消</el-button>
|
||
<el-button type="primary" @click="submitAdd">提 交</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<!--回复问题-->
|
||
<el-dialog title="回复" :close-on-click-modal="false" :visible.sync="replyData.dlgShow" width="800px" custom-class="g-dialog">
|
||
<el-form :model="replyData.data" size="medium" label-width="100px">
|
||
<el-form-item label="问题">
|
||
{{replyData.content}}
|
||
</el-form-item>
|
||
<el-form-item label="回复内容">
|
||
<el-input v-model="replyData.data.content" rows="10" type="textarea" placeholder="" :maxlength="500" show-word-limit clearable :style="{width: '100%'}"></el-input>
|
||
</el-form-item>
|
||
</el-form>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="replyData.dlgShow= false">取 消</el-button>
|
||
<el-button type="primary" @click="submitReply">提 交</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
<el-dialog title="全部回复内容" :close-on-click-modal="false" :visible.sync="detail.dlgShow" width="800px" custom-class="g-dialog">
|
||
<div>
|
||
<div class="answer" v-for="(answer,aidx) in detail.answers" :key="aidx">
|
||
<div class="answer-header">{{answer.userName}} {{answer.addTime}}</div>
|
||
<div class="answer-body">{{answer.content}}</div>
|
||
</div>
|
||
</div>
|
||
<span slot="footer" class="dialog-footer">
|
||
<el-button @click="detail.dlgShow= false">关 闭</el-button>
|
||
</span>
|
||
</el-dialog>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import { mapGetters } from 'vuex'
|
||
import feedback from '@/api/modules/feedback'
|
||
export default {
|
||
computed:{
|
||
...mapGetters(['userInfo']),
|
||
},
|
||
data(){
|
||
return {
|
||
queryPars:{name:'',mobile:'',status:''},
|
||
pageData:{list:[],count:0, pageIndex:1,pageSize:10},
|
||
formData:{
|
||
dlgShow:false,
|
||
data:{id:'',qtype:'',top:false,content:'',aid:'',userName:''}
|
||
},
|
||
replyData:{
|
||
dlgShow:false,
|
||
content:'',
|
||
data:{qid:'',best:false,parentId:'-1',content:'',aid:'',userName:'',valid:true}
|
||
},
|
||
detail:{
|
||
dlgShow:false,
|
||
answers:[]
|
||
}
|
||
}
|
||
},
|
||
mounted() {
|
||
this.loadData(1);
|
||
},
|
||
methods:{
|
||
loadData(pindex){
|
||
this.pageData.pageIndex=pindex;
|
||
let $this=this;
|
||
//加载加入申请
|
||
let params={
|
||
status:this.queryPars.status,
|
||
pageSize:this.pageData.pageSize,
|
||
pageIndex:this.pageData.pageIndex,
|
||
aid:this.userInfo.aid
|
||
}
|
||
feedback.list(params).then(res=>{
|
||
if(res.status==200){
|
||
$this.pageData.list=res.result.list;
|
||
$this.pageData.count=res.result.count;
|
||
}
|
||
}).catch(err=>{
|
||
$this.$message({ type: 'error', message: '查询数据错误:'+err});
|
||
});
|
||
},
|
||
changePageSize(ps){
|
||
this.pageData.pageSize=ps;
|
||
this.loadData(1);
|
||
},
|
||
showAdd(){
|
||
this.formData.dlgShow=true;
|
||
this.formData.data={id:'',qtype:'',top:false,content:'',aid:'',userName:''};
|
||
},
|
||
showDetail(item){
|
||
qa.detail(item.id).then(rs=>{
|
||
this.detail.answers=rs.result.answerList;
|
||
})
|
||
this.detail.dlgShow=true;
|
||
},
|
||
showReply(item){
|
||
this.replyData.dlgShow=true;
|
||
this.replyData.content=item.content;
|
||
this.replyData.data.qid=item.id;
|
||
this.replyData.data.content='';
|
||
this.replyData.data.userName=this.userInfo.name;
|
||
},
|
||
submitAdd(){
|
||
this.formData.data.userName=this.userInfo.name;
|
||
if(this.formData.data.qtype==''){
|
||
this.$message({ type: 'error', message: '请选择问题类型'});
|
||
return
|
||
}
|
||
if(this.formData.data.content==''){
|
||
this.$message({ type: 'error', message: '问题内容不能为空'});
|
||
return
|
||
}
|
||
qa.save(this.formData.data).then(res=>{
|
||
this.formData.dlgShow=false;
|
||
this.$message({ type: 'success', message:'添加成功'});
|
||
this.loadData(1);
|
||
}).catch(err=>{
|
||
this.$message({ type: 'error', message: '添加失败:'+err});
|
||
})
|
||
},
|
||
submitReply(){
|
||
if(this.replyData.data.content==''){
|
||
this.$message({ type: 'error', message: '回复内容不能为空'});
|
||
return
|
||
}
|
||
qa.reply(this.replyData.data).then(res=>{
|
||
this.replyData.dlgShow=false;
|
||
this.$message({ type: 'success', message:'回复成功'});
|
||
}).catch(err=>{
|
||
this.$message({ type: 'error', message: '回复处理失败:'+err});
|
||
})
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="scss" scoped>
|
||
.problem{
|
||
margin: 10px;
|
||
border: 1px solid #e4e4e4;
|
||
}
|
||
.problem-header{
|
||
padding: 5px 10px;
|
||
line-height: 20px;
|
||
color: #8a8a8a;
|
||
display: flex;
|
||
justify-content: space-between;
|
||
border-bottom: 1px solid #e4e4e4;
|
||
}
|
||
.problem-body{
|
||
padding: 10px;
|
||
line-height: 28px;
|
||
}
|
||
.problem-reply{
|
||
padding-top: 8px;
|
||
color: #585858;
|
||
}
|
||
.answer{
|
||
margin: 10px;
|
||
border: 1px solid #f0f0f0;
|
||
}
|
||
.answer-header{
|
||
padding: 5px 10px;
|
||
color: #8a8a8a;
|
||
border-bottom: 1px solid #f0f0f0;
|
||
}
|
||
.answer-body{
|
||
padding: 10px;
|
||
line-height: 28px;
|
||
}
|
||
</style>
|