Browse Source

工作台添加部门框架

qinzhipeng_v@didiglobal.com 4 years ago
parent
commit
f6d3578fa5
2 changed files with 94 additions and 55 deletions
  1. 1 1
      src/views/workbench/components/searchSection.vue
  2. 93 54
      src/views/workbench/team/index.vue

+ 1 - 1
src/views/workbench/components/searchSection.vue

@@ -132,7 +132,7 @@ export default {
   methods: {
     async queryTeamMember() { // 获取团队人员
       if (this.workbench === '团队' || this.workbench === '团队忙碌' || this.workbench === '团队空闲') {
-        const res = await queryTeamMember({ teamIds: this.searchForm.teamIds })
+        const res = await queryTeamMember({ teamIds: this.searchForm.teamIds, deptCode: this.searchForm.deptCode })
         if (res.code === 200) {
           res.data = res.data || []
           this.memberList = this.handleMember(res.data)

+ 93 - 54
src/views/workbench/team/index.vue

@@ -3,8 +3,9 @@
     <!-- 顶部导航栏 -->
     <el-header class="main-header">
       <div class="select-group">
-        <!-- <el-cascader ref="cascader" v-model="teamDepartment" :props="departmentOption" :show-all-levels="false" class="cascader" @change="departmentChange(teamDepartment)" />
-        <span class="el-dropdown-link" style="margin-right: 20px;" @click="setCascader">{{ teamBizName.length > 11 ? teamBizName.substring(0, 11) + '...' : teamBizName }} <i class="el-icon-arrow-down" /></span> -->
+        <el-cascader v-if="depdShow" ref="cascader" v-model="teamDepartment" :props="departmentOption" :show-all-levels="false" class="cascader" style="width: 4%;" @change="departmentChange(teamDepartment)" />
+        <span v-if="depdShow" class="el-dropdown-link" style="margin-right: 5px;" @click="setCascader">{{ departmentName.length > 6 ? departmentName.substring(0, 6) + '...' : departmentName }}</span>
+        <i v-if="depdShow" :class="[ show ? 'el-icon-circle-close' : 'el-icon-arrow-down', 'icon-close']" @mouseenter="show = true" @mouseleave="show = false" @click="setsearchForm()" />
         <el-cascader ref="cascader" v-model="teamNames" collapse-tags :options="options" :props="props" class="cascader" @change="handleChange(teamNames, options)" />
         <span class="el-dropdown-link" style="margin-right: 20px;" @click="setCascader">{{ teamBizName.length > 11 ? teamBizName.substring(0, 11) + '...' : teamBizName }} <i class="el-icon-arrow-down" /></span>
         <el-cascader ref="cascader" v-model="bizIdCode" collapse-tags :options="searchEnum.businesslines" :props="propsBizId" class="cascader" @change="handleBizIdChange(bizIdCode, searchEnum.businesslines)" />
@@ -208,9 +209,9 @@ import {
   getTeamBugSummary,
   getTeamBugDisDataBy,
   teamReminding,
-  settingQueryBizAndTeamInfo
-  // getStaffByUsername,
-  // getSubDeptInfoByParentDeptId
+  settingQueryBizAndTeamInfo,
+  getStaffByUsername,
+  getSubDeptInfoByParentDeptId
 } from '@/api/workSchedule'
 import { getSeprateDayInfo, scheduleDelete } from '@/api/projectViewDetails'
 import modifySchedule from '@/views/projectManage/projectList/components/modifySchedule'
@@ -246,6 +247,7 @@ export default {
   },
   data() {
     return {
+      show: false,
       value: [],
       props: { multiple: true },
       propsBizId: {
@@ -260,7 +262,8 @@ export default {
       optionData: [],
       searchForm: {
         teamIds: [],
-        bizIds: []
+        bizIds: [],
+        deptCode: null
       },
       searchEnum: {
         businesslines: []
@@ -269,14 +272,15 @@ export default {
       // teamName: '团队', // 团队名字
       teamNames: [],
       teamDepartment: [], // 部门
-      // departmentOption: {
-      //   checkStrictly: true,
-      //   lazy: true,
-      //   lazyLoad: this.lazyLoad
-      // }, // 部门props
+      departmentOption: {
+        checkStrictly: true,
+        lazy: true,
+        lazyLoad: this.lazyLoad
+      }, // 部门props
       departmentData: [],
       bizIdCode: [-1],
       teamBizName: '团队',
+      departmentName: '组织架构',
       bizName: '业务线', // 业务线名字
       filtrate: {// 筛选区域
         checkedMembers: [] // 被选中的成员列表
@@ -293,6 +297,7 @@ export default {
       loading: true,
       bizCode: 0,
       teamCode: 0,
+      Narration: true,
       calendarView: null, // 日程图表数据
       showDetail: false, // 显示详情弹框
       nowDetailData: {}, // 当前选中日程的数据
@@ -309,6 +314,7 @@ export default {
         data: null
       },
       datas: [],
+      depdShow: true,
       DialogTitle: '新建排期', // 排期弹框标题
       isDelete: false, // 删除排期操作
       visibleSchedule: false, // 排期任务弹框
@@ -317,7 +323,6 @@ export default {
         task: false,
         bug: false
       },
-      // deptCode1: '',
       idList: {// 所选项的idList
         requireList: [],
         taskList: [],
@@ -348,7 +353,7 @@ export default {
   },
   created() {
     this.settingGetBizList()
-    // this.getStaffByUsername()
+    this.getStaffByUsername()
     this.$nextTick(() => {
       this.activeName = this.$route.query.page ? this.$route.query.page : '1'
     })
@@ -361,48 +366,77 @@ export default {
     setCascader() {
       this.$refs.cascader.$el.click()
     },
-    // getStaffByUsername() {
-    //   getStaffByUsername('qinzhipeng_v').then(res => {
-    //     if (res.code === 200) {
-    //       this.deptCode1 = res.data.deptCode1
-    //     }
-    //   })
-    // },
-    // lazyLoad(node, resolve) {
-    //   setTimeout(() => {
-    //     this.getProvence(node, resolve)
-    //   }, 1000)
-    // },
+    setsearchForm() {
+      this.searchForm.deptCode = null
+      this.teamDepartment = []
+      this.departmentName = '组织架构'
+    },
+    getStaffByUsername() {
+      getStaffByUsername(localStorage.getItem('username')).then(res => {
+        if (res.code === 200) {
+          if (!res.data) {
+            this.depdShow = false
+            return
+          }
+          this.depdShow = true
+          const list = res.data.department.split('/')
+          this.departmentName = list[list.length - 1]
+          for (let i = 1; i <= 6; i++) {
+            if (res.data['deptCode' + i] !== '') {
+              this.teamDepartment.push(res.data['deptCode' + i])
+            }
+          }
+          this.searchForm.deptCode = this.teamDepartment[this.teamDepartment.length - 1]
+        }
+      })
+    },
+    lazyLoad(node, resolve) {
+      setTimeout(() => {
+        this.getProvence(node, resolve)
+      }, 1000)
+    },
     // test
-    // getProvence(node, resolve) {
-    //   console.log(node, resolve, 'cdscds')
-    //   console.log(this.deptCode1, 'cdslfkmvdfklvcds')
-    //   getSubDeptInfoByParentDeptId(this.deptCode1).then(e => {
-    //     console.log(e.data, '你的技术')
-    //     // if (Array.isArray(e.data)) {
-    //     // const data =
-    //     // const nodes = null
-    //     // if() {
-    //     // nodes = [{ label: '城市运输与服务技术部', leaf: false, value: res.data.deptCode1 }]
-    //     // }else {
-    //     // nodes = e.data.map(item => ({
-    //     //   value: item.deptId,
-    //     //   label: item.deptName,
-    //     //   leaf: node.level >= 5 // 5层级
-    //     // }))
-    //     // }
-    //     const nodes = e.data.map(item => ({
-    //       value: item.deptId,
-    //       label: item.deptName,
-    //       leaf: node.level >= 5 // 5层级
-    //     }))
-    //     resolve(nodes)
-    //   // }
-    //   })
-    // },
-    // departmentChange(name) {
-    //   console.log(name, 'vdvsdvsd')
-    // },
+    getProvence(node, resolve) {
+      let nodes = []
+      if (this.Narration) {
+        getStaffByUsername(localStorage.getItem('username')).then(res => {
+          if (res.code === 200) {
+            if (!res.data) {
+              this.depdShow = false
+              return
+            }
+            this.depdShow = true
+            this.Narration = false
+            nodes = [{ label: '城市运输与服务技术部', value: res.data.deptCode1, disabled: res.data.deptArch.isEnabled }]
+            resolve(nodes)
+          }
+        })
+      } else {
+        this.departmentName = node.label
+        getSubDeptInfoByParentDeptId(node.value).then(e => {
+          if (e.data.length > 0) {
+            nodes = e.data.map(item => ({
+              value: item.deptId,
+              label: item.deptName,
+              disabled: !item.isEnabled
+            }))
+            resolve(nodes)
+          } else {
+            nodes = undefined
+            resolve(nodes)
+          }
+        })
+      }
+    },
+    departmentChange(name, list) {
+      getSubDeptInfoByParentDeptId(name[name.length - 2]).then(e => {
+        e.data.map(item => {
+          item.deptId === name[name.length - 1] ? this.departmentName = item.deptName : ''
+        })
+      })
+      this.teamDepartment = name
+      this.searchForm.deptCode = name[name.length - 1]
+    },
     handleBizIdChange(val, option) {
       if (val.length > 0) {
         const one = val[0]
@@ -903,6 +937,11 @@ export default {
 /deep/.fc-content span{
   bottom: 0 !important;
 }
+.icon-close {
+  z-index: 999999;
+  margin-right: 20px;
+  cursor: pointer;
+}
 </style>
 <style lang="scss" scoped>
 .cascader {