utils.js 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import store from '@/store'
  2. import { SalePersonTableRow } from '@/views/create-order/data/interface'
  3. import { div } from '@/utils/number'
  4. // 从部门树中,根据名字获取人员信息
  5. // cb是个函数,满足cb()为true则返回
  6. export function findUserInDeptTree(cb) {
  7. const depTree = store.getters['order/depTreeList']
  8. let nameObj = undefined
  9. if (!cb) {
  10. cb = () => {}
  11. }
  12. const findName = (list, cb) => {
  13. list.find(u => {
  14. if (Array.isArray(u.children) && u.children.length > 0) {
  15. return findName(u.children, cb)
  16. } else {
  17. // const t = u.name === name
  18. const t = cb(u)
  19. if (t) {
  20. nameObj = u
  21. }
  22. return t
  23. }
  24. })
  25. }
  26. findName(depTree, cb)
  27. return nameObj
  28. }
  29. // 营销渠道:根据营销渠道最深层级的id。整理出其选择器的选中列表
  30. export function calcChannelSelectorList(code) {
  31. const list = store.state.order.conf?.channel || []
  32. let channelArr = []
  33. list.find(f => {
  34. if (Array.isArray(f.children)) {
  35. const t = f.children.find(s => {
  36. if (s.item_code === code) {
  37. channelArr = [f.item_code, s.item_code]
  38. return true
  39. }
  40. })
  41. return t
  42. }
  43. })
  44. return channelArr
  45. }
  46. // 通用:计算业绩归属
  47. export function calcSaleTableList(saleFinalList) {
  48. const pageFormValue = {}
  49. if (Array.isArray(saleFinalList) && saleFinalList.length > 0) {
  50. if (saleFinalList.length === 1) {
  51. const saleInfo = saleFinalList[0]
  52. if (saleInfo) {
  53. // const userInfo = findUserInDeptTree(saleInfo.name)
  54. const userInfo = findUserInDeptTree((u) => u.name === saleInfo.name)
  55. if (userInfo && userInfo.id) {
  56. pageFormValue.salePerson = [userInfo.id]
  57. }
  58. const channelArr = calcChannelSelectorList(saleInfo.distribution_channel)
  59. if (Array.isArray(channelArr) && channelArr.length === 2) {
  60. pageFormValue.saleWay = channelArr
  61. }
  62. }
  63. } else {
  64. const salePerson = []
  65. pageFormValue.salePersonTableList = saleFinalList.map(sale => {
  66. // const userInfo = findUserInDeptTree(sale.name)
  67. const userInfo = findUserInDeptTree((u) => u.name === sale.name)
  68. const saleWay = calcChannelSelectorList(sale.distribution_channel)
  69. salePerson.push(userInfo?.id)
  70. return new SalePersonTableRow(sale.name, userInfo?.id, div(sale.money, 100), saleWay)
  71. })
  72. pageFormValue.salePerson = salePerson
  73. }
  74. }
  75. return pageFormValue
  76. }