12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- import store from '@/store'
- import { SalePersonTableRow } from '@/views/create-order/data/interface'
- import { div } from '@/utils/number'
- // 从部门树中,根据名字获取人员信息
- // cb是个函数,满足cb()为true则返回
- export function findUserInDeptTree(cb) {
- const depTree = store.getters['order/depTreeList']
-
- let nameObj = undefined
- if (!cb) {
- cb = () => {}
- }
- const findName = (list, cb) => {
- list.find(u => {
- if (Array.isArray(u.children) && u.children.length > 0) {
- return findName(u.children, cb)
- } else {
- // const t = u.name === name
- const t = cb(u)
- if (t) {
- nameObj = u
- }
- return t
- }
- })
- }
- findName(depTree, cb)
- return nameObj
- }
- // 营销渠道:根据营销渠道最深层级的id。整理出其选择器的选中列表
- export function calcChannelSelectorList(code) {
- const list = store.state.order.conf?.channel || []
- let channelArr = []
- list.find(f => {
- if (Array.isArray(f.children)) {
- const t = f.children.find(s => {
- if (s.item_code === code) {
- channelArr = [f.item_code, s.item_code]
- return true
- }
- })
- return t
- }
- })
- return channelArr
- }
- // 通用:计算业绩归属
- export function calcSaleTableList(saleFinalList) {
- const pageFormValue = {}
- if (Array.isArray(saleFinalList) && saleFinalList.length > 0) {
- if (saleFinalList.length === 1) {
- const saleInfo = saleFinalList[0]
- if (saleInfo) {
- // const userInfo = findUserInDeptTree(saleInfo.name)
- const userInfo = findUserInDeptTree((u) => u.name === saleInfo.name)
- if (userInfo && userInfo.id) {
- pageFormValue.salePerson = [userInfo.id]
- }
- const channelArr = calcChannelSelectorList(saleInfo.distribution_channel)
- if (Array.isArray(channelArr) && channelArr.length === 2) {
- pageFormValue.saleWay = channelArr
- }
- }
- } else {
- const salePerson = []
- pageFormValue.salePersonTableList = saleFinalList.map(sale => {
- // const userInfo = findUserInDeptTree(sale.name)
- const userInfo = findUserInDeptTree((u) => u.name === sale.name)
- const saleWay = calcChannelSelectorList(sale.distribution_channel)
- salePerson.push(userInfo?.id)
- return new SalePersonTableRow(sale.name, userInfo?.id, div(sale.money, 100), saleWay)
- })
- pageFormValue.salePerson = salePerson
- }
- }
- return pageFormValue
- }
|