DetailModal.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <el-dialog
  3. :visible.sync="visible"
  4. v-bind="modalOptions"
  5. >
  6. <el-form
  7. ref="formData"
  8. :model="formData"
  9. size="mini"
  10. label-position="left"
  11. label-suffix=":"
  12. label-width="200px"
  13. >
  14. <!-- 客户信息 -->
  15. <div style="display: flex;padding-bottom: 14px;font-size: 16px;font-weight: bold;">
  16. <div
  17. style="width: 4px;height: 14px;margin-left: 6px;margin-right: 6px;background-color: #0519D4;border-radius: 2px;"
  18. >
  19. </div>
  20. <div>基本信息</div>
  21. </div>
  22. <el-form-item label="客户手机号" prop="phone">
  23. {{ formData.phone || '--' }}
  24. </el-form-item>
  25. <el-form-item label="客户昵称" prop="name">
  26. {{ formData.name || '--' }}
  27. </el-form-item>
  28. <el-form-item label="成为客户时间" prop="time">
  29. {{ formData.time || '--' }}
  30. </el-form-item>
  31. <el-form-item label="来源方式" prop="source">
  32. {{ formData.source || '--' }}
  33. </el-form-item>
  34. <el-form-item label="性别" prop="sex">
  35. {{ formData.sex || '--' }}
  36. </el-form-item>
  37. <el-form-item label="客户标签" prop="labelName">
  38. {{ formData.labelName || '--' }}
  39. </el-form-item>
  40. <el-form-item label="备注" prop="remark">
  41. {{ formData.remark || '--' }}
  42. </el-form-item>
  43. <div style="display: flex;padding-bottom: 14px;font-size: 16px;font-weight: bold;">
  44. <div
  45. style="width: 4px;height: 14px;margin-left: 6px;margin-right: 6px;background-color: #0519D4;border-radius: 2px;"
  46. >
  47. </div>
  48. <div>交易信息</div>
  49. </div>
  50. <el-form-item label="累积消费金额(元)" prop="total">
  51. {{ formData.total || 0 }}
  52. </el-form-item>
  53. <el-form-item label="累计消费订单数" prop="frequency">
  54. {{ formData.frequency || 0 }}
  55. </el-form-item>
  56. <el-form-item label="最近下单时间" prop="lastTime">
  57. {{ formData.lastTime || '--' }}
  58. </el-form-item>
  59. <el-form-item label="累计退款金额" prop="refundMoney">
  60. {{ formData.refundMoney || 0 }}
  61. </el-form-item>
  62. <el-form-item label="累计退款订单数" prop="refunds">
  63. {{ formData.refunds || 0 }}
  64. </el-form-item>
  65. </el-form>
  66. </el-dialog>
  67. </template>
  68. <script>
  69. import { getCustomerDetail } from '@/api/customer'
  70. export default {
  71. name: 'DetailModal',
  72. data() {
  73. return {
  74. modalOptions: {
  75. closeOnClickModal: false,
  76. width: '800px',
  77. title: '查看客户详情'
  78. },
  79. visible: false,
  80. formData: {
  81. buyerUserId: '',
  82. phone: '',
  83. name: '',
  84. time: '',
  85. source: '',
  86. sex: '',
  87. birthday: '',
  88. remark: '',
  89. total: '',
  90. frequency: '',
  91. lastTime: '',
  92. refundMoney: '',
  93. refunds: '',
  94. labelName: '',
  95. ids: []
  96. }
  97. }
  98. },
  99. methods: {
  100. handleClose() {
  101. this.visible = false
  102. },
  103. handleOpen(params = {}) {
  104. this.formData = Object.assign(this.$options.data().formData, params)
  105. if (params.buyerUserId) {
  106. this.getInfo(params.buyerUserId)
  107. }
  108. this.visible = true
  109. },
  110. async getInfo(id) {
  111. const loading = this.$loading({ text: '加载中' })
  112. try {
  113. const res = await getCustomerDetail({ buyerUserId: id })
  114. this.formData = Object.assign(this.$options.data().formData, res.data, {
  115. buyerUserId: res.data.buyerUserId || '',
  116. phone: res.data.phone || '',
  117. name: res.data.name || '',
  118. time: res.data.time || '',
  119. source: res.data.source || '',
  120. sex: res.data.sex,
  121. birthday: res.data.birthday || '',
  122. remark: res.data.remark || '',
  123. total: res.data.total,
  124. frequency: res.data.frequency,
  125. lastTime: res.data.lastTime || '',
  126. refundMoney: res.data.refundMoney,
  127. refunds: res.data.refunds,
  128. labelName: res.data.labelName || '',
  129. ids: res.data.ids || []
  130. })
  131. } finally {
  132. loading.close()
  133. }
  134. }
  135. }
  136. }
  137. </script>