singleProblem.vue 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <template>
  2. <div
  3. class="single-item"
  4. :style="`padding-bottom:${props.problemData.problemStatus === STATUS.handled ? '0px' : '38px'}`"
  5. >
  6. <div style="display: flex; font-size: 12px">
  7. <img src="@/assets/icons/phone.png" alt="" />
  8. <div class="single-contact">联系方式:{{ props.problemData.mobile }}</div>
  9. <div style="color: #00000073"
  10. >人员:{{ props.problemData.username }}-{{ props.problemData.nickname }}
  11. </div>
  12. <div style="margin-left: 20px; color: #00000073">日期:{{ props.problemData.createdAt }}</div>
  13. </div>
  14. <el-button v-if="props.isHandle" type="primary" class="single-handle" @click="handleProblem"
  15. >处理</el-button
  16. >
  17. <el-divider />
  18. <div class="problem-describe">
  19. <div>问题描述:</div>
  20. <div class="problem-content">{{ props.problemData.problemDescription }}</div>
  21. </div>
  22. <el-collapse v-if="props.problemData.problemStatus === STATUS.handled" v-model="activeNames">
  23. <el-collapse-item name="1">
  24. <template #title>
  25. <div class="problem-describe">
  26. <div>处理人:</div>
  27. <div class="problem-content">{{ props.problemData.processor }}</div>
  28. </div>
  29. </template>
  30. <div class="problem-describe">
  31. <div>处理措施:</div>
  32. <div class="problem-content">{{ props.problemData.dealMethod }}</div>
  33. </div>
  34. </el-collapse-item>
  35. </el-collapse>
  36. </div>
  37. </template>
  38. <script setup lang="ts">
  39. import { ref } from 'vue';
  40. import { useRouter } from 'vue-router';
  41. import { Records, STATUS } from '@/api/feedback/feedback';
  42. import useHandleStore from '../useHandleStore';
  43. import { storeToRefs } from 'pinia';
  44. const useSingle = useHandleStore();
  45. const { singleFeedback } = storeToRefs(useSingle);
  46. const router = useRouter();
  47. const props = defineProps<{
  48. problemData: Records;
  49. isHandle: boolean;
  50. }>();
  51. const activeNames = ref<string>('');
  52. const handleProblem = () => {
  53. singleFeedback.value = props.problemData;
  54. router.push('/feedback/handle');
  55. };
  56. </script>
  57. <style scoped>
  58. .single-item {
  59. background: #ffffff;
  60. box-shadow: 0px 1px 8px 0px rgba(0, 0, 0, 0.09);
  61. border-radius: 6px;
  62. padding: 16px 12px 0px 12px;
  63. position: relative;
  64. }
  65. .single-contact {
  66. margin-left: 10px;
  67. margin-right: 40px;
  68. }
  69. .single-handle {
  70. position: absolute;
  71. top: 11px;
  72. right: 12px;
  73. }
  74. .el-divider--horizontal {
  75. margin: 16px 0;
  76. }
  77. .problem-describe {
  78. font-size: 14px;
  79. white-space: nowrap;
  80. word-break: break-word;
  81. display: flex;
  82. margin-bottom: 8px;
  83. }
  84. .problem-content {
  85. white-space: pre-wrap;
  86. word-break: break-word;
  87. }
  88. :deep(.el-collapse-item__header) {
  89. border-bottom: none;
  90. }
  91. :deep(.el-collapse-item__wrap) {
  92. border-bottom: none;
  93. }
  94. :deep(.el-collapse-item__content) {
  95. padding-bottom: 0px;
  96. }
  97. :deep(.el-collapse) {
  98. border-top: none;
  99. }
  100. </style>