mirror of
https://codeup.aliyun.com/67762337eccfc218f6110e0e/vue/learning-system-portal.git
synced 2025-12-22 09:16:44 +08:00
2022年5月29日从svn移到git
This commit is contained in:
222
src/views/feedback/Index.vue
Normal file
222
src/views/feedback/Index.vue
Normal file
@@ -0,0 +1,222 @@
|
||||
<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">
|
||||
.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>
|
||||
Reference in New Issue
Block a user