ソースを参照

feat: 显示多级部门

zhangyuhan 3 ヶ月 前
コミット
95ddd1aea3

+ 12 - 7
src/store/order.js

@@ -98,11 +98,13 @@ export default {
       depTree.forEach(filterEmptyDept)
 
       // 整理数据结构
-      function sortDep(dep) {
+      function sortDep(dep, labels = []) {
+        console.log(dep, labels)
         const dep2 = {
           label: dep.label,
           value: dep.value,
-          children: []
+          children: [],
+          _labels: [].concat((Array.isArray(labels) ?  labels : []), [dep.label])
         }
         if (Array.isArray(dep.salers) && dep.salers.length > 0) {
           dep2.children = dep.salers.map(item => {
@@ -110,12 +112,15 @@ export default {
             item.value = item.id
             item.parentLabel = dep2.label
             item.parentValue = dep2.value
+            item._labels = [].concat(dep2._labels)
             return item
           })
-        }
-        if (Array.isArray(dep.children) && dep.children.length > 0) {
-          const t = dep.children.map(sortDep)
-          dep2.children = dep2.children.concat(t)
+          if (Array.isArray(dep.children) && dep.children.length > 0) {
+            const t = dep.children.map(v => {
+              return sortDep(v,dep2._labels || [])
+            })
+            dep2.children = dep2.children.concat(t)
+          }
         }
         return dep2
       }
@@ -446,7 +451,7 @@ export default {
         'saleWay',
         'signCode',
       ]
-      
+
       if (pageFormValue) {
         for (const key in pageFormValue) {
           if (delayRestoreList.includes(key)) {

+ 2 - 6
src/views/create-order/components/performanceBelongs.vue

@@ -30,7 +30,7 @@
               align="center"
               label="业绩归属部门">
             <template slot-scope="scope">
-              {{ findUserDepName(scope.row.id) }}
+              {{scope.row.saler_dept}}
             </template>
           </el-table-column>
           <el-table-column
@@ -89,7 +89,6 @@ import { mapState, mapGetters } from 'vuex'
 import { SalePersonTableRow } from '@/views/create-order/data/interface'
 import { add, sub } from '@/utils/number'
 import { cloneDeep } from 'lodash'
-import { findUserInDeptTree, calcChannelSelectorList } from "@/views/create-order/hooks/utils"
 
 export default {
   name: 'PerformanceBelongs',
@@ -233,9 +232,6 @@ export default {
     }
   },
   methods: {
-    findUserDepName (id) {
-      return findUserInDeptTree((v) => v.id === id)?.parentLabel || ''
-    },
     updateSyncData(type, e) {
       this.$emit(`update:${type}`, e)
     },
@@ -303,7 +299,7 @@ export default {
         if (alreadySelected) {
           return alreadySelected
         } else {
-          return new SalePersonTableRow(item.label, item.value, '', saleWayKey)
+          return new SalePersonTableRow(item.label, item.value, '', saleWayKey, (item?._labels || []).join('/'))
         }
       })
       this.updateSyncData('salePersonTableList', arr)

+ 2 - 1
src/views/create-order/data/interface.js

@@ -108,10 +108,11 @@ export class PayBackTableRow {
 
 // 业绩表格行数据结构
 export class SalePersonTableRow {
-  constructor(name = '', id = '', money = '', saleWay = '') {
+  constructor(name = '', id = '', money = '', saleWay = '', dept = '') {
     this.name = name
     this.id = id
     this.money = money
     this.saleWay = saleWay
+    this.saler_dept = dept
   }
 }

+ 3 - 3
src/views/create-order/hooks/utils.js

@@ -7,7 +7,7 @@ import { productKeyMap } from '@/views/create-order/data'
 // cb是个函数,满足cb()为true则返回
 export function findUserInDeptTree(cb) {
   const depTree = store.getters['order/depTreeList']
-  
+
   let nameObj = undefined
 
   if (!cb) {
@@ -76,7 +76,7 @@ export function calcSaleTableList(saleFinalList) {
         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)
+        return new SalePersonTableRow(sale.name, userInfo?.id, div(sale.money, 100), saleWay, sale.saler_dept)
       })
       pageFormValue.salePerson = salePerson
     }
@@ -125,5 +125,5 @@ export function calcShowOnlineContractForm(pageForm, userProductInfoList) {
   }
   // (3)且销售策略为“售卖”的产品规格及购买主体有配置电子协议模板;
   // 销售策略为“售卖”的产品规格付费类型为“购买”、“续费”、“试用”。
-  return paybackCompanyCheck && contractStatusCheck && productCheck 
+  return paybackCompanyCheck && contractStatusCheck && productCheck
 }