fieldValueMixins.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import { mapGetters } from 'vuex'
  2. import { isArray, isObject } from '@/utils/types.js'
  3. export default {
  4. computed: {
  5. ...mapGetters({
  6. calcStatus: 'base/calcStatus'
  7. })
  8. },
  9. methods: {
  10. getFieldValue(item) {
  11. if (this.$isEmpty(item.value)) return ''
  12. const value = item.value
  13. switch (item.formType) {
  14. case 'check_status': // 审批状态
  15. return this.calcStatus(value).label || ''
  16. case 'map_address': // 地址
  17. // eslint-disable-next-line no-case-declarations
  18. const areaStr = value.address.replace(/,/g, '')
  19. return value.detailAddress.startsWith(areaStr) ? value.detailAddress : (areaStr + value.detailAddress)
  20. // return value.address.replace(/,/g, '') + value.detailAddress
  21. case 'contract': // 合同
  22. if (isArray(value)) {
  23. return value.map(o => o.contractNum).join(',')
  24. } else if (isObject(value)) {
  25. return value.contractNum
  26. }
  27. return value
  28. case 'contacts': // 联系人
  29. if (isArray(value)) {
  30. return value.map(o => o.contactsName).join(',')
  31. } else if (isObject(value)) {
  32. return value.name
  33. }
  34. return value
  35. case 'business_type': // 商机状态组
  36. if (this.detailData) {
  37. return this.detailData.typeName
  38. }
  39. return value
  40. case 'business_status': // 商机阶段
  41. if ([1, 2, 3].includes(value)) {
  42. return ['', '赢单', '输单', '无效'][value]
  43. }
  44. if (this.detailData) {
  45. return this.detailData.statusName
  46. }
  47. return value
  48. case 'category': // 产品类别
  49. if (this.detailData) {
  50. return this.detailData.categoryName
  51. }
  52. return value
  53. case 'receivables_plan':
  54. if (this.detailData) {
  55. return this.detailData.planNum
  56. }
  57. return value
  58. case 'structure': // 部门
  59. if (isArray(value)) {
  60. return value.map(o => o.name).join(',')
  61. } else if (isObject(value)) {
  62. return value.name
  63. }
  64. return value
  65. case 'text': // 邮箱地址
  66. if (isArray(value)) {
  67. return value.map(o => o.name).join(',')
  68. } else if (isObject(value)) {
  69. return value.name
  70. }
  71. return value
  72. case 'location':
  73. return value.address || ''
  74. case 'position':
  75. if (isArray(value)) {
  76. return value.map(o => o.name).join('')
  77. } else {
  78. return value
  79. }
  80. case 'boolean_value':
  81. return Number(value) ? '是' : '否'
  82. case 'percent':
  83. return value + '%'
  84. case 'date_interval':
  85. return value.join('~')
  86. case 'select':
  87. if (isObject(item.setting[0]) && !isArray(value)) {
  88. // { name: '', value: '' }
  89. const findRes = item.setting.find(o => o.value === value)
  90. return findRes ? (findRes.name || value) : value
  91. }
  92. break
  93. }
  94. if ([
  95. 'user',
  96. 'single_user'
  97. ].includes(item.formType)) {
  98. if (isArray(value)) {
  99. return value.map(o => o.realname).join(',')
  100. } else if (isObject(value)) {
  101. return value.realname || value.name
  102. }
  103. }
  104. if (isArray(value)) {
  105. if (value.length === 0) return ''
  106. if (typeof value[0] === 'string') return value.join(',')
  107. if (isObject(value[0])) {
  108. let key = item.formType + 'Name'
  109. if (value[0].hasOwnProperty(key)) {
  110. return value.map(o => o[key]).join(',')
  111. }
  112. return value
  113. }
  114. } else if (isObject(value)) {
  115. let key = item.formType + 'Name'
  116. if (value.hasOwnProperty(key)) return value[key]
  117. return value
  118. }
  119. return value
  120. },
  121. /**
  122. * 是否为电话
  123. */
  124. isTel(item) {
  125. if (item.formType === 'mobile') {
  126. return true
  127. } else if (!item.fieldName) {
  128. return false
  129. } else if (
  130. item.fieldName === 'mobile' ||
  131. item.fieldName === 'telephone'
  132. ) {
  133. return true
  134. }
  135. return false
  136. },
  137. /**
  138. * 判断是否为网址
  139. * @param {Object} item
  140. */
  141. isWebSite(item) {
  142. // #ifdef APP-PLUS | H5
  143. if (item.formType === 'website') return true
  144. return item.fieldName && item.fieldName === 'website'
  145. // #endif
  146. // eslint-disable-next-line no-unreachable
  147. return false
  148. },
  149. }
  150. }