Feedback.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <script setup lang="ts">
  2. import type { BasicForm, ICRUD } from '@/types/form'
  3. import { getAdviceList, saveAdvice, deleteAdvice } from '@/api/miniprogram'
  4. const CRUD: ICRUD = {
  5. create(data: any) {
  6. return saveAdvice(data)
  7. },
  8. update(data: any) {
  9. return Promise.resolve(data)
  10. },
  11. getList(data: any) {
  12. return getAdviceList(data)
  13. },
  14. delete(data: any) {
  15. return deleteAdvice(data)
  16. }
  17. }
  18. const formConfig = reactive<BasicForm>({
  19. span: 24,
  20. formItems: []
  21. })
  22. const dialogVisible = ref(false)
  23. const replyConfig = reactive<BasicForm>({
  24. span: 24,
  25. formItems: [
  26. {
  27. label: '回复内容',
  28. value: '',
  29. name: 'reply',
  30. type: 'input',
  31. rules: [{ required: true, message: '请输入回复内容', trigger: 'blur' }],
  32. props: {
  33. type: 'textarea'
  34. }
  35. }
  36. ]
  37. })
  38. const curQuestion = ref<any>(null)
  39. const formData = ref<any>({})
  40. const openDiolog = (row: any) => {
  41. dialogVisible.value = true
  42. curQuestion.value = row
  43. }
  44. const handleReply = () => {
  45. // 回复接口
  46. }
  47. </script>
  48. <template>
  49. <pro-table
  50. :formConfig="formConfig"
  51. :crud="CRUD"
  52. :selection="false"
  53. :showToolbar="false"
  54. :tableConfig="{ showEdit: false }"
  55. >
  56. <el-table-column prop="content" label="反馈内容"></el-table-column>
  57. <el-table-column prop="createDate" label="反馈时间"></el-table-column>
  58. <template #operateBefore="{ row }">
  59. <el-button type="primary" size="small" @click="openDiolog(row)">回复</el-button>
  60. </template>
  61. </pro-table>
  62. <dialog-form
  63. v-model="dialogVisible"
  64. :formConfig="replyConfig"
  65. :create="handleReply"
  66. :update="handleReply"
  67. :formData="formData"
  68. v-if="dialogVisible"
  69. />
  70. </template>
  71. <style lang="scss" scoped></style>