ZBLOG

为了在点击“跟进”按钮时根据状态判断并打开不同的 Modal(NegotiateModalComplaintModal),你可以使用 Vue 的条件渲染来控制哪个 Modal 显示。同时,你需要确保将选中的记录传递给相应的 Modal。

下面是修改后的代码示例:

修改后的代码

  1. <template>
  2. <a-table
  3. :columns="columns"
  4. :data-source="data"
  5. :scroll="{
  6. x: columns.reduce((sum, col) => sum + (col.width || 0), 0) > 1800 ? 'max-content' : undefined
  7. }"
  8. :pagination="{
  9. current: currentPage,
  10. pageSize: pageSize,
  11. total: totalRecords,
  12. pageSizeOptions: ['10', '20', '30', '40', '100'],
  13. onChange: handlePageChange,
  14. onShowSizeChange: handlePageSizeChange,
  15. showQuickJumper: true,
  16. showSizeChanger: true,
  17. showTotal: (total, range) => `显示 ${range[0]}~${range[1]}条记录,共 ${total} 条记录`
  18. }"
  19. >
  20. <template #bodyCell="{ column, record }">
  21. <template v-if="column.key === 'operation'">
  22. <a-button @click="handleFollowUp(record)">跟进</a-button>
  23. </template>
  24. </template>
  25. </a-table>
  26. <!-- 根据状态选择显示不同的 Modal -->
  27. <NegotiateModal
  28. v-if="isNegotiationVisible"
  29. :visible="isNegotiationVisible"
  30. @update:visible="isNegotiationVisible = false"
  31. :record="selectedRecord"
  32. />
  33. <ComplaintModal
  34. v-if="isComplaintVisible"
  35. :visible="isComplaintVisible"
  36. @update:visible="isComplaintVisible = false"
  37. :record="selectedRecord"
  38. />
  39. </template>
  40. <script setup>
  41. import { ref } from 'vue'
  42. import NegotiateModal from './components/NegotiatePage.vue'
  43. import ComplaintModal from './components/ComplaintPage.vue'
  44. const columns = [
  45. {
  46. title: '状态',
  47. dataIndex: 'status',
  48. key: 'status',
  49. },
  50. {
  51. title: '操作',
  52. dataIndex: 'operation',
  53. fixed:'right',
  54. key: 'operation',
  55. }
  56. ]
  57. const data = ref([])
  58. const isNegotiationVisible = ref(false)
  59. const isComplaintVisible = ref(false)
  60. const selectedRecord = ref(null)
  61. const handleFollowUp = (record) => {
  62. // 检查状态并设置对应的 Modal 可见性和记录
  63. if (record.status === '协商') {
  64. selectedRecord.value = record;
  65. isNegotiationVisible.value = true;
  66. isComplaintVisible.value = false; // 确保其他 modal 隐藏
  67. } else if (record.status === '投诉') {
  68. selectedRecord.value = record;
  69. isComplaintVisible.value = true;
  70. isNegotiationVisible.value = false; // 确保其他 modal 隐藏
  71. }
  72. }
  73. // 可以在这里添加分页和数据处理函数,例如 handlePageChange 和 handlePageSizeChange
  74. </script>

如何运作

  1. 状态判断

    • handleFollowUp 函数中,检查传入的 recordstatus 属性。
    • 如果状态为“协商”,则将 selectedRecord 设置为当前记录,并打开 NegotiateModal
    • 如果状态为“投诉”,则将其设置为打开 ComplaintModal
  2. 条件渲染

    • 使用 Vue 的条件渲染 (v-if) 来决定哪个 Modal 被渲染。
    • 当一个 Modal 被展示时,另一个会被隐藏。
  3. 传递数据

    • 将选中的记录通过 props (record) 分别传递给各自的 Modal。

这样设计后,当用户点击“跟进”按钮时,程序会根据列表项的状态来显示正确的模态框,并同时将该行的数据传递过去。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=22610

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?