lex-xin пре 3 година
родитељ
комит
316d8e664c
4 измењених фајлова са 103 додато и 9 уклоњено
  1. 1 0
      package.json
  2. 18 0
      src/api/systemManage.js
  3. 77 9
      src/views/categroyManager/insideSetting/staffManager.vue
  4. 7 0
      vue.config.js

+ 1 - 0
package.json

@@ -15,6 +15,7 @@
   },
   "dependencies": {
     "@babel/plugin-proposal-optional-chaining": "^7.11.0",
+    "@riophae/vue-treeselect": "^0.4.0",
     "JSONPath": "^0.11.2",
     "axios": "0.18.1",
     "browserslist": "^4.16.4",

+ 18 - 0
src/api/systemManage.js

@@ -123,6 +123,24 @@ export function getUserRole (data) {
   })
 }
 
+// 获取部门
+export function getDepts (data) {
+  return request({
+    url: `/api-oa/api/v1/depts`,
+    method: 'get',
+    params: data
+  })
+}
+
+// 获取岗位
+export function getPosts (data) {
+  return request({
+    url: `/api-oa/api/v1/posts`,
+    method: 'get',
+    params: data
+  })
+}
+
 // 员工操作
 export function employeeOperate (data) {
   return request({

+ 77 - 9
src/views/categroyManager/insideSetting/staffManager.vue

@@ -102,7 +102,7 @@
             </template>
           </el-table-column>
           <el-table-column align='center'
-                           label="所属部">
+                           label="所属部">
             <template slot-scope="scope">
               <tooltip :content="scope.row.organNameList | joinArray(',')"></tooltip>
             </template>
@@ -201,14 +201,13 @@
                        :value="item.value"></el-option>
           </select-all>
         </el-form-item>
-        <el-form-item label="所属部"
+        <el-form-item label="所属部"
                       prop="organIdLists"
                       :label-width="formLabelWidth">
-                      <!-- style="width: calc(100% - 75px) !important;" -->
           <select-all
                      filterable
                      clearable
-                      placeholder="请选择部"
+                      placeholder="请选择部"
                      collapse-tags
                      v-model.trim="form.organIdLists"
                      multiple>
@@ -217,7 +216,36 @@
                        :label="item.name"
                        :value="item.id"></el-option>
           </select-all>
-          <!-- <el-button @click="onBranchCheckAll">全选</el-button> -->
+        </el-form-item>
+        <el-form-item label="所属部门"
+                      prop="deptIds"
+                      :label-width="formLabelWidth">
+          <treeselect
+                v-model="form.deptIds"
+                filterable
+                clearable
+                multiple
+                style="line-height: 36px;"
+                :options="deptList"
+                :normalizer="normalizer"
+                placeholder="请选择归属部门"
+              />
+        </el-form-item>
+        <el-form-item label="所属岗位"
+                      prop="postIds"
+                      :label-width="formLabelWidth">
+          <select-all
+                     filterable
+                     clearable
+                      placeholder="请选择分部"
+                     collapse-tags
+                     v-model.trim="form.postIds"
+                     multiple>
+            <el-option v-for="item in postList"
+                       :key="item.value"
+                       :label="item.label"
+                       :value="item.value"></el-option>
+          </select-all>
         </el-form-item>
         <el-form-item label="工作类型"
                       prop="jobNature"
@@ -318,9 +346,11 @@
 <script>
 import pagination from '@/components/Pagination/index'
 import { permission } from "@/utils/directivePage";
-import { queryEmployByOrganId, employeeOperate, getUserRole, employeeAdd, employeeUpdate, hasCourseGroupRelation, updateEducationTeacherId, queryEmployeeOrganByUser } from '@/api/systemManage'
+import { queryEmployByOrganId, employeeOperate, getUserRole, employeeAdd, employeeUpdate, hasCourseGroupRelation, updateEducationTeacherId, queryEmployeeOrganByUser, getDepts, getPosts } from '@/api/systemManage'
 import { findEducationTeacher } from '@/api/specialSetting'
 import { findEducationUsers } from '@/api/buildTeam'
+import Treeselect from '@riophae/vue-treeselect'
+import '@riophae/vue-treeselect/dist/vue-treeselect.css'
 import Tooltip from '@/components/Tooltip/index'
 import { isvalidPhone } from '@/utils/validate'
 import handover from './modals/handover'
@@ -335,12 +365,14 @@ let validPhone = (rule, value, callback) => {
 }
 export default {
   name: 'staffManager',
-  components: { pagination, Tooltip, handover },
+  components: { pagination, Tooltip, handover, Treeselect },
   data () {
     return {
       organList: [],
       tableList: [],
       educationList: [],
+      deptList: [],
+      postList: [],
       educationForm: {
         targetUserId: ''
       },
@@ -369,6 +401,8 @@ export default {
         phone: null,
         roleIds: [],
         organIdLists: [],
+        deptIds: [],
+        postIds: [],
         jobNature: null,
         entryDate: null,
         contactAddress: null,
@@ -379,7 +413,9 @@ export default {
         gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
         phone: [{ type: 'number', required: true, validator: validPhone, trigger: 'blur' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }],
         roleIds: [{ type: 'array', required: true, message: '请选择分类', trigger: 'change' }],
-        organIdLists: [{ type: 'array', required: true, message: '请选择所属部门', trigger: 'change' }],
+        organIdLists: [{ type: 'array', required: true, message: '请选择所属分部', trigger: 'change' }],
+        deptIds: [{ type: 'array', required: true, message: '请选择所属部门', trigger: 'change' }],
+        postIds: [{ type: 'array', required: true, message: '请选择所属岗位', trigger: 'change' }],
         jobNature: [{ required: true, message: '请选择工作类型', trigger: 'change' }],
         entryDate: [{ required: true, message: '请选择入职时间', trigger: 'blur' }],
 
@@ -464,6 +500,17 @@ export default {
         }
       })
     },
+    /** 转换菜单数据结构 */
+    normalizer(node) {
+      if (node.children && !node.children.length) {
+        delete node.children
+      }
+      return {
+        id: node.deptId,
+        label: node.deptName,
+        children: node.children
+      }
+    },
     getRoleList () { // 获取角色
       getUserRole({ delFlag: 0, rows: 9999 }).then(res => {
         let result = res.data
@@ -477,6 +524,25 @@ export default {
           })
         }
       })
+      getDepts({ rows: 9999 }).then(res => {
+        console.log(res)
+        if(res.code == 200 && res.data && res.data.length > 0) {
+          this.deptList = res.data
+        }
+      })
+      // 岗位
+      getPosts({ rows: 9999 }).then(res => {
+        if(res.code == 200 && res.data && res.data.length > 0) {
+          this.postList = []
+          console.log(res.data)
+          res.data.forEach(item => {
+            this.postList.push({
+              label: item.postName,
+              value: item.postId
+            })
+          })
+        }
+      })
       this.$store.dispatch('setBranchs')
     },
     async roleOperation (type, data) {
@@ -500,7 +566,9 @@ export default {
           jobNature: data.jobNature,
           entryDate: data.entryDate,
           contactAddress: data.contactAddress,
-          postalCode: data.postalCode
+          postalCode: data.postalCode,
+          deptIds: data.deptIds ? eval(data.deptIds) : [],
+          postIds: data.postIds ? eval(data.postIds) : []
         }
       }
     },

+ 7 - 0
vue.config.js

@@ -100,6 +100,13 @@ module.exports = {
           '^api-teacher': ''
         }
       },
+      '/api-oa': {
+        target: target,
+        changeOrigin: true,
+        pathRewrite: {
+          '^api-oa': ''
+        }
+      },
       '/jiari': {
         target: 'http://tool.bitefu.net',
         changeOrigin: true,