detail.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. <template>
  2. <el-dialog custom-class="ba-operate-dialog" :model-value="showDialog" @close="showDialog=false"
  3. :title="detailData.handleStatusName">
  4. <div class="mt-20">
  5. <el-descriptions title="" direction="vertical" :column="4" border>
  6. <el-descriptions-item label="问题来源">{{detailData.sourceType===0?'显示屏幕':detailData.sourceType===1?'内置应用':'手机应用'}}
  7. </el-descriptions-item>
  8. <el-descriptions-item label="反馈类型">{{detailData.feedbackType===0?'功能':detailData.feedbackType===1?'优化':'其他'}}
  9. </el-descriptions-item>
  10. <el-descriptions-item label="联系人">{{detailData.contactName}}</el-descriptions-item>
  11. <el-descriptions-item label="联系电话">{{detailData.contactMobile}}</el-descriptions-item>
  12. <el-descriptions-item label="备注" :span="4">{{detailData.feedbackContent}}</el-descriptions-item>
  13. <el-descriptions-item label="图片" :span="4">
  14. <div style="display: flex;flex-flow: wrap">
  15. <el-image :preview-src-list="detailData.feedbackPictureUrl" :src="item" v-for="(item,index) in detailData.feedbackPictureUrl" style="height: 100px;width: 100px;padding:10px" :key="index"></el-image>
  16. </div>
  17. </el-descriptions-item>
  18. </el-descriptions>
  19. </div>
  20. <div style="margin-top: 20px">
  21. <div style="display: flex;justify-content: space-between;margin-top: 10px">
  22. <span>处理情况:</span>
  23. </div>
  24. <el-input style="margin-top: 10px" type="textarea" rows="6" v-model="detailData.handleRemark">
  25. </el-input>
  26. </div>
  27. <div class="flex justify-flex-end mt-20">
  28. <el-button type="primary" @click="save">保存</el-button>
  29. </div>
  30. </el-dialog>
  31. </template>
  32. <script setup lang="ts">
  33. import { nextTick, ref, toRaw } from 'vue'
  34. import request from '/@/api/request'
  35. import { feedback, member } from '/@/api/controllerUrls'
  36. let props = defineProps({
  37. data: {
  38. type: Object,
  39. default: {},
  40. },
  41. })
  42. let detailData = ref({})
  43. let showDialog = ref(false)
  44. function openDialog(value: any) {
  45. showDialog.value = true
  46. nextTick(() => {
  47. getData(value)
  48. })
  49. }
  50. function getData(value: any) {
  51. request.index(feedback, { id: value.id }, 'detail').then((res) => {
  52. detailData.value = res.data
  53. })
  54. }
  55. function save() {
  56. request.edit(feedback, { id: detailData.value.id, handleRemark: detailData.value.handleRemark }, 'confirm').then((res) => {
  57. detailData.value = res.data
  58. })
  59. }
  60. defineExpose({
  61. openDialog,
  62. })
  63. </script>
  64. <style scoped>
  65. </style>